Weekly Review: June 17–June 23, 2026

This week was one of those founder/product-engineer weeks where the work ranged from tiny UI cuts to deep document lifecycle cleanup to Windows code signing. It is messy on paper, but there was a coherent theme underneath it: reduce friction for people who are trying to publish, move, collaborate, and keep writing.

I started with product polish around document actions. Editors should always be able to publish, so I fixed the UI to keep the publish action visible for editors (commit 7d84ca520). I also added frontend UI polish agent rules (commit 297dcb5be), because as the project grows I want design taste and frontend standards to be encoded in the repo, not trapped in my head.

The largest chunk of the week landed in PR #797. This started as simplifying copy-link menus and turned into a broader cleanup of deleted document cards and embeds. The copy-link UI now puts advanced Canonical, Gateway, and Hypermedia options behind a developer setting so regular users get the simple path first. Deleted document cards and embeds get cleaned up, including draft-aware cleanup and retry handling. Deleting a home document can include listed child documents. And I moved shared agent workflows into provider-neutral .agents/skills/, which is part of making the open-source project easier to maintain across tools instead of coupling team knowledge to one AI provider’s folder structure.

The part of that PR I am most happy about is that the deleted-document cleanup moved into XState (commit 24a56c3d5). Cleanup flows are exactly where state machines shine: you have discovery, retries, local draft state, deleted resources, and UI updates all interacting. A statechart makes those transitions explicit instead of letting them hide inside a tangle of async functions.

I spent a lot of time on desktop polish too. Video chrome now applies directly to video/iframe players instead of wrappers in PR #804. The desktop titlebar now aligns with the locked sidebar width in PR #805. Long bookmark labels truncate correctly in PR #806. I also added people counts in document tabs (commit 6affde905), which makes collaboration feel more present without adding ceremony.

Then came the less glamorous but very real open-source distribution work: Windows code signing. In PR #811, I added DigiCert KeyLocker signing to the dev and release desktop workflows, replaced the temporary self-signed flow, and added tests around signing enablement/configuration. This is not the kind of thing that makes a great demo, but it matters if you want people to actually install and trust an app.

On June 23, I did a dense pass on editor and publishing UX. PR #815 fixed image captions so clicking a caption lets you type instead of selecting/replacing the whole image, and Enter moves to the next paragraph while Shift+Enter preserves line breaks. PR #816 hid redundant query new-document placeholders when a banner is already shown. PR #818 fixed a nasty autosave problem where mobile draft edits could be replaced by stale draft data; it now keeps autosaved content in sync with the document machine, prevents outside taps from cancelling edit mode during unsaved/autosaving states, and adds recoverable draft snapshots before overwrites/deletes.

The biggest UX feature of that day was PR #817: a unified move and republish dialog. Instead of separate move and branch flows, users get a destination dialog with writable-location browsing, search, URL preview, validation for blocked/private/unavailable destinations, and republish support backed by redirect refs. This is one of those features that turns a technical capability into a product capability. Moving and republishing documents is not just an operation; it is a decision about identity, URLs, permissions, and where knowledge belongs.

I also worked on optional publish messages across backend, proto, frontend client, activity service, desktop publish UI, and feed rendering (6da2eb8f3, local branch). This is a small but meaningful publishing primitive: changes can carry intent, not just data.

Finally, collaboration got a practical upgrade in PR #821: site owners can promote regular members to writers from the collaborators page. The implementation deduplicates members by canonical account, shows success/error feedback, and includes tests for collaborator counts and promotion behavior. This is the kind of feature that matters when Seed is not just a solo writing tool, but a shared publishing space.

This week was a reminder that building your own project means switching altitude constantly. One hour you are fixing image caption focus. The next you are making a Windows installer trustworthy. Then you are encoding team workflow in open-source agent skills. Then you are designing how republishing should feel. It is chaotic, but it is also the advantage: the product, architecture, and distribution lessons all feed each other.

Code trail

The question I am sitting with after this week:

what is the smallest publishing workflow that still respects identity, collaboration, history, and trust?

Do you like what you are reading? Subscribe to receive updates.

Unsubscribe anytime