Release History

Current version: 3.0.176

FeatureFixPerformanceDocsRefactorTestsChoreOther

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