<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>xSwarm Releases</title><description>Every shipped xSwarm release: features, fixes and improvements.</description><link>https://xswarm.ai</link><item><title>v20.140.0 — fix: Overview panels return to sign-in holds with trunk -- d1-bindings.test.js</title><link>https://xswarm.ai/releases#v20.140.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.140.0</guid><description>fix: Overview panels return to sign-in holds with trunk -- d1-bindings.test.js
fix: Ticket shelf, blockers and sessions panels send a 401 to sign in (signOutOn401)</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.139.0 — fix: A 401 from /api/tasks drops the hint and goes to sign in (signOutOn401)</title><link>https://xswarm.ai/releases#v20.139.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.139.0</guid><description>fix: A 401 from /api/tasks drops the hint and goes to sign in (signOutOn401)
fix: re-check quality after a critical-path fix pass</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.138.0 — refactor: Machine keys cannot disconnect machines</title><link>https://xswarm.ai/releases#v20.138.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.138.0</guid><description>refactor: Machine keys cannot disconnect machines
refactor: Staging test accounts cannot claim emails
fix: /test/account honours a chosen email only with the staging superadmin key
fix: disconnect refuses a machine key unless the worker is its own</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.137.0 — feat: xswarm task retry -- replan a blocked ticket, refuse any other status</title><link>https://xswarm.ai/releases#v20.137.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.137.0</guid><description>feat: xswarm task retry -- replan a blocked ticket, refuse any other status
fix: packed-install keeps npm&apos;s stderr in the error and retries once on a network error code</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.136.0 — fix: the gate names a suite that failed outside any test, so a red candidate says why</title><link>https://xswarm.ai/releases#v20.136.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.136.0</guid><description>fix: the gate names a suite that failed outside any test, so a red candidate says why
refactor: Pairing guess cap holds under a burst
fix: log each pairing attempt before verifying and count only failures queued ahead of it, so a burst cannot outrun the 10-guess cap
refactor: Faster projects list on dashboard pages
fix: DELETE /users/me and DELETE /keys/:id refuse a machine key with 403
feat: projects list issues deploy, icon, dev-preview and health reads in one round after the list
fix: the agent&apos;s stdout is a file, so a busy runner cannot lose its result</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.135.0 — refactor: SiteauditCleanup: Weekly a11y audit signs in on staging; A11y report lis</title><link>https://xswarm.ai/releases#v20.135.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.135.0</guid><description>refactor: SiteauditCleanup: Weekly a11y audit signs in on staging; A11y report lis
feat: the a11y audit mints a staging QA session and measures stage signed in; its report lists axe violations by route</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.134.0 — fix: re-take homepage-tablet chromium linux baseline for the hero subtitle copy from 4c1bc3a43</title><link>https://xswarm.ai/releases#v20.134.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.134.0</guid><description>fix: re-take homepage-tablet chromium linux baseline for the hero subtitle copy from 4c1bc3a43
fix: re-take new-cto and agency-owner scenario baselines (chromium, firefox, Mobile Chrome linux) showing the shared Tag from 6b67f832</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.133.0 — feat: a phone dashboard hides the Navbar&apos;s Main menu, leaving the dashboard bar&apos;s one menu button</title><link>https://xswarm.ai/releases#v20.133.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.133.0</guid><description>feat: a phone dashboard hides the Navbar&apos;s Main menu, leaving the dashboard bar&apos;s one menu button
feat: a new build shows the update bar and waits for the reader to press Reload</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.132.0 — refactor: First blog card image loads eagerly</title><link>https://xswarm.ai/releases#v20.132.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.132.0</guid><description>refactor: First blog card image loads eagerly
feat: first /blog card image with an image loads eager with fetchpriority high; the rest stay lazy
fix: rendersClean settles on 500ms of request quiet, not networkidle, and names a hang by a 7s deadline from its start</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.131.0 — fix: hero headline unhinted and its bold stand-in rescaled to 116%, so no line slides 2px at the Orbitron swap</title><link>https://xswarm.ai/releases#v20.131.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.131.0</guid><description>fix: hero headline unhinted and its bold stand-in rescaled to 116%, so no line slides 2px at the Orbitron swap
fix: recent-projects joins the nav store&apos;s shared /api/projects; an aborted /api/auth/me keeps the user menu reachable
fix: admin secondary lines and empty states use --color-text-muted; platform filters get visible labels</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.130.0 — fix: an open ticket sheet holds the auto-reload and the update bar sits above its backdrop</title><link>https://xswarm.ai/releases#v20.130.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.130.0</guid><description>fix: an open ticket sheet holds the auto-reload and the update bar sits above its backdrop
fix: connect code field gets a 2 px terminal-cyan focus-visible ring; connect and diagram labels use --color-text-muted</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.129.0 — feat: empty Tickets list and empty Activity board link onward to File a request (/dashboard/requests)</title><link>https://xswarm.ai/releases#v20.129.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.129.0</guid><description>feat: empty Tickets list and empty Activity board link onward to File a request (/dashboard/requests)</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.128.0 — fix: a stream line split across stdout reads still parses</title><link>https://xswarm.ai/releases#v20.128.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.128.0</guid><description>fix: a stream line split across stdout reads still parses
fix: New Project and admin filter fields swap focus:outline-none for a 2 px terminal-cyan focus-visible ring</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.127.0 — fix: setup tutorial asks for Claude Code (Pro or Max) and drops the API key / BYOK onboarding question</title><link>https://xswarm.ai/releases#v20.127.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.127.0</guid><description>fix: setup tutorial asks for Claude Code (Pro or Max) and drops the API key / BYOK onboarding question</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.126.0 — refactor: Filed request confirms itself</title><link>https://xswarm.ai/releases#v20.126.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.126.0</guid><description>refactor: Filed request confirms itself
feat: a filed request shows a lasting success status, a failed one an alert</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.125.0 — refactor: Token calculator renders as a panel</title><link>https://xswarm.ai/releases#v20.125.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.125.0</guid><description>refactor: Token calculator renders as a panel
fix(runner): System One&apos;s spec pick asks a batch again on a dropped connection instead of leaving the ticket unjudged
refactor: Token calculator renders as a panel
fix: drop blank lines inside the cost calculator HTML so markdown keeps it one block instead of turning the indented xSwarm half into a code block</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.124.0 — fix(runner): a candidate fix pass refused for free RAM waits and runs instead of discarding the candidate</title><link>https://xswarm.ai/releases#v20.124.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.124.0</guid><description>fix(runner): a candidate fix pass refused for free RAM waits and runs instead of discarding the candidate
feat: an answered blocker stays in place, greyed, reading &quot;Answered: &lt;answer&gt;&quot; with its controls disabled</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.123.0 — fix: re-run critical path; authenticated and chat-history pass unchanged</title><link>https://xswarm.ai/releases#v20.123.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.123.0</guid><description>fix: re-run critical path; authenticated and chat-history pass unchanged
fix: failed Workers and Usage loads say so instead of reading as empty</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.122.0 — feat: a created project says &quot;Created &lt;name&gt;&quot; in the floating status notice</title><link>https://xswarm.ai/releases#v20.122.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.122.0</guid><description>feat: a created project says &quot;Created &lt;name&gt;&quot; in the floating status notice
fix(runner): a refactor pass refused for free RAM waits and runs instead of being skipped
fix: a board pull asked for mid-pull joins the one in flight</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.121.0 — feat: Blockers spec signs in for real</title><link>https://xswarm.ai/releases#v20.121.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.121.0</guid><description>feat: Blockers spec signs in for real</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.120.0 — feat: failures carry spec:line; a routeless timeout is titled by tests and specs, examples name spec:line</title><link>https://xswarm.ai/releases#v20.120.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.120.0</guid><description>feat: failures carry spec:line; a routeless timeout is titled by tests and specs, examples name spec:line</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.119.0 — fix: cap rendersClean&apos;s still-in-flight poll at 5s so a hung /api/ call is named within 8s on staging too</title><link>https://xswarm.ai/releases#v20.119.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.119.0</guid><description>fix: cap rendersClean&apos;s still-in-flight poll at 5s so a hung /api/ call is named within 8s on staging too
fix(deploy): a Cloudflare build terminated or canceled gets its one retry, also while deploy-agreement waits
fix: Chat history survives a reload holds with trunk -- astro-workerd-fix.test.js, install-browsers.test.js
fix: the @critical reload test also opens the Studio and finds the conversation in view -- the critical-path run is the one that sees trunk, and only the Studio&apos;s squeezed pane is red there on desktop
fix: the small-viewport composer check asserts the composer at the page&apos;s top, not that nothing scrolled -- a remembered conversation now scrolls into view; scrollIntoView guarded for jsdom
refactor: Chat history survives a reload
fix: Studio&apos;s chat pane keeps room for its history, and a phone scrolls a remembered conversation into view above the docked composer</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.118.0 — fix: console-attribution pins the terminal socket at TerminalView.svelte:28, where the ticket retry moved it</title><link>https://xswarm.ai/releases#v20.118.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.118.0</guid><description>fix: console-attribution pins the terminal socket at TerminalView.svelte:28, where the ticket retry moved it
refactor: Workspace terminal connects in Firefox
fix: TerminalView retries a refused ws-ticket on the same backoff as a dropped socket, and stops retrying once torn down</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.117.0 — fix: tag the no-DMI card checks @critical so the trunk run measures them; they ran only in ticket-spec before</title><link>https://xswarm.ai/releases#v20.117.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.117.0</guid><description>fix: tag the no-DMI card checks @critical so the trunk run measures them; they ran only in ticket-spec before
fix: renders-clean names the /api/ paths still in flight, skips held &lt;img&gt; icons, and polls from load so a hang fails inside 8s
refactor: No-DMI worker card shows no &quot;Unknown&quot;
fix: console-attribution pins the room socket&apos;s URL line at relay-socket.js:16, where the down-room signal moved it
fix: the worker card&apos;s meta line is a named Machine group, so a test reads it by role on a stubbed fleet
fix: the workspace header joins the shared room socket instead of dialling a second one Firefox never opened; a refused ticket and a late join to a down room reach onClose</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.116.0 — fix: Homepage tests survive a slow asset holds with trunk -- claude-executor.test.js</title><link>https://xswarm.ai/releases#v20.116.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.116.0</guid><description>fix: Homepage tests survive a slow asset holds with trunk -- claude-executor.test.js
fix: homepage spec opens / at domcontentloaded, so a hung image cannot eat the beforeEach</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.115.0 — fix(deploy-prod): promote and migrate the full tested sha, not staging&apos;s 7-character stamp</title><link>https://xswarm.ai/releases#v20.115.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.115.0</guid><description>fix(deploy-prod): promote and migrate the full tested sha, not staging&apos;s 7-character stamp
fix: Delete account and Cancel open and close the dialog by commandfor, so a press before the settings script lands still opens it</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.114.0 — fix(runner): a coding run refused for free RAM goes back to pending without spending an attempt</title><link>https://xswarm.ai/releases#v20.114.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.114.0</guid><description>fix(runner): a coding run refused for free RAM goes back to pending without spending an attempt
fix: project meeting floor drops to 18rem on desktop, so banners landing above no longer move the environments box from under a press</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.113.0 — fix: Plan chat opener clicks the launcher only while no Team chat dialog is visible</title><link>https://xswarm.ai/releases#v20.113.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.113.0</guid><description>fix: Plan chat opener clicks the launcher only while no Team chat dialog is visible</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.112.0 — feat: Barry&apos;s thinking status in Team chat</title><link>https://xswarm.ai/releases#v20.112.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.112.0</guid><description>feat: Barry&apos;s thinking status in Team chat
fix: Team chat opener clicks the launcher only while no Team chat dialog is visible
fix(deploy-step): a null release read is asked again before a CLI-only trunk counts as unreleased
fix(loop): a pass that planned a ticket RUN is not idle, so it starts without the 60s backoff</description><pubDate>Fri, 23 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.111.0 — feat: Kanban board served from its own database</title><link>https://xswarm.ai/releases#v20.111.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.111.0</guid><description>feat: Kanban board served from its own database
fix: /k/:token reads projects and tasks from this worker&apos;s own D1, answers 404 Kanban not found or not enabled
fix(sync): owner-held pending tickets ride the slow re-assert
fix(release): run release e2e from a worktree pinned at the tested sha</description><pubDate>Wed, 21 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.110.0 — refactor: Fresh post on the blog</title><link>https://xswarm.ai/releases#v20.110.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.110.0</guid><description>refactor: Fresh post on the blog
feat: token-cost guide gets a /cost command tray and an Updated date under the h1
feat: add &apos;Tickets That Are Tests&apos; post dated 2026-10-20</description><pubDate>Tue, 20 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.109.0 — fix: One install story everywhere holds with trunk -- no-npm-publish.test.js</title><link>https://xswarm.ai/releases#v20.109.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.109.0</guid><description>fix: One install story everywhere holds with trunk -- no-npm-publish.test.js
fix: Getting Started leads with npx xswarm instead of &apos;not published to npm&apos;
refactor: Guides and tools hub pages
feat: /guides and /tools hub pages of raised link cards, and a guides &amp; tools row on /docs
fix: re-take homepage-tablet firefox baseline for the new hero subtitle copy
feat: parallel guide gets git worktree commands in a scrolling well and an Updated date under the H1
fix(planner): the BA never answers an audit proposal&apos;s approval itself
refactor: Blog name and freshness
feat: hero subtitle opens with &apos;xSwarm runs parallel Claude Code agents&apos;
fix: /blog h1 and RSS channel say Blog; drop the shipped HTML comment that named AI Musings
fix: token post headline total is $95.20, the sum of its breakdown, with a sentence stating period, models and counting</description><pubDate>Tue, 20 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.108.0 — fix: drop /mockup from the sitemap and serve it X-Robots-Tag noindex</title><link>https://xswarm.ai/releases#v20.108.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.108.0</guid><description>fix: drop /mockup from the sitemap and serve it X-Robots-Tag noindex
fix(e2e-repair): dedupe a raw-error cause against the title it was filed under</description><pubDate>Tue, 20 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.107.0 — feat: Workspace machine state in Firefox</title><link>https://xswarm.ai/releases#v20.107.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.107.0</guid><description>feat: Workspace machine state in Firefox
fix: no code change here -- the relay upgrade 500 was fixed by 4e7bb603 (task e4b925d7), already on main</description><pubDate>Tue, 20 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.106.0 — fix: relay sockets open on staging -- the proxy hands the API&apos;s 101 back as it came (rebuilding it threw), and a socket upgrade gets no hint cookie (Astro appended it to the immutable 101)</title><link>https://xswarm.ai/releases#v20.106.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.106.0</guid><description>fix: relay sockets open on staging -- the proxy hands the API&apos;s 101 back as it came (rebuilding it threw), and a socket upgrade gets no hint cookie (Astro appended it to the immutable 101)
refactor: Style guide shows colour drift
feat: /docs/style-guide shows each token&apos;s uses and a Hard-coded colours table, both from styleDrift()
fix: Tag opts out of the global colour transition so a token change applies at once
feat: styleDrift() returns token uses and colour rows; channel tokens map to rgb(var(--name))
fix: principle callouts transition only transform, background and box-shadow, so a brand-colour change lands on the border at once instead of easing through &apos;all&apos;
feat: shared Tag component on agency-owner and new-cto, colour from --color-secondary
feat: blog timeline, phase cards, checkboxes and manifesto principles draw from --brand-secondary/--brand-accent; the callout check waits out its border transition</description><pubDate>Tue, 20 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.105.0 — fix: homepage section h2s, /blog h1 and post titles use var(--font-display), which carries the metric-matched Orbitron Fallback</title><link>https://xswarm.ai/releases#v20.105.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.105.0</guid><description>fix: homepage section h2s, /blog h1 and post titles use var(--font-display), which carries the metric-matched Orbitron Fallback
feat: delete components-demo page, TerminalDemo and ArticleCard, their visual entry and baselines, and their ratchet/lint debt entries
feat: one faint-text literal on --color-text-muted (tertiary/quiet alias it), five unused light/dark status tokens removed, projects empty state on muted
fix: Function Graveyard post is .mdx so its BlogGraveyard and BlogComparison imports render</description><pubDate>Tue, 20 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.104.0 — refactor: Browser bar matches the site</title><link>https://xswarm.ai/releases#v20.104.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.104.0</guid><description>refactor: Browser bar matches the site
fix: theme-color meta reads #18181b (--color-background) instead of #00ff00
fix: relay sockets open on staging -- a WebSocket upgrade skips CORS, whose headers on the room&apos;s immutable 101 made a 500 of every socket from stage.xswarm.ai</description><pubDate>Tue, 20 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.103.0 — refactor: Every live-page error placed on a line</title><link>https://xswarm.ai/releases#v20.103.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.103.0</guid><description>refactor: Every live-page error placed on a line
fix: live-page socket errors placed on a line -- dynamic imports walked, message URL over a chunk resource, id segments matched as ${...}, frame errors keep their socket&apos;s URL and stack</description><pubDate>Tue, 20 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.102.0 — fix: same-origin relay sockets open on a dev server -- ws: on an http page, a local PROJECT_ROOM, and a 101 handed back untouched</title><link>https://xswarm.ai/releases#v20.102.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.102.0</guid><description>fix: same-origin relay sockets open on a dev server -- ws: on an http page, a local PROJECT_ROOM, and a 101 handed back untouched
fix(planner): a re-plan sees why its last plan was refused
refactor: WranglerCleanup: Admin pages skip the identity call; Retire the API prox
feat: admin pages read is_admin from the Astro session; staging web binds the staging API&apos;s bindings and drops its API service
refactor: Relay socket on the site origin
feat: relay sockets dial the page&apos;s own origin and the ws-ticket is minted in-process</description><pubDate>Tue, 20 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.101.0 — refactor: Staging stores icons in R2</title><link>https://xswarm.ai/releases#v20.101.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.101.0</guid><description>refactor: Staging stores icons in R2
feat: bind ICONS to xswarm-icons-staging in web and api [env.staging]
refactor: Secrets go to the configured account
fix: setup-secrets takes account_id from packages/web/wrangler.toml, not the first account the token sees
fix(dispatch): coding prompt names the e2e per-call timeout floor</description><pubDate>Tue, 20 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.100.0 — fix: polling test&apos;s per-second wait settles on reads the history route took, not every request seen</title><link>https://xswarm.ai/releases#v20.100.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.100.0</guid><description>fix: polling test&apos;s per-second wait settles on reads the history route took, not every request seen</description><pubDate>Mon, 19 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.99.0 — fix(pipeline): in-tree quality step runs the entry-point floor and keeps the file it names</title><link>https://xswarm.ai/releases#v20.99.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.99.0</guid><description>fix(pipeline): in-tree quality step runs the entry-point floor and keeps the file it names</description><pubDate>Mon, 19 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.98.0 — refactor: Map symbol leads with its definition</title><link>https://xswarm.ai/releases#v20.98.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.98.0</guid><description>refactor: Map symbol leads with its definition
feat: map symbol sorts the definition before re-exports and prints its declaration</description><pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.97.0 — refactor: Orientation shows the matching code</title><link>https://xswarm.ai/releases#v20.97.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.97.0</guid><description>refactor: Orientation shows the matching code
feat: orient hands over the code of functions the ticket names (parse records end lines, index v3, mapAdapter passes a reader)
refactor: Repo map indexes the ticket&apos;s own repo
feat: mapAdapter indexes the ticket&apos;s repo (xswarm ROOTS where present, else the whole checkout) into its own .xswarm/; run.mjs passes repoPath</description><pubDate>Sat, 17 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.96.0 — fix: Light homepage images in Firefox holds with trunk -- layout-head.test.js</title><link>https://xswarm.ai/releases#v20.96.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.96.0</guid><description>fix: Light homepage images in Firefox holds with trunk -- layout-head.test.js
fix: drop the 192/512 and apple-touch icon links Firefox fetched; manifest served statically so dev answers it too</description><pubDate>Fri, 16 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.95.0 — fix(runner): a recorded observer proof is read at admission, so the first ticket after a runner start dispatches without a wasted ~33s pass</title><link>https://xswarm.ai/releases#v20.95.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.95.0</guid><description>fix(runner): a recorded observer proof is read at admission, so the first ticket after a runner start dispatches without a wasted ~33s pass
refactor: Per-route byte budgets in perf gate
feat: blog posts draw body and code in --font-sans/--font-mono, post-end waitlist in --font-mono via --waitlist-font; post gains a context code block
feat: perf-audit judges each route&apos;s desktop bytes against quality/perf-budget.json and exits 1 on any breach</description><pubDate>Fri, 16 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.94.0 — refactor: Unmeasured routes named in perf gate</title><link>https://xswarm.ai/releases#v20.94.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.94.0</guid><description>refactor: Unmeasured routes named in perf gate
feat: homepage circuit edges as 400px WebP (41 KB, was 194 KB PNG) on labelled role=img bands
feat: perfResult records routes printed UNMEASURED; perfSlips names each as &apos;&lt;route&gt; unmeasured&apos;</description><pubDate>Fri, 16 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.93.0 — fix: Work-stream specs pause their clock 1s after install, so a slow host can&apos;t put the pause in the past</title><link>https://xswarm.ai/releases#v20.93.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.93.0</guid><description>fix: Work-stream specs pause their clock 1s after install, so a slow host can&apos;t put the pause in the past
fix: focus setup accepts any top under the navbar (0..64px) instead of exactly 16, so Firefox&apos;s 16.5px passes
fix(planner): plan a blocked ticket only once its blocker lands</description><pubDate>Fri, 16 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.92.0 — fix: Pause button truly hidden under reduced motion; cursor wrapper set in VT323 so the wordmark keeps its line box</title><link>https://xswarm.ai/releases#v20.92.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.92.0</guid><description>fix: Pause button truly hidden under reduced motion; cursor wrapper set in VT323 so the wordmark keeps its line box
fix: Logo cursor shares one flex item with the word, so the wordmark reads &quot;xSwarm.ai_&quot; with no break
refactor: Pausable logo animation
refactor: 11 px floor for dashboard text
feat: Pause logo animation toggle beside the navbar wordmark (WCAG 2.2.2)
fix: report cover text at the 12px floor on a wider 8.5rem sheet; cover label names the audit</description><pubDate>Fri, 16 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.91.0 — feat: scroll-padding-top of nav height + --space-2 on html so focused links clear the fixed navbar</title><link>https://xswarm.ai/releases#v20.91.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.91.0</guid><description>feat: scroll-padding-top of nav height + --space-2 on html so focused links clear the fixed navbar
refactor: Lint blocks opacity-dimmed text
feat: web lint fails color dimmed by opacity; existing rules held as named known debt
refactor: Steady name for the home link
feat: aria-label &apos;xSwarm.ai home&apos; on the navbar brand link, so its name no longer follows the retyping logo</description><pubDate>Fri, 16 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.90.0 — refactor: Projects table works by keyboard</title><link>https://xswarm.ai/releases#v20.90.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.90.0</guid><description>refactor: Projects table works by keyboard
feat: sort buttons in projects table headers (aria-sort) and a row toggle button (aria-expanded); focus kept across re-render</description><pubDate>Fri, 16 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.89.0 — feat: Width sweep opens the account&apos;s own hub</title><link>https://xswarm.ai/releases#v20.89.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.89.0</guid><description>feat: Width sweep opens the account&apos;s own hub
fix: drop the hard-coded a53dd66f hub from the route sweep; each width opens the account&apos;s first project</description><pubDate>Fri, 16 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.88.0 — fix: Settings delete section headed Danger zone so heading and region &apos;Account&apos; stay unique</title><link>https://xswarm.ai/releases#v20.88.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.88.0</guid><description>fix: Settings delete section headed Danger zone so heading and region &apos;Account&apos; stay unique
refactor: Remove a worker or project in UI
fix(pipeline): in-tree quality step runs astro check when a web file changed
feat: remove an offline worker or a project, with Undo before the DELETE
refactor: Account can be deleted in Settings
feat: Settings Delete account section and typed-name dialog send a confirmed DELETE /api/users/me, then sign out to /</description><pubDate>Fri, 16 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.87.0 — fix: first dashboard stat labelled Online; task status names a class only when a plain word</title><link>https://xswarm.ai/releases#v20.87.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.87.0</guid><description>fix: first dashboard stat labelled Online; task status names a class only when a plain word
feat: Tickets page delete waits out an 8s Undo notice, as the board does, instead of confirm()
feat: request form with no projects says to create one, links to /dashboard/projects, disables File request</description><pubDate>Fri, 16 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.86.0 — fix: Recent Tasks rows built as elements so a title is text, never markup</title><link>https://xswarm.ai/releases#v20.86.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.86.0</guid><description>fix: Recent Tasks rows built as elements so a title is text, never markup</description><pubDate>Fri, 16 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.85.0 — fix(deploy): stage and prod build waits stretch while Cloudflare still holds the build</title><link>https://xswarm.ai/releases#v20.85.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.85.0</guid><description>fix(deploy): stage and prod build waits stretch while Cloudflare still holds the build</description><pubDate>Fri, 16 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.84.0 — refactor: Studio messages keep their session</title><link>https://xswarm.ai/releases#v20.84.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.84.0</guid><description>refactor: Studio messages keep their session
fix: roomPresence moves to fixtures/session; workspace-status imports it beside listProjects
fix: relay socket replays the room&apos;s last session:open to a late joiner</description><pubDate>Thu, 15 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.83.0 — fix(runner): publishing-checkout fetch is async and times out at 30s</title><link>https://xswarm.ai/releases#v20.83.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.83.0</guid><description>fix(runner): publishing-checkout fetch is async and times out at 30s
fix(runner): trunk fetch is async and times out at 30s, so a hung GitHub cannot freeze the runner
fix(runner): stop the foreman after the release a restart waits on, not before</description><pubDate>Thu, 15 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.82.0 — feat: task show renders id/status/title, stage, attempt count and last attempt&apos;s reason as data.message</title><link>https://xswarm.ai/releases#v20.82.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.82.0</guid><description>feat: task show renders id/status/title, stage, attempt count and last attempt&apos;s reason as data.message</description><pubDate>Wed, 14 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.81.0 — refactor: ForemanCleanup: Studio opens its own session worktree; Ended session fil</title><link>https://xswarm.ai/releases#v20.81.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.81.0</guid><description>refactor: ForemanCleanup: Studio opens its own session worktree; Ended session fil
refactor: ChatWindowCleanup: Studio lists the session&apos;s requests; Studio messages
feat: session:start opens a .xswarm/sessions worktree on ui/session-&lt;id&gt;; a session drops project chat history; ending one files its picks and closes the session files
feat: Studio chat lists the session&apos;s requests (kept per project) and names the room&apos;s session worktree on each message</description><pubDate>Wed, 14 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.80.0 — fix: Studio chat is one UI session holds with trunk -- rollup-shipper-real-config.test.js</title><link>https://xswarm.ai/releases#v20.80.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.80.0</guid><description>fix: Studio chat is one UI session holds with trunk -- rollup-shipper-real-config.test.js
refactor: Studio chat is one UI session
feat: foreman answers session:open with the Studio&apos;s one session worktree, opening it on a new branch or resuming it; the room routes session:open and session:state
fix: a red suite&apos;s requeue reason names its unhandled error and the file vitest blamed, not the jsdom banner</description><pubDate>Wed, 14 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.79.0 — fix: WorkspaceView test loads the lazily imported panes up front so jsdom is never torn down mid-import</title><link>https://xswarm.ai/releases#v20.79.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.79.0</guid><description>fix: WorkspaceView test loads the lazily imported panes up front so jsdom is never torn down mid-import
fix: name the live grid view a &apos;Project grid&apos; region so the Workspace toggle&apos;s hiding of it is observable</description><pubDate>Wed, 14 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.78.0 — refactor: Dev preview frames load on the site</title><link>https://xswarm.ai/releases#v20.78.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.78.0</guid><description>refactor: Dev preview frames load on the site
fix: frame-src admits *.xswarm.ai previews and the workers.dev relay</description><pubDate>Wed, 14 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.77.0 — refactor: Studio picks work on client sites</title><link>https://xswarm.ai/releases#v20.77.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.77.0</guid><description>refactor: Studio picks work on client sites
feat: proxy injects a self-contained inspect bridge before &lt;/body&gt; of relayed HTML, skipping pages that load their own</description><pubDate>Wed, 14 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.76.0 — feat: drop Open ↗ from both preview bars; Studio ↗ is the way out</title><link>https://xswarm.ai/releases#v20.76.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.76.0</guid><description>feat: drop Open ↗ from both preview bars; Studio ↗ is the way out
fix: an agent that exits 0 with no result event fails with its stderr, not a bare null
fix: Studio point-at-element picker holds with trunk -- e2e-staging-budget.test.js
refactor: Studio point-at-element picker
feat: preview host sends Sec-Fetch-Dest: document navigations to the project&apos;s Studio with ?path
feat: Studio Pick and workspace Highlight attach picked elements to the chat composer, sent in order as chat:message annotations
refactor: Dev card opens the Studio
feat: Dev card&apos;s frame and Open link point at the Studio, not the bare dev site</description><pubDate>Wed, 14 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.75.0 — fix: Capped settle in rendersClean holds with trunk -- e2e-staging-budget.test.js</title><link>https://xswarm.ai/releases#v20.75.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.75.0</guid><description>fix: Capped settle in rendersClean holds with trunk -- e2e-staging-budget.test.js
refactor: Capped settle in rendersClean
fix: rendersClean settles through the 3s-capped settle, not an uncapped networkidle
fix: width sweep settles with networkidle capped at 3s, so busy pages get measured</description><pubDate>Wed, 14 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.74.0 — refactor: Preview zone setup without paid cert</title><link>https://xswarm.ai/releases#v20.74.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.74.0</guid><description>refactor: Preview zone setup without paid cert
fix: setup:preview-zone creates a proxied *.xswarm.ai record and drops the paid advanced cert order
refactor: Previews load on a free certificate
feat: preview origins one label under xswarm.ai, &lt;label&gt;-preview.xswarm.ai, with a matching zone route</description><pubDate>Wed, 14 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.73.0 — feat: Footer compact variant drops the ASCII banner and top margin on phones so /compare&apos;s Join the Waitlist fits above it</title><link>https://xswarm.ai/releases#v20.73.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.73.0</guid><description>feat: Footer compact variant drops the ASCII banner and top margin on phones so /compare&apos;s Join the Waitlist fits above it
feat: /compare columns name Claude Squad, Conductor, Vibe Kanban; Last reviewed date; closing Join the Waitlist CTA</description><pubDate>Wed, 14 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.72.0 — refactor: TaskCleanup: Task list readable without --json; Task board readable with</title><link>https://xswarm.ai/releases#v20.72.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.72.0</guid><description>refactor: TaskCleanup: Task list readable without --json; Task board readable with
feat: task list and board render readable lines without --json, via data.message
fix: An empty planner reply names its subtype</description><pubDate>Wed, 14 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.71.0 — refactor: Idle releases skip the window</title><link>https://xswarm.ai/releases#v20.71.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.71.0</guid><description>refactor: Idle releases skip the window
feat: skip the release window when no other ticket is pending or running</description><pubDate>Wed, 14 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.70.0 — fix: completed-without-landing tickets derive no board column on read</title><link>https://xswarm.ai/releases#v20.70.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.70.0</guid><description>fix: completed-without-landing tickets derive no board column on read
fix: completed-without-landing tickets report no board column</description><pubDate>Wed, 14 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.69.0 — refactor: Blog posts carry dateModified</title><link>https://xswarm.ai/releases#v20.69.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.69.0</guid><description>refactor: Blog posts carry dateModified
feat: BlogPosting JSON-LD carries dateModified from updatedDate, falling back to publishDate</description><pubDate>Tue, 13 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.68.0 — refactor: Workspace header shows Machine online</title><link>https://xswarm.ai/releases#v20.68.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.68.0</guid><description>refactor: Workspace header shows Machine online
fix: relay-open watcher names every relay socket by full URL, token removed, and the module that dialled it</description><pubDate>Tue, 13 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.67.0 — fix(runner): a pass keeps dispatched tickets for dependencies and lets a re-planned ticket run again</title><link>https://xswarm.ai/releases#v20.67.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.67.0</guid><description>fix(runner): a pass keeps dispatched tickets for dependencies and lets a re-planned ticket run again</description><pubDate>Tue, 13 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.66.0 — refactor: ContentconfigCleanup: An impossible date fails the build; Overlong descr</title><link>https://xswarm.ai/releases#v20.66.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.66.0</guid><description>refactor: ContentconfigCleanup: An impossible date fails the build; Overlong descr
feat: blog schema caps publishDate at Claude Code&apos;s release (2025-02-24) and description at 160 chars; posts 06-12 re-dated to first commit (2025-07-01), welcome to 2026-01-10, 06-09 descriptions cut to 146-152 chars
fix: chat-state snapshots run in the pre-push ticket-spec project instead of skipping, so the spec is measured
feat: posts 10-12 descriptions rewritten to 107-144 chars, each ending in a whole sentence</description><pubDate>Tue, 13 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.65.0 — fix: local dev proxy gives ws-ticket 10s, not 3s -- the one route a provisioned dev server still proxies always meets a cold upstream connection (3-5s here), so it 500ed and the workspace header read &apos;Relay unreachable&apos;</title><link>https://xswarm.ai/releases#v20.65.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.65.0</guid><description>fix: local dev proxy gives ws-ticket 10s, not 3s -- the one route a provisioned dev server still proxies always meets a cold upstream connection (3-5s here), so it 500ed and the workspace header read &apos;Relay unreachable&apos;
feat: /guides/claude-code-token-costs hub linking calculator and post 12; calculator links back below its result</description><pubDate>Tue, 13 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.64.0 — fix: /blog card descriptions no longer line-clamped, so the whole meta description shows</title><link>https://xswarm.ai/releases#v20.64.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.64.0</guid><description>fix: /blog card descriptions no longer line-clamped, so the whole meta description shows
feat: posts 02-05 descriptions rewritten to 117-133 chars, each ending in a whole sentence
feat: footer resources list links the parallel claude code guide and compare</description><pubDate>Tue, 13 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.63.0 — feat: posts 02-05 re-dated to their files&apos; first git commit (2025-07-01), after Claude Code&apos;s launch</title><link>https://xswarm.ai/releases#v20.63.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.63.0</guid><description>feat: posts 02-05 re-dated to their files&apos; first git commit (2025-07-01), after Claude Code&apos;s launch</description><pubDate>Tue, 13 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.62.0 — feat: navbar sizes from --size-* (wordmark title, links lead, badge/sign-in/menu body, username and recents small); footer text sizes named by token</title><link>https://xswarm.ai/releases#v20.62.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.62.0</guid><description>feat: navbar sizes from --size-* (wordmark title, links lead, badge/sign-in/menu body, username and recents small); footer text sizes named by token
feat: CLI Essentials and Dashboard guides take cyan from var(--color-neon-alt), tints via color-mix; breadcrumb nav labelled</description><pubDate>Tue, 13 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.61.0 — fix: re-take tutorials-index and tutorials-mobile firefox baselines; the ticket&apos;s /tutorials type-scale sizes change what firefox draws too</title><link>https://xswarm.ai/releases#v20.61.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.61.0</guid><description>fix: re-take tutorials-index and tutorials-mobile firefox baselines; the ticket&apos;s /tutorials type-scale sizes change what firefox draws too
feat: projects and tutorials sizes from --size-*; tutorial and docs cyan from --color-neon-alt, TOC rules made global so the script-built links get them
fix(merge-queue): keep a red candidate&apos;s test log where its requeue reason points</description><pubDate>Tue, 13 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.60.0 — fix(dispatch): coding rule allows a baseline re-take the ticket asks for, as the scope guard does</title><link>https://xswarm.ai/releases#v20.60.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.60.0</guid><description>fix(dispatch): coding rule allows a baseline re-take the ticket asks for, as the scope guard does
feat: freelancer Start Free Trial renders Button variant=&quot;cta&quot;; copied .cta-button rules removed</description><pubDate>Tue, 13 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.59.0 — refactor: Display font from one token</title><link>https://xswarm.ai/releases#v20.59.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.59.0</guid><description>refactor: Display font from one token
feat: theme.css --font-display (&apos;Orbitron&apos;, metric-matched fallback, site sans) replaces the Orbitron literal in tutorial, docs and blog layouts
refactor: Status colours use their tokens
fix: SettingsPanel FREE/Working/failure labels use --color-success and --color-danger
feat: projects table header, cells, badges, detail panel and toolbar spaced with --space-* tokens</description><pubDate>Tue, 13 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.58.0 — fix: Brand neon has one token holds with trunk -- affordable-workers.test.js</title><link>https://xswarm.ai/releases#v20.58.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.58.0</guid><description>fix: Brand neon has one token holds with trunk -- affordable-workers.test.js
fix: Related Articles h3 is scrolled into view before the in-viewport check, retrying past smooth-scroll cancels
refactor: Brand neon has one token
feat: --color-neon / --color-neon-alt in theme.css; homepage, BlogLayout and blog.css draw brand cyan from them
refactor: Style guide generated from theme.css
feat: style guide renders its token table from theme.css and drops the light-dark() teaching</description><pubDate>Tue, 13 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.57.0 — fix: One tutorial CTA button holds with trunk -- dark-only-theme.test.js</title><link>https://xswarm.ai/releases#v20.57.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.57.0</guid><description>fix: One tutorial CTA button holds with trunk -- dark-only-theme.test.js
feat: tutorial Start Free Trial is one Button variant=&quot;cta&quot; styled from tokens
refactor: Style ratchet names the new literal
feat: style ratchet&apos;s rise line lists the grown file&apos;s literals beside its count</description><pubDate>Tue, 13 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.56.0 — fix: Barry&apos;s thinking status is found inside the Team chat dialog, not page-wide</title><link>https://xswarm.ai/releases#v20.56.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.56.0</guid><description>fix: Barry&apos;s thinking status is found inside the Team chat dialog, not page-wide</description><pubDate>Tue, 13 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.55.0 — fix: Waitlist rate limit on the platform holds with trunk -- api-binding-parity.test.js</title><link>https://xswarm.ai/releases#v20.55.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.55.0</guid><description>fix: Waitlist rate limit on the platform holds with trunk -- api-binding-parity.test.js
feat: waitlist and provision rate-limit via WAITLIST_LIMITER/PROVISION_LIMITER bindings, no D1 count</description><pubDate>Tue, 13 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.54.0 — refactor: One worker answers the API</title><link>https://xswarm.ai/releases#v20.54.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.54.0</guid><description>refactor: One worker answers the API
feat: web [env.production] binds the API&apos;s seven bindings and its entry exports the queue consumer
fix: api worker clears its activity-prune cron; the web worker owns it
fix(status): retry route checks like the deploy gate so one network blip is not BROKEN
fix: deploy-agreement keeps waiting while Cloudflare is still building the lagging worker
docs(monitor): never run bare xswarm -- it is setup and rewrites git credentials</description><pubDate>Tue, 13 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.53.0 — refactor: Setup keeps git working without the App</title><link>https://xswarm.ai/releases#v20.53.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.53.0</guid><description>refactor: Setup keeps git working without the App
fix: setup proves the API can mint for the origin repo before swapping git&apos;s credential helper, and warns instead when the App is not installed
fix: monitor counts owner-blocked tickets as blocked, not live
fix: status reads the published CLI version from stdout only, not npm&apos;s config warnings
fix: brief does not call the daemon stale when the checkout moved only outside packages/app
fix: brief calls prod current when trunk is ahead only in files no bundle ships
fix: Jev judges a ticket that edits vitest.config, which no page builds through</description><pubDate>Tue, 13 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.52.0 — fix: delete the unrendered device-approval component and its stores, which called routes no server defines</title><link>https://xswarm.ai/releases#v20.52.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.52.0</guid><description>fix: delete the unrendered device-approval component and its stores, which called routes no server defines</description><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.51.0 — fix: a bundle-free trunk still releases once when production reports no release for its sha</title><link>https://xswarm.ai/releases#v20.51.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.51.0</guid><description>fix: a bundle-free trunk still releases once when production reports no release for its sha
fix: the publisher restarts a daemon on old packages/app code when a bundle-free trunk will not release
fix: the planner marks an owner&apos;s answer delivered once it releases the ticket
fix: a skipped identical rebuild records its release under the served sha, and drift ignores bundle-free commits</description><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.50.0</title><link>https://xswarm.ai/releases#v20.50.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.50.0</guid><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.49.0</title><link>https://xswarm.ai/releases#v20.49.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.49.0</guid><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.48.0 — fix: brief names a release&apos;s hard failure before the standing UNMEASURED WebKit notice</title><link>https://xswarm.ai/releases#v20.48.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.48.0</guid><description>fix: brief names a release&apos;s hard failure before the standing UNMEASURED WebKit notice
fix: deploy-prod retries a failed production build once instead of calling it skipped</description><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.47.0 — fix: prove-it-live reports the stop hook&apos;s last decision, not a scope-only line&apos;s missing action</title><link>https://xswarm.ai/releases#v20.47.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.47.0</guid><description>fix: prove-it-live reports the stop hook&apos;s last decision, not a scope-only line&apos;s missing action</description><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.46.0 — fix: prove-it-live re-reads a post-deploy sha disagreement for a minute before calling deploy-agreement SILENT</title><link>https://xswarm.ai/releases#v20.46.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.46.0</guid><description>fix: prove-it-live re-reads a post-deploy sha disagreement for a minute before calling deploy-agreement SILENT</description><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.45.0 — fix: sign-out-all reachability waits for the account, 3 keys and no Loading… before scrolling to the button</title><link>https://xswarm.ai/releases#v20.45.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.45.0</guid><description>fix: sign-out-all reachability waits for the account, 3 keys and no Loading… before scrolling to the button</description><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.44.0 — fix: deploy-stage retries, once, a staging build of the pushed sha that already failed</title><link>https://xswarm.ai/releases#v20.44.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.44.0</guid><description>fix: deploy-stage retries, once, a staging build of the pushed sha that already failed</description><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.43.0 — fix: e2e triage folds visual.spec.ts&apos;s pixel-budget failures into the one visual snapshot cause</title><link>https://xswarm.ai/releases#v20.43.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.43.0</guid><description>fix: e2e triage folds visual.spec.ts&apos;s pixel-budget failures into the one visual snapshot cause</description><pubDate>Mon, 12 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.42.0 — fix: a whole e2e suite whose failures are all non-blocking and ticketed restarts the 24h full-run clock</title><link>https://xswarm.ai/releases#v20.42.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.42.0</guid><description>fix: a whole e2e suite whose failures are all non-blocking and ticketed restarts the 24h full-run clock</description><pubDate>Sun, 11 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.41.0 — fix: deploy-prod never calls a prod build skipped while Cloudflare is still running it</title><link>https://xswarm.ai/releases#v20.41.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.41.0</guid><description>fix: deploy-prod never calls a prod build skipped while Cloudflare is still running it</description><pubDate>Sun, 11 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.40.0 — refactor: One history fetch per web build</title><link>https://xswarm.ai/releases#v20.40.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.40.0</guid><description>refactor: One history fetch per web build
feat: the tag fetch unshallows a shallow clone in the same trip, leaving the sitemap no history to fetch</description><pubDate>Sun, 11 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.39.0 — fix: the tag fetch never filters -- a promisor clone hung both 20.38.0 web builds in the sitemap&apos;s per-post git log</title><link>https://xswarm.ai/releases#v20.39.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.39.0</guid><description>fix: the tag fetch never filters -- a promisor clone hung both 20.38.0 web builds in the sitemap&apos;s per-post git log</description><pubDate>Sun, 11 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.38.0 — fix: the refused-filter warning says the tree-less fetch was refused and a full fetch was used</title><link>https://xswarm.ai/releases#v20.38.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.38.0</guid><description>fix: the refused-filter warning says the tree-less fetch was refused and a full fetch was used
feat: a shallow clone fetches tags with --filter=tree:0; a refused filter warns (wording off)</description><pubDate>Sun, 11 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.37.0 — feat: releases.json log line times the tag fetch and the per-tag git logs; a failed fetch says how long it ran</title><link>https://xswarm.ai/releases#v20.37.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.37.0</guid><description>feat: releases.json log line times the tag fetch and the per-tag git logs; a failed fetch says how long it ran</description><pubDate>Sun, 11 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.36.0 — fix: a tests-only ticket runs its touched specs, not the full release suite</title><link>https://xswarm.ai/releases#v20.36.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.36.0</guid><description>fix: a tests-only ticket runs its touched specs, not the full release suite</description><pubDate>Sun, 11 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.35.0 — refactor: Workspace flake names the slow step</title><link>https://xswarm.ai/releases#v20.35.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.35.0</guid><description>refactor: Workspace flake names the slow step
feat: relay-open watcher records socket create/open on the Node clock; the workspace header poll&apos;s timeout names it</description><pubDate>Sun, 11 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.34.0 — fix: a flaky critical-path spec keeps its full-run error in evidence (e2eFlakyError)</title><link>https://xswarm.ai/releases#v20.34.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.34.0</guid><description>fix: a flaky critical-path spec keeps its full-run error in evidence (e2eFlakyError)</description><pubDate>Sun, 11 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.33.0 — feat: a production deploy report closes every open request whose tickets all shipped, with the release as evidence</title><link>https://xswarm.ai/releases#v20.33.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.33.0</guid><description>feat: a production deploy report closes every open request whose tickets all shipped, with the release as evidence</description><pubDate>Sun, 11 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.32.0 — refactor: Closed-without-code requests read live</title><link>https://xswarm.ai/releases#v20.32.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.32.0</guid><description>refactor: Closed-without-code requests read live
feat: a consolidated ticket reads as the survivor its heldReason names; completed with no column is delivered</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.31.0 — fix: ticket-sheet spec reads the sheet&apos;s level-2 title; 21787eee made the printed card&apos;s h3 a second heading of the same name</title><link>https://xswarm.ai/releases#v20.31.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.31.0</guid><description>fix: ticket-sheet spec reads the sheet&apos;s level-2 title; 21787eee made the printed card&apos;s h3 a second heading of the same name
feat: a request with no commits whose tickets all completed in deployed derives live</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.30.0 — fix: production CORS allowlist drops stage.xswarm.ai; unlisted origins skip cors() so no Allow-Credentials leaks</title><link>https://xswarm.ai/releases#v20.30.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.30.0</guid><description>fix: production CORS allowlist drops stage.xswarm.ai; unlisted origins skip cors() so no Allow-Credentials leaks</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.29.0 — fix: System One&apos;s spec choice keeps at most the forty most likely</title><link>https://xswarm.ai/releases#v20.29.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.29.0</guid><description>fix: System One&apos;s spec choice keeps at most the forty most likely</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.28.0 — feat: What is xSwarm? setup link reads First-Time Setup instead of Getting Started</title><link>https://xswarm.ai/releases#v20.28.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.28.0</guid><description>feat: What is xSwarm? setup link reads First-Time Setup instead of Getting Started</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.27.0 — fix: re-take tutorial-first-time-setup baselines (chromium, firefox, Mobile Chrome linux) showing the First-Time Setup h1</title><link>https://xswarm.ai/releases#v20.27.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.27.0</guid><description>fix: re-take tutorial-first-time-setup baselines (chromium, firefox, Mobile Chrome linux) showing the First-Time Setup h1
feat: retitle the first-time-setup tutorial and its card First-Time Setup</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.26.0 — refactor: Real scenario progress on running cards</title><link>https://xswarm.ai/releases#v20.26.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.26.0</guid><description>refactor: Real scenario progress on running cards
refactor: Sign-in email not held up by retries
refactor: Real scenario progress on running cards
feat: red/green records how many of the ticket&apos;s tests passed and sync sends it as the card&apos;s passed, all of them once its own spec passes E2E
feat: magic-link route enqueues on EMAIL_QUEUE; worker queue handler sends, acks, or retries</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.25.0 — fix: the planner re-takes the baselines of a page a ticket redraws, and sees why a ticket was sent back</title><link>https://xswarm.ai/releases#v20.25.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.25.0</guid><description>fix: the planner re-takes the baselines of a page a ticket redraws, and sees why a ticket was sent back
fix: the next batch starts at its timer or when the release finishes, whichever is later</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.24.0 — fix: a planner that crashed or returned nothing spends no plan; crashes have their own cap of 3</title><link>https://xswarm.ai/releases#v20.24.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.24.0</guid><description>fix: a planner that crashed or returned nothing spends no plan; crashes have their own cap of 3</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.23.0 — fix: the watchdog treats a release in progress as busy, so it never kills a ship mid-E2E</title><link>https://xswarm.ai/releases#v20.23.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.23.0</guid><description>fix: the watchdog treats a release in progress as busy, so it never kills a ship mid-E2E
fix: a re-plan archives the cleared attempts into priorAttempts</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.22.0 — feat: a release tests the @critical core plus Jev&apos;s picks for its tickets, the whole suite at least daily</title><link>https://xswarm.ai/releases#v20.22.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.22.0</guid><description>feat: a release tests the @critical core plus Jev&apos;s picks for its tickets, the whole suite at least daily
refactor: Report specs survive a network blip
fix: shared-report phone and A4 specs open the report through gotoRetrying
refactor: Workspace header test survives a reset
fix: workspace header setup reads projects and room status through retrying helpers
fix: release specs fetch /releases.json from the site under test instead of the committed copy</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.21.0 — fix: brief loads the net-family preamble, so a slow line no longer reads as &apos;prod unreachable&apos;</title><link>https://xswarm.ai/releases#v20.21.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.21.0</guid><description>fix: brief loads the net-family preamble, so a slow line no longer reads as &apos;prod unreachable&apos;
fix: every dev server Playwright starts keeps fetch alive on a slow line
fix: fetch survives a slow line, releases wait out a saturated network, and every release keeps its whole log
refactor: Ticket names never cut short
fix: a ticket&apos;s name is re-fitted whenever a typeface finishes loading, so a late Anton never leaves it measured in the fallback and cut
fix(runner): a ship killed after the mint is recorded as published; ship limit 90 min
fix: the reader&apos;s own print CSS lays tables out fixed with cells that wrap anywhere, so every lane prints a wide table inside the page
fix: the ticket sheet heads its record with the title as a level-2 sans heading; the printed card keeps its Courier Prime h3
refactor: Long code lines wrap in printed reports
fix: the report reader wraps long code lines in print itself, so the project reports lane prints them too
fix: a timed fanned strip sets its time tight under the name and its title lower, and centres both -- the time no longer lies flush to the next ticket&apos;s edge
fix: releases feed spec counts against the build&apos;s own /releases.json, not the checkout&apos;s committed copy</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.20.0 — fix: the runner imports a ticket filed for the planner instead of declining it every pull</title><link>https://xswarm.ai/releases#v20.20.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.20.0</guid><description>fix: the runner imports a ticket filed for the planner instead of declining it every pull
refactor: ProjectBoardCleanup: Even gaps around stacked names; Chat button asks ab
feat: an open ticket sheet publishes its name to the floating chat -- launcher reads About this ticket above the backdrop, messages carry the ticket as context_ref
refactor: ProjectBoardCleanup: Board toolbar shows agents in use; Scenario progres
feat: board toolbar reads N of M agents from /api/workers each poll; running cards print scenario progress in place of the punches
fix: a stacked strip shows its time when it fits -- centred, else raised no higher than the card&apos;s edge, else its line down to the edge -- and a pushed line clears the next card by its whole glyph box
fix: Chat button glows on any background holds with trunk -- dark-only-theme.test.js
feat: one TicketSheet headed by the ticket itself in every view; Staging reads &apos;releasing N tickets&apos; while the runner marks them
feat: chat launcher wears a cyan-300 hairline (new --color-launcher-edge light-dark pair) and an unoffset cyan halo; hover brightens both
refactor: Barry answers about the open ticket
feat: chat forwards context_ref; the foreman reads that ticket (id or short id) from the local store into Barry&apos;s prompt
refactor: Even spacing around stacked ticket names
refactor: ChatPopupCleanup: Barry&apos;s chat grows with the conversation; Chat button
refactor: Even spacing around stacked ticket names
feat: stacked strips centre their shown lines, and a name-only strip pushes the line under the name below the next card
fix: an empty chat opens under 320px -- the About line rides in the header, starters are compact pills, tighter log and composer padding
refactor: Barry brings in a team member
feat: launcher asks Barry the BA about each tab&apos;s topic; the panel&apos;s height follows the conversation up to 80vh
refactor: Barry brings in a team member
feat: the foreman is told it is Barry, who names the member he brings in; an unvoiced reply is streamed and returned as Barry [BA]</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.19.0 — feat: every release phase is timed and rides on the deploy event</title><link>https://xswarm.ai/releases#v20.19.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.19.0</guid><description>feat: every release phase is timed and rides on the deploy event
fix: agent browser runs share two box-wide slots and stop their dev servers; staging failures file one ticket per problem
fix: consolidation also runs when a lane finds nothing it can take, not only between passes
feat: the work-stream notice names the status or &apos;no response&apos;, retries every 3s, and a 401 links to sign in
fix: a fanned release tray gives its padding to the strips, so each stub&apos;s time shows whole under its name
fix: a fanned lane within a ticket of fitting keeps names-only tucks; only a pile beyond that scrolls with full strips
refactor: Compact running cards
feat: a board card is 9.75rem with no SCR/ROW/SEAT row; a lane too tall for names scrolls with full strips
fix: the navbar badge renders the newest release in releases.json when the API has not answered, not the build stamp</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.18.0 — fix: a held or failed release retries on its own after 10 minutes, not only when the next ticket lands</title><link>https://xswarm.ai/releases#v20.18.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.18.0</guid><description>fix: a held or failed release retries on its own after 10 minutes, not only when the next ticket lands
fix: the reaper catches servers orphaned to systemd --user and those of tickets no longer in flight
fix: a coding agent&apos;s own test runs use 4 vitest workers and 2 browsers, not the whole machine&apos;s budget
fix: Release API is an Astro endpoint holds with trunk -- page-area-auth.test.js
feat: sequential-hell, swarm-commander, three-minute-standups and xswarm-overview link to the parallel Claude Code hub
fix: the lane-fill fixture lists tickets in the order a lane draws them, so its last is the one at the lane&apos;s foot
fix: verify Stripe webhook HMAC with crypto.subtle.verify over hex-decoded v1 instead of string !==
feat: an overflowing lane tucks each card by just its overflow share, and drops a tucked card&apos;s print so no line is cut
feat: perf report shows TBT from in-page long tasks beside LCP and CLS per viewport
refactor: Every window bar&apos;s title starts at its left edge and no titl
refactor: Email link changes the requester&apos;s email
fix: the email link updates the account named in its stored token instead of a user_id column that does not exist
fix: delete scripts/deploy-pipeline.js and its test, imported by nothing else
fix: the shared .terminal-title starts its text at the bar&apos;s left (text-align: start), not centred
feat: setup prints the dashboard link as its last line after the summary
feat: /api/release/current is an Astro endpoint sharing the API&apos;s currentRelease
refactor: Workers page passes axe
fix: a stale worker&apos;s vitals dim by ink, not opacity, so every row keeps its contrast
fix: a coding agent is admitted only with room for its own run, not just above earlyoom&apos;s line
feat: perf sweep walks all 21 lighthouse routes via sweep(); signed-in ones get the xswarm_token cookie, or UNMEASURED: no token
feat: the planning queue merges tickets that change the same files into one category ticket
feat: check for Claude Code before sign-in and stop with the install command
refactor: Dashboard routes pass axe
feat: /releases.xml RSS feed from releases.json, advertised in the /releases head
fix: chat room chips show standing-by with a dashed unfilled ring, not text faded under 4.5:1
feat: empty sessions panel links to /docs/getting-started to connect a Claude Code session
feat: Deny on /connect asks confirm(&apos;Deny this machine?&apos;) before posting; Connect unchanged
refactor: Releases page agrees on version
fix: /releases prerenders the newest release version, build stamp only as empty-history fallback</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.17.0 — fix(planner): an owner answer buys one plan; NEEDS_HUMAN/INVALID no longer re-plan past the cap</title><link>https://xswarm.ai/releases#v20.17.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.17.0</guid><description>fix(planner): an owner answer buys one plan; NEEDS_HUMAN/INVALID no longer re-plan past the cap
refactor: Sidebar lists projects by recent work
feat: rankProjects orders by health.last_activity_at (no activity last), visit history only breaks ties
fix: Projects: icons, sessions, recent first holds with trunk -- sidebar-collapsed-projects.test.js
refactor: CLI signs in by email link
refactor: Packed CLI installs and runs
feat: &apos;N sessions&apos; pill beside each project in the projects table, sidebar and user menu; API health carries session_count
fix: move function-spans.mjs into packages/app so the packed CLI no longer imports ../../../../quality
feat: npx xswarm setup signs in by email link (magic link redirecting to the connect page) instead of a GitHub device code
refactor: Chat button in the site&apos;s style
feat: team-chat launcher is a raised pill -- xswarm mark, &quot;Ask the team&quot;, About &lt;project&gt;
fix: drop the &apos;logo never reads npx&apos; test -- the owner wants the logo to type npx xswarm (logo-typing.spec.ts)
feat: navbar logo types between &apos;xSwarm.ai&apos; and &apos;npx xswarm&apos; again, still under reduced motion
feat: footer and Organization sameAs both read lib/social-links.js
refactor: Cards never repeat their column name
feat: cards print their step, version or nothing -- never the column they sit in
refactor: API answered by the site&apos;s own worker
feat: API answered by the site&apos;s own worker
fix: blog mobile asserts the RSS pill, a one-row tag filter and a post in view instead of photographing post content
feat: /build-info.json resolves its release through the in-process /api/release/current; no upstream fetch, check or remembered answer</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.16.0 — fix: Audit cards read cleanly holds with trunk -- no-machine-deploy-path.test.js</title><link>https://xswarm.ai/releases#v20.16.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.16.0</guid><description>fix: Audit cards read cleanly holds with trunk -- no-machine-deploy-path.test.js
fix: A stub&apos;s band and step fit its 6.1rem uncut, its stamp inked in a gutter beside the step
fix: a monitor tick&apos;s commits are pushed after it ends, even when a candidate was in flight
docs(decisions): record the owner&apos;s 2026-10-10 navbar-logo and permission decisions
fix(runner): cap the runner&apos;s own vitest spawns at 4 workers
refactor: Staging shows when the next release goes
feat: Staging&apos;s header names the cadence and the next release -- minutes for continuous, clock time otherwise
refactor: Ratchet holds vitals and bytes per route
feat: Permissions-Policy and COOP on site middleware and _headers; HSTS 2y + preload on site and API
feat: performance ratchet compares per-route transfer and LCP and routes measured, not only the issue count
fix: continuous releases ship when the window closes, not when work stops; every release decision is logged
fix: a fanned lane&apos;s strip is the most it can show with every ticket in view
fix(visual): re-take the 404 firefox baseline that 649c2bed made stale
fix: The xSwarm Way card heading is an h3 like its sibling Traditional AI Approach
feat: optional updatedDate shown as &apos;Updated &lt;date&gt;&apos; in the post dateline; 01-expensive-ai-intern re-dated to its first commit (2026-01-10), after Claude Code&apos;s launch
refactor: Perf report names LCP element and bytes
feat: perf report names the LCP element and bytes by resource type, collected in-page and from response types
feat: fanned strip carries the name and the title&apos;s first two lines; a name too long at 12px narrows instead of being cut
refactor: 12px minimum dashboard text
fix: project monogram letter never renders below --size-caption
feat: sidebar Platform caption and build stamp use --size-caption (12px)
feat: Filter projects box draws the 2 px cyan focus-visible ring the chat fields use
fix(visual): re-take the 404 chromium baseline that 649c2bed made stale
fix: re-take the 404 baselines that 649c2bed left stale
refactor: Navbar Sign In opens the sign-in page
feat: navbar Sign In (desktop and mobile) links to /login instead of GitHub OAuth</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.15.0 — refactor: Plain-language status and errors</title><link>https://xswarm.ai/releases#v20.15.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.15.0</guid><description>refactor: Plain-language status and errors
feat: reports load failure reads &quot;Couldn&apos;t load reports. Try again in a minute.&quot;; dashboard task badges show words (In progress) not API values
feat: Waiting on You counts the signed-in viewer&apos;s requests (admin also owns &apos;chad&apos;); page copy addresses the viewer, not Chad
fix: tag the failed-revoke test @critical so the trunk red check (critical-path project only) runs it and sees it fail
fix: names keep the audit size and 12px floor, a release tray tucks to names only when its time lines cannot all show
fix: a failed revoke puts &quot;Couldn&apos;t revoke {name} — it still works&quot; as a full-width danger-tint line inside that key&apos;s row; the list-level message is gone
fix: a ticket&apos;s name sizes to its width so it never cuts; a fanned stub&apos;s strip carries its time line whole
feat: SoftwareApplication JSON-LD only on the homepage (Layout software prop), with operatingSystem Linux, macOS
fix: ticket names run two to four words, up to 28 letters, so a card says what it is for
feat: /compare page with xSwarm vs by-hand Claude Code table, linked from the homepage Works With section</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.14.0 — fix: an audit proposal states its gain and cost, shown in the question; one without is refused</title><link>https://xswarm.ai/releases#v20.14.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.14.0</guid><description>fix: an audit proposal states its gain and cost, shown in the question; one without is refused
feat: BlogPosting author is the xSwarm Organization for &quot;xSwarm Team&quot; posts, a Person otherwise
fix: delete deploy-lock.js and its test, dead since Workers Builds is the only deploy path
refactor: Empty panels point to the next step
fix: bind email-change token to its requester&apos;s user id; verify refuses any other account
feat: empty Reports links to how reports are made; empty Recent Tasks links to filing a ticket
refactor: Webhook refuses without its secret
fix: billing webhook returns 500 Server misconfiguration when STRIPE_WEBHOOK_SECRET is unset, before any signature check
feat: /guides/parallel-claude-code hub and a How It Works link to it from the homepage
feat: confirm() before revoking a share link or signing out all devices
feat: release headings get id=v&lt;version&gt;, a self-link, and scroll-margin clearing the navbar</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.13.0 — fix(planner): an ASK&apos;s planned event names its question</title><link>https://xswarm.ai/releases#v20.13.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.13.0</guid><description>fix(planner): an ASK&apos;s planned event names its question
fix(runner): cap vitest 5 workers too (VITEST_MAX_WORKERS)
fix: fanned name reaches the frame edge; restore the spec&apos;s visual-order and locator fixes; cards-still lane check allows the lane&apos;s scroll
fix: footer link marker gets empty alt text so each link&apos;s accessible name is its visible label
fix: fanned cards tuck to the name&apos;s line, stub stamp at the foot, serial below the strip
feat: footer Resources column links tutorials and the token cost calculator on every page
fix: stub stamp inked on the band line, fanned name keeps full size, fan capped to keep the name line
refactor: Docs pages end with a next step
feat: docs pages end with raised Previous/Next cards in the hub&apos;s order; order 0 now sorts first
fix: footer drops the internal Strategy link; Legal list gets an accessible name
fix: the planner asks Chad only a real trade-off, with context and each option&apos;s pros and cons
feat: JSON-LD graph gains a SoftwareApplication for xSwarm and LinkedIn in Organization sameAs
fix: staging E2E failures go to the planner, never as a fix-or-flaky question for Chad
feat: blog title uses &apos; 
refactor: Calculator shows its price date
feat: price table caption dated 6 October 2026, Anthropic pricing source link beneath it, closing link to the token economics post</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.12.0 — refactor: Stopped tickets fold into one row</title><link>https://xswarm.ai/releases#v20.12.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.12.0</guid><description>refactor: Stopped tickets fold into one row
refactor: Stopped tickets fold into one row
feat: blocked/failed tickets fold into one &apos;N stopped&apos; row per lane; header counts only those
fix: planner, coding agent and ticket standard require every use of a changed component to be tested</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.11.0 — feat: brief shows a live watchdog alarm, so a drain is seen in minutes, not at the next hourly tick</title><link>https://xswarm.ai/releases#v20.11.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.11.0</guid><description>feat: brief shows a live watchdog alarm, so a drain is seen in minutes, not at the next hourly tick</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.10.0 — fix: watchdog alarms on a project left draining with nothing in flight, instead of restarting the runner</title><link>https://xswarm.ai/releases#v20.10.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.10.0</guid><description>fix: watchdog alarms on a project left draining with nothing in flight, instead of restarting the runner</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.9.0 — fix: CORS test re-fetches the page without zstd, which Playwright cannot decode and Firefox asks for</title><link>https://xswarm.ai/releases#v20.9.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.9.0</guid><description>fix: CORS test re-fetches the page without zstd, which Playwright cannot decode and Firefox asks for</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.8.0 — feat: Clean console on platform config</title><link>https://xswarm.ai/releases#v20.8.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.8.0</guid><description>feat: Clean console on platform config
feat: Clean console on platform config
fix: CORS stub moves from 127.0.0.1 to api-staging.xswarm.ai, which production connect-src allows</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.7.0 — fix(runner): a landed lockfile change restarts the runner, and its start installs what node_modules is behind on</title><link>https://xswarm.ai/releases#v20.7.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.7.0</guid><description>fix(runner): a landed lockfile change restarts the runner, and its start installs what node_modules is behind on
fix: removedLines skips method calls like /re/.test(e) when counting it()/test() cases</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.6.0 — feat: Clean config page when CORS blocks</title><link>https://xswarm.ai/releases#v20.6.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.6.0</guid><description>feat: Clean config page when CORS blocks
fix: grant local network access so dev&apos;s HMR socket survives the routed document carrying production&apos;s connect-src</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.5.0 — feat: Clean config page when CORS blocks</title><link>https://xswarm.ai/releases#v20.5.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.5.0</guid><description>feat: Clean config page when CORS blocks
feat: Clean config page when CORS blocks
fix: CORS stub on api-staging at config-report&apos;s path; dev HMR socket granted local network access under the routed document</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.4.0 — fix(runner): a remainder ticket is blocked by its parent until the parent lands</title><link>https://xswarm.ai/releases#v20.4.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.4.0</guid><description>fix(runner): a remainder ticket is blocked by its parent until the parent lands
refactor: Chat mockup scripts run under CSP
feat: chat mockup thumbnail and tab frame /mockup (own CSP) instead of srcdoc/blob; /mockup as a tab frames itself sandboxed, so scripts run and storage stays shut
feat: Cross-origin E2E checks reach their stub
fix: cross-origin stubs use api-staging.xswarm.ai, an origin connect-src allows, so their fetches reach the stub instead of the CSP
feat: the board sheet frames its mockup from /mockup (own CSP, fragment-borne HTML), not srcdoc, so its scripts run under the enforced policy
fix: project logo fallback via one capture-phase error listener and data-monogram, not an inline onerror the CSP blocks</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.3.0 — fix: where dev serves no CSP, the homepage PostHog checks apply production&apos;s enforced policy from csp.mjs, so the Given holds on every target</title><link>https://xswarm.ai/releases#v20.3.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.3.0</guid><description>fix: where dev serves no CSP, the homepage PostHog checks apply production&apos;s enforced policy from csp.mjs, so the Given holds on every target
fix: the PostHog control test fulfils the homepage without its CSP (header and Astro&apos;s &lt;meta&gt;), so the injected script runs</description><pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.2.0 — fix: override miniflare&apos;s undici to 7.29.1 and source-map-js to ^1.2.2; patch the four nested lockfile entries</title><link>https://xswarm.ai/releases#v20.2.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.2.0</guid><description>fix: override miniflare&apos;s undici to 7.29.1 and source-map-js to ^1.2.2; patch the four nested lockfile entries
fix: Enforced CSP without unsafe-inline holds with trunk -- dashboard-handle-field.test.js
fix: middleware reads import.meta.env?.DEV -- outside Vite (harness-self-test drives it in plain Node) env is undefined
fix: blog Copy Link and calculator submit as listeners, not inline handlers the enforced CSP blocks
feat: enforced CSP via Astro&apos;s built-in hashing; middleware keeps it, adds header-only directives, falls back unhashed
fix: undici ^8.11.2, MCP SDK ^1.31.0, sharp 0.35.5 (override), proxy-addr 2.0.8, source-map-js 1.2.2 — wrangler left alone so currency stays drift
fix(runner): cap pipeline agents at four vitest workers
fix: Daily pair cap counts per source holds with trunk -- project-favicon.test.js
feat: count the daily pair cap per (account, source) so a stranger cannot lock out the owner
feat: AI_LIMITER burst limit (10/60s per user) on setup/plan and babysitter/summaries
refactor: Pair lockout counts per source
refactor: Pair lockout counts per source
refactor: Daily cap on platform AI calls
fix: pair lockout counts failures per (account, hashed source IP) and stores only the IP hash
feat: cap setup/plan and babysitter/summaries at 200 platform AI calls per user per day
fix: /test routes authenticate through the real authMiddleware; /cleanup resets only test accounts
fix: deploy-state report refuses a production host already bound to another account&apos;s project
refactor: Per-purpose signing keys
feat: ws tickets sign and verify with an HKDF-derived ws key (lib/signing-keys.js)</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.1.0 — refactor: GitHub login uses verified email only</title><link>https://xswarm.ai/releases#v20.1.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.1.0</guid><description>refactor: GitHub login uses verified email only
fix: GitHub login takes only a verified email (primary first), else /login?error=no_email
refactor: Only the owner renews a lock
fix: renewLock matches the lock&apos;s request to the signed-in user, so another account&apos;s lock id + claimed_by renews nothing (404)
feat: /connect/pair records the source IP on each failure and refuses (429) an IP with 30 failures across any accounts in the last hour, checked before the account lookup
fix: provision mints only for user ids in PROVISION_USER_IDS; unset refuses all, audited as provision.refused:not_allowed
fix: Preview-link spec re-counts rows each pass, so a repaint from the fresh fetch with fewer rows than the cached paint cannot leave nth(i) pointing past the table
fix: /__open sets xswarm_dev to the token HMAC-signed with TOKEN_SECRET; the preview origin refuses any cookie it did not sign, so a hand-set raw token gets 403 No preview open (http and websocket)
fix: rollup answers hot and commitsRequested only for projects the caller owns -- one projects-left-join-project_commits query scoped to user_id</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v20.0.0 — refactor: Private extensions stay private</title><link>https://xswarm.ai/releases#v20.0.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v20.0.0</guid><description>refactor: Private extensions stay private
fix: releaseLock deletes only a lock whose request belongs to the caller; the route 404s otherwise
fix: Preview-link spec checks the link is on screen sideways, not a subpixel ratio of 1
fix: Disconnect revokes the machine&apos;s keys holds with trunk -- d1-bindings.test.js
fix: enable refuses, and the project list hides, another user&apos;s private extension
feat: link machine keys to their worker (api_keys.worker_id) and revoke by that link on disconnect, falling back to the name for unlinked keys</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.56.0 — refactor: Worker names render as text</title><link>https://xswarm.ai/releases#v19.56.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.56.0</guid><description>refactor: Worker names render as text
refactor: Daily cap on pairing failures
feat: cap pairing failures at 50 per account per 24 h, checked beside the 2-minute lockout
fix: dashboard sets worker names via textContent, not innerHTML; Worker status panel is a named region
fix: refuse change-email to a machine key before any token or email is made</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.55.0 — fix: hold a ticket&apos;s spec to its slowest test, not its summed time</title><link>https://xswarm.ai/releases#v19.55.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.55.0</guid><description>fix: hold a ticket&apos;s spec to its slowest test, not its summed time
fix: logo-size spec reads the document through fetchDecoded, not a bare route.fetch()</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.54.0 — fix: judge oversized images in evaluateBudget, skipping SVGs; drop generic/system font keywords from the family count</title><link>https://xswarm.ai/releases#v19.54.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.54.0</guid><description>fix: judge oversized images in evaluateBudget, skipping SVGs; drop generic/system font keywords from the family count
fix: Perf report shows viewport and load holds with trunk -- task-project-gate.test.js
refactor: Perf report shows viewport and load
feat: perf audit measures each route at 390px mobile and 1350px desktop, and heads the report with the run&apos;s load average
fix: navbar logo carries width/height 48 so it holds its size before CSS loads
refactor: Homepage paints with one stylesheet request
feat: inline the homepage&apos;s page stylesheet so only Layout&apos;s sheet blocks first paint
feat: perf sweep measures every public route lighthouse-audit lists plus /dashboard; unmeasured routes print UNMEASURED and the report counts measured of total</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.53.0 — fix(e2e-repair): a cause folded into live work, or a pixel diff at a new count, is not re-filed</title><link>https://xswarm.ai/releases#v19.53.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.53.0</guid><description>fix(e2e-repair): a cause folded into live work, or a pixel diff at a new count, is not re-filed</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.52.0 — fix: navbar release spec skips as UNMEASURED when the base URL is not localhost or 127.0.0.1</title><link>https://xswarm.ai/releases#v19.52.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.52.0</guid><description>fix: navbar release spec skips as UNMEASURED when the base URL is not localhost or 127.0.0.1</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.51.0 — fix: activity-load-retry waits the 20s hydration budget for the board&apos;s first load, not staging&apos;s 10s expect</title><link>https://xswarm.ai/releases#v19.51.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.51.0</guid><description>fix: activity-load-retry waits the 20s hydration budget for the board&apos;s first load, not staging&apos;s 10s expect
fix: stubs lie flat and the name reserves the stamp&apos;s room with a margin, so nothing of the stamp or the next stub lies on the name&apos;s corners
feat: stub stamp at 12px; fanned stub name at 12px on one clipped line flush to the top, so it fits its ~16px strip
feat: Board shows a sunken &apos;Couldn&apos;t load the work stream.&apos; strip with Retry above its columns when /api/requests fails
refactor: Live release in the navbar&apos;s first paint
feat: server-rendered navbar badge asks /api/release/current before first paint</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.50.0 — refactor: Text fields show the focus ring</title><link>https://xswarm.ai/releases#v19.50.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.50.0</guid><description>refactor: Text fields show the focus ring
feat: API key field and chat composers draw a 2px focus ring on focus-visible</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.49.0 — feat: Ticket and workspace tile text at 12px or more</title><link>https://xswarm.ai/releases#v19.49.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.49.0</guid><description>feat: Ticket and workspace tile text at 12px or more
fix(runner): name node memory holders by tool, not MainThread
refactor: Filter announces its match count
feat: projects count is a role=status live region reading &quot;N projects&quot; for the filtered rows</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.48.0 — refactor: Plain-language load errors</title><link>https://xswarm.ai/releases#v19.48.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.48.0</guid><description>refactor: Plain-language load errors
feat: Activity board load failure says &quot;Couldn&apos;t load the work stream.&quot; with a raised Retry button
fix: Roadmap without past-due phases holds with trunk -- visual-audit-budget.test.js
fix: rename the --cd-pending colour token to --cd-unknown, its own meaning, so no page&apos;s HTML carries the retired word
refactor: Dashboard guide shows the six tabs
fix: dashboard guide lists the six project tabs and the six stage columns from STAGES, drops the public kanban share
fix: roadmap phase headings name status (In Progress / Next / Later) instead of past-due 2025 quarters
fix: resolveRelease answers only a release number — version, else the live release, else null keeps the build stamp
feat: Delete ticket drops confirm(); card leaves at once, Undo notice holds the DELETE 8s
fix: New Project spec fills the name field by its label, so its @critical tests fail on trunk where the trunk check runs only @critical
fix: New Project labels point at their fields with for/id (np-name, np-description, np-repo-url)
refactor: Activity page fits a phone screen
fix: Activity at 320px — 1rem page padding, dvh board height, board controls wrap, tabs never shrink below their label
feat: footer ASCII banner is one labelled img; the glyph &lt;pre&gt; is aria-hidden
fix: expired/used sign-in link specs carry @critical so the trunk red check runs them
feat: shared trapFocus moves focus into request and New Project dialogs, wraps Tab, Escape closes, focus returns to opener
feat: login maps expired_link and invalid_link to messages that say to enter your email for a new link
feat: Proposals load failure says so</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.47.0 — refactor: No pricing on public pages</title><link>https://xswarm.ai/releases#v19.47.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.47.0</guid><description>refactor: No pricing on public pages
fix: /plans removed so it 404s; 404 page and dashboard guide drop pricing and billing copy</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.46.0 — refactor: Failed loads say so, not empty</title><link>https://xswarm.ai/releases#v19.46.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.46.0</guid><description>refactor: Failed loads say so, not empty
fix: failed API keys, documents and proposals loads show the error with Retry instead of the empty state
fix: an agent SIGTERMed by earlyoom (exit 143) names what held the memory</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.45.0 — fix: a socket that drops before any reply marks the pending chat message not sent, and the thinking row is named</title><link>https://xswarm.ai/releases#v19.45.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.45.0</guid><description>fix: a socket that drops before any reply marks the pending chat message not sent, and the thinking row is named</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.44.0 — refactor: Early roster click opens team chat</title><link>https://xswarm.ai/releases#v19.44.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.44.0</guid><description>refactor: Early roster click opens team chat
fix: hold a summons made before any chat listens and hand it to the first subscriber, once
fix: a failed auth lookup answers 503 &apos;Auth check unavailable&apos;, not 401; harness asks /api/auth/me once more</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.43.0 — fix: a staging push Cloudflare never built gets its build started, not a 15-minute wait</title><link>https://xswarm.ai/releases#v19.43.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.43.0</guid><description>fix: a staging push Cloudflare never built gets its build started, not a 15-minute wait</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.42.0 — fix: task file says when intake merged the ticket into a twin, and prints the id</title><link>https://xswarm.ai/releases#v19.42.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.42.0</guid><description>fix: task file says when intake merged the ticket into a twin, and prints the id</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.41.0 — fix: a candidate fix records the failing test it was sent to fix</title><link>https://xswarm.ai/releases#v19.41.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.41.0</guid><description>fix: a candidate fix records the failing test it was sent to fix
fix: neighbour tests run the unit tests that read e2e specs when a spec changed</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.40.0 — fix: Team chat reply shows in Messages log holds with trunk -- affordable-workers.test.js</title><link>https://xswarm.ai/releases#v19.40.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.40.0</guid><description>fix: Team chat reply shows in Messages log holds with trunk -- affordable-workers.test.js</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.39.0 — fix: reasonKey keys a red candidate on its gate verdict, not the merge-queue wrapper</title><link>https://xswarm.ai/releases#v19.39.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.39.0</guid><description>fix: reasonKey keys a red candidate on its gate verdict, not the merge-queue wrapper</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.38.0 — fix: Preview subdomains resolve over HTTPS holds with trunk -- project-favicon.test.js</title><link>https://xswarm.ai/releases#v19.38.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.38.0</guid><description>fix: Preview subdomains resolve over HTTPS holds with trunk -- project-favicon.test.js
feat: setup:preview-zone ensures the proxied *.preview record and advanced cert via node fetch, no new dependencies</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.37.0 — fix: a hard-floor BLOCKED names its files and the fix, and the verdict a retry reads keeps them</title><link>https://xswarm.ai/releases#v19.37.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.37.0</guid><description>fix: a hard-floor BLOCKED names its files and the fix, and the verdict a retry reads keeps them</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.36.0 — fix: tag the billing-hidden scenario @critical, so the trunk red check (critical-path project, @critical only) runs it and sees it fail</title><link>https://xswarm.ai/releases#v19.36.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.36.0</guid><description>fix: tag the billing-hidden scenario @critical, so the trunk red check (critical-path project, @critical only) runs it and sees it fail
feat: /settings/billing redirects to /settings until launch, so no plan, price or Upgrade to Pro reaches a tester; billing-actions and type-scale specs follow the redirect
refactor: Ticket name at the top of the card
feat: a ticket&apos;s name is its top line, the type word gone (paper colour carries it); a fanned stub prints it flush and small enough to fill its strip, stamp moved to the band&apos;s left
fix: stage-audit blames a lockfile change only for the packages it altered
refactor: No billing link in payment emails
fix: drop the Update Billing button and billing link from the payment-failed email</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.35.0 — fix: Board tickets hold still holds with trunk -- affordable-workers.test.js</title><link>https://xswarm.ai/releases#v19.35.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.35.0</guid><description>fix: Board tickets hold still holds with trunk -- affordable-workers.test.js
fix: the workers page no longer scrolls itself on first run: opening the pairing section in code fired the user&apos;s scroll-into-view and slid main under the site nav at 375px
fix: a lane&apos;s fan is worked out from its unfanned pile, so a poll no longer overshoots and glides every card away and back; uncapped, so a Deployed lane of two releases keeps every stub inside it
fix: runtime audit runs only when the lockfile&apos;s runtime packages change, so a dev-only test tool cannot trip it on unrelated live advisories
fix: sidebar build stamp drawn in --color-text-muted instead of 50% green (3.47:1 and 2.44:1 under axe)
feat: declare @axe-core/playwright 4.13.0 (latest) as a packages/web devDependency</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.34.0 — fix: release selection shadow records every E2E failure, not only missed ones, so a whole-suite batch is evidence</title><link>https://xswarm.ai/releases#v19.34.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.34.0</guid><description>fix: release selection shadow records every E2E failure, not only missed ones, so a whole-suite batch is evidence</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.33.0 — fix: coding prompt states the 15s per-spec budget and page.clock for a Playwright-spec ticket</title><link>https://xswarm.ai/releases#v19.33.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.33.0</guid><description>fix: coding prompt states the 15s per-spec budget and page.clock for a Playwright-spec ticket</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.32.0 — fix: passThrough aborts the page request after 20s of a silent origin, isIslandModule matches &lt;Island&gt;.* by basename, lazy-panes page load and click fail by name at 30s</title><link>https://xswarm.ai/releases#v19.32.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.32.0</guid><description>fix: passThrough aborts the page request after 20s of a silent origin, isIslandModule matches &lt;Island&gt;.* by basename, lazy-panes page load and click fail by name at 30s</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.31.0 — fix: release selection shadow chooses no specs for a batch that changed only scripts/, quality/ or .claude/</title><link>https://xswarm.ai/releases#v19.31.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.31.0</guid><description>fix: release selection shadow chooses no specs for a batch that changed only scripts/, quality/ or .claude/</description><pubDate>Fri, 09 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.30.0 — fix: release selection shadow runs only the edited specs for a spec-only batch, not all 222</title><link>https://xswarm.ai/releases#v19.30.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.30.0</guid><description>fix: release selection shadow runs only the edited specs for a spec-only batch, not all 222</description><pubDate>Thu, 08 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.29.0 — feat: Team chat polling E2E settles on staging</title><link>https://xswarm.ai/releases#v19.29.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.29.0</guid><description>feat: Team chat polling E2E settles on staging
fix: Team chat polling test waits up to 2s per second for history reads to reach the route handler, not for network events to settle</description><pubDate>Thu, 08 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.28.0 — fix: stage score never counts a ticket consolidated into another as an unearned advance</title><link>https://xswarm.ai/releases#v19.28.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.28.0</guid><description>fix: stage score never counts a ticket consolidated into another as an unearned advance</description><pubDate>Thu, 08 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.27.0 — fix: stage score does not read a refactor as a move past a failed E2E -- the refactor runs first</title><link>https://xswarm.ai/releases#v19.27.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.27.0</guid><description>fix: stage score does not read a refactor as a move past a failed E2E -- the refactor runs first</description><pubDate>Thu, 08 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.26.0 — fix: a candidate fix pass that throws removes its worktree instead of leaking it into tmpfs</title><link>https://xswarm.ai/releases#v19.26.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.26.0</guid><description>fix: a candidate fix pass that throws removes its worktree instead of leaking it into tmpfs</description><pubDate>Thu, 08 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.25.0 — fix: stage score never counts a no-op closure as an unearned advance</title><link>https://xswarm.ai/releases#v19.25.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.25.0</guid><description>fix: stage score never counts a no-op closure as an unearned advance
fix: stage score reads evidence as the gate does -- an excused red/green is not an unearned advance</description><pubDate>Thu, 08 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.24.0 — fix: brief&apos;s RELEASE FAILING headline names a ship the time limit killed</title><link>https://xswarm.ai/releases#v19.24.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.24.0</guid><description>fix: brief&apos;s RELEASE FAILING headline names a ship the time limit killed</description><pubDate>Thu, 08 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.23.0 — fix: deploy:stage fails in seconds when the staging worker hangs, not after an hour of e2e</title><link>https://xswarm.ai/releases#v19.23.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.23.0</guid><description>fix: deploy:stage fails in seconds when the staging worker hangs, not after an hour of e2e
fix: brief&apos;s contradiction headline no longer counts no-op closures
fix: audit reads a replanned already-delivered ticket as a no-op, not unpublished</description><pubDate>Thu, 08 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.22.0 — fix: a site audit refused by the agent cap is not recorded as its run -- style was pushed back a week (10-07T02:16Z)</title><link>https://xswarm.ai/releases#v19.22.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.22.0</guid><description>fix: a site audit refused by the agent cap is not recorded as its run -- style was pushed back a week (10-07T02:16Z)</description><pubDate>Thu, 08 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.21.0 — feat: Report skill keeps the token off argv</title><link>https://xswarm.ai/releases#v19.21.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.21.0</guid><description>feat: Report skill keeps the token off argv
fix: Chat popup replies are announced holds with trunk -- affordable-workers.test.js
fix: skill, integrations doc and seed script pipe the Authorization header to curl -H @- via printf, keeping the xsk_ token out of argv
feat: team-chat popup message list is a polite live log named Messages, so replies are announced</description><pubDate>Thu, 08 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.20.0 — fix: an audit proposal files as a Planning ticket with an Approve/Decline question on the Overview, not a request nothing plans -- 41 sat unseen 10-02..10-07</title><link>https://xswarm.ai/releases#v19.20.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.20.0</guid><description>fix: an audit proposal files as a Planning ticket with an Approve/Decline question on the Overview, not a request nothing plans -- 41 sat unseen 10-02..10-07</description><pubDate>Thu, 08 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.19.0 — fix: task store waits up to 5s for a lock instead of failing SQLITE_BUSY -- the watchdog&apos;s swallowed busy read became &apos;no report for 701m&apos; and restarted a healthy runner (10:26Z 10-08)</title><link>https://xswarm.ai/releases#v19.19.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.19.0</guid><description>fix: task store waits up to 5s for a lock instead of failing SQLITE_BUSY -- the watchdog&apos;s swallowed busy read became &apos;no report for 701m&apos; and restarted a healthy runner (10:26Z 10-08)</description><pubDate>Thu, 08 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.18.0 — fix: watchdog idle clock runs from when work became ready, not the last start -- replanned tickets after a long idle got the runner restarted seconds later (18:52Z 10-07)</title><link>https://xswarm.ai/releases#v19.18.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.18.0</guid><description>fix: watchdog idle clock runs from when work became ready, not the last start -- replanned tickets after a long idle got the runner restarted seconds later (18:52Z 10-07)</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.17.0 — fix: awaiting-production is announced once when a ticket starts waiting, not on every runner pass (was 187 of 434 run-watch.log lines in an hour)</title><link>https://xswarm.ai/releases#v19.17.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.17.0</guid><description>fix: awaiting-production is announced once when a ticket starts waiting, not on every runner pass (was 187 of 434 run-watch.log lines in an hour)</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.16.0 — fix: harness self-test drives the real middleware with one failed owner check and asserts /dashboard/platform/config is served, not bounced to /dashboard -- red on trunk, green with the retry</title><link>https://xswarm.ai/releases#v19.16.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.16.0</guid><description>fix: harness self-test drives the real middleware with one failed owner check and asserts /dashboard/platform/config is served, not bounced to /dashboard -- red on trunk, green with the retry
refactor: Platform config E2E passes on staging
refactor: Platform config E2E passes on staging
fix: the platform-owner check asks /api/auth/me once more before failing closed, so one blip no longer bounces the owner off /dashboard/platform/config to /dashboard</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.15.0 — fix: Team chat socket wait runs the frozen page clock a second at a time (up to 10s), so the relay&apos;s ws-ticket retry fires instead of the test timing out</title><link>https://xswarm.ai/releases#v19.15.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.15.0</guid><description>fix: Team chat socket wait runs the frozen page clock a second at a time (up to 10s), so the relay&apos;s ws-ticket retry fires instead of the test timing out</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.14.0 — fix: astro build keeps its own Vite cache beside a running dev server, and blog-images-referenced no longer sets -&lt;n&gt;w variants aside now that none exist</title><link>https://xswarm.ai/releases#v19.14.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.14.0</guid><description>fix: astro build keeps its own Vite cache beside a running dev server, and blog-images-referenced no longer sets -&lt;n&gt;w variants aside now that none exist
feat: every blog hero, card and related thumbnail renders through Astro &lt;Picture&gt; from src/assets/blog; the hand-made srcset fallback, responsive-image.js, make-image-variants.mjs and the committed -448w/-896w/-1344w files are gone
fix: the ticket-spec playwright project compares against the chromium baselines, so a screenshot spec System One chooses finds its baseline instead of failing &apos;no baseline&apos;
fix: remove ai-lessons-hero.svg and ai-lessons-hero-placeholder.svg, which no page, layout or post names</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.13.0 — fix: a critical-path fix pass re-runs a failed spec with the run&apos;s whole and own specs, so an untagged spec System One chose is found instead of &apos;No tests found&apos;</title><link>https://xswarm.ai/releases#v19.13.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.13.0</guid><description>fix: a critical-path fix pass re-runs a failed spec with the run&apos;s whole and own specs, so an untagged spec System One chose is found instead of &apos;No tests found&apos;
fix: a critical-path run that never started names playwright&apos;s error instead of sending the fix agent to check @critical tags
fix: POST /test/account answers a failing users insert, createUserToken or api_keys insert with a 500 naming that step and D1&apos;s reason, and deletes the user again if its key never landed
fix: shared kanban trusts X-Api-Mode: local only from a localhost dev server; a deployed site is seeded on apiOriginFor&apos;s host, as test-account.ts signs in
feat: Add-a-worker E2E reads the command
fix: add-a-worker check waits for the command or &quot;Could not get a pairing code just now.&quot;, then reads the 403 refusal body as UNMEASURED and fails anything else naming the route and its answer
fix: a ticket that retries mid-pass is ready again at once, instead of waiting out the other lane&apos;s whole run with its slot empty
fix: dashboard-live settles on page.clock (runFor 4000) after a networkidle wait capped at 3s, then waits for the page&apos;s own requests
fix: Pick spec skips UNMEASURED off localhost, where astro dev&apos;s toolbar does not exist
fix: dev-toolbar-foreman skips UNMEASURED when the base URL is not localhost or 127.0.0.1
fix: signIn in fixtures/session.ts sets the sessionCookie session (machine key off localhost, placeholder on it) and skips UNMEASURED without a key
fix: consoleEntry checks URL.canParse on the URL a CORS line names before parsing it, so an unparseable one is kept rather than thrown
feat: Workspace header E2E stable on staging
feat: Workspace header E2E stable on staging</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.12.0 — fix: the phase reload test waits for the PATCH&apos;s 200 answer carrying phase share before reloading, then gives the reloaded selector the 20 s hydration allowance and checks it is in the viewport</title><link>https://xswarm.ai/releases#v19.12.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.12.0</guid><description>fix: the phase reload test waits for the PATCH&apos;s 200 answer carrying phase share before reloading, then gives the reloaded selector the 20 s hydration allowance and checks it is in the viewport</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.11.0 — fix: the production push retries GitHub&apos;s transient 500 instead of failing the whole ship</title><link>https://xswarm.ai/releases#v19.11.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.11.0</guid><description>fix: the production push retries GitHub&apos;s transient 500 instead of failing the whole ship</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.10.0 — fix: Revoking an API key works in Firefox holds with trunk -- affordable-workers.test.js</title><link>https://xswarm.ai/releases#v19.10.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.10.0</guid><description>fix: Revoking an API key works in Firefox holds with trunk -- affordable-workers.test.js
fix: the revoke spec keeps its @critical tag, so the trunk red check (critical-path project only) runs it and sees it fail
fix: revoking an API key drops its row in place and a failed revoke says so in view with Revoke re-enabled</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.9.0 — fix(board): blocked and failed tickets re-assert on the 6-hour settled sweep, not every 10 minutes</title><link>https://xswarm.ai/releases#v19.9.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.9.0</guid><description>fix(board): blocked and failed tickets re-assert on the 6-hour settled sweep, not every 10 minutes</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.8.0 — fix(runner): a ticket whose push failed is re-dispatched, not resumed into a phantom conflict</title><link>https://xswarm.ai/releases#v19.8.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.8.0</guid><description>fix(runner): a ticket whose push failed is re-dispatched, not resumed into a phantom conflict</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.7.0 — fix: the stub&apos;s SHIPPED stamp is band-sized and nearly flat, centred in the name line</title><link>https://xswarm.ai/releases#v19.7.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.7.0</guid><description>fix: the stub&apos;s SHIPPED stamp is band-sized and nearly flat, centred in the name line
fix(deploy): identical is not skipped until Cloudflare has had 6 minutes to build
fix(runner): the restart waits as long as the ship may run (60m)
fix(runner): ship gets 60 minutes and a killed ship says it was killed
fix(runner): xswarm run exits when the run ends, not when the event loop drains
fix: the report email&apos;s measured table is one fixed-width table
fix(runner): bound the shutdown wait, log runner-stopped, watchdog 75m on a pending restart
refactor: Audit cards: colour per type, grouped by date
feat: audit cards print on their topic&apos;s paper and group under a divider per day
fix: a shown API key is scrolled back into view whenever the account block resizes above it, not only once when it loads
fix: a skipped ticket spec is reported as UNMEASURED, not &apos;ran and did not pass&apos;, and its give-up is revivable once
fix: seed-owner seeds the box key into the local database, so signed-in e2e specs run in worktrees instead of skipping as UNMEASURED
fix: Phone-sized blog images on staging holds with trunk -- silence.test.js
refactor: Phone-sized blog images on staging
fix: blog images are resized at build (cloudflare imageService &apos;compile&apos;) into a per-tree Astro cache, so a phone loads the 448w file, not the full original</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.6.0 — docs: monitor ticks never start a dev server or Playwright run beside live tickets</title><link>https://xswarm.ai/releases#v19.6.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.6.0</guid><description>docs: monitor ticks never start a dev server or Playwright run beside live tickets</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.5.0 — fix: mockup-new-tab is one test on a placeholder session with bounded tab waits, so it runs locally (1.4s) instead of skipping, and a stall names its step</title><link>https://xswarm.ai/releases#v19.5.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.5.0</guid><description>fix: mockup-new-tab is one test on a placeholder session with bounded tab waits, so it runs locally (1.4s) instead of skipping, and a stall names its step
fix: new API key panel scrolls into view when shown and again once account and keys land; raised surface, role=status, Copy never shrinks</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.4.0 — fix: blog-picture spec pins deviceScaleFactor 1 beside its 390x844 viewport so Pixel 5 and iPhone 12 measure a 1x phone</title><link>https://xswarm.ai/releases#v19.4.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.4.0</guid><description>fix: blog-picture spec pins deviceScaleFactor 1 beside its 390x844 viewport so Pixel 5 and iPhone 12 measure a 1x phone</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.3.0 — feat: blog hero and cards render Astro &lt;Picture&gt; from src/assets/blog, glob typed as ImageMetadata so astro check passes; token-economics hand-made variants removed</title><link>https://xswarm.ai/releases#v19.3.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.3.0</guid><description>feat: blog hero and cards render Astro &lt;Picture&gt; from src/assets/blog, glob typed as ImageMetadata so astro check passes; token-economics hand-made variants removed
feat: Worker OS E2E runs on pinned data
refactor: dev-toolbar-foreman.spec opens the toolbar through helpers/dev-toolbar.ts, shared with the Pick spec
feat: Pick button in the dev-toolbar foreman chat outlines the hovered element and writes `selector` name into the box
fix: sitemap lastmod fetches history from origin once in a shallow checkout and drops dates on the shallow boundary
fix: a give-up is revived from failedReason, where the runner writes it; 4e1353c8 read heldReason and revived none
fix: a pipeline give-up whose last failure was the pipeline&apos;s own is revived once</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.2.0 — fix: landed tickets awaiting a release are not ready; brief and the watchdog stop calling the release train idle work</title><link>https://xswarm.ai/releases#v19.2.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.2.0</guid><description>fix: landed tickets awaiting a release are not ready; brief and the watchdog stop calling the release train idle work</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.1.0 — fix: the watchdog does not call a draining runner idle; a pending self-restart no longer gets a release cut in half</title><link>https://xswarm.ai/releases#v19.1.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.1.0</guid><description>fix: the watchdog does not call a draining runner idle; a pending self-restart no longer gets a release cut in half</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v19.0.0 — fix: the watchdog treats a runner&apos;s pending self-restart as draining</title><link>https://xswarm.ai/releases#v19.0.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v19.0.0</guid><description>fix: the watchdog treats a runner&apos;s pending self-restart as draining
fix: currency drift is excused unless the change moved a package now behind; a script edit or a new dependency no longer discards a candidate
docs: monitor ticks verify with the package suite at 4 workers, never the full gate beside live tickets
fix: Narrow board folds Planning, Deployed holds with trunk -- board-columns.test.js
refactor: Narrow board folds Planning, Deployed
feat: from 1024 to 1279px the board folds Planning and Deployed into summary buttons that open them; a lane fans its tickets to fit its height
fix: re-take what-is-xswarm and freelancer chromium/firefox/Mobile Chrome linux baselines from this build; the old ones predate 11d07011&apos;s TutorialLayout header
refactor: Clef vs Jev comparison report
feat: GET /api/decide/compare, behind adminMiddleware, groups the last day&apos;s Jev-answered shadow rows by node into Clef/Clef-flash agreement and nearest-rank median/p95 per provider
feat: an audit report compares against the last scored run -- score change in the header, fixed/new/still-open sections; the site-audit event carries score and findings
refactor: Clef answers System One in shadow
feat: /api/decide asks Clef and Clef-flash through the Workers AI binding beside Jev, each under the 1500 ms limit, and logs every provider&apos;s outcome and latency to decision_log.shadow
feat: the ticket sheet shows &quot;Filed by the &lt;audit&gt; audit · &lt;date&gt;&quot;, linked to the audit&apos;s report
feat: an audit records which audit, date and report filed each ticket, and the board push carries it as test_results.filedBy
refactor: Pick a page element into the dev chat
feat: pickElement — capture-phase outline, swallowed click answers selector &quot;text&quot; svelte source file, Escape answers null
fix: a stub&apos;s stamp sits at the end of its name line, clear of the band&apos;s time and the title
fix: a ticket&apos;s name keeps its descenders under a 0.15em pad and ends in an ellipsis, not mid-letter
fix: stacked board lanes take their tickets&apos; height and the board scrolls, so a narrow lane no longer slices its cards</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v18.1.0 — fix: brief and the monitor see the pm2 runner; dev timers carry ~/.local/bin</title><link>https://xswarm.ai/releases#v18.1.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v18.1.0</guid><description>fix: brief and the monitor see the pm2 runner; dev timers carry ~/.local/bin
feat: audit summary reads the HEAD commit once and names it after the score, omitted when git cannot read it
feat: scorecard line with no landed finding states the spend: &quot;160k tokens, no landed finding yet&quot;</description><pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v18.0.0 — refactor: Audit quality scorecard</title><link>https://xswarm.ai/releases#v18.0.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v18.0.0</guid><description>refactor: Audit quality scorecard
fix: Running audits on the Audits column holds with trunk -- d1-bindings.test.js
feat: every audit run publishes an &quot;Audit quality&quot; report tracing each auditor&apos;s 30-day tickets to landed, already done, duplicate or declined
refactor: Running audits on the Audits column
feat: box audit sweep reports audit-start/audit-finish via api-client, wired from the rollup shipper
feat: running_audits table, audit-start/audit-finish routes, running on GET /api/project-quality/:id
feat: throttle magic-link requests with the MAGIC_LINK_LIMITER rate-limiting binding instead of counting magic_link_tokens rows
refactor: Path-form preview for the owner only
fix: Audit run kept as a record holds with trunk -- d1-bindings.test.js
feat: path-form /dev/&lt;token&gt;/ checks the owner&apos;s session on every request before asking the box
refactor: Audit run kept as a record
feat: audit_runs table and /api/projects/:id/audit-runs POST+GET, owner-only
refactor: Audit report shows time, tokens, commit
feat: the audit report reads the agent&apos;s duration and tokens and the repo&apos;s HEAD under its score, unmeasured when absent
refactor: Preview only for the account&apos;s people
fix: Preview signed in as the owner holds with trunk -- installed-engines.test.js
refactor: Preview signed in as the owner
feat: /__open redeems a preview link only after xswarm.ai confirms the owner&apos;s session
feat: seed-owner leaves the local sign-in as .xswarm/local/preview-cookie; the foreman adds it to preview requests with no session
fix: no lane can take a runner pass down; a merge that throws is a red candidate</description><pubDate>Tue, 06 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.38.0 — fix: the planner reads plans written in markdown, and keeps the tail of one it cannot read</title><link>https://xswarm.ai/releases#v17.38.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.38.0</guid><description>fix: the planner reads plans written in markdown, and keeps the tail of one it cannot read
fix: a merge candidate&apos;s fix pass that cannot run fails that candidate, not the runner
fix: the watchdog leaves a silent runner alone while its tickets are in flight
fix: the release suite leaves 12G for coding tickets that start mid-run</description><pubDate>Tue, 06 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.37.0 — fix: a dead agent fails its own call instead of crashing the runner; a killed monitor tick stashes its edits</title><link>https://xswarm.ai/releases#v17.37.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.37.0</guid><description>fix: a dead agent fails its own call instead of crashing the runner; a killed monitor tick stashes its edits
fix: task worktrees no longer inherit the integrator role; npm advisories hold a release only when the lockfile changed
feat: Reports scorecard rows read tokens per landed finding, or &quot;no landed findings yet&quot;
refactor: Unstable usability score flagged
feat: report card flags a score that spread 10+ points across reruns on one commit
fix: Dev preview opens signed in as the owner holds with trunk -- project-favicon.test.js
fix: Dev preview opens signed in as the owner holds with trunk -- page-area-auth.test.js
fix: a provisioned dev server answers /test/* in-process and the kanban spec seeds the API its page reads
feat: dev server seeds its local D1 with the owner and /dev-login signs in against its own API
feat: Audits lane after Deployed at &gt;=1600px -- audit reports as Ticket thumbs stamped Audit (topic, score, finding, date), opening the report
fix: site audits run beside the lanes in the support pool, never in a coding slot
feat: theme.css and global.css are dark-only -- every light-dark() keeps its dark half, [data-theme] rules gone, :root is color-scheme: dark; --cd-ink-faint lifted to #96a0ad to clear 4.5:1 on surface-hover
feat: production names DEV_PREVIEW_ZONE preview.xswarm.ai and routes *.preview.xswarm.ai to the worker
feat: System One picks from every spec and its choices run whole beside the @critical core
fix: a ticket&apos;s own e2e spec runs whole, so new specs stop joining @critical
fix: monitor report reads its mail settings from the repo .env, not $HOME
fix: System One judges migrations and worker config instead of running all 194 specs
feat: hourly xswarm-dev improvement tick on Boss with a measured report email
fix: runner survives reboots under pm2, watchdog restarts a stalled runner, lock reclaims across boots</description><pubDate>Tue, 06 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.36.0 — refactor: Clean /dashboard/workers E2E on staging</title><link>https://xswarm.ai/releases#v17.36.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.36.0</guid><description>refactor: Clean /dashboard/workers E2E on staging
fix: renders-clean check annotates the machine-key pairing-code 403 UNMEASURED instead of failing /dashboard/workers
fix: No braces advisory in the audit holds with trunk -- fleet-worker-names.test.js
refactor: No braces advisory in the audit
fix: astro isNode workerd guard moves from patch-package to a Vite plugin, dropping braces&apos; patch-package chain
fix: No high advisories at runtime holds with trunk -- entry.test.js
fix: release E2E restores @playwright/test before an engine whose install vanished, and re-runs once when it vanished mid-run
fix: vendored http-cache-semantics declares no mocha devDependency, so currency no longer counts it unresolvable
fix: production tree audits clean of high advisories</description><pubDate>Sat, 03 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.35.0 — fix: environment tabs select on press, so a layout shift between mousedown and mouseup no longer leaves Dev showing</title><link>https://xswarm.ai/releases#v17.35.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.35.0</guid><description>fix: environment tabs select on press, so a layout shift between mousedown and mouseup no longer leaves Dev showing
fix: install-key and connect approve refuse an xsk_ key with 403 Session required</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.34.0 — fix: relay session tokens go through validateUserToken, honouring logout and logout-all</title><link>https://xswarm.ai/releases#v17.34.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.34.0</guid><description>fix: relay session tokens go through validateUserToken, honouring logout and logout-all</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.33.0 — fix: POST /connect/pairing-code refuses a machine key with 403, as GET does</title><link>https://xswarm.ai/releases#v17.33.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.33.0</guid><description>fix: POST /connect/pairing-code refuses a machine key with 403, as GET does
fix: GET /connect/pairing-code refuses a machine key with 403, as POST /keys does
refactor: Agents never rewrite the shared install
refactor: Agents never rewrite the shared install
feat: gate denies npm/pnpm/yarn/playwright installs inside a task worktree, whose node_modules is the main checkout&apos;s</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.32.0 — feat: mint dev preview links on a per-project origin under DEV_PREVIEW_ZONE; refuse another project&apos;s token there</title><link>https://xswarm.ai/releases#v17.32.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.32.0</guid><description>feat: mint dev preview links on a per-project origin under DEV_PREVIEW_ZONE; refuse another project&apos;s token there</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.31.0 — fix: record a GitHub installation only when its account id matches the caller&apos;s OAuth github_id, not the login</title><link>https://xswarm.ai/releases#v17.31.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.31.0</guid><description>fix: record a GitHub installation only when its account id matches the caller&apos;s OAuth github_id, not the login
fix: /test/seed 404s before writing when a task or worker names a project the caller does not own
fix: session upserts only update the caller&apos;s own row (setWhere user_id)
fix: /health looks up the release by sha AND RELEASE_PROJECT_ID, so another project&apos;s row under the live sha is never trusted
refactor: Blockers never reveal others&apos; tickets
fix: blockers check task ownership on create and join tickets only through the caller&apos;s projects</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.30.0 — refactor: Redirected route reported unmeasured</title><link>https://xswarm.ai/releases#v17.30.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.30.0</guid><description>refactor: Redirected route reported unmeasured
fix: routeSummary reports a route that landed on another path as unmeasured: redirected to &lt;path&gt;</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.29.0 — fix: polling test counts only the routed history URL, and a failed request as settled</title><link>https://xswarm.ai/releases#v17.29.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.29.0</guid><description>fix: polling test counts only the routed history URL, and a failed request as settled
fix: one board role=status announces a step change whole; ticket step line and NOW strip no longer aria-live
feat: board is a named region so its live regions can be counted; step line and NOW strip still aria-live</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.28.0 — fix: unsent ticket message shows &quot;Couldn&apos;t send — try again&quot; under the composer; draft kept, notice clears on typing or a good send</title><link>https://xswarm.ai/releases#v17.28.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.28.0</guid><description>fix: unsent ticket message shows &quot;Couldn&apos;t send — try again&quot; under the composer; draft kept, notice clears on typing or a good send</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.27.0 — fix: environment box reads Couldn&apos;t load status when the project request fails</title><link>https://xswarm.ai/releases#v17.27.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.27.0</guid><description>fix: environment box reads Couldn&apos;t load status when the project request fails
fix: live caption, card meta and voice settings text use text-quiet/secondary/muted tokens instead of 30-50% green and cyan</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.26.0 — fix: voice settings API key caption becomes a &lt;label for&gt; its input, drawn uppercase as before</title><link>https://xswarm.ai/releases#v17.26.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.26.0</guid><description>fix: voice settings API key caption becomes a &lt;label for&gt; its input, drawn uppercase as before</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.25.0 — fix: ticket shelf tracks its load phase -- Loading tickets… until the first answer, a warning-tint Couldn&apos;t load tickets — retrying note on a refused load above the tickets it kept, No tickets yet only on an empty answer</title><link>https://xswarm.ai/releases#v17.25.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.25.0</guid><description>fix: ticket shelf tracks its load phase -- Loading tickets… until the first answer, a warning-tint Couldn&apos;t load tickets — retrying note on a refused load above the tickets it kept, No tickets yet only on an empty answer</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.24.0 — fix: Voice select gets a 2px cyan focus-visible ring and a name; panel follows its gear so Tab reaches it</title><link>https://xswarm.ai/releases#v17.24.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.24.0</guid><description>fix: Voice select gets a 2px cyan focus-visible ring and a name; panel follows its gear so Tab reaches it</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.23.0 — fix: No subscription talk on Account holds with trunk -- settings-usage.spec.ts</title><link>https://xswarm.ai/releases#v17.23.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.23.0</guid><description>fix: No subscription talk on Account holds with trunk -- settings-usage.spec.ts
fix: No subscription talk on Account holds with trunk -- e2e-route-fetch-guard.test.js
fix: /settings drops the Subscription section, Trial, Billing link and &apos;/ 1&apos; limit; Sessions moves under Usage so it sits above the fold</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.22.0 — feat: Chat states E2E loads on staging</title><link>https://xswarm.ai/releases#v17.22.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.22.0</guid><description>feat: Chat states E2E loads on staging
fix: chat-states open() asserts Barry&apos;s greeting and Online sit inside the viewport, not merely visible
fix: chat-states spec stubs /build-info.json with the page&apos;s own data-build-sha so the auto-update reload cannot abort it on staging</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.21.0 — fix: live grid shows Loading until the page announces, and a failed fetch shows Couldn&apos;t load + Retry (the page&apos;s own loadProjects)</title><link>https://xswarm.ai/releases#v17.21.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.21.0</guid><description>fix: live grid shows Loading until the page announces, and a failed fetch shows Couldn&apos;t load + Retry (the page&apos;s own loadProjects)</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.20.0 — fix: blog body headings demoted to h2 in seven posts; welcome drops its body h1 that repeated the title</title><link>https://xswarm.ai/releases#v17.20.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.20.0</guid><description>fix: blog body headings demoted to h2 in seven posts; welcome drops its body h1 that repeated the title</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.19.0 — fix: Recent Tasks spec compares the row&apos;s position across a held pairing-code load instead of sampling 2.5s with 200ms on every API</title><link>https://xswarm.ai/releases#v17.19.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.19.0</guid><description>fix: Recent Tasks spec compares the row&apos;s position across a held pairing-code load instead of sampling 2.5s with 200ms on every API
fix: Recent Tasks row opens tickets in Firefox holds with trunk -- affordable-workers.test.js, critical-specs-url-waits.test.js
fix: pairing panel keeps its ready layout while loading and Recent Tasks rows wait for the first-run panel, so the row holds still under the click</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.18.0 — fix: demote AI lessons body heading to h2 so the layout title is the only h1</title><link>https://xswarm.ai/releases#v17.18.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.18.0</guid><description>fix: demote AI lessons body heading to h2 so the layout title is the only h1</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.17.0 — fix: sitemap filter drops /test/crash (404 in prod) and /plans (owner keeps it hidden)</title><link>https://xswarm.ai/releases#v17.17.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.17.0</guid><description>fix: sitemap filter drops /test/crash (404 in prod) and /plans (owner keeps it hidden)</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.16.0 — fix: Recent Tasks link E2E fits staging holds with trunk -- critical-specs-url-waits.test.js</title><link>https://xswarm.ai/releases#v17.16.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.16.0</guid><description>fix: Recent Tasks link E2E fits staging holds with trunk -- critical-specs-url-waits.test.js
fix: Recent Tasks spec waits for the tickets URL to commit with no per-call cap, bounded by testTimeout (60 s+ on staging)</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.15.0 — fix: waitlist spec waits 25 s for hydration and 20 s for the POST, past the 18.6 s staging step; the 429 alert must be visible</title><link>https://xswarm.ai/releases#v17.15.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.15.0</guid><description>fix: waitlist spec waits 25 s for hydration and 20 s for the POST, past the 18.6 s staging step; the 429 alert must be visible</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.14.0 — refactor: Worker cards survive a failed refresh</title><link>https://xswarm.ai/releases#v17.14.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.14.0</guid><description>refactor: Worker cards survive a failed refresh
fix: a failed workers refresh shows a status line above the cards instead of wiping them</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.13.0 — refactor: Page crash read as a host fault</title><link>https://xswarm.ai/releases#v17.13.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.13.0</guid><description>refactor: Page crash read as a host fault
feat: renderer crash triaged as a host fault, logged by deploy-prod and never filed
fix: decode a stored base64 icon with an indexed loop, not a per-character mapper</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.12.0 — fix: sidebar and nav-label specs wait 20 s, past the staging step, instead of 10-15 s</title><link>https://xswarm.ai/releases#v17.12.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.12.0</guid><description>fix: sidebar and nav-label specs wait 20 s, past the staging step, instead of 10-15 s</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.11.0 — refactor: Ticket retry E2E fits staging latency</title><link>https://xswarm.ai/releases#v17.11.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.11.0</guid><description>refactor: Ticket retry E2E fits staging latency</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.10.0 — fix: a staging build that cannot deploy stops the release at once, named, and a failing streak shows in brief</title><link>https://xswarm.ai/releases#v17.10.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.10.0</guid><description>fix: a staging build that cannot deploy stops the release at once, named, and a failing streak shows in brief
fix: an agent that leaves a background child behind still finishes and frees its slot
refactor: Report opens under its project on staging
fix: e2e red observer calls a tests-only branch spec-only instead of observing it on trunk
fix: short phones keep Worker Status and its Copy command while no runner is online
fix: helpers/posthog visitHomepage opens / at domcontentloaded, waits for the h1, settles 1.5s, and reports PostHog requests and window.posthog
fix: the homepage injection reads the page through fetchDecoded, not a bare route.fetch().text() that a zstd-honouring staging would hand raw bytes
feat: No-PostHog homepage E2E fits staging
fix: homepage no-PostHog check opens / at domcontentloaded, waits for the h1, then settles 1.5s instead of waiting for &apos;load&apos;
fix: env-screenshot waits up to 45s for hydration (staging takes that long) and declares a 60s test limit
refactor: Foreman chat in the dev toolbar
refactor: Foreman chat in the dev toolbar
feat: xswarm foreman dev toolbar app -- a Foreman dialog bottom-right that posts the question with the page path to the project&apos;s chat; the integration adds it under astro dev only
feat: favicon bytes go to the ICONS R2 bucket (data null in project_icons), legacy base64 rows still serve; production web worker binds xswarm-icons
fix: proxied workspace specs call proxiedTimeout(), tickets-retry drops its 5s cap and checks two retries, and all sign in with sessionCookie (placeholder on localhost, machine key on staging)
fix: test-account fixture mints one account per worker and signs every test in (placeholder on localhost, UNMEASURED skip on production)
fix: Dev-server warm E2E signs in on staging holds with trunk -- e2e-route-fetch-guard.test.js
fix: dev-server warm stub takes its cookie from sessionCookie (machine key off localhost) and records where passThrough&apos;s redirects ended, so a staging bounce to /login is seen; self-tests prove both and the no-key UNMEASURED skip
fix: dev-server warm spec signs in with the machine key from ~/.xswarm/config.json off localhost, placeholder only on it; no key skips UNMEASURED
fix: Report E2E signs in for real holds with trunk -- auto-update.spec.ts
feat: deploy screenshot bytes go to the SCREENSHOTS R2 bucket, D1 row keeps metadata only; binding added for production and staging
fix: stubApiKeepSession in fixtures/session.ts stubs /api/* but keeps /api/auth/me real and asserts the session is real; the three report specs use it
fix: project-reports, document-front-matter and audit-report-outcomes sign in through the real authed fixture, not the e2e-placeholder cookie
fix: a mouseleave the pointer did not make keeps the persona card, re-placed on the avatar; the next real move closes it
fix: persona-card hovers Barry&apos;s avatar once the late panels have landed and it holds still, not while it is moving
fix: staging&apos;s 45s first-render budget lives in tests/e2e/fixtures/hydration.ts and panel-prose-readability imports it
fix: ticket button and panel hydration budget 20s -&gt; 45s in panel-prose-readability, keeping the mocked API
fix: Team Chat launcher toPass budget 20s -&gt; 40s in welcome, frame and auto-update specs, under the 60s staging test timeout
feat: E2E preflight probes each address of a remote target on its port (3s), names the silent ones once as skipped and pins chromium to one that answers via XSWARM_E2E_HOST_RULES -&gt; --host-resolver-rules; a localhost target (the push gate) does no lookup or probe
fix: only production drops a session /api/auth/me refuses; staging renders the placeholder session E2E specs enter with
feat: POST/GET /api/shots stores pasted screenshots in the SHOTS R2 bucket at tmp/&lt;id&gt;, owner-only via project_id in customMetadata; SHOTS bound for production and staging
feat: dev host carries the preview page&apos;s WebSockets to the dev server through the relay room (ws_open/ws_msg/ws_close)
fix: CORS test also asserts the page records no failed API call of its own (Scenario 1)
feat: test-account fixture mints a staging user token via POST /test/account on apiOriginFor(host), skips UNMEASURED on 403
fix: Auto-update E2E reads zstd staging holds with trunk -- e2e-route-fetch-guard.test.js
refactor: Auto-update E2E reads zstd staging
fix: auto-update reads the page document through fetchDecoded (no zstd); route-fetch guard flags .text() too
fix: release engines keep the 8-worker cap; staging chromium launches with --disable-dev-shm-usage (localhost critical path untouched)
feat: staging trigger uploads dist/server/wrangler.json; ci-build-web stops writing wrangler.xswarm-web-staging.json
refactor: Native worker entry for DO and cron
feat: wrangler main = checked-in src/worker.ts re-exporting @astrojs/cloudflare/handler fetch, api scheduled, ProjectRoom; drop esbuild wrapper</description><pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.9.0 — fix: /api/auth/ws-ticket always proxies to the API the browser&apos;s socket dials</title><link>https://xswarm.ai/releases#v17.9.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.9.0</guid><description>fix: /api/auth/ws-ticket always proxies to the API the browser&apos;s socket dials
feat: GET /api/projects/:id advertises screenshot_url only for a screenshot uploaded within 7 days
feat: GET screenshot answers 404 No screenshot once uploaded_at is over 7 days old
feat: ci-build-api applies D1 migrations before wrangler deploy and exits 1 if they fail
refactor: API calls via a service binding
feat: unprovisioned web worker calls the API through the API service binding, public host only without one
feat: staging deploys the config CLOUDFLARE_ENV=staging resolved; emit-env-config.mjs deleted
fix: Team Chat popup specs sign in with the machine key on a deployed target, so staging shows the popup instead of sign-in
fix: Settings text on the type scale holds with trunk -- chat-mockups.spec.ts, sign-out-all.spec.ts
refactor: Config page never stuck on loading
fix: each environment&apos;s config-report gives up after 8s and reads unmeasured — unreachable, so the page never sits on its loading line
refactor: Runner repairs a stray core.worktree
feat: each runner tick unsets a stray core.worktree and logs worktree-repaired; brief&apos;s repo line names it
feat: PairingCode&apos;s Copy, single-use and retry buttons render through the shared deck Button (Copy as primary, like Studio ↗); Button padding .15rem so Firefox draws &lt;a&gt; and &lt;button&gt; alike
feat: TutorialLayout owns the tutorial breadcrumb and header; what-is-xswarm and freelancer use it
feat: a pasted image in the team chat uploads to /api/shots and inserts [shot:&lt;id&gt;] at the cursor
fix: local dev /api proxy gives up on staging after 3s without headers -- a dead IPv6 route left the navbar&apos;s anonymous /api/auth/me probe pending, so Sign In never showed and auth, harness and visual critical specs timed out
fix: critical-path timeouts were this host&apos;s network, not this change
refactor: Settings text on the type scale
fix: middleware&apos;s /api/auth/me check times out after 3s -- on a host whose IPv6 route is dead the SSR fetch to api-staging never returned, so every signed-in page (and every e2e spec on one) hung
feat: settings, billing and the voice SettingsPanel draw every font-size from --size-* (one-off .55-.9rem, 18/24/30/36px gone)
feat: the --size-* type scale (12/14/16/20/28/40) in theme.css, as in #c626a887
refactor: Studio and preview share one button
fix: shared-button spec reads settled styles on a deterministic page
feat: one Button.svelte for the studio and workspace preview toolbars</description><pubDate>Thu, 01 Oct 2026 12:00:00 GMT</pubDate></item><item><title>v17.8.0 — feat: blog purple drawn from --brand-secondary: rgba(139,92,246,a) -&gt; rgb(var(--brand-secondary) / a), mermaid reads the token at runtime</title><link>https://xswarm.ai/releases#v17.8.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.8.0</guid><description>feat: blog purple drawn from --brand-secondary: rgba(139,92,246,a) -&gt; rgb(var(--brand-secondary) / a), mermaid reads the token at runtime
fix: auto-update spec stamps each document with the sha being served, so the reloaded tab is the new build and does not reload again mid-teardown
refactor: Open tabs pick up a new release
feat: an empty focused field no longer holds the auto-reload; unsent text shows a Reload bar from Navbar via onHeld
fix: Dev preview serves the session tree holds with trunk -- silence.test.js
refactor: Dev preview serves the session tree
feat: the dev preview starts in .xswarm/session.json&apos;s worktree, and a request that finds the tree changed stops it and starts it there
feat: an ended UI session is filed as one UI ticket on its branch, its requests one per line; POST /api/tasks stores branch_name
feat: a chat message&apos;s session sends the foreman into that worktree with Edit/Write; an edit there files no ticket and says where it went</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v17.7.0 — fix: UI iteration session ships one UI ticket holds with trunk -- planner-agent-slot.test.js</title><link>https://xswarm.ai/releases#v17.7.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.7.0</guid><description>fix: UI iteration session ships one UI ticket holds with trunk -- planner-agent-slot.test.js
refactor: UI iteration session ships one UI ticket
feat: foreman edits the open iteration session&apos;s worktree with Edit/Write, reads the main checkout otherwise
refactor: Rest of dashboard on spacing scale
feat: phone menu bar pads --space-2/--space-4, its button --space-2/--space-3 with a --space-2 icon gap
feat: name the phone menu bar as a toolbar so it is reachable by role; padding still off-grid (10px)
feat: 4px --space-* scale in theme.css; dashboard sidebar recent rows, divider, collapse and build stamp use it
feat: a page that throws renders src/pages/500.astro in the site layout instead of the middleware&apos;s bare string; /test/crash proves it
fix: a local dev server renders the E2E placeholder session instead of bouncing it to /login on the staging API&apos;s 401
feat: Staging cards use the thumb variant, and board-card-face checks its face in one page load, not four, to keep the critical path under 90s</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v17.6.0 — fix: a session /api/auth/me refuses with 401 is dropped and redirected to /login, instead of opening the dashboard shell</title><link>https://xswarm.ai/releases#v17.6.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.6.0</guid><description>fix: a session /api/auth/me refuses with 401 is dropped and redirected to /login, instead of opening the dashboard shell</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v17.5.0 — fix: the dev preview loads again -- the box&apos;s proxy stops passing the browser&apos;s Sec-Fetch headers to the dev server</title><link>https://xswarm.ai/releases#v17.5.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.5.0</guid><description>fix: the dev preview loads again -- the box&apos;s proxy stops passing the browser&apos;s Sec-Fetch headers to the dev server</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v17.4.0 — refactor: Ticket names show their full capitals</title><link>https://xswarm.ai/releases#v17.4.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.4.0</guid><description>refactor: Ticket names show their full capitals
fix: a ticket name with an enlarged capital gets a quarter em of top room, so its clipped box no longer shaves the capital</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v17.3.0 — feat: System One chooses the specs each ticket&apos;s critical path runs</title><link>https://xswarm.ai/releases#v17.3.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.3.0</guid><description>feat: System One chooses the specs each ticket&apos;s critical path runs
refactor: Instant production rollback
feat: a failed production probe runs wrangler rollback to the last verified-good worker version, pushing the sha back only when none is on record</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v17.2.0 — fix: every per-engine release E2E report is git-ignored, so releases stop holding on an untracked report</title><link>https://xswarm.ai/releases#v17.2.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.2.0</guid><description>fix: every per-engine release E2E report is git-ignored, so releases stop holding on an untracked report
fix: a board ticket whose criteria are written as Gherkin lines is imported, not declined for ever
docs: owner decision -- a UI change the owner asks for is filed in the same reply at owner priority
refactor: Staging timeouts name where time went
fix: a step-less timeout with no route quotes Playwright&apos;s message with its test count instead of naming routes nobody saw
feat: read each timed-out result&apos;s slowest top-level step and title the timeout by it — hooks as starved browsers, anything else as slow staging
fix: Workspace specs assert the Workspace View button visible, and dev-preview asserts its frame visible not merely attached
refactor: Signed-in E2E setup never hangs
refactor: Signed-in E2E setup never hangs
fix: authed fixture probes /api/auth/me only for local targets, bounded at 5s
refactor: Test timeouts named by triage
fix: timeout cause matches Playwright&apos;s &apos;Test timeout of Nms exceeded.&apos;
refactor: Clean console on platform config
fix: report-only CSP names https://static.cloudflareinsights.com in script-src, so the beacon Cloudflare injects no longer violates it (a Firefox console error on /dashboard/platform/config); the test stubs only its own bare beacon copy, since an empty answer to Cloudflare&apos;s SRI-pinned tag logged an integrity error
fix: failed API calls read &quot;status path&quot;, so this origin&apos;s config-report refusal is &quot;401 /api/admin/config-report&quot;
feat: deploy-prod runs each engine alone, workers from MemAvailable read as it starts, triage over every engine&apos;s report
fix: recent-tasks spec waits for the tickets URL to commit (not load) within 10_000 and checks the &apos;Alpha&apos; heading
fix: proxied specs take their 90s budget from helpers/route-json proxiedTimeout(), so on trunk the spec fails
fix: PairingCode draws a &quot;$&quot; prompt before the command, outside the &lt;code&gt;, so the line reads &quot;$ npx xswarm &lt;code&gt;&quot; while Copy and a selection still carry the command alone
fix: mark the three route.fetch-proxied workspace specs test.slow() so staging gets 90s+ instead of 30s
fix: restore the ticket&apos;s spec over the trunk copy the pipeline put back, plus a session-free consoleEntry check — the other environment&apos;s config-report 401 is dropped, a 500 from either origin is kept and named — so it fails on trunk even where the server refuses the session
refactor: Clean platform config staging E2E
refactor: Worker pairing command E2E reads the code
fix: consoleEntry excuses only the other environment&apos;s config-report refusal (401 or no status), not its 500, and names a cross-origin resource by origin; Scenario 1 stubs its own 200 and the nav project list so the self-test spec sums to ~10s locally (was 36s)
fix: opening &apos;Add a new worker machine&apos; below the worker cards scrolls the section into view, so the pairing command is on screen
feat: the magic-link email carries a validated same-site ?redirect= and verify sends the user there, falling back to /dashboard
fix: Overview&apos;s Next line drops the internal Work Harness link; Getting Started is the only onward step
feat: an audit marked guide keeps its instrument&apos;s whole output and publishes it as the report&apos;s Style guide section; the prompt still gets the first 12,000 characters
feat: fleet-stamp-add writes scripts/build-stamp.mjs into a project and runs it first in prebuild
fix: re-take tutorials-mobile and about-mobile firefox-linux baselines from this build; the 2026-09-15 ones predate the alpha-invite TL;DR and the Open Alpha eyebrow</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v17.1.0 — feat: staging e2e floor 60000ms per test and 10000ms per expect; localhost stays 30000ms</title><link>https://xswarm.ai/releases#v17.1.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.1.0</guid><description>feat: staging e2e floor 60000ms per test and 10000ms per expect; localhost stays 30000ms</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v17.0.0 — fix: Staging E2E timeout fits latency holds with trunk -- visual-audit-timing.test.js</title><link>https://xswarm.ai/releases#v17.0.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v17.0.0</guid><description>fix: Staging E2E timeout fits latency holds with trunk -- visual-audit-timing.test.js
feat: playwright timeout from measured staging step time (x1.5, next 5000ms, floor 30000)
feat: cap a remote Playwright run at 8 workers, so memory taken mid-run no longer crashes Chromium
fix: team-chat-popup history/no-double/project-name/stream read projects through listProjects instead of a bare GET .json()
fix: scope conflicts match only locks whose request is in the same project; claim uses its request&apos;s project, scope-check requires an owned ?project=
feat: POST /api/auth/logout-all sets users.sessions_valid_after (migration 0028); auth refuses sessions issued before it; caller gets a fresh session cookie</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v16.12.0 — fix: Sitemap dates for blog posts and docs holds with trunk -- visual.spec.ts</title><link>https://xswarm.ai/releases#v16.12.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v16.12.0</guid><description>fix: Sitemap dates for blog posts and docs holds with trunk -- visual.spec.ts
feat: sitemap serializer adds lastmod to blog posts and docs from the file&apos;s last git commit
refactor: Sign-in returns to the page you opened
feat: middleware and client bounce send signed-out visitors to /login?redirect=&lt;path+query&gt;; // targets dropped; login and DashboardLayout share the stash helpers</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v16.11.0 — refactor: Release History doc points to /releases</title><link>https://xswarm.ai/releases#v16.11.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v16.11.0</guid><description>refactor: Release History doc points to /releases
feat: /docs/release-history redirects to /releases; the frozen doc, its generator and the pre-commit hook that rewrote it are removed
refactor: Favicons on the first projects list
refactor: Favicons on the first projects list
feat: GET /api/projects waits up to 1s on a first icon lookup; a subdomain of the site (stage.xswarm.ai) reads its favicon through ASSETS
fix: settings loads /api/billing/usage on its own, so the sign-out-all re-scroll fires once account and keys render instead of waiting on usage
feat: Sign-out-all result stays in view
fix: re-scroll the sign-out-all result into view once account and keys have loaded above it</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v16.10.0 — fix: the seven re-taken login/404/redirect baselines are compared against the build under test (@critical)</title><link>https://xswarm.ai/releases#v16.10.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v16.10.0</guid><description>fix: the seven re-taken login/404/redirect baselines are compared against the build under test (@critical)
fix(visual): re-take the 7 of the 36 baselines that a648f49e made stale again
refactor: Billing link tests read staging&apos;s JSON
fix: bareFetchJson(file, src) in helpers/route-json names each .json() on a bare route.fetch() by file:line; settings.spec openAsPlan pins subscription_plan and subscription_status through pinJson</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v16.9.0 — fix: baseline device pinning moves into helpers/snapshot.ts (deviceOf, photographedAs); the chromium check is proved from a Pixel 5 context, as the Mobile Chrome project runs it</title><link>https://xswarm.ai/releases#v16.9.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v16.9.0</guid><description>fix: baseline device pinning moves into helpers/snapshot.ts (deviceOf, photographedAs); the chromium check is proved from a Pixel 5 context, as the Mobile Chrome project runs it
feat: Public-page baselines match staging
fix: baseline checks pin the Desktop Chrome device whole and skip non-chromium engines, so Mobile Chrome&apos;s isMobile/2.75x DPR and firefox&apos;s Gecko no longer report seven false regressions per release
fix: navbar wordmark drops the global .glitch-text cyan halo (text-shadow: none), which only the prod build painted once lightningcss compiled --glow-intense&apos;s light-dark()</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v16.8.0 — fix: Settings plan-link E2E reads zstd holds with trunk -- e2e-route-fetch-guard.test.js</title><link>https://xswarm.ai/releases#v16.8.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v16.8.0</guid><description>fix: Settings plan-link E2E reads zstd holds with trunk -- e2e-route-fetch-guard.test.js
fix: pinJson(page, url, patch) in helpers/route-json reads the real JSON once through fetchJson and reports reads/errors; both settings specs pin /api/auth/me with it and assert one read, no handler error
fix: openAsPlan reads the real /api/auth/me once through fetchJson(route) and answers every /me call from it, so the concurrent second route.fetch&apos;s ~5s stall no longer holds Subscription on &quot;Loading…&quot;
refactor: Blog mobile matches its baseline
fix: blog tag filter is one scrolling row at &lt;=480px so a post card is in view; blog-mobile linux baselines re-taken for that restyle and the RSS pill
fix: Settings Subscription link reads Billing on the free plan, Manage Subscription on paid plans</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v16.7.0 — fix: --rebaseline checks staging&apos;s build-info sha against HEAD before any re-take, and records both in rebaseline.json</title><link>https://xswarm.ai/releases#v16.7.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v16.7.0</guid><description>fix: --rebaseline checks staging&apos;s build-info sha against HEAD before any re-take, and records both in rebaseline.json</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v16.6.0 — fix: Settings Subscription links to billing as Manage Subscription on every plan, dropping the free-plan Upgrade to Pro upsell (no pricing yet)</title><link>https://xswarm.ai/releases#v16.6.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v16.6.0</guid><description>fix: Settings Subscription links to billing as Manage Subscription on every plan, dropping the free-plan Upgrade to Pro upsell (no pricing yet)
fix: settings billing specs read the real /api/auth/me through fetchJson(route), so staging&apos;s zstd answer no longer reaches .json()</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v16.5.0 — fix: settings-billing-link free-plan phone spec expects &quot;Upgrade to Pro&quot;, per this ticket&apos;s Scenario 1 (it asserted Manage Subscription and no upsell)</title><link>https://xswarm.ai/releases#v16.5.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v16.5.0</guid><description>fix: settings-billing-link free-plan phone spec expects &quot;Upgrade to Pro&quot;, per this ticket&apos;s Scenario 1 (it asserted Manage Subscription and no upsell)
refactor: Settings billing link found on staging
feat: Settings Subscription link reads &quot;Upgrade to Pro&quot; on the free plan, &quot;Manage Subscription&quot; otherwise</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v16.4.0 — fix: settings shows load errors and a Billing link when /api/auth/me fails</title><link>https://xswarm.ai/releases#v16.4.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v16.4.0</guid><description>fix: settings shows load errors and a Billing link when /api/auth/me fails
refactor: Staging verify.md attached to #b7f17750
feat: writeVerify verdict &quot;E of E pairs match — 0 changed pixels&quot; or &quot;FAIL — expected E pairs, compared C; N pair(s) changed&quot;; reads &quot;N pixels are different&quot; with or without the ratio
refactor: Deterministic waitlist E2E
fix: waitlist spec waits for the hero island to hydrate; Vite serves the symlinked node_modules so islands hydrate in a worktree; chat specs name what was missing</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v16.3.0 — fix: settings-billing-link free-plan phone spec expects Manage Subscription, per this ticket&apos;s Scenario 1 which supersedes the earlier Billing label</title><link>https://xswarm.ai/releases#v16.3.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v16.3.0</guid><description>fix: settings-billing-link free-plan phone spec expects Manage Subscription, per this ticket&apos;s Scenario 1 which supersedes the earlier Billing label
fix: Subscription link reads Manage Subscription for every plan and the plan name is rendered capitalised (Free), not only styled so
feat: verify.md verdict reads &quot;E of E pairs: 0 changed pixels&quot;, &quot;N of E pairs changed (P changed pixels)&quot; or &quot;expected E pairs, compared C&quot;</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v16.2.0 — fix: refuseBaselineWrite in helpers/snapshot.ts throws naming the baseline path when a must-mismatch capture would write or overwrite it; snapshot-mask spec calls it</title><link>https://xswarm.ai/releases#v16.2.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v16.2.0</guid><description>fix: refuseBaselineWrite in helpers/snapshot.ts throws naming the baseline path when a must-mismatch capture would write or overwrite it; snapshot-mask spec calls it
feat: --verify verdict reads &quot;N of E pairs match (P changed pixels)&quot; or &quot;UNMEASURED: C of E expected pairs compared&quot;
fix: changed-fixture snapshot test throws naming the baseline path when it is missing or --update-snapshots would overwrite it, before toHaveScreenshot can write it
feat: page-aborted cause names the route from the ERR_ABORTED URL path instead of truncating before it
feat: writeVerify headline &quot;E of E pairs: 0 changed pixels&quot;, &quot;N of E pairs changed: P changed pixels&quot;, or &quot;C pairs compared where E were expected&quot;
refactor: Mobile Chrome baselines match this build
fix: re-take app-strategy and tutorial-first-time-setup Mobile Chrome baselines at Pixel 5 from this build
fix: capture() photographs at CSS scale like toHaveScreenshot; on Pixel 5 it took 1081x1999 against 393x727 baselines
feat: writeVerify headline &quot;N of E pairs match — P changed pixels&quot; or &quot;C of E expected pairs compared&quot;
feat: serve dev previews from xswarm-api.chadananda.workers.dev (DEV_PROXY_HOST + client origin), off xswarm.ai
feat: verify.md&apos;s first line is the verdict -- &quot;N of E pairs match: P changed pixels&quot; or &quot;N pairs were compared but E were expected&quot;
fix: recapture tutorials-mobile, about-mobile, homepage-tablet chromium linux baselines from this build; the 2026-09-14 ones predate the alpha-invite copy, the Open Alpha eyebrow and the waitlist footnote rewording</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v16.1.0 — refactor: Navbar version from xswarm&apos;s project only</title><link>https://xswarm.ai/releases#v16.1.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v16.1.0</guid><description>refactor: Navbar version from xswarm&apos;s project only
fix: /api/release/current reads only RELEASE_PROJECT_ID&apos;s production rows; production sets it to xswarm&apos;s project
refactor: Task locks stay inside one project
fix: scope the task-lock gate and its conflicts to the claiming ticket&apos;s project; territory dry run to the asker&apos;s own ticket or account
feat: authMiddleware sets apiKey for xsk_ credentials; POST /api/keys refuses them with 403
feat: writeVerify verdict PASS/FAIL: N of E pairs match or UNMEASURED: C of E pairs compared; rows &apos;N changed pixels&apos;; --expect alias
fix: one settle step before every capture -- fonts in use loaded, viewport images complete, auth slot resolved</description><pubDate>Wed, 30 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v16.0.0 — fix: CSP report-only policy names what the site loads; /api/csp-report answered in-process</title><link>https://xswarm.ai/releases#v16.0.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v16.0.0</guid><description>fix: CSP report-only policy names what the site loads; /api/csp-report answered in-process
refactor: Re-taken baseline report from staging
feat: writeVerify + planless --verify: every snapshot pair vs the target as verify.md with both shas, UNMEASURED below the expected count
refactor: Signed-out sessions stop working
feat: logout deny-lists the presented session (revoked_sessions, migration 0027); auth refuses a revoked token, /auth/me fully checks any token it is given
fix: TOKEN_SECRET and MASTER_ENCRYPTION_KEY require the environment prefix; missing secrets abort before any PUT
refactor: Re-taken baselines verified on staging
refactor: Report-only CSP on every page
feat: verifyReport writes DIR/verify.md from a Playwright run, per re-taken pair; --report or a fresh --verify run, skipped = UNMEASURED
feat: Content-Security-Policy-Report-Only on every page, reported to anonymous /api/csp-report
feat: provision route refuses is_admin (403) and deleted_at users (404), each audited</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v15.12.0 — fix: REST auth refuses any signed token carrying a purpose, so a leaked ws ticket cannot mint an xsk_ key</title><link>https://xswarm.ai/releases#v15.12.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v15.12.0</guid><description>fix: REST auth refuses any signed token carrying a purpose, so a leaked ws ticket cannot mint an xsk_ key
refactor: Per-route perf numbers in the audit
feat: perf audit prints a ROUTES section (LCP, CLS, KB, requests, landing URL) and keeps unmeasured routes with their error
refactor: Lighter, cached navbar logo
feat: logo as relative integer path data (37 KB -&gt; 7.8 KB), week-cached; logoOpsFromSvg reads relative m/c/z
refactor: Visual suite passes on re-taken routes
feat: GET /workers(/:id) adds sessions_setting default 2, live capacity and effective_sessions; PATCH rejects a setting above capacity
feat: --verify --from DIR reads rebaseline.json and checks a capture: re-taken pairs pass, ticketed and owned failures listed, anything else unexpected
fix: every committed snapshot-mask baseline is checked from any browser for the &apos;-- changed&apos; heading, so a wrong firefox baseline fails a chromium-only run
fix: firefox snapshot-mask baseline shows &apos;Snapshot Mask Fixture&apos;, not the &apos;-- changed&apos; heading the parallel changed-test wrote</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v15.11.0 — fix: recapture tutorials-index chromium/firefox/Mobile Chrome linux baselines from this build; the old ones predate the 1f4a1d4b alpha-invite copy (40781px off)</title><link>https://xswarm.ai/releases#v15.11.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v15.11.0</guid><description>fix: recapture tutorials-index chromium/firefox/Mobile Chrome linux baselines from this build; the old ones predate the 1f4a1d4b alpha-invite copy (40781px off)
refactor: Re-baseline per route and browser
feat: --rebaseline accepts each stale route/browser pair and runs one single-project --update-snapshots per engine
fix: settings re-scrolls the sign-out-all result into view once the account and API keys finish loading above it
fix: chat-state baselines are chromium&apos;s alone; the critical-path copies (byte-identical to chromium&apos;s) are removed
fix: recapture kanban-error chromium/firefox linux baselines from this build after the page fix; the old ones predate the terminal-window restyle (2488/5284 px off)
fix: kanban error window is a section named by its Error title, so it is findable as a region
fix: settings-billing-link spec expects Billing on free and Manage Subscription on pro, per this ticket&apos;s criteria
feat: WorkspaceView loads DevPreview, TerminalView and ChatWindow with import(), so tiles draw before the pane modules arrive
feat: Settings Subscription link reads Billing on free and Manage Subscription on paid plans</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v15.10.0 — fix(visual): a @critical test that the committed chromium baselines picture this build</title><link>https://xswarm.ai/releases#v15.10.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v15.10.0</guid><description>fix(visual): a @critical test that the committed chromium baselines picture this build
fix(visual): re-take the 36 stale baselines against staging b33ed5c
fix: Workspace View takes the page&apos;s announced project list; live page shares the nav menu&apos;s in-flight /api/projects request instead of making a second one</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v15.9.0 — feat: Settings Subscription link reads &quot;Manage subscription&quot; on every plan; settings.spec free-plan case follows the new name</title><link>https://xswarm.ai/releases#v15.9.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v15.9.0</guid><description>feat: Settings Subscription link reads &quot;Manage subscription&quot; on every plan; settings.spec free-plan case follows the new name
fix: each chat line is an article named for who said it, so its not-delivered marker and Retry are found by role
feat: free-plan Subscription link reads &quot;Billing&quot; (same outline link as pro), section labelled by its heading; test scrolls to the heading as a phone user does
refactor: Blog text tokens all defined
fix: blog.css and the standups post use the declared --color-text-* tokens; spec waits out the theme transition</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v15.8.0 — refactor: Hard-coded style counts cannot rise</title><link>https://xswarm.ai/releases#v15.8.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v15.8.0</guid><description>refactor: Hard-coded style counts cannot rise
fix: style ratchet baseline recorded from the current tree (login.astro&apos;s 4 font sizes landed after attempt 3 recorded 797), so the real tree holds at 0 rises
fix: test account suffix gains a random tail so same-millisecond requests never collide; kanban beforeAll throws the status and body of a refused account</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v15.7.0 — refactor: Config page passes staging E2E</title><link>https://xswarm.ai/releases#v15.7.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v15.7.0</guid><description>refactor: Config page passes staging E2E
fix: recordApiFailures also records another origin&apos;s /api/ 401, excusing only /api/admin/config-report, which the config page reads as unmeasured</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v15.6.0 — fix: console handling moves into an exported consoleEntry, proven without a session: console.error(&quot;boom&quot;) located at &quot;debugger eval code&quot; is &quot;console.error: boom&quot;, not a thrown listener</title><link>https://xswarm.ai/releases#v15.6.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v15.6.0</guid><description>fix: console handling moves into an exported consoleEntry, proven without a session: console.error(&quot;boom&quot;) located at &quot;debugger eval code&quot; is &quot;console.error: boom&quot;, not a thrown listener
fix: early-click&apos;s hold rule is a shared helper, and a built-page reproduction proves it lets goto return while the island module waits
fix: workspace-early-click holds back only the WorkspaceView module, not the built page&apos;s head stylesheet that blocked DOMContentLoaded
fix: Workspace specs forward staging modules through passThrough, so Firefox&apos;s xswarm.ai Host and Chromium&apos;s zstd no longer stall every chunk
fix: the session harness reads a console location only when it is a URL, so a Firefox &quot;debugger eval code&quot; error is recorded instead of throwing in the listener</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v15.5.0 — refactor: Clean platform config page on staging</title><link>https://xswarm.ai/releases#v15.5.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v15.5.0</guid><description>refactor: Clean platform config page on staging
fix: the session harness also excuses a CORS block on the other environment&apos;s config-report, read from the message text where Chromium and Firefox name the blocked URL
fix: the session harness appends the failing resource&apos;s path to a &quot;Failed to load resource&quot; console error, so a 401 names its request</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v15.4.0 — fix: spec asserts a chat-state baseline exists for every browser project, red on trunk</title><link>https://xswarm.ai/releases#v15.4.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v15.4.0</guid><description>fix: spec asserts a chat-state baseline exists for every browser project, red on trunk
fix: commit chat-empty/sending/streaming 390 baselines for chromium, firefox, Mobile Chrome
fix: expectFetch401Logged in the session harness asserts the console on Chromium and annotates UNMEASURED elsewhere
feat: Honest 401 console check on every engine
fix: off Chromium, the 401 console check is annotated UNMEASURED instead of failing</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v15.3.0 — fix: sidebar spec also opens the .html name build.format &apos;file&apos; emits, which trunk leaves unmarked</title><link>https://xswarm.ai/releases#v15.3.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v15.3.0</guid><description>fix: sidebar spec also opens the .html name build.format &apos;file&apos; emits, which trunk leaves unmarked
refactor: Current doc marked in docs sidebar
refactor: Current doc marked in docs sidebar
fix: doc page passes its id to DocsLayout instead of reading build-time Astro.url</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v15.2.0 — refactor: Clean platform config E2E on staging</title><link>https://xswarm.ai/releases#v15.2.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v15.2.0</guid><description>refactor: Clean platform config E2E on staging
fix: console collector skips another origin&apos;s config-report refusal; this origin&apos;s still counts
fix: listProjects parses first and reads status/type/body only when the answer is not JSON, so a response without headers() still works
fix: listProjects retries only thrown GETs and names route, status, type and body on a non-JSON answer; three specs use it</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v15.1.0 — refactor: Screen-reader sidebar navigation</title><link>https://xswarm.ai/releases#v15.1.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v15.1.0</guid><description>refactor: Screen-reader sidebar navigation
feat: sidebars mark the current page with aria-current, name each nav landmark, and category labels are no longer headings
fix: the release&apos;s E2E run writes no screenshots into the publishing checkout
fix: the renders-clean recorder lives in the session harness (fixtures/session.ts), so the spec run on trunk fails -- trunk&apos;s harness has no same-origin &apos;STATUS METHOD path&apos; recorder
feat: Clean API calls on /dashboard
fix: authenticated.spec.ts waits on a controlled clock and on in-flight /api/ calls instead of real time -- its @critical tests sum ~12s, was 26s
fix: renders-clean recorder lists same-origin /api/ failures as &apos;STATUS METHOD path&apos; and drops other origins
fix: Email sign-in on the login page holds with trunk -- hub-tablet-fit.spec.ts
fix: Email sign-in on the login page holds with trunk -- public-surface-fetches.test.js
fix: &quot;Check your email&quot; panel enters the DOM only after a sent link, so a refused request never carries it
fix: the BA closes a waiting ticket it finds already delivered instead of asking to delete it
fix: move the blog meta line above the 85vh hero so it is on the first screen at 390px
feat: email sign-in form on /login posts to /api/auth/magic-link with the redirect, shows sent or retry-later
refactor: Blog meta line in secondary grey
fix: blog meta line and skill-bar labels use --color-text-secondary instead of undefined --text-secondary
fix: One launch-stage name, no pricing holds with trunk -- no-npm-publish.test.js
refactor: Code sessions slider on worker cards
refactor: One launch-stage name, no pricing
feat: Code sessions slider on worker cards, 1 to capacity, saved via PATCH /api/workers/:id
fix: /app-strategy, /about and getting-started name one stage, Open Alpha, with no price, free-for-now or discount copy
fix: visual triage lists routes with missing screenshots under missing instead of throwing ENOENT
fix: API keys render as a labelled list with wrapping rows and a tokenized Revoke with focus and disabled states
feat: heartbeat reads running tickets from the task store each beat -- busy with active_tasks, idle at 0; xswarm run passes its store path
fix: the daemon starts again -- its fetch dispatcher keeps HTTP/1.1, where response headers survive
fix: 7 holds with trunk -- no-global-writes.test.js
fix: shared board reads the API&apos;s /k/:token (in-process or apiOriginFor) and renders token-styled columns and cards
feat: report card share shows the link in a read-only field and says Could not create a share link on failure
feat: the runner&apos;s cap follows the worker&apos;s sessions setting, read at every board pull and bounded by the machine&apos;s room; a raised cap opens lanes mid-pass
fix: Designed CI tab at every width holds with trunk -- run-pull-board.test.js
refactor: Designed CI tab at every width
refactor: Designed CI tab at every width
feat: CI tab token-only and wrapping at 320: quiet sans hints, named panel regions, inset cards, reported audits shown</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v15.0.0 — feat: workers.sessions_setting column (0026) and PATCH /workers/:id to set it</title><link>https://xswarm.ai/releases#v15.0.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v15.0.0</guid><description>feat: workers.sessions_setting column (0026) and PATCH /workers/:id to set it
feat: inline project chat is a named &apos;Team chat&apos; region; message times and wait counter are snapshot-masked; empty/sending/streaming baselines at 390
feat: Revoke link on a shared report card sends DELETE and shows Link revoked; list reports shared
refactor: Worker card shows sessions vs capacity
refactor: Worker card shows sessions vs capacity
feat: worker card reads &apos;Running N of M&apos; and names free memory when it caps sessions
fix: persona-card, chat-mockups and sidebar-collapse measure through boxOf from helpers/box
fix: a remainder split from a numbered scenario is titled by what it expects, not &apos;7&apos;
feat: style guide generated from theme.css (Tokens table: value, var() uses) and xswarm audit style runs it as evidence
fix: owner bubble tinted by its own --color-chat-own-* tokens instead of an inline var chain; list and bubbles named for role-based checks
feat: Share button on report cards mints the /r link with Copy; shared page shows the report date
fix: Chat shows loading until history arrives holds with trunk -- visual-repro.test.js
fix: report and layout specs measure through boxOf so a missing element fails by name
refactor: Chat shows loading until history arrives
feat: chat reads Loading messages… until history arrives, connecting… until presence</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v14.10.0 — feat: six project tabs share the width at phone size instead of a faded scroll; drop workspace layout badge</title><link>https://xswarm.ai/releases#v14.10.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v14.10.0</guid><description>feat: six project tabs share the width at phone size instead of a faded scroll; drop workspace layout badge
refactor: New Project submits once, errors inline
feat: New Project disables Create while pending and shows errors inline instead of alert()</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v14.9.0 — feat: failed Team chat send hands its text back and offers Retry on the same message</title><link>https://xswarm.ai/releases#v14.9.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v14.9.0</guid><description>feat: failed Team chat send hands its text back and offers Retry on the same message
refactor: Confirm before interrupting agents
fix: a ticket going to staging frees its coding slot at once
feat: pause and drain confirm, naming the in-flight tickets they stop; resume goes straight through
fix: Staging toHaveValue E2E failure fixed holds with trunk -- connect-pair-integration.test.js, entry.test.js, visual-audit-budget.test.js
fix: login specs follow the Sign in with GitHub button; the cancel spec marks the callback redirect UNMEASURED on localhost when /api is staging&apos;s older API, as the feature commit said it would
fix: Staging toHaveValue E2E failure fixed holds with trunk -- run-pull-board.test.js
feat: sign-in errors name the fix -- callback forwards GitHub&apos;s error (access_denied) after the state check; login maps no_email/access_denied/bad_verification_code to what-to-do messages on a tinted danger alert; button reads Sign in with GitHub
fix: the project-filter reload test lives in authenticated.spec.ts and finds the box by its label -- red on trunk, where the filter has no accessible name
fix: calculator canonical names its production URL on every host -- Layout takes an opt-in canonical prop, the page passes /tools/token-cost-calculator on Astro.site
fix: room-summon answers the project read from the row it already holds -- route.fetch to staging hung after reload, so the phase selector never learned &apos;share&apos;
fix: the project filter is named &quot;Filter projects&quot; so it can be found by its label
feat: /tools/token-cost-calculator -- prerendered page with Claude model picker (per-1M input/output prices), live Estimated cost on a raised card; token-economics post links to it; canonical asserted by path</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v14.8.0 — fix: About page names its creator holds with trunk -- visual-audit-budget.test.js</title><link>https://xswarm.ai/releases#v14.8.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v14.8.0</guid><description>fix: About page names its creator holds with trunk -- visual-audit-budget.test.js
fix: both coding slots stay busy while the BA plans -- the cap counts coding agents only, and a refused ticket no longer hides the next one
feat: About creator card opens with a Chad Jones byline linked to GitHub, role line in text-secondary, border rule below; section labelled by its heading
feat: blog posts pass their image and article meta to Layout -- own og/twitter image, og:type article, article:published_time, BlogPosting ld+json in place of WebPage
feat: homepage title names what xSwarm does -- Run Parallel Claude Code Agents From One Dashboard (59 chars)</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v14.7.0 — feat: internal-process docs are unlisted on /docs and the sidebar, noindex, and filtered from the sitemap via one INTERNAL_DOCS list</title><link>https://xswarm.ai/releases#v14.7.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v14.7.0</guid><description>feat: internal-process docs are unlisted on /docs and the sidebar, noindex, and filtered from the sitemap via one INTERNAL_DOCS list
refactor: Next read and waitlist on mobile posts
feat: below lg a blog post ends with a raised Read next card to its first related post and the waitlist in a well under it</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v14.6.0 — fix: workspace header reads Relay unreachable when the ticket is refused or the relay socket closes, instead of Connecting... forever</title><link>https://xswarm.ai/releases#v14.6.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v14.6.0</guid><description>fix: workspace header reads Relay unreachable when the ticket is refused or the relay socket closes, instead of Connecting... forever</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v14.5.0 — fix: /dashboard/live keeps its header and toggle outside the grid view, so Grid View stays visible over the open workspace</title><link>https://xswarm.ai/releases#v14.5.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v14.5.0</guid><description>fix: /dashboard/live keeps its header and toggle outside the grid view, so Grid View stays visible over the open workspace
fix: /dashboard/live stores the workspace toggle state and WorkspaceView reads it on mount, so an early click is not lost
refactor: Visual snapshots match staging
feat: --rebaseline drafts one standard ticket per regression route and files it via xswarm task file, printing id and route</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v14.4.0 — fix: Dev-server-warm E2E fits staging latency holds with trunk -- e2e-route-fetch-guard.test.js</title><link>https://xswarm.ai/releases#v14.4.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v14.4.0</guid><description>fix: Dev-server-warm E2E fits staging latency holds with trunk -- e2e-route-fetch-guard.test.js
fix: passThrough asks the origin for gzip/br, not zstd Playwright cannot decode, and drops Firefox&apos;s page Host
fix: dev-server-warm pass-through asks staging for gzip/br, not the zstd Firefox advertises and Playwright cannot decode</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v14.3.0 — fix: Billing page E2E matches Stripe state holds with trunk -- visual-audit-budget.test.js</title><link>https://xswarm.ai/releases#v14.3.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v14.3.0</guid><description>fix: Billing page E2E matches Stripe state holds with trunk -- visual-audit-budget.test.js
fix: on narrow screens the Pro card leads so Upgrade to Pro is inside the viewport
fix: billing plan cards are named articles so the Free card&apos;s Current Plan is addressable</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v14.2.0 — fix: firstProject resolves the account&apos;s first project, or skips as UNMEASURED; the hub specs open it</title><link>https://xswarm.ai/releases#v14.2.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v14.2.0</guid><description>fix: firstProject resolves the account&apos;s first project, or skips as UNMEASURED; the hub specs open it
feat: Staging not.toHaveText E2E failure fixed
fix: the hub specs open the account&apos;s first project from listProjects, not the hard-coded a53dd66f
feat: boxOf waits for visibility and names an element with no box; chat specs measure through it</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v14.1.0 — fix: No self-pointing avatar images holds with trunk -- avatar-no-self-src.spec.ts</title><link>https://xswarm.ai/releases#v14.1.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v14.1.0</guid><description>fix: No self-pointing avatar images holds with trunk -- avatar-no-self-src.spec.ts
fix: No self-pointing avatar images holds with trunk -- dashboard-handle-field.test.js
fix: avatars drop src=&quot;&quot; and carry width/height 32; src is set only when the account has an avatar_url</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v14.0.0 — refactor: Large deploy screenshots upload</title><link>https://xswarm.ai/releases#v14.0.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v14.0.0</guid><description>refactor: Large deploy screenshots upload
fix: store deploy screenshots as a raw BLOB so 1.5 MiB fits D1&apos;s 2,000,000-byte row
fix: workers strip wraps and fills the status row instead of pushing &lt;main&gt; sideways at 768px</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.37.0 — fix: Staging E2E toHaveCount failure fixed holds with trunk -- task-project-gate.test.js</title><link>https://xswarm.ai/releases#v13.37.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.37.0</guid><description>fix: Staging E2E toHaveCount failure fixed holds with trunk -- task-project-gate.test.js
fix: Live Activity fetches the ticket fallback alongside the backlog, keeps it when /api/events fails, and names its region</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.36.0 — feat: Sessions section on /settings with a Sign out all devices button that POSTs /api/auth/logout-all and shows the outcome in view</title><link>https://xswarm.ai/releases#v13.36.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.36.0</guid><description>feat: Sessions section on /settings with a Sign out all devices button that POSTs /api/auth/logout-all and shows the outcome in view
fix: QA session token passed to auditors via XSWARM_USER_TOKEN env, not --token argv</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.35.0 — refactor: Plan-page E2E reads staging&apos;s JSON</title><link>https://xswarm.ai/releases#v13.35.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.35.0</guid><description>refactor: Plan-page E2E reads staging&apos;s JSON
fix: fetchJson asks only for gzip/deflate/br; room-summon reads the project through it
refactor: Hero headline paints without jumping
fix: hero fallbacks tuned to rendered widths, unhinted tagline, metric-matched Share Tech Mono for the waitlist button
feat: preload Orbitron on / only and give the hero a metric-matched Orbitron fallback</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.34.0 — fix: wrap staging pass-through in try/catch in three e2e specs so a closed page cannot throw &apos;response disposed&apos;</title><link>https://xswarm.ai/releases#v13.34.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.34.0</guid><description>fix: wrap staging pass-through in try/catch in three e2e specs so a closed page cannot throw &apos;response disposed&apos;
feat: the BA answers what it can of a waiting ticket -- partly done, merged into a feature, or planned
fix: the gate keeps the whole test run when tests fail, and says where
feat: planner prompt includes the index&apos;s planning principles before the ticket standard
fix: middleware drops its own /api list and defers every /api call to the API&apos;s area guard
feat: setup-secrets pushes every secret to the web worker and the API worker
feat: development audit asks for proposals replacing hand-rolled code with native Astro/Cloudflare mechanisms
refactor: UI tickets run before other work
feat: queueOrder ranks bug, then UI (isUiTicket), then the rest, above priority
refactor: Retrying project list in dashboard specs
feat: dashboard-live, chat-history, board-card-face and board-card-delete list projects via retrying listProjects
feat: coding prompt gets a PRINCIPLES section read from docs/principles/index.json
refactor: Tests find UI by accessible name
feat: a UI ticket&apos;s TESTS section tells the coder to locate elements by accessible name
feat: the team-chat popup splits voiced replies and publishes its speakers, so the roster marks who spoke there
refactor: Signed-in areas, not route lists
feat: site pages are gated by signed-in areas (lib/auth-areas.js), not a bare startsWith prefix list
feat: Plan&apos;s meeting moves into the team-chat popup; a roster summons opens it and asks there
refactor: Pipeline-only tickets skip browser E2E
fix: the entry-point gate accepts a test that spawns the script by a path built from its own directory
feat: runLocked records a zero-test pass when no browser surface imports the change
fix: board-card-face finds the serial stub by its title, not by ref text the unnamed name slot now also prints
feat: an unnamed ticket is called by its ref, not words made from its title</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.33.0 — fix: Printable shared report page holds with trunk -- public-surface-fetches.test.js</title><link>https://xswarm.ai/releases#v13.33.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.33.0</guid><description>fix: Printable shared report page holds with trunk -- public-surface-fetches.test.js
feat: printable shared report page at /r/&lt;token&gt;, noindex, share link points to it
feat: framework-first rule is an owner decision planners read
feat: Plan page shows the team chat popup with context_ref architecture
fix: Subscribable blog feed holds with trunk -- layout-head.test.js
refactor: Subscribable blog feed
feat: /rss.xml feed via @astrojs/rss, advertised in /blog head and linked as an RSS pill</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.32.0 — refactor: Lighthouse floor at 99 in every category</title><link>https://xswarm.ai/releases#v13.32.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.32.0</guid><description>refactor: Lighthouse floor at 99 in every category
feat: lighthouse hard floor is points below 99 in every category, performance included; --min-score / LIGHTHOUSE_MIN_SCORE; gate parses it via lighthouseResult
refactor: Request shows queue place and real status
feat: GET /api/requests/:id returns queue position and derived status from the ancestry cache
fix: logo stops cycling to &apos;npx xswarm&apos;; tutorials point to the alpha invite instead of npx</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.31.0 — refactor: Honest worker names</title><link>https://xswarm.ai/releases#v13.31.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.31.0</guid><description>refactor: Honest worker names
feat: fleet:worker-names counts and names staging/preview workers on production hosts
feat: /connect/pair emails the owner naming the machine; a mail failure is audited, not fatal
fix: auth.js resolves ~/.xswarm/config.json per call instead of freezing it at import
refactor: Install proves git access by cloning
feat: install clones to prove git access and exits 1 when it cannot, or when credentials fail
feat: Preview ↗ link to the studio beside Open → on every project row
refactor: UI changes jump the queue and ship immediately
feat: a landed ticket touching packages/web/ skips the release window and critical-path deferral, as an urgent fix does
fix: an owner&apos;s answer that drops the work closes the ticket instead of planning it
refactor: Requirements capture pipeline: conversation to task
feat: foreman DECISION lines are appended to decisions.md, hidden from the owner and confirmed in the reply
fix: thread-delivery setup lists projects via listProjects, which retries a dropped socket up to 3 GETs
fix: ready tickets start without waiting for the board sweep
fix: a release rides out a network blip at the migration step instead of dying on it
refactor: BA triages owner-waiting tickets
refactor: BA triages owner-waiting tickets
feat: with nothing to plan, the BA triages one owner-waiting ticket: consolidates a duplicate, proposes deleting delivered work, keeps the rest; withdraw wired through ownerQuestions
refactor: No name until a ticket is submitted
fix: a ticket held on an open blocker is unnamed on read and filed without a name
fix: Ticket names in readable camel case holds with trunk -- entry.test.js
feat: print ticket names as stored, each later word leading with a 1.25em capital</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.30.0 — fix: pullTasks imports the board&apos;s test_results.name; planOne keeps a name the ticket already has</title><link>https://xswarm.ai/releases#v13.30.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.30.0</guid><description>fix: pullTasks imports the board&apos;s test_results.name; planOne keeps a name the ticket already has
fix: criteria merged into a ticket on the board after the runner pulled it reach the planner
fix: a critical path red across more than 10 spec files gets no fix pass
refactor: Unique ticket names
feat: name every open ticket uniquely -- on POST /api/tickets, backfilled on GET /api/tasks, kept across PATCH
fix: brief counts tickets held on the owner&apos;s answer as waiting on you, not ready</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.29.0 — fix: the blocker list answers with more than 100 open questions</title><link>https://xswarm.ai/releases#v13.29.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.29.0</guid><description>fix: the blocker list answers with more than 100 open questions</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.28.0 — feat: runner supervisor relaunches xswarm run --watch on exit 0, wired as npm run runner</title><link>https://xswarm.ai/releases#v13.28.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.28.0</guid><description>feat: runner supervisor relaunches xswarm run --watch on exit 0, wired as npm run runner
refactor: Runner restarts onto new code
refactor: Runner restarts onto new code
feat: --watch runner refuses new work once its code tree moves, exits ok when nothing is in flight
fix: dedupe E2E causes against board titles without the filer prefix, and treat the deployed column as closed</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.27.0 — feat: GET /tasks?cwd= resolves the checkout to its project via resolveProject, 404 when none</title><link>https://xswarm.ai/releases#v13.27.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.27.0</guid><description>feat: GET /tasks?cwd= resolves the checkout to its project via resolveProject, 404 when none
refactor: E2E failures filed as questions
refactor: Runner imports tickets awaiting Chad
feat: each staging E2E failure is filed via POST /api/tickets as an incomplete ticket waiting on a fix-or-flaky question
feat: the runner imports a ticket below the standard that carries an open blocker, held waiting on the owner</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.26.0 — fix: a scenario the planner&apos;s rewrite drops without declaring it is filed as its own ticket</title><link>https://xswarm.ai/releases#v13.26.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.26.0</guid><description>fix: a scenario the planner&apos;s rewrite drops without declaring it is filed as its own ticket
refactor: Incomplete tickets carry a question
feat: a titled ticket below the standard that carries a valid blocker is filed into Planning with its question as an open blocker</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.25.0 — fix: a ticket the planner found already delivered is a no-op, not a ticket that did nothing</title><link>https://xswarm.ai/releases#v13.25.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.25.0</guid><description>fix: a ticket the planner found already delivered is a no-op, not a ticket that did nothing</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.24.0 — fix: the deploy-path scan skips Vite&apos;s dependency cache, which a dev server rewrites mid-walk</title><link>https://xswarm.ai/releases#v13.24.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.24.0</guid><description>fix: the deploy-path scan skips Vite&apos;s dependency cache, which a dev server rewrites mid-walk
fix: the entry-point gate never demands a test that deploys or restarts for real</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.23.0 — refactor: Gate names untested entry points</title><link>https://xswarm.ai/releases#v13.23.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.23.0</guid><description>refactor: Gate names untested entry points
feat: the fast gate hard-blocks a changed package.json entry point no test spawns</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.22.0 — feat: each ticket records, in shadow, the critical specs System One would choose and what it would miss</title><link>https://xswarm.ai/releases#v13.22.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.22.0</guid><description>feat: each ticket records, in shadow, the critical specs System One would choose and what it would miss</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.21.0 — feat: each release records, in shadow, the test set a batch-scoped run would choose and what it would miss</title><link>https://xswarm.ai/releases#v13.21.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.21.0</guid><description>feat: each release records, in shadow, the test set a batch-scoped run would choose and what it would miss</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.20.0 — fix: releases restart the daemon by the name the CLI registers it with</title><link>https://xswarm.ai/releases#v13.20.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.20.0</guid><description>fix: releases restart the daemon by the name the CLI registers it with</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.19.0 — fix: npm run brief runs again -- flakyLine is hoisted, and a test runs the real script offline</title><link>https://xswarm.ai/releases#v13.19.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.19.0</guid><description>fix: npm run brief runs again -- flakyLine is hoisted, and a test runs the real script offline
fix: a candidate fix records which files it targeted</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.18.0 — fix: Flaky specs counted in brief holds with trunk -- task-dispatch.test.js</title><link>https://xswarm.ai/releases#v13.18.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.18.0</guid><description>fix: Flaky specs counted in brief holds with trunk -- task-dispatch.test.js
refactor: Flaky specs counted in brief
feat: brief prints a flaky line summing evidence.e2eFlaky over tickets started in 24h, top three</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.17.0 — fix: candidate fix-in-place also covers root-level test files (quality/, scripts/)</title><link>https://xswarm.ai/releases#v13.17.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.17.0</guid><description>fix: candidate fix-in-place also covers root-level test files (quality/, scripts/)</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.16.0 — refactor: Per-aspect ticket review</title><link>https://xswarm.ai/releases#v13.16.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.16.0</guid><description>refactor: Per-aspect ticket review
feat: POST /api/tickets asks System One to score title, why, scenarios, test and touches, beside the twin check; review returned and stored in test_results with the defects list
refactor: New tickets merge into planning twins
refactor: Gate names every failing test
feat: POST /api/tickets asks Jev for an open Planning twin and merges the new scenarios into it, else files marked unjudged
feat: failuresIn names vitest&apos;s × lines under a ❯ file and runAll&apos;s SUITE FAILED lines; the gate&apos;s note comes from failureNotes</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.15.0 — feat: coding agents are told a new capability must be reachable through the real entry point, and why</title><link>https://xswarm.ai/releases#v13.15.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.15.0</guid><description>feat: coding agents are told a new capability must be reachable through the real entry point, and why
fix: candidate fix-in-place is reachable -- the adapter provides it and the candidate suite names what failed</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.14.0 — fix: a real ticket filed without a project is created on the board under the runner&apos;s project</title><link>https://xswarm.ai/releases#v13.14.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.14.0</guid><description>fix: a real ticket filed without a project is created on the board under the runner&apos;s project
fix: xswarm task file submits through the ticket API, and the API keeps a ticket&apos;s type and priority
refactor: Spec green without its change goes back
feat: a spec green without its change goes back to the agent once; still green on trunk, the push is refused (e2eRedFix added to both step maps)
refactor: Planning cost is recorded
feat: planOne sums each plan&apos;s seconds and tokens into evidence and puts this run&apos;s cost on the planned event</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.13.0 — feat: npx xswarm installs PM2 and a no-sudo boot service, so the worker survives reboots</title><link>https://xswarm.ai/releases#v13.13.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.13.0</guid><description>feat: npx xswarm installs PM2 and a no-sudo boot service, so the worker survives reboots
feat: a ticket&apos;s own spec can run whole beside the critical path, without the @critical tag</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.12.0 — refactor: Candidates test only affected packages</title><link>https://xswarm.ai/releases#v13.12.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.12.0</guid><description>refactor: Candidates test only affected packages
feat: npm test runs only the suites whose dir holds or imports a file changed since XSWARM_CHANGED_BASE; shared code or no base runs all
feat: a fix pass passes failFast, and the runner turns it into --max-failures=1
feat: a red candidate naming its specs is fixed on its branch, spot-checked, and rebuilt once, up to two fixes</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.11.0 — perf: the idle runner re-asserts settled tickets to the board every 6 hours, not every 10 minutes</title><link>https://xswarm.ai/releases#v13.11.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.11.0</guid><description>perf: the idle runner re-asserts settled tickets to the board every 6 hours, not every 10 minutes</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.10.0 — feat: each ticket records, in shadow, the critical specs a surface-scoped run would choose and what it would miss</title><link>https://xswarm.ai/releases#v13.10.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.10.0</guid><description>feat: each ticket records, in shadow, the critical specs a surface-scoped run would choose and what it would miss</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.9.0 — fix: a ticket records why System One judged nothing, and which specs the fail-twice rule found flaky</title><link>https://xswarm.ai/releases#v13.9.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.9.0</guid><description>fix: a ticket records why System One judged nothing, and which specs the fail-twice rule found flaky
fix: replan sets awaitingPlan, so a ticket with an earlier attempt&apos;s commit is planned again
feat: Team chat popup renders a &gt; note as a blockquote with a 3px border-hover left rule, indented, in secondary text
fix: the composer types in the reply&apos;s reading ink, so owner and Barry text stay one colour
fix: thinking dots keep their animation name under reduced motion -- global.css already stills them, the popup&apos;s own animation:none unnamed them
feat: Team chat popup replaces the static waiting line with Barry&apos;s thinking row -- dots, a m:ss counter, and the room&apos;s chat:status step
feat: Barry&apos;s replies drop the tinted bordered bubble for zinc-100 reading ink on the panel; owner line loses its avatar to hug the right edge</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.8.0 — feat: a replan decision returns a ticket the pipeline blocked to planning, with fresh attempts</title><link>https://xswarm.ai/releases#v13.8.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.8.0</guid><description>feat: a replan decision returns a ticket the pipeline blocked to planning, with fresh attempts
fix: app tests no longer depend on the machine&apos;s free RAM</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.7.0 — perf: npm test runs every package suite and the tooling suite at once -- 54s -&gt; 28s</title><link>https://xswarm.ai/releases#v13.7.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.7.0</guid><description>perf: npm test runs every package suite and the tooling suite at once -- 54s -&gt; 28s</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.6.0 — perf: the visual-audit hang test waits a 4s grace, not 60s -- the gate drops from 123s to 69s</title><link>https://xswarm.ai/releases#v13.6.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.6.0</guid><description>perf: the visual-audit hang test waits a 4s grace, not 60s -- the gate drops from 123s to 69s</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.5.0 — feat: System One judges the refactor on the standard&apos;s judgement rules, and the popup shows it</title><link>https://xswarm.ai/releases#v13.5.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.5.0</guid><description>feat: System One judges the refactor on the standard&apos;s judgement rules, and the popup shows it</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.4.0 — fix: a skipped spec file is recorded as not failed, so re-runs and fix prompts name only files that failed</title><link>https://xswarm.ai/releases#v13.4.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.4.0</guid><description>fix: a skipped spec file is recorded as not failed, so re-runs and fix prompts name only files that failed
feat: foreman &apos;Name [Tag]:&apos; lines split into that member&apos;s own chat message; Dee [Design] joins the cast and solve roster
feat: agent replies fill the chat width -- non-user .msg-body flexes to the list edge, 90% cap kept for the owner&apos;s lines
refactor: Board reporting leaves run.mjs
refactor: Board reporting leaves run.mjs
feat: board reporting leaves run.mjs -- pull, gates, mid-pass report, interval and end-of-pass sweep move to task/board-reporting.mjs
feat: Overview Send button sits inside a rounded message well -- grey when empty, Barry&apos;s colour with text
feat: foreman tickets carry a category -- asked for in the TICKET line, filed when the API stores it, else null</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.3.0 — fix: a candidate that skipped its critical path records which ticket commit proved its tree</title><link>https://xswarm.ai/releases#v13.3.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.3.0</guid><description>fix: a candidate that skipped its critical path records which ticket commit proved its tree
perf: a red critical path is fixed in place by the coding session instead of throwing the attempt away
fix: a critical-path spec must fail twice to count -- failed spec files are re-run once, alone
feat: consecutive messages from one speaker form one turn — name and avatar on the first, time under the last, 0.25rem apart
feat: each ticket category prints on its own paper; teal, tangerine, lime, ivory, slate stocks added
fix: message time is 12px in --color-text-tertiary with no half opacity, so it reads at 4.5:1 against the chat panel
fix: room-summon checks the asked button where a person scrolls to it
feat: Team Chat popup set in Inter throughout, header reads Barry in sentence case
feat: empty Overview chat opens on Barry&apos;s welcome with three one-tap starter questions
fix: heading-spacing spec reads all four boxes in one frame, not across the arrival slide</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.2.0 — feat: Team Chat popup trades cyan rules for neutral hairlines and a lifted header</title><link>https://xswarm.ai/releases#v13.2.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.2.0</guid><description>feat: Team Chat popup trades cyan rules for neutral hairlines and a lifted header
feat: chat header shows Barry&apos;s avatar, a calm reply-font name and Foreman · presence beneath
feat: Readable chat composer text
feat: popup Send is a round Barry-coloured button inside a rounded composer field</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.1.0 — feat: &apos;&gt;&apos; lines in a chat reply render as a blockquote: left rule in --color-border-hover, indented, secondary text, marker dropped</title><link>https://xswarm.ai/releases#v13.1.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.1.0</guid><description>feat: &apos;&gt;&apos; lines in a chat reply render as a blockquote: left rule in --color-border-hover, indented, secondary text, marker dropped
fix: dev host drops X-Frame-Options and allows framing by xswarm.ai via CSP frame-ancestors
perf: a merge candidate no longer waits out a production release before testing
perf: a merge candidate whose tree the ticket already proved green skips its second critical path
feat: the refactor is scored against the refactor standard, per rule and in total, and the popup shows it
fix(quality): function spans start at the body brace, so a destructured parameter no longer hides a long function
feat: the fresh refactor session is handed the full diff of the ticket, under its changed-code brief
fix: the Team chat names the project as soon as the header loads it, not only when the relay is down
feat: the refactor runs in a fresh session, handed the lines the ticket changed and the functions they sit in
feat: empty Team Chat popup greets as Barry with three raised starter-question buttons that fill the composer</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v13.0.0 — refactor: Project&apos;s own dev and staging links</title><link>https://xswarm.ai/releases#v13.0.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v13.0.0</guid><description>refactor: Project&apos;s own dev and staging links
feat: projects store an 8-hex dev_host_id (backfilled for existing rows) and GET /api/projects[/:id] return dev_url https://dev-&lt;slug&gt;-&lt;id&gt;.xswarm.ai
refactor: Chat set in one elegant typeface
feat: chat panel set in one typeface, Inter, via a new --font-chat token; header name and composer drop Orbitron and Share Tech Mono</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.30.0 — refactor: Foreman announces each step</title><link>https://xswarm.ai/releases#v12.30.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.30.0</guid><description>refactor: Foreman announces each step
feat: each tool the foreman&apos;s agent calls is sent as chat:status for the reply&apos;s chat_id; the room relays it to every dashboard without storing it
refactor: Chat frame without neon rules
feat: chat panel framed by surface and a neutral --color-border hairline, no cyan rules or black header/composer bars
refactor: Reports open inside their project
feat: reports open at /dashboard/projects/&lt;id&gt;/reports/&lt;slug&gt; under the project header; the global URL of a project report forwards there</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.29.0 — feat: the thinking row shows the room&apos;s chat:status step in place of &apos;is thinking&apos;, each replacing the last</title><link>https://xswarm.ai/releases#v12.29.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.29.0</guid><description>feat: the thinking row shows the room&apos;s chat:status step in place of &apos;is thinking&apos;, each replacing the last
refactor: Proposals awaiting approval on Overview
feat: Overview panel lists unplanned audit proposals under the blockers; Approve plans each as one ticket
fix: refactor, design, foreman, planner, audit and stop-hook prompts give the why for each rule
fix: agent prompts give the why for each rule, and stop contradicting the coding prompt on committing
fix: every board report carries the live feed, so a running card stays in Refactoring instead of falling back to its evidence column
feat: the ticket popup says why a refactor changed nothing, from the agent&apos;s Applied/Not applied lines
fix: a critical-path refusal carries the first failing test&apos;s error, not just its title
refactor: Audit report shows what became of each finding
feat: DocumentReader matches an audit&apos;s Work items to the project&apos;s tasks and requests and shows Fixed / In progress / awaiting approval per finding</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.28.0 — refactor: Popup replies read as documents</title><link>https://xswarm.ai/releases#v12.28.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.28.0</guid><description>refactor: Popup replies read as documents
feat: popup replies are full-width borderless documents in --color-text-primary; Chad&apos;s message is a right-aligned surface-hover bubble
feat: an empty chunk keeps Barry&apos;s thinking row up, now named and timed m:ss
fix: the runner sweeps leaked temp caches hourly, reaps orphaned vitest workers, and brief warns when /tmp fills</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.27.0 — perf: one agent session per ticket -- design is decided in it, the refactor continues it</title><link>https://xswarm.ai/releases#v12.27.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.27.0</guid><description>perf: one agent session per ticket -- design is decided in it, the refactor continues it
fix: dev servers and Vite runs keep their temp files in the tree they belong to
fix: each coding agent&apos;s browser runs get their own dev port</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.26.0 — feat: the foreman voices the personas itself, with an example of the shape</title><link>https://xswarm.ai/releases#v12.26.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.26.0</guid><description>feat: the foreman voices the personas itself, with an example of the shape
feat: the foreman groups similar changes, orders bugs first, and brings the team in
fix: the stop hook no longer asks coding agents for evidence only the pipeline writes
feat: chat reply headings at 1.3em, blocks 0.875em apart, 1em above a heading</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.25.0 — refactor: Card status says what is happening</title><link>https://xswarm.ai/releases#v12.25.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.25.0</guid><description>refactor: Card status says what is happening
feat: card status line prints step minutes, refactor delta, and a shipped ticket&apos;s release and size
refactor: Code report in the ticket popup
feat: every ticket records what its code amounts to after coding, refactor and push
fix: a planner refused an agent slot spends no plan
fix: the planner takes a reserved agent slot, not a coding agent&apos;s
feat: the ticket popup has a Code section -- feature size and what its refactor improved, from test_results.code
feat: every ticket records what its code amounts to after coding, refactor and push
fix: a planner refused an agent slot spends no plan
refactor: code blocks share the inline-code tint instead of a second colour literal
refactor: Chat code blocks keep their layout
feat: chat replies render ``` fenced code as a monospace block that keeps its lines, fences hidden
fix: the planner takes a reserved agent slot, not a coding agent&apos;s</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.24.0 — feat: a mockup thumbnail links to a blob page that shows it sandboxed in its own tab</title><link>https://xswarm.ai/releases#v12.24.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.24.0</guid><description>feat: a mockup thumbnail links to a blob page that shows it sandboxed in its own tab
feat: chat Markdown tables render as a real table that scrolls sideways within its bubble</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.23.0 — fix: a generated file no longer sends the critical path to btrfs, and a skip says why</title><link>https://xswarm.ai/releases#v12.23.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.23.0</guid><description>fix: a generated file no longer sends the critical path to btrfs, and a skip says why</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.22.0 — perf: a ticket&apos;s critical path no longer waits out a ship</title><link>https://xswarm.ai/releases#v12.22.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.22.0</guid><description>perf: a ticket&apos;s critical path no longer waits out a ship</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.21.0 — refactor: ChatPopup unit test mock room reports the relay as down (isOpen)</title><link>https://xswarm.ai/releases#v12.21.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.21.0</guid><description>refactor: ChatPopup unit test mock room reports the relay as down (isOpen)
fix: Team chat popup hands a live reply over to its history row and polls history only while the relay is down
refactor: Report PDF body pages
feat: report PDF body pages typeset the markdown -- bold headings, findings as severity/title/detail lines</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.20.0 — fix: a new e2e spec without an @critical test is caught in the quality step</title><link>https://xswarm.ai/releases#v12.20.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.20.0</guid><description>fix: a new e2e spec without an @critical test is caught in the quality step
fix: the board is reported while a pass works</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.19.0 — feat: report details render markdown (marked + DOMPurify) with styled headings and tables</title><link>https://xswarm.ai/releases#v12.19.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.19.0</guid><description>feat: report details render markdown (marked + DOMPurify) with styled headings and tables
feat: Reports tab drops the quality-check panel so report cards lead the page</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.18.0 — feat: an e2e-only ticket&apos;s spec is run on trunk, to see it fail (shadow)</title><link>https://xswarm.ai/releases#v12.18.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.18.0</guid><description>feat: an e2e-only ticket&apos;s spec is run on trunk, to see it fail (shadow)</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.17.0 — refactor: Report cards lead with their score</title><link>https://xswarm.ai/releases#v12.17.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.17.0</guid><description>refactor: Report cards lead with their score
feat: report cards lead with the audit name and its score, Unmeasured never 0
refactor: Chat tickets keep their type
fix: foreman files a chat ticket with its drafted type (feature
refactor: Report PDF downloads as a real file
feat: a report card&apos;s PDF button downloads a designed PDF built in the browser instead of printing the dashboard</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.16.0 — refactor: Audit PDF downloads as a real file</title><link>https://xswarm.ai/releases#v12.16.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.16.0</guid><description>refactor: Audit PDF downloads as a real file
feat: Download PDF on the audit panel saves a real PDF report instead of printing the dashboard
fix: the watching runner actually refills its slots
refactor: Report cards show real page previews
feat: report thumbnails show each report&apos;s kind and title on a page cover instead of identical ruled lines</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.15.0 — feat: chat replies render [text](url) and http(s) URLs as links; the floating Team chat renders reply markdown</title><link>https://xswarm.ai/releases#v12.15.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.15.0</guid><description>feat: chat replies render [text](url) and http(s) URLs as links; the floating Team chat renders reply markdown
fix: a slot that finishes with nothing ready keeps looking, and a drain is seen mid-pass
refactor: fold the duplicate stream test&apos;s result assertion into the delta-order test
feat: executor passes on text_delta stream events under { partial: true }; foreman asks for them</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.14.0 — refactor: ChatPopup unit tests stub the relay room so its ticket POST stays out of the REST fetch mock</title><link>https://xswarm.ai/releases#v12.14.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.14.0</guid><description>refactor: ChatPopup unit tests stub the relay room so its ticket POST stays out of the REST fetch mock
feat: Team chat popup joins the project relay room and streams foreman replies into one bubble per chat_id
fix: team chat reply text set at 1rem (16px) instead of 0.875rem
fix: svelte-check generates Astro types in a fresh tree instead of failing it
refactor: Formatted replies in team chat
feat: team chat renders reply markdown (headings, lists, bold, italic, code) as elements</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.13.0 — refactor: svelte-check regression was ungenerated astro types in the worktree, not code</title><link>https://xswarm.ai/releases#v12.13.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.13.0</guid><description>refactor: svelte-check regression was ungenerated astro types in the worktree, not code
feat: the room hands the foreman the recent conversation with each chat:message; Barry&apos;s prompt shows it above the owner&apos;s message
refactor: svelte-check regression was ungenerated astro types in the worktree, not code
refactor: No raw ticket JSON while streaming
fix: the quality pass shows under Refactoring on the board
fix: a slot left empty keeps working while the other ticket runs
feat: foreman holds a streamed line that may be a TICKET line and drops it whole if it is</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.12.0 — refactor: svelte-check regression was ungenerated astro types in the worktree, not code</title><link>https://xswarm.ai/releases#v12.12.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.12.0</guid><description>refactor: svelte-check regression was ungenerated astro types in the worktree, not code
fix: threadpool test parks pool threads on FIFOs instead of timing CPU work, so load cannot flip it
feat: foreman starts a preview the cloud reads as starting and reports it running or stopped
refactor: Dev server warms when a project opens
feat: opening any project tab warms its dev server with one shared start request</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.11.0 — fix: the CLI runs with a 16-thread libuv pool, ending the board-read timeouts</title><link>https://xswarm.ai/releases#v12.11.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.11.0</guid><description>fix: the CLI runs with a 16-thread libuv pool, ending the board-read timeouts</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.10.0 — fix: a failed board read says how long the runner&apos;s event loop stalled</title><link>https://xswarm.ai/releases#v12.10.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.10.0</guid><description>fix: a failed board read says how long the runner&apos;s event loop stalled</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.9.0 — fix: upstream currency drift no longer turns every merge candidate red</title><link>https://xswarm.ai/releases#v12.9.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.9.0</guid><description>fix: upstream currency drift no longer turns every merge candidate red
feat: every failed attempt goes to the decision API as failure-triage, in shadow</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.8.0 — fix: a choice answers as probabilities, and the SEO judge asks one Jev accepts</title><link>https://xswarm.ai/releases#v12.8.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.8.0</guid><description>fix: a choice answers as probabilities, and the SEO judge asks one Jev accepts
fix: the Decision API speaks Jev&apos;s real request shape</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.7.0 — feat: the quality step runs the unit tests beside the change</title><link>https://xswarm.ai/releases#v12.7.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.7.0</guid><description>feat: the quality step runs the unit tests beside the change
feat: the replay harness, and every start records the board it was decided on
refactor: restore svelte-check baseline by generating Astro types
feat: the thin-CLI runtime fast-forwards its checkout on the server&apos;s word
refactor: Link candidates from page copy
feat: link candidates from &lt;main&gt; copy matched against other pages&apos; title and H1 runs
fix: the room&apos;s welcome carries the sha it runs, not &quot;dev&quot;</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.6.0 — perf: the critical path runs from a ram-disk checkout of the sha it certifies</title><link>https://xswarm.ai/releases#v12.6.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.6.0</guid><description>perf: the critical path runs from a ram-disk checkout of the sha it certifies
fix: a board that cannot be read names the network cause
fix: the runtime socket passes the relay&apos;s upgrade allow-list</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.5.0 — fix: a release waits for a critical path in progress, up to 15 minutes</title><link>https://xswarm.ai/releases#v12.5.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.5.0</guid><description>fix: a release waits for a critical path in progress, up to 15 minutes
feat: the server shadows ticket selection on every runner start</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.4.0 — feat: sync sends the board everything ticket selection reads</title><link>https://xswarm.ai/releases#v12.4.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.4.0</guid><description>feat: sync sends the board everything ticket selection reads
feat: xswarm runtime connects to its room as a thin runtime</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.3.0 — feat: the project room answers the thin-CLI handshake</title><link>https://xswarm.ai/releases#v12.3.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.3.0</guid><description>feat: the project room answers the thin-CLI handshake
feat: thin-CLI runtime executes protocol actions, guarded and idempotent</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.2.0 — feat: thin-CLI protocol v1 as shared, pure code</title><link>https://xswarm.ai/releases#v12.2.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.2.0</guid><description>feat: thin-CLI protocol v1 as shared, pure code</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.1.0 — refactor: delete five CLI modules nothing references</title><link>https://xswarm.ai/releases#v12.1.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.1.0</guid><description>refactor: delete five CLI modules nothing references</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v12.0.0 — refactor: svelte-check regression was ungenerated astro types, not code</title><link>https://xswarm.ai/releases#v12.0.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v12.0.0</guid><description>refactor: svelte-check regression was ungenerated astro types, not code
refactor: SEO audit judges every page
refactor: svelte-check regression was a missing astro sync, not code
feat: seo audit --judge asks the decision API four questions per sitemap page, grouped by cause
refactor: Decision API on xswarm.ai
feat: POST /api/decide calls Jev with a 1500 ms cutoff, falls back to defaults, logs to decision_log by state hash</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v11.6.0 — feat: the refactor standard asks for functionally descriptive names</title><link>https://xswarm.ai/releases#v11.6.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v11.6.0</guid><description>feat: the refactor standard asks for functionally descriptive names</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v11.5.0 — fix: the stop hook applies only to xswarm coding agents</title><link>https://xswarm.ai/releases#v11.5.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v11.5.0</guid><description>fix: the stop hook applies only to xswarm coding agents</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v11.4.0 — fix: root vitest excludes node_modules at any depth</title><link>https://xswarm.ai/releases#v11.4.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v11.4.0</guid><description>fix: root vitest excludes node_modules at any depth</description><pubDate>Sun, 27 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v11.3.0 — fix: a touched package runs its whole unit suite in the task tree</title><link>https://xswarm.ai/releases#v11.3.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v11.3.0</guid><description>fix: a touched package runs its whole unit suite in the task tree</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v11.2.0 — fix: a failed deploy screenshot is said in the deploy output</title><link>https://xswarm.ai/releases#v11.2.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v11.2.0</guid><description>fix: a failed deploy screenshot is said in the deploy output</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v11.1.0 — perf: the release suite budgets browser workers from free memory</title><link>https://xswarm.ai/releases#v11.1.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v11.1.0</guid><description>perf: the release suite budgets browser workers from free memory</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v11.0.0 — refactor: restore svelte-check to 5 warnings, 0 errors</title><link>https://xswarm.ai/releases#v11.0.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v11.0.0</guid><description>refactor: restore svelte-check to 5 warnings, 0 errors
refactor: Deploys upload site screenshots
feat: web deploys PUT a 1280x800 JPEG of staging/production; a failed capture is a screenshot-failed event
fix: a narrowed ticket files what it leaves out
refactor: move deploy screenshot routes out of projects.js to keep it under the 500-line limit
refactor: Deploys capture site screenshots
feat: deploys store a site screenshot per environment -- PUT/GET /api/projects/:id/screenshot/:env (migration 0022), advertised as screenshot_url on deploy_targets</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v10.3.0 — fix: environments box is one small card at the foot of the Overview rail</title><link>https://xswarm.ai/releases#v10.3.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v10.3.0</guid><description>fix: environments box is one small card at the foot of the Overview rail</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v10.2.0 — refactor: Environment card shows a screenshot</title><link>https://xswarm.ai/releases#v10.2.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v10.2.0</guid><description>refactor: Environment card shows a screenshot
feat: environments card shows the deploy&apos;s screenshot in a 16:10 frame, and the site host beside live
feat: attach a chat mockup to a planning ticket; its board sheet shows it sandboxed</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v10.1.0 — fix: a ticket&apos;s critical path waits for a ship in flight</title><link>https://xswarm.ai/releases#v10.1.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v10.1.0</guid><description>fix: a ticket&apos;s critical path waits for a ship in flight</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v10.0.0 — refactor: svelte-check regression was missing generated Astro types in a fresh worktree, not code</title><link>https://xswarm.ai/releases#v10.0.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v10.0.0</guid><description>refactor: svelte-check regression was missing generated Astro types in a fresh worktree, not code
refactor: svelte-check regression was missing generated Astro types in a fresh worktree, not code
refactor: Agents file full tickets by API
feat: board tasks store the agreed mockup (migration 0021, POST/PATCH accept it); category test no longer breaks on later columns
feat: board mockup carried into the local store and the coding prompt
feat: POST /api/tickets files a full ticket into planning, 422 with named defects below the standard
fix: planner catches the checkout up to trunk before judging done-at-HEAD</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v9.13.0 — refactor: svelte-check regression was missing generated Astro types in a fresh worktree, not code</title><link>https://xswarm.ai/releases#v9.13.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v9.13.0</guid><description>refactor: svelte-check regression was missing generated Astro types in a fresh worktree, not code
refactor: Keyword value in the SEO audit
feat: SEO audit prices project.yml keywords via DataForSEO (volume, KD), unmeasured without credentials
feat: chat replies render ```mockup fences as sandboxed thumbnails with a large hover view</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v9.12.0 — refactor: svelte-check regression was ungenerated Astro types, not code</title><link>https://xswarm.ai/releases#v9.12.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v9.12.0</guid><description>refactor: svelte-check regression was ungenerated Astro types, not code
refactor: SEO audit maps internal links
feat: SEO audit maps internal links -- depth, inbound count and anchors per sitemap page, orphans as issues
fix(live): the card goes back and forth between Coding and Testing as the agent works
refactor: svelte-check regression was ungenerated Astro types, not code
refactor: Cancel a ticket in flight
feat: a board row with cancel_requested kills the running agent, removes its worktree and branch, and the runner merges nothing when its spawn returns
fix(overview): the status strip keeps its size while it loads -- a layout shift made the 390px chat spec flaky
feat(board): a large readable ticket sheet, brief tickets in Planning, a GitHub link, and a countdown on the current cadence
fix(api): xswarm.ai&apos;s own icon is read through the asset binding -- it lost its icon to a self-fetch</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v9.11.0 — feat(ui): generated reports render as document cards -- page thumbnail, title, date, one-line summary, details and PDF</title><link>https://xswarm.ai/releases#v9.11.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v9.11.0</guid><description>feat(ui): generated reports render as document cards -- page thumbnail, title, date, one-line summary, details and PDF</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v9.10.0 — refactor: Persona cards on chat avatars</title><link>https://xswarm.ai/releases#v9.10.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v9.10.0</guid><description>refactor: Persona cards on chat avatars
feat(chat): hovering or focusing a speaker avatar shows a persona card -- sketch, name, role, expertise -- clamped inside the viewport
fix(ui): no project Workers tab (workers are account-wide), a &quot;Plans&quot; tab, and a Tickets page stacked as work flows
fix(ui): tickets lose the pin graphic
fix(plan): reader text scales with the screen in an 80-character column -- no third of the page left empty
fix(test): the project-routes fixture list names the new workers page
refactor: workers page loads its header with the short plan-page idiom, ending the duplicated script block
refactor: Workers tab with machine cards
feat(ui): a Workers tab in the project -- one card per machine with cores, RAM, CPU and memory meters and its running ticket
feat(ci): release settings are narrow cards side by side, label left of its controls
fix(cli): a flag&apos;s value is not a ticket&apos;s title</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v9.9.0 — feat(plan): the Plan page is a reader -- sticky index, the document at full height, no leaked front matter</title><link>https://xswarm.ai/releases#v9.9.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v9.9.0</guid><description>feat(plan): the Plan page is a reader -- sticky index, the document at full height, no leaked front matter</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v9.8.0 — feat(ui): tickets named for their purpose, a proper tickets list, and a readable chat</title><link>https://xswarm.ai/releases#v9.8.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v9.8.0</guid><description>feat(ui): tickets named for their purpose, a proper tickets list, and a readable chat
fix(ship): staging reports what it serves -- the Staging tab showed a build from September 12
refactor(ui): the embossed label plate is theme tokens, not colour literals copied into three components
feat(publish): a stage-audit finding that holds the release files one urgent fix ticket per file:line
fix(sync): a ticket not yet on the board is not &quot;deleted on the board&quot; -- only a ticket the board has shown us</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v9.7.0 — feat(ticket): xswarm task file -- a ticket filed to the standard, refused below it; the skill&apos;s submit path</title><link>https://xswarm.ai/releases#v9.7.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v9.7.0</guid><description>feat(ticket): xswarm task file -- a ticket filed to the standard, refused below it; the skill&apos;s submit path</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v9.6.0 — feat(overview): a compact status strip above a BA-led meeting, and a Tickets box the discussion fills</title><link>https://xswarm.ai/releases#v9.6.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v9.6.0</guid><description>feat(overview): a compact status strip above a BA-led meeting, and a Tickets box the discussion fills</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v9.5.0 — fix(ship): the stage audit retries its network calls and holds with a reason -- a blip crashed the 20:40 ship</title><link>https://xswarm.ai/releases#v9.5.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v9.5.0</guid><description>fix(ship): the stage audit retries its network calls and holds with a reason -- a blip crashed the 20:40 ship</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v9.4.0 — feat(tickets): the Tickets page is three vertical sections of ticket objects -- planning, in development, deployed</title><link>https://xswarm.ai/releases#v9.4.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v9.4.0</guid><description>feat(tickets): the Tickets page is three vertical sections of ticket objects -- planning, in development, deployed</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v9.3.0 — feat(planner): escalate the model only to re-plan a struggling ticket -- implementation stays on the default</title><link>https://xswarm.ai/releases#v9.3.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v9.3.0</guid><description>feat(planner): escalate the model only to re-plan a struggling ticket -- implementation stays on the default
fix(ui): panels are distinct objects, not black boxes -- a bezel, a raised header strip, content one step up
feat(board): a void ticket is red stock, and Delete sits in the ticket sheet&apos;s header</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v9.2.0 — feat(release): the CI page&apos;s cadence governs the runner, and continuous is one of its choices</title><link>https://xswarm.ai/releases#v9.2.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v9.2.0</guid><description>feat(release): the CI page&apos;s cadence governs the runner, and continuous is one of its choices</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v9.1.0 — feat(board): the Staging column counts down to the next push to production</title><link>https://xswarm.ai/releases#v9.1.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v9.1.0</guid><description>feat(board): the Staging column counts down to the next push to production
fix(agent): ticket workers run the default Claude Code model on every attempt -- no escalation to Fable
refactor: ticket stamp inks are theme tokens, not colour literals
refactor: Planning card opens details to delete
feat(board): a Planning ticket&apos;s sheet offers Delete -- confirm, DELETE /api/tasks/:id, card gone</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v9.0.0 — fix(ship): ignore the stores&apos; SQLite journal -- a mid-transaction journal held the 18:59 release</title><link>https://xswarm.ai/releases#v9.0.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v9.0.0</guid><description>fix(ship): ignore the stores&apos; SQLite journal -- a mid-transaction journal held the 18:59 release
feat(ship): a partial audit on staging before production -- a release is held on a finding in what it changed
feat(publish): a 10-minute release window from the first landing -- later landings wait for the next
feat(tickets): the Tickets page is a ledger of ticket strips -- coloured stock, perforated dividers, the name on the stub
feat(board): tickets are real roll tickets -- torn stock by kind, a name in worn ink, stub punches, click for the sheet
feat(planner): the BA gives every ticket a one-word name people can say
refactor: svelte-check regression was a missing astro sync, not code
feat: pullTasks cancels an unstarted pending ticket its project&apos;s board no longer returns
fix: CI explanation and ticket title cells set font-sans, overriding the panel&apos;s Share Tech Mono
refactor: svelte-check regression was a missing generated .astro/types.d.ts -- astro sync restores 5 warnings, 0 errors
refactor: Tickets carry a category
feat: tasks carry a category -- column, migration 0020, POST validates it against the schema enum</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v8.3.0 — fix(merge-queue): a red trunk is not the ticket&apos;s fault -- re-run the named test at trunk before recoding</title><link>https://xswarm.ai/releases#v8.3.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v8.3.0</guid><description>fix(merge-queue): a red trunk is not the ticket&apos;s fault -- re-run the named test at trunk before recoding
refactor: TITLE_MAX is file-local -- drop the unused export the elegance gate flagged
fix: dimmed green on CI, Overview and Tickets tabs uses --color-text-quiet (4.5:1+)
fix(board): restore the #ref serial and pin ticket stock in the unit test -- 86b01d44 left trunk red
docs(decisions): owner may delete an unstarted ticket; short titles; six tabs
fix(tabs): six project tabs -- no Studio or Planning; the Overview opens Studio in its own browser tab
feat(board): cards are printed ticket stock -- cream paper, letterpress ink, perforated stub with the serial</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v8.2.0 — feat(ticket): titles are short outcome phrases, &lt;=40 characters -- the behaviour lives in the scenario</title><link>https://xswarm.ai/releases#v8.2.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v8.2.0</guid><description>feat(ticket): titles are short outcome phrases, &lt;=40 characters -- the behaviour lives in the scenario
feat(planner): the BA asks the owner -- an unclear ticket becomes a blocker on the Overview and waits for the answer</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v8.1.0 — fix: Reports KPI labels, meta line, buttons, delta and trend tags use --cd-size-caption (12px)</title><link>https://xswarm.ai/releases#v8.1.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v8.1.0</guid><description>fix: Reports KPI labels, meta line, buttons, delta and trend tags use --cd-size-caption (12px)
refactor: Board columns and cards are distinct surface steps, not outlines
feat: board columns sit on --color-surface and cards on --color-surface-hover, with neutral edges and a secondary-ink count
docs(decisions): amend 0003 -- local dev talks to the staging API, not wrangler --local
feat(release): a release cadence per project, an urgent fix ushered through, and a hold while one is in flight
refactor: Dashboard panels sit on a visibly lighter surface than the page
feat: panels sit on --color-surface with a neutral --color-border edge; footer box keeps its green</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v8.0.0 — refactor: The CI page sets how often production releases and which audits run on s</title><link>https://xswarm.ai/releases#v8.0.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v8.0.0</guid><description>refactor: The CI page sets how often production releases and which audits run on s
feat: the CI page saves release cadence and staging audits per project
feat: blockers carry task_id and the list returns each blocker&apos;s ticket
feat: blocker card leads with its ticket, then the question, and takes a typed answer
docs(style): a readability direction -- surface steps, sparing green, sans for prose
feat(planner): every new ticket is planned once -- quality, a terse title, and no duplicates
feat: drop PostHog script and env; platform analytics page points to Cloudflare Web Analytics
feat(audit): the SEO audit reads what visitors do from Cloudflare&apos;s edge, not PostHog</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v7.0.0 — refactor: svelte-check regression was ungenerated Astro types, not code</title><link>https://xswarm.ai/releases#v7.0.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v7.0.0</guid><description>refactor: svelte-check regression was ungenerated Astro types, not code
refactor: Every 404 is counted with the site that linked to it, for the SEO audit
feat(not-found): the site reports every 404 page, with its Referer, to the API 404 log
feat(not-found): the 404 log -- public report by host, owner-only 7-day read, guarded as one /api area
feat(audit): the SEO audit reads the 404 log and the analytics; the five qualities are its to assess
docs(audit): the On-page SEO audit owns the five qualities and reads what visitors do</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v6.9.0 — fix(foreman): a heartbeat, so a socket that dies without a close is reconnected</title><link>https://xswarm.ai/releases#v6.9.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v6.9.0</guid><description>fix(foreman): a heartbeat, so a socket that dies without a close is reconnected</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v6.8.0 — fix(deploy): the post-promotion verdict waits three minutes for the release to read back</title><link>https://xswarm.ai/releases#v6.8.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v6.8.0</guid><description>fix(deploy): the post-promotion verdict waits three minutes for the release to read back</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v6.7.0 — fix(deploy): key the release exactly as the workers stamp their sha</title><link>https://xswarm.ai/releases#v6.7.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v6.7.0</guid><description>fix(deploy): key the release exactly as the workers stamp their sha</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v6.6.0 — fix(deploy): wait three minutes, not one, for the release to read back after minting</title><link>https://xswarm.ai/releases#v6.6.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v6.6.0</guid><description>fix(deploy): wait three minutes, not one, for the release to read back after minting</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v6.5.0 — fix(deploy): record the release under the short sha the workers stamp</title><link>https://xswarm.ai/releases#v6.5.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v6.5.0</guid><description>fix(deploy): record the release under the short sha the workers stamp</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v6.4.0 — fix(deploy): a failed ship&apos;s reason keeps the error whole</title><link>https://xswarm.ai/releases#v6.4.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v6.4.0</guid><description>fix(deploy): a failed ship&apos;s reason keeps the error whole
fix(deploy): an accepted identical build is judged as the promoted sha, and its release recorded against it</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v6.3.0 — fix(deploy): &apos;identical code&apos; means everything outside the web bundle, not only tests</title><link>https://xswarm.ai/releases#v6.3.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v6.3.0</guid><description>fix(deploy): &apos;identical code&apos; means everything outside the web bundle, not only tests
fix(deploy): a push that changed only tests is live when production serves identical code
feat: The dashboard spec finishes in under 12 s of the critical path
fix: dashboard.spec.ts loads each page once -- 19.2s summed to ~5-6s</description><pubDate>Sat, 26 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v6.2.0 — fix(audit): a security exposure is always a ticket, never a proposal</title><link>https://xswarm.ai/releases#v6.2.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v6.2.0</guid><description>fix(audit): a security exposure is always a ticket, never a proposal</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v6.1.0 — refactor: svelte-check regression was ungenerated .astro types in a fresh worktree</title><link>https://xswarm.ai/releases#v6.1.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v6.1.0</guid><description>refactor: svelte-check regression was ungenerated .astro types in a fresh worktree
fix: /test/account admin:true requires the staging SUPERADMIN_KEY as Bearer, refused before insert
fix(test): release-label score tests inject prsFor instead of shelling out to gh pr list
refactor: svelte-check regression was ungenerated .astro types in a fresh worktree
refactor: A /dev-login link cannot set a cookie on any other domain or path
fix: /dev-login only on ENVIRONMENT staging; tokens with cookie-attribute characters are 400
refactor: svelte-check regression was an unsynced worktree, not code
feat: HSTS, nosniff, Referrer-Policy, X-Frame-Options on SSR pages, prerendered pages and the API worker</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v6.0.0 — refactor: svelte-check regression was an unsynced worktree, not code</title><link>https://xswarm.ai/releases#v6.0.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v6.0.0</guid><description>refactor: svelte-check regression was an unsynced worktree, not code
refactor: svelte-check regression was a missing astro sync, not code
fix: /test routes verify the session token HMAC instead of trusting its payload
fix: dev proxy drops Set-Cookie from box responses
fix: tickets-retry spec advances page.clock past the 5 s retry instead of waiting 20 s of wall time
refactor: give github_installations a write path -- POST /api/github/installations records an installation only when GitHub reports it on the caller&apos;s own GitHub login
refactor: A user cannot get a GitHub token for a repo they only typed into a proje
fix: mint GitHub tokens and write workflows only for installations the caller set up -- new github_installations table, checked before any GitHub mint</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.59.0 — feat(pipeline): a ticket&apos;s own spec is held to 15s of the critical path&apos;s 90s</title><link>https://xswarm.ai/releases#v5.59.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.59.0</guid><description>feat(pipeline): a ticket&apos;s own spec is held to 15s of the critical path&apos;s 90s
refactor: svelte-check regression was ungenerated Astro types in the worktree, not code
refactor: Opening another tenant&apos;s project id on the relay never joins their live
fix: relay keys each room by the caller&apos;s own resolved project id, so a slug equal to another tenant&apos;s UUID no longer joins their room</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.58.0 — fix: project overview and planning chat take the viewport below 1024px instead of sharing one with the header</title><link>https://xswarm.ai/releases#v5.58.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.58.0</guid><description>fix: project overview and planning chat take the viewport below 1024px instead of sharing one with the header
fix(theme): faint dashboard text clears 4.5:1 -- retune --color-text-muted, move --cd-ink-faint and --cd-pending into theme.css
refactor: svelte-check regression was ungenerated .astro types in a fresh worktree, not code
refactor: The five slowest @critical specs wait on a controlled clock, not real ti
fix(e2e): workspace-status, project-single-socket and kanban-thread-delivery advance page.clock past their page timers instead of waiting for them</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.57.0 — feat(relay): a dropped relay reads Reconnecting… and turns the chat dot offline</title><link>https://xswarm.ai/releases#v5.57.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.57.0</guid><description>feat(relay): a dropped relay reads Reconnecting… and turns the chat dot offline
refactor: The tickets list recovers by itself after a failed load
fix(tickets): a failed load retries every 5 s until one succeeds</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.56.0 — feat(runner): every logged event carries when it happened</title><link>https://xswarm.ai/releases#v5.56.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.56.0</guid><description>feat(runner): every logged event carries when it happened</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.55.0 — fix(pipeline): a conflicted candidate is re-coded on today&apos;s trunk, not failed</title><link>https://xswarm.ai/releases#v5.55.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.55.0</guid><description>fix(pipeline): a conflicted candidate is re-coded on today&apos;s trunk, not failed</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.54.0 — refactor: Screen readers hear whether the navbar menus are open or closed</title><link>https://xswarm.ai/releases#v5.54.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.54.0</guid><description>refactor: Screen readers hear whether the navbar menus are open or closed
feat: navbar menu buttons expose aria-expanded/aria-controls; Escape closes the profile menu and returns focus</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.53.0 — feat: &quot;Skip to content&quot; link as first focusable in Navbar, focuses the page main</title><link>https://xswarm.ai/releases#v5.53.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.53.0</guid><description>feat: &quot;Skip to content&quot; link as first focusable in Navbar, focuses the page main
fix(board): a stopped ticket shows why it gave up
feat: quiet empty-states and timestamps use --color-text-quiet (4.5:1+)
refactor: The chat composer is on screen without scrolling at 320×640
feat: the chat composer is on screen without scrolling at 320x640
refactor: keep the workers page under the 500-line limit
feat: a machine-less account sees the connect command first</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.52.0 — fix(test): the proof-gate tests spawn nothing</title><link>https://xswarm.ai/releases#v5.52.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.52.0</guid><description>fix(test): the proof-gate tests spawn nothing
feat: a failed pause, drain or blocker answer says so on screen
fix(test): the runner&apos;s tests never reach production over the network</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.51.0 — refactor: Clicking a quiet perspective in the roster asks it to weigh in</title><link>https://xswarm.ai/releases#v5.51.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.51.0</guid><description>refactor: Clicking a quiet perspective in the roster asks it to weigh in
feat: roster buttons ask the role through the page&apos;s chat; the phase selector saves to the project</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.50.0 — refactor: The project page shows what is blocked on me and lets me answer it</title><link>https://xswarm.ai/releases#v5.50.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.50.0</guid><description>refactor: The project page shows what is blocked on me and lets me answer it
feat: mount ProjectBlockers directly under the project page header</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.49.0 — fix(audit): an audit never re-files work that is already open</title><link>https://xswarm.ai/releases#v5.49.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.49.0</guid><description>fix(audit): an audit never re-files work that is already open
refactor: Clicking &quot;+ Generate New API Key&quot; shows a new key once, ready to copy
feat: Generate New API Key shows the new key once with a Copy button
feat: POST /api/keys mints an xsk_ key, returns the plaintext once
fix: give the homepage features section the #features anchor the footer links to</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.48.0 — feat(tickets): the owner&apos;s settled decisions reach every writer -- audits, planner, foreman</title><link>https://xswarm.ai/releases#v5.48.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.48.0</guid><description>feat(tickets): the owner&apos;s settled decisions reach every writer -- audits, planner, foreman</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.47.0 — refactor: svelte-check regression was missing .astro types, not code</title><link>https://xswarm.ai/releases#v5.47.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.47.0</guid><description>refactor: svelte-check regression was missing .astro types, not code
fix: keep /connect out of the sitemap; export the filter so it is testable
fix(web): one Vite optimizer cache per tree, not one shared through the node_modules symlink
feat(audit): the five site audits run weekly in an idle pipeline slot
feat: one launch stage (Open Alpha) and no prices on / and /plans
refactor: type middleware handle() result as Response so svelte-check stays clean
feat: X-Robots-Tag noindex on private pages via middleware and _headers; robots.txt stops disallowing them
feat(audit): xswarm audit -- five site audits that ask how well a site conforms to best practice</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.46.0 — feat(tickets): one ticket standard -- the ticket skill, and a reviewer every writer passes through</title><link>https://xswarm.ai/releases#v5.46.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.46.0</guid><description>feat(tickets): one ticket standard -- the ticket skill, and a reviewer every writer passes through</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.45.0 — refactor: restore svelte-check baseline by regenerating the worktree&apos;s .astro types</title><link>https://xswarm.ai/releases#v5.45.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.45.0</guid><description>refactor: restore svelte-check baseline by regenerating the worktree&apos;s .astro types
feat: the runner registers this machine and heartbeats every 30s so the dashboard shows it online
fix: on narrow screens the planning chat comes before the roster, keeps a 22rem floor, and the page pads p-4</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.44.0 — refactor: Planning page lists the requests waiting for the foreman to plan</title><link>https://xswarm.ai/releases#v5.44.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.44.0</guid><description>refactor: Planning page lists the requests waiting for the foreman to plan
feat: planning page lists requests awaiting planning, each with its age; board count shares the filter
fix(gate): a failing test is named with its first error line</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.43.0 — refactor: Team Chat popup names the project instead of showing its UUID</title><link>https://xswarm.ai/releases#v5.43.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.43.0</guid><description>refactor: Team Chat popup names the project instead of showing its UUID
fix: Team Chat About line shows the cached project name (or &quot;this project&quot;), not the raw project id
refactor: workers page session-chip style on one line, back under the 500-line file limit
fix: offline machine&apos;s sessions are not live on the Workers page; session-id chips link to #session-&lt;id&gt; on project activity</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.42.0 — perf(pipeline): a cold first critical-path run is re-run once before it can refuse the push</title><link>https://xswarm.ai/releases#v5.42.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.42.0</guid><description>perf(pipeline): a cold first critical-path run is re-run once before it can refuse the push
refactor: Workspace terminal says when no session is attached
feat: TerminalView shows No session attached until terminal output arrives, drops [connected], sends no input before then
feat: /login names the pending machine code when redirected from /connect?code=</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.41.0 — refactor: Knowledge base docs strip YAML front matter before rendering</title><link>https://xswarm.ai/releases#v5.41.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.41.0</guid><description>refactor: Knowledge base docs strip YAML front matter before rendering
feat: DocumentReader strips leading YAML front matter; description is the fallback summary; empty body shows a note
fix(e2e): project-foreman-status gives island hydration 20s on a cold tree
feat: TASKS stat reads X-Total-Count; Recent Tasks rows link to the project&apos;s tickets
refactor: svelte-check regression was a missing astro sync in the fresh worktree, not this change
refactor: Projects list LAST ACTIVITY reflects the latest ticket or deploy
fix(e2e): workspace-status gives island hydration 20s on a cold tree; the 5s claim still starts when the header renders
feat: last_activity_at is the newest of session last_seen, max(tasks.completed_at) and deploy deployed_at</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.40.0 — feat: Live Activity falls back to recent ticket moves from /api/tasks when the event backlog is empty</title><link>https://xswarm.ai/releases#v5.40.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.40.0</guid><description>feat: Live Activity falls back to recent ticket moves from /api/tasks when the event backlog is empty
refactor: regenerate astro types so svelte-check measures the tree, not a missing .astro/
feat: pickIconUrl falls back to https://&lt;name&gt; when the project name is a hostname
fix(test): the fleet optimizeDeps scan skips .xswarm, where task worktrees live
fix(deploy): wait fifteen minutes for staging, not seven and a half</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.39.0 — refactor: Settings lists API keys from /api/keys and lets the user revoke one</title><link>https://xswarm.ai/releases#v5.39.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.39.0</guid><description>refactor: Settings lists API keys from /api/keys and lets the user revoke one
fix(gate): an astro check type error is a named verdict, not a crash
feat: Settings renders /api/keys with created/last-used dates and a confirm-then-DELETE Revoke
fix(platform): config report asks the web hosts so each session cookie goes, and never reads clear unmeasured
fix: scroll the Usage stat into view before the viewport check, as a mobile user would
feat: settings Usage reads projects, tasks and AI cost from /api/billing/usage
perf(pipeline): a lane with nothing it can take plans a waiting ticket, then looks again
fix(board): the tickets never wait on the run state or requests
fix(test): the browser-lifecycle test sweeps every profile it made when it ends
fix(deploy): wait fifteen minutes for production, not five
feat: platform analytics shows a PostHog not connected notice in place of the &apos;--&apos; mockup and dead Refresh/Export buttons
feat: billing buttons POST checkout/portal and follow the Stripe URL; hidden when Stripe is not configured
refactor: The Deployed column groups tickets under the release that shipped them
feat(board): the Deployed column groups tickets under the release that shipped them
fix(worktree): --no-track, so two slots opening worktrees at once do not fight over .git/config
refactor: Restore svelte-check baseline by generating missing Astro types
refactor: Refresh snapshot baselines for routes with intended UI changes
feat: visual-repro --rebaseline re-takes only the triage&apos;s rebaseline routes via an anchored --grep, records rebaseline.json
feat(board): the card face gives the title and the live status the full width
refactor: run.mjs imports sweepFinished via reap.mjs, back under the import and line limits
perf(pipeline): a freed slot takes the next ticket at once instead of waiting for the slowest
refactor: Loop tick reaps idle agents whose ticket is no longer in flight
feat: sweepFinished reaps idle agents off in-flight tickets; loop tick logs them as reaped
fix(visual): regenerate the 26 chromium baselines that 12cad369 made stale
fix(e2e): the push gate selects tests by @critical, not by file name
fix(pipeline): the pre-push quality check includes svelte-check
feat: registry records lastActivityAt; touch() updates it, agentState() reports idle/busy</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.38.0 — fix(web): the Code Editor keeps file content that arrives before Monaco has loaded</title><link>https://xswarm.ai/releases#v5.38.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.38.0</guid><description>fix(web): the Code Editor keeps file content that arrives before Monaco has loaded
perf(pipeline): a quality regression goes back to the agent for one fix pass before the push
fix(worktree): a tree left at the old location no longer holds a task&apos;s branch hostage</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.37.0 — perf(pipeline): ships batch landings behind a 20-minute gap</title><link>https://xswarm.ai/releases#v5.37.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.37.0</guid><description>perf(pipeline): ships batch landings behind a 20-minute gap
feat: worker card LOAD is load_avg against cores, not cpu_usage as a percentage
fix(pipeline): the pipeline&apos;s critical path takes the box-wide lock; a red run names its failing tests</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.36.0 — refactor: Studio and Planning are reachable from the project tabs</title><link>https://xswarm.ai/releases#v5.36.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.36.0</guid><description>refactor: Studio and Planning are reachable from the project tabs
fix(pipeline): a slot the queue cannot fill plans beside the work; a ticket with no touches is planned
feat: Studio and Planning tabs in the project tab row, after Reports</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.35.0 — refactor: Project tabs scroll with a visible affordance at 390px</title><link>https://xswarm.ai/releases#v5.35.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.35.0</guid><description>refactor: Project tabs scroll with a visible affordance at 390px
feat: project tab row fades the edge that hides tabs, so Reports reads as a swipe away</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.34.0 — feat: Dashboard home fits 390px without clipped columns</title><link>https://xswarm.ai/releases#v5.34.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.34.0</guid><description>feat: Dashboard home fits 390px without clipped columns</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.33.0 — refactor: Requests board rows open and a new request can be filed</title><link>https://xswarm.ai/releases#v5.33.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.33.0</guid><description>refactor: Requests board rows open and a new request can be filed
feat: RequestsBoard gets a New Request form (POST /api/requests, prepended) and rows open a detail dialog with owner and status</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.32.0 — refactor: Abandoned sessions can be dismissed from the activity page</title><link>https://xswarm.ai/releases#v5.32.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.32.0</guid><description>refactor: Abandoned sessions can be dismissed from the activity page
feat: Dismiss on an abandoned Activity row deletes its session row via DELETE /api/events/sessions/:id</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.31.0 — feat: an expanded Reports check row lists each finding&apos;s file, line, severity and message</title><link>https://xswarm.ai/releases#v5.31.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.31.0</guid><description>feat: an expanded Reports check row lists each finding&apos;s file, line, severity and message</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.30.0 — fix: Reports colours a crashed check&apos;s row and trend with var(--color-error) instead of the healthy green</title><link>https://xswarm.ai/releases#v5.30.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.30.0</guid><description>fix: Reports colours a crashed check&apos;s row and trend with var(--color-error) instead of the healthy green</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.29.0 — refactor: Workspace Code Editor lists and opens project files</title><link>https://xswarm.ai/releases#v5.29.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.29.0</guid><description>refactor: Workspace Code Editor lists and opens project files
feat: the relay routes file:list/file:read to the foreman, which answers from the repo; the Code Editor shows a file tree and reads Machine offline without a foreman</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.28.0 — refactor: An empty planning chat opens with the BA asking the first question</title><link>https://xswarm.ai/releases#v5.28.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.28.0</guid><description>refactor: An empty planning chat opens with the BA asking the first question
feat: the planning chat opens with Barry asking what the project should do, and the roster marks who has posted</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.27.0 — feat: planOne reads the ticket&apos;s thread (GET /tasks/:id/messages) into the re-plan prompt and records the message ids as evidence.threadRead; the run loop wires it</title><link>https://xswarm.ai/releases#v5.27.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.27.0</guid><description>feat: planOne reads the ticket&apos;s thread (GET /tasks/:id/messages) into the re-plan prompt and records the message ids as evidence.threadRead; the run loop wires it</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.26.0 — fix: dev-preview-project-token waits for the WorkspaceView island to mount before clicking the toggle, whose one-shot event a late island never hears</title><link>https://xswarm.ai/releases#v5.26.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.26.0</guid><description>fix: dev-preview-project-token waits for the WorkspaceView island to mount before clicking the toggle, whose one-shot event a late island never hears
feat: the relay room remembers each delivered question and the foreman&apos;s complete reply in Durable Object storage and answers chat:history with them, oldest first</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.25.0 — feat: the runner&apos;s foreman stores its answer to a queued chat message and marks it delivered; the API forwards it to the room&apos;s /foreman path instead of a 404ing /noop</title><link>https://xswarm.ai/releases#v5.25.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.25.0</guid><description>feat: the runner&apos;s foreman stores its answer to a queued chat message and marks it delivered; the API forwards it to the room&apos;s /foreman path instead of a 404ing /noop</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.24.0 — feat: Team Chat popup reads history on open and polls it while open, labelling You/Foreman</title><link>https://xswarm.ai/releases#v5.24.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.24.0</guid><description>feat: Team Chat popup reads history on open and polls it while open, labelling You/Foreman</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.23.0 — refactor: Project page opens one relay socket, not two</title><link>https://xswarm.ai/releases#v5.23.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.23.0</guid><description>refactor: Project page opens one relay socket, not two
fix: project page shares one relay socket per room (relay-socket.js) across chat, activity and foreman status</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.22.0 — feat: Worker Status shows each offline machine&apos;s last-seen time and a copyable npx xswarm run when none is online</title><link>https://xswarm.ai/releases#v5.22.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.22.0</guid><description>feat: Worker Status shows each offline machine&apos;s last-seen time and a copyable npx xswarm run when none is online</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.21.0 — fix: Workspace view mounts a DevPreview only for the selected tile, so the dev-token and frame are that project&apos;s</title><link>https://xswarm.ai/releases#v5.21.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.21.0</guid><description>fix: Workspace view mounts a DevPreview only for the selected tile, so the dev-token and frame are that project&apos;s</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.20.0 — refactor: Start dev server is disabled with &apos;foreman offline&apos; when no runner is co</title><link>https://xswarm.ai/releases#v5.20.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.20.0</guid><description>refactor: Start dev server is disabled with &apos;foreman offline&apos; when no runner is co
feat: dev preview Start watches foreman:presence; disabled and reading &apos;Foreman offline: run npx xswarm run&apos; until a foreman is connected</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.19.0 — feat: thread messages show author, time and &apos;waiting for foreman&apos;/&apos;read by foreman&apos;; open waiting thread re-read every 3s so the reply lands</title><link>https://xswarm.ai/releases#v5.19.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.19.0</guid><description>feat: thread messages show author, time and &apos;waiting for foreman&apos;/&apos;read by foreman&apos;; open waiting thread re-read every 3s so the reply lands</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.18.0 — fix: Workspace &apos;Open →&apos; and &apos;Full View →&apos; link to /dashboard/projects/:id/workspace, the page that exists</title><link>https://xswarm.ai/releases#v5.18.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.18.0</guid><description>fix: Workspace &apos;Open →&apos; and &apos;Full View →&apos; link to /dashboard/projects/:id/workspace, the page that exists</description><pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.17.0 — feat: foreman answers ticket threads -- API forwards thread:message to the room, /tasks/unanswered backlog answered on connect, replies posted as author foreman</title><link>https://xswarm.ai/releases#v5.17.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.17.0</guid><description>feat: foreman answers ticket threads -- API forwards thread:message to the room, /tasks/unanswered backlog answered on connect, replies posted as author foreman</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.16.0 — feat: room replays worker:status online to joining dashboards and broadcasts offline when the last foreman drops</title><link>https://xswarm.ai/releases#v5.16.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.16.0</guid><description>feat: room replays worker:status online to joining dashboards and broadcasts offline when the last foreman drops</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.15.0 — feat: chat header dot follows foreman:presence -- grey &apos;foreman offline&apos; until the room says the foreman joined</title><link>https://xswarm.ai/releases#v5.15.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.15.0</guid><description>feat: chat header dot follows foreman:presence -- grey &apos;foreman offline&apos; until the room says the foreman joined</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.14.0 — refactor: Chat marks a message &apos;not delivered&apos; when it cannot reach the foreman, w</title><link>https://xswarm.ai/releases#v5.14.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.14.0</guid><description>refactor: Chat marks a message &apos;not delivered&apos; when it cannot reach the foreman, w
feat: chat marks a message not delivered when it cannot reach the foreman, with Retry</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.13.0 — fix: Team Chat popup shows the user&apos;s message once and waits for the foreman&apos;s reply</title><link>https://xswarm.ai/releases#v5.13.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.13.0</guid><description>fix: Team Chat popup shows the user&apos;s message once and waits for the foreman&apos;s reply</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.12.0 — refactor: Project page shows whether the foreman is running, with the `npx xswarm</title><link>https://xswarm.ai/releases#v5.12.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.12.0</guid><description>refactor: Project page shows whether the foreman is running, with the `npx xswarm
feat: project page shows the foreman online with its machine, or a Foreman offline banner with npx xswarm run and Copy
feat: the runner&apos;s foreman names its machine, and the room&apos;s presence carries it</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.11.0 — refactor: The runner&apos;s foreman serves dev-preview requests</title><link>https://xswarm.ai/releases#v5.11.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.11.0</guid><description>refactor: The runner&apos;s foreman serves dev-preview requests
feat(foreman): serve http_req -- start the dev server once via dev-preview.js, report devserver:detected, proxy to http_res, 503 a repo with no dev script at once</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.10.0 — fix(foreman): a reserved agent slot, so the owner is answered while every ticket slot is busy</title><link>https://xswarm.ai/releases#v5.10.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.10.0</guid><description>fix(foreman): a reserved agent slot, so the owner is answered while every ticket slot is busy
fix(studio): resume dev-preview polling when a reload finds &apos;starting&apos;; error state offers Try again
fix(board): a running ticket sits in its live step&apos;s column; cards say what the agent is doing
refactor: Workspace page status connects instead of hanging on &apos;Connecting...&apos;
fix(workspace): dial the dashboard relay route and show foreman presence, not Connecting... forever
fix(foreman): answer from live pipeline facts, never ask for approval
feat(foreman): the runner is the foreman -- it answers the dashboard chat and files tickets; worktrees stay out of scans
fix(dashboard): let the detail-band columns shrink below their widest task title</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.9.0 — fix(pipeline): a UI ticket is proven in a real browser, not jsdom</title><link>https://xswarm.ai/releases#v5.9.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.9.0</guid><description>fix(pipeline): a UI ticket is proven in a real browser, not jsdom</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.8.0 — feat: poll /build-info.json each minute and on tab-visible, reload on a new gitSha once no text field is focused or holding text</title><link>https://xswarm.ai/releases#v5.8.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.8.0</guid><description>feat: poll /build-info.json each minute and on tab-visible, reload on a new gitSha once no text field is focused or holding text</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.7.0 — refactor: Record worktree path and branch on the ticket row as soon as git.open re</title><link>https://xswarm.ai/releases#v5.7.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.7.0</guid><description>refactor: Record worktree path and branch on the ticket row as soon as git.open re
feat: record worktree_path and branch_name on the row the moment git.open resolves</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.6.0 — fix: abort() kills the agent&apos;s whole process group, sharing one killGroup with the budget timer</title><link>https://xswarm.ai/releases#v5.6.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.6.0</guid><description>fix: abort() kills the agent&apos;s whole process group, sharing one killGroup with the budget timer</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.5.0 — refactor: Five-qualities plan: concrete actions per quality, none of it tooling wo</title><link>https://xswarm.ai/releases#v5.5.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.5.0</guid><description>refactor: Five-qualities plan: concrete actions per quality, none of it tooling wo
fix(test): stop-ticket-resolve builds its worktree under a parent of its own, not the run-wide .worktrees
feat: five-qualities.md gives each quality two concrete distribution actions</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.4.0 — refactor: Record an accountable owner for each of the five non-technical qualities</title><link>https://xswarm.ai/releases#v5.4.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.4.0</guid><description>refactor: Record an accountable owner for each of the five non-technical qualities
feat: five-qualities.md names Chad as owner of each quality; linked from TECHNICAL.md</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.3.0 — fix(pipeline): stopped tickets become actionable -- gate-format failures recode, the planner defaults decisions to the owner</title><link>https://xswarm.ai/releases#v5.3.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.3.0</guid><description>fix(pipeline): stopped tickets become actionable -- gate-format failures recode, the planner defaults decisions to the owner</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.2.0 — fix: raised-card test reads ProjectBoard.svelte relative to the test file, not cwd</title><link>https://xswarm.ai/releases#v5.2.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.2.0</guid><description>fix: raised-card test reads ProjectBoard.svelte relative to the test file, not cwd</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.1.0 — feat: popover thread fetched on open (oldest first) with a chat box that POSTs and appends without a reload</title><link>https://xswarm.ai/releases#v5.1.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.1.0</guid><description>feat: popover thread fetched on open (oldest first) with a chat box that POSTs and appends without a reload
refactor: Board cards are compact and skeuomorphic, with a hover popover of the fu
feat: compact raised board card (#ref, title, priority, live step) with hover/focus popover of the full ticket, closed on leave or Escape</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v5.0.0 — feat: task_messages table (migration 0015) and POST/GET /tasks/:id/messages, owner-only</title><link>https://xswarm.ai/releases#v5.0.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v5.0.0</guid><description>feat: task_messages table (migration 0015) and POST/GET /tasks/:id/messages, owner-only</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.27.0 — fix(sync): criteria encoded twice are unwrapped, not declined on every pull</title><link>https://xswarm.ai/releases#v4.27.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.27.0</guid><description>fix(sync): criteria encoded twice are unwrapped, not declined on every pull</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.26.0 — fix(release): a version is always a number -- drop the &apos;releasing&apos; marker</title><link>https://xswarm.ai/releases#v4.26.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.26.0</guid><description>fix(release): a version is always a number -- drop the &apos;releasing&apos; marker</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.25.0 — feat: pushProgress creates a never-seen local ticket under its own id; POST /tasks accepts an id</title><link>https://xswarm.ai/releases#v4.25.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.25.0</guid><description>feat: pushProgress creates a never-seen local ticket under its own id; POST /tasks accepts an id</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.24.0 — refactor: CLAUDE.md links to the harness and restates none of its pipeline rules</title><link>https://xswarm.ai/releases#v4.24.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.24.0</guid><description>refactor: CLAUDE.md links to the harness and restates none of its pipeline rules
feat: CLAUDE.md architecture section points to the harness instead of describing foreman/PM2/tmux</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.23.0 — refactor: Harness stage table lists entry and exit evidence, the actor, and the co</title><link>https://xswarm.ai/releases#v4.23.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.23.0</guid><description>refactor: Harness stage table lists entry and exit evidence, the actor, and the co
feat: harness stage table gains entry/exit evidence, actor and code path per stage</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.22.0 — feat: machineVitals rows CORES/RAM/DISK/LOAD drive the worker monitor; absent reads &apos;not collected&apos;</title><link>https://xswarm.ai/releases#v4.22.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.22.0</guid><description>feat: machineVitals rows CORES/RAM/DISK/LOAD drive the worker monitor; absent reads &apos;not collected&apos;</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.21.0</title><link>https://xswarm.ai/releases#v4.21.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.21.0</guid><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.20.0 — refactor: Always hard-floor Lighthouse&apos;s deterministic subtotal, whatever the base</title><link>https://xswarm.ai/releases#v4.20.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.20.0</guid><description>refactor: Always hard-floor Lighthouse&apos;s deterministic subtotal, whatever the base
feat: always hard-floor lighthouse deterministic subtotal; floored FAIL names the check and count</description><pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.19.0 — refactor: Web middleware answers anonymous protected /api/* with 401 JSON, not /lo</title><link>https://xswarm.ai/releases#v4.19.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.19.0</guid><description>refactor: Web middleware answers anonymous protected /api/* with 401 JSON, not /lo
feat: middleware answers anonymous protected /api/* with 401 JSON instead of passing through</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.18.0 — fix(elegance): MAX_PLANS and planPrompt are module-private -- nothing imports them, and the two dead-code findings held the ratchet at 215 against a 213 baseline</title><link>https://xswarm.ai/releases#v4.18.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.18.0</guid><description>fix(elegance): MAX_PLANS and planPrompt are module-private -- nothing imports them, and the two dead-code findings held the ratchet at 215 against a 213 baseline
feat(deploy): an engine that cannot launch is recorded not_run in the deploy record, never pass</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.17.0 — feat: worktreePreviewState reads a worktree&apos;s preview from the registry, reporting &apos;stopped&apos; when its pid is dead</title><link>https://xswarm.ai/releases#v4.17.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.17.0</guid><description>feat: worktreePreviewState reads a worktree&apos;s preview from the registry, reporting &apos;stopped&apos; when its pid is dead</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.16.0 — refactor: Web middleware checks admin via the in-process API, not a cross-worker f</title><link>https://xswarm.ai/releases#v4.16.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.16.0</guid><description>refactor: Web middleware checks admin via the in-process API, not a cross-worker f
feat: middleware admin check and /api handler call the hono app in-process via lib/api-inprocess</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.15.0 — refactor: Activity board orders not-started tickets the way the scheduler picks th</title><link>https://xswarm.ai/releases#v4.15.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.15.0</guid><description>refactor: Activity board orders not-started tickets the way the scheduler picks th
feat(board): planning column sorts in selectNext&apos;s order and labels the first ready card &apos;next up&apos;</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.14.0 — feat: recordEvidence attributes every proof key; dispatch names observeRedGreen, attempt and branch tip for red/green</title><link>https://xswarm.ai/releases#v4.14.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.14.0</guid><description>feat: recordEvidence attributes every proof key; dispatch names observeRedGreen, attempt and branch tip for red/green</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.13.0</title><link>https://xswarm.ai/releases#v4.13.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.13.0</guid><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.12.0 — fix(board,release): only running tickets occupy working columns; production never shows &apos;unreleased&apos;</title><link>https://xswarm.ai/releases#v4.12.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.12.0</guid><description>fix(board,release): only running tickets occupy working columns; production never shows &apos;unreleased&apos;</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.11.0 — feat(pipeline): planning is a stage -- an idle pass repairs an incomplete ticket instead of stopping</title><link>https://xswarm.ai/releases#v4.11.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.11.0</guid><description>feat(pipeline): planning is a stage -- an idle pass repairs an incomplete ticket instead of stopping
fix(board): a pending ticket is in Planning, not wherever an old attempt got to</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.10.0 — refactor: Every /api area is auth-guarded or explicitly listed public, by test</title><link>https://xswarm.ai/releases#v4.10.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.10.0</guid><description>refactor: Every /api area is auth-guarded or explicitly listed public, by test
feat: export PUBLIC_API_AREAS from middleware/auth.js naming the six /api areas that are deliberately not behind authMiddleware, each with its reason</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.9.0 — refactor: A gate check that times out is reported TIMED OUT, never scored from its</title><link>https://xswarm.ai/releases#v4.9.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.9.0</guid><description>refactor: A gate check that times out is reported TIMED OUT, never scored from its
feat: parseCount reports timedOut as TIMED OUT before matching; runSupervised in supervise.mjs is the gate&apos;s sh, importable, and names the deadline from timeout(1)&apos;s 124/137 or execSync&apos;s own kill</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.8.0 — refactor: Admin Platform links collapse behind one persisted sidebar control</title><link>https://xswarm.ai/releases#v4.8.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.8.0</guid><description>refactor: Admin Platform links collapse behind one persisted sidebar control
feat: admin Platform links collapse behind one aria-expanded toggle, open state persisted under xswarm_dash_platform_open in try/catch</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.7.0 — feat: computeProjectHealth reports gate_measured_at and deploy_measured_at</title><link>https://xswarm.ai/releases#v4.7.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.7.0</guid><description>feat: computeProjectHealth reports gate_measured_at and deploy_measured_at</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.6.0 — refactor: ui-audit --style-guide emits observed colour palette mapped to theme tok</title><link>https://xswarm.ai/releases#v4.6.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.6.0</guid><description>refactor: ui-audit --style-guide emits observed colour palette mapped to theme tok
feat: ui-audit --style-guide emits the observed colour palette by frequency, mapped to theme.css tokens</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.5.0 — refactor: A completion PATCH never rewrites another ticket&apos;s board_column</title><link>https://xswarm.ai/releases#v4.5.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.5.0</guid><description>refactor: A completion PATCH never rewrites another ticket&apos;s board_column
fix: completion PATCH reports newly startable tickets without writing their board_column or stage events</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.4.0 — refactor: POST /api/requests refuses a request that resolves to no project</title><link>https://xswarm.ai/releases#v4.4.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.4.0</guid><description>refactor: POST /api/requests refuses a request that resolves to no project
feat: POST /requests refuses a request that resolves to no project</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.3.0 — feat: brittleSelectors -- class-chain locator/$/waitForSelector strings reported by file:line</title><link>https://xswarm.ai/releases#v4.3.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.3.0</guid><description>feat: brittleSelectors -- class-chain locator/$/waitForSelector strings reported by file:line</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.2.0 — fix(run): --cap N raises the agent spawn cap to N -- two-at-a-time never ran concurrently</title><link>https://xswarm.ai/releases#v4.2.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.2.0</guid><description>fix(run): --cap N raises the agent spawn cap to N -- two-at-a-time never ran concurrently</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.1.0 — fix(stop-hook): worker instructions go only to sessions the pipeline marked, never by location</title><link>https://xswarm.ai/releases#v4.1.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.1.0</guid><description>fix(stop-hook): worker instructions go only to sessions the pipeline marked, never by location</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v4.0.0 — fix(deploy): a staging build already serving the sha counts -- no 7.5 min wait for a rebuild that never comes</title><link>https://xswarm.ai/releases#v4.0.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v4.0.0</guid><description>fix(deploy): a staging build already serving the sha counts -- no 7.5 min wait for a rebuild that never comes
fix(publish): a sync-job state commit can never hold the release again, and a held release shows on the board
feat: unscoped GET /tasks filters to owned projects in SQL and reports X-Total-Count, X-Withheld-Count, X-Limit-Applied (clamped ?limit=)
feat: deploy event reason keeps each line&apos;s final \r frame and drops repeated spinner lines, rendered before the tail slice so the cause survives
feat: print-only xSwarm header with live URL; print tables fixed-layout with wrapping cells, no overflow-x auto
refactor: E2E triage files only causes that are new since the recorded baseline
feat(triage): baseline option splits known causes out of tickets, tickets carry their signature
feat: refactor prompt demands Applied:/Not applied: lines; refactorPass refuses a blank standard
feat: meshNote explains a missing console link; workers card renders it as .worker-mesh-absent
feat: platform audit names hono/cookie getCookie and c.json(); git ls-files runs as a literal command, not an interpolated template
feat: openingMessage (Barry asks the phase question) and spokenFrom (speakers from chat messages)
refactor: No npm publish path exists, and Getting Started says pre-beta instead of
feat: remove the npm publish path; Getting Started says pre-beta and points to the waitlist
refactor: selectNext takes a ready UI ticket before an equal non-UI ticket
feat: UI-before-non-UI tiebreak in queueOrder, after priority, before creation
feat: Pin GET /users/me to github_username alongside /auth/me
feat: tasks.test_path column (migration 0014), POST /tasks stores it, GET returns it
refactor: The board column is derived from evidence, never stored
feat: GET /tasks derives board_column from the evidence in test_results, never from the stored row
refactor: `xswarm task purge --synthetic` removes non-UUID fixture rows from the s
feat: xswarm task purge --synthetic deletes non-UUID rows from the local store and prints the count
feat: xswarm clean --global lists leftovers outside the repo with sizes and removes them on --yes
feat: freeze an agent-authored ticket test at the branch commit that first added it
refactor: Task worktrees live under &lt;repo&gt;/.xswarm/local/worktrees, not the parent
feat: Task worktrees live under &lt;repo&gt;/.xswarm/local/worktrees, not the parent
feat: open task worktrees under &lt;repo&gt;/.xswarm/local/worktrees; gate, reaper and live feed recognise the new layout
feat: delete coordinator loop, prompt and runtime (and their tests) and unwire them from daemon-entry
refactor: A publish records the promotion (from sha, to sha, at) on every ticket i
feat: publish reads production&apos;s sha before the ship and records deployPromotion {from, to, promotedAt} via markPublished
refactor: The stop watchdog allows a stop in a session that has no ticket
feat: the stop watchdog allows a stop in a session that has no ticket
feat: a resolved ticket&apos;s stop names its missing stage evidence by key
refactor: A report with zero findings shows &quot;none&quot; on its line instead of no count
feat: &quot;No findings&quot; counts as zero; report line shows &quot;none&quot; instead of a blank count
feat: chat history jumps to newest message; architect speaker labelled; unkeyed list tolerates shared ts</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.60.0 — feat(pipeline): tickets run concurrently up to the cap, merges one at a time; live feed per ticket</title><link>https://xswarm.ai/releases#v3.60.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.60.0</guid><description>feat(pipeline): tickets run concurrently up to the cap, merges one at a time; live feed per ticket</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.59.0 — feat: standingOf reports queue position from selectNext&apos;s order, or implemented-awaiting-deploy</title><link>https://xswarm.ai/releases#v3.59.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.59.0</guid><description>feat: standingOf reports queue position from selectNext&apos;s order, or implemented-awaiting-deploy</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.58.0 — perf(prompt): the coding prompt says each rule once -- 5,768 chars to 2,274</title><link>https://xswarm.ai/releases#v3.58.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.58.0</guid><description>perf(prompt): the coding prompt says each rule once -- 5,768 chars to 2,274</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.57.0 — feat: worker-name-audit lists production hostnames served by a staging/preview-named worker</title><link>https://xswarm.ai/releases#v3.57.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.57.0</guid><description>feat: worker-name-audit lists production hostnames served by a staging/preview-named worker</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.56.0 — fix(board): Deployed lists the newest release first, not by priority</title><link>https://xswarm.ai/releases#v3.56.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.56.0</guid><description>fix(board): Deployed lists the newest release first, not by priority
fix(merge-queue): a named failing test is a red verdict, not a crashed host</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.55.0 — feat(web): hide AI Musings, Plans and pricing; NOW strip at the bottom; every update bumps the version</title><link>https://xswarm.ai/releases#v3.55.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.55.0</guid><description>feat(web): hide AI Musings, Plans and pricing; NOW strip at the bottom; every update bumps the version
perf(map): a ticket&apos;s declared files and test lead its orientation, even when they do not exist yet
feat(agent): the default coding agent, escalating to Fable when a ticket is struggling
feat(board): every card shows what is true of it; sorted by priority, dependency shown</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.54.1 — fix(e2e): mask any data-snapshot-mask element, not just the release badge</title><link>https://xswarm.ai/releases#v3.54.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.54.1</guid><description>fix(e2e): mask any data-snapshot-mask element, not just the release badge</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.54.0 — fix(triage): &apos;authenticated API calls failed&apos; is one page&apos;s failure, not a broken sign-in</title><link>https://xswarm.ai/releases#v3.54.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.54.0</guid><description>fix(triage): &apos;authenticated API calls failed&apos; is one page&apos;s failure, not a broken sign-in
fix(dispatch): keep the tail of a refused commit&apos;s reason -- git&apos;s error is at the end, not the command line
feat: signed-in console sweep covers every dashboard page</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.53.0 — feat: request created from a chat message keeps its wording and a link back</title><link>https://xswarm.ai/releases#v3.53.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.53.0</guid><description>feat: request created from a chat message keeps its wording and a link back</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.52.0 — feat: verify deploy against served sha, report unverified if probe fails</title><link>https://xswarm.ai/releases#v3.52.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.52.0</guid><description>feat: verify deploy against served sha, report unverified if probe fails</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.51.0 — feat: group deep-audit findings into ticket drafts by cause</title><link>https://xswarm.ai/releases#v3.51.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.51.0</guid><description>feat: group deep-audit findings into ticket drafts by cause</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.50.0 — feat: implement principlesIndex mapping stages to principle documents</title><link>https://xswarm.ai/releases#v3.50.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.50.0</guid><description>feat: implement principlesIndex mapping stages to principle documents</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.49.0 — refactor: A document can be shared by an unguessable, revocable, noindex link</title><link>https://xswarm.ai/releases#v3.49.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.49.0</guid><description>refactor: A document can be shared by an unguessable, revocable, noindex link
feat: document share link is unguessable, revocable, and noindex</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.48.0 — feat: validatePlan refuses a ticket whose bdd lacks Given, When or Then</title><link>https://xswarm.ai/releases#v3.48.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.48.0</guid><description>feat: validatePlan refuses a ticket whose bdd lacks Given, When or Then</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.47.0 — refactor: Activity board cards show when they moved, and an empty board says so on</title><link>https://xswarm.ai/releases#v3.47.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.47.0</guid><description>refactor: Activity board cards show when they moved, and an empty board says so on
feat(board): cards show relative time, empty board says so once</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.46.0 — feat(lighthouse-audit): runRecord/notRunRecord carry timestamp, commit and scores, or not_run with a reason</title><link>https://xswarm.ai/releases#v3.46.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.46.0</guid><description>feat(lighthouse-audit): runRecord/notRunRecord carry timestamp, commit and scores, or not_run with a reason</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.45.3 — fix(commit): a failed pipeline commit still names work the branch already holds; its reason is kept</title><link>https://xswarm.ai/releases#v3.45.3</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.45.3</guid><description>fix(commit): a failed pipeline commit still names work the branch already holds; its reason is kept</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.45.2 — fix(dispatch): restore the ticket&apos;s test only when test cases were deleted, not when lines were edited</title><link>https://xswarm.ai/releases#v3.45.2</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.45.2</guid><description>fix(dispatch): restore the ticket&apos;s test only when test cases were deleted, not when lines were edited</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.45.1 — fix(merge-queue): the candidate suite waits for an in-flight ship instead of timing out beside it</title><link>https://xswarm.ai/releases#v3.45.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.45.1</guid><description>fix(merge-queue): the candidate suite waits for an in-flight ship instead of timing out beside it</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.45.0 — feat: bindingDiff names bindings api declares that web lacks per env</title><link>https://xswarm.ai/releases#v3.45.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.45.0</guid><description>feat: bindingDiff names bindings api declares that web lacks per env</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.44.1 — fix(stop-hook): in a task worktree an unpushed commit is the end state, not outstanding work</title><link>https://xswarm.ai/releases#v3.44.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.44.1</guid><description>fix(stop-hook): in a task worktree an unpushed commit is the end state, not outstanding work</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.44.0 — fix(run): wait for the in-flight publish before closing the store, so shipped tickets get their deploy proof</title><link>https://xswarm.ai/releases#v3.44.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.44.0</guid><description>fix(run): wait for the in-flight publish before closing the store, so shipped tickets get their deploy proof
refactor: The visual audit covers every per-project dashboard page
feat: visual audit covers every per-project dashboard page
refactor: Tickets carry a persisted rank that orders selection and listing
feat: persist a manual rank that orders selection and listing</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.43.0 — refactor: Visual triage prints a per-route verdict: re-baseline with reason, or re</title><link>https://xswarm.ai/releases#v3.43.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.43.0</guid><description>refactor: Visual triage prints a per-route verdict: re-baseline with reason, or re
feat: decisionsFor prints a per-route verdict, rebaseline or file-ticket</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.42.1 — perf(refactor): check a refactor with vitest related, not the whole suite twice</title><link>https://xswarm.ai/releases#v3.42.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.42.1</guid><description>perf(refactor): check a refactor with vitest related, not the whole suite twice</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.42.0 — refactor: Public share link for a project&apos;s quality report, revocable to 404</title><link>https://xswarm.ai/releases#v3.42.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.42.0</guid><description>refactor: Public share link for a project&apos;s quality report, revocable to 404
feat: revocable public share link for a project&apos;s quality report</description><pubDate>Wed, 23 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.41.2 — fix(pipeline): a red candidate goes back to coding with a reason it can act on</title><link>https://xswarm.ai/releases#v3.41.2</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.41.2</guid><description>fix(pipeline): a red candidate goes back to coding with a reason it can act on</description><pubDate>Tue, 22 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.41.1 — perf(refactor): the refactor agent leaves the QA order to the pipeline, and does not commit</title><link>https://xswarm.ai/releases#v3.41.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.41.1</guid><description>perf(refactor): the refactor agent leaves the QA order to the pipeline, and does not commit</description><pubDate>Tue, 22 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.41.0 — refactor(hooks): correct resolveStopTicket docstring to match actual wiring</title><link>https://xswarm.ai/releases#v3.41.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.41.0</guid><description>refactor(hooks): correct resolveStopTicket docstring to match actual wiring
feat(hooks): resolve a Stop event&apos;s ticket from its recorded worktree_path</description><pubDate>Tue, 22 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.40.0 — fix(pipeline): unit-test tickets can pass -- two faults found running 4b492e98</title><link>https://xswarm.ai/releases#v3.40.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.40.0</guid><description>fix(pipeline): unit-test tickets can pass -- two faults found running 4b492e98
feat(board): the live feed shows repo-relative paths; a rewritten ticket&apos;s title reaches the board</description><pubDate>Tue, 22 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.39.1 — fix(pipeline): unplanned tickets are left out of the CLI queue, not refused one pass at a time</title><link>https://xswarm.ai/releases#v3.39.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.39.1</guid><description>fix(pipeline): unplanned tickets are left out of the CLI queue, not refused one pass at a time</description><pubDate>Tue, 22 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.39.0 — refactor(run): keep run.mjs under the 500-line limit</title><link>https://xswarm.ai/releases#v3.39.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.39.0</guid><description>refactor(run): keep run.mjs under the 500-line limit
feat(pipeline): a ticket with no named test is not dispatched</description><pubDate>Tue, 22 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.38.0 — feat(hooks): wire routeOnStop into the installed Stop hook, log the workflow event</title><link>https://xswarm.ai/releases#v3.38.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.38.0</guid><description>feat(hooks): wire routeOnStop into the installed Stop hook, log the workflow event</description><pubDate>Tue, 22 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.37.1 — fix(refactor): a revert that undoes the agent&apos;s commit; gate green on main again</title><link>https://xswarm.ai/releases#v3.37.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.37.1</guid><description>fix(refactor): a revert that undoes the agent&apos;s commit; gate green on main again
fix(board): order the cost trend by pipeline finish time, not completed_at
feat(board)+feat(task): per-ticket cost trend on the board; map hit rate per ticket
perf(agent)+feat(board): pipeline agents stop redoing the harness; a full-width Now panel</description><pubDate>Tue, 22 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.37.0 — fix(board): a ticket that stops short stays where it stopped, red, with the reason</title><link>https://xswarm.ai/releases#v3.37.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.37.0</guid><description>fix(board): a ticket that stops short stays where it stopped, red, with the reason
feat(board): the running card streams what the agent is doing</description><pubDate>Tue, 22 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.36.1 — fix(board): a queued ticket is in Planning, not off the board</title><link>https://xswarm.ai/releases#v3.36.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.36.1</guid><description>fix(board): a queued ticket is in Planning, not off the board</description><pubDate>Tue, 22 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.36.0 — feat(board): live kanban -- cards move per step, animate between columns, show what they are doing</title><link>https://xswarm.ai/releases#v3.36.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.36.0</guid><description>feat(board): live kanban -- cards move per step, animate between columns, show what they are doing
docs(board): comment no longer describes the removed deploying column</description><pubDate>Tue, 22 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.35.3 — fix(board): six columns, and a column a ticket has left is cleared</title><link>https://xswarm.ai/releases#v3.35.3</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.35.3</guid><description>fix(board): six columns, and a column a ticket has left is cleared</description><pubDate>Tue, 22 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.35.2 — refactor(web): render both profile chips from one list, not two copies</title><link>https://xswarm.ai/releases#v3.35.2</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.35.2</guid><description>refactor(web): render both profile chips from one list, not two copies
fix(web): read the handle by the name the API sends, and handle its absence</description><pubDate>Tue, 22 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.35.1 — fix(deploy): a helper import must not disable fetch for its importer</title><link>https://xswarm.ai/releases#v3.35.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.35.1</guid><description>fix(deploy): a helper import must not disable fetch for its importer</description><pubDate>Tue, 22 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.35.0 — fix(reap): our own tmp-scope run roots are ours, and were being skipped</title><link>https://xswarm.ai/releases#v3.35.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.35.0</guid><description>fix(reap): our own tmp-scope run roots are ours, and were being skipped
fix(deploy): the refusal no longer crashes instead of explaining
fix(api): an icon that was never fetched is not an icon that failed
feat(critical-path): record WHICH specs ran, so the binding goes live
fix(evidence): e2ePassed means THIS ticket&apos;s spec passed, not that the suite was green
docs(harness): cite repo-relative paths and stop printing telemetry as stage evidence
docs: the pipeline&apos;s architecture decisions, written for outside review
docs: an overview of the whole thing, and the missing half of the harness
feat(git): commit every iteration, test first, and verify the trail
fix(worktree): keep task-worktree.js under its line budget
feat(git): three commits per ticket — the test, the code, the cleanup
fix(publish): no exports that exist only for a test, and a correction
feat(git): the commit is the record — conventional subject and evidence trailers
feat(publish): a ticket&apos;s development history, published to GitHub
fix(score): an unreadable PR list is unknown, not &apos;no pull request&apos;
feat(score): link every ticket to its pull request
feat(score): every ticket&apos;s score carries the release that shipped it
feat(lifecycle): six stages — Planning, Coding, Testing, Refactoring, Staging, Deployed
feat(observability): the stage score is part of brief, monitor and the API
feat(score): quality, stability, speed and tokens for every stage of every ticket
fix(test): the run lock made a shared fake repoPath a real collision
fix(paths): no speculative exports
fix(reap): the browser reaper may only kill this repo&apos;s own browsers
feat(app): delete both global installers
feat(task): a board ticket keeps the test path its author named
feat(task): the observer is told which file is the ticket&apos;s test
feat(task): restore the ticket&apos;s own test before anything observes it
feat(task): a ticket carries the path of its own test
fix(gate): the run lock must not cost a security or elegance regression
feat(run): take the run lock, and reclaim what a dead run was holding
fix(task): deployed means deployed — delete the two agentless sweeps
feat(task): a run lock that makes one-ticket-at-a-time a fact
fix(stop-hook): a subagent is not charged with the repo&apos;s unpushed commits
fix(stop-hook): only a ticket worker is asked to confirm a clean stop
feat(visual-gate): a hard timeout that ends the sweep that never comes back
refactor(favicon): a failed lookup is a date, not a row with an icon in it
feat(pipeline): board pull, refusal path, and the observability API
refactor(machine-identity): the OS tests say the whole string, and one of them could not pass</description><pubDate>Tue, 22 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.34.0 — feat(pipeline): an agent can refuse an impossible ticket, and the store can be asked instead of guessed at</title><link>https://xswarm.ai/releases#v3.34.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.34.0</guid><description>feat(pipeline): an agent can refuse an impossible ticket, and the store can be asked instead of guessed at
refactor(deploy): the crossed-trigger story was told three times over
refactor(deploy): the failure format was restated where a tested one already existed
refactor(publish): the publisher&apos;s own guard was untested, so nothing held it in place
feat(gate): the bdd channel could not tell a regression from a stub that never ran
fix(account): DELETE /api/users/me 500s for every user, and the fix needs a decision</description><pubDate>Mon, 21 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.33.0 — feat(bdd): tell a step that can never pass from one that broke today</title><link>https://xswarm.ai/releases#v3.33.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.33.0</guid><description>feat(bdd): tell a step that can never pass from one that broke today
feat(board): a ticket that has landed but not shipped now says so</description><pubDate>Mon, 21 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.32.1 — fix(runner): `completed` meant &quot;landed on trunk&quot;, and the board had no way to say so</title><link>https://xswarm.ai/releases#v3.32.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.32.1</guid><description>fix(runner): `completed` meant &quot;landed on trunk&quot;, and the board had no way to say so
fix(board): 44 of the 53 cards in Coding were already live in production
fix(web): the ticket list said 53 tickets were being coded while none were
refactor(web): the memory decides what is worth remembering, not the caller</description><pubDate>Mon, 21 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.32.0 — feat(web): build-info reports the sha the API answered with</title><link>https://xswarm.ai/releases#v3.32.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.32.0</guid><description>feat(web): build-info reports the sha the API answered with</description><pubDate>Mon, 21 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.31.2 — fix(lighthouse): the chromium shm leak was ours, not Playwright&apos;s</title><link>https://xswarm.ai/releases#v3.31.2</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.31.2</guid><description>fix(lighthouse): the chromium shm leak was ours, not Playwright&apos;s
refactor(web): the head test failed on attribute order and guarded four of eight icons</description><pubDate>Mon, 21 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.31.1 — fix(tmp): our own tests leaked a million inodes, and a full disk became a verdict on a ticket</title><link>https://xswarm.ai/releases#v3.31.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.31.1</guid><description>fix(tmp): our own tests leaked a million inodes, and a full disk became a verdict on a ticket
fix(audit): the waste metric fired on the half that complied and was silent on the real cost
fix(merge): a machine that could not run the suite told the ticket its code was bad
refactor(api): the test named the clamp but could not have noticed it missing</description><pubDate>Mon, 21 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.31.0 — fix(api): the second stage model gave a different answer to the first, and nobody had asked it yet</title><link>https://xswarm.ai/releases#v3.31.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.31.0</guid><description>fix(api): the second stage model gave a different answer to the first, and nobody had asked it yet
fix(audit): the rows that most needed catching satisfied every rule in the file
feat(probe): cover the changed-paths class, and stop paying for the proof when nothing is dispatched
fix(dispatch): a ticket could be stripped of all twelve stage proofs and still hold the red/green pair
fix(deployed): 80 tickets are &quot;verified live in production&quot; and nothing can see that they are not
fix(deploy): a deploy applied whatever migrations were on disk, not the ones it was shipping
fix(observers): the red/green verdict was computed against another ticket&apos;s files</description><pubDate>Mon, 21 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.30.0 — fix(hooks): the stop watchdog counted every agent&apos;s files as yours</title><link>https://xswarm.ai/releases#v3.30.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.30.0</guid><description>fix(hooks): the stop watchdog counted every agent&apos;s files as yours
feat(pipeline): prove every observer can say NO before dispatching a ticket
fix(pipeline): a commit that never happened was recorded as a commit, and 26 tickets shipped nothing
fix(auth): every returning GitHub login was 500ing on a Date in a text column
feat(run): nothing could say &quot;one ticket, then stop&quot;
fix(board): a ticket that stopped in a column was counted as still working in it</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.29.0 — feat(pipeline): audit each finished ticket before the next one starts</title><link>https://xswarm.ai/releases#v3.29.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.29.0</guid><description>feat(pipeline): audit each finished ticket before the next one starts</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.28.1 — fix(web): a 401 left the previous account&apos;s project names for the next person</title><link>https://xswarm.ai/releases#v3.28.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.28.1</guid><description>fix(web): a 401 left the previous account&apos;s project names for the next person</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.28.0 — feat(map): index module-private declarations — the reason sed was still faster</title><link>https://xswarm.ai/releases#v3.28.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.28.0</guid><description>feat(map): index module-private declarations — the reason sed was still faster</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.27.1 — fix(chat): `xswarm chat` faked an agent reply and invented a cost to go with it</title><link>https://xswarm.ai/releases#v3.27.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.27.1</guid><description>fix(chat): `xswarm chat` faked an agent reply and invented a cost to go with it</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.27.0 — feat(monitor): every fact I kept asking bash for, in one call — CLI and API, same function</title><link>https://xswarm.ai/releases#v3.27.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.27.0</guid><description>feat(monitor): every fact I kept asking bash for, in one call — CLI and API, same function</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.26.5 — fix(gate): it reported a test failure twice today against a suite that passes alone</title><link>https://xswarm.ai/releases#v3.26.5</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.26.5</guid><description>fix(gate): it reported a test failure twice today against a suite that passes alone</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.26.4 — refactor(stages): cost and distribution to their own modules</title><link>https://xswarm.ai/releases#v3.26.4</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.26.4</guid><description>refactor(stages): cost and distribution to their own modules
fix(stages): archiving a ticket&apos;s attempts erased their cost from the waste figure</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.26.3 — fix(audit): a no-op&apos;s cost was reported as the ticket&apos;s lifetime spend</title><link>https://xswarm.ai/releases#v3.26.3</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.26.3</guid><description>fix(audit): a no-op&apos;s cost was reported as the ticket&apos;s lifetime spend
refactor(dispatch): priorFailureOf is module-private, as its only caller is here</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.26.2 — fix(telemetry): testSeconds charged log-reading to running tests, and the prompt quoted it</title><link>https://xswarm.ai/releases#v3.26.2</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.26.2</guid><description>fix(telemetry): testSeconds charged log-reading to running tests, and the prompt quoted it</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.26.1 — fix(telemetry): I optimised for &quot;orientation&quot; twice without checking that is what these were</title><link>https://xswarm.ai/releases#v3.26.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.26.1</guid><description>fix(telemetry): I optimised for &quot;orientation&quot; twice without checking that is what these were</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.26.0 — feat(agents): hand the map&apos;s answer over, instead of telling them where to ask</title><link>https://xswarm.ai/releases#v3.26.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.26.0</guid><description>feat(agents): hand the map&apos;s answer over, instead of telling them where to ask
refactor(connect): the dispatch reads as a chain, and one rule is tested once</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.25.1 — fix(map): one entry point, so there is nothing to study</title><link>https://xswarm.ai/releases#v3.25.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.25.1</guid><description>fix(map): one entry point, so there is nothing to study</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.25.0 — feat(api): /api/tickets — the derived facts, in the one place that derives them</title><link>https://xswarm.ai/releases#v3.25.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.25.0</guid><description>feat(api): /api/tickets — the derived facts, in the one place that derives them</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.24.0 — feat(telemetry): which stage spent the tokens, not just how long it took</title><link>https://xswarm.ai/releases#v3.24.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.24.0</guid><description>feat(telemetry): which stage spent the tokens, not just how long it took
fix(agents): the map is a queryable index and the prompt told them to read it whole</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.23.0 — feat(stats): /api/stats answers &quot;is this pipeline wasting effort&quot;, in one call</title><link>https://xswarm.ai/releases#v3.23.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.23.0</guid><description>feat(stats): /api/stats answers &quot;is this pipeline wasting effort&quot;, in one call
fix(telemetry): the map-usage counter watched a file the prompt never sends agents to</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.22.3 — fix(queue): a finished ticket held the only slot and the pipeline stopped silently</title><link>https://xswarm.ai/releases#v3.22.3</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.22.3</guid><description>fix(queue): a finished ticket held the only slot and the pipeline stopped silently
fix(visual): regenerate the baselines the navbar fixes made stale</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.22.2 — fix(runner): a ticket verified live in production could never be marked completed</title><link>https://xswarm.ai/releases#v3.22.2</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.22.2</guid><description>fix(runner): a ticket verified live in production could never be marked completed</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.22.1 — fix(deployed): the sweep looked for one key and the ticket could only have the other</title><link>https://xswarm.ai/releases#v3.22.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.22.1</guid><description>fix(deployed): the sweep looked for one key and the ticket could only have the other
fix(runner): a landed ticket was handed to an agent and had its whole history erased
fix(dispatch): a ticket recorded THAT it committed, never WHICH commit</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.22.0 — fix(deploy): detecting the drift changed nothing until the guard agreed with it</title><link>https://xswarm.ai/releases#v3.22.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.22.0</guid><description>fix(deploy): detecting the drift changed nothing until the guard agreed with it
fix(deploy): trunk ran 60 commits ahead of production and nothing noticed
perf(runner): a ticket that had already coded re-coded from scratch to reach merge
fix(brief): a daemon nobody started is not a fault
fix(audit): &quot;stopped with no reason recorded&quot; on a ticket that recorded one
fix(audit): a reason written by hand is invisible to the guard that checks reasons
fix(runner): &quot;project a53dd66f is run state running&quot; was not a reason anybody could act on
fix(brief): &quot;1 ready · 0 in flight&quot; said nothing about why nothing started
fix(runner): the dashboard&apos;s pause button did nothing to the process doing the work
refactor(task): extract closeSuperseded, which pushed runner.mjs past 500 lines
fix(pipeline): seven tickets whose work had already shipped could never be closed
fix(stages): &quot;50 unproven&quot; with no way to ask what they failed to prove
fix(gate): a count that saw MORE routes was being reported as decay
fix(gate): an unreachable signed-in surface was scored as a verdict on the code
feat(elegance): raw SQL bypassed the column check, including the secrets tables
feat(elegance): catch code that writes a column no schema declares — it found five
fix(audit): the no-op fix I shipped three hours ago never fired
fix(stages): a ticket that completed without changing code was counted as having died
fix(stages): the report printed two different &quot;agent call&quot; counts
fix(stages): &quot;queued before anything touched it&quot; was false for requeued tickets
feat(stages): a ticket is worked for 19 minutes and queued for 23 hours, and the report never said so
fix(verify-release): --api with no value silently verified PRODUCTION
fix(critical-path): --cwd with no value measured the main checkout instead of the worktree
fix(mint-token): a flag given with no value silently widened the token&apos;s scope
fix(refactor): a ticket&apos;s cleanup pass was marking landed commits red
fix(merge): an unmeasurable candidate cost a whole ticket, not a suite run
fix(refactor): two refactors in three were discarded on a run that measured nothing
fix(refactor): an unmeasurable suite was recorded as the refactor breaking the suite
refactor(reasons): one suiteVerdict, used by both stages that compose one
fix(refactor): the revert reason buried its verdict under 1,500 characters of warnings
fix(migrations): every input that was not exactly --staging meant PRODUCTION
fix(hooks): installing over a broken settings.json replaced it and reported success
fix(sync): &quot;not found&quot; was retried every tick, which is the same waste one level down
fix(run): quieting the sync took the board&apos;s freshness heartbeat with it
perf(sync): the board sync re-sent all 100 tickets every minute, for ever
fix(elegance): a table written through a helper read as &quot;never written at all&quot;
fix(elegance): one block copied into nine files counted as thirty-six findings
fix(security): four permanent criticals were placeholders with high character diversity
fix(merge): a landed branch was kept for ever, and 222 of them had accumulated
fix(daemon): the devserver relay dialled a path the API has never served
fix(status): a displaced request is open work, and the diagnostic counted it as done
fix(e2e-repair): a run that deduped against nothing reported success like any other
fix(e2e-repair): the same cause filed twice in one run, because the guard never saw its own work
fix(runner): a ticket killed three times the same way was parked as three failures
feat(stages): the shell-orientation share now carries its cost
fix(audit): an agent that found nothing to change was filed as a ticket nobody attempted
fix(brief): a single dropped request was reported as a production outage
feat(stages): a quarter of agent calls were killed at the budget and the report hid it
fix(select): a ticket consolidated into finished work still blocked everything behind it
fix(select): a ticket blocked behind a stalled ticket read as the one ready ticket
fix(brief): &quot;5 ready&quot; when four of the five could never be dispatched
fix(bdd): a slash in a step&apos;s text is alternation, so three steps could not match</description><pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.21.1 — fix(bdd): the worker liveness steps asserted a rule the API does not have</title><link>https://xswarm.ai/releases#v3.21.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.21.1</guid><description>fix(bdd): the worker liveness steps asserted a rule the API does not have
fix(e2e): an empty browser cache stops the suite at the top, not 447 tests in
refactor(bdd): delete 145 lines of step definitions that could never run
fix(bdd): 33 step definitions are regexes of a cucumber expression, and match nothing
refactor(hub): one breakpoint block for the rail, not three rules undoing each other
fix(sync): two tickets the board never had were reported as failures, every tick
fix(runner): a landing stopped the queue for the length of a deploy
fix(bdd): the only red left is a real defect</description><pubDate>Sat, 19 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.21.0 — fix(security): the auditor&apos;s own test file was reporting itself, ten times</title><link>https://xswarm.ai/releases#v3.21.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.21.0</guid><description>fix(security): the auditor&apos;s own test file was reporting itself, ten times
fix(bdd): four steps treated assigning a fixture as logging in
fix(bdd): the public kanban board was asked for at two URLs it has never had
fix(bdd): the device-flow poll asked for a path that has never existed
fix(bdd): the project-limit guard could not be tested, so it never was
fix(bdd): a When that recognised four labels and silently did nothing for the rest
fix(bdd): three tasks were added and one was counted, because the list was clobbered
fix(bdd): a scenario whose Givens arranged nothing, and a Then that always passed
fix(tasks): PATCH assigned a foreign key without checking it, and answered 500
fix(security): four critical findings that nobody could act on now say where
fix(ui-audit): fifteen components were reported as raw markup, and none of them were
fix(prompt): tell the retry which tool ate the budget, not just how many calls it made
feat(merge): the one stage with no row in &quot;where the time goes&quot;
fix(test): two tests encoded opposite expectations, and one passed by luck
feat(store): record what a run touched, so the next one is not guessing
fix(prompt): name the ticket&apos;s test on a retry, from what the last run observed
fix(prompt): &quot;run only the test file this ticket is about&quot; never said which one
feat(map): a digest the agent can actually read, because the map was unreadable
fix(status): a healthy hostname was reported as &quot;cannot determine&quot; on every run
fix(status): the npm check asked about a package that cannot exist</description><pubDate>Sat, 19 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.20.1 — fix(runner): a publish at startup stopped every dispatch for the length of a deploy</title><link>https://xswarm.ai/releases#v3.20.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.20.1</guid><description>fix(runner): a publish at startup stopped every dispatch for the length of a deploy
fix(brief): &quot;BOARD STALE — last reported 197m ago&quot; was off by two and a half hours
fix(critical-path): count the executable, never the mention</description><pubDate>Sat, 19 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.20.0 — feat(critical-path): say what else the box was doing, on every failure</title><link>https://xswarm.ai/releases#v3.20.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.20.0</guid><description>feat(critical-path): say what else the box was doing, on every failure
fix(e2e): widening half a race is not fixing it
fix(runner): tell the board a ticket started when it starts, not when the tick ends
fix(test): a unit test about call ORDER was scanning /proc and spawning git
fix(runner): name the tickets the board refused, and why
fix(runner): a noop that does not say why is the ambiguity that cost twenty tickets</description><pubDate>Sat, 19 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.19.0 — fix(stages): a ticket the runner is about to pick up has not died either</title><link>https://xswarm.ai/releases#v3.19.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.19.0</guid><description>fix(stages): a ticket the runner is about to pick up has not died either
refactor(connect): the redeem endpoint restated what the mint already knows
fix(gate): a commit made in the same invocation is a commit the gate never saw
fix(revive): never resurrect a ticket the pipeline already escalated
feat(stats): serve the whole stage analysis at /api/stages
fix(telemetry): an agent killed at its budget threw away the account of how it spent it
fix(e2e): two more push-gate tests raced the same client round trip
fix(stages): a held ticket did not die, and it is not reasonless
fix(revive): a merge conflict is trunk moving, not the work being wrong
fix(bdd): two scenarios asserted a board vocabulary that was deleted on purpose
fix(telemetry): the tool timings were measured and then dropped at the merge
fix(e2e): the push gate had a flaky test in it
fix(gate): say once that the authenticated surface is not being measured
feat(audit): name the tickets that shipped with nothing showing they work
fix(stages): report the reason that belongs to the stage a ticket stopped at
fix(prove-it-live): a question that never arrived is not a mechanism observed absent
fix(bdd): the suite crashed on a missing lsof, and the gate called it an improvement</description><pubDate>Sat, 19 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.18.0 — feat(api): a pairing code you can hand over once, and a table that cannot hand it back</title><link>https://xswarm.ai/releases#v3.18.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.18.0</guid><description>feat(api): a pairing code you can hand over once, and a table that cannot hand it back</description><pubDate>Sat, 19 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.17.0 — refactor(runner): lift the revival into task/revive.mjs</title><link>https://xswarm.ai/releases#v3.17.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.17.0</guid><description>refactor(runner): lift the revival into task/revive.mjs
fix(runner): a revival must not override a deliberate hold
fix(gate): the lighthouse reader and the lighthouse audit disagreed for eight days
fix(runner): one test held a box-wide socket, and the gate failed on it half the time
fix(pipeline): three dead ends that killed tickets which had done all their work
fix(web): a page has one API, and the rule that says which was written in two places
feat(runner): nothing was counting what a whole ticket costs
fix(stages): the report was about to repeat my own arithmetic mistake
fix(telemetry,security): a ticket is three agent calls, and an outage is not a finding
fix(retry): telling an agent it ran out of time does not help it go faster
fix(queue): the board said &quot;8 ready&quot; while nothing could run at all
fix(telemetry): the endpoint was written into a process that is not running
feat(telemetry): the pipeline is now readable over HTTP
feat(telemetry): step durations as rows, so efficiency is one query
feat(telemetry): how the coder spends its calls, and how much it tests
feat(telemetry): every pipeline event into the database, queryable
perf(agents): the map was never given to them, and nothing said how to run tests</description><pubDate>Sat, 19 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.16.0 — feat(runner): a failed ticket goes round again instead of dying</title><link>https://xswarm.ai/releases#v3.16.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.16.0</guid><description>feat(runner): a failed ticket goes round again instead of dying
feat(fleet): one sweep says which projects serve their deployed commit
fix(stages): the report contradicted the gate it was describing
fix(stages): the report called 44 shipped tickets dead</description><pubDate>Sat, 19 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.15.0 — feat(responsive): the hub is checked at the four widths, by one overflow walk</title><link>https://xswarm.ai/releases#v3.15.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.15.0</guid><description>feat(responsive): the hub is checked at the four widths, by one overflow walk
feat(stages): a re-run used to erase the attempt before it
fix(redgreen): the stage that kills two thirds of tickets recorded no inputs
feat(stages): where tickets die and where the time goes — and a re-run can push again</description><pubDate>Sat, 19 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.14.2 — fix(ui): the nav badge sat on the last link, and the board laid out a track nothing filled</title><link>https://xswarm.ai/releases#v3.14.2</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.14.2</guid><description>fix(ui): the nav badge sat on the last link, and the board laid out a track nothing filled</description><pubDate>Sat, 19 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.14.1 — fix(stop-hook): the refusal was telling task agents to do the one forbidden thing</title><link>https://xswarm.ai/releases#v3.14.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.14.1</guid><description>fix(stop-hook): the refusal was telling task agents to do the one forbidden thing
refactor(cli-mount-work-test): a comment that was not true, and one show() instead of five
refactor(github-pr-tests): one GitHub fetch helper, not two copies of it</description><pubDate>Sat, 19 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.14.0 — fix(deploy): a restart sat on work that was already on trunk</title><link>https://xswarm.ai/releases#v3.14.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.14.0</guid><description>fix(deploy): a restart sat on work that was already on trunk
fix(deploy): the pipeline could not publish its own landings
fix(visual): the sweep could take fifteen minutes and still report a pass
fix(critical-path): the lock I shipped an hour ago locked nothing
feat(critical-path): one run at a time, and it fails open by design
fix(critical-path): two runs fight over the port and the loser is told nothing
fix(deploy): the pipeline published to production and recorded it as a failure</description><pubDate>Sat, 19 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.13.0 — feat(brief): nobody was watching the CLI, and it is six months stale</title><link>https://xswarm.ai/releases#v3.13.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.13.0</guid><description>feat(brief): nobody was watching the CLI, and it is six months stale
fix(deploy): the pipeline could not publish while I had uncommitted work
fix(deploy): a failed publish stranded the work on trunk for ever
fix(deploy): the board said a ticket was not live for 12 minutes after it went live
fix(release): the surface the navbar reads is verified like the other two
fix(ship): a failed deploy recorded npm&apos;s banner as the reason it failed</description><pubDate>Sat, 19 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.12.0 — feat(quality): a box that comes back up no longer keeps the last session&apos;s browsers</title><link>https://xswarm.ai/releases#v3.12.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.12.0</guid><description>feat(quality): a box that comes back up no longer keeps the last session&apos;s browsers
fix(agents): every pipeline agent was holding the box owner&apos;s Gmail
feat(dispatch): a ticket that asks a question now keeps the answer
fix(dispatch): the one step that ran an agent and was never timed
fix(select): a review hold was advisory, so the queue kept re-running decided work
fix(executor): the first diagnostic timeout named the least useful event in the stream
fix(harness): an agent found a JSON race in our setup, so I fixed it
fix(deploy-sweep): &quot;why isn&apos;t my ticket live?&quot; was the one question the board could not answer
fix(runner): the other failed branch — a ticket that could not LAND left no reason either
fix(runner): a ticket that changed nothing said nothing about why
fix(deploy): &quot;filed 0 repair ticket(s)&quot; next to &quot;with the repairs queued&quot;
fix(agents): the 15 minute budget was killing tickets for doing their job
fix(dispatch): step timings were thrown away by every ticket that went wrong</description><pubDate>Sat, 19 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.11.0 — fix(deploy): a commit landing on main during a deploy broke that deploy</title><link>https://xswarm.ai/releases#v3.11.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.11.0</guid><description>fix(deploy): a commit landing on main during a deploy broke that deploy
fix(runner): a failed ticket&apos;s reason lived only in a log line that scrolls away
feat(chat): a highlighted element now rides along on the message — and a ReferenceError I shipped
fix(executor): a timeout that could not tell a long test suite from a hung command
fix(board): the check I shipped an hour ago cried wolf on six of its first eight findings
fix(noise,lifecycle): two small things that each made the pipeline harder to read
fix(redgreen): a ticket was blocked for vitest not being able to run Playwright
feat(board): the board can now say when it is lying about itself
fix(agents): an agent outlived its runner and edited a worktree that no longer existed
feat(preview): point at the bug instead of describing it
fix(critical-path): the other way a dev server goes stale, which cost two red runs today
feat(preview): the previewed page now answers the dashboard&apos;s &quot;what is at this point?&quot;
fix(evidence): a reason from three attempts ago read exactly like this attempt&apos;s
fix(gate): the machine&apos;s identity changed depending on which directory you were in
fix(executor): one agent writing binary to stdout produced an 814KB ticket log
fix(daemon): &quot;restart&quot; cannot create, so every deploy died on a stack trace
fix(gate): the shell was read as the push&apos;s arguments, and a red sha reached main</description><pubDate>Fri, 18 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.10.1 — fix(navbar): a ReferenceError was being swallowed into showing Sign In to signed-in users</title><link>https://xswarm.ai/releases#v3.10.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.10.1</guid><description>fix(navbar): a ReferenceError was being swallowed into showing Sign In to signed-in users
docs(herdr): remove it where it reads as current, keep it where it is the record</description><pubDate>Fri, 18 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.10.0 — feat(scope): a ticket may not re-take the evidence it is judged against</title><link>https://xswarm.ai/releases#v3.10.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.10.0</guid><description>feat(scope): a ticket may not re-take the evidence it is judged against
fix(navbar): links back on the right, and a real session is discoverable again
feat(pipeline): run the quality gate before landing, not just the tests
feat(pipeline): deploy is part of the workflow, so completed means published
fix(board): the dashboard drew a vocabulary nothing writes, so it showed an empty board</description><pubDate>Fri, 18 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.9.0 — feat(hooks): xswarm&apos;s hooks belong to the project, not to the machine</title><link>https://xswarm.ai/releases#v3.9.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.9.0</guid><description>feat(hooks): xswarm&apos;s hooks belong to the project, not to the machine
fix(agent): nothing bounded an agent run, and one `tail -f` stopped the pipeline for 41 minutes
feat(dispatch): measure where a ticket&apos;s 20 minutes actually goes
fix(pipeline): one killed runner wedged the queue for ever
fix(observe): a config is not a test, and calling it one blocked four good tickets
feat(brief): the orientation command knew nothing about the thing doing the work
fix(pipeline): the board was never told, so a night of work was invisible
feat(api): agents can read held territory before they open a worktree
refactor(api): the claim counts in-flight tickets from one subquery, not two
refactor(e2e): the console recorder keeps less state and reads each file once
feat(daemon): the worker asks the scheduler what is next, not pending[0]
fix(dashboard): the console errors on /dashboard/live, and the empty grid nobody logged
feat(tasks): a claim says which files it takes, and the second one reaching in is refused
fix(tasks): a claimed ticket could stop existing, and nothing anywhere said so
fix(agent): an API key was leaking into every agent, and killing it in two seconds
fix(dispatch): a ticket nobody looked at was being filed as done
fix(stages): the merge gate would have blocked every non-code ticket for ever
feat(stages): the stages gate the merge now, and every refusal says why
fix(test): give the browser launch one retry, because launching is setup not the claim
fix(test): browser-lifecycle raced its own readiness signal, and blocked the gate twice
fix(stages): the red/green reason said THAT, never WHY — and 45 tickets prove it
feat(gate): the critical path names which specs failed, not just how many
feat(scripts): inventory the fleet projects that can hit the SSR optimizeDeps stall
fix(daemon): every task line names the ticket and the step that died
fix(releases): fetch the tags the build needs, so the changelog stops going stale
fix(web): the blog card renders as a surface, on the day it was published
docs(decisions): the blog card stops being a 1px outline with dead space in it
fix(navbar): three anchored zones, so a label edit stops moving the whole bar
docs(decisions): the navbar&apos;s geometry stops being derived from its label text
feat(visual): reproduce the snapshot failures on purpose and keep the pictures
refactor(usage): hoist the created_at stamp, drop the duplicated incident prose
refactor(daemon): one fresh set of readings per sample, not eight mutations
feat(release): the repo can prove a push to `production` still ships
refactor(release): a push to a branch is the only way the workers ship
feat(install): git is configured before the install touches a repository
refactor(quality): the ledger answers &quot;is this pid gone&quot; once
fix(quality): a browser an audit launched cannot outlive the audit
feat(pipeline): UI tickets get their appearance decided before anyone writes code
feat(reap): the janitor was wired to nothing, and looking at a ninth of the machine
fix(gate): the integrator role existed but could not be assumed
fix(executor): the agent never ran because nobody owned stdin
refactor(reap): two modules for one job, reduced to one
fix(triage): the deduper keyed on prose, so a model rewording a title refiled the work
fix(gate): a generated index older than what it indexes, caught rather than endured
refactor(releases): one invariant deserves one guard and one describe block
fix(gate): the push gate was reporting green with a quarter of its suite unmeasured
feat(design): a style guide, the tokens it needs, and an audit that enforces it
fix(elegance): three exports of mine that nothing imported
feat(chrome): a debuggable browser an agent can look through, and its leftover tabs
fix(e2e): a baseline is a photograph of one build, not a measurement of any
feat(reap): abandoned tooling browsers, identified by profile rather than by guess
feat(cli): xswarm reap, and a correction to what I blamed for the red candidates
fix(pipeline): stop accumulating processes, and stop over-subscribing memory
fix(queue): a candidate that could not be measured is not a red candidate
fix(gate): correct my own explanation of the cold-tree note
fix(e2e): treat the headless shell as part of the engine, guard every entry point
fix(deploy): one D1 migration path, named by binding and environment
feat(connect): a pairing code is spent by the machine it pairs
feat(connect): username-prefixed rotating pairing codes
feat(deploy): roll back to the last verified-good deployment on failed verification
refactor(app): one place writes the git credential helper&apos;s result
fix(gate): a cold-cache failure was blaming the change under test
feat(api): workers get a git credential that dies within the hour
feat(dispatch): record what the refactor pass touched, so the next case is data
feat(visual): the sweep now says how long it took, and which route took it
feat(deploy): the visual snapshot ticket says what broke, not how many routes broke
fix(hooks): the worktree rules were reading the wrong directory, so they never fired
feat(daemon): the scheduling tick consults persisted run state before claiming
fix(gate): warming the first hop warmed the half that was never the problem
fix(gate): blocking the agent&apos;s push was not enough
fix(e2e): the browsers the suite needs are now installed by something
fix(gate): the prompt said do not push; nothing made that true
fix(deploy): every wrangler environment declares its own routes; none inherits
fix(worktree): the same server leak, one layer down, on the path every ticket takes
fix(queue): a discarded candidate left its dev server holding the port
fix(gate): the critical path had never once run against a cold server
fix(gate): a kill is not a close, and the first candidate proved it
fix(gate): e2ePassed has been certifying a tree nobody tested
fix(observe): red/green was reverting to the wrong baseline
fix(runner): going round had no bound, and I put it there this evening
feat(deploy): the stamps agreed while every page served [object Object]
perf(refactor): the cleanup agent had to find the work before it could do it
feat(sync): the board and the pipeline had never been introduced
feat(cli): `task show` says what a ticket still owes, not only where it is
fix(pipeline): the first real ticket could not have landed, and neither could any other
feat(cli): mount `xswarm work` so a session can declare its ticket
feat(cli): the pipeline was mounted on nothing
feat(stages): build Deployed — the last stage, and it asks an existing question
refactor(task): hold this session&apos;s own new code to the standard
feat(stages): build the merge queue — the last stage with no machinery
fix(gate): the pipeline was the one component pushing untested code
feat(stages): build the Refactoring stage, which had no machinery at all
fix(status): two live conditions still spoke the deleted board vocabulary
feat(stages): red and green are observed now, not taken on the agent&apos;s word
fix(stages): nothing wrote the evidence, so no ticket could ever leave Coding
fix(e2e): a dev server older than node_modules produced 9 red tests that were not real
fix(e2e): a missing system library is UNMEASURED, not 447 failing tests
fix(visual): mask the version badge — it invalidated every baseline on every deploy
fix(identity): one value, one name — /auth/me stops renaming github_username
feat(workers): the card now says what the machine is, and stops drawing live meters over silence
fix(sidebar): collapsing the menu hid every project, which was the complaint
fix(gate): the push gate carried its own port, and disagreed with the dev server
feat(watchdog): detect sessions that went silent without stopping
fix(task): an agent that commits its own work was read as having done nothing
feat(cli): xswarm run — and the pipeline carried its first task
feat(log): a task&apos;s start and failure lines now name the ticket</description><pubDate>Fri, 18 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.8.0 — fix(stopping-rule): a refusal must be observed, and survive a search for a way round</title><link>https://xswarm.ai/releases#v3.8.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.8.0</guid><description>fix(stopping-rule): a refusal must be observed, and survive a search for a way round
fix(releases): the Release History page had no history
docs(harness): two traps that cost an hour tonight
fix(deploy): the staging check had its own copy of the sha comparison
fix(web): the merged API must proxy until this worker has the secrets
fix(deploy): a successful deploy was reporting UNMEASURED
fix(web): the merged /api/* handler threw on every request
fix(web): I broke `astro dev` for the whole repo, and shipped 550KB of dead weight
fix(watchdog): one block was disarming the guard for the rest of the session
fix(web): TerminalView rejected when its container had gone
fix(web): /dashboard/live asked for previews nobody had opened
feat(cli): xswarm task — add, list, show over the local store
feat(task): the loop runs end to end — a task becomes a branch on a remote
feat(task): tell the agent the stopping rule before it starts, not after it stops
fix(watchdog): a clean tree is not evidence the job is done
feat(cli): xswarm work — the write side the watchdog never had
feat(task): dispatch a task to a real worktree, and three bugs it found
feat(task): the runner tick, and a canary pen that proves it
feat(cli): shared json envelope for CLI commands
feat(task): the framework core — task object, lifecycle, selection, watchdog
feat(task): express the development lifecycle as data
feat(map): index .ts, .astro and .svelte — 211 files to 340
feat(map): repository map — 0016, built because &quot;not worth digging&quot; was the symptom
fix(web): declare ExecutionContext properly instead of casting past it
refactor(web): serve /api/* in the web worker, not a second one
refactor(stages): E2E is part of coding, not a stage after merging
fix(daemon): the memory ceiling was on one start path, not both (P0.3)
fix(daemon): enforce the agent cap where processes are spawned (P0.1, P0.2)
fix(quality): three gate regressions, one of them a check that was wrong
docs: the pipeline repair plan — work on the box, fix the first failing step, never work around it
fix(scheduler): the cap is on concurrency, not on batch size</description><pubDate>Tue, 15 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.7.2 — fix(trace): the instrument was writing fixtures into the real log</title><link>https://xswarm.ai/releases#v3.7.2</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.7.2</guid><description>fix(trace): the instrument was writing fixtures into the real log</description><pubDate>Mon, 14 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.7.1 — fix(executor): the model CLI was invoked malformed, so no agent ever ran</title><link>https://xswarm.ai/releases#v3.7.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.7.1</guid><description>fix(executor): the model CLI was invoked malformed, so no agent ever ran
fix(executor): the CLI refused every invocation for want of --verbose</description><pubDate>Mon, 14 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.7.0 — feat(planner): a filed request becomes tickets, with no human in the path</title><link>https://xswarm.ai/releases#v3.7.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.7.0</guid><description>feat(planner): a filed request becomes tickets, with no human in the path</description><pubDate>Mon, 14 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.6.3 — fix(deploy): let the two workers converge before judging a half-deploy</title><link>https://xswarm.ai/releases#v3.6.3</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.6.3</guid><description>fix(deploy): let the two workers converge before judging a half-deploy</description><pubDate>Mon, 14 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.6.2 — fix(deploy): wait for the daemon to come back before proving it</title><link>https://xswarm.ai/releases#v3.6.2</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.6.2</guid><description>fix(deploy): wait for the daemon to come back before proving it</description><pubDate>Mon, 14 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.6.1 — fix(scheduler): maxParallel is enforced by a caller, not merely defined</title><link>https://xswarm.ai/releases#v3.6.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.6.1</guid><description>fix(scheduler): maxParallel is enforced by a caller, not merely defined</description><pubDate>Mon, 14 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.6.0 — feat(prove-it-live): every mechanism must be observed ACTING, or the deploy fails</title><link>https://xswarm.ai/releases#v3.6.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.6.0</guid><description>feat(prove-it-live): every mechanism must be observed ACTING, or the deploy fails</description><pubDate>Mon, 14 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.5.2 — fix(daemon): guard the path that actually executes tasks</title><link>https://xswarm.ai/releases#v3.5.2</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.5.2</guid><description>fix(daemon): guard the path that actually executes tasks</description><pubDate>Mon, 14 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.5.1 — fix(daemon): a stale daemon refuses work instead of warning about it</title><link>https://xswarm.ai/releases#v3.5.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.5.1</guid><description>fix(daemon): a stale daemon refuses work instead of warning about it</description><pubDate>Mon, 14 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.5.0 — feat(watchdog): wire the Stop hook, so ending a turn with work outstanding is noticed</title><link>https://xswarm.ai/releases#v3.5.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.5.0</guid><description>feat(watchdog): wire the Stop hook, so ending a turn with work outstanding is noticed</description><pubDate>Mon, 14 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.4.0 — feat(brief): orient in 0.3s and 282 bytes instead of 6s and 3.9KB</title><link>https://xswarm.ai/releases#v3.4.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.4.0</guid><description>feat(brief): orient in 0.3s and 282 bytes instead of 6s and 3.9KB
docs(harness): one document a session reads instead of re-deriving the pipeline</description><pubDate>Mon, 14 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.3.1 — fix(reports): expanded detail reads documents.body, not .content</title><link>https://xswarm.ai/releases#v3.3.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.3.1</guid><description>fix(reports): expanded detail reads documents.body, not .content</description><pubDate>Mon, 14 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.3.0 — feat(reports): each report summarises its findings on the line, expands in place, prints to PDF</title><link>https://xswarm.ai/releases#v3.3.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.3.0</guid><description>feat(reports): each report summarises its findings on the line, expands in place, prints to PDF
fix(daemon): stop pushing empty branches, and make the running sha observable</description><pubDate>Mon, 14 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.2.4 — fix(release): a deploy that mints nothing still reports the release it carries</title><link>https://xswarm.ai/releases#v3.2.4</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.2.4</guid><description>fix(release): a deploy that mints nothing still reports the release it carries</description><pubDate>Mon, 14 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.2.3 — fix(deploy): verify BOTH workers, and never substitute a stale number for a missing release</title><link>https://xswarm.ai/releases#v3.2.3</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.2.3</guid><description>fix(deploy): verify BOTH workers, and never substitute a stale number for a missing release</description><pubDate>Mon, 14 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.2.2 — fix(web): the release reaches the surfaces Chad actually looks at</title><link>https://xswarm.ai/releases#v3.2.2</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.2.2</guid><description>fix(web): the release reaches the surfaces Chad actually looks at</description><pubDate>Mon, 14 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.2.1 — fix(health): report the release, not the build stamp that cannot know it</title><link>https://xswarm.ai/releases#v3.2.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.2.1</guid><description>fix(health): report the release, not the build stamp that cannot know it</description><pubDate>Mon, 14 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.2.0 — feat(release): resolve the displayed version from the deployed sha, at read time</title><link>https://xswarm.ai/releases#v3.2.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.2.0</guid><description>feat(release): resolve the displayed version from the deployed sha, at read time</description><pubDate>Mon, 14 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.1.0 — fix(deploy): the --project filter was being swallowed by a nested npm run</title><link>https://xswarm.ai/releases#v3.1.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.1.0</guid><description>fix(deploy): the --project filter was being swallowed by a nested npm run
fix(deploy): run the engines this box has, and record the rest as not_run
fix(e2e): a repair ticket belongs to a project, or it can never be planned
docs: correct the DNS item — that was our own sandbox, not an external refusal
feat(critical-path): the push gate&apos;s suite, with a budget that fails rather than warns
feat(gate): nothing leaves a worktree without a green critical-path run for that exact sha
feat(preview): a dev server per worktree, on localhost, for the push gate to test against
feat(run-control): pause and resume a project&apos;s work engine, persisted
docs: handover — state, what shipped, and the traps that cost time
docs: the workflow implementation plan agreed 2026-09-14
fix(e2e): a suite that could not run must block, not pass
feat(scheduler): selectNextBatch — a pure answer to &quot;what should be picked up now&quot;
feat(board): one stage vocabulary, and a board that shows work instead of an inbox
fix(e2e): name a repair ticket by its cause, not by raw terminal output
feat(release): a version names code that reached production, minted after it gets there
fix(version): one source, derived at read time — delete the copies
fix(pipeline): define the E2E report path the triage reads
fix(pipeline): a failing E2E files repair tickets and continues, instead of halting
fix(web): do not downgrade an already-converted wss: to ws:
fix(web): relay sockets follow the environment instead of hardcoding production
fix(daemon): the coordinator polled a path that does not exist
fix(coordinator): give the chat queue a consumer — this was the logjam
feat(events): publish workflow events, and ask them where work dies
feat(watchdog): interrogate the stop — sessions invent reasons to quit
feat(watchdog): enforce the workflow on Stop, so the coordinator does not have to
feat(coordinator): the runtime half — poll, answer, plan, and only then mark delivered
feat(coordinator): the prompt half of the consumer nobody wrote
docs: 0017 — planning meeting and iterative session are inverted in ordering
docs: 0017 — iterate mode is one ticket per session, kept as the design record
docs: 0017 — coordinator answers on one thread, plans on another
docs: the cloud layer routes, the machine plans
docs: correct 0017 — user talks to the coordinator, never to a project session
docs: backlog 0017 — replace herdr with the chat channel that already exists
feat(daemon): resource reaper — a cron watchdog that reports what the fleet leaked
feat(telemetry): per-stage entered/started/ended, so queue time is measurable
feat(pipeline): actually call the reporter from the box&apos;s heartbeat
feat(pipeline): the box reports .xswarm/project.yml, so CI can say source:repo
fix(pipeline): drop the unreachable protected-branch guard from pushBranch
feat(pipeline): a finished ticket now reaches somebody — push the branch, record it
docs: backlog 0016 — agent-oriented repository map, with the measurement design
fix(web): unblock the root test command — 5 type errors were hiding a whole workspace
docs: park the Team access + P2P meetings idea with its constraints
feat(project): six tabs — Overview, Activity, Tickets, Plan, CI, Reports
feat(hooks): flag integrator commands that fall through to the classifier
feat(hooks): the integrator authorises its own pipeline verbs, narrowly
feat(hooks): gates and routing from Claude Code events, replacing the git hook
fix(daemon): stop the worktree cleanup destroying the agent&apos;s work
feat(daemon): one git worktree per task, so tickets can run in parallel
fix(board): tickets reach To Do — placement was never derived from dependencies
feat(activity): one live board that fills the screen, instead of three lists
feat(requests): the planning meeting turns a request into tickets (#168 log jam)
fix(deploy): load the Cloudflare token, and stop blaming the schema for a missing one
fix(dev-preview): carry path + runtime port detection onto this branch
fix(dev-preview): learn the port from the dev server instead of only guessing it
fix(dev-preview): follow delegation by PATH as well as by workspace name
fix(preview): point the UI at the relay, which is why nothing looked like it worked
fix(relay): re-open the preview socket from the sweep, so a daemon restart heals
feat(relay): carry the persistent preview socket onto this branch
feat(relay): the box holds its own preview socket, so a preview works between tasks
fix(api): dev-token endpoints called logAudit with the wrong arguments, and 500&apos;d every time
feat(relay): carry the http_req answer onto this branch
feat(relay): answer http_req on the pipe that already exists, and give it an origin
fix(e2e): scope the releases assertion past the nav&apos;s version badge
fix(e2e): /releases could never have a stable pixel baseline
fix(e2e): theme tests pointed at an element the page does not have; commit baselines
fix(e2e): the deploy gate was red on 13 rotted tests, not on broken product
docs(adr): 0008 — the preview transport must assume nothing of the customer
fix(dev-preview): carry the never-called-sweep fix onto this branch
fix: the idle sweep was never called, and three symptoms fall out of it
fix(e2e): scope two locators that assumed a single element
fix(a11y): the logo typewriter ignored prefers-reduced-motion
fix(e2e): the sign-in test failed on correct behaviour, and blocked every deploy
fix(deploy): promotion was structurally impossible, and froze production
feat(chat): stream replies, and make the deployed build legible
feat(studio): one tab, dev site above, orchestrator below
fix(dev-preview): carry adoption/allowedHosts/slot-reaping fixes onto this branch
fix(dev-preview): three defects behind a preview that reported success falsely
fix(dev-preview): carry the workspace-port fix onto this branch
fix(dev-preview): follow workspace delegation when detecting the dev port
fix(ui): three defects found by opening the page, which I had never done
fix(ui): stop putting new things on top of the thing the page is for
feat(workers): report what machine a worker actually IS, not just how busy it is</description><pubDate>Mon, 14 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.136</title><link>https://xswarm.ai/releases#v3.0.136</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.136</guid><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.135 — feat(planning): the room sits beside the conversation, and the Generate button is gone</title><link>https://xswarm.ai/releases#v3.0.135</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.135</guid><description>feat(planning): the room sits beside the conversation, and the Generate button is gone
feat(room): the cast, the per-phase roster, and the panel that shows who has NOT spoken
fix(adr-0006): the dev proxy needs an origin, not a path prefix
docs: the room — Barry chairs, names encode roles, identity colour stays out of state&apos;s way
docs: phases set the roster, and the orchestrator casts the room turn by turn
docs: the framework is the product — what human teams have that agents lack
docs: the simulated team is a thinking tool, not a cast of characters
feat(design): command deck, and the view no other tool draws
docs: the big idea — the bottleneck moved, so the grammar must change</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.134</title><link>https://xswarm.ai/releases#v3.0.134</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.134</guid><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.133 — docs: designs for the machine card and the architecture planning centre</title><link>https://xswarm.ai/releases#v3.0.133</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.133</guid><description>docs: designs for the machine card and the architecture planning centre
feat(dev-proxy): worker half of ADR 0006 -- capability token + relay-backed HTTP proxy
feat(reports): the audits were always running; nothing ever read them back
feat(activity): build the screen on work items, because the plan was never the problem</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.132 — fix(sidebar): recent projects is topped up to ten, not collapsed to visit history</title><link>https://xswarm.ai/releases#v3.0.132</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.132</guid><description>fix(sidebar): recent projects is topped up to ten, not collapsed to visit history</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.131 — feat(nav): drop Documents from the sidebar; ADR for making the dev link real</title><link>https://xswarm.ai/releases#v3.0.131</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.131</guid><description>feat(nav): drop Documents from the sidebar; ADR for making the dev link real</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.130 — fix(project): three cards said &quot;Not deployed&quot; while all three environments were live</title><link>https://xswarm.ai/releases#v3.0.130</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.130</guid><description>fix(project): three cards said &quot;Not deployed&quot; while all three environments were live</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.129 — fix(e2e): `npm run dev` attaches to a running dev server instead of exiting</title><link>https://xswarm.ai/releases#v3.0.129</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.129</guid><description>fix(e2e): `npm run dev` attaches to a running dev server instead of exiting
fix(project-logo): keep the file header on line 1; add the missing header to config.astro</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.128 — fix(e2e): the suite waited on a port the dev server never listens on</title><link>https://xswarm.ai/releases#v3.0.128</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.128</guid><description>fix(e2e): the suite waited on a port the dev server never listens on</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.127 — fix(deploy): stamp BUILD_VERSION on web deploys, and shorten the staging note</title><link>https://xswarm.ai/releases#v3.0.127</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.127</guid><description>fix(deploy): stamp BUILD_VERSION on web deploys, and shorten the staging note
fix(deploy): --staging deploys xswarm-web-staging, not production (#164 item 4)
fix(project-logo): derive the icon from the production environment, not the worker name</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.126</title><link>https://xswarm.ai/releases#v3.0.126</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.126</guid><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.125</title><link>https://xswarm.ai/releases#v3.0.125</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.125</guid><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.124</title><link>https://xswarm.ai/releases#v3.0.124</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.124</guid><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.123 — feat(chat): the popup knows which architecture document you are reading</title><link>https://xswarm.ai/releases#v3.0.123</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.123</guid><description>feat(chat): the popup knows which architecture document you are reading
fix(deploy): correct the staging story — deploy:web:staging ships PRODUCTION
feat(project): the dev window and the chat, side by side — the supervisory workflow
feat(architecture): real diagrams for xswarm, authored in the repo
fix(planning): bring back the planning meeting, without bringing back the tab
feat(deploy-state): give deploy state an environment, and the header all three links
fix(architecture): read the knowledge base through DocumentReader, not a second renderer
feat(project): four tabs, one tight shared header, cached so it never flashes
feat(architecture): project knowledge base lives in the repo, reads in the tab
docs: three environments and the one path between them
docs: the framework says tests run in a real browser with a real session</description><pubDate>Sat, 12 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.115 — fix(dashboard): the context gives way when the viewport cannot afford both it and the chat (#144)</title><link>https://xswarm.ai/releases#v3.0.115</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.115</guid><description>fix(dashboard): the context gives way when the viewport cannot afford both it and the chat (#144)</description><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.114 — feat(daemon): the box attributes sessions to the project ids it already knows (#151)</title><link>https://xswarm.ai/releases#v3.0.114</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.114</guid><description>feat(daemon): the box attributes sessions to the project ids it already knows (#151)</description><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.113 — fix(dashboard): the avatar&apos;s alt text read the same field that does not exist</title><link>https://xswarm.ai/releases#v3.0.113</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.113</guid><description>fix(dashboard): the avatar&apos;s alt text read the same field that does not exist</description><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.112 — fix(chat): pin the composer to the viewport, not to a box that is itself off-screen (#144)</title><link>https://xswarm.ai/releases#v3.0.112</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.112</guid><description>fix(chat): pin the composer to the viewport, not to a box that is itself off-screen (#144)</description><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.111 — fix(rollup): match a checkout directory name against the lowercase cloud slug</title><link>https://xswarm.ai/releases#v3.0.111</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.111</guid><description>fix(rollup): match a checkout directory name against the lowercase cloud slug</description><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.110 — fix(rollup): sessions were written by slug and read by id, so Health said Unknown 42 times (#147)</title><link>https://xswarm.ai/releases#v3.0.110</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.110</guid><description>fix(rollup): sessions were written by slug and read by id, so Health said Unknown 42 times (#147)</description><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.109</title><link>https://xswarm.ai/releases#v3.0.109</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.109</guid><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.108 — fix(dashboard): the sidebar handle branch never matched, so it always showed the email</title><link>https://xswarm.ai/releases#v3.0.108</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.108</guid><description>fix(dashboard): the sidebar handle branch never matched, so it always showed the email</description><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.107</title><link>https://xswarm.ai/releases#v3.0.107</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.107</guid><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.106 — perf(cost): stop asking who you are three times per navigation (#141)</title><link>https://xswarm.ai/releases#v3.0.106</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.106</guid><description>perf(cost): stop asking who you are three times per navigation (#141)</description><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.105</title><link>https://xswarm.ai/releases#v3.0.105</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.105</guid><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.104</title><link>https://xswarm.ai/releases#v3.0.104</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.104</guid><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.103 — perf(projects): render the table from cache, and show the signal that was already there (#140)</title><link>https://xswarm.ai/releases#v3.0.103</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.103</guid><description>perf(projects): render the table from cache, and show the signal that was already there (#140)</description><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.102 — perf(nav): stop making a first-time visitor wait for identity before asking for the lists</title><link>https://xswarm.ai/releases#v3.0.102</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.102</guid><description>perf(nav): stop making a first-time visitor wait for identity before asking for the lists</description><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.101 — fix(dashboard): the hard-coded viewport offset caused the overflow it was meant to prevent (#139)</title><link>https://xswarm.ai/releases#v3.0.101</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.101</guid><description>fix(dashboard): the hard-coded viewport offset caused the overflow it was meant to prevent (#139)</description><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.100</title><link>https://xswarm.ai/releases#v3.0.100</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.100</guid><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.99</title><link>https://xswarm.ai/releases#v3.0.99</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.99</guid><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.98 — fix(dashboard): an explicit height beats align-items:stretch (#139)</title><link>https://xswarm.ai/releases#v3.0.98</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.98</guid><description>fix(dashboard): an explicit height beats align-items:stretch (#139)
fix(project-logo): the monogram fallback was breaking out of its own attribute</description><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.97 — fix(dashboard): the chat filled the pane on paper only -- astro-island has no box (#139)</title><link>https://xswarm.ai/releases#v3.0.97</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.97</guid><description>fix(dashboard): the chat filled the pane on paper only -- astro-island has no box (#139)</description><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.96 — feat(dashboard): the chat fills the screen -- it is the page, not a panel on it (#139)</title><link>https://xswarm.ai/releases#v3.0.96</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.96</guid><description>feat(dashboard): the chat fills the screen -- it is the page, not a panel on it (#139)</description><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.95</title><link>https://xswarm.ai/releases#v3.0.95</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.95</guid><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.94</title><link>https://xswarm.ai/releases#v3.0.94</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.94</guid><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.93 — fix(admin): seed page joins the dashboard shell, and a guard so this stops recurring</title><link>https://xswarm.ai/releases#v3.0.93</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.93</guid><description>fix(admin): seed page joins the dashboard shell, and a guard so this stops recurring
perf(nav): one cached nav object, painted before any request is made (#138)</description><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.92 — fix(pwa): stop serving cached HTML that points at deleted stylesheets</title><link>https://xswarm.ai/releases#v3.0.92</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.92</guid><description>fix(pwa): stop serving cached HTML that points at deleted stylesheets</description><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.91 — fix: per-project documents move to the project page, out of the global Documents area (#137)</title><link>https://xswarm.ai/releases#v3.0.91</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.91</guid><description>fix: per-project documents move to the project page, out of the global Documents area (#137)
docs: the Development Framework — how an idea becomes assured code
feat: the gate reports its own quality state on every run (#136)
fix: content-hash discriminator + repair tool for the stale-shared-checkout class of bugs (#135)
fix: extract shared recent-projects/documents nav list, repay the elegance accept (#129)</description><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.90 — fix(deploy): a failed upload has nothing to roll back, and saying otherwise was a lie</title><link>https://xswarm.ai/releases#v3.0.90</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.90</guid><description>fix(deploy): a failed upload has nothing to roll back, and saying otherwise was a lie</description><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.89</title><link>https://xswarm.ai/releases#v3.0.89</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.89</guid><pubDate>Fri, 11 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.88</title><link>https://xswarm.ai/releases#v3.0.88</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.88</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.87 — fix(deploy): let production, not wrangler&apos;s exit code, decide whether a deploy worked (#134)</title><link>https://xswarm.ai/releases#v3.0.87</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.87</guid><description>fix(deploy): let production, not wrangler&apos;s exit code, decide whether a deploy worked (#134)
fix(visual-audit): an element scrolled out of view is not covering anything
fix: guard the bare `pm2 restart xswarm-daemon` (#133)</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.86 — fix(responsive): Sign In was off-screen from 768-1078px; docs unreadable on a phone</title><link>https://xswarm.ai/releases#v3.0.86</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.86</guid><description>fix(responsive): Sign In was off-screen from 768-1078px; docs unreadable on a phone
fix: strip blockquote markers instead of skipping them in description extraction</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.85</title><link>https://xswarm.ai/releases#v3.0.85</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.85</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.84 — feat: real per-project descriptions, hot-linked icons, and quality/status/KPI summary (#127)</title><link>https://xswarm.ai/releases#v3.0.84</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.84</guid><description>feat: real per-project descriptions, hot-linked icons, and quality/status/KPI summary (#127)</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.83 — perf(blog): serve images at the size they are displayed</title><link>https://xswarm.ai/releases#v3.0.83</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.83</guid><description>perf(blog): serve images at the size they are displayed</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.82 — perf(blog): 17.7 MB of images on one article, and a 40-second LCP</title><link>https://xswarm.ai/releases#v3.0.82</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.82</guid><description>perf(blog): 17.7 MB of images on one article, and a 40-second LCP
fix: refuse to restart the daemon when the checkout has drifted from HEAD (#132)
fix: raise undici&apos;s connect timeout to stop false connection failures on Boss (#128)</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.81 — fix(web): guard the last unguarded auth fetch, and make the rule checkable</title><link>https://xswarm.ai/releases#v3.0.81</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.81</guid><description>fix(web): guard the last unguarded auth fetch, and make the rule checkable</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.80 — fix(theme): remove duplicate *:focus-visible rule shadowing the light-dark aware one</title><link>https://xswarm.ai/releases#v3.0.80</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.80</guid><description>fix(theme): remove duplicate *:focus-visible rule shadowing the light-dark aware one</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.79 — fix(security): clear all 5 high advisories -- wrangler was pinned four times at three versions</title><link>https://xswarm.ai/releases#v3.0.79</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.79</guid><description>fix(security): clear all 5 high advisories -- wrangler was pinned four times at three versions</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.78 — fix(dashboard): active-state on platform sub-nav and account/settings footer</title><link>https://xswarm.ai/releases#v3.0.78</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.78</guid><description>fix(dashboard): active-state on platform sub-nav and account/settings footer
fix(daemon): stop retrying a WebSocket handshake that answered 404
fix: delete the daemon&apos;s dead WebSocket channel (#125)</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.77</title><link>https://xswarm.ai/releases#v3.0.77</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.77</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.76</title><link>https://xswarm.ai/releases#v3.0.76</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.76</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.75 — fix(dashboard): re-apply worker/task compact band + nested-nav active-state</title><link>https://xswarm.ai/releases#v3.0.75</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.75</guid><description>fix(dashboard): re-apply worker/task compact band + nested-nav active-state
fix(seo): /blog had no top-level heading, and no page on the site had structured data
fix(quality): the gate was building a shell command from a file-controlled value</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.74 — fix(quality): the gate was building a shell command from a file-controlled value</title><link>https://xswarm.ai/releases#v3.0.74</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.74</guid><description>fix(quality): the gate was building a shell command from a file-controlled value</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.73</title><link>https://xswarm.ai/releases#v3.0.73</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.73</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.72 — feat(dashboard): render deploy state on the per-project hub</title><link>https://xswarm.ai/releases#v3.0.72</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.72</guid><description>feat(dashboard): render deploy state on the per-project hub
fix(web): docs sidebar and related-post links pointed at /undefined</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.71 — feat: deploy pipeline reports its own state (#122)</title><link>https://xswarm.ai/releases#v3.0.71</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.71</guid><description>feat: deploy pipeline reports its own state (#122)</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.70</title><link>https://xswarm.ai/releases#v3.0.70</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.70</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.69 — feat(dashboard): render recent commits on the per-project hub</title><link>https://xswarm.ai/releases#v3.0.69</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.69</guid><description>feat(dashboard): render recent commits on the per-project hub
feat(project-logo): wire monogram into every place a project is shown (#120)</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.68 — feat: recent-commits box-relay (cloud + box halves of #59)</title><link>https://xswarm.ai/releases#v3.0.68</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.68</guid><description>feat: recent-commits box-relay (cloud + box halves of #59)
feat(project-logo): deterministic monogram fallback (part 1 of #120)</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.67 — feat(nav): nest recent documents under Documents, sidebar + user menu</title><link>https://xswarm.ai/releases#v3.0.67</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.67</guid><description>feat(nav): nest recent documents under Documents, sidebar + user menu
fix(seed-documents): key idempotency on project_id too, and survive a busy box
fix(seed-documents): match project by registry path, not a name substring
feat(documents): ongoing write path + nested nav sub-links</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.66 — fix(nav): Layout.astro renders Navbar once, drop the unused Orbitron preload</title><link>https://xswarm.ai/releases#v3.0.66</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.66</guid><description>fix(nav): Layout.astro renders Navbar once, drop the unused Orbitron preload
docs: ingest ADRs into the Documents dashboard, idempotently</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.65 — feat: box-side isAncestor fulfillment (ancestry-check.js)</title><link>https://xswarm.ai/releases#v3.0.65</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.65</guid><description>feat: box-side isAncestor fulfillment (ancestry-check.js)</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.64</title><link>https://xswarm.ai/releases#v3.0.64</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.64</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.63 — feat: ancestry checks -- box-relayed isAncestor for derived status</title><link>https://xswarm.ai/releases#v3.0.63</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.63</guid><description>feat: ancestry checks -- box-relayed isAncestor for derived status</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.62</title><link>https://xswarm.ai/releases#v3.0.62</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.62</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.61 — fix(nav): project names in menu/sidebar must never wrap, reduce indent</title><link>https://xswarm.ai/releases#v3.0.61</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.61</guid><description>fix(nav): project names in menu/sidebar must never wrap, reduce indent</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.60</title><link>https://xswarm.ai/releases#v3.0.60</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.60</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.59</title><link>https://xswarm.ai/releases#v3.0.59</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.59</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.58 — feat: project enable/disable toggle (on-hold state)</title><link>https://xswarm.ai/releases#v3.0.58</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.58</guid><description>feat: project enable/disable toggle (on-hold state)
fix(db): failed migration must not be marked as successfully initialized
fix(blog): correct the heading outline on every post, with no visual change
fix(blog): dedupe hardcoded purple literal, drop 2 unused palette tokens</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.57</title><link>https://xswarm.ai/releases#v3.0.57</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.57</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.56</title><link>https://xswarm.ai/releases#v3.0.56</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.56</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.55 — feat(workers): move connect-worker below the grid, de-emphasize; decide against a live token</title><link>https://xswarm.ai/releases#v3.0.55</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.55</guid><description>feat(workers): move connect-worker below the grid, de-emphasize; decide against a live token</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.54</title><link>https://xswarm.ai/releases#v3.0.54</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.54</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.53 — fix(blog): emit real width/height on every hero, measured from the file</title><link>https://xswarm.ai/releases#v3.0.53</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.53</guid><description>fix(blog): emit real width/height on every hero, measured from the file</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.52</title><link>https://xswarm.ai/releases#v3.0.52</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.52</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.51 — perf(middleware): the admin lookup could not help the pages it was widened for</title><link>https://xswarm.ai/releases#v3.0.51</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.51</guid><description>perf(middleware): the admin lookup could not help the pages it was widened for
feat: rebuild /dashboard/projects as a sortable/filterable table</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.50</title><link>https://xswarm.ai/releases#v3.0.50</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.50</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.49 — fix: remove dangling build:cli-chat script, packages/app has no build step</title><link>https://xswarm.ai/releases#v3.0.49</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.49</guid><description>fix: remove dangling build:cli-chat script, packages/app has no build step
feat: worker cards -- btop-style system monitor redesign</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.48</title><link>https://xswarm.ai/releases#v3.0.48</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.48</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.47</title><link>https://xswarm.ai/releases#v3.0.47</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.47</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.46</title><link>https://xswarm.ai/releases#v3.0.46</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.46</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.45 — feat: project health fields + fix recent-projects fallback ranking</title><link>https://xswarm.ai/releases#v3.0.45</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.45</guid><description>feat: project health fields + fix recent-projects fallback ranking
fix(dev-preview): guard against concurrent fulfillment of the same project_id</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.44 — fix: drop 2 unused exports flagged by elegance audit</title><link>https://xswarm.ai/releases#v3.0.44</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.44</guid><description>fix: drop 2 unused exports flagged by elegance audit
feat: derived request status + rank ordering + scope-aware claim locks</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.43</title><link>https://xswarm.ai/releases#v3.0.43</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.43</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.42</title><link>https://xswarm.ai/releases#v3.0.42</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.42</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.41 — feat: rebuild /dashboard to Chad&apos;s literal spec</title><link>https://xswarm.ai/releases#v3.0.41</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.41</guid><description>feat: rebuild /dashboard to Chad&apos;s literal spec
fix: anonymous visitors were fetching /api/projects on every page and logging a 401</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.40</title><link>https://xswarm.ai/releases#v3.0.40</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.40</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.39 — fix(daemon): scope worker-init exit to worker, not whole process</title><link>https://xswarm.ai/releases#v3.0.39</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.39</guid><description>fix(daemon): scope worker-init exit to worker, not whole process</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.38 — fix(blog): gray-500 text fails WCAG AA on the blog&apos;s own background; author avatar squashed</title><link>https://xswarm.ai/releases#v3.0.38</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.38</guid><description>fix(blog): gray-500 text fails WCAG AA on the blog&apos;s own background; author avatar squashed</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.37</title><link>https://xswarm.ai/releases#v3.0.37</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.37</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.36</title><link>https://xswarm.ai/releases#v3.0.36</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.36</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.35 — fix: Lighthouse — contrast, dead sitemap path, unused analytics bundle, and a gate that could not tighten</title><link>https://xswarm.ai/releases#v3.0.35</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.35</guid><description>fix: Lighthouse — contrast, dead sitemap path, unused analytics bundle, and a gate that could not tighten</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.34</title><link>https://xswarm.ai/releases#v3.0.34</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.34</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.33</title><link>https://xswarm.ai/releases#v3.0.33</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.33</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.32</title><link>https://xswarm.ai/releases#v3.0.32</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.32</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.31</title><link>https://xswarm.ai/releases#v3.0.31</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.31</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.30 — docs: ADR-003 addendum -- cards vs. tables, close the settings/workers/documents backlog</title><link>https://xswarm.ai/releases#v3.0.30</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.30</guid><description>docs: ADR-003 addendum -- cards vs. tables, close the settings/workers/documents backlog</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.29</title><link>https://xswarm.ai/releases#v3.0.29</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.29</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.28 — docs: rewrite Development Guardrails as the full meta-harness spec</title><link>https://xswarm.ai/releases#v3.0.28</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.28</guid><description>docs: rewrite Development Guardrails as the full meta-harness spec</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.27</title><link>https://xswarm.ai/releases#v3.0.27</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.27</guid><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v3.0.26 — fix: DashboardLayout.astro Element.focus typing (was blocking every push)</title><link>https://xswarm.ai/releases#v3.0.26</link><guid isPermaLink="true">https://xswarm.ai/releases#v3.0.26</guid><description>fix: DashboardLayout.astro Element.focus typing (was blocking every push)
fix: raise text-tertiary and Shiki comment contrast to WCAG AA
docs: remove duplicate H1 heading from all doc pages
docs: replace the guardrails doc&apos;s abstract test-quality point with a reproduced example
docs: five product docs Chad asked for -- coordination, guardrails, setup, daily workflow, integrations
fix(auth): magic-link login mints an unsigned token that never authenticates
docs: API action inventory -- every user action mapped to its route, gaps flagged
fix: getSocketTicket was called but never defined; upgrade vite to current
fix(web): patch astro isNode misdetection that broke all SSR on Workers
fix: the web app could not build at all
fix: remove dead cli-chat.js (544 lines, unreferenced)
refactor: merge 3 single-function files into parent modules
feat: add visual regression + content page E2E tests for all routes
feat: add unit tests for 6 untested API routes and encryption lib
feat: implement BDD step definitions for all 11 feature files
fix: resolve all 82 TypeScript errors in web package
fix: remove dead cli-chat variants and test artifacts, add QA skill
fix: auto-migration in production, Svelte 5 build fixes, DO sqlite migration
feat: usage billing, extensions, critical path tests, foreman relay fixes
feat: add 3-tier funny pricing and AI provider logos to homepage
feat: rewrite homepage with architecture-over-aspiration philosophy
feat: implement xSwarm beta MVP — encryption, admin, multi-machine sync, quality pipeline
feat: add branded ASCII logo to CLI matching website identity
fix: remove GitHub Actions workflows, add manual publish:cli script
feat: redesign homepage with conversion-focused layout
docs: add architecture decisions document (ADR-001, ADR-002)
fix: add optionalAuth middleware to /api/auth/me endpoint
fix: exclude _worker.js from PWA precache
fix: clean up login page and fix PWA manifest path
fix: use correct TURSO_DATABASE_URL env var and static imports
feat: unified versioning and releases page
refactor: remove shared package, duplicate crypto code to app and web
feat: enhance forget command with GitHub identifiers and selection
feat: add forget command to remove project config
feat: add CLI and API deploy scripts
feat: implement zero-knowledge encryption with device approval
feat: add safe merge script with test-before-merge
feat: add CI/CD test workflow and post-merge hook
feat: add auto-deploy hooks and release history
feat: switch PWA to auto-update mode
feat: add Workbox PWA with auto-update prompt
feat: add docs sidebar TOC and tutorials TLDR box
docs: rewrite tutorials around one-command simplicity
fix: skip auth API call when no session cookie exists
refactor: use package.json as single source of truth for version
fix: add version.json for navbar version display
feat: add VHS terminal GIFs and screenshot capture scripts
feat: add comprehensive tutorials section with 9 how-to articles
feat: implement GitHub OAuth authentication with profile button
fix: simplify terminal demo banner for reliable rendering
fix: improve terminal demo appearance
feat: add auto-update system and improved terminal demo
feat: prepare for private repo - remove GitHub links, add investor page
docs: add Technical Strategy document
docs: add Architecture Decision Records (ADRs)
feat: complete staging deployment pipeline
fix: add mermaid dependency and fix build errors
refactor: reorganize project structure and add release workflows
feat: add content collections for docs and blog
refactor: simplify to 3-package architecture (api, app, web)
feat: add worker daemon with GitHub device flow auth
feat: add SSR mode with dashboard, API routes, and auth
feat: add database package with Turso schema and per-user DB helpers
feat: extract shared package with agents, types, and theme
refactor: restructure to packages/* monorepo layout
feat: Add abbreviation field to visual_identity section of agent YAML files
fix: Resolve terminal UI issues
fix: Disable mouse capture to enable native text selection
fix: Proper terminal cleanup on exit to prevent corruption
fix: Add comprehensive error handling and logging
fix: Improve UI text rendering and add clipboard support
fix: Multiple UI improvements and bug fixes
fix: Simplify UI for npx - always use TerminalUI
fix: Ensure npx compatibility with optional canvas dependency
feat: Implement advanced terminal graphics for text input
fix: Complete test suite fixes and UI improvements
fix: Replace require() with ES6 imports in ui.js
feat: Add full terminal UI with ASCII art and advanced text editor
feat: Add conversational API key setup and cost tracking
fix: Make CLI even more conversational with auto-detection
fix: Refactor CLI to conversational interface per PRD requirements
feat: Complete xSwarm CLI implementation with all core features
fix: Complete CSS refactoring with restored blog styles and terminal theme
fix: Restore blog styles after CSS file deletion
fix: Restore exact original hero title styles
fix: Restore all missing styles after CSS refactor disaster
fix: Restore navbar styles that were accidentally removed
fix: Use non-breaking spaces in navbar to prevent text wrapping
refactor: Eliminate CSS slop by creating reusable blog components
fix: Add error handling to navbar typewriter animation</description><pubDate>Thu, 10 Sep 2026 12:00:00 GMT</pubDate></item><item><title>v0.29.3 — fix: Add DOMContentLoaded wrapper to ensure typewriter animation runs</title><link>https://xswarm.ai/releases#v0.29.3</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.29.3</guid><description>fix: Add DOMContentLoaded wrapper to ensure typewriter animation runs
fix: Implement typewriter animation correctly in Navbar
refactor: Move typewriter animation to separate component
fix: Use IIFE to ensure typewriter animation starts
fix: Clean up navbar script and fix syntax errors
fix: Add is:inline back to fix Astro script processing error
fix: Remove is:inline directive and add newline to fix script execution
fix: Simplify navbar typewriter animation with is:inline directive
fix: Use client-side script for navbar typewriter animation
feat: Add typewriter animation to navbar logo
feat: Randomize initial scenario selection
feat: Add humorous banking CoffeeScript scenario and enhance React→Svelte migration
fix: Improve agent join notification spacing and style
fix: Improve scrolling during typing animation for wrapped text
fix: Improve agent join notification spacing
fix: Use planning stages pattern for agent join delays
fix: Properly implement sequential agent join delays
fix: Add delay before each agent join notification
feat: Improve agent join notification readability
feat: Add SEO perspective on quotes as resource pages
feat: Add automated content discovery and promotion engine
feat: Add win-win partnership model to quote memorization scenario
fix: Clean up terminal display by removing success messages
fix: Resolve null reference error in terminal animation
feat: Add automated content promotion strategy to memorization PWA
fix: Properly clear terminal content between scenario transitions
fix: Reorder scenarios with quote-memorization-pwa first and improve animation loop clearing
feat: Fix animation loop and add quote memorization PWA scenario
feat: Add Deep Researcher agent and standardize planning stages
fix: Add HTML attribute escaping to prevent text truncation
fix: Replace double quotes with single quotes in data attributes to prevent HTML parsing errors
feat: Generate favicons from SVG logo
fix: Fix chat animation timing and structure issues
fix: Fix chat animation freeze by ensuring message display starts
fix: Restore VT323 font to navbar while keeping Share Tech Mono in terminal
fix: Reduce terminal font size from 24px to 18px
feat: Switch to Share Tech Mono font for better clarity
fix: Sharpen terminal text rendering
fix: Revert flexbox changes to fix scrolling issue
fix: Force flexbox display with important flags to override inline styles
fix: Switch to flexbox layout for proper text wrapping alignment
fix: Adjust hanging indent spacing for better readability
fix: Improve chat message text wrapping with hanging indent
fix: Use inline display for proper text wrapping
fix: Align agent names with first line of wrapped text
fix: Change chat elements to inline-block for proper line height
fix: Force tighter line spacing for wrapped text in chat
fix: Improve line height for wrapped text in chat messages
fix: Fix frozen chat animation in terminal hero
fix: Fix MK agent color conflict with BA
fix: Ensure unique colors for each agent in terminal chat
fix: Refine navbar font override selectors
fix: Add missing --font-sans CSS variable definition
fix: Properly isolate navbar component fonts with global overrides
fix: Ensure consistent navbar font across all pages
fix: Improve Mermaid diagram layout and fix rendering issues
fix: Add comprehensive styling for multiple blog post visuals
fix: Add comprehensive styling for sandboxed integration blog visuals
fix: Replace ASCII art with Mermaid diagram in sandboxed integration post
feat: Refactor TerminalHero component with JSON scenarios and enhanced styling</description><pubDate>Mon, 07 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.29.2 — feat: Enhance navbar with terminal-style logo and improved navigation</title><link>https://xswarm.ai/releases#v0.29.2</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.29.2</guid><description>feat: Enhance navbar with terminal-style logo and improved navigation</description><pubDate>Sun, 06 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.29.1 — fix: Remove automatic version bumping from CI workflow</title><link>https://xswarm.ai/releases#v0.29.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.29.1</guid><description>fix: Remove automatic version bumping from CI workflow</description><pubDate>Sun, 06 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.29.0</title><link>https://xswarm.ai/releases#v0.29.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.29.0</guid><pubDate>Sun, 06 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.28.1 — fix: Remove automatic version bumping from CI workflow</title><link>https://xswarm.ai/releases#v0.28.1</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.28.1</guid><description>fix: Remove automatic version bumping from CI workflow
feat: Add realistic delays to terminal animation and bump CLI version
feat: Create animated terminal hero section for homepage</description><pubDate>Sun, 06 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.28.0 — fix: Update footer with correct GitHub links and contact info</title><link>https://xswarm.ai/releases#v0.28.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.28.0</guid><description>fix: Update footer with correct GitHub links and contact info</description><pubDate>Sun, 06 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.27.0 — feat: Add AI development lessons blog post and planning documents</title><link>https://xswarm.ai/releases#v0.27.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.27.0</guid><description>feat: Add AI development lessons blog post and planning documents
feat: Add blog hero images and visual assets
feat: Add reusable blog components
feat: Update styles and components for better blog integration
fix: Replace component-based visuals with self-contained Tailwind styles</description><pubDate>Sun, 06 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.26.0 — docs: Add 5 more AI anti-patterns from 2024 research</title><link>https://xswarm.ai/releases#v0.26.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.26.0</guid><description>docs: Add 5 more AI anti-patterns from 2024 research</description><pubDate>Wed, 02 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.25.0 — docs: Add terse AI behavior rules to CLAUDE.md</title><link>https://xswarm.ai/releases#v0.25.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.25.0</guid><description>docs: Add terse AI behavior rules to CLAUDE.md</description><pubDate>Wed, 02 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.24.0 — docs: Add outdated package version anti-pattern to AI best practices</title><link>https://xswarm.ai/releases#v0.24.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.24.0</guid><description>docs: Add outdated package version anti-pattern to AI best practices</description><pubDate>Wed, 02 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.23.0 — docs: Create comprehensive AI development best practices guide</title><link>https://xswarm.ai/releases#v0.23.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.23.0</guid><description>docs: Create comprehensive AI development best practices guide</description><pubDate>Wed, 02 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.22.0 — refactor: Major technical debt cleanup</title><link>https://xswarm.ai/releases#v0.22.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.22.0</guid><description>refactor: Major technical debt cleanup</description><pubDate>Wed, 02 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.21.0 — feat: Add Mermaid diagram support for blog articles</title><link>https://xswarm.ai/releases#v0.21.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.21.0</guid><description>feat: Add Mermaid diagram support for blog articles</description><pubDate>Wed, 02 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.20.0 — docs: Create comprehensive Design System document</title><link>https://xswarm.ai/releases#v0.20.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.20.0</guid><description>docs: Create comprehensive Design System document
fix: correct repository URLs in package.json [skip ci]</description><pubDate>Wed, 02 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.19.0 — feat: Major UI improvements - cyberpunk styling and content updates</title><link>https://xswarm.ai/releases#v0.19.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.19.0</guid><description>feat: Major UI improvements - cyberpunk styling and content updates
fix: Improve blog index layout and reduce empty space
feat: Redesign blog index with varied card sizes</description><pubDate>Wed, 02 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.18.0 — fix: Resolve card z-index issues for images and hover states</title><link>https://xswarm.ai/releases#v0.18.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.18.0</guid><description>fix: Resolve card z-index issues for images and hover states
fix: Restore card components to working state from June 29
fix: Restore working card styles and fix epoch visualization
fix: Resolve text overlap in epoch visualization circles
feat: Create cyberpunk blog index page and fix epoch visualization</description><pubDate>Wed, 02 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.17.0 — feat: Improve blog layout and navbar styling</title><link>https://xswarm.ai/releases#v0.17.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.17.0</guid><description>feat: Improve blog layout and navbar styling
fix: Remove sales-pitch language and fix navbar sticky behavior
feat: Cyberpunk share section and fix content accuracy
fix: Clean up blog layout and remove fake cost data</description><pubDate>Tue, 01 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.16.0 — feat: Add award-winning cyberpunk blog design with modern typography</title><link>https://xswarm.ai/releases#v0.16.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.16.0</guid><description>feat: Add award-winning cyberpunk blog design with modern typography</description><pubDate>Tue, 01 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.15.0 — fix: Update prototype URLs and add missing prototype images</title><link>https://xswarm.ai/releases#v0.15.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.15.0</guid><description>fix: Update prototype URLs and add missing prototype images</description><pubDate>Tue, 01 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.14.0 — fix: Add missing blog images and CSS imports</title><link>https://xswarm.ai/releases#v0.14.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.14.0</guid><description>fix: Add missing blog images and CSS imports</description><pubDate>Tue, 01 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.13.0 — fix: Fix YAML frontmatter quoting issues in blog articles</title><link>https://xswarm.ai/releases#v0.13.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.13.0</guid><description>fix: Fix YAML frontmatter quoting issues in blog articles</description><pubDate>Tue, 01 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.12.0 — feat: Update blog article titles for maximum developer engagement</title><link>https://xswarm.ai/releases#v0.12.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.12.0</guid><description>feat: Update blog article titles for maximum developer engagement
feat: Add compelling visual elements to token economics article
feat: Add visual elements to forty hidden agents blog post
feat: Add visual elements to swarm commander blog post
feat: Add visual elements to AI Epoch Manifesto blog post
feat: Add visual elements to Three Minute Standups blog post
feat: Add visual elements to interactive prototypes blog post
feat: Add visual elements to AI Function Graveyard blog post</description><pubDate>Tue, 01 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.11.0 — feat: Major xSwarm documentation and blog overhaul</title><link>https://xswarm.ai/releases#v0.11.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.11.0</guid><description>feat: Major xSwarm documentation and blog overhaul</description><pubDate>Tue, 01 Jul 2025 12:00:00 GMT</pubDate></item><item><title>v0.10.0 — feat: Major UI improvements for agent cards and site styling</title><link>https://xswarm.ai/releases#v0.10.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.10.0</guid><description>feat: Major UI improvements for agent cards and site styling
feat: enhance trading cards with polish and interactivity
fix: center agent card rows on homepage
fix: show card images and match rounded corners
fix: resolve card image visibility and rounded corners
fix: improve card image placement and layering
feat: enhance agent cards with improved styling and compact mode
feat: Complete agent content architecture with stable naming
fix: Use role-based image naming for stability
feat: Enhance card skeuomorphism with physical textures and cyberpunk titles
feat: Create skeuomorphic trading card design with reusable styles
feat: Convert agents to Astro content collections and enhance card display
feat: Transform agent cards into fantasy game card design with cyberpunk avatars
feat: Add comprehensive 50-agent roster with cyberpunk descriptions
feat: Transform agent cards into cyberpunk character cards with real dialogue
fix: Improve cyberpunk visual design with better spacing
feat: Complete cyberpunk theme with agentic revolution messaging
feat: Implement cyberpunk terminal theme across website
feat: Update all image references to use new teamofone.png
feat: Add cyberpunk terminal theme and image generation</description><pubDate>Sun, 29 Jun 2025 12:00:00 GMT</pubDate></item><item><title>v0.9.0 — docs: Clarify npm scripts usage policy in CLAUDE.md</title><link>https://xswarm.ai/releases#v0.9.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.9.0</guid><description>docs: Clarify npm scripts usage policy in CLAUDE.md</description><pubDate>Sun, 29 Jun 2025 12:00:00 GMT</pubDate></item><item><title>v0.8.0</title><link>https://xswarm.ai/releases#v0.8.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.8.0</guid><pubDate>Sun, 29 Jun 2025 12:00:00 GMT</pubDate></item><item><title>v0.7.0</title><link>https://xswarm.ai/releases#v0.7.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.7.0</guid><pubDate>Sun, 29 Jun 2025 12:00:00 GMT</pubDate></item><item><title>v0.6.0</title><link>https://xswarm.ai/releases#v0.6.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.6.0</guid><pubDate>Sun, 29 Jun 2025 12:00:00 GMT</pubDate></item><item><title>v0.5.0</title><link>https://xswarm.ai/releases#v0.5.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.5.0</guid><pubDate>Sun, 29 Jun 2025 12:00:00 GMT</pubDate></item><item><title>v0.4.0</title><link>https://xswarm.ai/releases#v0.4.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.4.0</guid><pubDate>Sun, 29 Jun 2025 12:00:00 GMT</pubDate></item><item><title>v0.3.0</title><link>https://xswarm.ai/releases#v0.3.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.3.0</guid><pubDate>Sun, 29 Jun 2025 12:00:00 GMT</pubDate></item><item><title>v0.2.0 — fix: add .nojekyll file creation to deployment script</title><link>https://xswarm.ai/releases#v0.2.0</link><guid isPermaLink="true">https://xswarm.ai/releases#v0.2.0</guid><description>fix: add .nojekyll file creation to deployment script
fix: add write permissions to website deployment workflow
fix: update logo URL to use hosted version
docs: enhance README with comprehensive documentation and logo
feat: initial xswarm.ai infrastructure setup</description><pubDate>Sun, 29 Jun 2025 12:00:00 GMT</pubDate></item></channel></rss>