Ran `poetry run black --check .` and `black src/tests/test_nostr_index_size.py src/tests/test_nostr_sdk_workflow.py`
to fix code formatting issues in the test audit run, which caused GitHub
Actions CI checks to fail.
Co-authored-by: PR0M3TH3AN <[email protected]>
Replaced non-deterministic `time.sleep` calls with active polling loops or
thread joins in `src/tests/` to improve test determinism and reliability.
Modified `test_unlock_sync.py`, `test_nostr_sdk_workflow.py`,
`test_background_relay_check.py`, `test_offline_mode_behavior.py`, and
`test_nostr_index_size.py`.
Generated integrity and audit reports in `reports/test-audit/`.
Completed the scheduler rotation by publishing completion logic and
task log file to `torch/task-logs/daily/`.
Co-authored-by: PR0M3TH3AN <[email protected]>
- Added `pytest.importorskip` calls for `pty` and `termios` to `src/tests/test_ai_tui_agent_harness.py`.
- Formatted `torch/scripts/test-audit/run_python_static_analysis.py` and `torch/scripts/test-audit/run_python_flaky_check.py` using `black`.
Co-authored-by: PR0M3TH3AN <[email protected]>
Added pytest.importorskip calls for 'pty' and 'termios' modules in
test_ai_tui_agent_harness.py to fix test failures on Windows where
these modules are unavailable.
Co-authored-by: PR0M3TH3AN <[email protected]>
Added `pytest.importorskip("pty")` and `pytest.importorskip("termios")` before `_load_harness_module()` call to properly skip `test_ai_tui_agent_harness.py` on Windows environments where these modules are not available. This prevents the `ModuleNotFoundError: No module named 'termios'` error during pytest collection.
Co-authored-by: PR0M3TH3AN <[email protected]>
Fixed broken documentation links pointing to non-existent \`docs/agent-handoffs/learnings\`
and \`docs/prompt-versioning.md\` files in \`TORCH.md\` and \`scheduler-lock.mjs\`.
Completed memory storage/retrieval steps and finalized the scheduler loop by
writing the required \`_completed.md\` task log.
Co-authored-by: PR0M3TH3AN <[email protected]>
- Skip `src/tests/test_ai_tui_agent_harness.py` on Windows to avoid `ImportError` due to missing `termios`/`pty` modules.
- Ensure the harness module is only loaded if the skip condition is not met.
Co-authored-by: PR0M3TH3AN <[email protected]>
- Formatted `src/tests/conftest.py` using `black` to fix CI formatting failures.
- This change ensures compliance with the repository's strict formatting checks (`poetry run black --check .`).
Co-authored-by: PR0M3TH3AN <[email protected]>
- Manually applied PEP 8 formatting (sorted imports, correct spacing) to `src/tests/conftest.py` to satisfy `poetry run black --check .` in CI.
- Retained the robust `try-import-except` logic for `trio` detection.
Co-authored-by: PR0M3TH3AN <[email protected]>
- Made `trio` backend detection in `src/tests/conftest.py` robust by using `try-import-except` instead of `find_spec`, fixing `ModuleNotFoundError` in environments where `find_spec` behavior differs or trio is partially present but not importable.
- Prevented test pollution in `src/tests/test_gui_features.py` by adding `try...finally` block to unsubscribe `refresh_codes` from the global `bus`, ensuring subsequent CLI tests (like `test_nostr_sync`) don't crash due to lingering callbacks.
- Hardened `src/seedpass_gui/app.py` against test-induced errors:
- `TotpViewerWindow.refresh_codes` now accepts `*args, **kwargs` to safely ignore event arguments if called via subscription.
- `MainWindow.vault_locked` catches `ValueError` when closing, handling cases where the window is already detached in test environments.
Co-authored-by: PR0M3TH3AN <[email protected]>
- Restored `src/tests/conftest.py` from `.bak` to fix missing `trio` conditional check, resolving `ModuleNotFoundError: No module named 'trio'`.
- Added `clean_pubsub` autouse fixture to `conftest.py` to clear the global `bus` subscribers between tests. This prevents test pollution that was causing `TypeError` in CLI tests and `ValueError` in GUI tests due to lingering callbacks.
Co-authored-by: PR0M3TH3AN <[email protected]>
Fixes `OSError: [Errno 22] Invalid argument` in Windows CI runs by mocking
`utils.password_prompt.masked_input` in `test_add_and_delete_entry`. This prevents
`msvcrt.getwch()` from being called in non-interactive environments when
`PasswordManager.add_new_fingerprint` requests a password/seed.
Co-authored-by: PR0M3TH3AN <[email protected]>
- Explicitly mocks `utils.seed_prompt.masked_input`, `seedpass.core.manager.masked_input`, and `utils.password_prompt.masked_input` in `test_add_and_delete_entry`.
- This prevents `msvcrt.getwch()` from being called in non-interactive CI environments on Windows, which was causing `OSError: [Errno 22] Invalid argument`.
Co-authored-by: PR0M3TH3AN <[email protected]>
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]>
Extracts the hardcoded BeeWare GUI backend configuration (package names, versions, and SHA256 hashes) from `src/seedpass/cli/__init__.py` into a new `GUI_BACKEND_CONFIG` dictionary in `src/constants.py`. This improves maintainability by centralizing configuration and simplifying the CLI logic.
- Adds `GUI_BACKEND_CONFIG` to `src/constants.py`.
- Updates `src/seedpass/cli/__init__.py` to import and use `GUI_BACKEND_CONFIG`.
Co-authored-by: PR0M3TH3AN <[email protected]>
- 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]>
This change explicitly adds `pycryptodome` to `pyproject.toml` and `src/requirements.txt` to resolve a `ModuleNotFoundError` when generating PGP RSA keys. The `Crypto` namespace provided by `pycryptodome` is required by `src/seedpass/core/password_generation.py`.
Verified with `reproduce_issue.py` (which now passes) and `src/tests/test_pgp_entry.py`.
Co-authored-by: PR0M3TH3AN <[email protected]>