OXYGENHUB

Releases 1

OxygenHub 0.9.4 v0.9.4 · ✔ signed by Andy McCall · andymccall ·

Trust and audit
  • Checkpoints, so a handed-back job resumes (oxygenflow#77): POST /api/v1/flow/jobs/{id}/checkpoint keeps the directories a job declares with checkpoint "/src/…" as its runner hands it back; the next attempt's claim names the blob (checkpoint) and its runner fetches it (GET) and restores it before running. A checkpoint is kept beside the job's artifacts but is none of them (no receipt names it). Pins OxygenFlow's main.
  • Boards keep the last fortnight of finished work (issue #293): by default every column archives its finished cards (closed issues, closed or landed proposals) 14 days after they reached it, hourly, so a Done column stops growing however long a project runs; open work and notes stay. A column can instead archive every card after N days, or never ("Archive automatically" in its menu). Archived cards stay on the board's archive view, searchable and restorable. On the next hourly pass, boards with years of Done cards (Super Mario Land 2's 327) shrink to their last two weeks.
  • An issue's references: no line through the chips, each change once (issue #318): an opened "referenced by N changes" box drew the proposal timeline's vertical rule through its first column (the events shared its class); and a change was recorded again for every bookmark it was pushed on, and for every mention in its message, so one change filled several chips. Now one reference per change per issue or proposal, and the page shows each change once, including those recorded before.
  • Claims say how long a job is expected to take (oxygenflow#76): expected_ms, the median of the job's last five passing runs in the repository (reused passes left out), so a runner leaving with notice finishes a job that fits it and hands back the rest. Pins OxygenFlow's main.
  • The hub's CI writes a test report and coverage (issue #307): test runs under cargo-nextest and keeps a JUnit report (whether or not the tests pass); a new coverage job runs the tests instrumented beside it, with its own cached target, and keeps LCOV coverage. coverage is not a required check.
  • The new proposal form lines up (issue #315): as wide as the changes above it; Draft with Claude a secondary button under the editor (it fills the fields, it does not open the proposal); the draft checkbox and Open proposal on one row.
  • Draft with Claude proposes a title too (issue #316): for a proposal not yet opened, the assistant begins its draft with a title in the style of the changes' own titles; it fills the title field unless you wrote one (the page's own suggestion does not count), and stays out of the description.
  • A waiting WASM job no longer says runners lack its image (issue #317): a job with no image (the WASM tier) waited saying every runner "does not hold image" with an empty name; the explanation now skips the image check, as the claim always did.
  • A draft proposal can be made ready from oh and the API (issue #313): oh proposal ready N (and --undo to turn it back into a draft); PATCH …/proposals/{n} takes state: "open" for a draft and state: "draft" for an open one, as the page's buttons do, and draft: false|true in the words a proposal is created with. {"draft": false} used to answer 200 and change nothing.

Assets