669d4b01e7
- Password entry is now a MODAL popup mirroring the wallet-open password modal
(Modal + explanation + masked field + wrong-password line + Cancel/Continue),
used as the unlock step for BOTH switching and adding. The inline page-top
password field is gone; tapping a held identity opens the modal to unlock and
switch, and Add opens it to encrypt+store. A correct password is verified
synchronously so a wrong one stays in the modal.
- Add no longer force-switches into the new identity ("Add and switch" -> "Add");
it is added to the held set and the user activates it later via tap -> modal.
This also removes the switch-triggered publish from the create path, so
creating an identity only generates a fresh anonymous key and stores it
encrypted (no name lookup/claim).
- Fixes the import-nsec flow. Root cause: the required password lived in a page-
top field disconnected from the Add card, so the confirm button's armed gate
stayed disabled unless that separate field was filled — import (and generate)
read as inert. Moving the password into the modal removes the disconnected
gate; the underlying add_nostr_identity(Some(nsec)) path was already sound
(covered by the new regression test).
- Usernames render WITHOUT a leading "@" (project convention), in the switcher
and the transaction-detail identity row; unnamed identities show a truncated
npub. New add_confirm/pass_prompt strings in all six locales (drift green).