"Looks the same to me"
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.
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.
Hashnode is a third syndication target, and the first over GraphQL: no client gem, a two-step publish flow, and sync by slug instead of draft ID.
The Forem API as the anti-Medium, a shared LinkedIn announce service with idempotency, and the Zeitwerk acronym gotcha that struck twice.
72 Medium posts my database knew nothing about: the RSS cap, an undocumented GraphQL workaround, Unicode apostrophes, and the kamal stdin trap.
Page 4 of 6