Skip to content

Rates Engine v0.5.0-rc.21

Pre-release
Pre-release

Choose a tag to compare

@AshFrancis AshFrancis released this 07 May 03:25
· 1465 commits to main since this release
c551fd6

[v0.5.0-rc.21] — 2026-05-07

Added

  • /sources table: 24h trade count column. Wires the
    ?include=stats opt-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,
    including 0 (which means "stats requested, no trades
    observed" per #845's design).
  • /research/architecture doc 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 a CURATED array
    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.
  • /methodology page — 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
    in internal/incidents/data/*.md now renders as its own page
    on status.ratesengine.net/incident/<slug>, generated from the
    same markdown corpus the /v1/incidents API 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.
  • /research ADR browser. Every architecture decision record
    (currently 23) renders as a dedicated, shareable page on
    /research/adr/<id>, generated from docs/adr/*.md at build
    time — no client-side fetch, full SEO. The /research index
    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.tsx block 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.
  • /assets table: sortable Volume 24h column. Click the
    Volume 24h header to flip the listing's order_by between
    observation_count_desc (default) and volume_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=stats per-source 24h trade count.
    Opt-in flag joins each Source row with a trade_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 /sources page
    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.atom Atom 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.
  • /compare page 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/stats consolidated 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-memory external.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 when make docs-api rebuilds 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
    under re.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.
  • /changelog page 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.