Rates Engine v0.5.0-rc.21
Pre-release
Pre-release
·
1465 commits
to main
since this release
[v0.5.0-rc.21] — 2026-05-07
Added
/sourcestable: 24h trade count column. Wires the
?include=statsopt-in (shipped in #845) into the explorer's
source-registry view. Each class group is now sorted by 24h
trade count desc — most-active venues at the top, alphabetical
fallback for venues that haven't traded in the last 24h.
Renders—for any source the API hasn't populated yet,
including0(which means "stats requested, no trades
observed" per #845's design)./research/architecturedoc browser. Curated set of seven
long-form architecture narratives — ingest pipeline, aggregation
plan, supply pipeline, contract schema evolution, oracle
manipulation defense, HA plan, SemVer policy — rendered as
static pages on/research/architecture/<slug>from
docs/architecture/*.md. Allow-listed via aCURATEDarray
in the loader so the launch-readiness backlog and other
internal-only docs stay private. Each card on/research
shows the title, one-line description, and last-verified
date; the detail page links the GitHub source./methodologypage — how rates are computed. New
enterprise-grade explainer covering source classes (what
contributes to VWAP and what doesn't), VWAP weighting policy,
stablecoin → fiat proxy at the aggregator layer (not at
ingest, so depegs stay visible), freeze policy, the
closed-bucket-only API contract that gives cross-region
consistency, latency targets, and the i128/string-on-the-wire
precision invariant. Each section cross-links to the
underlying ADR for the full rationale. Linked from the
navbar.- status site: per-incident postmortem pages. Every incident
ininternal/incidents/data/*.mdnow renders as its own page
onstatus.ratesengine.net/incident/<slug>, generated from the
same markdown corpus the/v1/incidentsAPI serves. The
Incident history section on the status home links each title
to its full postmortem; the page surfaces severity / status /
affected components, a Started / Resolved / Duration timeline,
and a GitHub source link. Static-export pre-rendered — no
runtime fetch. /researchADR browser. Every architecture decision record
(currently 23) renders as a dedicated, shareable page on
/research/adr/<id>, generated fromdocs/adr/*.mdat build
time — no client-side fetch, full SEO. The/researchindex
groups ADRs by status (Accepted / Proposed / Superseded /
Rejected), sorts newest first within each group, and links the
source markdown on GitHub from each detail page. Adds a small
lib/markdown.tsxblock renderer (h1–h4, paragraphs, lists,
fenced code, blockquotes) so we don't pull a 30 kB markdown
parser into the static bundle for our authored doc shapes./assetstable: sortable Volume 24h column. Click the
Volume 24h header to flip the listing'sorder_bybetween
observation_count_desc(default) andvolume_24h_usd_desc.
The active sort is mirrored in the URL as?order=...so
bookmarks + back-button navigation work as expected; cursor
resets on sort change so pagination stays consistent. Backend
parameter has been live since rc.14; this just wires it into
the table header./v1/sources?include=statsper-source 24h trade count.
Opt-in flag joins each Source row with atrade_count_24h
column derived from a single GROUP BY on the trades hypertable.
Cheap aggregation (the(ts, source)ingest pattern keeps the
index hot); soft-fails to the all-static-registry projection
if the DB hit errors. Lets the explorer's/sourcespage
surface contribution percentages without separate fetches.- Home "Recently shipped" widget. New section between Recent
trades and Try the API surfacing the top 3 changelog entries
with proper Added/Fixed/Changed tone pills + release pill +
bold/code/link rendering. Reads CHANGELOG.md at build time;
links out to /changelog for the full history. /v1/incidents.atomAtom feed. RFC-4287 syndication of
the customer-facing incident corpus — designed for Feedly,
Slack RSS bot, and other feed consumers who want push-style
notifications when an incident ships without polling JSON.
Status page now surfaces a "Subscribe (Atom) ↗" link in the
Incident history section header. Cache-Control max-age=300 (5
min) — corpus only changes on redeploy./comparepage for side-by-side asset comparison (2–6
assets via?assets=USDC,XLM,USDT). Renders a metric × asset
table covering price, 1h/24h/7d change with green/red tones,
24h volume, markets count, observations, and a per-asset
sparkline. Each cell pulls/v1/coins/{slug}via React Query
so the comparison stays current. Compare link added to the
primary nav with USDC/XLM/USDT/AQUA pre-loaded./v1/network/statsconsolidated aggregate endpoint. Single
call returning trailing-24h USD volume, distinct markets count,
total classic-assets row count, latest live ledger, plus the
exchange-class + total source counts. Single SQL query over
prices_1m+classic_assets+ingestion_cursors; source
counts come from the in-memoryexternal.Registry. Replaces
the home network-strip's previous fan-out across four separate
endpoint calls. Useful for embed widgets / dashboards that just
need a snapshot.- Docs site polish: header bar + favicon + OG card.
docs.ratesengine.net now has a slim header above the Scalar
reference with brand mark + "Explorer" / "Status" / "GitHub"
navigation links so visitors can hop between the three sites
without typing URLs. Adds favicon (/icon.svg) and 1200×630
OG image (/og.svg) so shared docs links render as proper
preview cards. Both files served from the same CF Pages
project; refreshed whenmake docs-apirebuilds the
index.html. /embed/pair/{base~quote}iframe pair widget. Mirror of
the asset embed shipped earlier — same chrome-less layout,
shows the BASE / QUOTE label + live VWAP + 24h change pill +
sparkline + "Powered by Rates Engine" attribution. Pre-rendered
for the top 100 pairs by 24h USD volume.- Home Try-the-API: language tabs (curl / JS / Python / Go).
Each example renders as a snippet in the chosen language; the
▶ Run-it button still fires the same URL inline regardless of
language. Closes the loop for someone evaluating which SDK
shape feels right without leaving the page. /embed/asset/{slug}iframe-friendly price widget.
Chrome-less route (no navbar, no footer, no max-width) designed
to be dropped into a customer site at any width. Renders the
asset's code, USD price, 24h % change pill, sparkline, and 24h
USD volume — plus a "Powered by Rates Engine" attribution +
link back. Pre-rendered for every slug returned by/v1/coins.
Recommended embed:<iframe src="https://ratesengine.net/embed/asset/USDC" width="320" height="160" frameborder="0" sandbox="allow-scripts"></iframe>
- Theme toggle in the navbar (light / dark / system, cycling
via a single icon button). Choice persists in localStorage
underre.theme. Inline init script in<head>applies the
class before first paint so there's no flash of wrong theme on
load. Default is still OS preference (prefers-color-scheme)
when no choice is stored — matches what shipped before. /changelogpage on the explorer. Renders this file at
build time — every release block surfaces with proper markdown
(bold, code, links), grouped by Added / Fixed / Changed with
matching tone colours. Each version pill links out to the
GitHub release page. Listed in the footer under System.