Files
grenadeandClaude Fable 5.1 caff8a6be6
ci / gate (push) Canceled after 6m53s
feat: remove a wallet that holds nothing
An open wallet can be removed from the accounts page (#86): its file is
deleted, it leaves the session, and its account numbers and names leave
the settings. Whether it holds nothing is decided in Rust, never by the
webview, and a refusal says why:

- every account must hold zero, free plus reserved, on every mainnet
  chain, read live; a chain that cannot be read refuses rather than
  assumes;
- no reversible transfer may be pending to or from any of its accounts;
- a phrase wallet's wormhole address must hold no unspent leaf, with the
  zk-tree scan current so none is unseen;
- the wallet whose key controls the intents account is refused while
  that account holds any token; if it holds none, the record goes with
  the wallet and the next creation makes a new account.

The control asks once, inline, and names what happens; no browser
dialog. Keystore::remove reads the file first, so a symlink or a
stranger's file is refused before anything is deleted; Session::forget
drops the one wallet and keeps the password.

Checked in a dev run with three wallets: Remove on a raw-key wallet
holding nothing asked, deleted its file, took it out of the sidebar and
cleaned its settings, with the other two left open.

Closes #86

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NUx7SPonBnB3ofU4mH41WT
2026-10-12 12:39:21 +03:00
..
2026-10-12 11:24:22 +03:00