Craft

Main quests and fun experiments. Code, art, and community Happy

My main project now is Lifelong Habit, a habit app for people who want to focus on long-term habit formation and detailed insights. Most of the things I’ve made and played around with circle back to self-development, with some funsies and whimsies here and there. Open to work and collaborations!~ Starfish

Jul 20 – Jul 26Week 6 of 27
Sun, Jul 26
  • fix(dashboard): show guidance on empty Grove cardslifelong-habit-app12:25
  • fix(HabitSectionList): memoize topContent to improve performance and prevent unnecessary re-renderslifelong-habit-app10:36
  • fix: fire completion toast notif from write mutations instead of Done bucket changeslifelong-habit-app08:18
  • fix(dashboard): memoize raw function using callbacks for dashboard screenlifelong-habit-app08:12
  • refactor(habits): use transition_habit_status RPClifelong-habit-app06:18
  • fix(db): make habit status transitions atomic with RPClifelong-habit-app06:18
  • fix: memoize FlashList props to avoid unnecessary cell re-evaluationlifelong-habit-app05:58
  • fix(progress): fix wasted space below long entries in the session timelinelifelong-habit-app04:43
Sat, Jul 25
  • fix(log): stop bot commits from appearing in the build loglaiflonglearner.com13:12
  • fix(ascii-portrait): restore sampled ink, improve ascii density ramplaiflonglearner.com13:04
  • chore: move validate emote script from lib to script directorylaiflonglearner.com12:54
Fri, Jul 24

No commits.

Thu, Jul 23
  • feat(emotes): support :shortcode: emotes outside MDXlaiflonglearner.com00:47
  • feat(ascii): add theme-aware ascii portrait on homepagelaiflonglearner.com00:18
Wed, Jul 22
  • feat(emotes): add build-time :shortcode: emote system for MDX postslaiflonglearner.com23:59
Tue, Jul 21
  • fix(theme): separate brightness icons from palette colors, soften the ocean themelaiflonglearner.com13:35
  • feat(theme): add warm/ocean color palettes with separate theme controlslaiflonglearner.com12:15
  • refactor(header): remove the red dot from header logo and replace emoji theme iconslaiflonglearner.com11:16
  • feat: make shell wider, add TOC thumb color, and fix dark-mode button shadowslaiflonglearner.com10:49
  • fix(metadata): update blog and log titleslaiflonglearner.com10:44
  • refactor(layout): keep page width consistent across all pageslaiflonglearner.com08:04
  • style: make page shell wider, mute selection color, adjust header transparencylaiflonglearner.com08:02
  • style(theme): add sticky header and themed text selectionlaiflonglearner.com07:27
  • style(header,footer): match footer divider with header, warm up logo colorlaiflonglearner.com06:59
  • fix(css): fix active tab text and make button shadows consistentlaiflonglearner.com06:32
  • feat(ui): group build log by day, add cozy keycap button stylelaiflonglearner.com04:53
  • fix(dashboard): remove duplicate spacing in HabitMapListViewlifelong-habit-app04:24
  • feat(log): add opt-in log history refetch (instead of incremental sync)laiflonglearner.com04:10
  • chore(ci): run update-log hourly instead of dailylaiflonglearner.com04:08
  • fix(scripts): update dev scriptlaiflonglearner.com04:07
  • feat: add update-log script to pull commits from repositorieslaiflonglearner.com03:49
  • feat(log): add cross-repo dev loglaiflonglearner.com03:44
  • fix(layout): replace fixed TOC layout with responsive grid shelllaiflonglearner.com03:00
  • feat: add wrangler config and assets for OpenNext integrationlaiflonglearner.com00:21
  • chore(gitignore): add .open-next/laiflonglearner.com00:07
Mon, Jul 20
  • fix(cloudflare): use static-assets incremental cache for SSGlaiflonglearner.com15:20
  • fix(config): update build script to use webpack and add OpenNext.js config filelaiflonglearner.com15:20
  • config: add preview and deploy scripts for OpenNext.js Cloudflare integrationlaiflonglearner.com14:59
  • fix: allow LAN dev origin for Turbopack HMRlaiflonglearner.com13:27