diff options
| author | Adam Soltys <[email protected]> | 2026-09-04 07:19:12 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-09-04 07:19:12 -0700 |
| commit | 0a34c1d0981c65ebba0551904ad598704036d725 (patch) | |
| tree | 86700e99e32e1a78a1bac63b516960f230394e86 /src/ark/manager.js | |
| parent | bae8f183e4f7095b027b81c3cc79f55dafbd2bba (diff) | |
| download | coinosv3-0a34c1d0981c65ebba0551904ad598704036d725.tar.gz coinosv3-0a34c1d0981c65ebba0551904ad598704036d725.zip | |
The carousel stutter is the ark history memo re-cooling on a timer: rebuilding it costs ~60ms (sort + dedupe + gift resolve + secp256k1), and its 1.5s TTL meant an unhurried flick always hit a cold rebuild, stuttering the slide's tail — 'warms up if I keep going fast, cold if I pause, refresh reproduces' is the classic TTL-expiry signature. Now keyed on a state revision (_save bumps state._rev) so it's reused until the data actually changes and never re-cools between flicks. Diagnostics still on to confirm
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MrkLsNScXe9b6BviUSdmMr
Diffstat (limited to 'src/ark/manager.js')
| -rw-r--r-- | src/ark/manager.js | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/ark/manager.js b/src/ark/manager.js index a443370..471c4e0 100644 --- a/src/ark/manager.js +++ b/src/ark/manager.js @@ -161,6 +161,10 @@ export class ArkManager { } _save() { + // a monotonic revision that bumps on every state change — lets memoized + // derivations (history build, etc.) invalidate exactly when the data + // changes instead of on a timer that re-cools between interactions + this.state._rev = (this.state._rev || 0) + 1; this.storage.save(this.state); this.onUpdate(this); } |
