Files
observer/web
rob thijssen c08face7ad
All checks were successful
deploy / build (push) Successful in 8m19s
deploy / deploy-web (push) Successful in 6s
deploy / deploy-api (push) Successful in 16s
feat(ui): a live wormhole, drawn from the blocks as they land
The wormhole page described a pool that was never shown doing anything. It now
opens with a stage where a note arriving falls inward and is swallowed, and a
note leaving climbs out and escapes — driven entirely by blocks this observer
has actually decoded. Nothing is on a loop: a still stage means a still chain.

`index_events` now reports what each block did to the pool, split by the
producing extrinsic exactly as the daily flow query and `exit_cohorts` are —
a settled batch releases value, anything else commits it, and the recorded
sender cannot say because it is the same sentinel either way. The exit
extrinsics are collected inside `index_extrinsics`, the one place the body is
already decoded; finding them in a second pass would re-run `decode_extrinsic`
over Dilithium signatures at 5.3 KiB apiece.

It is broadcast after the block rather than inside it, because the counts cost
two more round trips and the site's ticker must not wait for one panel. A block
that touched no notes broadcasts nothing.

On the front end the pulse takes a side channel — `Observer.onWormhole`, apart
from the state listeners — because a pulse is an event, not a fact about the
page, and routing it through `ObserverState` would re-render the leaderboard,
the ticker and the whole tree once per block for one animation. Marks are
pooled SVG nodes mutated from a loop that starts on a pulse and ends itself.

Honest by construction: marks are capped and the caption is not, so a block
committing 900 notes draws 28 and says nine hundred. `prefers-reduced-motion`
stops the motion and keeps the information — no marks, caption still live,
aria-label still describing the last block.

The stage takes the headline stat row's place on this page. Hashrate,
difficulty, block time, miners and height are on every other page and say
nothing about the pool.

Refs #17

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 12:58:16 +03:00
..