Files
relicario/STATUS.md
adlee-was-taken 8249f9e3d3 docs: Plan C Phases 1, 2, 5 merged; STATUS + ROADMAP updated
Three parallel worktree streams landed 2026-05-30 evening:
- Phase 1 (StateHost typing): c3f8e35
- Phase 2 (SW storage extract): b6707f4
- Phase 5 (P2 cluster: 5 small fixes): 0496dfe

Combined: 389/389 vitest passing. Phases 3, 4, 6 remain. Phase 4 (vault.ts
split) and Phase 6 (status indicator) both unblocked by Phase 1; Phase 3
(setup wizard SW migration) is the biggest single remaining piece.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 22:07:10 -04:00

11 KiB
Raw Blame History

Relicario — Project Status

Update this file at the end of every dev iteration. It is the single source of truth for what is done, in progress, and next.

Version

Last release tagged: v0.6.0 — rolled up Phase 2B, v0.5.1 Streams A/B/C, 1C-γ, Plan B refactor (Cycles 1+2), management-surfaces revamp, and the doc-structure redesign into one tag. Active track: extension restructure execution — Plan C Phases 1, 2, 5 merged 2026-05-30 (three parallel worktree streams). Phases 3, 4, 6 remain.

What landed on main since the v0.5.0 version bump

Phase 2B — polish foundation + form layout (merged 2026-05-02, 5da1e52)

Spec: docs/superpowers/specs/2026-05-02-phase-2b-form-layout-design.md Plan: docs/superpowers/plans/2026-05-02-phase-2b-polish-and-form-layout.md

  • Patina gold palette tokens (--gold-base #a88a4a, --gold-mid, --gold-shadow, etc.) replacing the bright amber #d2ab43
  • .surface-backdrop (radial top-glow + 18px grid texture) on popup body, setup body, vault body
  • .glass card class with backdrop-filter: blur(8px) for unlock card, setup steps, form columns
  • .btn-primary / .btn-secondary button hierarchy alongside existing .btn
  • GLYPH_NEXT = '▸' (U+25B8) replacing ASCII in next/continue buttons
  • Unlock view restructure: logo-lockup (logo + brand + tagline) + glass card + primary "unlock vault" button + secondary open-vault/settings demoted
  • Setup wizard: backdrop + glass step cards + glass mode-picker cards + ▸ on next buttons
  • Two-column login form (surface: 'popup' | 'fullscreen' flag on renderForm)
  • Sticky save bar in fullscreen forms with externalActions flag
  • Form header with title + dirty-state subtitle + platform-aware save hint (⌘+S / Ctrl+S)

v0.5.1 Stream A — fullscreen + popup layout polish (merged 2026-05-03, c16adc4)

  • 3-column vault tab: sidebar (200px) + list (flex) + detail drawer (440px)
  • Sidebar type-category nav replacing flat item list (All items + per-type counts)
  • Bottom sheet for "new item" type picker (pane-only scrim, sidebar stays interactive)
  • Shared toast system at extension/src/shared/toast.ts (showToast(message, type, durationMs))
  • GLYPH_VAULT_TAB = '⧉' (U+29C9) replacing &#x2934; pop-out button in popup
  • Per-type glyph icons in popup item rows
  • Empty-state treatments (popup list empty, popup search-empty, vault list section-empty)
  • Emoji sweep — all remaining UI emoji replaced with monochrome glyph constants

v0.5.1 Stream B — settings UX redesign (merged 2026-05-03, bd6a301)

  • Unified left-nav settings page (Device / Vault grouping)
  • Sections: Autofill (Device), Display (Device — password coloring), Security (Vault — Recovery QR + trusted devices), Generator (Vault), Retention (Vault), Backup (Vault), Import (Vault)
  • devices standalone sidebar entry subsumed into Security section

v0.5.1 Stream C — Recovery QR (merged 2026-05-03, 934dfe0)

Spec: docs/superpowers/specs/2026-05-01-recovery-qr-design.md Plan: docs/superpowers/plans/2026-05-01-recovery-qr-and-entropy-floor.md

  • Rust core: relicario-core/src/recovery_qr.rsgenerate_recovery_qr / unwrap_recovery_qr / recovery_qr_to_svg (109-byte binary payload, never written to disk)
  • WASM bindings: generate_recovery_qr / unwrap_recovery_qr + session stores image_secret for regeneration
  • CLI: relicario recovery-qr generate / recovery-qr unwrap subcommands (TTY render)
  • Extension: three-state Security settings card; setup wizard "generate before you go" banner
  • Setup wizard Style C redesign — centered hero card + colored progress track + glyph mode icons (replacing the prior glass-card vertical wizard)

1C-γ — attachments + Document type + device registration + trash + history

Specs: docs/superpowers/specs/2026-04-24-relicario-extension-1c-gamma1-design.md, docs/superpowers/specs/2026-04-26-relicario-extension-1c-gamma2-design.md Plans: docs/superpowers/plans/2026-04-24-relicario-extension-1c-gamma1.md, docs/superpowers/plans/2026-04-26-relicario-extension-1c-gamma2.md

  • Core: relicario-core/src/item_types/document.rs (DocumentCore — signature + signed-on date)
  • Extension: Document type form + signature-block detail (extension/src/popup/components/types/document.ts)
  • Attachments wired into 6 type forms via shared disclosure; 📎 indicator in item list
  • Attachment cap setting (per-vault bytes cap) in vault settings; CLI enforces cap on attach
  • Service worker: trash operations (listTrashed, restoreItem, purgeItem, purgeAllTrash); batched purge
  • Device registration from the popup (no setup-wizard detour)
  • Field history end-to-end (WASM get_field_history, popup viewer)
  • Attachment IDs expanded to 128 bits with is_valid check (audit I2)
  • Per-vault attachment bytes cap enforced (audit I3)
  • IDs validated on backup restore (audit B4)

Plan B multi-stream refactor (2026-05-09 → 2026-05-25)

Cycle 1:

  • Stream A: security audit fixes + docs polish (89090a8)
  • Stream B: main.rs split into commands/ modules + git_run helper (b9bd152)

Cycle 2:

  • Stream A: prompt_or_flag<T> + builder compression — compressed build_*_item helpers (3dd1e1b)
  • Stream B: Vault::after_manifest_change wrapper, single canonical ParamsFile in session (3759f6a)
  • Stream C: core/WASM seam — base32_decode_lenient, parse_month_year, guess_mime exported from WASM; CLI parsers migrated to relicario-core::parse (e69b347)

Misc:

  • CLI: gen alias for generate, -l/-w short flags, batched purge
  • base32 module extracted from core, two duplicate RFC-4648 impls deduplicated
  • License switched to GPL-3.0-or-later

Vault-tab management surfaces revamp (2026-05-24 → 2026-05-30)

Spec: docs/superpowers/specs/2026-05-23-vault-tab-management-surfaces-revamp-design.md Plan: docs/superpowers/plans/2026-05-24-vault-tab-management-surfaces-revamp.md

  • Shared utilities: relative-time.ts consolidating 5 duplicate inline copies (9da45dd, a587965), webcrypto ssh-fingerprint.ts (1edfa67), shared section-header / glyph-btn / kv-row / fingerprint CSS (367adce), history/revoke/restore glyph constants (c943a06)
  • Settings pane revamp — synced/local split + session timeout UI (299e7db)
  • Devices pane revamp — SHA256 fingerprint + added-by display + glyph revoke with inline two-step confirm (047df6e)
  • Trash pane revamp — per-item purge countdown via daysUntilPurge + glyph restore + bottom-right empty-trash (ed6e218)
  • Field-history pane visual polish — section headers + glyph reveal/copy buttons (32e674e)
  • Item-history-index pane — top-level "items with history" list (32e1632)
  • Sidebar slot wiring + #history/<id> route with #field-history/<id> legacy normalization (88d7228)

Doc-structure redesign (2026-05-30, complete)

Spec: docs/superpowers/specs/2026-05-30-doc-structure-redesign-design.md Plan: docs/superpowers/plans/2026-05-30-doc-structure-redesign.md (all 37 sub-step boxes ticked)

  • Task 1: Renamed ARCHITECTURE.mdDESIGN.md, docs/ARCHITECTURE.mddocs/CRYPTO.md, FORMATS.mddocs/FORMATS.md (36a59cd)
  • Task 2: Added scope headers + "Next:" footers to all tour docs (5e7023f)
  • Task 3: Fixed incoming links to renamed paths (01377e7)
  • Task 4: Updated CLAUDE.md living-docs table + added three discipline rules (bae3f7c)
  • Task 5: Final verification gate — all 6 steps pass cleanly (Step 3 grep had three false positives — correct new-path sibling links inside docs/, not stale references)

Post-audit cleanup (2026-05-30)

  • STATUS.md + ROADMAP.md synced with three weeks of stealth-shipped work (72a59c6, 0bde093)
  • CLAUDE.md gains rule #4 (plan-state hygiene) + doc-structure plan checkboxes ticked retroactively (cccb7d7)
  • Vault lock-screen logo: <img class="brand-logo"> added to renderLockScreen for parity with popup unlock view (39ae629)
  • Extension test-debt cleared: 17 stale tests (settings + devices + router) updated to match the post-Stream-B + post-revamp components — 371/371 extension + 281 Rust tests green (797709b, c9802ef, 361f3b4)
  • v0.6.0 cut: version bumps + CHANGELOG entry covering the full v0.5.x train

In progress (uncommitted on main)

  • .claude/settings.json — harness config tweaks (kept aside intentionally)
  • Two superseded doc-plan/spec files showing modifications — 2026-04-22-relicario-extension-1c-beta1.md and 2026-04-11-relicario-design.md (kept aside intentionally)

Up next

Per the 2026-05-30 post-v0.6.0 audit of the three 2026-05-04 architecture-review specs:

  • CLI restructure (2026-05-04-cli-restructure-design.md) — already shipped as Plan B Cycles 1+2 (b9bd152, 3dd1e1b, 3759f6a, e69b347); the last gap (read-side refresh_groups_cache callers in list/get) closed in d717f0d. Done-criteria all met.
  • Security polish (2026-05-04-security-polish-design.md) — already shipped as Stream A Cycle 1 (89090a8) plus follow-ups (0c9387f start.sh fourth window, 229e483 recovery_qr.rs docs). All four phases done.
  • Extension restructure (2026-05-04-extension-restructure-design.md, plan docs/superpowers/plans/2026-05-30-extension-restructure.md) — half-shipped:
    • Phase 1 (StateHost typing) — merged c3f8e35 (4 commits, 378/378 tests). View+PopupState moved to shared/popup-state.ts; StateHost interface fully typed; __resetHostForTests exported; double-registration guard. PopupState widened to absorb VaultState's vault-tab-only fields.
    • Phase 2 (SW storage extract) — merged b6707f4 (1 commit, 376/376 tests). loadDeviceSettings / saveDeviceSettings / loadBlacklist / saveBlacklist consolidated in service-worker/storage.ts; itemToManifestEntry moved to service-worker/vault.ts. Router files shrank ~70 LOC combined.
    • Phase 5 (P2 cluster) — merged 0496dfe (5 commits, 377/377 tests). Inactivity timer rule inverted (READ_ONLY_CONTENT_CALLABLE exclusion set); state.gitHost cleared on session expiry; teardownSettingsCommon extracted; Promise.allSettled in devices (trash.ts was a no-op — single-message load path on current main); MutationObserver scan() debounced 200ms.
    • Phase 3 (Setup wizard SW migration + step registry) — Effort: L. Depends on Phase 1 . Biggest single phase. Adds create_vault / attach_vault SW handlers; setup.ts drops direct WASM imports + collapses six renderStepN/attachStepN pairs into a step registry + adds clearWizardState.
    • Phase 4 (vault.ts split + vault_locked channel lift) — Effort: M. Depends on Phase 1 . Splits 1037-LOC vault.ts into 5 modules (vault-shell, vault-sidebar, vault-list, vault-drawer, vault-form-wrapper); lifts the vault_locked RPC intercept into shared/state.ts's sendMessage wrapper.
    • Phase 6 (get_vault_status + sidebar status indicator) — Effort: S-M. Depends on Phase 4. Closes the relicario status CLI/extension parity gap.
    • Combined test count at end of three-stream merge: 389/389 vitest passing (baseline 371 + 18 new across the three phases).

Beyond extension restructure, ROADMAP medium-term holds Phase 4 command palette (no spec yet). Long-term: relay server, mobile.

See ROADMAP.md for the longer arc and CHANGELOG.md for tagged-release history (current head: v0.5.0 entry, dated 2026-05-02 — predates the v0.5.1 train work and will be revised when the next tag cuts).