Dev Log: 43 commits — design system, accessibility, and 306 bookmarks imported

A day of polish, performance, and migration cleanup across the Indiekit ecosystem.

Eleventy Theme — 24 commits

Design System Compliance

The theme got a full design system overhaul. Every post type — articles, notes, bookmarks, photos, replies, likes, reposts — now has a unique domain color that carries through cards, sparklines, hover states, and collection pages. Ten commits touched 40+ files to align everything:

  • Domain colors — each post type gets a distinct color, consistently applied across all templates
  • Cardsshadow-sm added to all card elements across 24 files
  • Dates — all <time> elements now use font-mono text-sm for visual consistency
  • Dark mode — corrected token pairs for proper contrast in dark themes
  • Depth — avatars and album art get shadow-lg, stat numbers use monospace

Accessibility Audit

Two rounds of WCAG 2.1 Level AA compliance work:

  • Round 1 — comprehensive audit covering contrast ratios, focus indicators, ARIA attributes, landmark regions, and semantic HTML
  • Round 2 — fixed all remaining issues found in the first pass

Performance

  • Skeleton loader — prevents Flash of Unstyled Content (FOUC) during CSS load
  • lite-yt-embed — YouTube embeds now load lazily instead of pulling in the full iframe immediately
  • PageSpeed Insights fixes — addressed CLS shifts, contrast issues, touch target sizing, and JS minification

Bug Fixes

  • Sparkline sizing — fixed SVG width/height attributes, switched from span to div wrapper in flex context, aligned colors with per-type domain colors
  • Focus trap — moved inline onfocus attributes to proper JS methods
  • Post categories — restored horizontal layout that was broken by design system changes
  • FOUC — images and SVG icons no longer flash on first paint

Cloudron Deployment — 4 commits

Infrastructure improvements behind the scenes:

  • nginx cache scoping — cache rules now target only Eleventy static paths, not the entire app (was incorrectly caching dynamic Indiekit routes)
  • eleventy-fetch cache preservation — stopped wiping the fetch cache on deploy, which was causing full rebuilds and OOM crashes on a site with 600+ posts
  • Static asset cache headers — proper Cache-Control headers for CSS, JS, images, and fonts
  • Bluesky syndicator bump — updated to v1.0.19 with the image size limit fix

Bluesky Syndicator — 1 commit

  • Image upload limit — corrected to Bluesky’s actual 1,000,000 byte limit. Was using a wrong value that caused some photo posts to fail syndication.

Micropub MCP Client — 2 changes

  • bookmark-of support — added to both the client library and MCP tool definition, so Claude can now create bookmark posts
  • Bookmark import script — wrote a Bun script that parses micro.blog’s HTML bookmark export format and batch-imports via Micropub. Used it to import 306 bookmarks from my old micro.blog account, each preserving its original published date (ranging from 2017 to 2026) and tags. Zero failures. This was the last remaining piece of the micro.blog migration.

The bookmarks page now has 306 entries going back to 2017. The micro.blog migration is officially complete.

AI: Text Co-drafted · Claude

Co-drafted with Claude Code — commit data gathered automatically, narrative written by AI from commit messages

Learn more about AI usage on this site

Comments

Sign in with your website to comment:

Signed in as
Send a Webmention

Have you written a response to this post? Send a webmention by entering your post URL below.