From 6eee5fbb91920901120d7597c55f7b2108b565c6 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Sat, 1 Aug 2026 21:24:10 -0700 Subject: Fresh-seed restore: connect after parking a synced ark snapshot MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A seed imported on a new device (or a new origin — v3.coinos.io) has no local ark state and no live connection, so the anti-poisoning guard can't prove the incoming snapshot's owner and parks it in the hold. Nothing then triggered the connect that would adopt it — ark is lazy on fresh wallets — so the balance never appeared. Parking with no local identity now kicks the init; connecting learns the server pubkey and the held state is adopted iff it matches. Co-Authored-By: Claude Fable 5 --- src/features/ark.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/features/ark.js b/src/features/ark.js index 5ffd121..8229ead 100644 --- a/src/features/ark.js +++ b/src/features/ark.js @@ -230,6 +230,12 @@ export function arkFeature(ctx) { localStorage.setItem(wallet._arkHoldKey(owner), JSON.stringify({ ...d.arkState, serverPubkey: owner })); } catch {} + // `mine` is null on a FRESH restore (no local state, not yet + // connected), so even our own snapshot lands in the hold. Connecting + // is what resolves it: the manager learns the server's pubkey and + // adopts the held state if it matches — a seed imported on a new + // device would otherwise show no ark balance until some manual poke. + if (!mine) setTimeout(() => initArk(), 0); return; } const local = wallet.loadArkState(cfg.ark); -- cgit v1.2.3