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-coreclient 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-vscodeandoxygenhubhosted (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 sinceStatebecameSend + Sync. Measured on theoxygenrepository (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.