Seedelf-Wallet

Roadmap

Closed. v1.0.0 was built in 16 chunks of about one session each, and chunk 17, the transaction view, made 1.1.0. What comes next is in post-release-roadmap.md; a chunk picked up from there still lands its handoff note in this file.

Compressed on 2026-10-02. Every chunk’s full scope and all 30 handoff notes — about 90 KB — are kept verbatim in archive/roadmap-v1.md. Nothing was deleted. Each entry below is one line, so this file can be read at a glance; the archive has the reasoning, the surprises, and the transaction hashes and fees from the live runs. A line reference to this file written before 2026-10-02 resolves against the archive.

Status: ✅ done · 🚧 in progress · ⬜ not started

v1

Done. Every chunk is done. Scopes here are one line; the archive has each in full, and the plans have the detail.

# Chunk   What it was
1 WASM foundation ✅ The seedelf-wasm crate: register create and re-randomize, the ownership check, the Schnorr proof, built with wasm-bindgen.
2 Seedelf key derivation ✅ The v1 HKDF spec in seedelf-crypto, frozen, with nine test vectors. BIP39 moved into Rust.
3 Cardano keys ✅ Phrase → CIP-1852 account 0', checked against Lace’s @cardano-sdk/key-management vectors.
4 Extension scaffold ✅ Vite, React 19, TypeScript, an MV3 manifest, WASM in the worker, and CI (web-wallet.yml).
5 Vault and lock ✅ Lace’s SecretBox sealing the BIP39 entropy, create and restore onboarding, auto-lock, unlock back-off. Plan.
6 Balance ✅ The TS Koios client, the contract scan, account discovery on both chains with gap limit 20, and the receive QR code.
7 Builder extraction + move in ✅ Building split from network calls in seedelf-core so it compiles to WASM, then move-in end to end. Plan.
8 Create a Seedelf ✅ The stealth mint (util mint) with giveme.my collateral. Plan.
8b Mint first ✅ The first Seedelf is paid by the Cardano account, using its own collateral, before any move-in — because a mint links the Seedelf to whatever paid for it.
9 Transfer ✅ Seedelf → Seedelf. Found Register::is_valid’s identity-point hole here. Plan.
10 Withdraw ✅ sweep and remove on ScriptSpend; every CLI script spend now ends in commands/spend.rs. Plan.
11a Style and flow pass ✅ The UI much more like Lace’s dark mode — its look, not its brand. Dark only, Inter, Lucide. Plan.
11b Size and live runs ✅ A size-tuned WASM profile (opt-level = "z", no wasm-opt), and live preprod runs of every flow. Same plan.
11c Testers ✅ Everything for an unlisted preprod listing, never submitted: npm run package, the reproducible zip, store/, the images. Same plan.
12 Style and flow ✅ The owner’s 29 findings, each decided with them: Tokens, Settings, Activity, Contacts, UTxOs with locks, and more. Plan.
13 Staking and voting ✅ A full Cardano wallet with Seedelf inside: staking with one pool, a pool browser, and voting delegation. Plan.
14 Style and flow, second pass ✅ The owner’s second round: Private and Public naming, several recipients, hide balances, notes, CSV, a currency. Plan.
15 dApps: the connector, and private swaps ✅ CIP-30 off by default, private sessions through one-time accounts, a dApp browser, and private CIP-30. Plan.
16 Lovejoin ✅ The mixer in the wallet: 10 ₳ boxes, a fan-out chained locally, each box withdrawn after a random delay. Plan.

After v1

This section is closed, and so is this file. Chunk 17 was the last thing chosen from it. Everything after v1.1.0 is in post-release-roadmap.md, which also carries what chunk 17 left open.

# Chunk   What it was
17 The transaction view ✅ Transaction details on every review and in the connector’s sign window: the transaction decoded from the CBOR about to be signed, plus the raw bytes. Plan.

Also done from this section: the mainnet build flag (2026-09-26, one build carries both networks), and merging seedelf-web-wallet into main (PR #266). The contract round trip (A2) is still open and is tracked in post-release-roadmap.md.

Handoff notes

Newest first. Up to 2026-10-01 each is one line, with the full note in archive/roadmap-v1.md, keeping the one thing worth remembering — usually a surprise that would cost a later session real time. From chunk 18 on, the note here is the full note, since the archive was frozen on 2026-10-02.