diff options
| author | Adam Soltys <[email protected]> | 2026-07-06 11:12:31 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-07-06 11:12:31 -0700 |
| commit | d071a09604599831d370b06563144cf4ba028902 (patch) | |
| tree | cf5974694de768a5128f044d255b399fa3eb18dd /src/wallet.js | |
| parent | ef1a901314cb667bc8a7c7ff5f080550edef2815 (diff) | |
| download | coinosv3-d071a09604599831d370b06563144cf4ba028902.tar.gz coinosv3-d071a09604599831d370b06563144cf4ba028902.zip | |
Gift cross-device sync, snapshot size cap, reliable SW updates, gift-detail layout
- Gifts now sync across devices: gift records + reserved/reclaimed coin
sets ride the encrypted snapshot as a merge-safe extension (like ark),
and every gift state change (create/reclaim/revoke) triggers a
saveCache so it actually publishes. A gift made on one device now
shows on the others.
- Cap the published snapshot at ~40KB JSON (relay rejects >64KB events,
nip44 expands ~1.5x): trim oldest on-chain txs when oversized; another
device backfills via rescan. Typical wallets untouched.
- Service worker: register with updateViaCache:'none' so a new build is
detected immediately (not held by the 4h HTTP cache), and reload once
on controllerchange so the fresh app runs without a manual second
refresh.
- Gift detail: View/Reclaim share a row, Revoke on its own full-width
line so 'Revoke now' stops wrapping.
Co-Authored-By: Claude Fable 5 <[email protected]>
Diffstat (limited to 'src/wallet.js')
| -rw-r--r-- | src/wallet.js | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/wallet.js b/src/wallet.js index ccb7b81..1c58de6 100644 --- a/src/wallet.js +++ b/src/wallet.js @@ -1203,6 +1203,7 @@ export class Wallet { // state (ark vtxos) must flow both directions. _mergeSnapshotExtensions(d) { for (const e of this._cacheExtensions) { try { if (e.mergeAlways) e.load(d); } catch {} } + this.emit(); // a live cross-device merge (ark/gift state) should re-render } // Called with every saved state snapshot (e.g. to push it to sync relays). registerCacheSavedHook(fn) { this._cacheSavedHooks.push(fn); } |
