diff --git a/docs/dev_control_center.md b/docs/dev_control_center.md index 376a7740..f3a0fd23 100644 --- a/docs/dev_control_center.md +++ b/docs/dev_control_center.md @@ -66,7 +66,7 @@ Use these docs as inputs, but treat this file as the decision layer: 1. Continue feature-development parity polish in TUI v2 with user-driven UX gaps. : prioritized gaps from side-by-side legacy vs v2 run: -: guided first-run onboarding, stats/ops visibility, explicit lock/session affordances. +: onboarding + stats/ops + lock/session affordances now landed; continue bug-driven UX polish. 2. Raise TUI v2 critical-path coverage beyond current gate floor (target >82% for `src/seedpass/tui_v2/app.py`). 3. Advance Nostr resilience validation with optional real-relay soak lane after deterministic suites. 4. Execute a tagged release integrity run and attach evidence URLs in readiness checklist. @@ -128,6 +128,11 @@ Progress update (2026-03-02): - added full palette command reference (`help-commands`, alias `commands`) - `help` now also renders in-app command reference in entry detail pane - focused TUI gate remains green with improved app coverage (`79.97%`) +- Session affordance parity improved in TUI v2: + - added `session-status`, `lock`, and `unlock ` palette commands + - left pane now displays explicit session lock state and managed-session indicator + - lock state blocks open/reveal/QR workflows until unlock succeeds + - interaction + matrix tests extended for usage, success, and failure paths ## 6) Working Rule diff --git a/docs/tui_v2_legacy_parity_matrix.md b/docs/tui_v2_legacy_parity_matrix.md index 996bba1a..b7e0c6ac 100644 --- a/docs/tui_v2_legacy_parity_matrix.md +++ b/docs/tui_v2_legacy_parity_matrix.md @@ -51,19 +51,17 @@ Purpose: map legacy interactive workflows to Textual TUI v2 equivalents and isol | Export TOTP codes | Settings | `totp-export` | Implemented | | | Backup/reveal parent seed | Settings | `parent-seed-backup [path] [password]` | Implemented | | | Stats view | Settings > Stats | `stats` (palette) | Implemented | In-app dashboard in detail pane. | +| First-run onboarding guidance | Startup path/menu guidance | Empty-vault onboarding panel + `onboarding` (alias: `welcome`) + `quickstart` | Implemented | Guided steps for first entry, inspect/reveal, and operations. | | Display npub | Main utility flow | `npub` (alias: `nostr-pubkey`) | Implemented | Displays active profile npub and QR payload in the sensitive panel. | | View archived-only list | Settings/List flow | `h` cycle archive scope or `archive-filter ` | Implemented | Supports active-only/default, all, and archived-only views. | | Reset Nostr sync state | Settings > Nostr | `nostr-reset-sync-state` | Implemented | Added to TUI v2 palette + tests. | | Start fresh Nostr namespace | Settings > Nostr | `nostr-fresh-namespace` | Implemented | Added to TUI v2 palette + tests. | | Load managed-account session | Retrieve managed account action | `managed-load (optional: entry_id)` | Implemented | Added in TUI v2 palette + tests. | | Exit managed-account session | Main loop when in child profile | `managed-exit` | Implemented | Added in TUI v2 palette + tests. | +| Session visibility | Operational/session affordance | `session-status` + left-pane session lines | Implemented | Shows lock state + managed session state. | +| Lock vault | Operational/session affordance | `lock` | Implemented | Locks session, clears selected view, blocks reveal/open actions. | +| Unlock vault | Operational/session affordance | `unlock ` | Implemented | Restores unlocked state; usage + failure paths covered in tests. | ## Prioritized Gap Queue -1. Medium: guided first-run onboarding parity in TUI v2 (legacy has explicit startup path). -2. Medium: explicit lock/session affordances and status visibility parity in TUI v2. - -## Suggested implementation order - -1. Land guided onboarding panel/flow parity improvements. -2. Add lock/session visibility commands and test coverage. +No active medium/high parity gaps are currently identified in this matrix. diff --git a/memory-update.md b/memory-update.md index e864c98b..b1fb60a3 100644 --- a/memory-update.md +++ b/memory-update.md @@ -825,3 +825,62 @@ - `docs/dev_control_center.md` - `docs/tui_v2_legacy_parity_matrix.md` (remaining medium gap: explicit lock/session affordances). + +## 2026-03-02 Parity UX slice: explicit session lock/unlock/status affordances +- Implemented in `src/seedpass/tui_v2/app.py`: + - new palette commands: + - `session-status` + - `lock` + - `unlock ` + - left panel now displays: + - `Session: locked|unlocked` + - `Managed: #|(none)` + - managed session visibility wired: + - `managed-load` sets active managed-session marker + - `managed-exit` clears active managed-session marker + - lock guard behavior: + - `open`, `reveal`, and `qr` actions are blocked while locked + - selected entry/view state is cleared on lock + - unlock restores normal browse/reveal behavior +- Command discoverability updates: + - palette placeholder/help summary/reference now include session commands. +- Tests added/updated: + - `src/tests/test_tui_v2_textual_interactions.py` + - `test_tui2_textual_palette_session_status_lock_and_unlock` + - managed session test now asserts filter-panel state line updates + - validation suite now covers `session-status`, `lock`, and `unlock` usage/unavailable paths + - `src/tests/test_tui_v2_action_matrix.py` + - matrix command paths now exercise session command usage + runtime cases +- Validation: + - `poetry run pytest -q src/tests/test_tui_v2_textual_interactions.py src/tests/test_tui_v2_action_matrix.py` + - Result: `28 passed`. +- Planning docs updated: + - `docs/tui_v2_legacy_parity_matrix.md` now marks session lock/unlock/status rows as implemented. + - `docs/dev_control_center.md` priority list now reflects onboarding as the primary remaining UX parity item. + +## 2026-03-02 Parity UX slice: first-run onboarding flow parity +- Implemented explicit onboarding guidance in `src/seedpass/tui_v2/app.py`: + - new palette command: `onboarding` + - alias: `welcome` + - `quickstart` remains supported and now renders the same onboarding guide for backward compatibility. +- Empty-vault startup behavior now renders the onboarding panel and status guidance: + - status text updated to: run `onboarding` (or `quickstart`) to begin. +- Onboarding guide content now provides a structured first-run path: + - create first entry + - inspect/reveal/QR verification + - operate with stats/help/linking commands. +- Command discoverability updates: + - palette placeholder, help summary, and reference include onboarding. + - left action hints now show onboarding/quickstart/stats path. +- Tests updated: + - `src/tests/test_tui_v2_textual_interactions.py` + - quickstart/stats test now includes onboarding command assertions + - empty-vault test now validates onboarding panel rendering + - `src/tests/test_tui_v2_action_matrix.py` + - matrix coverage now includes onboarding usage and success paths +- Validation: + - `poetry run pytest -q src/tests/test_tui_v2_textual_interactions.py src/tests/test_tui_v2_action_matrix.py` + - Result: `28 passed`. +- Planning docs updated: + - `docs/tui_v2_legacy_parity_matrix.md` now marks onboarding parity as implemented and clears active medium/high parity gaps. + - `docs/dev_control_center.md` now reflects that the tracked onboarding/stats/session UX gaps are landed. diff --git a/src/seedpass/tui_v2/app.py b/src/seedpass/tui_v2/app.py index 216ab950..fdd13808 100644 --- a/src/seedpass/tui_v2/app.py +++ b/src/seedpass/tui_v2/app.py @@ -282,7 +282,7 @@ def launch_tui2( yield Input( placeholder=( "Command palette: help | open | search | " - "help-commands | quickstart | stats | " + "help-commands | onboarding | quickstart | stats | session-status | lock | unlock | " "filter | archive | restore | " "archive-filter | " "add-password