Everything shipped under “design”, across every version, newest first.
Changed
The canvas now follows light and dark mode, including its zoom controls and edge labels. Each node is a fixed-width card with its kind, name, details and run status, so long labels no longer overlap, and nodes nothing links to are marked not linked.
Added
The command palette now runs actions as well as jumping to sections: write a note, import, open the report or the query console, export CSV or PDF, ask Notey, connect a platform or an AI app, and more. The Overview rail has a What’s new card you can dismiss.
Changed
A new display typeface, a 12px minimum text size, one button style, flat borders, a neutral dark theme, and the app now follows your system light or dark setting by default. Warnings are merged into one Needs attention notice, each section has a proper title, and tap targets are bigger.
Added
A typed JavaScript client covers notes, scheduling, the Library and analytics. The public API gains top posts and best times. Agencies can create a separate workspace for each client, each with its own connections, queue and Library and its own people and roles, and set a brand name, logo and color that clients see on review pages, invite emails and in the app.
Added
The right-rail RepurposeToday tile (A1-P9.4) gains an overflow ⋯ menu that reuses the same libraryOverflowActions() seam + /api/library/[id]/* dispatch routes as the Library card — repurposing actions (compose, schedule, newsletter draft, transcribe, suggest clips, recycle) are now available from the tile, not just the Library. The tile's primary button is now platform-neutral "Schedule" (was "Turn into a Note", which actually scheduled).
Fixed
The right-rail "Dispatch" tile's overflow menu actions referenced misspelled OverflowActionId values, so menu clicks dispatched to nonexistent handlers (#848, PR #851).
Fixed
The pre-connection preview surface was showing stale Queue and Ledger cards that no longer map to real top-level sections (Queue folded into Compose as a tab strip; Ledger moved under AI), and was missing the Settings card entirely. Preview cards are now drift-locked to SECTION_IDS in section-nav.ts via a source-contract test — every real section gets a card, no legacy ids appear (#779, PR #789).
Fixed
Fixed whitespace around /compare page name-link rendering and a dead blockquote regex in the X text parser that could drop trailing content.
Added
A2-P1 Packet 1: humans can now visually see a workflow canvas as a read-only graph at /workflow-canvas/[id]. Nodes are color-coded by kind (trigger=circles, condition=diamonds, skill action=rectangles) with labeled edges. The DOM-free buildCanvasFlow() contract maps the existing CanvasGraph wire shape 1:1 to @xyflow/react so the visual surface and the AI agent view never disagree on node/edge identity. This closes the gap where the backend was fully built but no human could see or navigate a canvas.
Added
When a Library card has more than 4 imported media items, the media strip now truncates to 4 visible thumbs with a scannable "+N more" indicator, so you can tell at a glance that additional images/videos/audio exist without opening the piece.
Changed
The Library card inline Schedule button now reads "Schedule" with a generic clock icon instead of "Schedule to Substack" with the Substack brand glyph — scheduling applies to every connected platform, not just Substack.
Added
The source badge on Library cards now renders the imported platform's human-readable name (e.g. "X post", "YouTube video", "Notion page") alongside the icon, so you can see at a glance where a piece came from and click through to the original.
Changed
The Ledger (morning-ritual publishing timeline) moved from a top-level sidebar section into the AI tab as a peer sub-tab alongside Context, Agent, Models, MCP, and Knowledge — the app shell returns to a clean six-section sidebar (Compose, Queue, Library, Analytics, AI, Settings). Legacy ?section=ledger URLs forward to the AI tab.
Changed
The "Fan out" repurposing button on scheduled/posted notes is wrapped in a Tooltip instead of a bare title attribute, matching the A1-P6.1 discoverability pattern across every NoteCard action button.
Changed
The Import Hub tagline no longer frames the product as X-to-Substack — it now reads "turn any of them into a Note for wherever you publish," reflecting the platform-neutral post-gate.
Changed
De-gate wave: the app no longer requires an invite to explore, the left rail is a platform-agnostic Connections list, the right rail is Notey, Settings → Platforms reorders cleanly with a "connect any platform" hero, and the landing copy stopped pretending this is a Substack-only tool. It is a general content harness now.
Changed
The Queue→Galley writing page, the archive/import hub, and the public platforms page all wear the porcelain-and-ink treatment — ink-on-surge controls, engraving plates where they belong, no SaaS shadows.
Changed
Every major surface now follows the porcelain-and-ink design language: an edge-to-edge three-region shell with a book-spine sidebar that finally reaches tablets, a compose page that reads like a manuscript sheet with serif type and ink-on-orange controls, hand-drawn engraving plates paired with empty states, and a right rail where each module has its own shape instead of five identical cards.
Changed
The bottom of the composer used to stack three unrelated-looking piles: media buttons mixed in with scheduling actions, an unlabeled sets strip floating over a bare "Post to:" row, and four different button styles fighting over one action row — with the exact-time widgets wedging themselves between them whenever that mode was on. It's now one coherent bar: a dominant Schedule button on the left, the timing toggle beside it, exact-time controls appearing inline only when active, and everything secondary grouped quietly on the right.
Changed
The Platforms tab used to be three different lists stapled together — connectable platforms as tall accordion rows, plus two separate tile grids for things on hold — so finding one platform meant scrolling and hunting. It's now a single grid grouped by how each platform actually works: Direct-publish (your own credential), Via-Typefully, Passive capture, and Coming later.
Changed
The connection/queue snapshot column on the right used to always be open, showing numbers you can already see on Settings and Queue. It starts collapsed now -- one click brings it back whenever you actually want it.
Changed
This one’s a full redesign, not a coat of paint: a distinct dark sidebar, sharper type throughout, and, genuinely for the first time, real accessibility support.
Keyboard navigation on every tab control. Proper screen-reader labels on icon buttons that used to have none. A live-announcement region so background actions actually get spoken aloud. Full focus handling on every modal: it traps Tab, wraps at the edges, and hands focus back to whatever you clicked to open it.
Added
⌘/Ctrl+K opens a searchable palette that jumps you anywhere in the app. Faster than clicking through the sidebar if your hands are already on the keyboard.
Changed
The sidebar collapses down to icons now and remembers that you wanted it that way.
Desktop also gets a third column: a standing overview rail with connection health, your publishing heartbeat, a snapshot of your queue, and an analytics snapshot, all visible without clicking into anything.
Added
This is where NoteSurge first got an actual interface: Compose, Library, and Settings as real, separate sections, with a light and dark theme that actually remembers your choice, instead of one long page you scrolled through top to bottom.