Older posts
Collapsing the three-file translation triplet into one module
Maintaining UI translations across three separate files created silent sync friction. Moving to a single per-key module enforced compile-time translation parity.
Leaderboard chips learn to explain themselves on tap
Native title tooltips were invisible on touch devices. Extracting LeaderboardChip brings tap-to-open DetailTooltip popups and scroll dismiss across all leaderboard tabs.
The icon nobody recognized
Player feedback from an iOS user led to updating the backspace key icon and moving it to the top row.
Seven phases under one umbrella
A complete visual redesign across 18 catalogued surfaces, guided by a token migration plan, oklch contrast math, and a seven-phase base branch umbrella.
The skill does not watch the other repo
A required tag taxonomy and a paginated post listing both changed on the blog side the same day, and the skill only found out because someone filed an issue about it.
Rejected was not final
A closed draft becomes published after all, exposing one missing transition in the blog registry's state model.
The lock arrived late
Seventeen blog-registry commits expose the small race between opening a draft and publishing its concurrency lock.
Everything looked urgent
Separating primary action from danger, fixing fruit contrast, and making pill controls describe what they actually do.
Healthy before active
Turning shared MCP servers into reviewed, age-gated installations that only become active after a real protocol handshake.
Stabilizing the automated gameplay recording script
Making the gameplay recording tooling engine-accurate and predictable by importing the real engine and pinning the apple queue.