OXYGENHUB

Releases 1

OxygenHub and oh 0.7.0 v0.7.0 · ✔ signed by Andy McCall · andymccall ·

Trust and audit
  • Fork a drop (issue #280): a signed-in visitor's FORK makes a drop of their own from someone else's, with its files, history, title and secrecy; the fork's page says which drop it came from.
  • Flow's job times in /metrics (oxygenflow#35, issue #212): oxyhub_flow_job_queue_seconds (ready to started) and oxyhub_flow_job_run_seconds histograms by runner, finished jobs by runner and result, reused passes, and the work queue's waiting and dead items, all over the last day, for the Grafana dashboard.
  • A durable work queue (issue #276): work that fails where it starts is queued and retried instead of lost: a notification's email the mail server refused, and a Git mirror export after a push. Any worker process takes due items (on PostgreSQL several at once, each skipping what another holds), retries back off from 30 seconds to an hour, and an item still failing after eight attempts is kept as dead.
  • One auto-land and one Diffusion bump at a time across hub processes (issue #275): auto-land's check of a proposal, and Diffusion's bump and landing of a consumer's pin, were serialised only within a process, so two web processes could land one proposal twice. Each now holds a lock named for the proposal or the pin across every process sharing the database (a PostgreSQL advisory lock; on SQLite, one process, as before).
  • Several web processes can share a data directory (issue #274): the transparency log took appends from one process only, so only one process per data directory could have the web role. Each append now holds a lock in the log's directory and starts from the log as the files hold it, readers see every process's entries, and every process serves the newest checkpoint, whichever signed it.
  • A push reuses a job's pass on the same state (issue #265): when main reaches a state a proposal's run already tested (landing it), a job that passed there with the same spec and sandbox is not run again: it shows passed, reused from that run, with its receipt, and its check says so. Jobs with an approval gate, an environment, secrets or identity tokens, or whose artifacts another job takes, always run. Maintainers can turn reuse off under Settings › Runs.
  • Drops are backed up (issue #280): an owner's backups now include its drops, each copied like a repository and restored as a drop (secret or public, with its title and description); Admin › Backups counts them with the repositories they cover.
  • A skip marker quoted in code does not skip: a change message that mentions [skip ci] between backticks or in a fenced block (documenting the marker, say) now starts its run as usual; only a marker in the text itself skips it.
  • Administration has a sidebar, one page per section (issue #288): the admin area was one long page plus separate pages for runners, images, Diffusion, backups and storage. Every page now has the same sidebar, grouped as Overview, People (accounts, registration and invitations, organisations), Sign-in (providers, security contact), Mail, Flow (runners, images, runner settings, insights, variables, secrets), Integrations (AI assistants, Diffusion), Data (storage and maintenance, backups) and Audit, each at its own address (/admin/mail, /admin/audit, …). /admin is an overview of the site's numbers. Forms keep their addresses and answer with their own page, and a kept /admin#mail link opens the Mail page.
  • Help: AI identities (issue #287): a section on letting an AI agent work for you: keyless agents (a grant with oh agent grant, an agent home with oxy auth grant, ten-minute certified keys, nothing secret on disk), how its work shows (via agent:NAME@YOU), admitting it to a repository's trust policy (oxy policy grant-subject), agents with keys of their own (delegation), agent-marked tokens, approval gates, and revoking. "Letting the hub act for you" now says to export your identity again after delegating and upload that.
  • Settings › Keys says when each key was last used (issue #286): like tokens, each linked key shows when it was linked, when the hub last accepted a push it signed (a change or a seal; "never" until then) and when the identity expires.
  • Settings › Security is balanced (issue #285): every box runs the page's width: two-factor shows whether it is on in its head, with its field and button on one row; connected accounts are rows with Connect or Disconnect; signed-in browsers are rows with Sign out, and Sign out everywhere else sits in that box's head with the session limits under it.
  • Push without starting a run (issue #284): [skip flow], [skip ci] or [ci skip] in the newest pushed change's message starts no jobs; the run list shows a skipped run naming the change and who pushed it, and the next run still tests what it brought. Tags always run. Maintainers choose where it is allowed under Settings › Runs: any bookmark (the default), any but the default bookmark, or never.
  • A drop's page is centred and its header clearer (issue #283): the page ran the full width with everything against the left edge; it is now centred like other pages, with the title, description and details on the left, EDIT and DELETE together on the right (DELETE only for whoever may delete it), the clone line with a copy button under them, and a Markdown file filling its box.
  • A started job no longer says it is waiting (issue #282): a run page opened while a job was queued kept "Waiting for a runner and for build." under it after it started, as the live update changed its status and streamed its log; the note now goes once the job leaves the queue.
  • Linking the identity that delegates to the hub (issue #281): the notice on pages that commit for you (New drop, web edits) read as if the hub's key file was what to link under Settings › Keys, which then asked for a signature nobody but the hub can make. It now says to export your own identity again after oxy identity delegate add and upload that; uploading the hub's own key is refused saying so, uploading an already linked key says to export again after delegating, and a challenge signed by another key than the one uploaded names both keys. The New drop form runs the page's width, and CREATE DROP and CANCEL are the same height in one row.

Assets