Changelog
Three sections, in this order: what is planned, then every pull request that has landed, then the milestones worth calling out. The shipped list reads itself from the repository; the milestones are hand-picked.
Roadmap
Strategy lives here. Release notes stay below.
Now
2Podcast distribution
Publish RSS with MP3 enclosures so Apple/Spotify can subscribe to audio posts.
audio · rss
Webmentions
Show likes, reposts, and replies from across the open web per post.
indieweb
Next
2Lab experiments
Interactive demos for RAG/search and small UI experiments.
rag · search
Smarter internal linking
Improve related content discovery and add authoring tooling to suggest internal links.
seo
Later
1Typography refresh
More distinctive typography system and tighter type scale across pages.
design
Shipped
Every change lands as a pull request, so this list cannot fall behind.
- 2026-09-28ChangedFix rate-limit buckets, RSS/scheduled posts, unsubscribe and a11y issues#273
- 2026-09-27Fixedread /api/health through its data envelope in the chat smoke#269
- 2026-09-23Testsgate the ask drawer's modal contract below 1536px#270
- 2026-09-17ChangedLighthouse score floors + deploy watchdog#268
- 2026-09-16Changedkeep the Upstash store awake, and make /api/health say when it is not#267
- 2026-09-16Fixedrestore the /bookmarks h1, and widen three gates that could not see the defect they exist for#266
- 2026-09-14Fixedrender the page, not a placeholder only JavaScript can replace#265
- 2026-09-14Fixedthe fifth IDREF, which was the one you see first#264
- 2026-09-14Fixedfour IDREFs that resolved to nothing, and one convention per component#263
- 2026-09-14Fixedthe primary tier reads as primary#262
- 2026-09-14Fixedthe fifth instance, and the invariant that ends the series#261
- 2026-09-14Changedbump actions/cache from 4 to 6 in the actions group#221
- 2026-09-14Fixedone rule, one edge — and a probe that proves it is measuring#260
- 2026-09-14Fixeda P0 that eleven measurements could not see, and the guard that can#259
- 2026-09-14Fixedmotion that actually collapses, a measure that measures, one orphan#257
- 2026-09-14Fasterdrop unused SDK code from the initial bundle#258
- 2026-09-13Fastercut main-thread JavaScript and render-blocking CSS on the home route#256
- 2026-09-13Fixedthe last five P3s — furniture, focus, names, and one page-top value#255
- 2026-09-13Fixedbring src back inside DESIGN.md tokens and prioritise the hero LCP image#254
- 2026-09-13Fixeda dialog that contains a nav, and one row typography everywhere#253
- 2026-09-13Fixedone boundary per edge, and a tail that ranks below what precedes it#252
- 2026-09-13Fixed/lab gets rows and headings, and discarding a transcript asks once#251
- 2026-09-13Fixedgive the rows headings, and end each rule where its list ends#250
- 2026-09-13Docsmake the DESIGN.md citations resolve, and record what was declined#249
- 2026-09-13Fixedserve the resume PDF instead of redirecting every download to /contact#245
- 2026-09-13Fixedstop the rate limiter from filing one Sentry error per request#244
- 2026-09-13Fixedrows where the system says rows, and the same essay row everywhere#248
- 2026-09-13Fasterstop reading a cookie in the root layout, so the site can cache#247
- 2026-09-13Fixedone button contract on /contact, and 296 KB less JavaScript#246
- 2026-09-13Fixedthe palette states its extent instead of clipping a row#243
Milestones
The hand-picked turning points, with the granular trail above.
Version 2.1.0
August 3, 2026
Garden refresh: the site catches up with what actually got built
Eight new project case studies written from their repos (Cocoon, Verso, unlinkd, FraudStream, Feedless, Tidy Roll, pi-lab, qsensor-sim)
Movies and books rebuilt as annotated lists: profile favorites, own review text, full-marks books, custom shelves
Changelog now derives its shipped feed from merged pull requests
/now reads current books, films, and posts from real logs so it cannot go stale
/uses corrected against the actual dotfiles; /lab lists twelve experiments
CSV parsing no longer shreds reviews containing newlines; Letterboxd data joined on title+year across its two URI namespaces
Photos page no longer presents stock imagery as original work
Version 2.0.0
January 18, 2025
Redesign, and most of the sections the site still has
Dark/light mode toggle with system preference detection
Newsletter subscription system with Neon PostgreSQL backend
Semantic search with CMD+K shortcut (OpenAI embeddings)
PWA support with offline functionality
Reading time estimation and scroll progress bar
Related posts, matched on tags and embeddings
TIL (Today I Learned) digital garden section
Code snippets library with search and copy functionality
Giscus comments integration (GitHub Discussions)
Public analytics dashboard with real-time stats
GitHub contributions graph visualization
Public API, with docs at /api-docs
Optimized images to WebP format (89.9% size reduction)
Moved the site map into the footer so the header could stay slim
Rebuilt the layouts that broke below 768px
TypeScript strict mode compliance
Skip link, focus rings, and contrast on the navbar and footer
Version 1.0.0
December 1, 2024
Initial website launch
Blog system with MDX support
Projects, with a case study each
AI chat powered by OpenAI GPT-4o
RSS feed generation
Automated sitemap generation
Vercel Analytics integration
Version 0.1.0
November 1, 2024
Project initialization
Basic Next.js setup
Design system foundation