diff --git a/docs/dev_control_center.md b/docs/dev_control_center.md index 9eb9b3c9..376a7740 100644 --- a/docs/dev_control_center.md +++ b/docs/dev_control_center.md @@ -65,6 +65,8 @@ Use these docs as inputs, but treat this file as the decision layer: ## 4) Recommended Next Steps (Priority Order) 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. 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. diff --git a/docs/tui_v2_legacy_parity_matrix.md b/docs/tui_v2_legacy_parity_matrix.md index 8f670d0c..996bba1a 100644 --- a/docs/tui_v2_legacy_parity_matrix.md +++ b/docs/tui_v2_legacy_parity_matrix.md @@ -9,7 +9,7 @@ Purpose: map legacy interactive workflows to Textual TUI v2 equivalents and isol - Implemented: core daily workflows are covered in TUI v2 (add/retrieve/search/modify/archive, reveal/QR, 2FA board, settings/profile/relay/sync, export/import/checksum paths). - Partial: a few legacy menu affordances are represented differently in v2 (palette-first vs nested menus). -- Gaps: remaining high-value gaps are low-volume utility affordances rather than core workflows. +- Gaps: remaining high-value gaps are mostly UX-guidance and operational affordances rather than missing core data operations. ## Matrix @@ -50,6 +50,7 @@ Purpose: map legacy interactive workflows to Textual TUI v2 equivalents and isol | Export/import database | Settings | `db-export`, `db-import` | Implemented | | | 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. | | 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. | @@ -59,8 +60,10 @@ Purpose: map legacy interactive workflows to Textual TUI v2 equivalents and isol ## Prioritized Gap Queue -1. Revalidate and close “Full legacy workflow coverage” in `docs/tui_v2_parity_checklist.md`. +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. Run parity bug-bash + checklist update to move full legacy workflow coverage to complete. +1. Land guided onboarding panel/flow parity improvements. +2. Add lock/session visibility commands and test coverage. diff --git a/memory-update.md b/memory-update.md index bbeb84dd..e864c98b 100644 --- a/memory-update.md +++ b/memory-update.md @@ -792,3 +792,36 @@ - Docs updated: - `docs/tui_v2_parity_checklist.md`: command discoverability row moved from `Partial` to `Yes`. - `docs/dev_control_center.md`: priorities refocused to feature/parity and test coverage targets first. + +## 2026-03-02 Parity UX slice: guided quick-start + in-app stats for TUI v2 +- User feedback (side-by-side v2 vs legacy) identified three UX parity gaps: + 1) guided onboarding/first-run feel, + 2) stats/operational visibility, + 3) explicit lock/session affordances. +- Implemented first two in `src/seedpass/tui_v2/app.py`: + - new palette command: `quickstart` + - renders guided first-steps panel in detail pane. + - new palette command: `stats` + - renders vault stats dashboard in detail pane. + - prefers `VaultService.stats()` when available. + - falls back to deterministic local aggregate from `EntryService.search_entries(..., include_archived=True)`. + - empty-vault UX improvement: + - default detail panel now shows Quick Start guidance instead of plain "No entries match". +- Discoverability updates: + - palette placeholder includes `quickstart` and `stats`. + - command help/reference now includes quickstart/stats entries. + - left actions panel includes quickstart/stats hint. +- Tests added/updated: + - `src/tests/test_tui_v2_textual_interactions.py` + - `test_tui2_textual_quickstart_and_stats_commands` + - `test_tui2_textual_empty_vault_shows_quickstart` + - `src/tests/test_tui_v2_action_matrix.py` + - command matrix includes quickstart/stats success and usage-error paths. +- Validation: + - `pytest -q src/tests/test_tui_v2_textual_interactions.py src/tests/test_tui_v2_action_matrix.py src/tests/test_tui_v2_parity_scenarios.py src/tests/test_tui_v2_helpers.py` + - Result: `42 passed`. + - `./scripts/tui2_coverage_gate.sh` -> PASS (`src/seedpass/tui_v2/app.py` remains above gate at `79.30%`). +- Planning docs updated to track remaining UX parity gap: + - `docs/dev_control_center.md` + - `docs/tui_v2_legacy_parity_matrix.md` + (remaining medium gap: explicit lock/session affordances). diff --git a/src/seedpass/tui_v2/app.py b/src/seedpass/tui_v2/app.py index 7e916caf..216ab950 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 | " + "help-commands | quickstart | stats | " "filter | archive | restore | " "archive-filter | " "add-password