hephaestus/docs/changelog.d
Erich Blume a0b04eefda
All checks were successful
Build / validate (pull_request) Successful in 10m34s
feat: multi-tenancy seam (resolve_owner) + hub-setup how-to (v1 prep)
The cheap "seam" that keeps the single-owner hub from calcifying, ahead of
the gilbert -> indri bring-up:

- Replace the single-tenant gate `Store::authorize_owner_sub(sub) -> bool`
  with `resolve_owner(sub) -> Option<owner_id>`. The hub auth middleware now
  resolves the token's identity to the owner it may act as (Some -> allow,
  None -> 403). Behavior is identical for the single-owner hub (claim-on-first;
  strangers still 403), but the contract no longer assumes one global owner, so
  serving N owners later is additive, not a rewrite. The per-request owner is
  marked at the exact line where downstream scoping wires through.
- New how-to docs/how-to/set-up-sync-hub.md: stand up the hub and connect an
  existing device as an offline-capable spoke, the data-safe way (Path A: the
  hub adopts the device's identity rather than rewriting the device).

The decision (cheap seam now, defer full multi-tenancy + adoption rewrite) is
recorded in the Adoption + multi-tenant task's context doc. Two enabler gaps
the how-to surfaced (heph daemon hub/spoke service flags; Path-A seeding tool)
are filed as Hephaestus tasks.

Green: 228 tests, clippy -D warnings + fmt + prek clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 07:08:39 -07:00
..
+clippy-prek-hook.infra.md fix: clippy single_match in heph-tui + add clippy pre-commit hook 2026-06-03 20:53:50 -07:00
+fix-clippy-single-match.bugfix.md fix: clippy single_match in heph-tui + add clippy pre-commit hook 2026-06-03 20:53:50 -07:00
+project-design.doc.md docs: reframe tech-spec as historical; heph self-hosts its roadmap 2026-06-03 20:19:35 -07:00
+template-setup.infra.md Set up hephaestus from template and add design + tech spec 2026-05-31 09:37:28 -07:00
+v1-spec-second-pass.doc.md Fold second-pass design review into v1 spec 2026-05-31 18:08:47 -07:00
.gitkeep Initial commit 2026-05-31 06:13:36 -07:00
extract-heph-nvim.infra.md infra: extract heph.nvim into its own forge repo 2026-06-03 22:42:39 -07:00
pre-v1-cleanup.infra.md infra: pre-v1 dependency-refresh sweep + drop fs4 + remove dead build hook 2026-06-03 22:19:13 -07:00
v1-hub-prep.doc.md feat: multi-tenancy seam (resolve_owner) + hub-setup how-to (v1 prep) 2026-06-04 07:08:39 -07:00
v1-hub-prep.infra.md feat: multi-tenancy seam (resolve_owner) + hub-setup how-to (v1 prep) 2026-06-04 07:08:39 -07:00
v1-inbox-view.feature.md feat: Inbox view — outstanding tasks with no project (§8.2) 2026-06-03 18:12:33 -07:00
v1-list-project.feature.md feat: heph list --project <name> + --json; thin AGENTS.md 2026-06-03 20:38:57 -07:00
v1-prek-cargo-fmt.infra.md infra(prek): add cargo fmt as a pre-commit hook 2026-06-03 20:46:55 -07:00
v1-prototype.doc.md docs(explanation): add Task Lifecycle — the two-axis model 2026-06-03 08:56:53 -07:00
v1-prototype.feature.md feat(tui): <Enter> opens the context editor; reorder views (§8.1/§8.2) 2026-06-03 14:42:08 -07:00
v1-prototype.infra.md infra(nvim): add stylua formatter + prek hook; normalize heph.nvim Lua 2026-06-03 11:55:07 -07:00
v1-quickadd.feature.md feat: heph-quickadd — global ⌘' quick-capture popover (§8) 2026-06-03 18:12:24 -07:00
v1-selfhost-roadmap.doc.md docs: reframe tech-spec as historical; heph self-hosts its roadmap 2026-06-03 20:19:35 -07:00
v1-tui-move-picker.feature.md feat(tui): fzf-style move-to-project picker + create-project (§8.1) 2026-06-03 18:20:10 -07:00
v1-tui-undo-panels.feature.md feat(tui): pane-specific keys, undo/redo, project delete, sidebar refresh (§8.1) 2026-06-03 18:37:16 -07:00