Skip to content

0.32.0

Cut on 2026-10-06. Status: beta. This release makes coxtop home: the curses screens are gone, and every view they had now lives in coxtop. It also hardens the chair across machines after a night of running it from the Mac, and carries the first parts of 0.33's follow-ups. The umbrella's README and docs landing page show coxtop (coxswain #236), and the crew dashboard gains its cost and quarantine datasets (coxswain #234, coxswain #235).

coxtop is home. cox home, cox console, cox runs top and cox setup open coxtop on a terminal and keep their --once and subcommand forms for scripts. The curses screens and their tests are deleted, and a test fails if any module imports curses again. coxtop gains watch, spend and health drill-downs (w, $, h), fed by schema-1 spend and health snapshots from cox dash --detail. The chair pane releases focus with Ctrl-] or a click on another frame, shows the release key in its title, and Shift+Enter types a newline. coxtop adds and edits initiatives, and listings and the dash feed show short ids beside slugs.

The chair holds across machines. The chair carries a stranded or split phase to its land and rebases a phase branch that fell behind main. A run on the chair's own host homes there; a fetched remote run's store-held approvals keep their run beside a local record, so they land instead of waiting on the chair; a phase land resumes from a pull request it already opened. The store keeps every column a state write leaves out, the stranded check follows a task that moved phase, and a deletion is no longer refused as a change outside its surfaces.

First parts of 0.33. The chair detects a stall when lanes idle with work waiting, pauses lands while the forge's CI is down, and waits for every required check before merging. Needs-chair rows keep their reason and remedy in the store, the chair loop beats its own lease, cox settings validates before writing, and the chair reads lane stats to propose host lanes. A decompose-only chair hands homed work to a lane host.

Upgrading from 0.31.0. Nothing migrates, and the store schema is unchanged. Restart the chair loop after upgrading cox; start it with env -u FORCE_COLOR when it runs under a shell that forces colour, or lands fail the help-snapshot checks. The chair machine's lane count comes from its hosts-table row (cox host capacity).

coxswain-cartridges

  • A decompose writes every path in a task relative to the repository (cartridges #182).

coxswain-crew

  • A pull request's branch runs CI once (crew #11).

coxswain-dash

  • Watch, spend and health views open as drill-downs (dash #82).
  • The chair pane releases focus with Ctrl-] or a click on another frame, shows the release key, and Shift+Enter types a newline (dash #85, dash #86).
  • coxtop edits initiatives: the form's input and main wiring (dash #87, dash #88).
  • A pull request's branch runs CI once (dash #84).

coxswain-graphs

  • A store upsert keeps every content column the row leaves out, so a state write never blanks a ticket (graphs #692).
  • A deleted file counts as touched at its old path, not /dev/null, in the surface check and the patch sections (graphs #693, graphs #694).
  • The postgres CI job takes a random host port (graphs #691).

coxswain-tools

  • cox home, cox console, cox runs top and cox setup open coxtop; the curses screens are deleted (tools #1359, tools #1365, tools #1366, tools #1367, tools #1376, tools #1393, tools #1395).
  • cox dash --detail spend and --detail health emit the schema-1 snapshots coxtop reads (tools #1381).
  • Listings and the dash feed show short ids (tools #1363, tools #1370, tools #1378, tools #1383).
  • The chair carries a stranded or split phase and rebases a phase branch behind main (tools #1380).
  • A run on the chair's own host homes there (tools #1372); a fetched run's store-held approvals keep their run beside a local record (tools #1390); the stranded check follows a task that moved phase (tools #1364).
  • A phase land resumes from its open pull request (tools #1368), and a decompose that ends with no tasks leaves its intake queued (tools #1360).
  • The chair detects a stall when lanes idle with work waiting (tools #1369, tools #1371), pauses lands while the forge's CI is down (tools #1373, tools #1375, tools #1379, tools #1384), and waits for every required check (tools #1385).
  • A fetched run that built nothing is not a failed fetch (tools #1374); needs-chair rows keep their reason and remedy in the store (tools #1382, tools #1389); the chair loop beats its own lease (tools #1386).
  • cox settings validates before writing and can commit (tools #1387); the chair proposes host lanes from stats (tools #1388); a decompose-only chair hands homed work to a lane host (tools #1391, tools #1392).
  • The store is the only record of intake and tickets: its row codec (tools #1377).
  • A pull request's branch runs CI once (tools #1362).