Skip to content

Fix loading states - #22

Merged
hsnice16 merged 3 commits into
mainfrom
fix-loading-states
Sep 16, 2026
Merged

hsnice16 merged 3 commits into
mainfrom
fix-loading-states

Conversation

@hsnice16

Copy link
Copy Markdown
Owner

No description provided.

hsnice16 and others added 2 commits September 16, 2026 18:48
The shell opens in 0.11s and then reads the venues behind it — 5 to 9 seconds
for a wallet across nine chains. For that whole window the status line said
`0 positions` and the `/` menu said `0 tokens`. Not blank: zero, about an
account nobody had answered for yet.

`isLoaded` was the wrong question. It says a load finished, not which venues it
was built from, so a venue connected after the shell opened fell straight
through it — the store held it at once, the book did not. `covers()` and
`coversAll()` ask the answerable question, and the venue list they take is the
build's, not the store's: a venue tula dropped is skipped before `refresh`
records it, so asking about the store could never come true and `/shock` went
dark for the rest of the session with a `/refresh` that could not fix it.

`reading…` and `not read` are different claims, so the session carries the
third state rather than the UI guessing: a refresh that threw was a spinner
over nothing, with no command offered.

The busy row counts its parts — `reading wallet · 4 of 9 chains` — because one
unchanging label is what a hang looks like. A chain that failed still counts:
the reader is no longer waiting for it. The count is caught at the session
boundary, since a promise derived from `.finally()` rejects when the callback
throws, and a UI listener must not be able to delete a chain's positions and
blame the node that answered.

Also: the model is never handed the epoch as a book's `fetched_at`; Aave's
stable-rate gap is retired with the live check `breadth/09` requires for a
retirement; and `/kraken`'s meta description catches up with its own page.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Sep 16, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
tula Ready Ready Preview Sep 16, 2026 2:28pm UTC

The rows were raised to 44px for a tap target, against the reasoning already
written above the constant: a 32px row keeps each target above WCAG 2.2's 24px
minimum, and stacked links cannot borrow target from the space around them
without handing their taps to the next. At 44px the space between links read
the same as the space to the section heading, so Pages, Guides and More links
stopped looking like headings over lists.

The comment was left saying 32 while the code said 44, which is the drift the
comment rule exists to prevent.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@hsnice16
hsnice16 merged commit 5ce1a65 into main Sep 16, 2026
7 checks passed

This branch was successfully deployed

1 active deployment
Preview — e5a2c0af Deployed Sep 16, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant