Stellar Index v0.44.1
[v0.44.1] — 2026-08-25
Tested against Stellar protocol 22.
Added
- Live account-movements feed: the
/accounts/{id}movements view now
auto-follows the ledger tip — an SSE-nudged refetch (~4s coalesced,
shared tab-wide) gated to the first page so a keyset walk into history
is never yanked back, with a 20s fallback poll if the stream drops.
Classic-asset movement lag is cut from ~5min to ~30s by tightening the
incremental cap67 derive timer (the derive runs in ~0s per fire; true
up-to-the-second via a continuous follow-worker is a follow-on). (#172)
Fixed
- cap67 account-movements derive could permanently lose movements
under lake pressure. TheLiveSinkdrops whole ledgers under buffer
pressure, leaving holes near the tip, but the derive resolved its upper
bound with rawMaxLedgerand advanced its watermark past any hole
with no trailing re-derive — so a dropped ledger's classic/native
account movements were never revisited (the raw lake self-heals via
ch-live-catchup; this derive did not → a permanent gap in account
history). Now clamped toContiguousWatermark(mirroring the real-time
projector), so the derive stalls at a hole until catch-up heals it —
delayed, never lost. Found by an adversarial audit of the
real-time-movements plan. (#174) /v1/divergence(the per-reference divergence board) returned 500 on
every request —ListDivergenceLatestwrote its trailing-window
filter asnow() - ($1 || ' days')::interval, which makes Postgres
infer$1astext, but the handler passessinceDaysas anint.
pgx v5 has no int→text encode plan, so the query failed before
executing (unable to encode 7 into text format for text (OID 25)).
The window is nowmake_interval(days => $1), which types$1as an
integer. Adds a regression test that forbids the text-concat form. (#176)- The
volume_characterrollup worker refreshed the all-asset 14-day
account-structure roll every 15 minutes; each pass is a multi-minute
full scan of thetradeshypertable (72M rows/7d), so it ran
effectively continuously and starved the customer API (the p99 2259ms
regression introduced in v0.44.0). The cadence is now 6h and the roll
caps its ownmax_parallel_workers_per_gather+statement_timeoutso
a single refresh can't monopolize the primary. (#175) - Explorer pill contrast: category / venue / type chips now route through
the adaptive design tokens instead of hard-coded colors, fixing
low-contrast pills in the dark theme. (#173)