OXYGENHUB

Releases 1

OxygenHub 0.9.24 latest v0.9.24 · ✔ signed by Andy McCall · andymccall ·

Trust and audit
  • A fresh New repository page (issue #360): owner and name side by side with a live check that the name is free and valid and the address it will have; visibility as three described choices; Start with a README, a licence (MIT, BSD 2-Clause or ISC, with what each allows) and an .oxyignore for a language, committed as you with the hub signing as your delegate (it says what to do first when you have not delegated, before anything is made); and a project board with it: a new one (Backlog, Doing, Done, on by default for an organisation) or one of the owner's, which takes the repository's issues and proposals as they open. Storage moves under its own heading. The API's create takes the same (project: {"new": TITLE} | {"number": N}, readme, licence, ignore), and oh repo create OWNER/NAME [--project new:TITLE|N] [--readme] [--licence MIT] [--ignore Rust].
  • oxygenhub.io links open the Android app (issue #370): /.well-known/assetlinks.json vouches for the app (its package and release key's fingerprint, [push] android_apps to change), so Android opens the hub's links in it once the app claims them (oxygenhub-android#36).
  • The changelog is checked on the WASM tier: a changelog job in the pipeline runs OxygenFlow's checks module (no image, no KVM; a phone or plex takes it) and fails when the changelog's sections are out of shape or Cargo.toml's version has none.
  • Board views (issue #361): a board shows what matters now and other views of the same cards.
    • Saved views as tabs across the top: a layout with its filter, lanes and order, saved under a name and shared by its address (?view=NAME).
    • One filter bar for every view: words, repo:, assignee:, label:, milestone: (quote a title with spaces), state:, is:open|closed, age:>14d and age:<7d.
    • Board: swimlanes by repository, assignee, label or milestone; a work-in-progress limit per column, whose header turns to the warning colour past it; Done shows this iteration's work while one is open, saying how many cards finished before it; and compact cards (labels as dots).
    • Table: every card as a row (title, reference, state, column, assignees, labels, milestone, opened), sortable, grouped, a column changed in place, 50 rows a page.
    • Keys: j/k between cards, Enter opens one, m moves it, / filters.
    • History: every card's moves (added, moved, archived, restored, removed) are kept from now on, for the charts and forecasts of issue #357.
    • The API answers GET /projects/{owner}/{n}?q= or ?view=NAME with the filter applied, and lists the board's views and each column's limit; oh project view N --filter TEXT or --view NAME.
  • A hung test no longer holds a runner (issue #365): the PostgreSQL tests run under nextest like the rest, and CI stops any test still running after ten minutes; the history scan's tests have four worker threads and a two-minute bound of their own. Two of them once sat for an hour on plex-1.
  • Charts and forecasts from the board's own history (issue #357): a Charts tab on every board, with no estimates to keep.
    • Forecasts: a Monte Carlo of the board's weekly throughput (the last 12 weeks, or its life if shorter) says when the open cards will be done, at 50% and 85%: for the open iteration or the whole board, for each milestone, and for any filter. It says how many weeks it rests on, and says plainly when there is nothing to go on. Seeded by the board and the day, so it does not change between page loads.
    • Cycle time (leaving the first column to reaching Done: median and 85th percentile), throughput (cards done each week), the open iteration's burn-down with its scope, and cumulative flow (cards per column per day over 60 days, a widening band showing where work waits).
    • Timeline (issue #361): iterations as spans and milestones with their due dates and forecast bands on one time axis, today marked.
    • Drawn server-side as SVG in the hub's chart style, readable in both themes, each with its numbers in a table. GET /projects/{owner}/{n}/charts (?q=) gives the series and forecasts; oh project charts N [-q FILTER].

Assets