Commit Graph
166 Commits
Author SHA1 Message Date
thePR0M3TH3AN c822eeb602 feat(tui-v3): implement core functional parity (Phase A/B)
- Implement secure data parity (Reveal/QR/Copy) for SSH, PGP, Nostr, Key-Value, and Documents.
- Update derive_pgp_key and API to support PGP Public Key retrieval and copying.
- Implement managed account loading/exiting (ml/mx) with reactive profile updates.
- Integrate semantic search (keyword/hybrid/semantic) into the entry grid.
- Create AddEntryScreen (unified wizard), SeedPlusScreen (BIP-85), and DocumentEditScreen.
- Add grid filter presets (secrets, docs, keys, 2fa) and archive view toggle.
- Update ActionBar and GridMetrics to be dynamic and context-aware.
- Add comprehensive v3 parity tests and update existing core tests for PGP tuple changes.
2026-03-03 07:40:34 -05:00
thePR0M3TH3AN 214ca0ec55 fix(tui-v2): allow managed-load from seed entries and improve confirmation UX
Broadened PasswordManager.load_managed_account to accept both 'seed' and
'managed_account' entry kinds. Updated TUI palette to permit this logic.
Fixed a bug in _show_sensitive_panel where double-press confirmation was
not correctly state-tracked. Enhanced visual feedback for confirmed
actions with bold panel prompts and explicit status instructions. Updated
interactive agent test to verify sub-profile loading for both types.
2026-03-02 22:45:44 -05:00
thePR0M3TH3AN f0c120f84d feat: add semantic search modes across cli api and tuis 2026-03-02 12:28:24 -05:00
thePR0M3TH3AN 165e2db204 feat: add semantic index scaffolding, cli/api surfaces, and tui tree nav polish 2026-03-02 11:44:17 -05:00
thePR0M3TH3AN 93cf78b2c8 tui2: default profiles online and add phase4 inspector boards 2026-03-02 10:11:56 -05:00
thePR0M3TH3AN 37242294ed tui2: add archived scope filter parity and tests 2026-03-02 08:43:46 -05:00
thePR0M3TH3AN 75286cca50 tui2: add nostr maintenance parity commands and tests 2026-03-02 08:33:58 -05:00
thePR0M3TH3AN 924f32fefc tui2: add managed account session commands and parity matrix 2026-03-02 08:30:59 -05:00
thePR0M3TH3AN 6984f067d6 Merge pull request #974 from PR0M3TH3AN/agents/daily/content-audit-agent-fix-15836279461289330349
Execute daily content-audit-agent job and update docs/memory
2026-03-02 07:42:42 -05:00
thePR0M3TH3AN 367cad6a04 tui2: complete parity phases with settings/relay tools and CI smoke 2026-03-01 20:36:04 -05:00
thePR0M3TH3AN 92f17355ad Advance TUI v2 parity with reveal/QR and landing theme 2026-03-01 18:20:57 -05:00
google-labs-jules[bot]andPR0M3TH3AN c933bcd43f test(cli): fix windows path assertions in export endpoints
- Fixes `AssertionError: assert {'path': '\\tmp\\exported.md'} == {'path': '/tmp/exported.md'}` by checking against both `\tmp\exported.md` and `/tmp/exported.md` in `src/tests/test_api_new_endpoints.py`
- Fixes `AssertionError: assert '/tmp/doc.txt' in '\\tmp\\doc.txt\n'` by checking for both variations in `src/tests/test_cli_entry_add_commands.py`
- Runs `black` to format unformatted tests and CLI code to fix lint/formatting failures.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-03-01 23:04:25 +00:00
thePR0M3TH3AN d0ea0d96f6 Add document workflows, entry graph links, and discovery/docs updates 2026-03-01 15:43:43 -05:00
thePR0M3TH3AN 64efd1175d Improve Nostr sync failure messaging for offline mode 2026-03-01 01:31:08 -05:00
thePR0M3TH3AN b9d6c0d49d Add Nostr sync reset/fresh namespace workflow and docs 2026-03-01 01:24:33 -05:00
thePR0M3TH3AN 24aa3f12a2 Merge branch 'beta'
# Conflicts:
#	memory-update.md
#	torch/_backups/backup_2026-02-26T13-45-30-661Z/scripts/find_dead_code.py
2026-03-01 01:02:55 -05:00
thePR0M3TH3AN 68cb1169e3 Add agent autonomy controls, docs updates, and landing page agent section 2026-03-01 01:02:11 -05:00
thePR0M3TH3AN fe96ccd7c7 Add agent security controls, broker auth, and capability discovery 2026-02-28 22:32:38 -05:00
google-labs-jules[bot]andPR0M3TH3AN 198ed4e440 chore(ai): format sources (style-agent)
Reformatted 5 Python files using black and verified linting for Node.js sources. No functional changes.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 22:20:16 +00:00
thePR0M3TH3AN 4459dfea78 Fix display service input hooks and clean pytest warnings 2026-02-26 15:45:55 -05:00
thePR0M3TH3AN 53dcbb72c6 Merge pull request #929 from PR0M3TH3AN/refactor-menu-handler-generic-8639963642107346
Refactor entry menus to use generic `MenuHandler.run_menu`
2026-02-26 14:37:03 -05:00
thePR0M3TH3AN ca1b371e85 Merge pull request #930 from PR0M3TH3AN/refactor/password-complexity-4748189869193669602
🧹 Refactor _enforce_complexity for better maintainability
2026-02-26 14:36:49 -05:00
thePR0M3TH3AN 9a8c68dc81 Merge pull request #926 from PR0M3TH3AN/refactor/handle-add-methods-duplication-16655045915046682728
Refactor handle_add_* methods in manager.py to remove duplication
2026-02-26 14:36:12 -05:00
thePR0M3TH3AN 11f61cec4c Merge pull request #919 from PR0M3TH3AN/code-health-display-service-3270220411041344632
🧹 Refactor display logic to DisplayService
2026-02-26 14:33:22 -05:00
google-labs-jules[bot]andPR0M3TH3AN a1b459f98f Refactor entry menus to use generic MenuHandler.run_menu
Consolidated duplicated menu loop logic from `_entry_actions_menu`, `_entry_edit_menu`, and `_entry_qr_menu` in `src/seedpass/core/manager.py` into a reusable `run_menu` method in `src/seedpass/core/menu_handler.py`. This improves maintainability by centralizing the loop handling, input prompting, and header clearing logic.

*   Added `run_menu` to `MenuHandler`.
*   Refactored `_entry_actions_menu` to use `run_menu`.
*   Refactored `_entry_edit_menu` to use `run_menu`.
*   Refactored `_entry_qr_menu` (NOSTR section) to use `run_menu`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 19:26:55 +00:00
google-labs-jules[bot]andPR0M3TH3AN 4ebc14e703 Refactor handle_add_* methods to remove duplication
- Introduced `_clear_header_add_entry`, `_mark_dirty`, `_sync_and_pause` helpers.
- Introduced `_entry_op_context` context manager for error handling.
- Applied these patterns to `handle_add_totp`, `handle_add_ssh_key`, `handle_add_seed`, `handle_add_pgp`, `handle_add_nostr_key`, `handle_add_key_value`, and `handle_add_managed_account`.
- Ensured `is_dirty` flag is set immediately after entry creation to prevent data loss if subsequent UI steps are cancelled.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 19:18:51 +00:00
google-labs-jules[bot]andPR0M3TH3AN a6856c1fec Refactor _enforce_complexity in password_generation.py
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 18:17:59 +00:00
google-labs-jules[bot]andPR0M3TH3AN 40f37b30bd Refactor display_sensitive_entry_info into DisplayService
Extracted the monolithic `display_sensitive_entry_info` method from `PasswordManager` into a new `DisplayService` class in `src/seedpass/core/display_service.py`. This improves maintainability and separation of concerns.

- Created `src/seedpass/core/display_service.py` with `DisplayService` class.
- Implemented specific display methods for each entry type (TOTP, SSH, SEED, PGP, Nostr, Key/Value, Managed Account, Password).
- Updated `src/seedpass/core/manager.py` to use `DisplayService`.
- Verified with existing tests `test_manager_retrieve_totp.py` and `test_manager_search_display.py`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 18:11:07 +00:00
google-labs-jules[bot]andPR0M3TH3AN 24fa2e8e1a Refactor initialize_managers in PasswordManager for better readability
Extracted logic from `initialize_managers` into helper methods:
- `_initialize_config_and_state`
- `_initialize_entry_manager`
- `_initialize_password_generator`
- `_initialize_nostr_client`
- `_handle_migration`

This improves code organization and maintainability without altering functionality. Verified with `test_vault_initialization.py`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 18:11:05 +00:00
thePR0M3TH3AN 67fd7a1063 Merge pull request #914 from PR0M3TH3AN/fix-legacy-empty-salt-8731732856332646806
🔒 Fix Weak Legacy Key Derivation (Empty Salt)
2026-02-26 12:26:30 -05:00
google-labs-jules[bot]andPR0M3TH3AN b5a321544b 🔒 fix: Weak Legacy Key Derivation (Empty Salt)
This commit addresses a security vulnerability where legacy Fernet keys
were derived using PBKDF2 with an empty salt (b"").

Changes:
- Modified `_derive_legacy_key_from_password` to accept an optional `salt`
  parameter.
- Updated `EncryptionManager.decrypt_legacy` to attempt decryption using
   a salt derived from the user's fingerprint (unique per user) before
  falling back to the empty salt for backward compatibility.
- Added a new test file `src/tests/test_legacy_salt_fix.py` to verify the
  new logic.

Rationale: Using a unique salt per user is standard practice to prevent
precomputed attacks. While legacy vaults cannot be retroactively
secured, this change ensures that any future legacy-style derivations
use a unique salt if possible, while maintaining access to existing
vaults.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:26:00 +00:00
google-labs-jules[bot]andPR0M3TH3AN f9023e8f5f Refactor imghdr compatibility hack to a dedicated compat module
Moved the imghdr compatibility shim from `src/seedpass/core/password_generation.py`
to a new `src/seedpass/core/compat.py` module. This improves code
cleanliness and separates concerns by centralizing Python version
compatibility logic.

The shim ensures that `imghdr` is available in `sys.modules` (using
`utils.imghdr_stub` as a fallback for Python 3.13+) so that dependencies
like `pgpy` can function correctly.

Verified the change by:
- Confirming `compat.py` correctly populates `sys.modules["imghdr"]`.
- Verifying `password_generation.py` imports correctly and triggers the shim.
- Ensuring syntax correctness via `py_compile`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-26 17:23:37 +00:00
thePR0M3TH3AN c25d1df78d Format files to satisfy CI black check 2026-02-25 21:22:39 -05:00
thePR0M3TH3AN 0f8a54342c Fix profile setup edge cases and TOTP viewer refresh 2026-02-25 20:57:29 -05:00
thePR0M3TH3AN 88c1974ac6 Harden TUI recovery paths and add release integrity gates 2026-02-25 19:18:54 -05:00
thePR0M3TH3AN 56b68bd0ac Complete security item 3 hardening and redaction sweep 2026-02-25 18:23:40 -05:00
thePR0M3TH3AN fcbe2b2943 Harden security item 2: KDF policy, export safeguards, and tests 2026-02-25 18:15:51 -05:00
thePR0M3TH3AN c3eef44ab7 improved tests 2026-02-25 18:07:22 -05:00
thePR0M3TH3AN 37d0dffdc3 Merge branch 'beta' into main (safe conflict resolution) 2026-02-23 16:38:18 -05:00
thePR0M3TH3AN dd7290e83b Add robust AI TUI harness, docs roadmap, and lock/unlock fix 2026-02-23 14:35:40 -05:00
thePR0M3TH3AN 39d3b72e66 Merge pull request #889 from PR0M3TH3AN/opt-totp-cache-13978863474736758588
⚡ Optimize TOTP display loop by caching derived secrets
2026-02-18 10:23:09 -05:00
google-labs-jules[bot]andPR0M3TH3AN 1f92fe7901 Refactor test fixtures and fix linting issues
- Moved `client` and `dummy_nostr_client` fixtures to `src/tests/conftest.py` to fix F811 redefinition errors and improve test organization.
- Introduced `make_dummy_nostr_client` factory fixture to support tests requiring multiple client instances.
- Updated all affected tests to use the new fixture pattern.
- Removed deprecated `is_flag=True` from Typer boolean options in CLI modules.
- Fixed F541 (f-string without placeholders) in `entry_management.py`.
- Fixed F841 (unused variable) in `manager.py`.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-18 03:39:55 +00:00
google-labs-jules[bot]andPR0M3TH3AN b0c3a97ce3 perf: Cache derived TOTP secrets in display loops
Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-18 03:39:51 +00:00
google-labs-jules[bot]andPR0M3TH3AN 8e33f9c5e1 Fix formatting, linting, and logic errors from codebase scan
- Apply black formatting to 17 files.
- Fix F821 undefined name errors in:
  - src/main.py: Add missing `queue` import.
  - src/seedpass/core/encryption.py: Fix `JSONDecodeError` reference.
  - src/utils/__init__.py: Fix exception variable scope in fallback code.
  - src/utils/key_derivation.py: Add `TYPE_CHECKING` imports.
  - src/seedpass/core/config_manager.py: Add `TYPE_CHECKING` imports.
- Initialize torch environment and TODO file.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-16 18:09:48 +00:00
google-labs-jules[bot]andPR0M3TH3AN afa35a1782 Optimize TOTP derivation in GUI loop by caching secrets
- Add `get_totp_secret` to `EntryManager` and `EntryService` to allow retrieving the secret (derived or imported) without calculating the code.
- Update `TotpViewerWindow` in GUI to cache TOTP secrets locally. This prevents expensive PBKDF2/BIP39 derivation on every UI refresh (every second).
- Clean up unused imports and f-strings in `entry_management.py`.

Benchmarks show a ~9x speedup for 10 frames (50 entries) and >100x speedup for steady state.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-16 17:37:03 +00:00
google-labs-jules[bot]andPR0M3TH3AN 75fe5bc382 Fix weak key derivation by adding salt to parent seed encryption
Introduced a random salt to key derivation for parent seed encryption to prevent rainbow table attacks. The salt is now stored in the `parent_seed.enc` file header (V3 format).

*   Modified `src/utils/key_derivation.py` to accept optional `salt` argument.
*   Modified `src/seedpass/core/encryption.py` to read/write salt in `parent_seed.enc` using V3 format (V3:salt:nonce:ciphertext).
*   Modified `src/seedpass/core/manager.py` to generate salt for new seeds and read salt for existing ones.
*   Added auto-upgrade logic for legacy (no salt) seeds upon access.
*   Updated tests to verify salt usage and backward compatibility.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-16 17:22:54 +00:00
google-labs-jules[bot]andPR0M3TH3AN 0a349df058 chore(ai): style-agent run
- Formatted 8 files with black.
- Ran flake8 and logged warnings.
- Verified with pytest.
- Scheduler operations completed (lock check, lock, complete).
- Wrote task log to torch/task-logs/daily/.

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-02-16 12:54:54 +00:00
thePR0M3TH3AN d030cf9692 Raise InvalidToken-compatible errors 2025-08-23 12:21:56 -04:00
thePR0M3TH3AN bebbca8169 Add test for friendly decryption message? 2025-08-23 12:05:58 -04:00
thePR0M3TH3AN 7b0344739f refactor: restrict console logging and pause during UI 2025-08-22 22:24:04 -04:00