Dark mode in an afternoon when your CSS is already tokens (and the false alarm that wasn't)
A whole dark theme by redefining CSS variables under one class, and 45 minutes spent proving a five-line toggle innocent.
A whole dark theme by redefining CSS variables under one class, and 45 minutes spent proving a five-line toggle innocent.
A UI redesign, a review comment that named the exact property I never touched, and what it takes to actually fix what someone reports instead of what's around it.
Adding Postiz social cross-posting looked done until a blunt question exposed a double-post bug, and a full audit of every posting path in the app found two more like it.
Routing Dev.to publishing through Postiz and deleting the native client: the DTO that validates stricter than the runtime, the draft that isn't, and a cover image lost to local storage.
Removing the never-used native Hashnode integration: 31 files, +14/-1126, a grep that lied a little, and the architecture question the deletion forced.
A spike that ended in "don't build this": private-IP rejection, an unauthenticated empty payload, and the pull API that had everything the push lacked.
Future scheduling, richer blurbs with thumbnails, and a which-URL picker, plus the wall-clock timezone bug and the import that copied the wrong column.
A prerequisite ticket said to flip a flag that was already on. Reading the source at the deployed tag turned a no-op into three corrections.
A third syndication target and the first GraphQL one: no client gem, a two-step publish flow, sync-by-slug, and three credential columns that all earn their place.
The Forem API as the anti-Medium, a shared LinkedIn announce service with idempotency, and the Zeitwerk acronym gotcha that struck twice.
Page 3 of 5