Files
SeedPass/memory-update.md
T

1.9 KiB

Memory Update (2026-03-01)

Nostr backup failure observability

  • handle_post_to_nostr() previously printed only a generic ❌ Sync failed… when sync_vault() returned None, even if nostr_client.last_error had useful detail.
  • PasswordManager.sync_vault_async() swallowed exceptions and returned None without reliably setting nostr_client.last_error, making root-cause diagnosis hard from CLI.

Changes made

  • Updated sync_vault_async() to copy exception text into nostr_client.last_error before returning None.
  • Updated handle_post_to_nostr() to include nostr_client.last_error in user-visible failure output and log line when available.
  • Added regression tests:
    • test_handle_post_failure_shows_nostr_error
    • test_sync_vault_sets_last_error_on_exception

Testing note

  • Could not run pytest in this environment because pytest is not installed (python3 -m pytest -> No module named pytest).

Nostr namespace reset workflow

  • Added Nostr Settings menu actions for profile-scoped reset operations:
    • 8. Reset Nostr sync state clears manifest_id, delta_since, and last_sync_ts while preserving nostr_account_idx.
    • 9. Start fresh Nostr namespace (new key index) increments nostr_account_idx, clears sync metadata, and reinitializes the Nostr client when available.
  • This provides a first-class path for users who want to ignore legacy Nostr history and publish/retrieve only new data under current deterministic behavior.
  • Added tests for both handlers and menu dispatch to prevent regressions.

Documentation updates for Nostr reset workflow

  • Added docs/nostr_namespace_reset.md documenting menu options 8 (reset sync state) and 9 (start fresh namespace), plus validation steps for robust publish/restore.
  • Linked the new guide from docs/nostr_setup.md, docs/README.md, and root README.md.
  • Exposed the guide in website docs navigation via landing/docs.html (Nostr Namespace Reset).