Commit Graph
133 Commits
Author SHA1 Message Date
thePR0M3TH3ANandClaude Opus 5 9e0f045ccb Stop the test suite exiting 0 after 10% of its tests
`pytest src/tests` died at 123 of 1170 tests with exit code 0 -- no summary,
no coverage report, and a shell that saw success. Four tests reach code
paths that call os._exit(0), which skips interpreter finalization and takes
pytest with it.

The os._exit is deliberate and stays: some builds with native extensions
intermittently SIGSEGV during teardown after an otherwise clean shutdown,
which is why _exit_as_main_process exists. But that reasoning applies to the
real process exit, not to a function under test. Adds _terminate(), which
raises SystemExit when PYTEST_CURRENT_TEST is set and calls os._exit
otherwise, and routes the three in-process exit paths through it.

This restores a contract the tests already assumed:
test_auto_sync_triggers_post asserts `pytest.raises(SystemExit)`. It was
written when display_menu raised, and the later switch to os._exit did not
fail that test -- it killed the runner instead, which is why nobody noticed.

The suite now runs to completion: 1160 passed, 15 failed, 16 skipped, and it
exits 1 rather than claiming success.

Those 15 were always failing; they were simply never reached. Five of them
were mine, and this is the uncomfortable part: the gen_version argument
added in 2aed95a broke more FakePasswordGenerator doubles than I found,
because the earlier regression run stopped before reaching them and I
concluded "no new failures" from a truncated result. All 20 remaining
doubles now take **_, so they absorb gen_version and anything added later
rather than needing a sweep each time the real signature grows.

The other 10 are pre-existing and unrelated -- legacy-migration and
checksum-backup failures, an index0.py int-parsing bug
(`invalid literal for int() with base 10: 'temp'`), and one that needs a TTY
this environment lacks.

Determinism gate still green.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01HtNMsKzzFTPURemX7tT19u
2026-07-31 22:31:19 -04:00
thePR0M3TH3ANandClaude Sonnet 4.6 5dc8e015ae fix: replace sys.exit(0) with os._exit(0) to prevent SIGSEGV on graceful exit
Python interpreter teardown with C extensions (Textual, crypto libs) can
trigger SIGSEGV (-11) when sys.exit() is called. os._exit() bypasses the
teardown entirely, producing a clean exit code 0.

Three call sites replaced:
- _cleanup_and_exit() in handle_remove_fingerprint (~line 254)
- graceful exit path in main loop (~line 1520)
- signal_handler shutdown path (~line 1862)

Fixes: SeedPass-1d93

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
2026-03-09 12:49:23 -04:00
thePR0M3TH3AN 033870f2df fix: harden legacy/tui3 non-tty flows and shutdown stability 2026-03-03 21:56:55 -05:00
thePR0M3TH3AN 8e3aaa8653 cli: restore legacy launch compatibility and fix tui v2 header rendering 2026-03-02 15:51:25 -05:00
thePR0M3TH3AN f0c120f84d feat: add semantic search modes across cli api and tuis 2026-03-02 12:28:24 -05:00
thePR0M3TH3AN ec407c611a feat: wire semantic controls into legacy and tui v2 interfaces 2026-03-02 11:52:30 -05: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 073b1065ca Handle unlock cancellation messages robustly in settings flow 2026-02-25 21:35:33 -05:00
thePR0M3TH3AN 88c1974ac6 Harden TUI recovery paths and add release integrity gates 2026-02-25 19:18:54 -05:00
thePR0M3TH3AN fcbe2b2943 Harden security item 2: KDF policy, export safeguards, and tests 2026-02-25 18:15:51 -05:00
thePR0M3TH3AN dd7290e83b Add robust AI TUI harness, docs roadmap, and lock/unlock fix 2026-02-23 14:35:40 -05: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
thePR0M3TH3AN e528bebae3 Refine console logging 2025-08-23 13:19:27 -04:00
thePR0M3TH3AN d106802a18 Reduce console logging noise 2025-08-23 12:46:52 -04:00
thePR0M3TH3AN 7b0344739f refactor: restrict console logging and pause during UI 2025-08-22 22:24:04 -04:00
thePR0M3TH3AN b307728c05 feat: support pausing console logs 2025-08-22 21:50:04 -04:00
thePR0M3TH3AN c13742f3f3 Merge pull request #838 from PR0M3TH3AN/codex/add-manual-export-without-encryption
Add option to export and import database without encryption
2025-08-20 21:08:49 -04:00
thePR0M3TH3AN 6c8b1928b8 Add option to export and import database without encryption 2025-08-20 21:00:12 -04:00
thePR0M3TH3AN 492bfba3fb tests: add offline default and kdf slider 2025-08-20 20:51:36 -04:00
thePR0M3TH3AN 619226d336 feat: support random and deterministic TOTP secrets 2025-08-20 18:36:19 -04:00
thePR0M3TH3AN b97d60778b Restore compatibility for key hierarchy 2025-08-20 18:12:02 -04:00
thePR0M3TH3AN bbb26ca55a test: add key hierarchy tests 2025-08-20 17:57:50 -04:00
thePR0M3TH3AN 87999b1888 test: cover backup restore startup 2025-08-19 08:53:26 -04:00
thePR0M3TH3AN 199d02ab72 Clarify placeholder utils and clean imports 2025-08-08 15:47:52 -04:00
thePR0M3TH3AN 051454ff2e Test avoiding decryption when selecting active profile 2025-08-06 21:45:21 -04:00
thePR0M3TH3AN 5cdb4ecac5 Test quick unlock toggle after profile creation 2025-08-06 20:04:32 -04:00
thePR0M3TH3AN 7521014a61 Initialize config manager lazily for offline mode 2025-08-06 19:49:46 -04:00
thePR0M3TH3AN d92385eff9 Add tests for secret mode initialization 2025-08-06 19:23:56 -04:00
thePR0M3TH3AN ed7763195e Improve password change flow 2025-08-06 19:07:40 -04:00
thePR0M3TH3AN f0a7fb7da1 Queue background errors 2025-08-05 23:26:54 -04:00
thePR0M3TH3AN 099c24921f feat: add configurable prompt backoff 2025-08-05 22:48:18 -04:00
thePR0M3TH3AN 6888fa2431 Remove duplicate import in test 2025-08-05 22:18:26 -04:00
thePR0M3TH3AN 68eaa34d76 Add dependency scanning and optional dependency checks 2025-08-05 21:04:50 -04:00
thePR0M3TH3AN 87cf2d837b Refine exception handling 2025-08-05 20:34:26 -04:00
thePR0M3TH3AN 89cbef1aa4 Flush stdin and exit stats screen on Enter 2025-08-05 13:13:31 -04:00
thePR0M3TH3AN 1f669746db Handle empty profile cleanup 2025-08-05 12:24:53 -04:00
thePR0M3TH3AN 8e78a72257 Use manager sync for Nostr restore 2025-08-03 16:38:33 -04:00
thePR0M3TH3AN 032caed3d0 Add atomic write utility and tests 2025-08-03 08:57:04 -04:00
thePR0M3TH3AN ccca399b09 docs: clarify manual clipboard dependencies 2025-08-03 08:12:25 -04:00
thePR0M3TH3AN dcd095d1af Include entry type in search results 2025-08-02 16:26:52 -04:00
thePR0M3TH3AN 144751ef02 fix exit crash when nostr client missing 2025-08-01 09:28:49 -04:00
thePR0M3TH3AN 9adb539b84 Keep stats screen visible 2025-08-01 08:32:44 -04:00
thePR0M3TH3AN 77757152d7 Add async background sync task management 2025-07-31 19:38:09 -04:00
thePR0M3TH3AN 6d82ef1815 Add StatsManager for single display 2025-07-31 16:01:40 -04:00
thePR0M3TH3AN ceb2eb28ad Fix Nostr manifest handling 2025-07-31 14:42:53 -04:00
thePR0M3TH3AN 2d39d7a5bd feat(stats): refresh triggers background sync 2025-07-28 13:31:15 -04:00
thePR0M3TH3AN c23b2e4913 Refactor password manager modules 2025-07-17 19:21:10 -04:00
thePR0M3TH3AN c787651899 Return all Nostr event IDs 2025-07-17 15:21:08 -04:00