OXYGENHUB

OxygenHub 0.5.0 32d97df55ab7

Mail through any service with HTML emails, notifications by email,
agent tokens, two-factor sign-in with the code alone, backups part two
with an API and S3, assistant summaries, the bookmark picker, wiki and
editor polish, and backdrops on more pages. See CHANGELOG.md.
Author
Andy McCall @andymccall <[email protected]>
When
· 2026-10-14 14:17 UTC
Signature
✔ signed by Andy McCall
Hash
32d97df55ab7badadf9ae0c373eafd0009703eeee63a1d8622ce8f2acaa27dcc
Depends on
35fea4237cc9 59338826539c 5c6e92fd8d71 a7e6e8e6094c b5668108487f d23464c0ac60
Depended on by
11a2e09d6a69
In bookmarks
api-unknown-fields cancel-landed-runs diffusion-pin-bookmark draft-ready main oh-comment-body-file proposal-list-fast
In tags
v0.5.0 v0.5.1 v0.5.2 v0.6.0 v0.6.1 v0.7.0 v0.8.0 v0.9.0 v0.9.1 v0.9.11 v0.9.15 v0.9.16 v0.9.19 v0.9.2 v0.9.20 v0.9.21 v0.9.22 v0.9.23 v0.9.24 v0.9.3 v0.9.4 v0.9.5 v0.9.6 v0.9.7 v0.9.8 v0.9.9
Edits
7 atoms, 0 tree operations, 3 files

Browse the tree at this change

modified CHANGELOG.md +14 −0
…
3 unchanged lines
4 4
5 5
## Unreleased
6 6
7 +
## 0.5.0 (2026-10-14)
8 +
9 +
- **Mail that works for any site (#181, #182):** Administration › Mail picks a service (Resend, Amazon SES, Mailgun or plain SMTP) and takes its key, STARTTLS by default, with SEND A TEST. Every email is an HTML card with the OxygenHub mark, a button for its link and the site's links, beside a plain-text copy.
10 +
- **Notifications by email (#183, #186):** owners hear about their repositories by default; Flow says when a build breaks and when it is fixed; backups say when they fail, when they recover, and once a day what ran; admins hear of sign-ups; proposals reach watchers and reviewers. Subjects say what happened, e.g. `[OxygenHub] 🎉 Build Success`, `💥 Build Broken`, `⚠️ Backup Failed`, `🔀 New Proposal`.
11 +
- **Agent tokens (#183, #185):** a token marked as an agent's (Settings › Tokens, Mark as agent) tells its owner what is done with it, as anyone else's actions would. Settings › Tokens and Keys are cards with their actions beside each row (#188).
12 +
- **Two-factor sign-in asks only for the code (#184):** the password is not typed twice.
13 +
- **Backups, part two:** restore brings the records back and release assets travel (#175); Admin › Backups (#176); a repository can be left out or given its own schedule (#177); Amazon S3 with no key, through STS web identity (#178); an API for settings, TEST, back up now and runs, for users and organisations (#179); empty files upload to GCS (#180).
14 +
- **Assistants summarise proposals (#190):** Summarise with <assistant> posts its summary of the proposal as a comment via the assistant, under the prompts the site, organisation and repository set.
15 +
- **Choose a bookmark or tag on the overview (#191):** a picker beside the code search; the side bar stays.
16 +
- **Wiki pages (#192, #194):** a title row with who edited the page and its revisions, Pages and Contents in the side bar, and a clone box with a copy button.
17 +
- **The Markdown editor (#193)** is laid out like GitLab's: a Preview tab, icon buttons with strikethrough, task lists and tables, fullscreen and a Markdown supported footer.
18 +
- **Backdrops on more pages (#196):** a repository's own sky on its overview, wiki, proposals and Conflicts; the mark on Settings › Keys, Tokens and Backups. Live arrivals on the sky (#172).
19 +
- **Diffusion auto-land (#174)**, opt-in per repository; image architectures detected on push and learnt from runs (#173).
20 +
- **Fixes:** the proposals list API on a bucket-backed repository (28 s, #171); a long list of heads on a proposal (#170); Conflicts is the usual width (#195); + new is the primary blue (#187); Backups' settings are as wide as its runs (#189).
7 21
- **Backups (#169, docs/backups.md):** a user (Settings › Backups) or an organisation's owners copy every repository they own, with its wiki, issues, proposals, releases and settings (never a secret value), hourly or daily, to a directory the hub allows or a Google Cloud Storage bucket with no key at all (the hub signs in as `backup:OWNER` through workload identity federation; TEST checks it). Only what changed travels, runs are kept 7, 30 or 90 days, a failure lands in the owner's inbox, and `oxygenhub admin backup restore` brings repositories back byte for byte.
8 22
- **Diffusion (#148, docs/diffusion.md).** When a repository that others pin as a subrepo moves on, each consumer that follows it gets a proposal moving the pin, signed by the hub, tested by the consumer's own pipeline, with the upstream's changes listed. One proposal per consumer and subrepo, kept up to date; never landed by itself. Turned on per repository (Settings › Diffusion, `PUT /repos/{owner}/{name}/diffusion`, or `follow` in `.oxymodules`), off by default; `green` waits for the upstream's run to pass. A repository's page shows who uses it and how far behind each is (Diffusion › Diffuses to, `GET /repos/{owner}/{name}/consumers`). Consumers are bumped on the bookmark their work lands on, learned from where their proposals land.
9 23
- **Diffusion in the API (#153):** `GET /repos/{owner}/{name}/diffusion` gives what a repository takes from and what it diffuses to, each with its pill, for the VS Code extension.
…
170 unchanged lines
modified Cargo.lock +3 −3
…
1456 unchanged lines
1457 1457
1458 1458
[[package]]
1459 1459
name = "hub-api"
1460 -
version = "0.4.2"
1460 +
version = "0.5.0"
1461 1461
dependencies = [
1462 1462
 "schemars",
1463 1463
 "serde",
…
797 unchanged lines
2261 2261
2262 2262
[[package]]
2263 2263
name = "oh"
2264 -
version = "0.4.2"
2264 +
version = "0.5.0"
2265 2265
dependencies = [
2266 2266
 "anyhow",
2267 2267
 "axum",
…
84 unchanged lines
2352 2352
2353 2353
[[package]]
2354 2354
name = "oxygenhub"
2355 -
version = "0.4.2"
2355 +
version = "0.5.0"
2356 2356
dependencies = [
2357 2357
 "ammonia",
2358 2358
 "anyhow",
…
2510 unchanged lines
modified Cargo.toml +1 −1
…
6 unchanged lines
7 7
resolver = "2"
8 8
9 9
[workspace.package]
10 -
version = "0.4.2"
10 +
version = "0.5.0"
11 11
edition = "2021"
12 12
license = "MIT OR Apache-2.0"
13 13
authors = ["Andy McCall <[email protected]>"]
…
60 unchanged lines