mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2026-10-29 00:42:08 +00:00
Python's `seedpass` launches its TUI when invoked with no subcommand. The port printed a help dump instead, which is why running the bare command looked broken: nothing was wrong with it, there was simply no way in. This adds the interactive mode that was missing. Scope is the daily path -- browse, search, copy, reveal, add a password / TOTP / key-value entry, archive, switch profile -- not a port of Python's v2 and v3 TUIs, which are around 20k lines of Textual between them. Piped or redirected, the bare command still prints the help: there is no terminal to drive. No new runtime dependencies. Node's tty and ANSI directly, rather than a TUI framework, because everything bundled here shares a process with unlocked seed phrases and the CLI's runtime surface is currently commander plus the noble/scure crypto libraries. The agent-blind rule from plan section 9.3 carries over intact, and matters more here than in the CLI because this screen renders the whole vault at once: list and detail views show metadata only, `c` copies without ever drawing the value, and `r` is the single explicit reveal -- on screen until the next keypress, then gone from the following frame. Everything is drawn on the alternate screen buffer, so a revealed secret cannot be recovered by scrolling back after quitting, and never lands in a terminal log that captures the main buffer. The key-value field is masked while being typed for the same reason. terminal.ts owes the user one thing above all: their shell back. Raw mode with a hidden cursor is an unusable terminal, so restoration is idempotent and wired to exit, SIGINT, SIGTERM, SIGHUP, and the uncaught-exception paths -- verified through a pty for each. Holding raw mode across the whole unlock sequence rather than toggling it per prompt also fixes a narrow leak: echo came back on between password attempts, so a password retyped after a typo was echoed in clear text. Tests drive the real screens through an injected terminal, including the redaction properties above. Two harness bugs worth recording, because both produced confident nonsense: sampling the frame count after dispatching a key made a synchronous redraw look like no redraw at all, and waiting only for "the screen stopped changing" returned during the second-long PBKDF2 a mutation performs, so the next keystroke landed on the previous screen and typed "q" into a form field instead of quitting. 122 CLI tests, 220 core tests, 36/36 cross-impl checks. Co-Authored-By: Claude Fable 5 <[email protected]>
SeedPass Docs
This directory contains SeedPass project documentation.
Start Here
dev_control_center.md(single source to decide what to do next)
Agent and Autonomy Docs
agent_autonomy_security_plan.mdpolicy_as_code.mdsync_conflict_contract.md
Core Security Docs
security_readiness_checklist.mdthreat_model.mdcrypto_key_management_review.mdsecret_handling_local_exposure_review.mdauth_lock_unlock_access_review.mdsupply_chain_release_integrity.mdrelease_verification_runbook.mdrelease_protection_policy.mdoperational_runbooks.mdstaged_rollout_runbook.md
Architecture and Product Docs
ARCHITECTURE.mdSPEC.mdtypescript_web_extension_port_plan.mdentry_types.mdentry_graph.mdtui_v3_plan.md(active roadmap for scratch rebuild)tui_v2_plan.md(legacy logic reference)tui_v2_parity_checklist.mdtui_v2_parity_backlog.mdtui_v2_legacy_parity_matrix.mdtui_v2_ui_refresh_plan.mdsemantic_vector_index_plan.mdtui_v2_cutover_decision.mdtui_v2_large_vault_validation.mdsecurity.mdnostr_setup.mdnostr_namespace_reset.mdpackaging.md
QA and Testing Docs
TEST_INVENTORY.md(central index of all tests and runners)agent_testing_roadmap.mdai_agent_tui_testing.mdagent_test_format.mdinstaller_testing.mdkb_scale_validation.mdci-health-2026-02-19.mdagent-handoffs/README.md
Discoverability Commands
seedpass --helpseedpassseedpass tui2seedpass --legacy-tuiseedpass legacyseedpass <group> --helpseedpass tui2 --helpseedpass tui2 --checkseedpass capabilities --format jsonseedpass agent bootstrap-context