Changelog
What's new in StormIt.
Release notes, written like prose. Each entry answers what changed and why a writer using the app should care. Older entries below; newest first.
Editorial pass — quiet, premium, and a real changelog
A long sweep of editorial polish landed: dashboard skeletons that read as deliberate loading states, a calmer post-card row that hides the rarely-used affordances until you reach for them, an inline username step in the publish flow (no more modal blocking the share moment), and the cascade gotcha that was forcing inline-style workarounds is fixed at the layer level. The serif-italic treatment is now documented as a moments-only signature.
- ShippedPublic changelog at /changelog and a NO_LIST manifesto for things we deliberately don't build.
- ShippedFirst-visit personalization in the editor — pick your typeface once, never asked again.
- ShippedViewTransitions API wired for cross-page sibling navigation where the browser supports it.
- PolishLight mode swapped to a cream background (#fdfcf9) with sepia text — softer on the eye for long sessions.
- PolishStat numbers got the geometric mono + small-caps label hybrid — numeric precision against editorial labels.
- FixedDirectional border-color Tailwind classes (border-l-[var(--brand)]) now win the cascade against the global default.
Network: peer-to-peer graph replaces the team surface
The /team page was scaffolding for an org model we never shipped. /network is what writers actually wanted — invite peers, see who's collaborating with whom, and use the graph as a discovery surface, not a HR roster.
- ShippedMy Network page with peer connections, invitation flow, and a graph view.
- ShippedMigration 078 lands the network_connections table with RLS scoped to both endpoints of an edge.
- FixedAccept-invitation flow wires straight into the network graph — no manual reconnect step.
Editor: focus mode, generate-all, and quieter chrome
Focus mode hides every non-essential surface so the editor becomes a writing surface, not a dashboard. Generate-all gathers per-section drafting into one deliberate action. Smaller polish: alignment between Article Characteristics and layout sidebar, references at end-of-article instead of mid-flow, and the Improve Score pass uses best-of-N with regression rejection so it stops feeling like a slot machine.
- ShippedFocus writing mode — hides sidebar, panels, and chrome until you exit.
- ShippedIn-editor 'Generate full article' with adaptive popup that respects the article layout.
- PolishImprove Score feels like one cycle — best-of-N + regression rejection, not a re-roll.
- FixedGenerated references appear at the end of the article in the editor.
- FixedAI Assistant scrolls internally instead of bubbling to the page.
Audit phase 1 — security + lint + critical fixes
A 600-issue audit landed and we worked through Phase 1: every lint error eliminated, OAuth tokens encrypted at rest with AES-256-GCM, and the React 19 crash bugs that had snuck into modal swaps. The brand rename to StormIt also shipped in this batch.
- FixedAll 21 lint errors eliminated; warning ratchet enforced in CI.
- ShippedOAuth tokens encrypted at rest (AES-256-GCM via TOKEN_ENCRYPTION_KEY).
- ShippedMigration 077 + UX modal swaps for the React 19 crash class.
- PolishBrand rename + small audit fixes batch.