Spent the week deep-diving into my dev-publish tool, focusing on durability and orchestrator resilience. 21 commits across two repos, with a massive cleanup of the publishing logic and some much-needed architecture documentation.
| Platform | Link | Status |
|---|---|---|
| Notion | View Page | Published |
| DEV.to | Edit Draft | Draft |
| Metric | Count |
|---|---|
| Commits | 21 |
| Pull Requests | 0 |
| Issues | 0 |
| Code Reviews | 0 |
| Discussions | 0 |
| Lines Added | +6,935 |
| Lines Removed | -4,298 |
| Streak | 3 days |
| Repository | Commits | Language | Changes |
|---|---|---|---|
| dev-publish | 16 | TypeScript | +6926/-4289 |
| nvim | 5 | Lua | +9/-9 |
| Language | Commits |
|---|---|
| Python | 100229177 |
| TypeScript | 15775664 |
| Rust | 12004251 |
| C# | 4356561 |
| MDX | 1946663 |
| HTML | 1806078 |
| Twig | 1654148 |
| Shell | 1262913 |
There is a specific kind of satisfaction that comes from taking a tool you use every day and finally giving it the "production-grade" treatment it deserves. This week was exactly that. I spent most of my time in the guts of dev-publish, moving past the "it works on my machine" phase and into "it works even if the world is on fire" territory. With 21 commits and over 11,000 lines of code churn, I focused on making the publishing orchestrator resilient and the state durable.
The star of the show this week was dev-publish. If you’ve ever tried to automate cross-platform technical writing, you know that the edge cases are where the real pain lives. I pushed 16 commits here, touching about 45 files. The diff was pretty wild: +6,926 additions and -4,289 deletions. That net positive tells part of the story, but the deletions represent me ripping out brittle logic that just wasn't cutting it.
The biggest win was a massive fix to make the publish state durable and the orchestrator resilient. In the previous iteration, if a network request to an API (like Dev.to) failed halfway through a multi-platform push, the state was... let's just say "vague." I spent a lot of time in src ensuring that the orchestrator can now pick up where it left off. I also documented the published-flag semantics and re-run resilience in the README. It sounds like a small thing, but knowing that a re-run won't accidentally double-post your article is a huge weight off my mind.
I also spent some time on the "boring but important" stuff. I normalized how tags are handled to make them safer across different platforms and implemented a much stricter resolution for cover images. If a local image is required but missing, the tool now yells at you immediately rather than failing silently mid-upload.
One of my favorite commits this week was refactor: drop unused assetsDir config. There is nothing quite like the feeling of deleting configuration options that you realized were over-engineered and unnecessary. It keeps the surface area small and the DX (developer experience) clean.