mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2026-10-31 18:02:05 +00:00
48 lines
4.3 KiB
Markdown
48 lines
4.3 KiB
Markdown
# Memory Update (2026-03-03)
|
|
|
|
## Architectural Pivot: TUI v3 Scratch Rebuild
|
|
- **Decision:** Shifted development from TUI v2 to TUI v3.
|
|
- **Rationale:** v2 became a monolithic "God Object" (>6,500 lines). v3 uses a modular architecture with separate files for `widgets/` and `screens/`.
|
|
- **Layout Solution:** Moved from "all-in-one-frame" to a **Screen-based transition** model.
|
|
- `SettingsScreen`: Full-screen configuration.
|
|
- `MaximizedInspectorScreen`: Full-screen focused detail (bound to `z`).
|
|
- **Board Architecture:** Implemented specialized ASCII boards (e.g., `TotpBoard`, `SshBoard`) that reactively swap in the inspector based on the selected entry kind.
|
|
|
|
## Technical Insights & Fixes
|
|
- **Action Strip Hardening:** Discovered that Textual widget borders and padding offset click coordinates. Fix: subtract border/padding widths from `event.x/y` before parsing segments.
|
|
- **Reactive Selection:** Used `on_data_table_row_highlighted` in v3 to trigger real-time inspector updates. This provides a much smoother feel than requiring a manual "open" command.
|
|
- **Confirmation Logic:** Hardened the "double-press" mechanism for high-risk actions (Seeds/Reveal). Replaced subtle status messages with bold "CONFIRMATION REQUIRED" inspector cards.
|
|
- **Regression Fix:** Re-synchronized `test_tui_v2_parity_scenarios.py` tests. They previously assumed auto-selection of filtered results, which is no longer the default behavior.
|
|
|
|
## Infrastructure
|
|
- **Test Centralization:** Created `docs/TEST_INVENTORY.md`.
|
|
- **Interactive Harness:** Created `scripts/interactive_agent_tui_test.py` which now supports both v2 and v3. It uses dependency injection to mock services, allowing for safe, password-free exploratory testing.
|
|
- **CLI Selector:** Updated root command to support `--tui [legacy|v2|v3]` and a direct `tui3` command.
|
|
|
|
## Next Steps for Future Sessions
|
|
- Implement the `EditScreen` in v3.
|
|
- Port the remaining Nostr Relay management logic to a dedicated v3 board.
|
|
- Complete the 1:1 pixel/character parity check against the 9 remaining mockups using the new `Board` classes.
|
|
|
|
## Audit Addendum (2026-03-03)
|
|
- Ran a v3 parity-focused static/runtime audit against v2 behavior contracts.
|
|
- Found a critical lock-state issue in v3: `session_locked` defaults to `True`, but v3 currently exposes `lock` only (no `unlock` action/command), which blocks reveal/archive/copy flows by default.
|
|
- Found a critical QR defect in v3: `action_show_qr` references `render_qr_ascii` without a local import/definition in `tui_v3/app.py`.
|
|
- Found parity gaps where inspector/action hints advertise workflows (`edit`, `export`, `sync`, `load session`, etc.) that are not currently wired in v3 keybindings/commands.
|
|
- Found v3 sensitive payload resolution is incomplete for high-risk kinds (SSH/PGP/Nostr), so copy/reveal behavior is not parity-complete.
|
|
- Confirmed the existing interactive harness can run v3, but secure reveal flow assertions currently fail in the script run output, reinforcing parity-blocker status.
|
|
|
|
## Applied Fixes (2026-03-03)
|
|
- v3 now includes a local `render_qr_ascii` helper in `tui_v3/app.py`, removing the unresolved symbol failure for QR rendering.
|
|
- v3 command processor now supports `session-status` and `unlock <password>`, and lock handling routes through dedicated app actions.
|
|
- Added `action_session_status`, `action_lock`, and `action_unlock` in v3 app with graceful service-capability checks.
|
|
- Set v3 default `session_locked` state to `False` so primary actions are not blocked at startup in injected-service and preflighted runtime flows.
|
|
- Fixed sidebar node selection handling so `managed:<id>` / `agent:<id>` opens the referenced entry instead of incorrectly mutating `active_fingerprint`.
|
|
- Fixed v3 widget lookup scope bugs by switching selection/refresh/palette/board updates from app-root `query_one(...)` to `self.screen.query_one(...)` for screen-mounted widgets.
|
|
- Added focus-refresh behavior for `EntryDataTable` so runtime-added entries appear immediately when the grid gains focus.
|
|
- Added `src/tests/test_tui_v3_smoke.py` covering:
|
|
- palette lock/unlock/session-status command path
|
|
- profile-tree child node selection semantics (`managed:<id>`, `agent:<id>`)
|
|
- grid focus refresh behavior for runtime-added entries
|
|
- Re-ran interactive harness after fixes; seed reveal confirmation now works end-to-end in v3 walkthrough output.
|