Skip to content

v1.5.0 - #411

Merged
pbennett merged 4 commits into
mainfrom
dev
Aug 15, 2026
Merged

v1.5.0#411
pbennett merged 4 commits into
mainfrom
dev

Conversation

@pbennett

Copy link
Copy Markdown
Contributor

No description provided.

pbennett and others added 4 commits August 15, 2026 01:24
AGENTS.md documents the three deliverables, the localnet-dependent dev loop, the per-package commands CI enforces, and which paths are generated build output. CLAUDE.md points at it.

.gitignore only had `.env.*`, which doesn't match a bare `.env` - and bootstrap writes mnemonics into nodemgr env files.
The dashboard opened with roughly 900 algod requests: four simulate calls per
validator (config/state/pools/nodePoolAssignments), one global state read per
pool, then enrichment lookups on top. All four validator reads come out of the
same `v` + validatorId box, and every pool is created by the registry's app
account, so both collapse into a single request each.

Bulk reads:

- `fetchAppBoxes` reads box names and values together using algosdk 3.6's
  `include('values')` with cursor pagination, pinning every page after the
  first to the round the first returned so a multi-page read is one snapshot.
  It throws if a node returns names without values rather than rendering an
  app's state as empty.
- `fetchAllValidatorData` decodes those boxes through the generated ARC-56
  struct and seeds the per-validator query caches inside the queryFn, so
  components and route loaders reading the individual keys resolve from cache.
  The validator detail route seeds the same four keys from one box read when
  arriving cold.
- `fetchPoolGlobalStates` reads every pool's `lastPayout`/`algodVer` from one
  `accountInformation` call on the registry address, and warns when algod
  truncates the created-app list. `processPoolData` takes that state as an
  argument, falling back to a per-pool read only for what the bulk read missed.
- xGov request boxes move off the typed client's `requestBox.getMap()`, which
  issued a request per box across the whole registry.
- `validatorMetricsQueryOptions` takes its per-validator inputs explicitly
  instead of re-deriving them through `ensureQueryData`, which would refetch
  once those entries are garbage collected. The per-row Rewards and Status
  queries observe rather than fetch, keeping metrics traffic inside the
  metered queue.

Caching and pacing:

- `queryPersister` persists an allowlist of query key roots to IndexedDB,
  chosen over localStorage because protocol data is full of bigints and
  structured clone handles them natively. Busted on `__APP_VERSION__`.
  main.tsx hydrates before the router runs, so the table paints from disk and
  refreshes underneath; index.html holds a static spinner and applies the
  stored theme before first paint.
- `useQueuedQueries` meters only work that will actually hit the network,
  returns results positionally aligned with its input, and learns a per-host
  batch size by AIMD (`utils/rateLimit`) - additive increase on clean ticks,
  halving on 429/503, persisted so the next load starts near a known-good rate.
- `axiosNfdApi` gains a localStorage-backed HTTP cache and exponential backoff.
  The retry has to register after `setupCache`: registered first it swallows
  the rejection before the cache settles the entry it opened, and the retry
  then blocks forever on that entry. Covered by a test.

algosdk 3.6 types `asset.params` as optional, hence the `?.` on every params
access. axios and axios-cache-interceptor are bumped alongside.

Specs added for the box reads, pool global state decoding, the batching queue,
the persister, the rate limit controller, and the NFD interceptor ordering.
…ding

perf(ui): load validator and pool state in bulk, persist the query cache
@pbennett
pbennett requested a review from drichar as a code owner August 15, 2026 17:51
@vercel

vercel Bot commented Aug 15, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
reti Ready Ready Preview Aug 15, 2026 5:51pm
reti-testnet Ready Ready Preview Aug 15, 2026 5:51pm

Request Review

@pbennett
pbennett merged commit e23077f into main Aug 15, 2026
7 checks passed

This branch was successfully deployed

2 active deployments
Production – reti — 813a7ced Deployed Aug 15, 2026 by vercel[bot]
Preview – reti-testnet — 813a7ced Deployed Aug 15, 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