Release History

Current version: 20.140.0

FeatureFixPerformanceDocsRefactorTestsChoreOther

v20.140.0October 23, 2026+2 internal

fix
Overview panels return to sign-in holds with trunk -- d1-bindings.test.js
4838f79e
fix
Ticket shelf, blockers and sessions panels send a 401 to sign in (signOutOn401)
5c328f78

v20.139.0October 23, 2026+2 internal

fix
A 401 from /api/tasks drops the hint and goes to sign in (signOutOn401)
0a5e2ef7
fix
re-check quality after a critical-path fix pass
07c25cf8

v20.138.0October 23, 2026+4 internal

refactor
Machine keys cannot disconnect machines
e47c3649
refactor
Staging test accounts cannot claim emails
40f659bb
fix
/test/account honours a chosen email only with the staging superadmin key
699ad917
fix
disconnect refuses a machine key unless the worker is its own
1d45c4c2

v20.137.0October 23, 2026+4 internal

feat
xswarm task retry -- replan a blocked ticket, refuse any other status
50950a39
fix
packed-install keeps npm's stderr in the error and retries once on a network error code
3c071653

v20.136.0October 23, 2026+6 internal

fix
the gate names a suite that failed outside any test, so a red candidate says why
40be0eba
refactor
Pairing guess cap holds under a burst
c865e929
fix
log each pairing attempt before verifying and count only failures queued ahead of it, so a burst cannot outrun the 10-guess cap
05f8989e
refactor
Faster projects list on dashboard pages
4e0bcc7b
fix
DELETE /users/me and DELETE /keys/:id refuse a machine key with 403
83ba06d4
feat
projects list issues deploy, icon, dev-preview and health reads in one round after the list
0c0b7975
fix
the agent's stdout is a file, so a busy runner cannot lose its result
d93b6d40

v20.135.0October 23, 2026+2 internal

refactor
SiteauditCleanup: Weekly a11y audit signs in on staging; A11y report lis
f42940da
feat
the a11y audit mints a staging QA session and measures stage signed in; its report lists axe violations by route
fc9ea477

v20.134.0October 23, 2026+2 internal

fix
re-take homepage-tablet chromium linux baseline for the hero subtitle copy from 4c1bc3a43
91d1ba1e
fix
re-take new-cto and agency-owner scenario baselines (chromium, firefox, Mobile Chrome linux) showing the shared Tag from 6b67f832
89a307ff

v20.133.0October 23, 2026+3 internal

feat
a phone dashboard hides the Navbar's Main menu, leaving the dashboard bar's one menu button
2397b6e6
feat
a new build shows the update bar and waits for the reader to press Reload
dee4d23f

v20.132.0October 23, 2026+4 internal

refactor
First blog card image loads eagerly
820b7223
feat
first /blog card image with an image loads eager with fetchpriority high; the rest stay lazy
b78f0d20
fix
rendersClean settles on 500ms of request quiet, not networkidle, and names a hang by a 7s deadline from its start
f4d16eb9

v20.131.0October 23, 2026+6 internal

fix
hero headline unhinted and its bold stand-in rescaled to 116%, so no line slides 2px at the Orbitron swap
17b8d329
fix
recent-projects joins the nav store's shared /api/projects; an aborted /api/auth/me keeps the user menu reachable
e1047770
fix
admin secondary lines and empty states use --color-text-muted; platform filters get visible labels
b974e027

v20.130.0October 23, 2026+4 internal

fix
an open ticket sheet holds the auto-reload and the update bar sits above its backdrop
0339a8d2
fix
connect code field gets a 2 px terminal-cyan focus-visible ring; connect and diagram labels use --color-text-muted
4b8d0281

v20.129.0October 23, 2026+2 internal

feat
empty Tickets list and empty Activity board link onward to File a request (/dashboard/requests)
5d5d2e18

v20.128.0October 23, 2026+2 internal

fix
a stream line split across stdout reads still parses
8c80477c
fix
New Project and admin filter fields swap focus:outline-none for a 2 px terminal-cyan focus-visible ring
00db637f

v20.127.0October 23, 2026+2 internal

fix
setup tutorial asks for Claude Code (Pro or Max) and drops the API key / BYOK onboarding question
9f272eb3

v20.126.0October 23, 2026+2 internal

refactor
Filed request confirms itself
83290d4d
feat
a filed request shows a lasting success status, a failed one an alert
92fb0dd2

v20.125.0October 23, 2026+2 internal

refactor
Token calculator renders as a panel
54399cbd
fix
(runner) System One's spec pick asks a batch again on a dropped connection instead of leaving the ticket unjudged
ffd412f2
refactor
Token calculator renders as a panel
6f3521ab
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
43d49b9c

v20.124.0October 23, 2026+2 internal

fix
(runner) a candidate fix pass refused for free RAM waits and runs instead of discarding the candidate
b92a4413
feat
an answered blocker stays in place, greyed, reading "Answered: <answer>" with its controls disabled
0236dc10

v20.123.0October 23, 2026+3 internal

fix
re-run critical path; authenticated and chat-history pass unchanged
1bf6cb0f
fix
failed Workers and Usage loads say so instead of reading as empty
9bcf496b

v20.122.0October 23, 2026+2 internal

feat
a created project says "Created <name>" in the floating status notice
1f70bde2
fix
(runner) a refactor pass refused for free RAM waits and runs instead of being skipped
66916bef
fix
a board pull asked for mid-pull joins the one in flight
9c2c679e

v20.121.0October 23, 2026+2 internal

feat
Blockers spec signs in for real
586dba05

v20.120.0October 23, 2026+2 internal

feat
failures carry spec:line; a routeless timeout is titled by tests and specs, examples name spec:line
73ecf8e4

v20.119.0October 23, 2026+5 internal

fix
cap rendersClean's still-in-flight poll at 5s so a hung /api/ call is named within 8s on staging too
89662a9b
fix
(deploy) a Cloudflare build terminated or canceled gets its one retry, also while deploy-agreement waits
8855d7ff
fix
Chat history survives a reload holds with trunk -- astro-workerd-fix.test.js, install-browsers.test.js
e8b94783
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's squeezed pane is red there on desktop
204f3c94
fix
the small-viewport composer check asserts the composer at the page's top, not that nothing scrolled -- a remembered conversation now scrolls into view; scrollIntoView guarded for jsdom
a44b26c4
refactor
Chat history survives a reload
f1c9a311
fix
Studio's chat pane keeps room for its history, and a phone scrolls a remembered conversation into view above the docked composer
7b3c96e3

v20.118.0October 23, 2026+2 internal

fix
console-attribution pins the terminal socket at TerminalView.svelte:28, where the ticket retry moved it
b0c178d7
refactor
Workspace terminal connects in Firefox
1ac4b5c3
fix
TerminalView retries a refused ws-ticket on the same backoff as a dropped socket, and stops retrying once torn down
b6972e6d

v20.117.0October 23, 2026+6 internal

fix
tag the no-DMI card checks @critical so the trunk run measures them; they ran only in ticket-spec before
36e46351
fix
renders-clean names the /api/ paths still in flight, skips held <img> icons, and polls from load so a hang fails inside 8s
b66a9327
refactor
No-DMI worker card shows no "Unknown"
f0b88fee
fix
console-attribution pins the room socket's URL line at relay-socket.js:16, where the down-room signal moved it
82b73b1d
fix
the worker card's meta line is a named Machine group, so a test reads it by role on a stubbed fleet
2a7969c6
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
885d9184

v20.116.0October 23, 2026+2 internal

fix
Homepage tests survive a slow asset holds with trunk -- claude-executor.test.js
7abf4482
fix
homepage spec opens / at domcontentloaded, so a hung image cannot eat the beforeEach
96438225

v20.115.0October 23, 2026+2 internal

fix
(deploy-prod) promote and migrate the full tested sha, not staging's 7-character stamp
2f1ca205
fix
Delete account and Cancel open and close the dialog by commandfor, so a press before the settings script lands still opens it
a61a40a6

v20.114.0October 23, 2026+2 internal

fix
(runner) a coding run refused for free RAM goes back to pending without spending an attempt
5fa4727b
fix
project meeting floor drops to 18rem on desktop, so banners landing above no longer move the environments box from under a press
6464cb08

v20.113.0October 23, 2026+2 internal

fix
Plan chat opener clicks the launcher only while no Team chat dialog is visible
086c53f2

v20.112.0October 23, 2026+2 internal

feat
Barry's thinking status in Team chat
fb71d646
fix
Team chat opener clicks the launcher only while no Team chat dialog is visible
a338b69d
fix
(deploy-step) a null release read is asked again before a CLI-only trunk counts as unreleased
6f114cba
fix
(loop) a pass that planned a ticket RUN is not idle, so it starts without the 60s backoff
e31bffea

v20.111.0October 21, 2026+2 internal

feat
Kanban board served from its own database
c6554f5b
fix
/k/:token reads projects and tasks from this worker's own D1, answers 404 Kanban not found or not enabled
0208f1ad
fix
(sync) owner-held pending tickets ride the slow re-assert
7d4305a1
fix
(release) run release e2e from a worktree pinned at the tested sha
f5033a81

v20.110.0October 20, 2026+4 internal

refactor
Fresh post on the blog
235253f9
feat
token-cost guide gets a /cost command tray and an Updated date under the h1
41b8a041
feat
add 'Tickets That Are Tests' post dated 2026-10-20
431551ea

v20.109.0October 20, 2026+13 internal

fix
One install story everywhere holds with trunk -- no-npm-publish.test.js
4d3caf27
fix
Getting Started leads with npx xswarm instead of 'not published to npm'
dca60925
refactor
Guides and tools hub pages
adfc8b88
feat
/guides and /tools hub pages of raised link cards, and a guides & tools row on /docs
26385352
fix
re-take homepage-tablet firefox baseline for the new hero subtitle copy
07bcba20
feat
parallel guide gets git worktree commands in a scrolling well and an Updated date under the H1
1c399bf5
fix
(planner) the BA never answers an audit proposal's approval itself
585e5a4d
refactor
Blog name and freshness
6805db4d
feat
hero subtitle opens with 'xSwarm runs parallel Claude Code agents'
4c1bc3a4
fix
/blog h1 and RSS channel say Blog; drop the shipped HTML comment that named AI Musings
b0e2c955
fix
token post headline total is $95.20, the sum of its breakdown, with a sentence stating period, models and counting
68f885df

v20.108.0October 20, 2026+2 internal

fix
drop /mockup from the sitemap and serve it X-Robots-Tag noindex
7fcc1bf1
fix
(e2e-repair) dedupe a raw-error cause against the title it was filed under
240d543f

v20.107.0October 20, 2026+2 internal

feat
Workspace machine state in Firefox
6a3f82ea
fix
no code change here -- the relay upgrade 500 was fixed by 4e7bb603 (task e4b925d7), already on main
73cac524

v20.106.0October 20, 2026+10 internal

fix
relay sockets open on staging -- the proxy hands the API's 101 back as it came (rebuilding it threw), and a socket upgrade gets no hint cookie (Astro appended it to the immutable 101)
4e7bb603
refactor
Style guide shows colour drift
255651d7
feat
/docs/style-guide shows each token's uses and a Hard-coded colours table, both from styleDrift()
34f5f3fc
fix
Tag opts out of the global colour transition so a token change applies at once
3daeb5cc
feat
styleDrift() returns token uses and colour rows; channel tokens map to rgb(var(--name))
38a9a11c
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 'all'
bb4becc0
feat
shared Tag component on agency-owner and new-cto, colour from --color-secondary
6b67f832
feat
blog timeline, phase cards, checkboxes and manifesto principles draw from --brand-secondary/--brand-accent; the callout check waits out its border transition
1cd661ef

v20.105.0October 20, 2026+8 internal

fix
homepage section h2s, /blog h1 and post titles use var(--font-display), which carries the metric-matched Orbitron Fallback
57a4faf7
feat
delete components-demo page, TerminalDemo and ArticleCard, their visual entry and baselines, and their ratchet/lint debt entries
9493eb67
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
6f89559f
fix
Function Graveyard post is .mdx so its BlogGraveyard and BlogComparison imports render
5893f157

v20.104.0October 20, 2026+4 internal

refactor
Browser bar matches the site
fe8fd2fa
fix
theme-color meta reads #18181b (--color-background) instead of #00ff00
3996f519
fix
relay sockets open on staging -- a WebSocket upgrade skips CORS, whose headers on the room's immutable 101 made a 500 of every socket from stage.xswarm.ai
082d6469

v20.103.0October 20, 2026+2 internal

refactor
Every live-page error placed on a line
a41c230a
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's URL and stack
8dca521b

v20.102.0October 20, 2026+4 internal

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
340dd671
fix
(planner) a re-plan sees why its last plan was refused
9fbb2418
refactor
WranglerCleanup: Admin pages skip the identity call; Retire the API prox
b5e84718
feat
admin pages read is_admin from the Astro session; staging web binds the staging API's bindings and drops its API service
4a97fd9e
refactor
Relay socket on the site origin
222d5342
feat
relay sockets dial the page's own origin and the ws-ticket is minted in-process
70f7b130

v20.101.0October 20, 2026+4 internal

refactor
Staging stores icons in R2
0f989e5f
feat
bind ICONS to xswarm-icons-staging in web and api [env.staging]
6e175b6a
refactor
Secrets go to the configured account
1fa00c2f
fix
setup-secrets takes account_id from packages/web/wrangler.toml, not the first account the token sees
224085f5
fix
(dispatch) coding prompt names the e2e per-call timeout floor
9fddb2b4

v20.100.0October 19, 2026+2 internal

fix
polling test's per-second wait settles on reads the history route took, not every request seen
3bc7017b

v20.99.0October 19, 2026

fix
(pipeline) in-tree quality step runs the entry-point floor and keeps the file it names
f1bf8736

v20.98.0October 17, 2026+2 internal

refactor
Map symbol leads with its definition
fbbc5266
feat
map symbol sorts the definition before re-exports and prints its declaration
eb251fec

v20.97.0October 17, 2026+4 internal

refactor
Orientation shows the matching code
89fb0f16
feat
orient hands over the code of functions the ticket names (parse records end lines, index v3, mapAdapter passes a reader)
d7a232b8
refactor
Repo map indexes the ticket's own repo
c4e26fc7
feat
mapAdapter indexes the ticket's repo (xswarm ROOTS where present, else the whole checkout) into its own .xswarm/; run.mjs passes repoPath
903b41a5

v20.96.0October 16, 2026+2 internal

fix
Light homepage images in Firefox holds with trunk -- layout-head.test.js
eb888525
fix
drop the 192/512 and apple-touch icon links Firefox fetched; manifest served statically so dev answers it too
0f6d5169

v20.95.0October 16, 2026+5 internal

fix
(runner) a recorded observer proof is read at admission, so the first ticket after a runner start dispatches without a wasted ~33s pass
db4dd819
refactor
Per-route byte budgets in perf gate
578a8983
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
18eacc12
feat
perf-audit judges each route's desktop bytes against quality/perf-budget.json and exits 1 on any breach
94ef5fa5

v20.94.0October 16, 2026+5 internal

refactor
Unmeasured routes named in perf gate
35c33f1c
feat
homepage circuit edges as 400px WebP (41 KB, was 194 KB PNG) on labelled role=img bands
c28ccd00
feat
perfResult records routes printed UNMEASURED; perfSlips names each as '<route> unmeasured'
7f314e26

v20.93.0October 16, 2026+4 internal

fix
Work-stream specs pause their clock 1s after install, so a slow host can't put the pause in the past
9028895e
fix
focus setup accepts any top under the navbar (0..64px) instead of exactly 16, so Firefox's 16.5px passes
04880ba3
fix
(planner) plan a blocked ticket only once its blocker lands
65c6eb5c

v20.92.0October 16, 2026+5 internal

fix
Pause button truly hidden under reduced motion; cursor wrapper set in VT323 so the wordmark keeps its line box
18e3f7f1
fix
Logo cursor shares one flex item with the word, so the wordmark reads "xSwarm.ai_" with no break
53df11a0
refactor
Pausable logo animation
273bd94c
refactor
11 px floor for dashboard text
34f5df58
feat
Pause logo animation toggle beside the navbar wordmark (WCAG 2.2.2)
6b31e3b2
fix
report cover text at the 12px floor on a wider 8.5rem sheet; cover label names the audit
abed2118

v20.91.0October 16, 2026+7 internal

feat
scroll-padding-top of nav height + --space-2 on html so focused links clear the fixed navbar
5cdfde57
refactor
Lint blocks opacity-dimmed text
afc5451f
feat
web lint fails color dimmed by opacity; existing rules held as named known debt
9840fc13
refactor
Steady name for the home link
0ce269da
feat
aria-label 'xSwarm.ai home' on the navbar brand link, so its name no longer follows the retyping logo
860c9446

v20.90.0October 16, 2026+2 internal

refactor
Projects table works by keyboard
ddd36082
feat
sort buttons in projects table headers (aria-sort) and a row toggle button (aria-expanded); focus kept across re-render
6edd182b

v20.89.0October 16, 2026+2 internal

feat
Width sweep opens the account's own hub
da9fe19b
fix
drop the hard-coded a53dd66f hub from the route sweep; each width opens the account's first project
7b841a70

v20.88.0October 16, 2026+4 internal

fix
Settings delete section headed Danger zone so heading and region 'Account' stay unique
bff9b3dd
refactor
Remove a worker or project in UI
7b86c05d
fix
(pipeline) in-tree quality step runs astro check when a web file changed
c758c056
feat
remove an offline worker or a project, with Undo before the DELETE
894222f8
refactor
Account can be deleted in Settings
b6f83f98
feat
Settings Delete account section and typed-name dialog send a confirmed DELETE /api/users/me, then sign out to /
dfe00708

v20.87.0October 16, 2026+6 internal

fix
first dashboard stat labelled Online; task status names a class only when a plain word
0e40909e
feat
Tickets page delete waits out an 8s Undo notice, as the board does, instead of confirm()
8a230e7d
feat
request form with no projects says to create one, links to /dashboard/projects, disables File request
862d8179

v20.86.0October 16, 2026+2 internal

fix
Recent Tasks rows built as elements so a title is text, never markup
03c22860

v20.85.0October 16, 2026

fix
(deploy) stage and prod build waits stretch while Cloudflare still holds the build
e3ab45d6

v20.84.0October 15, 2026+4 internal

refactor
Studio messages keep their session
32647d91
fix
roomPresence moves to fixtures/session; workspace-status imports it beside listProjects
c3a3c964
fix
relay socket replays the room's last session:open to a late joiner
5fb9dcfc

v20.83.0October 15, 2026

fix
(runner) publishing-checkout fetch is async and times out at 30s
69dbc886
fix
(runner) trunk fetch is async and times out at 30s, so a hung GitHub cannot freeze the runner
87f32753
fix
(runner) stop the foreman after the release a restart waits on, not before
35ef9e30

v20.82.0October 14, 2026+2 internal

feat
task show renders id/status/title, stage, attempt count and last attempt's reason as data.message
c3682fe4

v20.81.0October 14, 2026+4 internal

refactor
ForemanCleanup: Studio opens its own session worktree; Ended session fil
d0646adf
refactor
ChatWindowCleanup: Studio lists the session's requests; Studio messages
91bd03ef
feat
session:start opens a .xswarm/sessions worktree on ui/session-<id>; a session drops project chat history; ending one files its picks and closes the session files
24ac6aaa
feat
Studio chat lists the session's requests (kept per project) and names the room's session worktree on each message
ae741cbc

v20.80.0October 14, 2026+3 internal

fix
Studio chat is one UI session holds with trunk -- rollup-shipper-real-config.test.js
6ebaccd1
refactor
Studio chat is one UI session
3a9489d2
feat
foreman answers session:open with the Studio's one session worktree, opening it on a new branch or resuming it; the room routes session:open and session:state
9b365672
fix
a red suite's requeue reason names its unhandled error and the file vitest blamed, not the jsdom banner
825e3dc1

v20.79.0October 14, 2026+4 internal

fix
WorkspaceView test loads the lazily imported panes up front so jsdom is never torn down mid-import
490ca6f0
fix
name the live grid view a 'Project grid' region so the Workspace toggle's hiding of it is observable
a7b05761

v20.78.0October 14, 2026+2 internal

refactor
Dev preview frames load on the site
fb3f75b3
fix
frame-src admits *.xswarm.ai previews and the workers.dev relay
a306a318

v20.77.0October 14, 2026+2 internal

refactor
Studio picks work on client sites
10c3ca86
feat
proxy injects a self-contained inspect bridge before </body> of relayed HTML, skipping pages that load their own
078e64a1

v20.76.0October 14, 2026+10 internal

feat
drop Open ↗ from both preview bars; Studio ↗ is the way out
9304c67c
fix
an agent that exits 0 with no result event fails with its stderr, not a bare null
fdf0a7bb
fix
Studio point-at-element picker holds with trunk -- e2e-staging-budget.test.js
5bf47fa4
refactor
Studio point-at-element picker
76db927f
feat
preview host sends Sec-Fetch-Dest: document navigations to the project's Studio with ?path
4a12f0ea
feat
Studio Pick and workspace Highlight attach picked elements to the chat composer, sent in order as chat:message annotations
60a3ab1d
refactor
Dev card opens the Studio
32e34d05
feat
Dev card's frame and Open link point at the Studio, not the bare dev site
1f76517b

v20.75.0October 14, 2026+4 internal

fix
Capped settle in rendersClean holds with trunk -- e2e-staging-budget.test.js
1db57b70
refactor
Capped settle in rendersClean
271c12a9
fix
rendersClean settles through the 3s-capped settle, not an uncapped networkidle
20252bc5
fix
width sweep settles with networkidle capped at 3s, so busy pages get measured
70e12a9a

v20.74.0October 14, 2026+4 internal

refactor
Preview zone setup without paid cert
950afc56
fix
setup:preview-zone creates a proxied *.xswarm.ai record and drops the paid advanced cert order
308be8d4
refactor
Previews load on a free certificate
cf85b197
feat
preview origins one label under xswarm.ai, <label>-preview.xswarm.ai, with a matching zone route
4b67859f

v20.73.0October 14, 2026+2 internal

feat
Footer compact variant drops the ASCII banner and top margin on phones so /compare's Join the Waitlist fits above it
e117d2aa
feat
/compare columns name Claude Squad, Conductor, Vibe Kanban; Last reviewed date; closing Join the Waitlist CTA
6797ffe3

v20.72.0October 14, 2026+2 internal

refactor
TaskCleanup: Task list readable without --json; Task board readable with
ea5732a0
feat
task list and board render readable lines without --json, via data.message
304a1d94
fix
An empty planner reply names its subtype
4394cff0

v20.71.0October 14, 2026+2 internal

refactor
Idle releases skip the window
8832cf8c
feat
skip the release window when no other ticket is pending or running
27544ebb

v20.70.0October 14, 2026+2 internal

fix
completed-without-landing tickets derive no board column on read
26ee7362
fix
completed-without-landing tickets report no board column
194f7b8c

v20.69.0October 13, 2026+2 internal

refactor
Blog posts carry dateModified
1db3c58f
feat
BlogPosting JSON-LD carries dateModified from updatedDate, falling back to publishDate
d225c906

v20.68.0October 13, 2026+2 internal

refactor
Workspace header shows Machine online
c7d82869
fix
relay-open watcher names every relay socket by full URL, token removed, and the module that dialled it
077fb462

v20.67.0October 13, 2026+2 internal

fix
(runner) a pass keeps dispatched tickets for dependencies and lets a re-planned ticket run again
f2ca046a

v20.66.0October 13, 2026+6 internal

refactor
ContentconfigCleanup: An impossible date fails the build; Overlong descr
08f60405
feat
blog schema caps publishDate at Claude Code'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
cff5f864
fix
chat-state snapshots run in the pre-push ticket-spec project instead of skipping, so the spec is measured
c4e4b5cf
feat
posts 10-12 descriptions rewritten to 107-144 chars, each ending in a whole sentence
1953a6a4

v20.65.0October 13, 2026+2 internal

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 'Relay unreachable'
bde956b7
feat
/guides/claude-code-token-costs hub linking calculator and post 12; calculator links back below its result
71bd0a6b

v20.64.0October 13, 2026+4 internal

fix
/blog card descriptions no longer line-clamped, so the whole meta description shows
749409d2
feat
posts 02-05 descriptions rewritten to 117-133 chars, each ending in a whole sentence
2247eced
feat
footer resources list links the parallel claude code guide and compare
b861399b

v20.63.0October 13, 2026+2 internal

feat
posts 02-05 re-dated to their files' first git commit (2025-07-01), after Claude Code's launch
e9e6bb42

v20.62.0October 13, 2026+5 internal

feat
navbar sizes from --size-* (wordmark title, links lead, badge/sign-in/menu body, username and recents small); footer text sizes named by token
0194aee9
feat
CLI Essentials and Dashboard guides take cyan from var(--color-neon-alt), tints via color-mix; breadcrumb nav labelled
898321ed

v20.61.0October 13, 2026+3 internal

fix
re-take tutorials-index and tutorials-mobile firefox baselines; the ticket's /tutorials type-scale sizes change what firefox draws too
a4c4318e
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
1875c7ff
fix
(merge-queue) keep a red candidate's test log where its requeue reason points
e67864bc

v20.60.0October 13, 2026+2 internal

fix
(dispatch) coding rule allows a baseline re-take the ticket asks for, as the scope guard does
fd6b8ddc
feat
freelancer Start Free Trial renders Button variant="cta"; copied .cta-button rules removed
d3884cfb

v20.59.0October 13, 2026+6 internal

refactor
Display font from one token
055e79eb
feat
theme.css --font-display ('Orbitron', metric-matched fallback, site sans) replaces the Orbitron literal in tutorial, docs and blog layouts
9cf60d34
refactor
Status colours use their tokens
e10545fc
fix
SettingsPanel FREE/Working/failure labels use --color-success and --color-danger
bba39eac
feat
projects table header, cells, badges, detail panel and toolbar spaced with --space-* tokens
1585e3e6

v20.58.0October 13, 2026+6 internal

fix
Brand neon has one token holds with trunk -- affordable-workers.test.js
86bf4d77
fix
Related Articles h3 is scrolled into view before the in-viewport check, retrying past smooth-scroll cancels
6e22e475
refactor
Brand neon has one token
cbacb69a
feat
--color-neon / --color-neon-alt in theme.css; homepage, BlogLayout and blog.css draw brand cyan from them
700d6454
refactor
Style guide generated from theme.css
563449bb
feat
style guide renders its token table from theme.css and drops the light-dark() teaching
14b0ba03

v20.57.0October 13, 2026+5 internal

fix
One tutorial CTA button holds with trunk -- dark-only-theme.test.js
7c80d93a
feat
tutorial Start Free Trial is one Button variant="cta" styled from tokens
7249dc84
refactor
Style ratchet names the new literal
9d8f71ef
feat
style ratchet's rise line lists the grown file's literals beside its count
0d883eeb

v20.56.0October 13, 2026+2 internal

fix
Barry's thinking status is found inside the Team chat dialog, not page-wide
887e916b

v20.55.0October 13, 2026+3 internal

fix
Waitlist rate limit on the platform holds with trunk -- api-binding-parity.test.js
1ed8cce4
feat
waitlist and provision rate-limit via WAITLIST_LIMITER/PROVISION_LIMITER bindings, no D1 count
4eaa9bd4

v20.54.0October 13, 2026+4 internal

refactor
One worker answers the API
642ab198
feat
web [env.production] binds the API's seven bindings and its entry exports the queue consumer
5aa0b053
fix
api worker clears its activity-prune cron; the web worker owns it
4b549f74
fix
(status) retry route checks like the deploy gate so one network blip is not BROKEN
453ce64c
fix
deploy-agreement keeps waiting while Cloudflare is still building the lagging worker
1feeca18
docs
(monitor) never run bare xswarm -- it is setup and rewrites git credentials
05c2d0ce

v20.53.0October 13, 2026+2 internal

refactor
Setup keeps git working without the App
ae11ed29
fix
setup proves the API can mint for the origin repo before swapping git's credential helper, and warns instead when the App is not installed
5a5aec0a
fix
monitor counts owner-blocked tickets as blocked, not live
d94a5289
fix
status reads the published CLI version from stdout only, not npm's config warnings
14ac225e
fix
brief does not call the daemon stale when the checkout moved only outside packages/app
a14e4e12
fix
brief calls prod current when trunk is ahead only in files no bundle ships
c796e2b0
fix
Jev judges a ticket that edits vitest.config, which no page builds through
5e53abc4

v20.52.0October 12, 2026+2 internal

fix
delete the unrendered device-approval component and its stores, which called routes no server defines
c47a7994

v20.51.0October 12, 2026

fix
a bundle-free trunk still releases once when production reports no release for its sha
2c76b843
fix
the publisher restarts a daemon on old packages/app code when a bundle-free trunk will not release
19c92d4b
fix
the planner marks an owner's answer delivered once it releases the ticket
e20921f0
fix
a skipped identical rebuild records its release under the served sha, and drift ignores bundle-free commits
bdf1bca0

v20.50.0October 12, 2026+1 internal

v20.49.0October 12, 2026+1 internal

v20.48.0October 12, 2026

fix
brief names a release's hard failure before the standing UNMEASURED WebKit notice
af342aec
fix
deploy-prod retries a failed production build once instead of calling it skipped
ae82aa59

v20.47.0October 12, 2026

fix
prove-it-live reports the stop hook's last decision, not a scope-only line's missing action
bf269238

v20.46.0October 12, 2026

fix
prove-it-live re-reads a post-deploy sha disagreement for a minute before calling deploy-agreement SILENT
afa9e8a8

v20.45.0October 12, 2026+2 internal

fix
sign-out-all reachability waits for the account, 3 keys and no Loading… before scrolling to the button
bb55dd57

v20.44.0October 12, 2026

fix
deploy-stage retries, once, a staging build of the pushed sha that already failed
d33427c9

v20.43.0October 12, 2026

fix
e2e triage folds visual.spec.ts's pixel-budget failures into the one visual snapshot cause
c100ccc4

v20.42.0October 11, 2026

fix
a whole e2e suite whose failures are all non-blocking and ticketed restarts the 24h full-run clock
98ee538a

v20.41.0October 11, 2026

fix
deploy-prod never calls a prod build skipped while Cloudflare is still running it
bb6065ec

v20.40.0October 11, 2026+2 internal

refactor
One history fetch per web build
0f06e1de
feat
the tag fetch unshallows a shallow clone in the same trip, leaving the sitemap no history to fetch
a374ab07

v20.39.0October 11, 2026

fix
the tag fetch never filters -- a promisor clone hung both 20.38.0 web builds in the sitemap's per-post git log
2c632606

v20.38.0October 11, 2026+2 internal

fix
the refused-filter warning says the tree-less fetch was refused and a full fetch was used
b3324efa
feat
a shallow clone fetches tags with --filter=tree:0; a refused filter warns (wording off)
013ebe8b

v20.37.0October 11, 2026+2 internal

feat
releases.json log line times the tag fetch and the per-tag git logs; a failed fetch says how long it ran
a48326f5

v20.36.0October 11, 2026

fix
a tests-only ticket runs its touched specs, not the full release suite
e395b696

v20.35.0October 11, 2026+2 internal

refactor
Workspace flake names the slow step
43f20de3
feat
relay-open watcher records socket create/open on the Node clock; the workspace header poll's timeout names it
7c7f507c

v20.34.0October 11, 2026

fix
a flaky critical-path spec keeps its full-run error in evidence (e2eFlakyError)
f33ac6ff

v20.33.0October 11, 2026+2 internal

feat
a production deploy report closes every open request whose tickets all shipped, with the release as evidence
59610046

v20.32.0October 10, 2026+2 internal

refactor
Closed-without-code requests read live
4bf87250
feat
a consolidated ticket reads as the survivor its heldReason names; completed with no column is delivered
4b54eacc

v20.31.0October 10, 2026+2 internal

fix
ticket-sheet spec reads the sheet's level-2 title; 21787eee made the printed card's h3 a second heading of the same name
d916774f
feat
a request with no commits whose tickets all completed in deployed derives live
1ad200f8

v20.30.0October 10, 2026+2 internal

fix
production CORS allowlist drops stage.xswarm.ai; unlisted origins skip cors() so no Allow-Credentials leaks
274c5825

v20.29.0October 10, 2026

fix
System One's spec choice keeps at most the forty most likely
7a2162a0

v20.28.0October 10, 2026+2 internal

feat
What is xSwarm? setup link reads First-Time Setup instead of Getting Started
95ddae47

v20.27.0October 10, 2026+2 internal

fix
re-take tutorial-first-time-setup baselines (chromium, firefox, Mobile Chrome linux) showing the First-Time Setup h1
551b2bcf
feat
retitle the first-time-setup tutorial and its card First-Time Setup
4984c572

v20.26.0October 10, 2026+4 internal

refactor
Real scenario progress on running cards
143329bf
refactor
Sign-in email not held up by retries
3ef14495
refactor
Real scenario progress on running cards
95ad3f35
feat
red/green records how many of the ticket's tests passed and sync sends it as the card's passed, all of them once its own spec passes E2E
fe905ca5
feat
magic-link route enqueues on EMAIL_QUEUE; worker queue handler sends, acks, or retries
1fa4a832

v20.25.0October 10, 2026

fix
the planner re-takes the baselines of a page a ticket redraws, and sees why a ticket was sent back
4b43e730
fix
the next batch starts at its timer or when the release finishes, whichever is later
9b1c5277

v20.24.0October 10, 2026

fix
a planner that crashed or returned nothing spends no plan; crashes have their own cap of 3
829931c0

v20.23.0October 10, 2026

fix
the watchdog treats a release in progress as busy, so it never kills a ship mid-E2E
3da176fc
fix
a re-plan archives the cleared attempts into priorAttempts
399b7dce

v20.22.0October 10, 2026+8 internal

feat
a release tests the @critical core plus Jev's picks for its tickets, the whole suite at least daily
8d9c3d99
refactor
Report specs survive a network blip
266d42b9
fix
shared-report phone and A4 specs open the report through gotoRetrying
a1f1a4f7
refactor
Workspace header test survives a reset
ab3d91d6
fix
workspace header setup reads projects and room status through retrying helpers
c33c9284
fix
release specs fetch /releases.json from the site under test instead of the committed copy
9a566c93

v20.21.0October 10, 2026+14 internal

fix
brief loads the net-family preamble, so a slow line no longer reads as 'prod unreachable'
b5e7080b
fix
every dev server Playwright starts keeps fetch alive on a slow line
1874ad2d
fix
fetch survives a slow line, releases wait out a saturated network, and every release keeps its whole log
16caf1bf
refactor
Ticket names never cut short
8bf58d76
fix
a ticket's name is re-fitted whenever a typeface finishes loading, so a late Anton never leaves it measured in the fallback and cut
bcc039e4
fix
(runner) a ship killed after the mint is recorded as published; ship limit 90 min
8b9f6da1
fix
the reader's own print CSS lays tables out fixed with cells that wrap anywhere, so every lane prints a wide table inside the page
3acad856
fix
the ticket sheet heads its record with the title as a level-2 sans heading; the printed card keeps its Courier Prime h3
21787eee
refactor
Long code lines wrap in printed reports
1c89f8b0
fix
the report reader wraps long code lines in print itself, so the project reports lane prints them too
df6d2b5d
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's edge
5c828e4e
fix
releases feed spec counts against the build's own /releases.json, not the checkout's committed copy
cde1ac2f

v20.20.0October 10, 2026+17 internal

fix
the runner imports a ticket filed for the planner instead of declining it every pull
c90232ee
refactor
ProjectBoardCleanup: Even gaps around stacked names; Chat button asks ab
bc607a52
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
0cce4b6d
refactor
ProjectBoardCleanup: Board toolbar shows agents in use; Scenario progres
314753bc
feat
board toolbar reads N of M agents from /api/workers each poll; running cards print scenario progress in place of the punches
8000386c
fix
a stacked strip shows its time when it fits -- centred, else raised no higher than the card's edge, else its line down to the edge -- and a pushed line clears the next card by its whole glyph box
d7b51754
fix
Chat button glows on any background holds with trunk -- dark-only-theme.test.js
c52681fa
feat
one TicketSheet headed by the ticket itself in every view; Staging reads 'releasing N tickets' while the runner marks them
ef2bf0d7
feat
chat launcher wears a cyan-300 hairline (new --color-launcher-edge light-dark pair) and an unoffset cyan halo; hover brightens both
f9eff803
refactor
Barry answers about the open ticket
630eddb7
feat
chat forwards context_ref; the foreman reads that ticket (id or short id) from the local store into Barry's prompt
fa14f009
refactor
Even spacing around stacked ticket names
4a1c5ea8
refactor
ChatPopupCleanup: Barry's chat grows with the conversation; Chat button
4b1e7ffc
refactor
Even spacing around stacked ticket names
5de39d64
feat
stacked strips centre their shown lines, and a name-only strip pushes the line under the name below the next card
a7646ce4
fix
an empty chat opens under 320px -- the About line rides in the header, starters are compact pills, tighter log and composer padding
0f20a6f0
refactor
Barry brings in a team member
b1054136
feat
launcher asks Barry the BA about each tab's topic; the panel's height follows the conversation up to 80vh
bf9e1fcd
refactor
Barry brings in a team member
f1dba7ce
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]
37a33ee8

v20.19.0October 10, 2026+6 internal

feat
every release phase is timed and rides on the deploy event
3bf5d823
fix
agent browser runs share two box-wide slots and stop their dev servers; staging failures file one ticket per problem
a658a49c
fix
consolidation also runs when a lane finds nothing it can take, not only between passes
31f81457
feat
the work-stream notice names the status or 'no response', retries every 3s, and a 401 links to sign in
21b9573b
fix
a fanned release tray gives its padding to the strips, so each stub's time shows whole under its name
16da1dd9
fix
a fanned lane within a ticket of fitting keeps names-only tucks; only a pile beyond that scrolls with full strips
cd86b30f
refactor
Compact running cards
486a68d3
feat
a board card is 9.75rem with no SCR/ROW/SEAT row; a lane too tall for names scrolls with full strips
1aba10a7
fix
the navbar badge renders the newest release in releases.json when the API has not answered, not the build stamp
2ebba28a

v20.18.0October 10, 2026+38 internal

fix
a held or failed release retries on its own after 10 minutes, not only when the next ticket lands
85403c8f
fix
the reaper catches servers orphaned to systemd --user and those of tickets no longer in flight
9e5eadb3
fix
a coding agent's own test runs use 4 vitest workers and 2 browsers, not the whole machine's budget
bf04b6ab
fix
Release API is an Astro endpoint holds with trunk -- page-area-auth.test.js
c426b389
feat
sequential-hell, swarm-commander, three-minute-standups and xswarm-overview link to the parallel Claude Code hub
c4f77185
fix
the lane-fill fixture lists tickets in the order a lane draws them, so its last is the one at the lane's foot
fc9d7a01
fix
verify Stripe webhook HMAC with crypto.subtle.verify over hex-decoded v1 instead of string !==
4ae9a146
feat
an overflowing lane tucks each card by just its overflow share, and drops a tucked card's print so no line is cut
235c201c
feat
perf report shows TBT from in-page long tasks beside LCP and CLS per viewport
410ea843
refactor
Every window bar's title starts at its left edge and no titl
a77bbfc9
refactor
Email link changes the requester's email
93cb3680
fix
the email link updates the account named in its stored token instead of a user_id column that does not exist
c4500b8a
fix
delete scripts/deploy-pipeline.js and its test, imported by nothing else
c8be0804
fix
the shared .terminal-title starts its text at the bar's left (text-align: start), not centred
873d9802
feat
setup prints the dashboard link as its last line after the summary
3691b768
feat
/api/release/current is an Astro endpoint sharing the API's currentRelease
23b5c0e8
refactor
Workers page passes axe
d40f6c20
fix
a stale worker's vitals dim by ink, not opacity, so every row keeps its contrast
0c6bbed0
fix
a coding agent is admitted only with room for its own run, not just above earlyoom's line
541ada12
feat
perf sweep walks all 21 lighthouse routes via sweep(); signed-in ones get the xswarm_token cookie, or UNMEASURED: no token
ab706fec
feat
the planning queue merges tickets that change the same files into one category ticket
fa6093ef
feat
check for Claude Code before sign-in and stop with the install command
3e0c36fd
refactor
Dashboard routes pass axe
4b8e9696
feat
/releases.xml RSS feed from releases.json, advertised in the /releases head
56654c99
fix
chat room chips show standing-by with a dashed unfilled ring, not text faded under 4.5:1
d1374a7c
feat
empty sessions panel links to /docs/getting-started to connect a Claude Code session
619f264c
feat
Deny on /connect asks confirm('Deny this machine?') before posting; Connect unchanged
8a70679e
refactor
Releases page agrees on version
e4718d5a
fix
/releases prerenders the newest release version, build stamp only as empty-history fallback
0ddfc592

v20.17.0October 10, 2026+19 internal

fix
(planner) an owner answer buys one plan; NEEDS_HUMAN/INVALID no longer re-plan past the cap
cd5c382c
refactor
Sidebar lists projects by recent work
a45992d9
feat
rankProjects orders by health.last_activity_at (no activity last), visit history only breaks ties
b62ae711
fix
Projects: icons, sessions, recent first holds with trunk -- sidebar-collapsed-projects.test.js
687da1df
refactor
CLI signs in by email link
bb502544
refactor
Packed CLI installs and runs
4edfdeb2
feat
'N sessions' pill beside each project in the projects table, sidebar and user menu; API health carries session_count
f2e9ccfe
fix
move function-spans.mjs into packages/app so the packed CLI no longer imports ../../../../quality
07c26ce7
feat
npx xswarm setup signs in by email link (magic link redirecting to the connect page) instead of a GitHub device code
d58fb2f8
refactor
Chat button in the site's style
0d2c299a
feat
team-chat launcher is a raised pill -- xswarm mark, "Ask the team", About <project>
274b31a5
fix
drop the 'logo never reads npx' test -- the owner wants the logo to type npx xswarm (logo-typing.spec.ts)
e229356b
feat
navbar logo types between 'xSwarm.ai' and 'npx xswarm' again, still under reduced motion
86f2cfbd
feat
footer and Organization sameAs both read lib/social-links.js
4fbb80ba
refactor
Cards never repeat their column name
2d63a884
feat
cards print their step, version or nothing -- never the column they sit in
930a1875
refactor
API answered by the site's own worker
8cc09c84
feat
API answered by the site's own worker
33f173ee
fix
blog mobile asserts the RSS pill, a one-row tag filter and a post in view instead of photographing post content
42e11aec
feat
/build-info.json resolves its release through the in-process /api/release/current; no upstream fetch, check or remembered answer
efe8e9f4

v20.16.0October 10, 2026+27 internal

fix
Audit cards read cleanly holds with trunk -- no-machine-deploy-path.test.js
37fe4321
fix
A stub's band and step fit its 6.1rem uncut, its stamp inked in a gutter beside the step
10c39d2b
fix
a monitor tick's commits are pushed after it ends, even when a candidate was in flight
ccdcc5a5
docs
(decisions) record the owner's 2026-10-10 navbar-logo and permission decisions
6338456f
fix
(runner) cap the runner's own vitest spawns at 4 workers
ae43439e
refactor
Staging shows when the next release goes
90da0f94
feat
Staging's header names the cadence and the next release -- minutes for continuous, clock time otherwise
3d616aa2
refactor
Ratchet holds vitals and bytes per route
54ca8c23
feat
Permissions-Policy and COOP on site middleware and _headers; HSTS 2y + preload on site and API
4dd8014b
feat
performance ratchet compares per-route transfer and LCP and routes measured, not only the issue count
c5a82efa
fix
continuous releases ship when the window closes, not when work stops; every release decision is logged
38b85b42
fix
a fanned lane's strip is the most it can show with every ticket in view
e4d24a9c
fix
(visual) re-take the 404 firefox baseline that 649c2bed made stale
e5f74c33
fix
The xSwarm Way card heading is an h3 like its sibling Traditional AI Approach
6a1b944c
feat
optional updatedDate shown as 'Updated <date>' in the post dateline; 01-expensive-ai-intern re-dated to its first commit (2026-01-10), after Claude Code's launch
6d6deb9c
refactor
Perf report names LCP element and bytes
a92bbfc6
feat
perf report names the LCP element and bytes by resource type, collected in-page and from response types
33ebcd4a
feat
fanned strip carries the name and the title's first two lines; a name too long at 12px narrows instead of being cut
49862db2
refactor
12px minimum dashboard text
8c321c22
fix
project monogram letter never renders below --size-caption
728bc5f2
feat
sidebar Platform caption and build stamp use --size-caption (12px)
12fdb1d1
feat
Filter projects box draws the 2 px cyan focus-visible ring the chat fields use
344d1f39
fix
(visual) re-take the 404 chromium baseline that 649c2bed made stale
b5afa637
fix
re-take the 404 baselines that 649c2bed left stale
1aa45b78
refactor
Navbar Sign In opens the sign-in page
7eab6562
feat
navbar Sign In (desktop and mobile) links to /login instead of GitHub OAuth
427c95ff

v20.15.0October 10, 2026+14 internal

refactor
Plain-language status and errors
8e3c8056
feat
reports load failure reads "Couldn't load reports. Try again in a minute."; dashboard task badges show words (In progress) not API values
6c18f742
feat
Waiting on You counts the signed-in viewer's requests (admin also owns 'chad'); page copy addresses the viewer, not Chad
9904b3f0
fix
tag the failed-revoke test @critical so the trunk red check (critical-path project only) runs it and sees it fail
95a5b78b
fix
names keep the audit size and 12px floor, a release tray tucks to names only when its time lines cannot all show
88a42831
fix
a failed revoke puts "Couldn't revoke {name} — it still works" as a full-width danger-tint line inside that key's row; the list-level message is gone
3d193308
fix
a ticket's name sizes to its width so it never cuts; a fanned stub's strip carries its time line whole
fc18ad5b
feat
SoftwareApplication JSON-LD only on the homepage (Layout software prop), with operatingSystem Linux, macOS
69a13460
fix
ticket names run two to four words, up to 28 letters, so a card says what it is for
459e4cb2
feat
/compare page with xSwarm vs by-hand Claude Code table, linked from the homepage Works With section
dfc51da5

v20.14.0October 10, 2026+18 internal

fix
an audit proposal states its gain and cost, shown in the question; one without is refused
97682e0f
feat
BlogPosting author is the xSwarm Organization for "xSwarm Team" posts, a Person otherwise
54131db9
fix
delete deploy-lock.js and its test, dead since Workers Builds is the only deploy path
38623cdf
refactor
Empty panels point to the next step
7e01d17e
fix
bind email-change token to its requester's user id; verify refuses any other account
50f9e8de
feat
empty Reports links to how reports are made; empty Recent Tasks links to filing a ticket
1d9503fa
refactor
Webhook refuses without its secret
348747a9
fix
billing webhook returns 500 Server misconfiguration when STRIPE_WEBHOOK_SECRET is unset, before any signature check
2c6915db
feat
/guides/parallel-claude-code hub and a How It Works link to it from the homepage
6d40d516
feat
confirm() before revoking a share link or signing out all devices
24c0d409
feat
release headings get id=v<version>, a self-link, and scroll-margin clearing the navbar
d209adaa

v20.13.0October 10, 2026+16 internal

fix
(planner) an ASK's planned event names its question
17faef30
fix
(runner) cap vitest 5 workers too (VITEST_MAX_WORKERS)
77afb019
fix
fanned name reaches the frame edge; restore the spec's visual-order and locator fixes; cards-still lane check allows the lane's scroll
465c8386
fix
footer link marker gets empty alt text so each link's accessible name is its visible label
e2c6444c
fix
fanned cards tuck to the name's line, stub stamp at the foot, serial below the strip
fe5014e8
feat
footer Resources column links tutorials and the token cost calculator on every page
0c6271ac
fix
stub stamp inked on the band line, fanned name keeps full size, fan capped to keep the name line
2b1a8be2
refactor
Docs pages end with a next step
4fc9699f
feat
docs pages end with raised Previous/Next cards in the hub's order; order 0 now sorts first
2c9a44f8
fix
footer drops the internal Strategy link; Legal list gets an accessible name
a4fa5c54
fix
the planner asks Chad only a real trade-off, with context and each option's pros and cons
c6c9ba31
feat
JSON-LD graph gains a SoftwareApplication for xSwarm and LinkedIn in Organization sameAs
e0b04d2f
fix
staging E2E failures go to the planner, never as a fix-or-flaky question for Chad
f72789be
feat
blog title uses '
1114e72e
refactor
Calculator shows its price date
b8c3f4bf
feat
price table caption dated 6 October 2026, Anthropic pricing source link beneath it, closing link to the token economics post
1e052d00

v20.12.0October 10, 2026+2 internal

refactor
Stopped tickets fold into one row
fa106baa
refactor
Stopped tickets fold into one row
88700758
feat
blocked/failed tickets fold into one 'N stopped' row per lane; header counts only those
f9b49505
fix
planner, coding agent and ticket standard require every use of a changed component to be tested
dc5da3e3

v20.11.0October 10, 2026

feat
brief shows a live watchdog alarm, so a drain is seen in minutes, not at the next hourly tick
d33f8047

v20.10.0October 10, 2026

fix
watchdog alarms on a project left draining with nothing in flight, instead of restarting the runner
65f5c77c

v20.9.0October 10, 2026+2 internal

fix
CORS test re-fetches the page without zstd, which Playwright cannot decode and Firefox asks for
51852f64

v20.8.0October 10, 2026+2 internal

feat
Clean console on platform config
ed551082
feat
Clean console on platform config
e3a1ddbb
fix
CORS stub moves from 127.0.0.1 to api-staging.xswarm.ai, which production connect-src allows
b8db2cd8

v20.7.0October 10, 2026+2 internal

fix
(runner) a landed lockfile change restarts the runner, and its start installs what node_modules is behind on
378ac092
fix
removedLines skips method calls like /re/.test(e) when counting it()/test() cases
09c7e0c9

v20.6.0October 10, 2026+2 internal

feat
Clean config page when CORS blocks
5d2070ad
fix
grant local network access so dev's HMR socket survives the routed document carrying production's connect-src
4f166b2d

v20.5.0October 10, 2026+2 internal

feat
Clean config page when CORS blocks
d786319e
feat
Clean config page when CORS blocks
8514d395
fix
CORS stub on api-staging at config-report's path; dev HMR socket granted local network access under the routed document
44762e65

v20.4.0October 10, 2026+8 internal

fix
(runner) a remainder ticket is blocked by its parent until the parent lands
56c98552
refactor
Chat mockup scripts run under CSP
ee37f8b2
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
07fd651a
feat
Cross-origin E2E checks reach their stub
84984bb0
fix
cross-origin stubs use api-staging.xswarm.ai, an origin connect-src allows, so their fetches reach the stub instead of the CSP
b0e9f083
feat
the board sheet frames its mockup from /mockup (own CSP, fragment-borne HTML), not srcdoc, so its scripts run under the enforced policy
6127e1f1
fix
project logo fallback via one capture-phase error listener and data-monogram, not an inline onerror the CSP blocks
75dc9f98

v20.3.0October 10, 2026+2 internal

fix
where dev serves no CSP, the homepage PostHog checks apply production's enforced policy from csp.mjs, so the Given holds on every target
11e842b2
fix
the PostHog control test fulfils the homepage without its CSP (header and Astro's <meta>), so the injected script runs
4172f75f

v20.2.0October 9, 2026+23 internal

fix
override miniflare's undici to 7.29.1 and source-map-js to ^1.2.2; patch the four nested lockfile entries
10a9e18b
fix
Enforced CSP without unsafe-inline holds with trunk -- dashboard-handle-field.test.js
da2debed
fix
middleware reads import.meta.env?.DEV -- outside Vite (harness-self-test drives it in plain Node) env is undefined
436041e9
fix
blog Copy Link and calculator submit as listeners, not inline handlers the enforced CSP blocks
9a242bdb
feat
enforced CSP via Astro's built-in hashing; middleware keeps it, adds header-only directives, falls back unhashed
65c70849
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
bd0c17b4
fix
(runner) cap pipeline agents at four vitest workers
c727d782
fix
Daily pair cap counts per source holds with trunk -- project-favicon.test.js
64354174
feat
count the daily pair cap per (account, source) so a stranger cannot lock out the owner
b1cd6c54
feat
AI_LIMITER burst limit (10/60s per user) on setup/plan and babysitter/summaries
6ac20c8d
refactor
Pair lockout counts per source
ec193f08
refactor
Pair lockout counts per source
bae52e64
refactor
Daily cap on platform AI calls
46392825
fix
pair lockout counts failures per (account, hashed source IP) and stores only the IP hash
86571051
feat
cap setup/plan and babysitter/summaries at 200 platform AI calls per user per day
037527c7
fix
/test routes authenticate through the real authMiddleware; /cleanup resets only test accounts
4e533918
fix
deploy-state report refuses a production host already bound to another account's project
5c343126
refactor
Per-purpose signing keys
44432202
feat
ws tickets sign and verify with an HKDF-derived ws key (lib/signing-keys.js)
b53182de

v20.1.0October 9, 2026+13 internal

refactor
GitHub login uses verified email only
4e357467
fix
GitHub login takes only a verified email (primary first), else /login?error=no_email
d57ad7db
refactor
Only the owner renews a lock
62c3305b
fix
renewLock matches the lock's request to the signed-in user, so another account's lock id + claimed_by renews nothing (404)
8959dc8a
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
1b903c18
fix
provision mints only for user ids in PROVISION_USER_IDS; unset refuses all, audited as provision.refused:not_allowed
578f2860
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
e1dbe4a9
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)
1468a183
fix
rollup answers hot and commitsRequested only for projects the caller owns -- one projects-left-join-project_commits query scoped to user_id
4cd84c6c

v20.0.0October 9, 2026+6 internal

refactor
Private extensions stay private
0646e406
fix
releaseLock deletes only a lock whose request belongs to the caller; the route 404s otherwise
71f33be2
fix
Preview-link spec checks the link is on screen sideways, not a subpixel ratio of 1
8bb50c7d
fix
Disconnect revokes the machine's keys holds with trunk -- d1-bindings.test.js
86e4c04d
fix
enable refuses, and the project list hides, another user's private extension
653121c6
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
679a099b

v19.56.0October 9, 2026+7 internal

refactor
Worker names render as text
9bfdfb28
refactor
Daily cap on pairing failures
2cafbf89
feat
cap pairing failures at 50 per account per 24 h, checked beside the 2-minute lockout
1d75ae5f
fix
dashboard sets worker names via textContent, not innerHTML; Worker status panel is a named region
f4e47136
fix
refuse change-email to a machine key before any token or email is made
f6afe20b

v19.55.0October 9, 2026+2 internal

fix
hold a ticket's spec to its slowest test, not its summed time
f303bd6d
fix
logo-size spec reads the document through fetchDecoded, not a bare route.fetch()
cebc3fa3

v19.54.0October 9, 2026+11 internal

fix
judge oversized images in evaluateBudget, skipping SVGs; drop generic/system font keywords from the family count
40318383
fix
Perf report shows viewport and load holds with trunk -- task-project-gate.test.js
228a98e1
refactor
Perf report shows viewport and load
e7836a05
feat
perf audit measures each route at 390px mobile and 1350px desktop, and heads the report with the run's load average
b17b51b3
fix
navbar logo carries width/height 48 so it holds its size before CSS loads
7bb08952
refactor
Homepage paints with one stylesheet request
06d2a258
feat
inline the homepage's page stylesheet so only Layout's sheet blocks first paint
f1811ccc
feat
perf sweep measures every public route lighthouse-audit lists plus /dashboard; unmeasured routes print UNMEASURED and the report counts measured of total
4de0b19c

v19.53.0October 9, 2026

fix
(e2e-repair) a cause folded into live work, or a pixel diff at a new count, is not re-filed
7bdd0499

v19.52.0October 9, 2026+2 internal

fix
navbar release spec skips as UNMEASURED when the base URL is not localhost or 127.0.0.1
8776981f

v19.51.0October 9, 2026+8 internal

fix
activity-load-retry waits the 20s hydration budget for the board's first load, not staging's 10s expect
55400e55
fix
stubs lie flat and the name reserves the stamp's room with a margin, so nothing of the stamp or the next stub lies on the name's corners
df1e9bc6
feat
stub stamp at 12px; fanned stub name at 12px on one clipped line flush to the top, so it fits its ~16px strip
c394230e
feat
Board shows a sunken 'Couldn't load the work stream.' strip with Retry above its columns when /api/requests fails
1456587b
refactor
Live release in the navbar's first paint
13159e2b
feat
server-rendered navbar badge asks /api/release/current before first paint
7002a4a2

v19.50.0October 9, 2026+2 internal

refactor
Text fields show the focus ring
26d0d648
feat
API key field and chat composers draw a 2px focus ring on focus-visible
40a355b6

v19.49.0October 9, 2026+4 internal

feat
Ticket and workspace tile text at 12px or more
49708611
fix
(runner) name node memory holders by tool, not MainThread
195076f5
refactor
Filter announces its match count
81fe60b4
feat
projects count is a role=status live region reading "N projects" for the filtered rows
e2091230

v19.48.0October 9, 2026+24 internal

refactor
Plain-language load errors
4c827e8c
feat
Activity board load failure says "Couldn't load the work stream." with a raised Retry button
7b4c27f2
fix
Roadmap without past-due phases holds with trunk -- visual-audit-budget.test.js
2162c11f
fix
rename the --cd-pending colour token to --cd-unknown, its own meaning, so no page's HTML carries the retired word
f188f1cd
refactor
Dashboard guide shows the six tabs
5e38cd48
fix
dashboard guide lists the six project tabs and the six stage columns from STAGES, drops the public kanban share
939ee700
fix
roadmap phase headings name status (In Progress / Next / Later) instead of past-due 2025 quarters
3d1aeb80
fix
resolveRelease answers only a release number — version, else the live release, else null keeps the build stamp
daa54df7
feat
Delete ticket drops confirm(); card leaves at once, Undo notice holds the DELETE 8s
29e0240e
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
387c5870
fix
New Project labels point at their fields with for/id (np-name, np-description, np-repo-url)
1e470ccc
refactor
Activity page fits a phone screen
2be70fe4
fix
Activity at 320px — 1rem page padding, dvh board height, board controls wrap, tabs never shrink below their label
c7231329
feat
footer ASCII banner is one labelled img; the glyph <pre> is aria-hidden
fda13d39
fix
expired/used sign-in link specs carry @critical so the trunk red check runs them
030dbf59
feat
shared trapFocus moves focus into request and New Project dialogs, wraps Tab, Escape closes, focus returns to opener
3e7450c9
feat
login maps expired_link and invalid_link to messages that say to enter your email for a new link
746a7ab4
feat
Proposals load failure says so
c94bc043

v19.47.0October 9, 2026+2 internal

refactor
No pricing on public pages
2852b30f
fix
/plans removed so it 404s; 404 page and dashboard guide drop pricing and billing copy
649c2bed

v19.46.0October 9, 2026+2 internal

refactor
Failed loads say so, not empty
f0a59e61
fix
failed API keys, documents and proposals loads show the error with Retry instead of the empty state
040cfb97
fix
an agent SIGTERMed by earlyoom (exit 143) names what held the memory
ba4d0ced

v19.45.0October 9, 2026+2 internal

fix
a socket that drops before any reply marks the pending chat message not sent, and the thinking row is named
ff54f870

v19.44.0October 9, 2026+6 internal

refactor
Early roster click opens team chat
d6c56964
fix
hold a summons made before any chat listens and hand it to the first subscriber, once
5e99bf23
fix
a failed auth lookup answers 503 'Auth check unavailable', not 401; harness asks /api/auth/me once more
c4684ca3

v19.43.0October 9, 2026

fix
a staging push Cloudflare never built gets its build started, not a 15-minute wait
3e5decf0

v19.42.0October 9, 2026

fix
task file says when intake merged the ticket into a twin, and prints the id
17d3b023

v19.41.0October 9, 2026

fix
a candidate fix records the failing test it was sent to fix
6da95193
fix
neighbour tests run the unit tests that read e2e specs when a spec changed
8f53455a

v19.40.0October 9, 2026+2 internal

fix
Team chat reply shows in Messages log holds with trunk -- affordable-workers.test.js
d8189589

v19.39.0October 9, 2026

fix
reasonKey keys a red candidate on its gate verdict, not the merge-queue wrapper
d5dd418f

v19.38.0October 9, 2026+3 internal

fix
Preview subdomains resolve over HTTPS holds with trunk -- project-favicon.test.js
4b7fad6c
feat
setup:preview-zone ensures the proxied *.preview record and advanced cert via node fetch, no new dependencies
bddc5d93

v19.37.0October 9, 2026

fix
a hard-floor BLOCKED names its files and the fix, and the verdict a retry reads keeps them
cbc0c37c

v19.36.0October 9, 2026+6 internal

fix
tag the billing-hidden scenario @critical, so the trunk red check (critical-path project, @critical only) runs it and sees it fail
4ec113ca
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
02cdd24a
refactor
Ticket name at the top of the card
7a9e771a
feat
a ticket'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's left
e3fa1a1f
fix
stage-audit blames a lockfile change only for the packages it altered
5c34d3b5
refactor
No billing link in payment emails
21344e64
fix
drop the Update Billing button and billing link from the payment-failed email
ceebc6c5

v19.35.0October 9, 2026+5 internal

fix
Board tickets hold still holds with trunk -- affordable-workers.test.js
63ec9c7d
fix
the workers page no longer scrolls itself on first run: opening the pairing section in code fired the user's scroll-into-view and slid main under the site nav at 375px
ad0d1b64
fix
a lane'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
375aef60
fix
runtime audit runs only when the lockfile's runtime packages change, so a dev-only test tool cannot trip it on unrelated live advisories
efc9a376
fix
sidebar build stamp drawn in --color-text-muted instead of 50% green (3.47:1 and 2.44:1 under axe)
214cbb55
feat
declare @axe-core/playwright 4.13.0 (latest) as a packages/web devDependency
b1be897e

v19.34.0October 9, 2026

fix
release selection shadow records every E2E failure, not only missed ones, so a whole-suite batch is evidence
8cdf9075

v19.33.0October 9, 2026

fix
coding prompt states the 15s per-spec budget and page.clock for a Playwright-spec ticket
03ccf08c

v19.32.0October 9, 2026+2 internal

fix
passThrough aborts the page request after 20s of a silent origin, isIslandModule matches <Island>.* by basename, lazy-panes page load and click fail by name at 30s
11bfe8a7

v19.31.0October 9, 2026

fix
release selection shadow chooses no specs for a batch that changed only scripts/, quality/ or .claude/
6d9bbf4d

v19.30.0October 8, 2026

fix
release selection shadow runs only the edited specs for a spec-only batch, not all 222
1f5faadf

v19.29.0October 8, 2026+2 internal

feat
Team chat polling E2E settles on staging
c760ee6b
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
d0dfcc61

v19.28.0October 8, 2026

fix
stage score never counts a ticket consolidated into another as an unearned advance
74a18ba5

v19.27.0October 8, 2026

fix
stage score does not read a refactor as a move past a failed E2E -- the refactor runs first
40db7ecf

v19.26.0October 8, 2026

fix
a candidate fix pass that throws removes its worktree instead of leaking it into tmpfs
1820e6a4

v19.25.0October 8, 2026

fix
stage score never counts a no-op closure as an unearned advance
f65cd9a4
fix
stage score reads evidence as the gate does -- an excused red/green is not an unearned advance
3b344324

v19.24.0October 8, 2026

fix
brief's RELEASE FAILING headline names a ship the time limit killed
5c428bdb

v19.23.0October 8, 2026

fix
deploy:stage fails in seconds when the staging worker hangs, not after an hour of e2e
4ab0df7d
fix
brief's contradiction headline no longer counts no-op closures
e06e4f75
fix
audit reads a replanned already-delivered ticket as a no-op, not unpublished
e59fc3b6

v19.22.0October 8, 2026

fix
a site audit refused by the agent cap is not recorded as its run -- style was pushed back a week (10-07T02:16Z)
f950f5b7

v19.21.0October 8, 2026+6 internal

feat
Report skill keeps the token off argv
3720ff4a
fix
Chat popup replies are announced holds with trunk -- affordable-workers.test.js
64ff8ca8
fix
skill, integrations doc and seed script pipe the Authorization header to curl -H @- via printf, keeping the xsk_ token out of argv
ab912ac6
feat
team-chat popup message list is a polite live log named Messages, so replies are announced
a8942332

v19.20.0October 8, 2026

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
24e97697

v19.19.0October 8, 2026

fix
task store waits up to 5s for a lock instead of failing SQLITE_BUSY -- the watchdog's swallowed busy read became 'no report for 701m' and restarted a healthy runner (10:26Z 10-08)
96d50f57

v19.18.0October 7, 2026

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)
ae583e16

v19.17.0October 7, 2026

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)
3db94bc6

v19.16.0October 7, 2026+2 internal

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
89fdd3b7
refactor
Platform config E2E passes on staging
a5d6a81b
refactor
Platform config E2E passes on staging
45ace395
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
68cb5f79

v19.15.0October 7, 2026+2 internal

fix
Team chat socket wait runs the frozen page clock a second at a time (up to 10s), so the relay's ws-ticket retry fires instead of the test timing out
4440cdd7

v19.14.0October 7, 2026+4 internal

fix
astro build keeps its own Vite cache beside a running dev server, and blog-images-referenced no longer sets -<n>w variants aside now that none exist
fe94247c
feat
every blog hero, card and related thumbnail renders through Astro <Picture> 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
e8914f34
fix
the ticket-spec playwright project compares against the chromium baselines, so a screenshot spec System One chooses finds its baseline instead of failing 'no baseline'
cd5dad48
fix
remove ai-lessons-hero.svg and ai-lessons-hero-placeholder.svg, which no page, layout or post names
05573994

v19.13.0October 7, 2026+18 internal

fix
a critical-path fix pass re-runs a failed spec with the run's whole and own specs, so an untagged spec System One chose is found instead of 'No tests found'
8cacd32a
fix
a critical-path run that never started names playwright's error instead of sending the fix agent to check @critical tags
8d9400a7
fix
POST /test/account answers a failing users insert, createUserToken or api_keys insert with a 500 naming that step and D1's reason, and deletes the user again if its key never landed
55e4f7ea
fix
shared kanban trusts X-Api-Mode: local only from a localhost dev server; a deployed site is seeded on apiOriginFor's host, as test-account.ts signs in
373c4970
feat
Add-a-worker E2E reads the command
7c53dd68
fix
add-a-worker check waits for the command or "Could not get a pairing code just now.", then reads the 403 refusal body as UNMEASURED and fails anything else naming the route and its answer
17c58f30
fix
a ticket that retries mid-pass is ready again at once, instead of waiting out the other lane's whole run with its slot empty
d4159976
fix
dashboard-live settles on page.clock (runFor 4000) after a networkidle wait capped at 3s, then waits for the page's own requests
24a2963f
fix
Pick spec skips UNMEASURED off localhost, where astro dev's toolbar does not exist
b0081d60
fix
dev-toolbar-foreman skips UNMEASURED when the base URL is not localhost or 127.0.0.1
12322f8c
fix
signIn in fixtures/session.ts sets the sessionCookie session (machine key off localhost, placeholder on it) and skips UNMEASURED without a key
019b7ce0
fix
consoleEntry checks URL.canParse on the URL a CORS line names before parsing it, so an unparseable one is kept rather than thrown
d6b2812f
feat
Workspace header E2E stable on staging
66b32e3e
feat
Workspace header E2E stable on staging
73b48bde

v19.12.0October 7, 2026+1 internal

fix
the phase reload test waits for the PATCH'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
1bb0de8f

v19.11.0October 7, 2026

fix
the production push retries GitHub's transient 500 instead of failing the whole ship
c49c2387

v19.10.0October 7, 2026+2 internal

fix
Revoking an API key works in Firefox holds with trunk -- affordable-workers.test.js
bde8b5a0
fix
the revoke spec keeps its @critical tag, so the trunk red check (critical-path project only) runs it and sees it fail
8bd8b090
fix
revoking an API key drops its row in place and a failed revoke says so in view with Revoke re-enabled
dd0144d4

v19.9.0October 7, 2026

fix
(board) blocked and failed tickets re-assert on the 6-hour settled sweep, not every 10 minutes
7408a30b

v19.8.0October 7, 2026

fix
(runner) a ticket whose push failed is re-dispatched, not resumed into a phantom conflict
f5391d7b

v19.7.0October 7, 2026+9 internal

fix
the stub's SHIPPED stamp is band-sized and nearly flat, centred in the name line
b794ef64
fix
(deploy) identical is not skipped until Cloudflare has had 6 minutes to build
c5d12731
fix
(runner) the restart waits as long as the ship may run (60m)
1cf75f37
fix
(runner) ship gets 60 minutes and a killed ship says it was killed
bfd478e1
fix
(runner) xswarm run exits when the run ends, not when the event loop drains
0af25d89
fix
the report email's measured table is one fixed-width table
06d117b6
fix
(runner) bound the shutdown wait, log runner-stopped, watchdog 75m on a pending restart
99745009
refactor
Audit cards: colour per type, grouped by date
98757b93
feat
audit cards print on their topic's paper and group under a divider per day
53c31484
fix
a shown API key is scrolled back into view whenever the account block resizes above it, not only once when it loads
a5547ded
fix
a skipped ticket spec is reported as UNMEASURED, not 'ran and did not pass', and its give-up is revivable once
647d0ae7
fix
seed-owner seeds the box key into the local database, so signed-in e2e specs run in worktrees instead of skipping as UNMEASURED
b24b1323
fix
Phone-sized blog images on staging holds with trunk -- silence.test.js
d53699ad
refactor
Phone-sized blog images on staging
8127b252
fix
blog images are resized at build (cloudflare imageService 'compile') into a per-tree Astro cache, so a phone loads the 448w file, not the full original
d45a8628

v19.6.0October 7, 2026

docs
monitor ticks never start a dev server or Playwright run beside live tickets
21f42801

v19.5.0October 7, 2026+3 internal

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
7757e1b7
fix
new API key panel scrolls into view when shown and again once account and keys land; raised surface, role=status, Copy never shrinks
e197d1ea

v19.4.0October 7, 2026+2 internal

fix
blog-picture spec pins deviceScaleFactor 1 beside its 390x844 viewport so Pixel 5 and iPhone 12 measure a 1x phone
49d70b94

v19.3.0October 7, 2026+8 internal

feat
blog hero and cards render Astro <Picture> from src/assets/blog, glob typed as ImageMetadata so astro check passes; token-economics hand-made variants removed
38412231
feat
Worker OS E2E runs on pinned data
ef9161ae
refactor
dev-toolbar-foreman.spec opens the toolbar through helpers/dev-toolbar.ts, shared with the Pick spec
81d43ef1
feat
Pick button in the dev-toolbar foreman chat outlines the hovered element and writes `selector` name into the box
6b955dbb
fix
sitemap lastmod fetches history from origin once in a shallow checkout and drops dates on the shallow boundary
58494a12
fix
a give-up is revived from failedReason, where the runner writes it; 4e1353c8 read heldReason and revived none
6769f76e
fix
a pipeline give-up whose last failure was the pipeline's own is revived once
4e1353c8

v19.2.0October 7, 2026

fix
landed tickets awaiting a release are not ready; brief and the watchdog stop calling the release train idle work
133b9196

v19.1.0October 7, 2026

fix
the watchdog does not call a draining runner idle; a pending self-restart no longer gets a release cut in half
fb5210f9

v19.0.0October 7, 2026+20 internal

fix
the watchdog treats a runner's pending self-restart as draining
325f77c8
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
37c155f7
docs
monitor ticks verify with the package suite at 4 workers, never the full gate beside live tickets
5da5486a
fix
Narrow board folds Planning, Deployed holds with trunk -- board-columns.test.js
43ad3108
refactor
Narrow board folds Planning, Deployed
16088b23
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
5db14dbf
fix
re-take what-is-xswarm and freelancer chromium/firefox/Mobile Chrome linux baselines from this build; the old ones predate 11d07011's TutorialLayout header
490feb69
refactor
Clef vs Jev comparison report
65f7b0bb
feat
GET /api/decide/compare, behind adminMiddleware, groups the last day's Jev-answered shadow rows by node into Clef/Clef-flash agreement and nearest-rank median/p95 per provider
9387d4d1
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
4ac57af5
refactor
Clef answers System One in shadow
ea4e359e
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's outcome and latency to decision_log.shadow
78f24820
feat
the ticket sheet shows "Filed by the <audit> audit · <date>", linked to the audit's report
84f09037
feat
an audit records which audit, date and report filed each ticket, and the board push carries it as test_results.filedBy
94e03d02
refactor
Pick a page element into the dev chat
5ab4256d
feat
pickElement — capture-phase outline, swallowed click answers selector "text" svelte source file, Escape answers null
1e1c34be
fix
a stub's stamp sits at the end of its name line, clear of the band's time and the title
2294615c
fix
a ticket's name keeps its descenders under a 0.15em pad and ends in an ellipsis, not mid-letter
7d28e9f5
fix
stacked board lanes take their tickets' height and the board scrolls, so a narrow lane no longer slices its cards
cddf60bb

v18.1.0October 7, 2026+5 internal

fix
brief and the monitor see the pm2 runner; dev timers carry ~/.local/bin
bcfffe48
feat
audit summary reads the HEAD commit once and names it after the score, omitted when git cannot read it
27e62b2b
feat
scorecard line with no landed finding states the spend: "160k tokens, no landed finding yet"
4c24d99a

v18.0.0October 6, 2026+19 internal

refactor
Audit quality scorecard
9dbe9924
fix
Running audits on the Audits column holds with trunk -- d1-bindings.test.js
8cbd63e9
feat
every audit run publishes an "Audit quality" report tracing each auditor's 30-day tickets to landed, already done, duplicate or declined
20b2a4cf
refactor
Running audits on the Audits column
04552034
feat
box audit sweep reports audit-start/audit-finish via api-client, wired from the rollup shipper
a416ba8e
feat
running_audits table, audit-start/audit-finish routes, running on GET /api/project-quality/:id
606ba4b0
feat
throttle magic-link requests with the MAGIC_LINK_LIMITER rate-limiting binding instead of counting magic_link_tokens rows
402cf06b
refactor
Path-form preview for the owner only
64bff655
fix
Audit run kept as a record holds with trunk -- d1-bindings.test.js
70bf45cd
feat
path-form /dev/<token>/ checks the owner's session on every request before asking the box
a8085f87
refactor
Audit run kept as a record
4f356a83
feat
audit_runs table and /api/projects/:id/audit-runs POST+GET, owner-only
7bcf3346
refactor
Audit report shows time, tokens, commit
43d92b0d
feat
the audit report reads the agent's duration and tokens and the repo's HEAD under its score, unmeasured when absent
659c2bc9
refactor
Preview only for the account's people
c2213ce9
fix
Preview signed in as the owner holds with trunk -- installed-engines.test.js
2f520266
refactor
Preview signed in as the owner
a1f5e6cd
feat
/__open redeems a preview link only after xswarm.ai confirms the owner's session
bd355726
feat
seed-owner leaves the local sign-in as .xswarm/local/preview-cookie; the foreman adds it to preview requests with no session
f5ed0694
fix
no lane can take a runner pass down; a merge that throws is a red candidate
77e0d091

v17.38.0October 6, 2026

fix
the planner reads plans written in markdown, and keeps the tail of one it cannot read
abcd509f
fix
a merge candidate's fix pass that cannot run fails that candidate, not the runner
2b3d5282
fix
the watchdog leaves a silent runner alone while its tickets are in flight
84d66d25
fix
the release suite leaves 12G for coding tickets that start mid-run
00b74e6b

v17.37.0October 6, 2026+15 internal

fix
a dead agent fails its own call instead of crashing the runner; a killed monitor tick stashes its edits
4f096dd3
fix
task worktrees no longer inherit the integrator role; npm advisories hold a release only when the lockfile changed
c089a559
feat
Reports scorecard rows read tokens per landed finding, or "no landed findings yet"
713982fd
refactor
Unstable usability score flagged
f237cb0e
feat
report card flags a score that spread 10+ points across reruns on one commit
17e63110
fix
Dev preview opens signed in as the owner holds with trunk -- project-favicon.test.js
e8d3285e
fix
Dev preview opens signed in as the owner holds with trunk -- page-area-auth.test.js
8966170c
fix
a provisioned dev server answers /test/* in-process and the kanban spec seeds the API its page reads
634c05ca
feat
dev server seeds its local D1 with the owner and /dev-login signs in against its own API
387d6292
feat
Audits lane after Deployed at >=1600px -- audit reports as Ticket thumbs stamped Audit (topic, score, finding, date), opening the report
451238ff
fix
site audits run beside the lanes in the support pool, never in a coding slot
8a05d057
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
4b58af9e
feat
production names DEV_PREVIEW_ZONE preview.xswarm.ai and routes *.preview.xswarm.ai to the worker
d6e62b49
feat
System One picks from every spec and its choices run whole beside the @critical core
96208799
fix
a ticket's own e2e spec runs whole, so new specs stop joining @critical
7bcfdf53
fix
monitor report reads its mail settings from the repo .env, not $HOME
0c0e32ce
fix
System One judges migrations and worker config instead of running all 194 specs
c6ef208d
feat
hourly xswarm-dev improvement tick on Boss with a measured report email
adb32cd7
fix
runner survives reboots under pm2, watchdog restarts a stalled runner, lock reclaims across boots
8221ff15

v17.36.0October 3, 2026+9 internal

refactor
Clean /dashboard/workers E2E on staging
a1973f8b
fix
renders-clean check annotates the machine-key pairing-code 403 UNMEASURED instead of failing /dashboard/workers
fbb7e35c
fix
No braces advisory in the audit holds with trunk -- fleet-worker-names.test.js
d3e090e3
refactor
No braces advisory in the audit
e3e1833b
fix
astro isNode workerd guard moves from patch-package to a Vite plugin, dropping braces' patch-package chain
3fc6c577
fix
No high advisories at runtime holds with trunk -- entry.test.js
651a4181
fix
release E2E restores @playwright/test before an engine whose install vanished, and re-runs once when it vanished mid-run
1ec8e1f3
fix
vendored http-cache-semantics declares no mocha devDependency, so currency no longer counts it unresolvable
ab259be1
fix
production tree audits clean of high advisories
4ca002e1

v17.35.0October 2, 2026+4 internal

fix
environment tabs select on press, so a layout shift between mousedown and mouseup no longer leaves Dev showing
b28dbad3
fix
install-key and connect approve refuse an xsk_ key with 403 Session required
cc0d7e45

v17.34.0October 2, 2026+2 internal

fix
relay session tokens go through validateUserToken, honouring logout and logout-all
54bf5b03

v17.33.0October 2, 2026+6 internal

fix
POST /connect/pairing-code refuses a machine key with 403, as GET does
99eaa325
fix
GET /connect/pairing-code refuses a machine key with 403, as POST /keys does
55781333
refactor
Agents never rewrite the shared install
35163f89
refactor
Agents never rewrite the shared install
60cc6289
feat
gate denies npm/pnpm/yarn/playwright installs inside a task worktree, whose node_modules is the main checkout's
6ae5aa5c

v17.32.0October 2, 2026+3 internal

feat
mint dev preview links on a per-project origin under DEV_PREVIEW_ZONE; refuse another project's token there
728c21c6

v17.31.0October 2, 2026+10 internal

fix
record a GitHub installation only when its account id matches the caller's OAuth github_id, not the login
d0d9a5f7
fix
/test/seed 404s before writing when a task or worker names a project the caller does not own
f55b8bf4
fix
session upserts only update the caller's own row (setWhere user_id)
bbadf858
fix
/health looks up the release by sha AND RELEASE_PROJECT_ID, so another project's row under the live sha is never trusted
b5110d6f
refactor
Blockers never reveal others' tickets
fdfdc7f2
fix
blockers check task ownership on create and join tickets only through the caller's projects
2d3826d5

v17.30.0October 2, 2026+2 internal

refactor
Redirected route reported unmeasured
d9c6cae4
fix
routeSummary reports a route that landed on another path as unmeasured: redirected to <path>
6b512a1b

v17.29.0October 2, 2026+4 internal

fix
polling test counts only the routed history URL, and a failed request as settled
7f26d065
fix
one board role=status announces a step change whole; ticket step line and NOW strip no longer aria-live
65c39b0d
feat
board is a named region so its live regions can be counted; step line and NOW strip still aria-live
877f7f75

v17.28.0October 2, 2026+2 internal

fix
unsent ticket message shows "Couldn't send — try again" under the composer; draft kept, notice clears on typing or a good send
70eb6dfd

v17.27.0October 2, 2026+4 internal

fix
environment box reads Couldn't load status when the project request fails
976c8d2f
fix
live caption, card meta and voice settings text use text-quiet/secondary/muted tokens instead of 30-50% green and cyan
dc49b83f

v17.26.0October 2, 2026+3 internal

fix
voice settings API key caption becomes a <label for> its input, drawn uppercase as before
955c13a7

v17.25.0October 2, 2026+2 internal

fix
ticket shelf tracks its load phase -- Loading tickets… until the first answer, a warning-tint Couldn't load tickets — retrying note on a refused load above the tickets it kept, No tickets yet only on an empty answer
492f28e8

v17.24.0October 2, 2026+2 internal

fix
Voice select gets a 2px cyan focus-visible ring and a name; panel follows its gear so Tab reaches it
47fca5bb

v17.23.0October 2, 2026+4 internal

fix
No subscription talk on Account holds with trunk -- settings-usage.spec.ts
043b68d9
fix
No subscription talk on Account holds with trunk -- e2e-route-fetch-guard.test.js
4460c9fb
fix
/settings drops the Subscription section, Trial, Billing link and '/ 1' limit; Sessions moves under Usage so it sits above the fold
e2b23dff

v17.22.0October 2, 2026+2 internal

feat
Chat states E2E loads on staging
5809a72a
fix
chat-states open() asserts Barry's greeting and Online sit inside the viewport, not merely visible
e894a203
fix
chat-states spec stubs /build-info.json with the page's own data-build-sha so the auto-update reload cannot abort it on staging
458552ff

v17.21.0October 2, 2026+2 internal

fix
live grid shows Loading until the page announces, and a failed fetch shows Couldn't load + Retry (the page's own loadProjects)
3d2e17cb

v17.20.0October 2, 2026+2 internal

fix
blog body headings demoted to h2 in seven posts; welcome drops its body h1 that repeated the title
b954114c

v17.19.0October 2, 2026+2 internal

fix
Recent Tasks spec compares the row's position across a held pairing-code load instead of sampling 2.5s with 200ms on every API
03db13b5
fix
Recent Tasks row opens tickets in Firefox holds with trunk -- affordable-workers.test.js, critical-specs-url-waits.test.js
8f45f064
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
256c6752

v17.18.0October 2, 2026+2 internal

fix
demote AI lessons body heading to h2 so the layout title is the only h1
d7d2fec7

v17.17.0October 2, 2026+2 internal

fix
sitemap filter drops /test/crash (404 in prod) and /plans (owner keeps it hidden)
093b7d9a

v17.16.0October 2, 2026+2 internal

fix
Recent Tasks link E2E fits staging holds with trunk -- critical-specs-url-waits.test.js
89127a2c
fix
Recent Tasks spec waits for the tickets URL to commit with no per-call cap, bounded by testTimeout (60 s+ on staging)
befbf817

v17.15.0October 2, 2026+2 internal

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
fd63fbd3

v17.14.0October 2, 2026+2 internal

refactor
Worker cards survive a failed refresh
052f9b29
fix
a failed workers refresh shows a status line above the cards instead of wiping them
728d4cbb

v17.13.0October 2, 2026+4 internal

refactor
Page crash read as a host fault
fb98c17d
feat
renderer crash triaged as a host fault, logged by deploy-prod and never filed
1053054c
fix
decode a stored base64 icon with an indexed loop, not a per-character mapper
ee3b7cf5

v17.12.0October 2, 2026+2 internal

fix
sidebar and nav-label specs wait 20 s, past the staging step, instead of 10-15 s
3eb88f53

v17.11.0October 2, 2026+2 internal

refactor
Ticket retry E2E fits staging latency
f2726d6b

v17.10.0October 2, 2026+55 internal

fix
a staging build that cannot deploy stops the release at once, named, and a failing streak shows in brief
82cba0b9
fix
an agent that leaves a background child behind still finishes and frees its slot
ee0dcfbc
refactor
Report opens under its project on staging
c5bd1986
fix
e2e red observer calls a tests-only branch spec-only instead of observing it on trunk
c12ab39d
fix
short phones keep Worker Status and its Copy command while no runner is online
9d477258
fix
helpers/posthog visitHomepage opens / at domcontentloaded, waits for the h1, settles 1.5s, and reports PostHog requests and window.posthog
01292f49
fix
the homepage injection reads the page through fetchDecoded, not a bare route.fetch().text() that a zstd-honouring staging would hand raw bytes
378e201b
feat
No-PostHog homepage E2E fits staging
b5c7b7e2
fix
homepage no-PostHog check opens / at domcontentloaded, waits for the h1, then settles 1.5s instead of waiting for 'load'
0e413bfe
fix
env-screenshot waits up to 45s for hydration (staging takes that long) and declares a 60s test limit
9ffe8c13
refactor
Foreman chat in the dev toolbar
e7d1f135
refactor
Foreman chat in the dev toolbar
efd5b7de
feat
xswarm foreman dev toolbar app -- a Foreman dialog bottom-right that posts the question with the page path to the project's chat; the integration adds it under astro dev only
20c47a02
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
bd7cc987
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)
7f75c27d
fix
test-account fixture mints one account per worker and signs every test in (placeholder on localhost, UNMEASURED skip on production)
a626a040
fix
Dev-server warm E2E signs in on staging holds with trunk -- e2e-route-fetch-guard.test.js
478c7612
fix
dev-server warm stub takes its cookie from sessionCookie (machine key off localhost) and records where passThrough's redirects ended, so a staging bounce to /login is seen; self-tests prove both and the no-key UNMEASURED skip
10d9a0db
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
cf3819fc
fix
Report E2E signs in for real holds with trunk -- auto-update.spec.ts
0fec8064
feat
deploy screenshot bytes go to the SCREENSHOTS R2 bucket, D1 row keeps metadata only; binding added for production and staging
432fa34e
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
acb3b7da
fix
project-reports, document-front-matter and audit-report-outcomes sign in through the real authed fixture, not the e2e-placeholder cookie
573f60d4
fix
a mouseleave the pointer did not make keeps the persona card, re-placed on the avatar; the next real move closes it
0fc11430
fix
persona-card hovers Barry's avatar once the late panels have landed and it holds still, not while it is moving
2cb9f892
fix
staging's 45s first-render budget lives in tests/e2e/fixtures/hydration.ts and panel-prose-readability imports it
6d107a1d
fix
ticket button and panel hydration budget 20s -> 45s in panel-prose-readability, keeping the mocked API
69fea3cb
fix
Team Chat launcher toPass budget 20s -> 40s in welcome, frame and auto-update specs, under the 60s staging test timeout
d081cb72
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 -> --host-resolver-rules; a localhost target (the push gate) does no lookup or probe
974c9dfb
fix
only production drops a session /api/auth/me refuses; staging renders the placeholder session E2E specs enter with
865d6a8e
feat
POST/GET /api/shots stores pasted screenshots in the SHOTS R2 bucket at tmp/<id>, owner-only via project_id in customMetadata; SHOTS bound for production and staging
4e2eb419
feat
dev host carries the preview page's WebSockets to the dev server through the relay room (ws_open/ws_msg/ws_close)
147ad078
fix
CORS test also asserts the page records no failed API call of its own (Scenario 1)
6d7d8c03
feat
test-account fixture mints a staging user token via POST /test/account on apiOriginFor(host), skips UNMEASURED on 403
78326901
fix
Auto-update E2E reads zstd staging holds with trunk -- e2e-route-fetch-guard.test.js
15f3a1bd
refactor
Auto-update E2E reads zstd staging
f92c7a52
fix
auto-update reads the page document through fetchDecoded (no zstd); route-fetch guard flags .text() too
06de65be
fix
release engines keep the 8-worker cap; staging chromium launches with --disable-dev-shm-usage (localhost critical path untouched)
0ca6f715
feat
staging trigger uploads dist/server/wrangler.json; ci-build-web stops writing wrangler.xswarm-web-staging.json
fb4c9575
refactor
Native worker entry for DO and cron
ac2cde4f
feat
wrangler main = checked-in src/worker.ts re-exporting @astrojs/cloudflare/handler fetch, api scheduled, ProjectRoom; drop esbuild wrapper
1951c406

v17.9.0October 1, 2026+31 internal

fix
/api/auth/ws-ticket always proxies to the API the browser's socket dials
f0e13d0e
feat
GET /api/projects/:id advertises screenshot_url only for a screenshot uploaded within 7 days
04260835
feat
GET screenshot answers 404 No screenshot once uploaded_at is over 7 days old
d8783a6e
feat
ci-build-api applies D1 migrations before wrangler deploy and exits 1 if they fail
436ea902
refactor
API calls via a service binding
910ff9ff
feat
unprovisioned web worker calls the API through the API service binding, public host only without one
01aafcec
feat
staging deploys the config CLOUDFLARE_ENV=staging resolved; emit-env-config.mjs deleted
7cf9f760
fix
Team Chat popup specs sign in with the machine key on a deployed target, so staging shows the popup instead of sign-in
4b2ada09
fix
Settings text on the type scale holds with trunk -- chat-mockups.spec.ts, sign-out-all.spec.ts
c993d282
refactor
Config page never stuck on loading
7600c3d9
fix
each environment's config-report gives up after 8s and reads unmeasured — unreachable, so the page never sits on its loading line
2094faa0
refactor
Runner repairs a stray core.worktree
5629e490
feat
each runner tick unsets a stray core.worktree and logs worktree-repaired; brief's repo line names it
9c67d6c6
feat
PairingCode's Copy, single-use and retry buttons render through the shared deck Button (Copy as primary, like Studio ↗); Button padding .15rem so Firefox draws <a> and <button> alike
b4349e17
feat
TutorialLayout owns the tutorial breadcrumb and header; what-is-xswarm and freelancer use it
11d07011
feat
a pasted image in the team chat uploads to /api/shots and inserts [shot:<id>] at the cursor
45ca41e0
fix
local dev /api proxy gives up on staging after 3s without headers -- a dead IPv6 route left the navbar's anonymous /api/auth/me probe pending, so Sign In never showed and auth, harness and visual critical specs timed out
d0a22c11
fix
critical-path timeouts were this host's network, not this change
1212323c
refactor
Settings text on the type scale
a09867e6
fix
middleware'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
1f98dac4
feat
settings, billing and the voice SettingsPanel draw every font-size from --size-* (one-off .55-.9rem, 18/24/30/36px gone)
9b5f7b78
feat
the --size-* type scale (12/14/16/20/28/40) in theme.css, as in #c626a887
0cc2c75b
refactor
Studio and preview share one button
34731d92
fix
shared-button spec reads settled styles on a deterministic page
1a91cb96
feat
one Button.svelte for the studio and workspace preview toolbars
2d7dca8a

v17.8.0September 30, 2026+12 internal

feat
blog purple drawn from --brand-secondary: rgba(139,92,246,a) -> rgb(var(--brand-secondary) / a), mermaid reads the token at runtime
16105c37
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
c48cb3a1
refactor
Open tabs pick up a new release
b031b6d4
feat
an empty focused field no longer holds the auto-reload; unsent text shows a Reload bar from Navbar via onHeld
c2b77d83
fix
Dev preview serves the session tree holds with trunk -- silence.test.js
1dfc0143
refactor
Dev preview serves the session tree
54f5d567
feat
the dev preview starts in .xswarm/session.json's worktree, and a request that finds the tree changed stops it and starts it there
04a59a0e
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
eee0c96a
feat
a chat message's session sends the foreman into that worktree with Edit/Write; an edit there files no ticket and says where it went
8922dadf

v17.7.0September 30, 2026+10 internal

fix
UI iteration session ships one UI ticket holds with trunk -- planner-agent-slot.test.js
25b75309
refactor
UI iteration session ships one UI ticket
e3a015bf
feat
foreman edits the open iteration session's worktree with Edit/Write, reads the main checkout otherwise
c7c7a488
refactor
Rest of dashboard on spacing scale
3a3a545e
feat
phone menu bar pads --space-2/--space-4, its button --space-2/--space-3 with a --space-2 icon gap
6662c048
feat
name the phone menu bar as a toolbar so it is reachable by role; padding still off-grid (10px)
8c715428
feat
4px --space-* scale in theme.css; dashboard sidebar recent rows, divider, collapse and build stamp use it
0a1cc2a1
feat
a page that throws renders src/pages/500.astro in the site layout instead of the middleware's bare string; /test/crash proves it
3a208d12
fix
a local dev server renders the E2E placeholder session instead of bouncing it to /login on the staging API's 401
f09fc81b
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
7a5137d2

v17.6.0September 30, 2026+2 internal

fix
a session /api/auth/me refuses with 401 is dropped and redirected to /login, instead of opening the dashboard shell
d4846873

v17.5.0September 30, 2026

fix
the dev preview loads again -- the box's proxy stops passing the browser's Sec-Fetch headers to the dev server
b7534e9a

v17.4.0September 30, 2026+2 internal

refactor
Ticket names show their full capitals
901d1eb2
fix
a ticket name with an enlarged capital gets a quarter em of top room, so its clipped box no longer shaves the capital
58f79663

v17.3.0September 30, 2026+2 internal

feat
System One chooses the specs each ticket's critical path runs
7905a480
refactor
Instant production rollback
3898e3f3
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
93bd8335

v17.2.0September 30, 2026+37 internal

fix
every per-engine release E2E report is git-ignored, so releases stop holding on an untracked report
bdcbd537
fix
a board ticket whose criteria are written as Gherkin lines is imported, not declined for ever
bdba8d4c
docs
owner decision -- a UI change the owner asks for is filed in the same reply at owner priority
0cb82a46
refactor
Staging timeouts name where time went
125c3e58
fix
a step-less timeout with no route quotes Playwright's message with its test count instead of naming routes nobody saw
64fed5ee
feat
read each timed-out result's slowest top-level step and title the timeout by it — hooks as starved browsers, anything else as slow staging
2f9b0737
fix
Workspace specs assert the Workspace View button visible, and dev-preview asserts its frame visible not merely attached
48fa3970
refactor
Signed-in E2E setup never hangs
26354bf3
refactor
Signed-in E2E setup never hangs
551c3e6f
fix
authed fixture probes /api/auth/me only for local targets, bounded at 5s
54510ae6
refactor
Test timeouts named by triage
185ccbe0
fix
timeout cause matches Playwright's 'Test timeout of Nms exceeded.'
dff43bf8
refactor
Clean console on platform config
0921a9bf
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's SRI-pinned tag logged an integrity error
1096a3ac
fix
failed API calls read "status path", so this origin's config-report refusal is "401 /api/admin/config-report"
be04e18d
feat
deploy-prod runs each engine alone, workers from MemAvailable read as it starts, triage over every engine's report
88deab4b
fix
recent-tasks spec waits for the tickets URL to commit (not load) within 10_000 and checks the 'Alpha' heading
b291a626
fix
proxied specs take their 90s budget from helpers/route-json proxiedTimeout(), so on trunk the spec fails
3b3b4d67
fix
PairingCode draws a "$" prompt before the command, outside the <code>, so the line reads "$ npx xswarm <code>" while Copy and a selection still carry the command alone
3fc07267
fix
mark the three route.fetch-proxied workspace specs test.slow() so staging gets 90s+ instead of 30s
e0d8e53c
fix
restore the ticket's spec over the trunk copy the pipeline put back, plus a session-free consoleEntry check — the other environment'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
b9f8f282
refactor
Clean platform config staging E2E
31577a34
refactor
Worker pairing command E2E reads the code
3a30a5db
fix
consoleEntry excuses only the other environment'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)
47690555
fix
opening 'Add a new worker machine' below the worker cards scrolls the section into view, so the pairing command is on screen
21395177
feat
the magic-link email carries a validated same-site ?redirect= and verify sends the user there, falling back to /dashboard
ee7d37b9
fix
Overview's Next line drops the internal Work Harness link; Getting Started is the only onward step
d5864e17
feat
an audit marked guide keeps its instrument's whole output and publishes it as the report's Style guide section; the prompt still gets the first 12,000 characters
a186d6d0
feat
fleet-stamp-add writes scripts/build-stamp.mjs into a project and runs it first in prebuild
8edc7ec4
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
03c7e359

v17.1.0September 30, 2026+2 internal

feat
staging e2e floor 60000ms per test and 10000ms per expect; localhost stays 30000ms
6c02dcb5

v17.0.0September 30, 2026+10 internal

fix
Staging E2E timeout fits latency holds with trunk -- visual-audit-timing.test.js
d5ba831d
feat
playwright timeout from measured staging step time (x1.5, next 5000ms, floor 30000)
7ff6e07c
feat
cap a remote Playwright run at 8 workers, so memory taken mid-run no longer crashes Chromium
e2afcbea
fix
team-chat-popup history/no-double/project-name/stream read projects through listProjects instead of a bare GET .json()
43093824
fix
scope conflicts match only locks whose request is in the same project; claim uses its request's project, scope-check requires an owned ?project=
aa0d6577
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
8e86fe09

v16.12.0September 30, 2026+5 internal

fix
Sitemap dates for blog posts and docs holds with trunk -- visual.spec.ts
cce26004
feat
sitemap serializer adds lastmod to blog posts and docs from the file's last git commit
f947de50
refactor
Sign-in returns to the page you opened
427018ce
feat
middleware and client bounce send signed-out visitors to /login?redirect=<path+query>; // targets dropped; login and DashboardLayout share the stash helpers
6863c6bb

v16.11.0September 30, 2026+7 internal

refactor
Release History doc points to /releases
baaaea57
feat
/docs/release-history redirects to /releases; the frozen doc, its generator and the pre-commit hook that rewrote it are removed
7fc16454
refactor
Favicons on the first projects list
4a2daba7
refactor
Favicons on the first projects list
1237a6c1
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
8f7fe52d
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
50f08982
feat
Sign-out-all result stays in view
568b5431
fix
re-scroll the sign-out-all result into view once account and keys have loaded above it
eb3b6c21

v16.10.0September 30, 2026+4 internal

fix
the seven re-taken login/404/redirect baselines are compared against the build under test (@critical)
8b63b469
fix
(visual) re-take the 7 of the 36 baselines that a648f49e made stale again
c7896d35
refactor
Billing link tests read staging's JSON
6fdbec7b
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
9066e248

v16.9.0September 30, 2026+4 internal

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
ffeedb47
feat
Public-page baselines match staging
db593293
fix
baseline checks pin the Desktop Chrome device whole and skip non-chromium engines, so Mobile Chrome's isMobile/2.75x DPR and firefox's Gecko no longer report seven false regressions per release
a46f7275
fix
navbar wordmark drops the global .glitch-text cyan halo (text-shadow: none), which only the prod build painted once lightningcss compiled --glow-intense's light-dark()
a648f49e

v16.8.0September 30, 2026+7 internal

fix
Settings plan-link E2E reads zstd holds with trunk -- e2e-route-fetch-guard.test.js
d9a1a391
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
cb7e5fc5
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's ~5s stall no longer holds Subscription on "Loading…"
167888be
refactor
Blog mobile matches its baseline
6f4e2564
fix
blog tag filter is one scrolling row at <=480px so a post card is in view; blog-mobile linux baselines re-taken for that restyle and the RSS pill
b3766011
fix
Settings Subscription link reads Billing on the free plan, Manage Subscription on paid plans
bba333ba

v16.7.0September 30, 2026+2 internal

fix
--rebaseline checks staging's build-info sha against HEAD before any re-take, and records both in rebaseline.json
3d0a2ab5

v16.6.0September 30, 2026+4 internal

fix
Settings Subscription links to billing as Manage Subscription on every plan, dropping the free-plan Upgrade to Pro upsell (no pricing yet)
3be7e969
fix
settings billing specs read the real /api/auth/me through fetchJson(route), so staging's zstd answer no longer reaches .json()
4cdf63a0

v16.5.0September 30, 2026+2 internal

fix
settings-billing-link free-plan phone spec expects "Upgrade to Pro", per this ticket's Scenario 1 (it asserted Manage Subscription and no upsell)
b7a3353f
refactor
Settings billing link found on staging
3a8952db
feat
Settings Subscription link reads "Upgrade to Pro" on the free plan, "Manage Subscription" otherwise
805ae28d

v16.4.0September 30, 2026+6 internal

fix
settings shows load errors and a Billing link when /api/auth/me fails
e3f152a1
refactor
Staging verify.md attached to #b7f17750
f0b1eda8
feat
writeVerify verdict "E of E pairs match — 0 changed pixels" or "FAIL — expected E pairs, compared C; N pair(s) changed"; reads "N pixels are different" with or without the ratio
2cca56ef
refactor
Deterministic waitlist E2E
8b9208a8
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
6ec00298

v16.3.0September 30, 2026+5 internal

fix
settings-billing-link free-plan phone spec expects Manage Subscription, per this ticket's Scenario 1 which supersedes the earlier Billing label
8e1a671b
fix
Subscription link reads Manage Subscription for every plan and the plan name is rendered capitalised (Free), not only styled so
3c5c619e
feat
verify.md verdict reads "E of E pairs: 0 changed pixels", "N of E pairs changed (P changed pixels)" or "expected E pairs, compared C"
a1199356

v16.2.0September 30, 2026+18 internal

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
f470d92a
feat
--verify verdict reads "N of E pairs match (P changed pixels)" or "UNMEASURED: C of E expected pairs compared"
e5aac8f3
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
23abb44a
feat
page-aborted cause names the route from the ERR_ABORTED URL path instead of truncating before it
7529c5db
feat
writeVerify headline "E of E pairs: 0 changed pixels", "N of E pairs changed: P changed pixels", or "C pairs compared where E were expected"
ebb10f1c
refactor
Mobile Chrome baselines match this build
8a680781
fix
re-take app-strategy and tutorial-first-time-setup Mobile Chrome baselines at Pixel 5 from this build
954c4ff7
fix
capture() photographs at CSS scale like toHaveScreenshot; on Pixel 5 it took 1081x1999 against 393x727 baselines
38fa567d
feat
writeVerify headline "N of E pairs match — P changed pixels" or "C of E expected pairs compared"
875dd86d
feat
serve dev previews from xswarm-api.chadananda.workers.dev (DEV_PROXY_HOST + client origin), off xswarm.ai
ac5d5b63
feat
verify.md's first line is the verdict -- "N of E pairs match: P changed pixels" or "N pairs were compared but E were expected"
3ce3889c
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
3f824efb

v16.1.0September 30, 2026+10 internal

refactor
Navbar version from xswarm's project only
c317d341
fix
/api/release/current reads only RELEASE_PROJECT_ID's production rows; production sets it to xswarm's project
4757fb94
refactor
Task locks stay inside one project
57fb3c4a
fix
scope the task-lock gate and its conflicts to the claiming ticket's project; territory dry run to the asker's own ticket or account
35c522cf
feat
authMiddleware sets apiKey for xsk_ credentials; POST /api/keys refuses them with 403
27069ad7
feat
writeVerify verdict PASS/FAIL: N of E pairs match or UNMEASURED: C of E pairs compared; rows 'N changed pixels'; --expect alias
294bd523
fix
one settle step before every capture -- fonts in use loaded, viewport images complete, auth slot resolved
16c26b90

v16.0.0September 29, 2026+12 internal

fix
CSP report-only policy names what the site loads; /api/csp-report answered in-process
51193fd4
refactor
Re-taken baseline report from staging
02a3795b
feat
writeVerify + planless --verify: every snapshot pair vs the target as verify.md with both shas, UNMEASURED below the expected count
4e6ccaa8
refactor
Signed-out sessions stop working
5150c5ff
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
120fe786
fix
TOKEN_SECRET and MASTER_ENCRYPTION_KEY require the environment prefix; missing secrets abort before any PUT
fe0115e9
refactor
Re-taken baselines verified on staging
f895f2b4
refactor
Report-only CSP on every page
ec9ab838
feat
verifyReport writes DIR/verify.md from a Playwright run, per re-taken pair; --report or a fresh --verify run, skipped = UNMEASURED
4d724f43
feat
Content-Security-Policy-Report-Only on every page, reported to anonymous /api/csp-report
3609ab36
feat
provision route refuses is_admin (403) and deleted_at users (404), each audited
0d6e19bb

v15.12.0September 29, 2026+12 internal

fix
REST auth refuses any signed token carrying a purpose, so a leaked ws ticket cannot mint an xsk_ key
8d1a2d2b
refactor
Per-route perf numbers in the audit
22018959
feat
perf audit prints a ROUTES section (LCP, CLS, KB, requests, landing URL) and keeps unmeasured routes with their error
824ab4b9
refactor
Lighter, cached navbar logo
20317ac6
feat
logo as relative integer path data (37 KB -> 7.8 KB), week-cached; logoOpsFromSvg reads relative m/c/z
9eb0eac1
refactor
Visual suite passes on re-taken routes
ecef1d97
feat
GET /workers(/:id) adds sessions_setting default 2, live capacity and effective_sessions; PATCH rejects a setting above capacity
d270ce3b
feat
--verify --from DIR reads rebaseline.json and checks a capture: re-taken pairs pass, ticketed and owned failures listed, anything else unexpected
b835b301
fix
every committed snapshot-mask baseline is checked from any browser for the '-- changed' heading, so a wrong firefox baseline fails a chromium-only run
cba0dc33
fix
firefox snapshot-mask baseline shows 'Snapshot Mask Fixture', not the '-- changed' heading the parallel changed-test wrote
35c4909b

v15.11.0September 29, 2026+14 internal

fix
recapture tutorials-index chromium/firefox/Mobile Chrome linux baselines from this build; the old ones predate the 1f4a1d4b alpha-invite copy (40781px off)
ffd60c34
refactor
Re-baseline per route and browser
0e5950a6
feat
--rebaseline accepts each stale route/browser pair and runs one single-project --update-snapshots per engine
b4f6187a
fix
settings re-scrolls the sign-out-all result into view once the account and API keys finish loading above it
94e68351
fix
chat-state baselines are chromium's alone; the critical-path copies (byte-identical to chromium's) are removed
167b47a4
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)
5099e936
fix
kanban error window is a section named by its Error title, so it is findable as a region
3a6f0289
fix
settings-billing-link spec expects Billing on free and Manage Subscription on pro, per this ticket's criteria
d2d7d967
feat
WorkspaceView loads DevPreview, TerminalView and ChatWindow with import(), so tiles draw before the pane modules arrive
821fb352
feat
Settings Subscription link reads Billing on free and Manage Subscription on paid plans
07b28097

v15.10.0September 29, 2026+4 internal

fix
(visual) a @critical test that the committed chromium baselines picture this build
06c6e739
fix
(visual) re-take the 36 stale baselines against staging b33ed5c
8a3d7305
fix
Workspace View takes the page's announced project list; live page shares the nav menu's in-flight /api/projects request instead of making a second one
5549aa94

v15.9.0September 29, 2026+9 internal

feat
Settings Subscription link reads "Manage subscription" on every plan; settings.spec free-plan case follows the new name
f03cc8d0
fix
each chat line is an article named for who said it, so its not-delivered marker and Retry are found by role
ca52d01e
feat
free-plan Subscription link reads "Billing" (same outline link as pro), section labelled by its heading; test scrolls to the heading as a phone user does
c6c2747d
refactor
Blog text tokens all defined
85e86cf2
fix
blog.css and the standups post use the declared --color-text-* tokens; spec waits out the theme transition
43ae2794

v15.8.0September 29, 2026+4 internal

refactor
Hard-coded style counts cannot rise
9bd34a7b
fix
style ratchet baseline recorded from the current tree (login.astro's 4 font sizes landed after attempt 3 recorded 797), so the real tree holds at 0 rises
7128e13e
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
936dc282

v15.7.0September 29, 2026+2 internal

refactor
Config page passes staging E2E
ea2d1fb2
fix
recordApiFailures also records another origin's /api/ 401, excusing only /api/admin/config-report, which the config page reads as unmeasured
fb1b3479

v15.6.0September 29, 2026+3 internal

fix
console handling moves into an exported consoleEntry, proven without a session: console.error("boom") located at "debugger eval code" is "console.error: boom", not a thrown listener
fe4da02a
fix
early-click's hold rule is a shared helper, and a built-page reproduction proves it lets goto return while the island module waits
ef4d9b2d
fix
workspace-early-click holds back only the WorkspaceView module, not the built page's head stylesheet that blocked DOMContentLoaded
0f66b910
fix
Workspace specs forward staging modules through passThrough, so Firefox's xswarm.ai Host and Chromium's zstd no longer stall every chunk
622704e0
fix
the session harness reads a console location only when it is a URL, so a Firefox "debugger eval code" error is recorded instead of throwing in the listener
c7e73175

v15.5.0September 29, 2026+5 internal

refactor
Clean platform config page on staging
8141ba6a
fix
the session harness also excuses a CORS block on the other environment's config-report, read from the message text where Chromium and Firefox name the blocked URL
6bed4f19
fix
the session harness appends the failing resource's path to a "Failed to load resource" console error, so a 401 names its request
0f567cee

v15.4.0September 29, 2026+5 internal

fix
spec asserts a chat-state baseline exists for every browser project, red on trunk
f46c95d5
fix
commit chat-empty/sending/streaming 390 baselines for chromium, firefox, Mobile Chrome
4fd565f1
fix
expectFetch401Logged in the session harness asserts the console on Chromium and annotates UNMEASURED elsewhere
77a89839
feat
Honest 401 console check on every engine
5a6bd0f4
fix
off Chromium, the 401 console check is annotated UNMEASURED instead of failing
1ca19229

v15.3.0September 29, 2026+2 internal

fix
sidebar spec also opens the .html name build.format 'file' emits, which trunk leaves unmarked
341486df
refactor
Current doc marked in docs sidebar
261dc388
refactor
Current doc marked in docs sidebar
04a30abc
fix
doc page passes its id to DocsLayout instead of reading build-time Astro.url
e4434275

v15.2.0September 29, 2026+4 internal

refactor
Clean platform config E2E on staging
c690a545
fix
console collector skips another origin's config-report refusal; this origin's still counts
1e4bddb9
fix
listProjects parses first and reads status/type/body only when the answer is not JSON, so a response without headers() still works
0ba5f958
fix
listProjects retries only thrown GETs and names route, status, type and body on a non-JSON answer; three specs use it
44ade359

v15.1.0September 29, 2026+34 internal

refactor
Screen-reader sidebar navigation
60ae6f69
feat
sidebars mark the current page with aria-current, name each nav landmark, and category labels are no longer headings
1e92285a
fix
the release's E2E run writes no screenshots into the publishing checkout
ad1e7f24
fix
the renders-clean recorder lives in the session harness (fixtures/session.ts), so the spec run on trunk fails -- trunk's harness has no same-origin 'STATUS METHOD path' recorder
6756de99
feat
Clean API calls on /dashboard
36f072a8
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
f3207626
fix
renders-clean recorder lists same-origin /api/ failures as 'STATUS METHOD path' and drops other origins
ccfb103e
fix
Email sign-in on the login page holds with trunk -- hub-tablet-fit.spec.ts
17d9b285
fix
Email sign-in on the login page holds with trunk -- public-surface-fetches.test.js
ba7aa518
fix
"Check your email" panel enters the DOM only after a sent link, so a refused request never carries it
f46eb29b
fix
the BA closes a waiting ticket it finds already delivered instead of asking to delete it
8b2f8c13
fix
move the blog meta line above the 85vh hero so it is on the first screen at 390px
f62a6b1e
feat
email sign-in form on /login posts to /api/auth/magic-link with the redirect, shows sent or retry-later
b452b6b1
refactor
Blog meta line in secondary grey
b577a2c2
fix
blog meta line and skill-bar labels use --color-text-secondary instead of undefined --text-secondary
967afc07
fix
One launch-stage name, no pricing holds with trunk -- no-npm-publish.test.js
1c6d158b
refactor
Code sessions slider on worker cards
a7ab405f
refactor
One launch-stage name, no pricing
32dab9ef
feat
Code sessions slider on worker cards, 1 to capacity, saved via PATCH /api/workers/:id
11b10275
fix
/app-strategy, /about and getting-started name one stage, Open Alpha, with no price, free-for-now or discount copy
5d79dcbc
fix
visual triage lists routes with missing screenshots under missing instead of throwing ENOENT
a9ac60e2
fix
API keys render as a labelled list with wrapping rows and a tokenized Revoke with focus and disabled states
17001350
feat
heartbeat reads running tickets from the task store each beat -- busy with active_tasks, idle at 0; xswarm run passes its store path
6e4d67a3
fix
the daemon starts again -- its fetch dispatcher keeps HTTP/1.1, where response headers survive
5bfbaaf0
fix
7 holds with trunk -- no-global-writes.test.js
039884c0
fix
shared board reads the API's /k/:token (in-process or apiOriginFor) and renders token-styled columns and cards
82dbc7a8
feat
report card share shows the link in a read-only field and says Could not create a share link on failure
40cf6c18
feat
the runner's cap follows the worker's sessions setting, read at every board pull and bounded by the machine's room; a raised cap opens lanes mid-pass
bc98f66d
fix
Designed CI tab at every width holds with trunk -- run-pull-board.test.js
d5e9ed7f
refactor
Designed CI tab at every width
8e7004f1
refactor
Designed CI tab at every width
9264338d
feat
CI tab token-only and wrapping at 320: quiet sans hints, named panel regions, inset cards, reported audits shown
7b1d3bc8

v15.0.0September 29, 2026+21 internal

feat
workers.sessions_setting column (0026) and PATCH /workers/:id to set it
805ab15f
feat
inline project chat is a named 'Team chat' region; message times and wait counter are snapshot-masked; empty/sending/streaming baselines at 390
1a4a096e
feat
Revoke link on a shared report card sends DELETE and shows Link revoked; list reports shared
2d79b1e4
refactor
Worker card shows sessions vs capacity
aa7e9064
refactor
Worker card shows sessions vs capacity
548b4f1b
feat
worker card reads 'Running N of M' and names free memory when it caps sessions
d2bfbbfa
fix
persona-card, chat-mockups and sidebar-collapse measure through boxOf from helpers/box
f3d39c73
fix
a remainder split from a numbered scenario is titled by what it expects, not '7'
f04a5c36
feat
style guide generated from theme.css (Tokens table: value, var() uses) and xswarm audit style runs it as evidence
47d925c8
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
3ef1560f
feat
Share button on report cards mints the /r link with Copy; shared page shows the report date
daf84844
fix
Chat shows loading until history arrives holds with trunk -- visual-repro.test.js
43db6df9
fix
report and layout specs measure through boxOf so a missing element fails by name
d931909b
refactor
Chat shows loading until history arrives
d1ba9c69
feat
chat reads Loading messages… until history arrives, connecting… until presence
0443aced

v14.10.0September 29, 2026+4 internal

feat
six project tabs share the width at phone size instead of a faded scroll; drop workspace layout badge
15625981
refactor
New Project submits once, errors inline
c594a30d
feat
New Project disables Create while pending and shows errors inline instead of alert()
45d50d28

v14.9.0September 29, 2026+13 internal

feat
failed Team chat send hands its text back and offers Retry on the same message
4dc808ca
refactor
Confirm before interrupting agents
18be8701
fix
a ticket going to staging frees its coding slot at once
f8288e3c
feat
pause and drain confirm, naming the in-flight tickets they stop; resume goes straight through
22a82651
fix
Staging toHaveValue E2E failure fixed holds with trunk -- connect-pair-integration.test.js, entry.test.js, visual-audit-budget.test.js
bcf61811
fix
login specs follow the Sign in with GitHub button; the cancel spec marks the callback redirect UNMEASURED on localhost when /api is staging's older API, as the feature commit said it would
1b9b1901
fix
Staging toHaveValue E2E failure fixed holds with trunk -- run-pull-board.test.js
18dd0ebd
feat
sign-in errors name the fix -- callback forwards GitHub'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
0c91166d
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
4a1f9364
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
54dee3e4
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 'share'
8eb2a537
fix
the project filter is named "Filter projects" so it can be found by its label
828c4631
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
72a97245

v14.8.0September 29, 2026+6 internal

fix
About page names its creator holds with trunk -- visual-audit-budget.test.js
af03a2b0
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
c443b48d
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
9d7bbec5
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
e8e38265
feat
homepage title names what xSwarm does -- Run Parallel Claude Code Agents From One Dashboard (59 chars)
56f873a8

v14.7.0September 29, 2026+4 internal

feat
internal-process docs are unlisted on /docs and the sidebar, noindex, and filtered from the sitemap via one INTERNAL_DOCS list
47d7af63
refactor
Next read and waitlist on mobile posts
a1800aa5
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
bf75d74e

v14.6.0September 29, 2026+2 internal

fix
workspace header reads Relay unreachable when the ticket is refused or the relay socket closes, instead of Connecting... forever
06265f59

v14.5.0September 29, 2026+5 internal

fix
/dashboard/live keeps its header and toggle outside the grid view, so Grid View stays visible over the open workspace
80dd63d4
fix
/dashboard/live stores the workspace toggle state and WorkspaceView reads it on mount, so an early click is not lost
88e0c270
refactor
Visual snapshots match staging
7731b45e
feat
--rebaseline drafts one standard ticket per regression route and files it via xswarm task file, printing id and route
ff0e98ff

v14.4.0September 29, 2026+3 internal

fix
Dev-server-warm E2E fits staging latency holds with trunk -- e2e-route-fetch-guard.test.js
b100b463
fix
passThrough asks the origin for gzip/br, not zstd Playwright cannot decode, and drops Firefox's page Host
6fdf6d48
fix
dev-server-warm pass-through asks staging for gzip/br, not the zstd Firefox advertises and Playwright cannot decode
0d130a19

v14.3.0September 29, 2026+2 internal

fix
Billing page E2E matches Stripe state holds with trunk -- visual-audit-budget.test.js
5a88d65f
fix
on narrow screens the Pro card leads so Upgrade to Pro is inside the viewport
357f42f8
fix
billing plan cards are named articles so the Free card's Current Plan is addressable
27d323c0

v14.2.0September 29, 2026+5 internal

fix
firstProject resolves the account's first project, or skips as UNMEASURED; the hub specs open it
66a2dd1b
feat
Staging not.toHaveText E2E failure fixed
9b652f57
fix
the hub specs open the account's first project from listProjects, not the hard-coded a53dd66f
1c11f844
feat
boxOf waits for visibility and names an element with no box; chat specs measure through it
5f8355fe

v14.1.0September 29, 2026+3 internal

fix
No self-pointing avatar images holds with trunk -- avatar-no-self-src.spec.ts
7aafc38c
fix
No self-pointing avatar images holds with trunk -- dashboard-handle-field.test.js
493de861
fix
avatars drop src="" and carry width/height 32; src is set only when the account has an avatar_url
c8464da0

v14.0.0September 29, 2026+4 internal

refactor
Large deploy screenshots upload
fe0b7e3a
fix
store deploy screenshots as a raw BLOB so 1.5 MiB fits D1's 2,000,000-byte row
12ec9568
fix
workers strip wraps and fills the status row instead of pushing <main> sideways at 768px
c7e9854f

v13.37.0September 29, 2026+2 internal

fix
Staging E2E toHaveCount failure fixed holds with trunk -- task-project-gate.test.js
94af7dc8
fix
Live Activity fetches the ticket fallback alongside the backlog, keeps it when /api/events fails, and names its region
ee56a93d

v13.36.0September 29, 2026+4 internal

feat
Sessions section on /settings with a Sign out all devices button that POSTs /api/auth/logout-all and shows the outcome in view
1dc49100
fix
QA session token passed to auditors via XSWARM_USER_TOKEN env, not --token argv
75153956

v13.35.0September 29, 2026+4 internal

refactor
Plan-page E2E reads staging's JSON
125c82ef
fix
fetchJson asks only for gzip/deflate/br; room-summon reads the project through it
97c25c51
refactor
Hero headline paints without jumping
e366d054
fix
hero fallbacks tuned to rendered widths, unhinted tagline, metric-matched Share Tech Mono for the waitlist button
3b069ca0
feat
preload Orbitron on / only and give the hero a metric-matched Orbitron fallback
0d5feebd

v13.34.0September 29, 2026+30 internal

fix
wrap staging pass-through in try/catch in three e2e specs so a closed page cannot throw 'response disposed'
62d19727
feat
the BA answers what it can of a waiting ticket -- partly done, merged into a feature, or planned
db552973
fix
the gate keeps the whole test run when tests fail, and says where
5f93e321
feat
planner prompt includes the index's planning principles before the ticket standard
31f59dba
fix
middleware drops its own /api list and defers every /api call to the API's area guard
7a79aae8
feat
setup-secrets pushes every secret to the web worker and the API worker
c0a80eb2
feat
development audit asks for proposals replacing hand-rolled code with native Astro/Cloudflare mechanisms
a069b278
refactor
UI tickets run before other work
0b31a9c0
feat
queueOrder ranks bug, then UI (isUiTicket), then the rest, above priority
e55dc887
refactor
Retrying project list in dashboard specs
8522147a
feat
dashboard-live, chat-history, board-card-face and board-card-delete list projects via retrying listProjects
1a5f34a5
feat
coding prompt gets a PRINCIPLES section read from docs/principles/index.json
dce8b575
refactor
Tests find UI by accessible name
bc9739e4
feat
a UI ticket's TESTS section tells the coder to locate elements by accessible name
6d055073
feat
the team-chat popup splits voiced replies and publishes its speakers, so the roster marks who spoke there
88bd06b7
refactor
Signed-in areas, not route lists
b6012764
feat
site pages are gated by signed-in areas (lib/auth-areas.js), not a bare startsWith prefix list
2939962e
feat
Plan's meeting moves into the team-chat popup; a roster summons opens it and asks there
6a049de7
refactor
Pipeline-only tickets skip browser E2E
171f41ea
fix
the entry-point gate accepts a test that spawns the script by a path built from its own directory
855cebb1
feat
runLocked records a zero-test pass when no browser surface imports the change
e0cbf087
fix
board-card-face finds the serial stub by its title, not by ref text the unnamed name slot now also prints
75136681
feat
an unnamed ticket is called by its ref, not words made from its title
c39bedf7

v13.33.0September 29, 2026+10 internal

fix
Printable shared report page holds with trunk -- public-surface-fetches.test.js
8416b7d6
feat
printable shared report page at /r/<token>, noindex, share link points to it
eaec799a
feat
framework-first rule is an owner decision planners read
d5f03b7b
feat
Plan page shows the team chat popup with context_ref architecture
a4e52702
fix
Subscribable blog feed holds with trunk -- layout-head.test.js
9266eedd
refactor
Subscribable blog feed
04e62038
feat
/rss.xml feed via @astrojs/rss, advertised in /blog head and linked as an RSS pill
b0cfa0fb

v13.32.0September 29, 2026+7 internal

refactor
Lighthouse floor at 99 in every category
115e4c41
feat
lighthouse hard floor is points below 99 in every category, performance included; --min-score / LIGHTHOUSE_MIN_SCORE; gate parses it via lighthouseResult
668f5784
refactor
Request shows queue place and real status
3637840d
feat
GET /api/requests/:id returns queue position and derived status from the ancestry cache
2d2ff560
fix
logo stops cycling to 'npx xswarm'; tutorials point to the alpha invite instead of npx
1f4a1d4b

v13.31.0September 29, 2026+23 internal

refactor
Honest worker names
9a06f0ab
feat
fleet:worker-names counts and names staging/preview workers on production hosts
3b5a7dfc
feat
/connect/pair emails the owner naming the machine; a mail failure is audited, not fatal
02c762ef
fix
auth.js resolves ~/.xswarm/config.json per call instead of freezing it at import
457e5139
refactor
Install proves git access by cloning
1ccb020a
feat
install clones to prove git access and exits 1 when it cannot, or when credentials fail
9a37d1fe
feat
Preview ↗ link to the studio beside Open → on every project row
966f98c5
refactor
UI changes jump the queue and ship immediately
5de3117e
feat
a landed ticket touching packages/web/ skips the release window and critical-path deferral, as an urgent fix does
d4bf97e4
fix
an owner's answer that drops the work closes the ticket instead of planning it
1ef7ab4d
refactor
Requirements capture pipeline: conversation to task
6625bb56
feat
foreman DECISION lines are appended to decisions.md, hidden from the owner and confirmed in the reply
6fdabb0c
fix
thread-delivery setup lists projects via listProjects, which retries a dropped socket up to 3 GETs
2444a0ef
fix
ready tickets start without waiting for the board sweep
daaad836
fix
a release rides out a network blip at the migration step instead of dying on it
3357d07c
refactor
BA triages owner-waiting tickets
43bc73e8
refactor
BA triages owner-waiting tickets
a7152feb
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
57ed325c
refactor
No name until a ticket is submitted
eb1d0fec
fix
a ticket held on an open blocker is unnamed on read and filed without a name
6e8e0c9e
fix
Ticket names in readable camel case holds with trunk -- entry.test.js
12f054aa
feat
print ticket names as stored, each later word leading with a 1.25em capital
1851f9c0

v13.30.0September 29, 2026+4 internal

fix
pullTasks imports the board's test_results.name; planOne keeps a name the ticket already has
270fc5e2
fix
criteria merged into a ticket on the board after the runner pulled it reach the planner
8b1914bb
fix
a critical path red across more than 10 spec files gets no fix pass
1f5ca5db
refactor
Unique ticket names
805d247c
feat
name every open ticket uniquely -- on POST /api/tickets, backfilled on GET /api/tasks, kept across PATCH
11f34d70
fix
brief counts tickets held on the owner's answer as waiting on you, not ready
a060db2e

v13.29.0September 29, 2026

fix
the blocker list answers with more than 100 open questions
8ac3eb43

v13.28.0September 29, 2026+8 internal

feat
runner supervisor relaunches xswarm run --watch on exit 0, wired as npm run runner
b6686a31
refactor
Runner restarts onto new code
00a59379
refactor
Runner restarts onto new code
8f0f98bb
feat
--watch runner refuses new work once its code tree moves, exits ok when nothing is in flight
6b78ac3a
fix
dedupe E2E causes against board titles without the filer prefix, and treat the deployed column as closed
505d67e1

v13.27.0September 29, 2026+6 internal

feat
GET /tasks?cwd= resolves the checkout to its project via resolveProject, 404 when none
2f479111
refactor
E2E failures filed as questions
b5fa44b9
refactor
Runner imports tickets awaiting Chad
1139bd5c
feat
each staging E2E failure is filed via POST /api/tickets as an incomplete ticket waiting on a fix-or-flaky question
edad6468
feat
the runner imports a ticket below the standard that carries an open blocker, held waiting on the owner
acb92e71

v13.26.0September 29, 2026+2 internal

fix
a scenario the planner's rewrite drops without declaring it is filed as its own ticket
5fa1b5ba
refactor
Incomplete tickets carry a question
21344af7
feat
a titled ticket below the standard that carries a valid blocker is filed into Planning with its question as an open blocker
7374c9f6

v13.25.0September 29, 2026

fix
a ticket the planner found already delivered is a no-op, not a ticket that did nothing
741f4459

v13.24.0September 29, 2026

fix
the deploy-path scan skips Vite's dependency cache, which a dev server rewrites mid-walk
ccceb76f
fix
the entry-point gate never demands a test that deploys or restarts for real
9ded7663

v13.23.0September 29, 2026+2 internal

refactor
Gate names untested entry points
6db5c459
feat
the fast gate hard-blocks a changed package.json entry point no test spawns
33c0926c

v13.22.0September 29, 2026

feat
each ticket records, in shadow, the critical specs System One would choose and what it would miss
2fcead0c

v13.21.0September 29, 2026

feat
each release records, in shadow, the test set a batch-scoped run would choose and what it would miss
d2ee30d8

v13.20.0September 29, 2026

fix
releases restart the daemon by the name the CLI registers it with
a6ed801b

v13.19.0September 28, 2026

fix
npm run brief runs again -- flakyLine is hoisted, and a test runs the real script offline
527e6ba6
fix
a candidate fix records which files it targeted
8412f7ee

v13.18.0September 28, 2026+2 internal

fix
Flaky specs counted in brief holds with trunk -- task-dispatch.test.js
6905e49b
refactor
Flaky specs counted in brief
7eaf7a83
feat
brief prints a flaky line summing evidence.e2eFlaky over tickets started in 24h, top three
5b672a48

v13.17.0September 28, 2026

fix
candidate fix-in-place also covers root-level test files (quality/, scripts/)
22e95e7f

v13.16.0September 28, 2026+6 internal

refactor
Per-aspect ticket review
e700cd3d
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
b3455f87
refactor
New tickets merge into planning twins
ea5bd22b
refactor
Gate names every failing test
e5ae6814
feat
POST /api/tickets asks Jev for an open Planning twin and merges the new scenarios into it, else files marked unjudged
0d8a751b
feat
failuresIn names vitest's × lines under a ❯ file and runAll's SUITE FAILED lines; the gate's note comes from failureNotes
70babd0b

v13.15.0September 28, 2026

feat
coding agents are told a new capability must be reachable through the real entry point, and why
f2a54e3a
fix
candidate fix-in-place is reachable -- the adapter provides it and the candidate suite names what failed
6fac9a47

v13.14.0September 28, 2026+4 internal

fix
a real ticket filed without a project is created on the board under the runner's project
c771aa0e
fix
xswarm task file submits through the ticket API, and the API keeps a ticket's type and priority
6828a0e3
refactor
Spec green without its change goes back
d921daf6
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)
52c3cbc2
refactor
Planning cost is recorded
89484091
feat
planOne sums each plan's seconds and tokens into evidence and puts this run's cost on the planned event
1d5d7938

v13.13.0September 28, 2026

feat
npx xswarm installs PM2 and a no-sudo boot service, so the worker survives reboots
e0a2bb46
feat
a ticket's own spec can run whole beside the critical path, without the @critical tag
8f19eb0f

v13.12.0September 28, 2026+6 internal

refactor
Candidates test only affected packages
74948886
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
092cd092
feat
a fix pass passes failFast, and the runner turns it into --max-failures=1
760fdbbe
feat
a red candidate naming its specs is fixed on its branch, spot-checked, and rebuilt once, up to two fixes
a1d466d7

v13.11.0September 28, 2026

perf
the idle runner re-asserts settled tickets to the board every 6 hours, not every 10 minutes
143bd919

v13.10.0September 28, 2026

feat
each ticket records, in shadow, the critical specs a surface-scoped run would choose and what it would miss
96797f2c

v13.9.0September 28, 2026+7 internal

fix
a ticket records why System One judged nothing, and which specs the fail-twice rule found flaky
46dc8f15
fix
replan sets awaitingPlan, so a ticket with an earlier attempt's commit is planned again
e23c7e89
feat
Team chat popup renders a > note as a blockquote with a 3px border-hover left rule, indented, in secondary text
ec4daf91
fix
the composer types in the reply's reading ink, so owner and Barry text stay one colour
f35f7611
fix
thinking dots keep their animation name under reduced motion -- global.css already stills them, the popup's own animation:none unnamed them
c4259eaf
feat
Team chat popup replaces the static waiting line with Barry's thinking row -- dots, a m:ss counter, and the room's chat:status step
51834e5b
feat
Barry'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
0949a63e

v13.8.0September 28, 2026

feat
a replan decision returns a ticket the pipeline blocked to planning, with fresh attempts
a5f23d15
fix
app tests no longer depend on the machine's free RAM
a0177727

v13.7.0September 28, 2026+1 internal

perf
npm test runs every package suite and the tooling suite at once -- 54s -> 28s
6e24e643

v13.6.0September 28, 2026

perf
the visual-audit hang test waits a 4s grace, not 60s -- the gate drops from 123s to 69s
da94c741

v13.5.0September 28, 2026

feat
System One judges the refactor on the standard's judgement rules, and the popup shows it
320a2eaa

v13.4.0September 28, 2026+10 internal

fix
a skipped spec file is recorded as not failed, so re-runs and fix prompts name only files that failed
a7635e25
feat
foreman 'Name [Tag]:' lines split into that member's own chat message; Dee [Design] joins the cast and solve roster
c9165b4d
feat
agent replies fill the chat width -- non-user .msg-body flexes to the list edge, 90% cap kept for the owner's lines
af694ff4
refactor
Board reporting leaves run.mjs
ece90f9f
refactor
Board reporting leaves run.mjs
acc5e793
feat
board reporting leaves run.mjs -- pull, gates, mid-pass report, interval and end-of-pass sweep move to task/board-reporting.mjs
994d6f1d
feat
Overview Send button sits inside a rounded message well -- grey when empty, Barry's colour with text
f833ce94
feat
foreman tickets carry a category -- asked for in the TICKET line, filed when the API stores it, else null
75b0aa89

v13.3.0September 28, 2026+10 internal

fix
a candidate that skipped its critical path records which ticket commit proved its tree
9af51184
perf
a red critical path is fixed in place by the coding session instead of throwing the attempt away
e79937c9
fix
a critical-path spec must fail twice to count -- failed spec files are re-run once, alone
6ead572c
feat
consecutive messages from one speaker form one turn — name and avatar on the first, time under the last, 0.25rem apart
f84d3be2
feat
each ticket category prints on its own paper; teal, tangerine, lime, ivory, slate stocks added
d41c532d
fix
message time is 12px in --color-text-tertiary with no half opacity, so it reads at 4.5:1 against the chat panel
e1677828
fix
room-summon checks the asked button where a person scrolls to it
8dac7017
feat
Team Chat popup set in Inter throughout, header reads Barry in sentence case
28651543
feat
empty Overview chat opens on Barry's welcome with three one-tap starter questions
86d5a589
fix
heading-spacing spec reads all four boxes in one frame, not across the arrival slide
375a7c1e

v13.2.0September 28, 2026+8 internal

feat
Team Chat popup trades cyan rules for neutral hairlines and a lifted header
7e223a99
feat
chat header shows Barry's avatar, a calm reply-font name and Foreman · presence beneath
d5917bb9
feat
Readable chat composer text
e154741e
feat
popup Send is a round Barry-coloured button inside a rounded composer field
7c0fb8e0

v13.1.0September 28, 2026+7 internal

feat
'>' lines in a chat reply render as a blockquote: left rule in --color-border-hover, indented, secondary text, marker dropped
874e1e43
fix
dev host drops X-Frame-Options and allows framing by xswarm.ai via CSP frame-ancestors
480323e3
perf
a merge candidate no longer waits out a production release before testing
deb6ed09
perf
a merge candidate whose tree the ticket already proved green skips its second critical path
bcfaed17
feat
the refactor is scored against the refactor standard, per rule and in total, and the popup shows it
7d7ddcd5
fix
(quality) function spans start at the body brace, so a destructured parameter no longer hides a long function
f026ba7f
feat
the fresh refactor session is handed the full diff of the ticket, under its changed-code brief
883b8f98
fix
the Team chat names the project as soon as the header loads it, not only when the relay is down
5a68e884
feat
the refactor runs in a fresh session, handed the lines the ticket changed and the functions they sit in
08d5e6a6
feat
empty Team Chat popup greets as Barry with three raised starter-question buttons that fill the composer
6cd31ffc

v13.0.0September 28, 2026+4 internal

refactor
Project's own dev and staging links
181645f1
feat
projects store an 8-hex dev_host_id (backfilled for existing rows) and GET /api/projects[/:id] return dev_url https://dev-<slug>-<id>.xswarm.ai
8739e94d
refactor
Chat set in one elegant typeface
8aff631f
feat
chat panel set in one typeface, Inter, via a new --font-chat token; header name and composer drop Orbitron and Share Tech Mono
0d4da372

v12.30.0September 28, 2026+6 internal

refactor
Foreman announces each step
eef459fd
feat
each tool the foreman's agent calls is sent as chat:status for the reply's chat_id; the room relays it to every dashboard without storing it
b0a9a6d6
refactor
Chat frame without neon rules
748e6db3
feat
chat panel framed by surface and a neutral --color-border hairline, no cyan rules or black header/composer bars
f4576888
refactor
Reports open inside their project
08dbf942
feat
reports open at /dashboard/projects/<id>/reports/<slug> under the project header; the global URL of a project report forwards there
dac8052e

v12.29.0September 28, 2026+6 internal

feat
the thinking row shows the room's chat:status step in place of 'is thinking', each replacing the last
8846be29
refactor
Proposals awaiting approval on Overview
8bd34d2d
feat
Overview panel lists unplanned audit proposals under the blockers; Approve plans each as one ticket
42536f08
fix
refactor, design, foreman, planner, audit and stop-hook prompts give the why for each rule
9ec89957
fix
agent prompts give the why for each rule, and stop contradicting the coding prompt on committing
5aa24b2b
fix
every board report carries the live feed, so a running card stays in Refactoring instead of falling back to its evidence column
5c73d625
feat
the ticket popup says why a refactor changed nothing, from the agent's Applied/Not applied lines
3e70e328
fix
a critical-path refusal carries the first failing test's error, not just its title
eade4926
refactor
Audit report shows what became of each finding
5e3b2dd7
feat
DocumentReader matches an audit's Work items to the project's tasks and requests and shows Fixed / In progress / awaiting approval per finding
65635114

v12.28.0September 28, 2026+4 internal

refactor
Popup replies read as documents
e731d48d
feat
popup replies are full-width borderless documents in --color-text-primary; Chad's message is a right-aligned surface-hover bubble
c49508f2
feat
an empty chunk keeps Barry's thinking row up, now named and timed m:ss
213f5bb6
fix
the runner sweeps leaked temp caches hourly, reaps orphaned vitest workers, and brief warns when /tmp fills
30df3d34

v12.27.0September 28, 2026

perf
one agent session per ticket -- design is decided in it, the refactor continues it
ee6a9ea1
fix
dev servers and Vite runs keep their temp files in the tree they belong to
3da03522
fix
each coding agent's browser runs get their own dev port
9c036155

v12.26.0September 28, 2026+2 internal

feat
the foreman voices the personas itself, with an example of the shape
ef022eb1
feat
the foreman groups similar changes, orders bugs first, and brings the team in
4f6a9b6f
fix
the stop hook no longer asks coding agents for evidence only the pipeline writes
c79d2bbe
feat
chat reply headings at 1.3em, blocks 0.875em apart, 1em above a heading
655441d7

v12.25.0September 28, 2026+7 internal

refactor
Card status says what is happening
036584a9
feat
card status line prints step minutes, refactor delta, and a shipped ticket's release and size
48ab9f11
refactor
Code report in the ticket popup
b8caf80e
feat
every ticket records what its code amounts to after coding, refactor and push
1c76155e
fix
a planner refused an agent slot spends no plan
7b560ea4
fix
the planner takes a reserved agent slot, not a coding agent's
c2349c6e
feat
the ticket popup has a Code section -- feature size and what its refactor improved, from test_results.code
f351a342
feat
every ticket records what its code amounts to after coding, refactor and push
2f5fef70
fix
a planner refused an agent slot spends no plan
02e15a90
refactor
code blocks share the inline-code tint instead of a second colour literal
5a22e035
refactor
Chat code blocks keep their layout
7616b73c
feat
chat replies render ``` fenced code as a monospace block that keeps its lines, fences hidden
e1d3030c
fix
the planner takes a reserved agent slot, not a coding agent's
e8c7fd28

v12.24.0September 28, 2026+4 internal

feat
a mockup thumbnail links to a blob page that shows it sandboxed in its own tab
61716a72
feat
chat Markdown tables render as a real table that scrolls sideways within its bubble
1e301756

v12.23.0September 28, 2026

fix
a generated file no longer sends the critical path to btrfs, and a skip says why
e947a457

v12.22.0September 28, 2026

perf
a ticket's critical path no longer waits out a ship
62f4fd2a

v12.21.0September 28, 2026+4 internal

refactor
ChatPopup unit test mock room reports the relay as down (isOpen)
4873abb8
fix
Team chat popup hands a live reply over to its history row and polls history only while the relay is down
8302f2bb
refactor
Report PDF body pages
09827f8b
feat
report PDF body pages typeset the markdown -- bold headings, findings as severity/title/detail lines
116400b8

v12.20.0September 28, 2026

fix
a new e2e spec without an @critical test is caught in the quality step
12f61f5b
fix
the board is reported while a pass works
4a027fb4

v12.19.0September 28, 2026+4 internal

feat
report details render markdown (marked + DOMPurify) with styled headings and tables
9e66637f
feat
Reports tab drops the quality-check panel so report cards lead the page
efed0610

v12.18.0September 28, 2026

feat
an e2e-only ticket's spec is run on trunk, to see it fail (shadow)
d0e277f9

v12.17.0September 27, 2026+6 internal

refactor
Report cards lead with their score
c362f411
feat
report cards lead with the audit name and its score, Unmeasured never 0
6d1086bf
refactor
Chat tickets keep their type
309b2738
fix
foreman files a chat ticket with its drafted type (feature
a9133852
refactor
Report PDF downloads as a real file
422d755d
feat
a report card's PDF button downloads a designed PDF built in the browser instead of printing the dashboard
99f7809d

v12.16.0September 27, 2026+4 internal

refactor
Audit PDF downloads as a real file
8aa6bdf0
feat
Download PDF on the audit panel saves a real PDF report instead of printing the dashboard
56ff451e
fix
the watching runner actually refills its slots
9883b40b
refactor
Report cards show real page previews
eb04f808
feat
report thumbnails show each report's kind and title on a page cover instead of identical ruled lines
228ee4b5

v12.15.0September 27, 2026+4 internal

feat
chat replies render [text](url) and http(s) URLs as links; the floating Team chat renders reply markdown
4636ee19
fix
a slot that finishes with nothing ready keeps looking, and a drain is seen mid-pass
fff291b2
refactor
fold the duplicate stream test's result assertion into the delta-order test
a112dea3
feat
executor passes on text_delta stream events under { partial: true }; foreman asks for them
c9448190

v12.14.0September 27, 2026+7 internal

refactor
ChatPopup unit tests stub the relay room so its ticket POST stays out of the REST fetch mock
7399e857
feat
Team chat popup joins the project relay room and streams foreman replies into one bubble per chat_id
b72f1819
fix
team chat reply text set at 1rem (16px) instead of 0.875rem
51af39c3
fix
svelte-check generates Astro types in a fresh tree instead of failing it
ab027dc9
refactor
Formatted replies in team chat
92a96020
feat
team chat renders reply markdown (headings, lists, bold, italic, code) as elements
66deff99

v12.13.0September 27, 2026+4 internal

refactor
svelte-check regression was ungenerated astro types in the worktree, not code
a520d313
feat
the room hands the foreman the recent conversation with each chat:message; Barry's prompt shows it above the owner's message
a4e73d0c
refactor
svelte-check regression was ungenerated astro types in the worktree, not code
f52fc2ce
refactor
No raw ticket JSON while streaming
c2cecdba
fix
the quality pass shows under Refactoring on the board
e75b90f1
fix
a slot left empty keeps working while the other ticket runs
2fbcfeb2
feat
foreman holds a streamed line that may be a TICKET line and drops it whole if it is
bceff787

v12.12.0September 27, 2026+5 internal

refactor
svelte-check regression was ungenerated astro types in the worktree, not code
3be0a717
fix
threadpool test parks pool threads on FIFOs instead of timing CPU work, so load cannot flip it
1663f054
feat
foreman starts a preview the cloud reads as starting and reports it running or stopped
b936ce74
refactor
Dev server warms when a project opens
304e2dd6
feat
opening any project tab warms its dev server with one shared start request
068b7cd1

v12.11.0September 27, 2026

fix
the CLI runs with a 16-thread libuv pool, ending the board-read timeouts
93beeffd

v12.10.0September 27, 2026

fix
a failed board read says how long the runner's event loop stalled
a1034c7f

v12.9.0September 27, 2026+1 internal

fix
upstream currency drift no longer turns every merge candidate red
b2a14970
feat
every failed attempt goes to the decision API as failure-triage, in shadow
c03cfeb2

v12.8.0September 27, 2026

fix
a choice answers as probabilities, and the SEO judge asks one Jev accepts
27482f30
fix
the Decision API speaks Jev's real request shape
63df8655

v12.7.0September 27, 2026+2 internal

feat
the quality step runs the unit tests beside the change
b5b26356
feat
the replay harness, and every start records the board it was decided on
7caccef5
refactor
restore svelte-check baseline by generating Astro types
71ece073
feat
the thin-CLI runtime fast-forwards its checkout on the server's word
45763797
refactor
Link candidates from page copy
654ec639
feat
link candidates from <main> copy matched against other pages' title and H1 runs
fa1d8a1b
fix
the room's welcome carries the sha it runs, not "dev"
6aaea482

v12.6.0September 27, 2026

perf
the critical path runs from a ram-disk checkout of the sha it certifies
5fe0574e
fix
a board that cannot be read names the network cause
298b67a3
fix
the runtime socket passes the relay's upgrade allow-list
9f15fde2

v12.5.0September 27, 2026

fix
a release waits for a critical path in progress, up to 15 minutes
1ddd9cba
feat
the server shadows ticket selection on every runner start
a3bbe8d9

v12.4.0September 27, 2026

feat
sync sends the board everything ticket selection reads
d1c7f240
feat
xswarm runtime connects to its room as a thin runtime
5647d802

v12.3.0September 27, 2026

feat
the project room answers the thin-CLI handshake
decab7b6
feat
thin-CLI runtime executes protocol actions, guarded and idempotent
19109511

v12.2.0September 27, 2026

feat
thin-CLI protocol v1 as shared, pure code
d08fb91a

v12.1.0September 27, 2026

refactor
delete five CLI modules nothing references
b41cfa52

v12.0.0September 27, 2026+4 internal

refactor
svelte-check regression was ungenerated astro types, not code
cd667b18
refactor
SEO audit judges every page
c60383fa
refactor
svelte-check regression was a missing astro sync, not code
954897e8
feat
seo audit --judge asks the decision API four questions per sitemap page, grouped by cause
9678041e
refactor
Decision API on xswarm.ai
4a68bbdb
feat
POST /api/decide calls Jev with a 1500 ms cutoff, falls back to defaults, logs to decision_log by state hash
9a46953c

v11.6.0September 27, 2026

feat
the refactor standard asks for functionally descriptive names
28f39f18

v11.5.0September 27, 2026

fix
the stop hook applies only to xswarm coding agents
4dfeb421

v11.4.0September 27, 2026

fix
root vitest excludes node_modules at any depth
c49d35c2

v11.3.0September 26, 2026

fix
a touched package runs its whole unit suite in the task tree
1cf65203

v11.2.0September 26, 2026

fix
a failed deploy screenshot is said in the deploy output
0a59fbae

v11.1.0September 26, 2026

perf
the release suite budgets browser workers from free memory
b3c6d6cc

v11.0.0September 26, 2026+6 internal

refactor
restore svelte-check to 5 warnings, 0 errors
1f9b7436
refactor
Deploys upload site screenshots
88be0648
feat
web deploys PUT a 1280x800 JPEG of staging/production; a failed capture is a screenshot-failed event
68e6d0c7
fix
a narrowed ticket files what it leaves out
e80a9989
refactor
move deploy screenshot routes out of projects.js to keep it under the 500-line limit
f13fbcfd
refactor
Deploys capture site screenshots
37fd2c90
feat
deploys store a site screenshot per environment -- PUT/GET /api/projects/:id/screenshot/:env (migration 0022), advertised as screenshot_url on deploy_targets
88499ad7

v10.3.0September 26, 2026+1 internal

fix
environments box is one small card at the foot of the Overview rail
56aa2d55

v10.2.0September 26, 2026+4 internal

refactor
Environment card shows a screenshot
1f5e819b
feat
environments card shows the deploy's screenshot in a 16:10 frame, and the site host beside live
74d139d5
feat
attach a chat mockup to a planning ticket; its board sheet shows it sandboxed
873354d4

v10.1.0September 26, 2026

fix
a ticket's critical path waits for a ship in flight
7a1eb663

v10.0.0September 26, 2026+5 internal

refactor
svelte-check regression was missing generated Astro types in a fresh worktree, not code
83139ab3
refactor
svelte-check regression was missing generated Astro types in a fresh worktree, not code
0d177dd2
refactor
Agents file full tickets by API
7d45b66a
feat
board tasks store the agreed mockup (migration 0021, POST/PATCH accept it); category test no longer breaks on later columns
cb99baa5
feat
board mockup carried into the local store and the coding prompt
d2b2c460
feat
POST /api/tickets files a full ticket into planning, 422 with named defects below the standard
d1654072
fix
planner catches the checkout up to trunk before judging done-at-HEAD
14548b18

v9.13.0September 26, 2026+4 internal

refactor
svelte-check regression was missing generated Astro types in a fresh worktree, not code
1f800234
refactor
Keyword value in the SEO audit
981eae76
feat
SEO audit prices project.yml keywords via DataForSEO (volume, KD), unmeasured without credentials
44272383
feat
chat replies render ```mockup fences as sandboxed thumbnails with a large hover view
4370ccac

v9.12.0September 26, 2026+4 internal

refactor
svelte-check regression was ungenerated Astro types, not code
ae1a8940
refactor
SEO audit maps internal links
db3ae17d
feat
SEO audit maps internal links -- depth, inbound count and anchors per sitemap page, orphans as issues
89889a61
fix
(live) the card goes back and forth between Coding and Testing as the agent works
559ab764
refactor
svelte-check regression was ungenerated Astro types, not code
201a3db7
refactor
Cancel a ticket in flight
3bce5b98
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
b3e842cd
fix
(overview) the status strip keeps its size while it loads -- a layout shift made the 390px chat spec flaky
70a25c52
feat
(board) a large readable ticket sheet, brief tickets in Planning, a GitHub link, and a countdown on the current cadence
6eb459a8
fix
(api) xswarm.ai's own icon is read through the asset binding -- it lost its icon to a self-fetch
b532c78c

v9.11.0September 26, 2026+2 internal

feat
(ui) generated reports render as document cards -- page thumbnail, title, date, one-line summary, details and PDF
8fead110

v9.10.0September 26, 2026+6 internal

refactor
Persona cards on chat avatars
ab0927a7
feat
(chat) hovering or focusing a speaker avatar shows a persona card -- sketch, name, role, expertise -- clamped inside the viewport
82090d3a
fix
(ui) no project Workers tab (workers are account-wide), a "Plans" tab, and a Tickets page stacked as work flows
998b30dd
fix
(ui) tickets lose the pin graphic
10a19748
fix
(plan) reader text scales with the screen in an 80-character column -- no third of the page left empty
98e7172a
fix
(test) the project-routes fixture list names the new workers page
4785da69
refactor
workers page loads its header with the short plan-page idiom, ending the duplicated script block
24d7f029
refactor
Workers tab with machine cards
b53c395c
feat
(ui) a Workers tab in the project -- one card per machine with cores, RAM, CPU and memory meters and its running ticket
66f219ec
feat
(ci) release settings are narrow cards side by side, label left of its controls
8a7c167a
fix
(cli) a flag's value is not a ticket's title
8d1ce618

v9.9.0September 26, 2026

feat
(plan) the Plan page is a reader -- sticky index, the document at full height, no leaked front matter
a27574a1

v9.8.0September 26, 2026+2 internal

feat
(ui) tickets named for their purpose, a proper tickets list, and a readable chat
9706d7b6
fix
(ship) staging reports what it serves -- the Staging tab showed a build from September 12
64034e7b
refactor
(ui) the embossed label plate is theme tokens, not colour literals copied into three components
6a11c22e
feat
(publish) a stage-audit finding that holds the release files one urgent fix ticket per file:line
b519b966
fix
(sync) a ticket not yet on the board is not "deleted on the board" -- only a ticket the board has shown us
e6aad690

v9.7.0September 26, 2026

feat
(ticket) xswarm task file -- a ticket filed to the standard, refused below it; the skill's submit path
7d852e32

v9.6.0September 26, 2026

feat
(overview) a compact status strip above a BA-led meeting, and a Tickets box the discussion fills
7359a370

v9.5.0September 26, 2026

fix
(ship) the stage audit retries its network calls and holds with a reason -- a blip crashed the 20:40 ship
6a733509

v9.4.0September 26, 2026

feat
(tickets) the Tickets page is three vertical sections of ticket objects -- planning, in development, deployed
0811b82c

v9.3.0September 26, 2026

feat
(planner) escalate the model only to re-plan a struggling ticket -- implementation stays on the default
d6da6aa3
fix
(ui) panels are distinct objects, not black boxes -- a bezel, a raised header strip, content one step up
3eeebe66
feat
(board) a void ticket is red stock, and Delete sits in the ticket sheet's header
c81d3651

v9.2.0September 26, 2026

feat
(release) the CI page's cadence governs the runner, and continuous is one of its choices
6a1fe65e

v9.1.0September 26, 2026+2 internal

feat
(board) the Staging column counts down to the next push to production
34f4b63a
fix
(agent) ticket workers run the default Claude Code model on every attempt -- no escalation to Fable
f5c9cf21
refactor
ticket stamp inks are theme tokens, not colour literals
9e244484
refactor
Planning card opens details to delete
8e8567f1
feat
(board) a Planning ticket's sheet offers Delete -- confirm, DELETE /api/tasks/:id, card gone
f672f4f3

v9.0.0September 26, 2026+6 internal

fix
(ship) ignore the stores' SQLite journal -- a mid-transaction journal held the 18:59 release
d6b20d98
feat
(ship) a partial audit on staging before production -- a release is held on a finding in what it changed
21ab0131
feat
(publish) a 10-minute release window from the first landing -- later landings wait for the next
89a032e7
feat
(tickets) the Tickets page is a ledger of ticket strips -- coloured stock, perforated dividers, the name on the stub
7c1ceb4e
feat
(board) tickets are real roll tickets -- torn stock by kind, a name in worn ink, stub punches, click for the sheet
13db373c
feat
(planner) the BA gives every ticket a one-word name people can say
303e8f45
refactor
svelte-check regression was a missing astro sync, not code
a17fe84e
feat
pullTasks cancels an unstarted pending ticket its project's board no longer returns
5838c728
fix
CI explanation and ticket title cells set font-sans, overriding the panel's Share Tech Mono
5657dc87
refactor
svelte-check regression was a missing generated .astro/types.d.ts -- astro sync restores 5 warnings, 0 errors
f6193e28
refactor
Tickets carry a category
b3f211fb
feat
tasks carry a category -- column, migration 0020, POST validates it against the schema enum
1247cb1f

v8.3.0September 26, 2026+2 internal

fix
(merge-queue) a red trunk is not the ticket's fault -- re-run the named test at trunk before recoding
6078bef6
refactor
TITLE_MAX is file-local -- drop the unused export the elegance gate flagged
6ed33148
fix
dimmed green on CI, Overview and Tickets tabs uses --color-text-quiet (4.5:1+)
d270ba74
fix
(board) restore the #ref serial and pin ticket stock in the unit test -- 86b01d44 left trunk red
131fb165
docs
(decisions) owner may delete an unstarted ticket; short titles; six tabs
8e296f34
fix
(tabs) six project tabs -- no Studio or Planning; the Overview opens Studio in its own browser tab
934996a9
feat
(board) cards are printed ticket stock -- cream paper, letterpress ink, perforated stub with the serial
86b01d44

v8.2.0September 26, 2026

feat
(ticket) titles are short outcome phrases, <=40 characters -- the behaviour lives in the scenario
9954c080
feat
(planner) the BA asks the owner -- an unclear ticket becomes a blocker on the Overview and waits for the answer
b927122c

v8.1.0September 26, 2026+6 internal

fix
Reports KPI labels, meta line, buttons, delta and trend tags use --cd-size-caption (12px)
9e2e83cf
refactor
Board columns and cards are distinct surface steps, not outlines
54df1b87
feat
board columns sit on --color-surface and cards on --color-surface-hover, with neutral edges and a secondary-ink count
320f31b3
docs
(decisions) amend 0003 -- local dev talks to the staging API, not wrangler --local
5d33b12e
feat
(release) a release cadence per project, an urgent fix ushered through, and a hold while one is in flight
9ef32526
refactor
Dashboard panels sit on a visibly lighter surface than the page
89277b21
feat
panels sit on --color-surface with a neutral --color-border edge; footer box keeps its green
efacc7e4

v8.0.0September 26, 2026+7 internal

refactor
The CI page sets how often production releases and which audits run on s
61ec83c0
feat
the CI page saves release cadence and staging audits per project
8c6f9034
feat
blockers carry task_id and the list returns each blocker's ticket
5e9d881f
feat
blocker card leads with its ticket, then the question, and takes a typed answer
211695f2
docs
(style) a readability direction -- surface steps, sparing green, sans for prose
3da83391
feat
(planner) every new ticket is planned once -- quality, a terse title, and no duplicates
77cb9c1e
feat
drop PostHog script and env; platform analytics page points to Cloudflare Web Analytics
df87a5af
feat
(audit) the SEO audit reads what visitors do from Cloudflare's edge, not PostHog
1670c347

v7.0.0September 26, 2026+2 internal

refactor
svelte-check regression was ungenerated Astro types, not code
bd97aa68
refactor
Every 404 is counted with the site that linked to it, for the SEO audit
52825564
feat
(not-found) the site reports every 404 page, with its Referer, to the API 404 log
31e4402f
feat
(not-found) the 404 log -- public report by host, owner-only 7-day read, guarded as one /api area
a733b4f2
feat
(audit) the SEO audit reads the 404 log and the analytics; the five qualities are its to assess
0d92c138
docs
(audit) the On-page SEO audit owns the five qualities and reads what visitors do
39ebc9f2

v6.9.0September 26, 2026+1 internal

fix
(foreman) a heartbeat, so a socket that dies without a close is reconnected
2f0ba0ad

v6.8.0September 26, 2026

fix
(deploy) the post-promotion verdict waits three minutes for the release to read back
d2745ef9

v6.7.0September 26, 2026

fix
(deploy) key the release exactly as the workers stamp their sha
ed81020b

v6.6.0September 26, 2026

fix
(deploy) wait three minutes, not one, for the release to read back after minting
57010cf3

v6.5.0September 26, 2026

fix
(deploy) record the release under the short sha the workers stamp
40918ba1

v6.4.0September 26, 2026

fix
(deploy) a failed ship's reason keeps the error whole
64c98295
fix
(deploy) an accepted identical build is judged as the promoted sha, and its release recorded against it
984dd4d8

v6.3.0September 26, 2026+2 internal

fix
(deploy) 'identical code' means everything outside the web bundle, not only tests
d9a615fc
fix
(deploy) a push that changed only tests is live when production serves identical code
1f80edc4
feat
The dashboard spec finishes in under 12 s of the critical path
940f7752
fix
dashboard.spec.ts loads each page once -- 19.2s summed to ~5-6s
74be2994

v6.2.0September 25, 2026+2 internal

fix
(audit) a security exposure is always a ticket, never a proposal
51b64a57

v6.1.0September 25, 2026+7 internal

refactor
svelte-check regression was ungenerated .astro types in a fresh worktree
b33a0228
fix
/test/account admin:true requires the staging SUPERADMIN_KEY as Bearer, refused before insert
e38c22e5
fix
(test) release-label score tests inject prsFor instead of shelling out to gh pr list
2e588e00
refactor
svelte-check regression was ungenerated .astro types in a fresh worktree
346d74ca
refactor
A /dev-login link cannot set a cookie on any other domain or path
6dcfe139
fix
/dev-login only on ENVIRONMENT staging; tokens with cookie-attribute characters are 400
d3e55e08
refactor
svelte-check regression was an unsynced worktree, not code
ffb505f0
feat
HSTS, nosniff, Referrer-Policy, X-Frame-Options on SSR pages, prerendered pages and the API worker
208c950e

v6.0.0September 25, 2026+8 internal

refactor
svelte-check regression was an unsynced worktree, not code
43221c1a
refactor
svelte-check regression was a missing astro sync, not code
8f6b5d4b
fix
/test routes verify the session token HMAC instead of trusting its payload
bf3544a3
fix
dev proxy drops Set-Cookie from box responses
58ec4d5c
fix
tickets-retry spec advances page.clock past the 5 s retry instead of waiting 20 s of wall time
6e64dae1
refactor
give github_installations a write path -- POST /api/github/installations records an installation only when GitHub reports it on the caller's own GitHub login
7c37befd
refactor
A user cannot get a GitHub token for a repo they only typed into a proje
ce2a97d6
fix
mint GitHub tokens and write workflows only for installations the caller set up -- new github_installations table, checked before any GitHub mint
221d392e

v5.59.0September 25, 2026+2 internal

feat
(pipeline) a ticket's own spec is held to 15s of the critical path's 90s
b31a5ac4
refactor
svelte-check regression was ungenerated Astro types in the worktree, not code
5473c022
refactor
Opening another tenant's project id on the relay never joins their live
2f167b08
fix
relay keys each room by the caller's own resolved project id, so a slug equal to another tenant's UUID no longer joins their room
6161e2af

v5.58.0September 25, 2026+6 internal

fix
project overview and planning chat take the viewport below 1024px instead of sharing one with the header
88165958
fix
(theme) faint dashboard text clears 4.5:1 -- retune --color-text-muted, move --cd-ink-faint and --cd-pending into theme.css
e159d2bf
refactor
svelte-check regression was ungenerated .astro types in a fresh worktree, not code
28ecc525
refactor
The five slowest @critical specs wait on a controlled clock, not real ti
afe33584
fix
(e2e) workspace-status, project-single-socket and kanban-thread-delivery advance page.clock past their page timers instead of waiting for them
c04c206c

v5.57.0September 25, 2026+5 internal

feat
(relay) a dropped relay reads Reconnecting… and turns the chat dot offline
8b747928
refactor
The tickets list recovers by itself after a failed load
a908cd2a
fix
(tickets) a failed load retries every 5 s until one succeeds
85c8597d

v5.56.0September 25, 2026

feat
(runner) every logged event carries when it happened
55c6ea49

v5.55.0September 25, 2026+1 internal

fix
(pipeline) a conflicted candidate is re-coded on today's trunk, not failed
8b541e4d

v5.54.0September 25, 2026+2 internal

refactor
Screen readers hear whether the navbar menus are open or closed
ade2e9d2
feat
navbar menu buttons expose aria-expanded/aria-controls; Escape closes the profile menu and returns focus
260ec236

v5.53.0September 25, 2026+8 internal

feat
"Skip to content" link as first focusable in Navbar, focuses the page main
e339e86e
fix
(board) a stopped ticket shows why it gave up
c90ad62a
feat
quiet empty-states and timestamps use --color-text-quiet (4.5:1+)
d4065c49
refactor
The chat composer is on screen without scrolling at 320×640
4fec64eb
feat
the chat composer is on screen without scrolling at 320x640
049a2cfd
refactor
keep the workers page under the 500-line limit
3b31b436
feat
a machine-less account sees the connect command first
9c9a8c61

v5.52.0September 25, 2026+2 internal

fix
(test) the proof-gate tests spawn nothing
688cc0f3
feat
a failed pause, drain or blocker answer says so on screen
eea19477
fix
(test) the runner's tests never reach production over the network
83cd68a7

v5.51.0September 25, 2026+3 internal

refactor
Clicking a quiet perspective in the roster asks it to weigh in
2fcf5c15
feat
roster buttons ask the role through the page's chat; the phase selector saves to the project
edbf070a

v5.50.0September 25, 2026+2 internal

refactor
The project page shows what is blocked on me and lets me answer it
0ebf01a5
feat
mount ProjectBlockers directly under the project page header
201b4262

v5.49.0September 25, 2026+4 internal

fix
(audit) an audit never re-files work that is already open
a16f9e2b
refactor
Clicking "+ Generate New API Key" shows a new key once, ready to copy
a9fe6b5c
feat
Generate New API Key shows the new key once with a Copy button
39fc68b6
feat
POST /api/keys mints an xsk_ key, returns the plaintext once
6037ce9b
fix
give the homepage features section the #features anchor the footer links to
4bbbde27

v5.48.0September 25, 2026

feat
(tickets) the owner's settled decisions reach every writer -- audits, planner, foreman
f722edbc

v5.47.0September 25, 2026+6 internal

refactor
svelte-check regression was missing .astro types, not code
e3982c53
fix
keep /connect out of the sitemap; export the filter so it is testable
01305969
fix
(web) one Vite optimizer cache per tree, not one shared through the node_modules symlink
0d84e810
feat
(audit) the five site audits run weekly in an idle pipeline slot
782e19c9
feat
one launch stage (Open Alpha) and no prices on / and /plans
2a099d1f
refactor
type middleware handle() result as Response so svelte-check stays clean
5c7aa923
feat
X-Robots-Tag noindex on private pages via middleware and _headers; robots.txt stops disallowing them
d5018b5d
feat
(audit) xswarm audit -- five site audits that ask how well a site conforms to best practice
2f39df1b

v5.46.0September 25, 2026

feat
(tickets) one ticket standard -- the ticket skill, and a reviewer every writer passes through
ff91d0ae

v5.45.0September 25, 2026+4 internal

refactor
restore svelte-check baseline by regenerating the worktree's .astro types
32acc2bd
feat
the runner registers this machine and heartbeats every 30s so the dashboard shows it online
98b70f94
fix
on narrow screens the planning chat comes before the roster, keeps a 22rem floor, and the page pads p-4
e426cb6d

v5.44.0September 25, 2026+2 internal

refactor
Planning page lists the requests waiting for the foreman to plan
db9805dd
feat
planning page lists requests awaiting planning, each with its age; board count shares the filter
66ecb01a
fix
(gate) a failing test is named with its first error line
e433326d

v5.43.0September 25, 2026+4 internal

refactor
Team Chat popup names the project instead of showing its UUID
6037533d
fix
Team Chat About line shows the cached project name (or "this project"), not the raw project id
21406dbb
refactor
workers page session-chip style on one line, back under the 500-line file limit
51569a81
fix
offline machine's sessions are not live on the Workers page; session-id chips link to #session-<id> on project activity
a34cdf7e

v5.42.0September 25, 2026+5 internal

perf
(pipeline) a cold first critical-path run is re-run once before it can refuse the push
86f64652
refactor
Workspace terminal says when no session is attached
6c76064c
feat
TerminalView shows No session attached until terminal output arrives, drops [connected], sends no input before then
027e84ab
feat
/login names the pending machine code when redirected from /connect?code=
bae829d9

v5.41.0September 25, 2026+7 internal

refactor
Knowledge base docs strip YAML front matter before rendering
17b1a0f3
feat
DocumentReader strips leading YAML front matter; description is the fallback summary; empty body shows a note
b0ab3e65
fix
(e2e) project-foreman-status gives island hydration 20s on a cold tree
ba7b6c7a
feat
TASKS stat reads X-Total-Count; Recent Tasks rows link to the project's tickets
b1a66382
refactor
svelte-check regression was a missing astro sync in the fresh worktree, not this change
f60cfe09
refactor
Projects list LAST ACTIVITY reflects the latest ticket or deploy
b997860f
fix
(e2e) workspace-status gives island hydration 20s on a cold tree; the 5s claim still starts when the header renders
4908e7c6
feat
last_activity_at is the newest of session last_seen, max(tasks.completed_at) and deploy deployed_at
b99c4c0e

v5.40.0September 25, 2026+4 internal

feat
Live Activity falls back to recent ticket moves from /api/tasks when the event backlog is empty
b563a3b0
refactor
regenerate astro types so svelte-check measures the tree, not a missing .astro/
e3667f38
feat
pickIconUrl falls back to https://<name> when the project name is a hostname
197ad448
fix
(test) the fleet optimizeDeps scan skips .xswarm, where task worktrees live
17738d34
fix
(deploy) wait fifteen minutes for staging, not seven and a half
b814ec29

v5.39.0September 25, 2026+23 internal

refactor
Settings lists API keys from /api/keys and lets the user revoke one
6ea4c225
fix
(gate) an astro check type error is a named verdict, not a crash
e3986c2a
feat
Settings renders /api/keys with created/last-used dates and a confirm-then-DELETE Revoke
585f67dc
fix
(platform) config report asks the web hosts so each session cookie goes, and never reads clear unmeasured
cfb1af3b
fix
scroll the Usage stat into view before the viewport check, as a mobile user would
04b6f6be
feat
settings Usage reads projects, tasks and AI cost from /api/billing/usage
c68a8dd2
perf
(pipeline) a lane with nothing it can take plans a waiting ticket, then looks again
22800dd5
fix
(board) the tickets never wait on the run state or requests
e7c48d00
fix
(test) the browser-lifecycle test sweeps every profile it made when it ends
628a7b3c
fix
(deploy) wait fifteen minutes for production, not five
acc5625c
feat
platform analytics shows a PostHog not connected notice in place of the '--' mockup and dead Refresh/Export buttons
978a1ba9
feat
billing buttons POST checkout/portal and follow the Stripe URL; hidden when Stripe is not configured
5cd566cd
refactor
The Deployed column groups tickets under the release that shipped them
03ad72fe
feat
(board) the Deployed column groups tickets under the release that shipped them
f429d7f7
fix
(worktree) --no-track, so two slots opening worktrees at once do not fight over .git/config
61ea4f25
refactor
Restore svelte-check baseline by generating missing Astro types
791bf051
refactor
Refresh snapshot baselines for routes with intended UI changes
8117259b
feat
visual-repro --rebaseline re-takes only the triage's rebaseline routes via an anchored --grep, records rebaseline.json
7d207947
feat
(board) the card face gives the title and the live status the full width
e8c69028
refactor
run.mjs imports sweepFinished via reap.mjs, back under the import and line limits
b70ac733
perf
(pipeline) a freed slot takes the next ticket at once instead of waiting for the slowest
97f28ef0
refactor
Loop tick reaps idle agents whose ticket is no longer in flight
94aebbca
feat
sweepFinished reaps idle agents off in-flight tickets; loop tick logs them as reaped
c513f96e
fix
(visual) regenerate the 26 chromium baselines that 12cad369 made stale
0b66c0b4
fix
(e2e) the push gate selects tests by @critical, not by file name
a9b05bc3
fix
(pipeline) the pre-push quality check includes svelte-check
8793c6e6
feat
registry records lastActivityAt; touch() updates it, agentState() reports idle/busy
951266ae

v5.38.0September 25, 2026+2 internal

fix
(web) the Code Editor keeps file content that arrives before Monaco has loaded
e677ac20
perf
(pipeline) a quality regression goes back to the agent for one fix pass before the push
9659afef
fix
(worktree) a tree left at the old location no longer holds a task's branch hostage
01b016cc

v5.37.0September 25, 2026+2 internal

perf
(pipeline) ships batch landings behind a 20-minute gap
97c38602
feat
worker card LOAD is load_avg against cores, not cpu_usage as a percentage
76fbf733
fix
(pipeline) the pipeline's critical path takes the box-wide lock; a red run names its failing tests
fd748bb0

v5.36.0September 25, 2026+2 internal

refactor
Studio and Planning are reachable from the project tabs
56cc13db
fix
(pipeline) a slot the queue cannot fill plans beside the work; a ticket with no touches is planned
f50eae74
feat
Studio and Planning tabs in the project tab row, after Reports
4c8979f4

v5.35.0September 25, 2026+2 internal

refactor
Project tabs scroll with a visible affordance at 390px
5fb0822a
feat
project tab row fades the edge that hides tabs, so Reports reads as a swipe away
d5e45f9c

v5.34.0September 25, 2026+2 internal

feat
Dashboard home fits 390px without clipped columns
13d0c07d

v5.33.0September 25, 2026+2 internal

refactor
Requests board rows open and a new request can be filed
0a5b9659
feat
RequestsBoard gets a New Request form (POST /api/requests, prepended) and rows open a detail dialog with owner and status
001515d9

v5.32.0September 25, 2026+3 internal

refactor
Abandoned sessions can be dismissed from the activity page
4b7aad94
feat
Dismiss on an abandoned Activity row deletes its session row via DELETE /api/events/sessions/:id
2b18ff6b

v5.31.0September 25, 2026+2 internal

feat
an expanded Reports check row lists each finding's file, line, severity and message
12253094

v5.30.0September 25, 2026+2 internal

fix
Reports colours a crashed check's row and trend with var(--color-error) instead of the healthy green
4262a7b5

v5.29.0September 25, 2026+2 internal

refactor
Workspace Code Editor lists and opens project files
3d26b00c
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
4a576284

v5.28.0September 25, 2026+2 internal

refactor
An empty planning chat opens with the BA asking the first question
a1da902e
feat
the planning chat opens with Barry asking what the project should do, and the roster marks who has posted
514aaa03

v5.27.0September 25, 2026+2 internal

feat
planOne reads the ticket's thread (GET /tasks/:id/messages) into the re-plan prompt and records the message ids as evidence.threadRead; the run loop wires it
52d6b6bd

v5.26.0September 25, 2026+2 internal

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
72cf2d0a
feat
the relay room remembers each delivered question and the foreman's complete reply in Durable Object storage and answers chat:history with them, oldest first
3385414a

v5.25.0September 25, 2026+2 internal

feat
the runner's foreman stores its answer to a queued chat message and marks it delivered; the API forwards it to the room's /foreman path instead of a 404ing /noop
4c4b7105

v5.24.0September 25, 2026+2 internal

feat
Team Chat popup reads history on open and polls it while open, labelling You/Foreman
d1b4629c

v5.23.0September 25, 2026+2 internal

refactor
Project page opens one relay socket, not two
f542e5d2
fix
project page shares one relay socket per room (relay-socket.js) across chat, activity and foreman status
41a9bd6d

v5.22.0September 25, 2026+2 internal

feat
Worker Status shows each offline machine's last-seen time and a copyable npx xswarm run when none is online
db5be709

v5.21.0September 25, 2026+3 internal

fix
Workspace view mounts a DevPreview only for the selected tile, so the dev-token and frame are that project's
7ab0b75f

v5.20.0September 25, 2026+2 internal

refactor
Start dev server is disabled with 'foreman offline' when no runner is co
282f7009
feat
dev preview Start watches foreman:presence; disabled and reading 'Foreman offline: run npx xswarm run' until a foreman is connected
15469675

v5.19.0September 25, 2026+2 internal

feat
thread messages show author, time and 'waiting for foreman'/'read by foreman'; open waiting thread re-read every 3s so the reply lands
e4d0f0e4

v5.18.0September 25, 2026+2 internal

fix
Workspace 'Open →' and 'Full View →' link to /dashboard/projects/:id/workspace, the page that exists
7ff3cda7

v5.17.0September 24, 2026+2 internal

feat
foreman answers ticket threads -- API forwards thread:message to the room, /tasks/unanswered backlog answered on connect, replies posted as author foreman
cb331c56

v5.16.0September 24, 2026+2 internal

feat
room replays worker:status online to joining dashboards and broadcasts offline when the last foreman drops
186ee696

v5.15.0September 24, 2026+2 internal

feat
chat header dot follows foreman:presence -- grey 'foreman offline' until the room says the foreman joined
c3394427

v5.14.0September 24, 2026+2 internal

refactor
Chat marks a message 'not delivered' when it cannot reach the foreman, w
b6fbad79
feat
chat marks a message not delivered when it cannot reach the foreman, with Retry
1ff8a09c

v5.13.0September 24, 2026+2 internal

fix
Team Chat popup shows the user's message once and waits for the foreman's reply
66fe6a6f

v5.12.0September 24, 2026+2 internal

refactor
Project page shows whether the foreman is running, with the `npx xswarm
c366bfd6
feat
project page shows the foreman online with its machine, or a Foreman offline banner with npx xswarm run and Copy
f2847572
feat
the runner's foreman names its machine, and the room's presence carries it
05e85d46

v5.11.0September 24, 2026+3 internal

refactor
The runner's foreman serves dev-preview requests
554b5afe
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
c732f996

v5.10.0September 24, 2026+6 internal

fix
(foreman) a reserved agent slot, so the owner is answered while every ticket slot is busy
4b3a8c55
fix
(studio) resume dev-preview polling when a reload finds 'starting'; error state offers Try again
9c8b973a
fix
(board) a running ticket sits in its live step's column; cards say what the agent is doing
5c71df6e
refactor
Workspace page status connects instead of hanging on 'Connecting...'
9a5dbb2b
fix
(workspace) dial the dashboard relay route and show foreman presence, not Connecting... forever
34a1becf
fix
(foreman) answer from live pipeline facts, never ask for approval
908234b3
feat
(foreman) the runner is the foreman -- it answers the dashboard chat and files tickets; worktrees stay out of scans
53fd0160
fix
(dashboard) let the detail-band columns shrink below their widest task title
89639227

v5.9.0September 24, 2026

fix
(pipeline) a UI ticket is proven in a real browser, not jsdom
c5553ed1

v5.8.0September 24, 2026+2 internal

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
665a5e00

v5.7.0September 24, 2026+2 internal

refactor
Record worktree path and branch on the ticket row as soon as git.open re
268390a4
feat
record worktree_path and branch_name on the row the moment git.open resolves
3084a6a5

v5.6.0September 24, 2026+2 internal

fix
abort() kills the agent's whole process group, sharing one killGroup with the budget timer
662b00ae

v5.5.0September 24, 2026+2 internal

refactor
Five-qualities plan: concrete actions per quality, none of it tooling wo
f851fe75
fix
(test) stop-ticket-resolve builds its worktree under a parent of its own, not the run-wide .worktrees
71808e01
feat
five-qualities.md gives each quality two concrete distribution actions
46190d86

v5.4.0September 24, 2026+2 internal

refactor
Record an accountable owner for each of the five non-technical qualities
7f8840e0
feat
five-qualities.md names Chad as owner of each quality; linked from TECHNICAL.md
1e0ea39b

v5.3.0September 24, 2026

fix
(pipeline) stopped tickets become actionable -- gate-format failures recode, the planner defaults decisions to the owner
bc40b816

v5.2.0September 24, 2026+1 internal

fix
raised-card test reads ProjectBoard.svelte relative to the test file, not cwd
5781cff7

v5.1.0September 24, 2026+4 internal

feat
popover thread fetched on open (oldest first) with a chat box that POSTs and appends without a reload
5907305a
refactor
Board cards are compact and skeuomorphic, with a hover popover of the fu
ea590296
feat
compact raised board card (#ref, title, priority, live step) with hover/focus popover of the full ticket, closed on leave or Escape
6409296b

v5.0.0September 24, 2026+2 internal

feat
task_messages table (migration 0015) and POST/GET /tasks/:id/messages, owner-only
0d1bf891

v4.27.0September 24, 2026

fix
(sync) criteria encoded twice are unwrapped, not declined on every pull
23a1150a

v4.26.0September 24, 2026

fix
(release) a version is always a number -- drop the 'releasing' marker
64ee9b19

v4.25.0September 24, 2026+2 internal

feat
pushProgress creates a never-seen local ticket under its own id; POST /tasks accepts an id
b2104b8d

v4.24.0September 24, 2026+2 internal

refactor
CLAUDE.md links to the harness and restates none of its pipeline rules
c31fb1ac
feat
CLAUDE.md architecture section points to the harness instead of describing foreman/PM2/tmux
2f824137

v4.23.0September 24, 2026+2 internal

refactor
Harness stage table lists entry and exit evidence, the actor, and the co
eafa0e0e
feat
harness stage table gains entry/exit evidence, actor and code path per stage
1e98d5c4

v4.22.0September 24, 2026+2 internal

feat
machineVitals rows CORES/RAM/DISK/LOAD drive the worker monitor; absent reads 'not collected'
284a5570

v4.21.0September 24, 2026+2 internal

v4.20.0September 24, 2026+2 internal

refactor
Always hard-floor Lighthouse's deterministic subtotal, whatever the base
fee77d22
feat
always hard-floor lighthouse deterministic subtotal; floored FAIL names the check and count
c1f0eda1

v4.19.0September 23, 2026+2 internal

refactor
Web middleware answers anonymous protected /api/* with 401 JSON, not /lo
eb1240bb
feat
middleware answers anonymous protected /api/* with 401 JSON instead of passing through
bcf7eb90

v4.18.0September 23, 2026+2 internal

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
6c986e62
feat
(deploy) an engine that cannot launch is recorded not_run in the deploy record, never pass
4a51ee2b

v4.17.0September 23, 2026+2 internal

feat
worktreePreviewState reads a worktree's preview from the registry, reporting 'stopped' when its pid is dead
25c6b0e9

v4.16.0September 23, 2026+2 internal

refactor
Web middleware checks admin via the in-process API, not a cross-worker f
392f0556
feat
middleware admin check and /api handler call the hono app in-process via lib/api-inprocess
80885dbe

v4.15.0September 23, 2026+2 internal

refactor
Activity board orders not-started tickets the way the scheduler picks th
9b5ec265
feat
(board) planning column sorts in selectNext's order and labels the first ready card 'next up'
998255b0

v4.14.0September 23, 2026+2 internal

feat
recordEvidence attributes every proof key; dispatch names observeRedGreen, attempt and branch tip for red/green
5db1e639

v4.13.0September 23, 2026+4 internal

v4.12.0September 23, 2026

fix
(board,release) only running tickets occupy working columns; production never shows 'unreleased'
8542a1af

v4.11.0September 23, 2026

feat
(pipeline) planning is a stage -- an idle pass repairs an incomplete ticket instead of stopping
a67344ae
fix
(board) a pending ticket is in Planning, not wherever an old attempt got to
383be934

v4.10.0September 23, 2026+2 internal

refactor
Every /api area is auth-guarded or explicitly listed public, by test
44b4bed3
feat
export PUBLIC_API_AREAS from middleware/auth.js naming the six /api areas that are deliberately not behind authMiddleware, each with its reason
fd4ab56a

v4.9.0September 23, 2026+2 internal

refactor
A gate check that times out is reported TIMED OUT, never scored from its
10a597e7
feat
parseCount reports timedOut as TIMED OUT before matching; runSupervised in supervise.mjs is the gate's sh, importable, and names the deadline from timeout(1)'s 124/137 or execSync's own kill
6fe0fc9d

v4.8.0September 23, 2026+4 internal

refactor
Admin Platform links collapse behind one persisted sidebar control
934cbb91
feat
admin Platform links collapse behind one aria-expanded toggle, open state persisted under xswarm_dash_platform_open in try/catch
283bc5c8

v4.7.0September 23, 2026+2 internal

feat
computeProjectHealth reports gate_measured_at and deploy_measured_at
aa780c2c

v4.6.0September 23, 2026+2 internal

refactor
ui-audit --style-guide emits observed colour palette mapped to theme tok
07e92a84
feat
ui-audit --style-guide emits the observed colour palette by frequency, mapped to theme.css tokens
9d37456e

v4.5.0September 23, 2026+2 internal

refactor
A completion PATCH never rewrites another ticket's board_column
c85970ed
fix
completion PATCH reports newly startable tickets without writing their board_column or stage events
bd82b9e9

v4.4.0September 23, 2026+2 internal

refactor
POST /api/requests refuses a request that resolves to no project
fc906c27
feat
POST /requests refuses a request that resolves to no project
8b9ac3e3

v4.3.0September 23, 2026+2 internal

feat
brittleSelectors -- class-chain locator/$/waitForSelector strings reported by file:line
7d6e0c97

v4.2.0September 23, 2026

fix
(run) --cap N raises the agent spawn cap to N -- two-at-a-time never ran concurrently
4deccb4f

v4.1.0September 23, 2026

fix
(stop-hook) worker instructions go only to sessions the pipeline marked, never by location
ea2f3ba5

v4.0.0September 23, 2026+48 internal

fix
(deploy) a staging build already serving the sha counts -- no 7.5 min wait for a rebuild that never comes
1480e6f6
fix
(publish) a sync-job state commit can never hold the release again, and a held release shows on the board
280cd078
feat
unscoped GET /tasks filters to owned projects in SQL and reports X-Total-Count, X-Withheld-Count, X-Limit-Applied (clamped ?limit=)
f0ae6793
feat
deploy event reason keeps each line's final \r frame and drops repeated spinner lines, rendered before the tail slice so the cause survives
29d7f19a
feat
print-only xSwarm header with live URL; print tables fixed-layout with wrapping cells, no overflow-x auto
9a3580bc
refactor
E2E triage files only causes that are new since the recorded baseline
b0b9041a
feat
(triage) baseline option splits known causes out of tickets, tickets carry their signature
abde2801
feat
refactor prompt demands Applied:/Not applied: lines; refactorPass refuses a blank standard
db490439
feat
meshNote explains a missing console link; workers card renders it as .worker-mesh-absent
6a83c156
feat
platform audit names hono/cookie getCookie and c.json(); git ls-files runs as a literal command, not an interpolated template
2012390e
feat
openingMessage (Barry asks the phase question) and spokenFrom (speakers from chat messages)
e459d5de
refactor
No npm publish path exists, and Getting Started says pre-beta instead of
8ece4c5b
feat
remove the npm publish path; Getting Started says pre-beta and points to the waitlist
9b3f9e22
refactor
selectNext takes a ready UI ticket before an equal non-UI ticket
a0ba9727
feat
UI-before-non-UI tiebreak in queueOrder, after priority, before creation
58840886
feat
Pin GET /users/me to github_username alongside /auth/me
70d0290a
feat
tasks.test_path column (migration 0014), POST /tasks stores it, GET returns it
ee6410bc
refactor
The board column is derived from evidence, never stored
33711819
feat
GET /tasks derives board_column from the evidence in test_results, never from the stored row
4f602d9a
refactor
`xswarm task purge --synthetic` removes non-UUID fixture rows from the s
57cf51bd
feat
xswarm task purge --synthetic deletes non-UUID rows from the local store and prints the count
ccd52315
feat
xswarm clean --global lists leftovers outside the repo with sizes and removes them on --yes
0d26a092
feat
freeze an agent-authored ticket test at the branch commit that first added it
511ad9d7
refactor
Task worktrees live under <repo>/.xswarm/local/worktrees, not the parent
87aea15f
feat
Task worktrees live under <repo>/.xswarm/local/worktrees, not the parent
06927765
feat
open task worktrees under <repo>/.xswarm/local/worktrees; gate, reaper and live feed recognise the new layout
a9d4ee07
feat
delete coordinator loop, prompt and runtime (and their tests) and unwire them from daemon-entry
1a991eac
refactor
A publish records the promotion (from sha, to sha, at) on every ticket i
b972d877
feat
publish reads production's sha before the ship and records deployPromotion {from, to, promotedAt} via markPublished
92808e8f
refactor
The stop watchdog allows a stop in a session that has no ticket
2309aec2
feat
the stop watchdog allows a stop in a session that has no ticket
c577521a
feat
a resolved ticket's stop names its missing stage evidence by key
373eb60a
refactor
A report with zero findings shows "none" on its line instead of no count
ac97da2b
feat
"No findings" counts as zero; report line shows "none" instead of a blank count
5ed0bc02
feat
chat history jumps to newest message; architect speaker labelled; unkeyed list tolerates shared ts
7a9124f2

v3.60.0September 23, 2026

feat
(pipeline) tickets run concurrently up to the cap, merges one at a time; live feed per ticket
b790504f

v3.59.0September 23, 2026+2 internal

feat
standingOf reports queue position from selectNext's order, or implemented-awaiting-deploy
9e600260

v3.58.0September 23, 2026

perf
(prompt) the coding prompt says each rule once -- 5,768 chars to 2,274
ddbdf740

v3.57.0September 23, 2026+2 internal

feat
worker-name-audit lists production hostnames served by a staging/preview-named worker
a841674e

v3.56.0September 23, 2026

fix
(board) Deployed lists the newest release first, not by priority
25f5a783
fix
(merge-queue) a named failing test is a red verdict, not a crashed host
b652281d

v3.55.0September 23, 2026

feat
(web) hide AI Musings, Plans and pricing; NOW strip at the bottom; every update bumps the version
12cad369
perf
(map) a ticket's declared files and test lead its orientation, even when they do not exist yet
44d963d4
feat
(agent) the default coding agent, escalating to Fable when a ticket is struggling
2946939c
feat
(board) every card shows what is true of it; sorted by priority, dependency shown
1eafb742

v3.54.1September 23, 2026+2 internal

fix
(e2e) mask any data-snapshot-mask element, not just the release badge
9baf036b

v3.54.0September 23, 2026+2 internal

fix
(triage) 'authenticated API calls failed' is one page's failure, not a broken sign-in
782a3a22
fix
(dispatch) keep the tail of a refused commit's reason -- git's error is at the end, not the command line
9fd60ba0
feat
signed-in console sweep covers every dashboard page
6b3460e3

v3.53.0September 23, 2026+2 internal

feat
request created from a chat message keeps its wording and a link back
d26a83a9

v3.52.0September 23, 2026+2 internal

feat
verify deploy against served sha, report unverified if probe fails
d364a8d2

v3.51.0September 23, 2026+2 internal

feat
group deep-audit findings into ticket drafts by cause
865eb331

v3.50.0September 23, 2026+2 internal

feat
implement principlesIndex mapping stages to principle documents
0ad0cb5e

v3.49.0September 23, 2026+2 internal

refactor
A document can be shared by an unguessable, revocable, noindex link
62fc0e4a
feat
document share link is unguessable, revocable, and noindex
eae1fa18

v3.48.0September 23, 2026+2 internal

feat
validatePlan refuses a ticket whose bdd lacks Given, When or Then
05d77df7

v3.47.0September 23, 2026+2 internal

refactor
Activity board cards show when they moved, and an empty board says so on
86ef19e2
feat
(board) cards show relative time, empty board says so once
82832473

v3.46.0September 23, 2026+2 internal

feat
(lighthouse-audit) runRecord/notRunRecord carry timestamp, commit and scores, or not_run with a reason
ccebb75b

v3.45.3September 23, 2026

fix
(commit) a failed pipeline commit still names work the branch already holds; its reason is kept
48ab6ba7

v3.45.2September 23, 2026

fix
(dispatch) restore the ticket's test only when test cases were deleted, not when lines were edited
0e8022f6

v3.45.1September 23, 2026

fix
(merge-queue) the candidate suite waits for an in-flight ship instead of timing out beside it
77b01447

v3.45.0September 23, 2026+2 internal

feat
bindingDiff names bindings api declares that web lacks per env
d117885a

v3.44.1September 23, 2026

fix
(stop-hook) in a task worktree an unpushed commit is the end state, not outstanding work
768f6b15

v3.44.0September 23, 2026+4 internal

fix
(run) wait for the in-flight publish before closing the store, so shipped tickets get their deploy proof
feab2a4b
refactor
The visual audit covers every per-project dashboard page
bbe662f2
feat
visual audit covers every per-project dashboard page
bf4fa37b
refactor
Tickets carry a persisted rank that orders selection and listing
f7f780ad
feat
persist a manual rank that orders selection and listing
f4aa02fa

v3.43.0September 23, 2026+2 internal

refactor
Visual triage prints a per-route verdict: re-baseline with reason, or re
32c6e272
feat
decisionsFor prints a per-route verdict, rebaseline or file-ticket
e9c8a55b

v3.42.1September 23, 2026

perf
(refactor) check a refactor with vitest related, not the whole suite twice
e9f114d1

v3.42.0September 23, 2026+2 internal

refactor
Public share link for a project's quality report, revocable to 404
5f51216d
feat
revocable public share link for a project's quality report
fcc6ef45

v3.41.2September 22, 2026

fix
(pipeline) a red candidate goes back to coding with a reason it can act on
e5ad442c

v3.41.1September 22, 2026

perf
(refactor) the refactor agent leaves the QA order to the pipeline, and does not commit
928a044f

v3.41.0September 22, 2026+2 internal

refactor
(hooks) correct resolveStopTicket docstring to match actual wiring
afeb3c2a
feat
(hooks) resolve a Stop event's ticket from its recorded worktree_path
2db24db9

v3.40.0September 22, 2026

fix
(pipeline) unit-test tickets can pass -- two faults found running 4b492e98
8c471ca4
feat
(board) the live feed shows repo-relative paths; a rewritten ticket's title reaches the board
b4d5a623

v3.39.1September 22, 2026

fix
(pipeline) unplanned tickets are left out of the CLI queue, not refused one pass at a time
79b14216

v3.39.0September 22, 2026

refactor
(run) keep run.mjs under the 500-line limit
1929449d
feat
(pipeline) a ticket with no named test is not dispatched
b01a44b6

v3.38.0September 22, 2026+2 internal

feat
(hooks) wire routeOnStop into the installed Stop hook, log the workflow event
e9643f4d

v3.37.1September 22, 2026

fix
(refactor) a revert that undoes the agent's commit; gate green on main again
8f3af7e6
fix
(board) order the cost trend by pipeline finish time, not completed_at
277d9c0c
feat
(board)+feat(task) per-ticket cost trend on the board; map hit rate per ticket
b7df7124
perf
(agent)+feat(board) pipeline agents stop redoing the harness; a full-width Now panel
f26a6bff

v3.37.0September 22, 2026

fix
(board) a ticket that stops short stays where it stopped, red, with the reason
95d5c765
feat
(board) the running card streams what the agent is doing
0cb31912

v3.36.1September 22, 2026

fix
(board) a queued ticket is in Planning, not off the board
d3cfe01e

v3.36.0September 22, 2026+1 internal

feat
(board) live kanban -- cards move per step, animate between columns, show what they are doing
a22af806
docs
(board) comment no longer describes the removed deploying column
c7578730

v3.35.3September 22, 2026

fix
(board) six columns, and a column a ticket has left is cleared
897f801f

v3.35.2September 22, 2026+2 internal

refactor
(web) render both profile chips from one list, not two copies
f7d138d1
fix
(web) read the handle by the name the API sends, and handle its absence
50ac8419

v3.35.1September 22, 2026

fix
(deploy) a helper import must not disable fetch for its importer
ac1fa0fe

v3.35.0September 22, 2026+11 internal

fix
(reap) our own tmp-scope run roots are ours, and were being skipped
fe3ae28f
fix
(deploy) the refusal no longer crashes instead of explaining
a2c35f93
fix
(api) an icon that was never fetched is not an icon that failed
65b044d2
feat
(critical-path) record WHICH specs ran, so the binding goes live
641af3eb
fix
(evidence) e2ePassed means THIS ticket's spec passed, not that the suite was green
597ba3c1
docs
(harness) cite repo-relative paths and stop printing telemetry as stage evidence
6b203b43
docs
the pipeline's architecture decisions, written for outside review
586cdc48
docs
an overview of the whole thing, and the missing half of the harness
d8cadbfd
feat
(git) commit every iteration, test first, and verify the trail
3da4f0c0
fix
(worktree) keep task-worktree.js under its line budget
ee0ce7c6
feat
(git) three commits per ticket — the test, the code, the cleanup
1aa91ccf
fix
(publish) no exports that exist only for a test, and a correction
c99d1178
feat
(git) the commit is the record — conventional subject and evidence trailers
4b36c277
feat
(publish) a ticket's development history, published to GitHub
ab8d3d7e
fix
(score) an unreadable PR list is unknown, not 'no pull request'
c683e03a
feat
(score) link every ticket to its pull request
0c56bea4
feat
(score) every ticket's score carries the release that shipped it
6eb5eb7b
feat
(lifecycle) six stages — Planning, Coding, Testing, Refactoring, Staging, Deployed
76f04d58
feat
(observability) the stage score is part of brief, monitor and the API
72f17f08
feat
(score) quality, stability, speed and tokens for every stage of every ticket
03d938ed
fix
(test) the run lock made a shared fake repoPath a real collision
9bca71ab
fix
(paths) no speculative exports
9ac3564e
fix
(reap) the browser reaper may only kill this repo's own browsers
5712ac4a
feat
(app) delete both global installers
bfea5b4a
feat
(task) a board ticket keeps the test path its author named
347eb43d
feat
(task) the observer is told which file is the ticket's test
a2ab4ab5
feat
(task) restore the ticket's own test before anything observes it
14096a2f
feat
(task) a ticket carries the path of its own test
79db0096
fix
(gate) the run lock must not cost a security or elegance regression
e0e3518e
feat
(run) take the run lock, and reclaim what a dead run was holding
704776c4
fix
(task) deployed means deployed — delete the two agentless sweeps
0097e209
feat
(task) a run lock that makes one-ticket-at-a-time a fact
bc9102a9
fix
(stop-hook) a subagent is not charged with the repo's unpushed commits
3ca84304
fix
(stop-hook) only a ticket worker is asked to confirm a clean stop
a486ee7e
feat
(visual-gate) a hard timeout that ends the sweep that never comes back
68af0ef3
refactor
(favicon) a failed lookup is a date, not a row with an icon in it
76ec4f38
feat
(pipeline) board pull, refusal path, and the observability API
723e686c
refactor
(machine-identity) the OS tests say the whole string, and one of them could not pass
0abf3225

v3.34.0September 21, 2026+4 internal

feat
(pipeline) an agent can refuse an impossible ticket, and the store can be asked instead of guessed at
b8bd9baf
refactor
(deploy) the crossed-trigger story was told three times over
dca00191
refactor
(deploy) the failure format was restated where a tested one already existed
d3a746a2
refactor
(publish) the publisher's own guard was untested, so nothing held it in place
3d3f395d
feat
(gate) the bdd channel could not tell a regression from a stub that never ran
0dc79be3
fix
(account) DELETE /api/users/me 500s for every user, and the fix needs a decision
5c28da60

v3.33.0September 21, 2026

feat
(bdd) tell a step that can never pass from one that broke today
39e6acac
feat
(board) a ticket that has landed but not shipped now says so
d3710e87

v3.32.1September 21, 2026+1 internal

fix
(runner) `completed` meant "landed on trunk", and the board had no way to say so
28e37a0e
fix
(board) 44 of the 53 cards in Coding were already live in production
cdefbaa8
fix
(web) the ticket list said 53 tickets were being coded while none were
2c1ef402
refactor
(web) the memory decides what is worth remembering, not the caller
023794c2

v3.32.0September 21, 2026+1 internal

feat
(web) build-info reports the sha the API answered with
c73b84bc

v3.31.2September 21, 2026+1 internal

fix
(lighthouse) the chromium shm leak was ours, not Playwright's
69a42a41
refactor
(web) the head test failed on attribute order and guarded four of eight icons
64abd84a

v3.31.1September 21, 2026+2 internal

fix
(tmp) our own tests leaked a million inodes, and a full disk became a verdict on a ticket
ddb0f223
fix
(audit) the waste metric fired on the half that complied and was silent on the real cost
7d85a95b
fix
(merge) a machine that could not run the suite told the ticket its code was bad
3299c2a7
refactor
(api) the test named the clamp but could not have noticed it missing
59280d5a

v3.31.0September 21, 2026+3 internal

fix
(api) the second stage model gave a different answer to the first, and nobody had asked it yet
fe6f4a08
fix
(audit) the rows that most needed catching satisfied every rule in the file
40139b87
feat
(probe) cover the changed-paths class, and stop paying for the proof when nothing is dispatched
8fd2fdeb
fix
(dispatch) a ticket could be stripped of all twelve stage proofs and still hold the red/green pair
82d452bd
fix
(deployed) 80 tickets are "verified live in production" and nothing can see that they are not
dec80e68
fix
(deploy) a deploy applied whatever migrations were on disk, not the ones it was shipping
caab3bba
fix
(observers) the red/green verdict was computed against another ticket's files
7c19c053

v3.30.0September 20, 2026

fix
(hooks) the stop watchdog counted every agent's files as yours
25d9d720
feat
(pipeline) prove every observer can say NO before dispatching a ticket
fc763a9a
fix
(pipeline) a commit that never happened was recorded as a commit, and 26 tickets shipped nothing
47a8ae86
fix
(auth) every returning GitHub login was 500ing on a Date in a text column
27d22834
feat
(run) nothing could say "one ticket, then stop"
d16f6b54
fix
(board) a ticket that stopped in a column was counted as still working in it
526bc4a4

v3.29.0September 20, 2026+1 internal

feat
(pipeline) audit each finished ticket before the next one starts
597a1eea

v3.28.1September 20, 2026

fix
(web) a 401 left the previous account's project names for the next person
a28d82a0

v3.28.0September 20, 2026

feat
(map) index module-private declarations — the reason sed was still faster
000d5472

v3.27.1September 20, 2026+1 internal

fix
(chat) `xswarm chat` faked an agent reply and invented a cost to go with it
718b46ee

v3.27.0September 20, 2026+1 internal

feat
(monitor) every fact I kept asking bash for, in one call — CLI and API, same function
1a36ea02

v3.26.5September 20, 2026+2 internal

fix
(gate) it reported a test failure twice today against a suite that passes alone
61e8cf6a

v3.26.4September 20, 2026

refactor
(stages) cost and distribution to their own modules
aaaa4db6
fix
(stages) archiving a ticket's attempts erased their cost from the waste figure
83fc6452

v3.26.3September 20, 2026+1 internal

fix
(audit) a no-op's cost was reported as the ticket's lifetime spend
c77cb609
refactor
(dispatch) priorFailureOf is module-private, as its only caller is here
ddabd3c9

v3.26.2September 20, 2026

fix
(telemetry) testSeconds charged log-reading to running tests, and the prompt quoted it
8756b1f4

v3.26.1September 20, 2026

fix
(telemetry) I optimised for "orientation" twice without checking that is what these were
3d2a8dab

v3.26.0September 20, 2026+1 internal

feat
(agents) hand the map's answer over, instead of telling them where to ask
cc942501
refactor
(connect) the dispatch reads as a chain, and one rule is tested once
933f27d2

v3.25.1September 20, 2026

fix
(map) one entry point, so there is nothing to study
44b7f466

v3.25.0September 20, 2026

feat
(api) /api/tickets — the derived facts, in the one place that derives them
c8ab9d32

v3.24.0September 20, 2026

feat
(telemetry) which stage spent the tokens, not just how long it took
14ee2125
fix
(agents) the map is a queryable index and the prompt told them to read it whole
c8672e5d

v3.23.0September 20, 2026+1 internal

feat
(stats) /api/stats answers "is this pipeline wasting effort", in one call
b459d65f
fix
(telemetry) the map-usage counter watched a file the prompt never sends agents to
6263bd39

v3.22.3September 20, 2026

fix
(queue) a finished ticket held the only slot and the pipeline stopped silently
3077fc43
fix
(visual) regenerate the baselines the navbar fixes made stale
9c60ec62

v3.22.2September 20, 2026

fix
(runner) a ticket verified live in production could never be marked completed
7e445c4a

v3.22.1September 20, 2026

fix
(deployed) the sweep looked for one key and the ticket could only have the other
e6c34013
fix
(runner) a landed ticket was handed to an agent and had its whole history erased
3f26e2dd
fix
(dispatch) a ticket recorded THAT it committed, never WHICH commit
f354dce2

v3.22.0September 20, 2026+11 internal

fix
(deploy) detecting the drift changed nothing until the guard agreed with it
86fbbb23
fix
(deploy) trunk ran 60 commits ahead of production and nothing noticed
ddf69e95
perf
(runner) a ticket that had already coded re-coded from scratch to reach merge
ef18e14c
fix
(brief) a daemon nobody started is not a fault
58fc2658
fix
(audit) "stopped with no reason recorded" on a ticket that recorded one
8d965078
fix
(audit) a reason written by hand is invisible to the guard that checks reasons
811e0372
fix
(runner) "project a53dd66f is run state running" was not a reason anybody could act on
140fb409
fix
(brief) "1 ready · 0 in flight" said nothing about why nothing started
738946c0
fix
(runner) the dashboard's pause button did nothing to the process doing the work
4dfa644c
refactor
(task) extract closeSuperseded, which pushed runner.mjs past 500 lines
d145542e
fix
(pipeline) seven tickets whose work had already shipped could never be closed
68473452
fix
(stages) "50 unproven" with no way to ask what they failed to prove
93eec3b6
fix
(gate) a count that saw MORE routes was being reported as decay
2bedbdea
fix
(gate) an unreachable signed-in surface was scored as a verdict on the code
05512f64
feat
(elegance) raw SQL bypassed the column check, including the secrets tables
47840bb1
feat
(elegance) catch code that writes a column no schema declares — it found five
5ff8d195
fix
(audit) the no-op fix I shipped three hours ago never fired
aafe6381
fix
(stages) a ticket that completed without changing code was counted as having died
b564412d
fix
(stages) the report printed two different "agent call" counts
abf8d6d4
fix
(stages) "queued before anything touched it" was false for requeued tickets
56bacdaa
feat
(stages) a ticket is worked for 19 minutes and queued for 23 hours, and the report never said so
b14b68b3
fix
(verify-release) --api with no value silently verified PRODUCTION
c55e01d8
fix
(critical-path) --cwd with no value measured the main checkout instead of the worktree
b74f9ddc
fix
(mint-token) a flag given with no value silently widened the token's scope
dd517c3a
fix
(refactor) a ticket's cleanup pass was marking landed commits red
808bffd6
fix
(merge) an unmeasurable candidate cost a whole ticket, not a suite run
2b477b23
fix
(refactor) two refactors in three were discarded on a run that measured nothing
ceb06ba0
fix
(refactor) an unmeasurable suite was recorded as the refactor breaking the suite
8afc4bad
refactor
(reasons) one suiteVerdict, used by both stages that compose one
2fc21566
fix
(refactor) the revert reason buried its verdict under 1,500 characters of warnings
139807cd
fix
(migrations) every input that was not exactly --staging meant PRODUCTION
5bc7519f
fix
(hooks) installing over a broken settings.json replaced it and reported success
6374facc
fix
(sync) "not found" was retried every tick, which is the same waste one level down
a0fef32e
fix
(run) quieting the sync took the board's freshness heartbeat with it
e94641f1
perf
(sync) the board sync re-sent all 100 tickets every minute, for ever
8306f852
fix
(elegance) a table written through a helper read as "never written at all"
6e6b4370
fix
(elegance) one block copied into nine files counted as thirty-six findings
cc8839e2
fix
(security) four permanent criticals were placeholders with high character diversity
bea31da1
fix
(merge) a landed branch was kept for ever, and 222 of them had accumulated
204addfb
fix
(daemon) the devserver relay dialled a path the API has never served
a2dd2694
fix
(status) a displaced request is open work, and the diagnostic counted it as done
70fddcfa
fix
(e2e-repair) a run that deduped against nothing reported success like any other
5becb40a
fix
(e2e-repair) the same cause filed twice in one run, because the guard never saw its own work
76e26f46
fix
(runner) a ticket killed three times the same way was parked as three failures
280b6109
feat
(stages) the shell-orientation share now carries its cost
32366511
fix
(audit) an agent that found nothing to change was filed as a ticket nobody attempted
61dcc02c
fix
(brief) a single dropped request was reported as a production outage
a45981e0
feat
(stages) a quarter of agent calls were killed at the budget and the report hid it
047561e9
fix
(select) a ticket consolidated into finished work still blocked everything behind it
7ded8e14
fix
(select) a ticket blocked behind a stalled ticket read as the one ready ticket
299f9862
fix
(brief) "5 ready" when four of the five could never be dispatched
3519e2c7
fix
(bdd) a slash in a step's text is alternation, so three steps could not match
3d22f689

v3.21.1September 19, 2026+3 internal

fix
(bdd) the worker liveness steps asserted a rule the API does not have
b461bf1d
fix
(e2e) an empty browser cache stops the suite at the top, not 447 tests in
036cdd4b
refactor
(bdd) delete 145 lines of step definitions that could never run
fae7e4d2
fix
(bdd) 33 step definitions are regexes of a cucumber expression, and match nothing
d561c3bf
refactor
(hub) one breakpoint block for the rail, not three rules undoing each other
2ec9860d
fix
(sync) two tickets the board never had were reported as failures, every tick
7a3d908f
fix
(runner) a landing stopped the queue for the length of a deploy
14c82b99
fix
(bdd) the only red left is a real defect
3aeab200

v3.21.0September 19, 2026+1 internal

fix
(security) the auditor's own test file was reporting itself, ten times
a938f189
fix
(bdd) four steps treated assigning a fixture as logging in
aac3408c
fix
(bdd) the public kanban board was asked for at two URLs it has never had
413d6496
fix
(bdd) the device-flow poll asked for a path that has never existed
d201792e
fix
(bdd) the project-limit guard could not be tested, so it never was
51ad03d6
fix
(bdd) a When that recognised four labels and silently did nothing for the rest
b653571c
fix
(bdd) three tasks were added and one was counted, because the list was clobbered
a3774ab0
fix
(bdd) a scenario whose Givens arranged nothing, and a Then that always passed
ae4c44d0
fix
(tasks) PATCH assigned a foreign key without checking it, and answered 500
ccbfdd56
fix
(security) four critical findings that nobody could act on now say where
562d9300
fix
(ui-audit) fifteen components were reported as raw markup, and none of them were
328150e6
fix
(prompt) tell the retry which tool ate the budget, not just how many calls it made
ad0e6e12
feat
(merge) the one stage with no row in "where the time goes"
96434898
fix
(test) two tests encoded opposite expectations, and one passed by luck
ad98efca
feat
(store) record what a run touched, so the next one is not guessing
3dba5618
fix
(prompt) name the ticket's test on a retry, from what the last run observed
3613aa2b
fix
(prompt) "run only the test file this ticket is about" never said which one
7756d6ef
feat
(map) a digest the agent can actually read, because the map was unreadable
5abffe31
fix
(status) a healthy hostname was reported as "cannot determine" on every run
06eb81a1
fix
(status) the npm check asked about a package that cannot exist
690d8ef9

v3.20.1September 19, 2026

fix
(runner) a publish at startup stopped every dispatch for the length of a deploy
975177e7
fix
(brief) "BOARD STALE — last reported 197m ago" was off by two and a half hours
6a36bdc2
fix
(critical-path) count the executable, never the mention
95f12a4c

v3.20.0September 19, 2026

feat
(critical-path) say what else the box was doing, on every failure
dd5a9853
fix
(e2e) widening half a race is not fixing it
c782f25e
fix
(runner) tell the board a ticket started when it starts, not when the tick ends
1a2363ce
fix
(test) a unit test about call ORDER was scanning /proc and spawning git
8547776a
fix
(runner) name the tickets the board refused, and why
4973fbcb
fix
(runner) a noop that does not say why is the ambiguity that cost twenty tickets
23532c1b

v3.19.0September 19, 2026+3 internal

fix
(stages) a ticket the runner is about to pick up has not died either
5c540dcd
refactor
(connect) the redeem endpoint restated what the mint already knows
59e14927
fix
(gate) a commit made in the same invocation is a commit the gate never saw
5a1490b9
fix
(revive) never resurrect a ticket the pipeline already escalated
74b05e36
feat
(stats) serve the whole stage analysis at /api/stages
afccbcc0
fix
(telemetry) an agent killed at its budget threw away the account of how it spent it
20789234
fix
(e2e) two more push-gate tests raced the same client round trip
0c692686
fix
(stages) a held ticket did not die, and it is not reasonless
7850e6a8
fix
(revive) a merge conflict is trunk moving, not the work being wrong
65daec6e
fix
(bdd) two scenarios asserted a board vocabulary that was deleted on purpose
bcb22e1d
fix
(telemetry) the tool timings were measured and then dropped at the merge
6dfbe3ca
fix
(e2e) the push gate had a flaky test in it
37c9190e
fix
(gate) say once that the authenticated surface is not being measured
584c0c4d
feat
(audit) name the tickets that shipped with nothing showing they work
a1dd891f
fix
(stages) report the reason that belongs to the stage a ticket stopped at
e27d7ba3
fix
(prove-it-live) a question that never arrived is not a mechanism observed absent
8d8f9074
fix
(bdd) the suite crashed on a missing lsof, and the gate called it an improvement
1163993f

v3.18.0September 19, 2026+1 internal

feat
(api) a pairing code you can hand over once, and a table that cannot hand it back
0bba292a

v3.17.0September 19, 2026+1 internal

refactor
(runner) lift the revival into task/revive.mjs
2df92a33
fix
(runner) a revival must not override a deliberate hold
c01c6357
fix
(gate) the lighthouse reader and the lighthouse audit disagreed for eight days
795525fb
fix
(runner) one test held a box-wide socket, and the gate failed on it half the time
4c16685b
fix
(pipeline) three dead ends that killed tickets which had done all their work
da6d5ac0
fix
(web) a page has one API, and the rule that says which was written in two places
5b03ac5b
feat
(runner) nothing was counting what a whole ticket costs
b86a7d47
fix
(stages) the report was about to repeat my own arithmetic mistake
9b02d897
fix
(telemetry,security) a ticket is three agent calls, and an outage is not a finding
0a0ce892
fix
(retry) telling an agent it ran out of time does not help it go faster
b87d1fc5
fix
(queue) the board said "8 ready" while nothing could run at all
3042c4e6
fix
(telemetry) the endpoint was written into a process that is not running
8517a2b8
feat
(telemetry) the pipeline is now readable over HTTP
7b003a89
feat
(telemetry) step durations as rows, so efficiency is one query
7ad0343c
feat
(telemetry) how the coder spends its calls, and how much it tests
a6cc9f08
feat
(telemetry) every pipeline event into the database, queryable
70a0b457
perf
(agents) the map was never given to them, and nothing said how to run tests
cc7e4225

v3.16.0September 19, 2026+1 internal

feat
(runner) a failed ticket goes round again instead of dying
f52f608e
feat
(fleet) one sweep says which projects serve their deployed commit
09bd5265
fix
(stages) the report contradicted the gate it was describing
270e3b2e
fix
(stages) the report called 44 shipped tickets dead
6b1dc14c

v3.15.0September 19, 2026+1 internal

feat
(responsive) the hub is checked at the four widths, by one overflow walk
4e1978fb
feat
(stages) a re-run used to erase the attempt before it
b51f3cfe
fix
(redgreen) the stage that kills two thirds of tickets recorded no inputs
8d775725
feat
(stages) where tickets die and where the time goes — and a re-run can push again
76e3e781

v3.14.2September 19, 2026

fix
(ui) the nav badge sat on the last link, and the board laid out a track nothing filled
80759b49

v3.14.1September 19, 2026+2 internal

fix
(stop-hook) the refusal was telling task agents to do the one forbidden thing
98dfe92c
refactor
(cli-mount-work-test) a comment that was not true, and one show() instead of five
0519564b
refactor
(github-pr-tests) one GitHub fetch helper, not two copies of it
c320fd1f

v3.14.0September 19, 2026+1 internal

fix
(deploy) a restart sat on work that was already on trunk
0f5e697f
fix
(deploy) the pipeline could not publish its own landings
a4a14716
fix
(visual) the sweep could take fifteen minutes and still report a pass
84bcf427
fix
(critical-path) the lock I shipped an hour ago locked nothing
df1df5ea
feat
(critical-path) one run at a time, and it fails open by design
f8622455
fix
(critical-path) two runs fight over the port and the loser is told nothing
c49e4a89
fix
(deploy) the pipeline published to production and recorded it as a failure
1c8d194a

v3.13.0September 19, 2026+1 internal

feat
(brief) nobody was watching the CLI, and it is six months stale
eff68c5b
fix
(deploy) the pipeline could not publish while I had uncommitted work
7c1c0f70
fix
(deploy) a failed publish stranded the work on trunk for ever
b6d1db3d
fix
(deploy) the board said a ticket was not live for 12 minutes after it went live
ea937f7f
fix
(release) the surface the navbar reads is verified like the other two
045a5888
fix
(ship) a failed deploy recorded npm's banner as the reason it failed
84c3e391

v3.12.0September 19, 2026+3 internal

feat
(quality) a box that comes back up no longer keeps the last session's browsers
5cb64a5a
fix
(agents) every pipeline agent was holding the box owner's Gmail
0e34a1dc
feat
(dispatch) a ticket that asks a question now keeps the answer
38d63134
fix
(dispatch) the one step that ran an agent and was never timed
e0b37005
fix
(select) a review hold was advisory, so the queue kept re-running decided work
203ac627
fix
(executor) the first diagnostic timeout named the least useful event in the stream
262e0f5b
fix
(harness) an agent found a JSON race in our setup, so I fixed it
6ead0a17
fix
(deploy-sweep) "why isn't my ticket live?" was the one question the board could not answer
e817ac03
fix
(runner) the other failed branch — a ticket that could not LAND left no reason either
2822bb7e
fix
(runner) a ticket that changed nothing said nothing about why
3d7ae351
fix
(deploy) "filed 0 repair ticket(s)" next to "with the repairs queued"
fedb3c77
fix
(agents) the 15 minute budget was killing tickets for doing their job
19f72666
fix
(dispatch) step timings were thrown away by every ticket that went wrong
cccf96cb

v3.11.0September 18, 2026+1 internal

fix
(deploy) a commit landing on main during a deploy broke that deploy
b4a80e4f
fix
(runner) a failed ticket's reason lived only in a log line that scrolls away
6289b5a2
feat
(chat) a highlighted element now rides along on the message — and a ReferenceError I shipped
ab3f757f
fix
(executor) a timeout that could not tell a long test suite from a hung command
c1de90fb
fix
(board) the check I shipped an hour ago cried wolf on six of its first eight findings
b45a95db
fix
(noise,lifecycle) two small things that each made the pipeline harder to read
8b5a7301
fix
(redgreen) a ticket was blocked for vitest not being able to run Playwright
6fe8aed1
feat
(board) the board can now say when it is lying about itself
be2f47b0
fix
(agents) an agent outlived its runner and edited a worktree that no longer existed
6677357a
feat
(preview) point at the bug instead of describing it
a9196d1f
fix
(critical-path) the other way a dev server goes stale, which cost two red runs today
820b55a0
feat
(preview) the previewed page now answers the dashboard's "what is at this point?"
da55487f
fix
(evidence) a reason from three attempts ago read exactly like this attempt's
f97f24e0
fix
(gate) the machine's identity changed depending on which directory you were in
76460a5d
fix
(executor) one agent writing binary to stdout produced an 814KB ticket log
278f7bab
fix
(daemon) "restart" cannot create, so every deploy died on a stack trace
0ccafeea
fix
(gate) the shell was read as the push's arguments, and a red sha reached main
44d27065

v3.10.1September 18, 2026

fix
(navbar) a ReferenceError was being swallowed into showing Sign In to signed-in users
8bb90c19
docs
(herdr) remove it where it reads as current, keep it where it is the record
81ef8a30

v3.10.0September 18, 2026

feat
(scope) a ticket may not re-take the evidence it is judged against
790ca066
fix
(navbar) links back on the right, and a real session is discoverable again
dcac1333
feat
(pipeline) run the quality gate before landing, not just the tests
2d7f8ebe
feat
(pipeline) deploy is part of the workflow, so completed means published
f5e5c834
fix
(board) the dashboard drew a vocabulary nothing writes, so it showed an empty board
725abc9d

v3.9.0September 18, 2026+79 internal

feat
(hooks) xswarm's hooks belong to the project, not to the machine
47a07b89
fix
(agent) nothing bounded an agent run, and one `tail -f` stopped the pipeline for 41 minutes
3682a7ab
feat
(dispatch) measure where a ticket's 20 minutes actually goes
37e0594f
fix
(pipeline) one killed runner wedged the queue for ever
83cd9a56
fix
(observe) a config is not a test, and calling it one blocked four good tickets
9b421b77
feat
(brief) the orientation command knew nothing about the thing doing the work
23e9b5d5
fix
(pipeline) the board was never told, so a night of work was invisible
2965492b
feat
(api) agents can read held territory before they open a worktree
ceeeafe1
refactor
(api) the claim counts in-flight tickets from one subquery, not two
9ee1a4c6
refactor
(e2e) the console recorder keeps less state and reads each file once
a1da6e3d
feat
(daemon) the worker asks the scheduler what is next, not pending[0]
367f1ca4
fix
(dashboard) the console errors on /dashboard/live, and the empty grid nobody logged
bd36021b
feat
(tasks) a claim says which files it takes, and the second one reaching in is refused
0ee44411
fix
(tasks) a claimed ticket could stop existing, and nothing anywhere said so
8e8f01bd
fix
(agent) an API key was leaking into every agent, and killing it in two seconds
fc98d6c9
fix
(dispatch) a ticket nobody looked at was being filed as done
dbcc8a33
fix
(stages) the merge gate would have blocked every non-code ticket for ever
621a9aac
feat
(stages) the stages gate the merge now, and every refusal says why
9ca6bf69
fix
(test) give the browser launch one retry, because launching is setup not the claim
0a077062
fix
(test) browser-lifecycle raced its own readiness signal, and blocked the gate twice
56ca6fa7
fix
(stages) the red/green reason said THAT, never WHY — and 45 tickets prove it
c0bd59c9
feat
(gate) the critical path names which specs failed, not just how many
7e6510b3
feat
(scripts) inventory the fleet projects that can hit the SSR optimizeDeps stall
374fb51b
fix
(daemon) every task line names the ticket and the step that died
05f5d379
fix
(releases) fetch the tags the build needs, so the changelog stops going stale
ad0c4f99
fix
(web) the blog card renders as a surface, on the day it was published
03163537
docs
(decisions) the blog card stops being a 1px outline with dead space in it
dd29c5e8
fix
(navbar) three anchored zones, so a label edit stops moving the whole bar
1a3868d3
docs
(decisions) the navbar's geometry stops being derived from its label text
ca93af87
feat
(visual) reproduce the snapshot failures on purpose and keep the pictures
0d597663
refactor
(usage) hoist the created_at stamp, drop the duplicated incident prose
1366ff6f
refactor
(daemon) one fresh set of readings per sample, not eight mutations
92b3b8c2
feat
(release) the repo can prove a push to `production` still ships
e8bcb223
refactor
(release) a push to a branch is the only way the workers ship
a141b515
feat
(install) git is configured before the install touches a repository
c3275490
refactor
(quality) the ledger answers "is this pid gone" once
830c95f4
fix
(quality) a browser an audit launched cannot outlive the audit
f87fbbff
feat
(pipeline) UI tickets get their appearance decided before anyone writes code
5a4f6153
feat
(reap) the janitor was wired to nothing, and looking at a ninth of the machine
0c26f3ae
fix
(gate) the integrator role existed but could not be assumed
0ed0cece
fix
(executor) the agent never ran because nobody owned stdin
56ddaab6
refactor
(reap) two modules for one job, reduced to one
ab832a5b
fix
(triage) the deduper keyed on prose, so a model rewording a title refiled the work
8e005f48
fix
(gate) a generated index older than what it indexes, caught rather than endured
f16e37fd
refactor
(releases) one invariant deserves one guard and one describe block
12cc2976
fix
(gate) the push gate was reporting green with a quarter of its suite unmeasured
b906cbeb
feat
(design) a style guide, the tokens it needs, and an audit that enforces it
aa56bfb6
fix
(elegance) three exports of mine that nothing imported
f534e8bb
feat
(chrome) a debuggable browser an agent can look through, and its leftover tabs
4078ab7c
fix
(e2e) a baseline is a photograph of one build, not a measurement of any
01b40652
feat
(reap) abandoned tooling browsers, identified by profile rather than by guess
50e3a1e3
feat
(cli) xswarm reap, and a correction to what I blamed for the red candidates
46684e40
fix
(pipeline) stop accumulating processes, and stop over-subscribing memory
7d4e351c
fix
(queue) a candidate that could not be measured is not a red candidate
11661066
fix
(gate) correct my own explanation of the cold-tree note
496f4633
fix
(e2e) treat the headless shell as part of the engine, guard every entry point
96fcbd1c
fix
(deploy) one D1 migration path, named by binding and environment
ca963f9c
feat
(connect) a pairing code is spent by the machine it pairs
f0e66ba1
feat
(connect) username-prefixed rotating pairing codes
0bf163ed
feat
(deploy) roll back to the last verified-good deployment on failed verification
8ca9240f
refactor
(app) one place writes the git credential helper's result
ee7f7881
fix
(gate) a cold-cache failure was blaming the change under test
fc720769
feat
(api) workers get a git credential that dies within the hour
4307b20a
feat
(dispatch) record what the refactor pass touched, so the next case is data
69832fd3
feat
(visual) the sweep now says how long it took, and which route took it
fc42c95e
feat
(deploy) the visual snapshot ticket says what broke, not how many routes broke
51a60a6c
fix
(hooks) the worktree rules were reading the wrong directory, so they never fired
075b96df
feat
(daemon) the scheduling tick consults persisted run state before claiming
6ca25f26
fix
(gate) warming the first hop warmed the half that was never the problem
40d6ffe2
fix
(gate) blocking the agent's push was not enough
b710f48f
fix
(e2e) the browsers the suite needs are now installed by something
d9f5b739
fix
(gate) the prompt said do not push; nothing made that true
dee201c2
fix
(deploy) every wrangler environment declares its own routes; none inherits
ea628d5f
fix
(worktree) the same server leak, one layer down, on the path every ticket takes
4f43a8a0
fix
(queue) a discarded candidate left its dev server holding the port
2931412c
fix
(gate) the critical path had never once run against a cold server
dca3cef5
fix
(gate) a kill is not a close, and the first candidate proved it
22d3388a
fix
(gate) e2ePassed has been certifying a tree nobody tested
6f6bce40
fix
(observe) red/green was reverting to the wrong baseline
8fd9ba1a
fix
(runner) going round had no bound, and I put it there this evening
80f3ad6a
feat
(deploy) the stamps agreed while every page served [object Object]
e40fb0f0
perf
(refactor) the cleanup agent had to find the work before it could do it
a4b3b83a
feat
(sync) the board and the pipeline had never been introduced
352abbf9
feat
(cli) `task show` says what a ticket still owes, not only where it is
d72b1fa5
fix
(pipeline) the first real ticket could not have landed, and neither could any other
30f1bccf
feat
(cli) mount `xswarm work` so a session can declare its ticket
0d496c0c
feat
(cli) the pipeline was mounted on nothing
c4838a0e
feat
(stages) build Deployed — the last stage, and it asks an existing question
efacddd3
refactor
(task) hold this session's own new code to the standard
4ca71424
feat
(stages) build the merge queue — the last stage with no machinery
8ea5c895
fix
(gate) the pipeline was the one component pushing untested code
b200c0bf
feat
(stages) build the Refactoring stage, which had no machinery at all
f7a663fe
fix
(status) two live conditions still spoke the deleted board vocabulary
cf493c84
feat
(stages) red and green are observed now, not taken on the agent's word
d9d4c6a9
fix
(stages) nothing wrote the evidence, so no ticket could ever leave Coding
ec1fc75e
fix
(e2e) a dev server older than node_modules produced 9 red tests that were not real
7bf5fc00
fix
(e2e) a missing system library is UNMEASURED, not 447 failing tests
55ba72f7
fix
(visual) mask the version badge — it invalidated every baseline on every deploy
8d54b2a3
fix
(identity) one value, one name — /auth/me stops renaming github_username
99a83583
feat
(workers) the card now says what the machine is, and stops drawing live meters over silence
2ceb01f5
fix
(sidebar) collapsing the menu hid every project, which was the complaint
d79eebaf
fix
(gate) the push gate carried its own port, and disagreed with the dev server
bb58858f
feat
(watchdog) detect sessions that went silent without stopping
bf7d96c9
fix
(task) an agent that commits its own work was read as having done nothing
119271a5
feat
(cli) xswarm run — and the pipeline carried its first task
7de26cb0
feat
(log) a task's start and failure lines now name the ticket
dde5d1a6

v3.8.0September 15, 2026+1 internal

fix
(stopping-rule) a refusal must be observed, and survive a search for a way round
9952206d
fix
(releases) the Release History page had no history
d45eb971
docs
(harness) two traps that cost an hour tonight
fa1a6a5d
fix
(deploy) the staging check had its own copy of the sha comparison
14607ddc
fix
(web) the merged API must proxy until this worker has the secrets
e0fc8ad5
fix
(deploy) a successful deploy was reporting UNMEASURED
7d3a0f1e
fix
(web) the merged /api/* handler threw on every request
3dc3fe2b
fix
(web) I broke `astro dev` for the whole repo, and shipped 550KB of dead weight
85572883
fix
(watchdog) one block was disarming the guard for the rest of the session
69de2aef
fix
(web) TerminalView rejected when its container had gone
2a2c853a
fix
(web) /dashboard/live asked for previews nobody had opened
8fb662ad
feat
(cli) xswarm task — add, list, show over the local store
142aea15
feat
(task) the loop runs end to end — a task becomes a branch on a remote
fb4c3376
feat
(task) tell the agent the stopping rule before it starts, not after it stops
219cccd4
fix
(watchdog) a clean tree is not evidence the job is done
7027e8de
feat
(cli) xswarm work — the write side the watchdog never had
0c3a099c
feat
(task) dispatch a task to a real worktree, and three bugs it found
79b43a4c
feat
(task) the runner tick, and a canary pen that proves it
1eea3966
feat
(cli) shared json envelope for CLI commands
aaae1f70
feat
(task) the framework core — task object, lifecycle, selection, watchdog
4452da84
feat
(task) express the development lifecycle as data
55344977
feat
(map) index .ts, .astro and .svelte — 211 files to 340
abc82b0b
feat
(map) repository map — 0016, built because "not worth digging" was the symptom
bae56d9f
fix
(web) declare ExecutionContext properly instead of casting past it
86447ea0
refactor
(web) serve /api/* in the web worker, not a second one
924b9cb3
refactor
(stages) E2E is part of coding, not a stage after merging
312fa31e
fix
(daemon) the memory ceiling was on one start path, not both (P0.3)
ff56237a
fix
(daemon) enforce the agent cap where processes are spawned (P0.1, P0.2)
50ede299
fix
(quality) three gate regressions, one of them a check that was wrong
12ac5583
docs
the pipeline repair plan — work on the box, fix the first failing step, never work around it
5f9dee87
fix
(scheduler) the cap is on concurrency, not on batch size
98f8e276

v3.7.2September 14, 2026

fix
(trace) the instrument was writing fixtures into the real log
3b4d2605

v3.7.1September 14, 2026

fix
(executor) the model CLI was invoked malformed, so no agent ever ran
d113cca9
fix
(executor) the CLI refused every invocation for want of --verbose
c8116314

v3.7.0September 14, 2026

feat
(planner) a filed request becomes tickets, with no human in the path
35765799

v3.6.3September 14, 2026

fix
(deploy) let the two workers converge before judging a half-deploy
c2d09378

v3.6.2September 14, 2026

fix
(deploy) wait for the daemon to come back before proving it
c85adc29

v3.6.1September 14, 2026

fix
(scheduler) maxParallel is enforced by a caller, not merely defined
b5fe26c8

v3.6.0September 14, 2026

feat
(prove-it-live) every mechanism must be observed ACTING, or the deploy fails
d55ca534

v3.5.2September 14, 2026

fix
(daemon) guard the path that actually executes tasks
ef8112e1

v3.5.1September 14, 2026

fix
(daemon) a stale daemon refuses work instead of warning about it
bdca8bdc

v3.5.0September 14, 2026

feat
(watchdog) wire the Stop hook, so ending a turn with work outstanding is noticed
85a927e3

v3.4.0September 14, 2026

feat
(brief) orient in 0.3s and 282 bytes instead of 6s and 3.9KB
938422f1
docs
(harness) one document a session reads instead of re-deriving the pipeline
d898bd5b

v3.3.1September 14, 2026

fix
(reports) expanded detail reads documents.body, not .content
42d493ed

v3.3.0September 14, 2026

feat
(reports) each report summarises its findings on the line, expands in place, prints to PDF
f648d36c
fix
(daemon) stop pushing empty branches, and make the running sha observable
e30c9a37

v3.2.4September 14, 2026+1 internal

fix
(release) a deploy that mints nothing still reports the release it carries
e6bbab59

v3.2.3September 14, 2026

fix
(deploy) verify BOTH workers, and never substitute a stale number for a missing release
28657b58

v3.2.2September 14, 2026

fix
(web) the release reaches the surfaces Chad actually looks at
94d00ba0

v3.2.1September 14, 2026

fix
(health) report the release, not the build stamp that cannot know it
41969c37

v3.2.0September 14, 2026+1 internal

feat
(release) resolve the displayed version from the deployed sha, at read time
100e2568

v3.1.0September 14, 2026+76 internal

fix
(deploy) the --project filter was being swallowed by a nested npm run
15363b87
fix
(deploy) run the engines this box has, and record the rest as not_run
a9a28b18
fix
(e2e) a repair ticket belongs to a project, or it can never be planned
1812c5a3
docs
correct the DNS item — that was our own sandbox, not an external refusal
75e1f1a4
feat
(critical-path) the push gate's suite, with a budget that fails rather than warns
cf8ef2fa
feat
(gate) nothing leaves a worktree without a green critical-path run for that exact sha
99f35b8b
feat
(preview) a dev server per worktree, on localhost, for the push gate to test against
19a6235f
feat
(run-control) pause and resume a project's work engine, persisted
6c42bfeb
docs
handover — state, what shipped, and the traps that cost time
3d10435d
docs
the workflow implementation plan agreed 2026-09-14
41acafd0
fix
(e2e) a suite that could not run must block, not pass
784481f5
feat
(scheduler) selectNextBatch — a pure answer to "what should be picked up now"
3c519e2f
feat
(board) one stage vocabulary, and a board that shows work instead of an inbox
83a8e04f
fix
(e2e) name a repair ticket by its cause, not by raw terminal output
40283149
feat
(release) a version names code that reached production, minted after it gets there
9160ee1e
fix
(version) one source, derived at read time — delete the copies
5f8f42dd
fix
(pipeline) define the E2E report path the triage reads
6daca005
fix
(pipeline) a failing E2E files repair tickets and continues, instead of halting
cbd22c22
fix
(web) do not downgrade an already-converted wss: to ws:
012911fb
fix
(web) relay sockets follow the environment instead of hardcoding production
6d128aab
fix
(daemon) the coordinator polled a path that does not exist
e0b606ef
fix
(coordinator) give the chat queue a consumer — this was the logjam
a5c714cb
feat
(events) publish workflow events, and ask them where work dies
176b9148
feat
(watchdog) interrogate the stop — sessions invent reasons to quit
fb8cc17f
feat
(watchdog) enforce the workflow on Stop, so the coordinator does not have to
fa91d89c
feat
(coordinator) the runtime half — poll, answer, plan, and only then mark delivered
ab707dac
feat
(coordinator) the prompt half of the consumer nobody wrote
5ed6163f
docs
0017 — planning meeting and iterative session are inverted in ordering
56464ca1
docs
0017 — iterate mode is one ticket per session, kept as the design record
1433b236
docs
0017 — coordinator answers on one thread, plans on another
4b1bd6c7
docs
the cloud layer routes, the machine plans
8101838c
docs
correct 0017 — user talks to the coordinator, never to a project session
121385f0
docs
backlog 0017 — replace herdr with the chat channel that already exists
b5c66bcf
feat
(daemon) resource reaper — a cron watchdog that reports what the fleet leaked
29ceea30
feat
(telemetry) per-stage entered/started/ended, so queue time is measurable
8df70502
feat
(pipeline) actually call the reporter from the box's heartbeat
760fc514
feat
(pipeline) the box reports .xswarm/project.yml, so CI can say source:repo
5efd1a0d
fix
(pipeline) drop the unreachable protected-branch guard from pushBranch
138eb656
feat
(pipeline) a finished ticket now reaches somebody — push the branch, record it
d7ce64c2
docs
backlog 0016 — agent-oriented repository map, with the measurement design
45107636
fix
(web) unblock the root test command — 5 type errors were hiding a whole workspace
e4ae4d47
docs
park the Team access + P2P meetings idea with its constraints
9b43a446
feat
(project) six tabs — Overview, Activity, Tickets, Plan, CI, Reports
1f50f1da
feat
(hooks) flag integrator commands that fall through to the classifier
ac14ded7
feat
(hooks) the integrator authorises its own pipeline verbs, narrowly
8f36d415
feat
(hooks) gates and routing from Claude Code events, replacing the git hook
81312093
fix
(daemon) stop the worktree cleanup destroying the agent's work
922c6682
feat
(daemon) one git worktree per task, so tickets can run in parallel
18c88c87
fix
(board) tickets reach To Do — placement was never derived from dependencies
5bd08e14
feat
(activity) one live board that fills the screen, instead of three lists
dcc10f43
feat
(requests) the planning meeting turns a request into tickets (#168 log jam)
13d37600
fix
(deploy) load the Cloudflare token, and stop blaming the schema for a missing one
3ba7c748
fix
(dev-preview) carry path + runtime port detection onto this branch
ed12ca8f
fix
(dev-preview) learn the port from the dev server instead of only guessing it
8029a5eb
fix
(dev-preview) follow delegation by PATH as well as by workspace name
e8fe33a7
fix
(preview) point the UI at the relay, which is why nothing looked like it worked
c1acdf8d
fix
(relay) re-open the preview socket from the sweep, so a daemon restart heals
5e51cff0
feat
(relay) carry the persistent preview socket onto this branch
faa9f10f
feat
(relay) the box holds its own preview socket, so a preview works between tasks
7e364487
fix
(api) dev-token endpoints called logAudit with the wrong arguments, and 500'd every time
b8a857e5
feat
(relay) carry the http_req answer onto this branch
cc241272
feat
(relay) answer http_req on the pipe that already exists, and give it an origin
0d82ce70
fix
(e2e) scope the releases assertion past the nav's version badge
cbf28c66
fix
(e2e) /releases could never have a stable pixel baseline
181bc124
fix
(e2e) theme tests pointed at an element the page does not have; commit baselines
d6516665
fix
(e2e) the deploy gate was red on 13 rotted tests, not on broken product
f13ee40c
docs
(adr) 0008 — the preview transport must assume nothing of the customer
e8b7a104
fix
(dev-preview) carry the never-called-sweep fix onto this branch
31691a30
fix
the idle sweep was never called, and three symptoms fall out of it
7ce95d6d
fix
(e2e) scope two locators that assumed a single element
71343493
fix
(a11y) the logo typewriter ignored prefers-reduced-motion
8a13dc41
fix
(e2e) the sign-in test failed on correct behaviour, and blocked every deploy
32e4cd2a
fix
(deploy) promotion was structurally impossible, and froze production
915689ad
feat
(chat) stream replies, and make the deployed build legible
847fb000
feat
(studio) one tab, dev site above, orchestrator below
2384a03f
fix
(dev-preview) carry adoption/allowedHosts/slot-reaping fixes onto this branch
02992dbb
fix
(dev-preview) three defects behind a preview that reported success falsely
db8f2eea
fix
(dev-preview) carry the workspace-port fix onto this branch
f919207c
fix
(dev-preview) follow workspace delegation when detecting the dev port
4ebba5f9
fix
(ui) three defects found by opening the page, which I had never done
c132eb43
fix
(ui) stop putting new things on top of the thing the page is for
bcf58b3e
feat
(workers) report what machine a worker actually IS, not just how busy it is
658c87e2

v3.0.136September 12, 2026+1 internal

v3.0.135September 12, 2026+1 internal

feat
(planning) the room sits beside the conversation, and the Generate button is gone
5153571c
feat
(room) the cast, the per-phase roster, and the panel that shows who has NOT spoken
535469ac
fix
(adr-0006) the dev proxy needs an origin, not a path prefix
f5bb30ca
docs
the room — Barry chairs, names encode roles, identity colour stays out of state's way
8108b268
docs
phases set the roster, and the orchestrator casts the room turn by turn
9fa54847
docs
the framework is the product — what human teams have that agents lack
b2a9f03b
docs
the simulated team is a thinking tool, not a cast of characters
ee30746d
feat
(design) command deck, and the view no other tool draws
7873b8dd
docs
the big idea — the bottleneck moved, so the grammar must change
a1bf8f95

v3.0.134September 12, 2026+1 internal

v3.0.133September 12, 2026+2 internal

docs
designs for the machine card and the architecture planning centre
a3abafee
feat
(dev-proxy) worker half of ADR 0006 -- capability token + relay-backed HTTP proxy
a9c9246c
feat
(reports) the audits were always running; nothing ever read them back
4d535eb9
feat
(activity) build the screen on work items, because the plan was never the problem
3f02fbc3

v3.0.132September 12, 2026+1 internal

fix
(sidebar) recent projects is topped up to ten, not collapsed to visit history
3e05318b

v3.0.131September 12, 2026+1 internal

feat
(nav) drop Documents from the sidebar; ADR for making the dev link real
20c326f0

v3.0.130September 12, 2026+1 internal

fix
(project) three cards said "Not deployed" while all three environments were live
30d5a8d2

v3.0.129September 12, 2026+4 internal

fix
(e2e) `npm run dev` attaches to a running dev server instead of exiting
65289623
fix
(project-logo) keep the file header on line 1; add the missing header to config.astro
319e9414

v3.0.128September 12, 2026+4 internal

fix
(e2e) the suite waited on a port the dev server never listens on
d7a7f591

v3.0.127September 12, 2026+5 internal

fix
(deploy) stamp BUILD_VERSION on web deploys, and shorten the staging note
33095475
fix
(deploy) --staging deploys xswarm-web-staging, not production (#164 item 4)
1e7ee014
fix
(project-logo) derive the icon from the production environment, not the worker name
47409ee7

v3.0.126September 12, 2026+1 internal

v3.0.125September 12, 2026+1 internal

v3.0.124September 12, 2026+1 internal

v3.0.123September 12, 2026+61 internal

feat
(chat) the popup knows which architecture document you are reading
25c3ca95
fix
(deploy) correct the staging story — deploy:web:staging ships PRODUCTION
9a5b01b2
feat
(project) the dev window and the chat, side by side — the supervisory workflow
32849f77
feat
(architecture) real diagrams for xswarm, authored in the repo
04fc7c1e
fix
(planning) bring back the planning meeting, without bringing back the tab
e13dfb16
feat
(deploy-state) give deploy state an environment, and the header all three links
53737167
fix
(architecture) read the knowledge base through DocumentReader, not a second renderer
b936ab71
feat
(project) four tabs, one tight shared header, cached so it never flashes
dcd2ae44
feat
(architecture) project knowledge base lives in the repo, reads in the tab
d33b3e66
docs
three environments and the one path between them
c0bc9d27
docs
the framework says tests run in a real browser with a real session
f3a9db57

v3.0.115September 11, 2026+2 internal

fix
(dashboard) the context gives way when the viewport cannot afford both it and the chat (#144)
21beae63

v3.0.114September 11, 2026+3 internal

feat
(daemon) the box attributes sessions to the project ids it already knows (#151)
0a504681

v3.0.113September 11, 2026+1 internal

fix
(dashboard) the avatar's alt text read the same field that does not exist
092a4a5c

v3.0.112September 11, 2026+3 internal

fix
(chat) pin the composer to the viewport, not to a box that is itself off-screen (#144)
dfa00d05

v3.0.111September 11, 2026+1 internal

fix
(rollup) match a checkout directory name against the lowercase cloud slug
64e25341

v3.0.110September 11, 2026+1 internal

fix
(rollup) sessions were written by slug and read by id, so Health said Unknown 42 times (#147)
e047f499

v3.0.109September 11, 2026+2 internal

v3.0.108September 11, 2026+2 internal

fix
(dashboard) the sidebar handle branch never matched, so it always showed the email
f324d3fb

v3.0.107September 11, 2026+1 internal

v3.0.106September 11, 2026+4 internal

perf
(cost) stop asking who you are three times per navigation (#141)
bf6db7b4

v3.0.105September 11, 2026+2 internal

v3.0.104September 11, 2026+4 internal

v3.0.103September 11, 2026+2 internal

perf
(projects) render the table from cache, and show the signal that was already there (#140)
22a3c2fa

v3.0.102September 11, 2026+1 internal

perf
(nav) stop making a first-time visitor wait for identity before asking for the lists
ad2d31d4

v3.0.101September 11, 2026+1 internal

fix
(dashboard) the hard-coded viewport offset caused the overflow it was meant to prevent (#139)
23dc1ea5

v3.0.100September 11, 2026+1 internal

v3.0.99September 11, 2026+1 internal

v3.0.98September 11, 2026+2 internal

fix
(dashboard) an explicit height beats align-items:stretch (#139)
cabf841f
fix
(project-logo) the monogram fallback was breaking out of its own attribute
6bd748db

v3.0.97September 11, 2026+1 internal

fix
(dashboard) the chat filled the pane on paper only -- astro-island has no box (#139)
6e9e6f0b

v3.0.96September 11, 2026+1 internal

feat
(dashboard) the chat fills the screen -- it is the page, not a panel on it (#139)
63bd2c17

v3.0.95September 11, 2026+1 internal

v3.0.94September 11, 2026+1 internal

v3.0.93September 11, 2026+2 internal

fix
(admin) seed page joins the dashboard shell, and a guard so this stops recurring
933eb6a8
perf
(nav) one cached nav object, painted before any request is made (#138)
4dcdc960

v3.0.92September 11, 2026+1 internal

fix
(pwa) stop serving cached HTML that points at deleted stylesheets
b6f899c3

v3.0.91September 11, 2026+1 internal

fix
per-project documents move to the project page, out of the global Documents area (#137)
ceedb253
docs
the Development Framework — how an idea becomes assured code
5a8754a2
feat
the gate reports its own quality state on every run (#136)
e74e52ff
fix
content-hash discriminator + repair tool for the stale-shared-checkout class of bugs (#135)
e5a6f59b
fix
extract shared recent-projects/documents nav list, repay the elegance accept (#129)
780e912c

v3.0.90September 11, 2026+1 internal

fix
(deploy) a failed upload has nothing to roll back, and saying otherwise was a lie
7cdb497e

v3.0.89September 11, 2026+1 internal

v3.0.88September 10, 2026+1 internal

v3.0.87September 10, 2026+1 internal

fix
(deploy) let production, not wrangler's exit code, decide whether a deploy worked (#134)
164cce45
fix
(visual-audit) an element scrolled out of view is not covering anything
79174ace
fix
guard the bare `pm2 restart xswarm-daemon` (#133)
bb283b02

v3.0.86September 10, 2026+1 internal

fix
(responsive) Sign In was off-screen from 768-1078px; docs unreadable on a phone
670d21b4
fix
strip blockquote markers instead of skipping them in description extraction
bfe722b6

v3.0.85September 10, 2026+1 internal

v3.0.84September 10, 2026+1 internal

feat
real per-project descriptions, hot-linked icons, and quality/status/KPI summary (#127)
c381f4bb

v3.0.83September 10, 2026+1 internal

perf
(blog) serve images at the size they are displayed
23b7d1f7

v3.0.82September 10, 2026+1 internal

perf
(blog) 17.7 MB of images on one article, and a 40-second LCP
7b98dacc
fix
refuse to restart the daemon when the checkout has drifted from HEAD (#132)
f819fe43
fix
raise undici's connect timeout to stop false connection failures on Boss (#128)
a192fd62

v3.0.81September 10, 2026+1 internal

fix
(web) guard the last unguarded auth fetch, and make the rule checkable
8b5c9eb6

v3.0.80September 10, 2026+1 internal

fix
(theme) remove duplicate *:focus-visible rule shadowing the light-dark aware one
bf39987c

v3.0.79September 10, 2026+2 internal

fix
(security) clear all 5 high advisories -- wrangler was pinned four times at three versions
07d1ed15

v3.0.78September 10, 2026+1 internal

fix
(dashboard) active-state on platform sub-nav and account/settings footer
7f9933c9
fix
(daemon) stop retrying a WebSocket handshake that answered 404
398a6c08
fix
delete the daemon's dead WebSocket channel (#125)
50912aeb

v3.0.77September 10, 2026+1 internal

v3.0.76September 10, 2026+1 internal

v3.0.75September 10, 2026+4 internal

fix
(dashboard) re-apply worker/task compact band + nested-nav active-state
b743e228
fix
(seo) /blog had no top-level heading, and no page on the site had structured data
13fb1e17
fix
(quality) the gate was building a shell command from a file-controlled value
cd0a76a3

v3.0.74September 10, 2026+1 internal

fix
(quality) the gate was building a shell command from a file-controlled value
b3fcac2e

v3.0.73September 10, 2026+1 internal

v3.0.72September 10, 2026+1 internal

feat
(dashboard) render deploy state on the per-project hub
d6a48002
fix
(web) docs sidebar and related-post links pointed at /undefined
aa0d68ee

v3.0.71September 10, 2026+5 internal

feat
deploy pipeline reports its own state (#122)
02049dd9

v3.0.70September 10, 2026+1 internal

v3.0.69September 10, 2026+1 internal

feat
(dashboard) render recent commits on the per-project hub
f2501343
feat
(project-logo) wire monogram into every place a project is shown (#120)
fcb86f3e

v3.0.68September 10, 2026+2 internal

feat
recent-commits box-relay (cloud + box halves of #59)
c5f4ba9c
feat
(project-logo) deterministic monogram fallback (part 1 of #120)
9dc19fd1

v3.0.67September 10, 2026+3 internal

feat
(nav) nest recent documents under Documents, sidebar + user menu
5206cd60
fix
(seed-documents) key idempotency on project_id too, and survive a busy box
c8938735
fix
(seed-documents) match project by registry path, not a name substring
43378642
feat
(documents) ongoing write path + nested nav sub-links
f8bf2620

v3.0.66September 10, 2026+1 internal

fix
(nav) Layout.astro renders Navbar once, drop the unused Orbitron preload
e6fcffc8
docs
ingest ADRs into the Documents dashboard, idempotently
4f01a809

v3.0.65September 10, 2026+1 internal

feat
box-side isAncestor fulfillment (ancestry-check.js)
d9cbdf88

v3.0.64September 10, 2026+1 internal

v3.0.63September 10, 2026+4 internal

feat
ancestry checks -- box-relayed isAncestor for derived status
bdd1b99a

v3.0.62September 10, 2026+1 internal

v3.0.61September 10, 2026+4 internal

fix
(nav) project names in menu/sidebar must never wrap, reduce indent
c4420c42

v3.0.60September 10, 2026+1 internal

v3.0.59September 10, 2026+2 internal

v3.0.58September 10, 2026+3 internal

feat
project enable/disable toggle (on-hold state)
bf393e88
fix
(db) failed migration must not be marked as successfully initialized
70782f9e
fix
(blog) correct the heading outline on every post, with no visual change
d7719efe
fix
(blog) dedupe hardcoded purple literal, drop 2 unused palette tokens
2dd355ba

v3.0.57September 10, 2026+1 internal

v3.0.56September 10, 2026+2 internal

v3.0.55September 10, 2026+2 internal

feat
(workers) move connect-worker below the grid, de-emphasize; decide against a live token
326e6cb6

v3.0.54September 10, 2026+3 internal

v3.0.53September 10, 2026+2 internal

fix
(blog) emit real width/height on every hero, measured from the file
04bf20b7

v3.0.52September 10, 2026+1 internal

v3.0.51September 10, 2026+1 internal

perf
(middleware) the admin lookup could not help the pages it was widened for
83bb7006
feat
rebuild /dashboard/projects as a sortable/filterable table
6fb68f1e

v3.0.50September 10, 2026+1 internal

v3.0.49September 10, 2026+2 internal

fix
remove dangling build:cli-chat script, packages/app has no build step
c3a14949
feat
worker cards -- btop-style system monitor redesign
ef6af9c1

v3.0.48September 10, 2026+1 internal

v3.0.47September 10, 2026+1 internal

v3.0.46September 10, 2026+1 internal

v3.0.45September 10, 2026+2 internal

feat
project health fields + fix recent-projects fallback ranking
74e11508
fix
(dev-preview) guard against concurrent fulfillment of the same project_id
41e3786d

v3.0.44September 10, 2026+1 internal

fix
drop 2 unused exports flagged by elegance audit
cc12266f
feat
derived request status + rank ordering + scope-aware claim locks
3c2a8207

v3.0.43September 10, 2026+1 internal

v3.0.42September 10, 2026+1 internal

v3.0.41September 10, 2026+4 internal

feat
rebuild /dashboard to Chad's literal spec
5166eab0
fix
anonymous visitors were fetching /api/projects on every page and logging a 401
9687831a

v3.0.40September 10, 2026+1 internal

v3.0.39September 10, 2026+2 internal

fix
(daemon) scope worker-init exit to worker, not whole process
9695c547

v3.0.38September 10, 2026+13 internal

fix
(blog) gray-500 text fails WCAG AA on the blog's own background; author avatar squashed
f2400c73

v3.0.37September 10, 2026+1 internal

v3.0.36September 10, 2026+1 internal

v3.0.35September 10, 2026+5 internal

fix
Lighthouse — contrast, dead sitemap path, unused analytics bundle, and a gate that could not tighten
ab95a1b8

v3.0.34September 10, 2026+4 internal

v3.0.33September 10, 2026+1 internal

v3.0.32September 10, 2026+5 internal

v3.0.31September 10, 2026+5 internal

v3.0.30September 10, 2026+10 internal

docs
ADR-003 addendum -- cards vs. tables, close the settings/workers/documents backlog
749b1a1d

v3.0.29September 10, 2026+2 internal

v3.0.28September 10, 2026+5 internal

docs
rewrite Development Guardrails as the full meta-harness spec
dc259c5c

v3.0.27September 10, 2026+6 internal

v3.0.26September 10, 2026+214 internal

fix
DashboardLayout.astro Element.focus typing (was blocking every push)
e54ccac8
fix
raise text-tertiary and Shiki comment contrast to WCAG AA
3d34081e
docs
remove duplicate H1 heading from all doc pages
b14555c3
docs
replace the guardrails doc's abstract test-quality point with a reproduced example
b00814dd
docs
five product docs Chad asked for -- coordination, guardrails, setup, daily workflow, integrations
379e2a4f
fix
(auth) magic-link login mints an unsigned token that never authenticates
3a0f5439
docs
API action inventory -- every user action mapped to its route, gaps flagged
469520ba
fix
getSocketTicket was called but never defined; upgrade vite to current
e61f1746
fix
(web) patch astro isNode misdetection that broke all SSR on Workers
531270b5
fix
the web app could not build at all
77b8a6ae
fix
remove dead cli-chat.js (544 lines, unreferenced)
2f0a8d48
refactor
merge 3 single-function files into parent modules
4f5ff599
feat
add visual regression + content page E2E tests for all routes
deb1ab7b
feat
add unit tests for 6 untested API routes and encryption lib
d371b064
feat
implement BDD step definitions for all 11 feature files
cf836052
fix
resolve all 82 TypeScript errors in web package
feee2c88
fix
remove dead cli-chat variants and test artifacts, add QA skill
7da97ec1
fix
auto-migration in production, Svelte 5 build fixes, DO sqlite migration
2d18c588
feat
usage billing, extensions, critical path tests, foreman relay fixes
0779120f
feat
add 3-tier funny pricing and AI provider logos to homepage
a264beec
feat
rewrite homepage with architecture-over-aspiration philosophy
6a93ee9e
feat
implement xSwarm beta MVP — encryption, admin, multi-machine sync, quality pipeline
82d92058
feat
add branded ASCII logo to CLI matching website identity
3d9eb62d
fix
remove GitHub Actions workflows, add manual publish:cli script
327b162e
feat
redesign homepage with conversion-focused layout
9e11faf0
docs
add architecture decisions document (ADR-001, ADR-002)
f988903e
fix
add optionalAuth middleware to /api/auth/me endpoint
be1d18c9
fix
exclude _worker.js from PWA precache
90a2920f
fix
clean up login page and fix PWA manifest path
a56d8977
fix
use correct TURSO_DATABASE_URL env var and static imports
5859f829
feat
unified versioning and releases page
b4c12999
refactor
remove shared package, duplicate crypto code to app and web
91a1deab
feat
enhance forget command with GitHub identifiers and selection
e15141af
feat
add forget command to remove project config
ec442fe5
feat
add CLI and API deploy scripts
d4f35e35
feat
implement zero-knowledge encryption with device approval
95c3ef23
feat
add safe merge script with test-before-merge
cd619109
feat
add CI/CD test workflow and post-merge hook
ead65091
feat
add auto-deploy hooks and release history
3c4d925e
feat
switch PWA to auto-update mode
47a9572e
feat
add Workbox PWA with auto-update prompt
b3efdb3a
feat
add docs sidebar TOC and tutorials TLDR box
b0a0f701
docs
rewrite tutorials around one-command simplicity
a9f5ac5f
fix
skip auth API call when no session cookie exists
5c2a748b
refactor
use package.json as single source of truth for version
a0c6d9c7
fix
add version.json for navbar version display
23f58672
feat
add VHS terminal GIFs and screenshot capture scripts
ad1d1162
feat
add comprehensive tutorials section with 9 how-to articles
0a8264ea
feat
implement GitHub OAuth authentication with profile button
9ebc5a2e
fix
simplify terminal demo banner for reliable rendering
6573034f
fix
improve terminal demo appearance
b92f628d
feat
add auto-update system and improved terminal demo
8cf7cd00
feat
prepare for private repo - remove GitHub links, add investor page
0428fc22
docs
add Technical Strategy document
9bcb7876
docs
add Architecture Decision Records (ADRs)
439da34a
feat
complete staging deployment pipeline
9246866c
fix
add mermaid dependency and fix build errors
0dc4dcf7
refactor
reorganize project structure and add release workflows
f820b9d2
feat
add content collections for docs and blog
c894e968
refactor
simplify to 3-package architecture (api, app, web)
ce6c5bdd
feat
add worker daemon with GitHub device flow auth
649f8a75
feat
add SSR mode with dashboard, API routes, and auth
6004302f
feat
add database package with Turso schema and per-user DB helpers
02b5004b
feat
extract shared package with agents, types, and theme
16412a86
refactor
restructure to packages/* monorepo layout
68dc0562
feat
Add abbreviation field to visual_identity section of agent YAML files
9c70a452
fix
Resolve terminal UI issues
1df0c5a7
fix
Disable mouse capture to enable native text selection
e73ff7fd
fix
Proper terminal cleanup on exit to prevent corruption
03f38a45
fix
Add comprehensive error handling and logging
608ffe57
fix
Improve UI text rendering and add clipboard support
1fccfb38
fix
Multiple UI improvements and bug fixes
987c00d2
fix
Simplify UI for npx - always use TerminalUI
ec3aba89
fix
Ensure npx compatibility with optional canvas dependency
2c411742
feat
Implement advanced terminal graphics for text input
3cb2ab5b
fix
Complete test suite fixes and UI improvements
a5adcc85
fix
Replace require() with ES6 imports in ui.js
6b788393
feat
Add full terminal UI with ASCII art and advanced text editor
d946ebe4
feat
Add conversational API key setup and cost tracking
ccba1595
fix
Make CLI even more conversational with auto-detection
2abd28d3
fix
Refactor CLI to conversational interface per PRD requirements
6f2ba2a6
feat
Complete xSwarm CLI implementation with all core features
239c2a19
fix
Complete CSS refactoring with restored blog styles and terminal theme
68ede13a
fix
Restore blog styles after CSS file deletion
036ebf16
fix
Restore exact original hero title styles
c8dd51f5
fix
Restore all missing styles after CSS refactor disaster
5f87e0ec
fix
Restore navbar styles that were accidentally removed
977705c1
fix
Use non-breaking spaces in navbar to prevent text wrapping
1a97a1e7
refactor
Eliminate CSS slop by creating reusable blog components
4cd41a7d
fix
Add error handling to navbar typewriter animation
8fde8cac

v0.29.3July 7, 2025+2 internal

fix
Add DOMContentLoaded wrapper to ensure typewriter animation runs
2cd9e5b4
fix
Implement typewriter animation correctly in Navbar
89149a1a
refactor
Move typewriter animation to separate component
8aebd51b
fix
Use IIFE to ensure typewriter animation starts
ef885be2
fix
Clean up navbar script and fix syntax errors
99537e86
fix
Add is:inline back to fix Astro script processing error
298de769
fix
Remove is:inline directive and add newline to fix script execution
6c194cee
fix
Simplify navbar typewriter animation with is:inline directive
bd116d55
fix
Use client-side script for navbar typewriter animation
a15797dd
feat
Add typewriter animation to navbar logo
16c40e11
feat
Randomize initial scenario selection
170004b3
feat
Add humorous banking CoffeeScript scenario and enhance React→Svelte migration
379af4bf
fix
Improve agent join notification spacing and style
8959920b
fix
Improve scrolling during typing animation for wrapped text
eb16eb58
fix
Improve agent join notification spacing
95c4ebd6
fix
Use planning stages pattern for agent join delays
dfb47a02
fix
Properly implement sequential agent join delays
aaae7b2b
fix
Add delay before each agent join notification
05426808
feat
Improve agent join notification readability
4259c661
feat
Add SEO perspective on quotes as resource pages
e3ee2cbc
feat
Add automated content discovery and promotion engine
5caa3851
feat
Add win-win partnership model to quote memorization scenario
057c4b8a
fix
Clean up terminal display by removing success messages
b19d15fc
fix
Resolve null reference error in terminal animation
8eab14f3
feat
Add automated content promotion strategy to memorization PWA
3c92872c
fix
Properly clear terminal content between scenario transitions
131b0e81
fix
Reorder scenarios with quote-memorization-pwa first and improve animation loop clearing
40450449
feat
Fix animation loop and add quote memorization PWA scenario
22397abb
feat
Add Deep Researcher agent and standardize planning stages
85b06994
fix
Add HTML attribute escaping to prevent text truncation
5a4fa267
fix
Replace double quotes with single quotes in data attributes to prevent HTML parsing errors
a3dce25b
feat
Generate favicons from SVG logo
302b09a4
fix
Fix chat animation timing and structure issues
652ef880
fix
Fix chat animation freeze by ensuring message display starts
4046b5c9
fix
Restore VT323 font to navbar while keeping Share Tech Mono in terminal
5beca491
fix
Reduce terminal font size from 24px to 18px
27cc8294
feat
Switch to Share Tech Mono font for better clarity
94d168ac
fix
Sharpen terminal text rendering
292b842f
fix
Revert flexbox changes to fix scrolling issue
c9ef3555
fix
Force flexbox display with important flags to override inline styles
0f70cc7d
fix
Switch to flexbox layout for proper text wrapping alignment
311be9b0
fix
Adjust hanging indent spacing for better readability
18ecfaab
fix
Improve chat message text wrapping with hanging indent
875ac0d9
fix
Use inline display for proper text wrapping
cda3ee19
fix
Align agent names with first line of wrapped text
37cf4163
fix
Change chat elements to inline-block for proper line height
e9c307c0
fix
Force tighter line spacing for wrapped text in chat
2aba8ce1
fix
Improve line height for wrapped text in chat messages
7b54b414
fix
Fix frozen chat animation in terminal hero
49e4d4c4
fix
Fix MK agent color conflict with BA
33ddaac3
fix
Ensure unique colors for each agent in terminal chat
f05bca2a
fix
Refine navbar font override selectors
6eabad25
fix
Add missing --font-sans CSS variable definition
f4d1d958
fix
Properly isolate navbar component fonts with global overrides
447e796c
fix
Ensure consistent navbar font across all pages
ed54101f
fix
Improve Mermaid diagram layout and fix rendering issues
ea06034e
fix
Add comprehensive styling for multiple blog post visuals
4281acae
fix
Add comprehensive styling for sandboxed integration blog visuals
819ec490
fix
Replace ASCII art with Mermaid diagram in sandboxed integration post
980f8716
feat
Refactor TerminalHero component with JSON scenarios and enhanced styling
10682579

v0.29.2July 6, 2025

feat
Enhance navbar with terminal-style logo and improved navigation
25d0223c

v0.29.1July 6, 2025+2 internal

fix
Remove automatic version bumping from CI workflow
a11f0654

v0.29.0July 6, 2025+1 internal

v0.28.1July 6, 2025+2 internal

fix
Remove automatic version bumping from CI workflow
a11f0654
feat
Add realistic delays to terminal animation and bump CLI version
000d08ff
feat
Create animated terminal hero section for homepage
4b0273ea

v0.28.0July 6, 2025+2 internal

fix
Update footer with correct GitHub links and contact info
15de2fd2

v0.27.0July 6, 2025+3 internal

feat
Add AI development lessons blog post and planning documents
0943519b
feat
Add blog hero images and visual assets
3a0d1c8b
feat
Add reusable blog components
bdb09fc1
feat
Update styles and components for better blog integration
9ac85537
fix
Replace component-based visuals with self-contained Tailwind styles
1b987c53

v0.26.0July 2, 2025+1 internal

docs
Add 5 more AI anti-patterns from 2024 research
eeb5c4e5

v0.25.0July 2, 2025+1 internal

docs
Add terse AI behavior rules to CLAUDE.md
c0ba3471

v0.24.0July 2, 2025+2 internal

docs
Add outdated package version anti-pattern to AI best practices
20c46e1e

v0.23.0July 2, 2025+2 internal

docs
Create comprehensive AI development best practices guide
9d992646

v0.22.0July 2, 2025+2 internal

refactor
Major technical debt cleanup
e7502088

v0.21.0July 2, 2025+2 internal

feat
Add Mermaid diagram support for blog articles
bac24e4d

v0.20.0July 2, 2025+2 internal

docs
Create comprehensive Design System document
d4890767
fix
correct repository URLs in package.json [skip ci]
2d118365

v0.19.0July 2, 2025+2 internal

feat
Major UI improvements - cyberpunk styling and content updates
06b37fb2
fix
Improve blog index layout and reduce empty space
100300f6
feat
Redesign blog index with varied card sizes
69195102

v0.18.0July 2, 2025+1 internal

fix
Resolve card z-index issues for images and hover states
a9e3afd9
fix
Restore card components to working state from June 29
e4593e4a
fix
Restore working card styles and fix epoch visualization
dcfad0aa
fix
Resolve text overlap in epoch visualization circles
e23a4332
feat
Create cyberpunk blog index page and fix epoch visualization
6ef72fc4

v0.17.0July 1, 2025+1 internal

feat
Improve blog layout and navbar styling
840ac40d
fix
Remove sales-pitch language and fix navbar sticky behavior
f0268f72
feat
Cyberpunk share section and fix content accuracy
d879ab60
fix
Clean up blog layout and remove fake cost data
c33070e4

v0.16.0July 1, 2025+1 internal

feat
Add award-winning cyberpunk blog design with modern typography
98c0885b

v0.15.0July 1, 2025+1 internal

fix
Update prototype URLs and add missing prototype images
3d28359d

v0.14.0July 1, 2025+2 internal

fix
Add missing blog images and CSS imports
d762813f

v0.13.0July 1, 2025+2 internal

fix
Fix YAML frontmatter quoting issues in blog articles
ab137e1f

v0.12.0July 1, 2025+2 internal

feat
Update blog article titles for maximum developer engagement
f039c2fd
feat
Add compelling visual elements to token economics article
fd456632
feat
Add visual elements to forty hidden agents blog post
f3589447
feat
Add visual elements to swarm commander blog post
556cc990
feat
Add visual elements to AI Epoch Manifesto blog post
d3293447
feat
Add visual elements to Three Minute Standups blog post
52d6a6e3
feat
Add visual elements to interactive prototypes blog post
efd79eea
feat
Add visual elements to AI Function Graveyard blog post
b7bb85a5

v0.11.0July 1, 2025+3 internal

feat
Major xSwarm documentation and blog overhaul
e8261e38

v0.10.0June 29, 2025+1 internal

feat
Major UI improvements for agent cards and site styling
d57f0628
feat
enhance trading cards with polish and interactivity
14c86f65
fix
center agent card rows on homepage
0d8c6e8d
fix
show card images and match rounded corners
0e97ff73
fix
resolve card image visibility and rounded corners
5a594272
fix
improve card image placement and layering
23ef8e2b
feat
enhance agent cards with improved styling and compact mode
e31565ed
feat
Complete agent content architecture with stable naming
b58bf3b0
fix
Use role-based image naming for stability
ef8810a3
feat
Enhance card skeuomorphism with physical textures and cyberpunk titles
5d7a967d
feat
Create skeuomorphic trading card design with reusable styles
b43c24fb
feat
Convert agents to Astro content collections and enhance card display
93fd4720
feat
Transform agent cards into fantasy game card design with cyberpunk avatars
5ec357f8
feat
Add comprehensive 50-agent roster with cyberpunk descriptions
eda0f182
feat
Transform agent cards into cyberpunk character cards with real dialogue
bba527ec
fix
Improve cyberpunk visual design with better spacing
323bef6b
feat
Complete cyberpunk theme with agentic revolution messaging
bcf7aaea
feat
Implement cyberpunk terminal theme across website
66689fb2
feat
Update all image references to use new teamofone.png
b9661790
feat
Add cyberpunk terminal theme and image generation
365ad862

v0.9.0June 29, 2025+1 internal

docs
Clarify npm scripts usage policy in CLAUDE.md
321a1793

v0.8.0June 29, 2025+2 internal

v0.7.0June 29, 2025+2 internal

v0.6.0June 29, 2025+2 internal

v0.5.0June 29, 2025+3 internal

v0.4.0June 29, 2025+3 internal

v0.3.0June 29, 2025+3 internal

v0.2.0June 29, 2025+10 internal

fix
add .nojekyll file creation to deployment script
779596f6
fix
add write permissions to website deployment workflow
0f79bac9
fix
update logo URL to use hosted version
0981cf53
docs
enhance README with comprehensive documentation and logo
4a1144f4
feat
initial xswarm.ai infrastructure setup
786df448