OXYGENHUB
# d23464c0ac60 oxygenhub / docs / plan.md
2.4 KiB · Markdown · last changed Milestone 0.1: browse 1 month ago renderedsource blame history raw
1
# Oxygenhub plan
2
3
Milestones from `docs/spec.md` §19. Each item is checked when its tests
4
pass, clippy is clean, and the change is committed with `oxy`.
5
6
## 0.1 Browse (2026-09-27)
7
8
- [x] Workspace: `crates/hub` (binary), `crates/hub-api` (API types), askama templates, vendored fonts, one stylesheet from the RetroPlay theme.
9
- [x] Configuration (`hub.toml` + `OXYHUB_*`), SQLite with embedded migrations (`repositories`, `pushes`).
10
- [x] Repository registry: bare, unbound-by-default repositories under `<data>/repos/<owner>/<name>`, per-repository read/write locks, trash on delete.
11
- [x] Embedded wire protocol with visibility and push-token authorisation and a push log.
12
- [x] 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.
13
- [x] JSON API: repositories, bookmarks, tags; `/health`; `/.well-known/oxyhub-key`.
14
- [x] CLI: `init` (keys, self-signed TLS), `serve` (HTTP and HTTPS), `admin repo create|list|delete|set`, `check`.
15
- [x] Tests: unit tests per module and an end-to-end test that pushes with a real `oxy-core` client and fetches every page.
16
- [x] Oxygen changes it needed (in the Oxygen plan, phase 4): bare repositories, embeddable server, unbound repositories, adoption of anonymous changes by seals, `oxy seal`.
17
- [ ] Developer edition running on Earth with `oxygen`, `oxygen-vscode` and `oxygenhub` hosted (docs/deploy.md).
18
19
## 0.2 Accounts and access
20
21
- [ ] 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.
22
23
## Later
24
25
- 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.
26
27
## Notes
28
29
- State caching (spec §16.3) is not started: pages load the state they need per request; the overview loads it once and reuses it. Measured on the `oxygen` repository (88 changes): overview ~0.5 s, tree ~0.14 s, history ~0.13 s, a 2 000-line file ~0.7 s. A per-heads cache is the first performance item for 0.2.
30
- `State` holds `Rc` values, so a cross-thread cache needs a `Send` snapshot type in `oxy-core` first.