OXYGENHUB

Releases 1

OxygenHub 0.9.7 v0.9.7 · ✔ signed by Andy McCall · andymccall ·

Trust and audit
  • A push to a landed proposal's bookmark says so (issue #329). The changes reach no target until a new proposal takes them, and the push was silent: now it is answered its proposal #N has landed in TARGET, and these changes are not on TARGET: open a new proposal with oh proposal create --from BOOKMARK (oxygen's Backend::push_notes). The landed proposal's page lists them as changes since it landed, with a link to a new proposal; it no longer shows them as its own, and no longer offers to delete a bookmark that holds them.

  • Creating a repository no longer stalls the hub on a busy disk (issue #335). A bare init makes about sixteen fsyncs, and on Earth's shared disk each waited behind every other write: one create took 26 s and held an async worker the whole time. Creates from the API, the web and drops now run on a blocking thread, as forks and bucket creates already did.

  • A Diffusion bump pins the upstream's default bookmark (issue #332). A bump kept the bookmark name of the pin it replaced, so a subrepo first pinned at an upstream proposal's bookmark still named it after the proposal landed and Diffusion moved the pin to the default bookmark's state; a checkout then counted the subrepo as on another bookmark. A bump now names the upstream's default bookmark, unless it keeps pinned changes that bookmark lacks.

  • Listing landed proposals is quick, and pages (issue #331). oh proposal list --state landed on a repository with a few hundred proposals timed out: the API worked out every proposal's projected state again, landed and closed ones too. Those now come from what was recorded, and the list takes limit (oh proposal list --limit N, 30 by default), newest first.

  • A big image's push no longer fails at the last step (issue #341). The hub reads a whole image before it accepts the manifest, which on a busy disk outlasted flow rootfs push's wait. The image could then be kept but never offered, and a retry read it all again. The hub now finishes and records the image even if the sender gives up, and a manifest it already keeps is recorded without reading the image again.

  • The API refuses a field an edit does not take (issue #330). PATCH on an issue, proposal, project, milestone, release or drop answered 200 to a field it does not know and changed nothing ({"ready": true} on a draft proposal, say), which looked like success. It now answers 422 naming the field and the ones it takes.

  • Mail reads [OxygenHub], in a wider message (issue #334). A notification's subject was tagged with the site's name ([Oxygenhub on Earth]); mail now goes by the From address's display name (OxygenHub <noreply@…>) in the subject and the footer, falling back to the site's name, so the site keeps its own name (which its apt repository is labelled with). The message card is 720px wide rather than 560.

  • An agent follows its owner's newest identity (oxygen#82). A keyless certificate's answer now carries author_chain: the grant owner's newest linked identity and its predecessors back to the grant's key, so an agent home with author.for authors as the owner's current identity, not one several rotations old.

  • The profile page's actions are one tidy group (issue #328). Edit profile, Projects and Drops sat on two rows, touching each other and the panel below; they are now one evenly spaced block, Edit profile across the top and the two pages side by side.

  • Copy buttons are a glyph joined to their field (issue #338). Every copy button is now a clipboard glyph on the end of the box it copies, with the tooltip "Copy to clipboard"; pressed, it turns to a tick saying "Copied!" for two seconds. A drop's Embed and Clone boxes line up with each other.

  • Changelog entries no longer block a landing (oxygen#145). Two proposals that each add a line at the same place in a file marked merge=union in .oxyattributes (CHANGELOG.md merge=union) used to leave the second unlandable where conflicts are refused. When a proposal's only conflicts are such adjacent insertions, landing it now adds the resolution, both sides kept, the earlier change's first, authored by whoever lands it and signed by the hub as their delegate. Any other conflict blocks as before.

Assets