OXYGENHUB
# e1078e99c560 oxygenhub / docs / plan.md
2.4 KiB · Markdown · last changed Clippy: pass verification directly (the previous commit failed the lint gate) 1 month ago renderedsource blame history raw

Oxygenhub plan

Milestones from docs/spec.md §19. Each item is checked when its tests pass, clippy is clean, and the change is committed with oxy.

0.1 Browse (2026-09-27)

  • Workspace: crates/hub (binary), crates/hub-api (API types), askama templates, vendored fonts, one stylesheet from the RetroPlay theme.
  • Configuration (hub.toml + OXYHUB_*), SQLite with embedded migrations (repositories, pushes).
  • Repository registry: bare, unbound-by-default repositories under <data>/repos/<owner>/<name>, per-repository read/write locks, trash on delete.
  • Embedded wire protocol with visibility and push-token authorisation and a push log.
  • Pages: home, owner, overview (tree, README, clone, bookmarks, tags, trust badge, heads and conflict strips), tree, file (highlighting, Markdown, images, raw, blame), history with the dependency graph and path filter, change with diff and dependencies, compare, bookmarks, tags, conflicts, trust, pushes.
  • JSON API: repositories, bookmarks, tags; /health; /.well-known/oxyhub-key.
  • CLI: init (keys, self-signed TLS), serve (HTTP and HTTPS), admin repo create|list|delete|set, check.
  • Tests: unit tests per module and an end-to-end test that pushes with a real oxy-core client and fetches every page.
  • Oxygen changes it needed (in the Oxygen plan, phase 4): bare repositories, embeddable server, unbound repositories, adoption of anonymous changes by seals, oxy seal.
  • Developer edition running on Earth with oxygen, oxygen-vscode and oxygenhub hosted (docs/deploy.md).

0.2 Accounts and access

  • Registration, sessions, TOTP, profile, organisations, teams, roles, visibility enforcement by viewer, personal access tokens with scopes, linked identities with challenge signing (oxy identity sign-challenge), audit log, settings pages, pushes attributed to keys.

Later

  • 0.3 proposals and review · 0.4 issues and notifications · 0.5 API, webhooks, checks · 0.6 web edits, releases, mirror · 0.7 runner · 1.0 hardening.

Notes

  • State caching (spec §16.3): repos::cache::StateCache, a bounded LRU of loaded states keyed by repository id and heads, shared across threads since State became Send + Sync. Measured on the oxygen repository (90 changes): overview 154 ms cold and under 2 ms warm, history 25 ms, tree under 1 ms. Rendered-page and syntax-highlight caches are still to do.

The cross-product order of work is in oxygen/docs/roadmap.md.