OXYGENHUB

Release 0.4.0 c71a5777509a

Oxygen Strata (bucket remotes on S3, GCS and Azure), the object store
on any Store, scoped and expiring delegates with an agent signing as
itself, revsets, progress for gc and import, batched large merges,
and release builds that link everywhere. See CHANGELOG.md.

refs #63, #64, #65, #67, #68
Author
Andy McCall @andymccall <[email protected]>
When
· 2026-10-04 13:24 UTC
Signature
✔ signed by Andy McCall
Hash
c71a5777509a1f29bc1889953d79339df41b264bfafd68cf7ef75b3d97c9f71d
Depends on
6a0008781d5e 750251b21a96 8d80356371c5 8fd78eb52ad2 c07406bcc237 ff0af1ee299d
Depended on by
579afd107b9b 614f55e14eee
In bookmarks
agents-in-readme bare-hashes carried-not-removed carry-identical doctor-trust identical-sides keyless-tags main merge-remote-bookmark only-help-103 paths-for-resolutions-and-amend push-notes show-stat subrepo-pin-state switch-says
In tags
v0.10.0 v0.11.0 v0.4.0 v0.4.1 v0.4.2 v0.4.3 v0.4.4 v0.4.5 v0.4.6 v0.5.0 v0.5.1 v0.6.0 v0.7.0 v0.8.0 v0.9.0
Edits
8 atoms, 0 tree operations, 3 files

Browse the tree at this change

modified CHANGELOG.md +18 −0
…
1 unchanged lines
2 2
3 3
## Unreleased
4 4
5 +
## 0.4.0 (2026-10-04)
6 +
7 +
- **Oxygen Strata: a repository on a bucket (#63).** `oxy remote add NAME s3://BUCKET/PREFIX` (`--profile`, `--region`, `--endpoint`), `gs://BUCKET/PREFIX` (`--credentials`), `az://ACCOUNT/CONTAINER/PREFIX`, or `dir://PATH`, then `push`, `pull`, `clone` and `gc` against it as against any remote, with no server in between: objects are written once, the references record moves by compare-and-swap, and two pushers merge and retry rather than lose each other's work. Credentials come from each cloud's own chain. `oxy remote check` runs the conformance suite against a store before it is trusted. `docs/strata.md` is the guide; the bucket layout is not stable before 1.0.
8 +
9 +
- **The object store on any Store (#68).** `.oxy/objects` is now the same `Store` a bucket is, with the same keys and the same speed: the first step towards a repository that lives in its owner's bucket with the hub as one client of it. Signatures, seal and receipt entries are written once each, so two writers of a shared store never lose each other's; older repositories still read.
10 +
11 +
- **Scoped, expiring delegates (#67).** `oxy identity delegate add FILE --scope changes --expires 8h` lets an AI agent sign changes for you while it can never move a bookmark or tag, or seal, whatever you may do; a host that lands for you gets `changes,refs`. You can revoke a key you delegated to. Older identities still read: a bare key means every scope.
12 +
13 +
- **An agent signs as itself, you stay the author.** The agent's keys live in its own `$OXY_HOME`, and `author.signer` (or `$OXY_SIGNER`) names its key, so `oxy commit` in your checkout carries you as author and the agent's signature. `oxy log` says `via NAME` beside the author, `oxy show` has a `via` row with the agent's identity and the delegation it acted under, `oxy identity show` names each delegate, and `oxy log -r 'delegated()'` lists what agents did. The guide's §9 has the setup.
14 +
15 +
- **Revsets (#65).** `oxy log -r`, `show -r`, `verify -r` and `abandon -r` take an expression over history: symbols (bookmarks, `origin/main`, tags, change prefixes, `@`), `::X`, `X::`, `X..Y`, `|`, `&`, `~`, `deps`, `dependents`, `heads`, `roots`, `latest`, `independent`, `author`, `description`, `date` (`-7d..`), `kind`, `touches` (through renames), `conflicts`, and the trust predicates `signed_by`, `delegated`, `unsigned`, `revoked`, `attested`, `built`. Saved revsets: `oxy config revset.mine 'author(me) & ::@'` makes `mine()`. A first page takes about 10 ms on this repository; evaluation has a time budget. `docs/revset_query_language.md`.
16 +
17 +
- **`oxy gc` and `oxy git import` say what they are doing (#66, #25).** Each phase and count of a gc, and every 500 commits of an import with the commit in hand, through the spinner or as lines without a terminal.
18 +
19 +
- **Large merges import in batches (#25).** A merge touching thousands of files builds and renders its graphs 500 files at a time: a 10 000-commit slice of VS Code imports in 135 s at 1.6 GB (from 140 s at 1.6 GB, and far less for the merges alone). The whole history still needs more than 20 GB at its largest merges, which is the next piece of work.
20 +
21 +
- **Release builds link on every target.** The cloud stores send through `ureq`, so macOS and Windows builds no longer pull in a C library the cross-compiler cannot link.
22 +
5 23
## 0.3.1 (2026-10-02)
6 24
7 25
- **RISC-V (#59).** Builds for 64-bit RISC-V Linux (`linux-riscv64` and a `riscv64` .deb), tested natively on an OrangePi RV2.
…
82 unchanged lines
modified Cargo.lock +4 −4
…
1587 unchanged lines
1588 1588
1589 1589
[[package]]
1590 1590
name = "oxy"
1591 -
version = "0.3.1"
1591 +
version = "0.4.0"
1592 1592
dependencies = [
1593 1593
 "anyhow",
1594 1594
 "clap",
…
11 unchanged lines
1606 1606
1607 1607
[[package]]
1608 1608
name = "oxy-core"
1609 -
version = "0.3.1"
1609 +
version = "0.4.0"
1610 1610
dependencies = [
1611 1611
 "blake3",
1612 1612
 "ed25519-dalek",
…
17 unchanged lines
1630 1630
1631 1631
[[package]]
1632 1632
name = "oxy-server"
1633 -
version = "0.3.1"
1633 +
version = "0.4.0"
1634 1634
dependencies = [
1635 1635
 "axum",
1636 1636
 "axum-server",
…
6 unchanged lines
1643 1643
1644 1644
[[package]]
1645 1645
name = "oxy-strata"
1646 -
version = "0.3.1"
1646 +
version = "0.4.0"
1647 1647
dependencies = [
1648 1648
 "futures",
1649 1649
 "object_store",
…
1608 unchanged lines
modified Cargo.toml +1 −1
…
2 unchanged lines
3 3
resolver = "2"
4 4
5 5
[workspace.package]
6 -
version = "0.3.1"
6 +
version = "0.4.0"
7 7
edition = "2021"
8 8
license = "MIT OR Apache-2.0"
9 9
…
27 unchanged lines