Skip to content

v1.5.0

Latest

Choose a tag to compare

@pbennett pbennett released this 15 Aug 18:03
e23077f

A UI release, focused on how fast the dashboard opens. No contract or nodemgr changes — the protocol is untouched and node runners need take no action.

Performance

The dashboard previously issued roughly 900 algod requests on open: four simulate calls per validator (config, state, pools, node/pool assignments), a global state read per pool, and enrichment lookups on top. Nearly all of that collapses into a handful of requests.

  • Validator state is read in bulk. All four per-validator reads come out of the same v + validatorId box, so every validator is now fetched in one paged box read (algosdk 3.6's include('values')), with pages after the first pinned to the round the first returned so a multi-page read is a single consistent snapshot. The per-validator query caches are seeded from that result, so components and route loaders resolve from cache instead of refetching.
  • Pool state is read in bulk. Every pool is created by the registry's app account, so each pool's lastPayout / algodVer now comes from one accountInformation call, falling back to a per-pool read only for whatever the bulk read missed.
  • xGov request boxes no longer issue one request per box across the registry.
  • The query cache persists to IndexedDB. An allowlist of query keys is stored across sessions (IndexedDB rather than localStorage, so bigint protocol values survive without serialization games) and hydrated before the router runs — the validator table paints from disk and refreshes underneath. Cache is busted on app version. index.html now holds a static spinner and applies the stored theme before first paint, removing the flash on load.
  • Request pacing adapts to the node. Batched queries meter only work that will actually hit the network, and the batch size per host is learned by AIMD — increasing on clean runs, halving on 429/503, and persisted so the next load starts near a known-good rate.
  • NFD lookups gained an HTTP cache and exponential-backoff retry.

Test coverage was added for the box reads, pool global state decoding, the batching queue, the cache persister, the rate limiter, and the NFD interceptor ordering.

Features

  • Validator metrics now ignore pools holding less than 30,000 ALGO, which keeps dust and freshly created pools from skewing a validator's reported APR (#404).
  • Security headers (X-Frame-Options: DENY, Content-Security-Policy: frame-ancestors 'none') added to the Vercel deployment, blocking the app from being framed.

Fixes

  • Default transaction validity window raised from 200 to 1000 rounds, then settled at 900 — 1000 left some users unable to unstake.

Maintenance

  • Pera Connect 1.5.2, use-wallet-react 4.6.0, algosdk 3.6, plus axios and axios-cache-interceptor bumps.
  • Prettier 3.7.4, now run from the local install rather than pnpx.
  • AGENTS.md added documenting the repo layout, localnet dev loop, per-package commands, and which paths are generated build output.

Contributors

@drichar, @pbennett

Full Changelog: v1.4.0...v1.5.0