Changelog · 2026-07-17

Sites v15 — every site your AI shipped, in one place

The biggest dashboard change since v14. Sites — every site your AI has shipped — moves from being a list inside `/deploys` to a first-class resource at `/sites`. Plus a top-to-bottom typography pass t

Released: 2026-07-17

The biggest dashboard change since v14. Sites — every site your AI has shipped — moves from being a list inside /deploys to a first-class resource at /sites. Plus a top-to-bottom typography pass that makes the dashboard look and read like a modern SaaS product instead of a dev tool.

Sites as a first-class resource

Dashboard typography pass

The audit called out the same thing on every page: too much font-mono + uppercase + tracking on labels, buttons, and pills. It read as "developer tool" not "your workspace."

The marketing site is unchanged — its mono-uppercase micro-labels (e.g. "60s · ship", "PRO TIP") are part of the design language. Only the dashboard got swept.

Real <Table> component

The keys, deploys, and domains pages were using a CSS grid as a fake table. That's the textbook "vibe-coded" tell.

Settings gets a sub-nav

Settings was a 240-line single page with 4 sections stacked. Now it has a horizontal pill sub-nav at the top: Account | Team | Webhooks. Each pill is a real route (/settings, /settings/team, /settings/webhooks).

The sub-nav also fixed a copy-paste bug from earlier: /settings/webhooks was rendering h1="Notifications" with eyebrow="Account · Notifications" — a leftover from when it was the notifications page. Now it's h1="Webhooks".

/integrations collapse

The page was 6 stacked blocks: a walkthrough, an MCP card, an amber notice, a row of 2 tiles (Custom domains + GitHub), and a Stripe "coming soon" tile. Five of those were just placeholders for features that don't exist yet.

Icon stroke widths standardised

Icons had a mix of 1.5 / 1.6 / 1.75 / 2 stroke widths across the dashboard. Now standardised to 1.75 for every standard icon. Brand wordmarks (Google, ClaudeCode, ChatGPT) are left at their own weights — those are designed glyphs, not stroke icons.

Performance

What stayed the same

Sites v15 worker surface (M1)

The dashboard's /sites page reads from the worker's new Sites API. The worker is the only writer to public.sites; the dashboard calls it via Bearer auth.

The next milestones wire the deploy flow into the new model: POST /deploy will accept a siteId and atomically update the site row, the Domains tab and Files tab fill in M2 and M3.