Activity Overview

Commits and releases over time

  • Commits
  • Releases
  • Authors

Repository Explorer

4 commits in all time Aug 14, 2026 01:32 – Nov 12, 2026 01:32 UTC
fix(aggregation): stop 'Other' from overriding a positive asset category
CoinGecko and Messari records carry no stablecoin tags, so the classifier
labels them 'Other'. Their higher source priority let that 'Other' beat
DeFiLlama's 'Stablecoin' for every coin CMC does not list, dropping those
coins from stablecoin totals. The merge now takes the highest-priority
concrete category and falls back to 'Other' only when no source has one.

With the mock data this restores 43 coins (USDTB, USDX, crvUSD, BOLD, ...)
and $4.43B of market cap to the stablecoin totals.
Git Commit 4388d464 Branch master Document 2/78 ++ 1 --
fix(classifier): make AssetClassifier test suites pass
The 9 failing AssetClassifier suites had failed since they were added in
a8a43b2; 75b0bf6 did not touch the classifier.

Code fixes
- classify() returned null for null/string tags and threw on non-string
  symbols (_createAssetKey); it now treats non-array tags as no tags and
  keys on normalized values. Fetchers dereference the result directly.
- Honor DeFiLlama pegType on the asset (peggedUSD -> Stablecoin/USD),
  ahead of tags, as the fetcher already does.
- With no tags array at all, a fiat stablecoin ticker (USDT, EURC) is a
  Stablecoin. Fetchers always pass an array, so production is unaffected.
- Detect peg from decorated tickers: USDC.e, ibc/USDC, USDC(Wormhole),
  vBUSD, axlUSDC, lisUSD, USDe, USD1, limited to currencies with known
  stablecoins so STND does not read as STN.
- Add DAI, UST, USTC aliases (USD).

Test fixes
- ChainSpecificClassification: stray closing brace and the pre-a8a43b2
  classify(asset) signature.
- PerformanceStress: assertions moved out of the timed loop; 20k jest
  expect() calls took ~400ms of the 100ms budget.
- ComplexSymbolPatterns: U/"USD Coin Short", E/"EUR Coin Short" and
  USSS/"Triple S USD" expected null, contradicting the name-based
  detection the same suite requires for "Double U EUR" and "Dollar Symbol".
Git Commit 55e79378 Branch master Document 6/179 ++ 63 --
fix(ui): paint navy before stylesheets load
Add a head partial with a dark color-scheme meta and an inline
html/body background matching --bg-body, included in every page's
<head> ahead of common.css. The first frame is now navy instead of
the browser's default white while common.css and its imports
(design-system.css, components.css) are still loading, such as on a
cold-cache navigation from a site that embeds StablecoinWatch.
Git Commit a0970fc8 Branch master Document 6/8 ++ 0 --
feat(ui): redesign every page and fix chain, source and peg data
Pages
- Home: summary cards add 7-day supply change and a peg watch; market
  share bar; peg filters (USD, EUR, other, yield-bearing), name search and
  25-row pages; peg column in basis points; supply 7d; chain count with
  each coin's main chain.
- Coin: peg status in the hero, supply change 1d/7d/30d, supply by chain
  with share and 7d change, price by source, per-source comparison with
  a spread row, one description credited to its source.
- Blockchains: summary cards, share bar, search and paging; ranked and
  shared by USD value; supply 7d and the dominant coin's share.
- Chain: USD value, share of all chains, 7d change, distribution cards
  and a table with % of chain, price and peg.
- Status: full source names and roles, UTC timestamp, web app shown
  apart from data sources, state definitions from the configured
  thresholds, link to the health JSON.
- Header drops the duplicated metrics and links Status from a small
  "Updated" indicator; footer credits the data sources.
- Blue-to-purple gradients replaced with solid blue.

Data fixes
- Chain dominance used raw token units, so non-USD coins (A7A5) inflated
  Tron; chains are now valued and ranked in USD.
- DeFiLlama data never reached the view model, so per-chain percentages
  and history were empty; it is now passed through.
- Source comparison showed the merged value for every source; each
  source's own figures are now kept.
- Messari's feed has no prices (its fetcher assumes $1.00); that
  placeholder no longer wins the merge when another source prices a coin.
- 'Unknown' is no longer listed as a chain; chain names keep their casing.
- main no longer overflows the viewport on phones.
Git Commit 75b0bf6a Branch master Document 19/2,222 ++ 933 --