Done on 2026-09-23, except the live preprod run (the test wallet wasn’t funded). The roadmap handoff note has what was built and how to finish the live run.
Branch: web-wallet/move-in, created from seedelf-web-wallet at 1e70e35 (after PR #250). main had nothing new to merge. It ends with a PR back into seedelf-web-wallet.
seedelf-web-wallet if it moved.extension/.preprod-test-wallet.txt (gitignored).| Question | Decision |
|---|---|
| What move-in lets the user choose | An ADA amount (or Max) plus a token picker. A picked token moves in full. |
| After submitting | Watch the tx with Koios tx_status every 15 s for up to 5 minutes, show Pending → Confirmed, then refresh balances once |
| Live preprod run | A fresh test wallet the user funds from the faucet |
| Change | Back to the Cardano account’s receive address 0/0, like Lace’s single-address mode |
seedelf-core build for WebAssemblyseedelf-koios’s connect_timeout and timeout with #[cfg(not(target_arch = "wasm32"))]. This was the only blocker; checked by building seedelf-wasm with seedelf-core as a dependency.ProtocolParameters::from_koios(&Value): split the parsing out of epoch_params(), so the extension can pass Koios JSON through WebAssembly.seedelf-core (build.rs)deposit_outputs(params, wallet_addr, owner, lovelace, tokens): contract outputs under fresh re-randomizations of the owner’s register, with tokens split 20 per output (MAXIMUM_TOKENS_PER_UTXO), each carrying its minimum and the last carrying the rest. This was duplicated twice inside external sweep.fake_signer and linear_fee move from the CLI’s fee.rs into core.external_sweep(...): the CLI command’s building, unchanged in behaviour. run() keeps the network calls (params, UTxOs, submit) and signs.move_in(...): the web wallet’s deposit from the Cardano account.
collect_address_utxos.0/0, with any unpicked tokens split 20 per output. No change output if nothing is left.seedelf-platform/CLAUDE.md rule against build_* functions is reversed, as architecture.md planned.buildMoveIn(account, key, requestJson)epoch_params row, the account’s UTxOs each with its role/index, lovelace (or null for Max), and the picked tokens.{ txCbor, txHash, fee, … }.epochParams(), submitTx(cbor), txStatus(hashes).move-in-build { lovelace | null, tokens } → summary. move-in-submit { txHash } → submitted. tx-status { txHash } → confirmations.external sweep included.seedelf-wasm: signatures match the inputs’ payment credentials.buildMoveIn on the recorded preprod account.seedelf-platform/CLAUDE.md, and the roadmap tick and handoff.Create a Seedelf (chunk 8), transfer (chunk 9), withdraw (chunk 10), and moving the 5-ADA collateral UTxOs (use the other wallet for those).