aboutsummaryrefslogtreecommitdiffstats
path: root/src/style.css
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-09-10 22:14:36 -0700
committerAdam Soltys <[email protected]>2026-09-10 22:14:36 -0700
commitb19cf9672532a8f6c347dc8fe99d83492bd478fd (patch)
tree740562a31a934415ba3c249b77e3eb1f23b0c05b /src/style.css
parentf0a5e0de3e68eee184b25ced2393329aec169f6d (diff)
downloadcoinosv3-b19cf9672532a8f6c347dc8fe99d83492bd478fd.tar.gz
coinosv3-b19cf9672532a8f6c347dc8fe99d83492bd478fd.zip
The wallet waits for its own state before painting, so nothing jumps.
The Spending balance and its history are read from the ark store, which is IndexedDB: synchronous to read, asynchronous to OPEN. Boot didn't wait for it, so every refresh painted a Spending wallet with nothing in it — no balance, no history — and filled it in a beat later. On a phone that second paint arrived as a change rather than an arrival: the balance counted itself up from 0 in green, wearing the animation a received payment gets. Boot now waits for the store (capped at 800ms — a store that won't open must not hold the app hostage), and the shell stays up a moment longer instead of a wrong balance going up. If the store does land past the cap, initArk retries on it — so a Spending wallet whose state arrived late also connects, which it previously didn't until something else happened to kick it — and that catch-up paint forgets the last amounts first, so it reads as state arriving rather than money. Also: the zap tally chip loses its underline. In chat the chip is a reaction chip too, and .chat-react.on still rings it; on a post row the underline just read as an artifact. tools/boot-balance-test.js pins the ordering, with IndexedDB slowed so it can't pass by luck. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_019mrt228Upn9nNCwGixzSLx
Diffstat (limited to 'src/style.css')
-rw-r--r--src/style.css1
1 files changed, 0 insertions, 1 deletions
diff --git a/src/style.css b/src/style.css
index 4028655..a83e4df 100644
--- a/src/style.css
+++ b/src/style.css
@@ -484,7 +484,6 @@ hr.divider { margin: 16px 0; }
.zap-tally { display: inline-flex; align-items: center; gap: 2px; font-size: 11px; font-weight: 650; color: #e6a800; white-space: nowrap; flex-shrink: 0; }
.zap-tally.chat-react { font-size: 12px; padding: 1px 7px 1px 5px; }
.zap-tally.clickable { cursor: pointer; }
-.zap-tally.on { text-decoration: underline; text-decoration-color: color-mix(in srgb, #e6a800 60%, transparent); text-underline-offset: 2px; }
/* A zap in flight: the chip lands the moment you tap and breathes until the
payment settles — the bolt carries the pulse, the number stays readable. */
.zap-tally.flying { animation: zap-breathe 1.15s ease-in-out infinite; }