Hartii developer docs

HartiiLabs

Versions & changelog

HartiiLabs ships behind one version number, kept in sync everywhere it's checked: package.json's version, the <meta name="application-version"> tag on every page, functions/_lib/version.js's APP_VERSION (surfaced by GET /api/health as version), and the newest dated entry in the app's own CHANGELOG.md — the app's test suite fails if any of these disagree.

SemVer

  • MAJOR — a breaking public API or live-protocol change, or a launch-factory generation cutover (e.g. V3 → V4). This is the only kind of release that can break an integration.
  • MINOR — a new capability or a measurable behaviour change (the 1.1.0 latency programme below is a MINOR release).
  • PATCH — a fix with no new surface.

Smart-contract generations (TokenFactory V1–V4) are a separate, immutable axis from the app version — a contract generation is superseded, never "versioned up." See Contracts overview.

Where to read the live version

GET /api/health → versionthe one-line check — see API reference
<meta name="application-version">on every page's <head>, same number
Git tag vX.Y.Zon the exact commit that's live; every version that goes live gets one

Changelog

A user-facing summary of the app's own CHANGELOG.md. Read the source file in the hartii-labs repo for the full, line-level history.

1.1.0 — 2026-10-02 — latency programme

Everything the app controls on the token page is now measured and tuned toward ≤ 300 ms end-to-end. Quai's own block cadence (1–3 s) and the wallet's popup are additive, out of the app's control, and shown as separate states rather than counted against that budget.

  • Reads go direct-RPC-first. rpc.quai.network/cyprus1 is the primary read path, with the /rpc/ proxy kept as failover.
  • Submitting a trade is 2 round-trips before the wallet popup, not 3. The gas estimate now overlaps the fresh on-chain quote instead of waiting on it to finish first.
  • The trade panel's preview is instant. A client-side mirror of the curve's own pricing math renders the buy/sell preview with no round trip at all; the real on-chain quote still gates what you actually sign.
  • Confirmations show up sooner. Once a trade is broadcast, receipt polling now backs off 0.5 s → 2 s (was 1 s → 4 s).
  • Live push is per-block instead of per-poll. The live hub subscribes directly to the chain (quai_subscribe logs + newHeads) and fans a trade out the moment its block lands, instead of waiting out a 4–15 s poll. The server-side switch was turned on the same evening (see 1.1.1 below); measured on a real trade, the chain's log notification reached the hub about 0.2 s before a 500 ms receipt poll even saw the receipt — see API reference › Live push.

1.2.0 — 2026-10-03 — latency programme, phase 2

  • One round trip before the wallet popup. The real send is priced with the app's exact mirror of the curve's quoteBuy/quoteSell after a single fresh on-chain read of the curve's state; the on-chain quote still runs afterwards to log any divergence, and the on-chain slippage floor is unchanged. (Build-time switch to restore the always-await path exists.)
  • Receipts confirm on the block, not on a timer. The hub broadcasts a head frame per chain block; a pending trade checks its receipt the moment one arrives (polling stays as fallback).
  • Live push for every curve. The sitewide feed sees every launched token's trades, not only the curves someone has open; new launches are picked up from the factories' TokenLaunched events the moment they happen.
  • Fresh page loads are ~1 s behind the chain, not 60–90 s. Pushed trades land in the indexed trades/candles immediately (the indexer still reconciles and remains the authority for holders).
  • Mobile: the live socket resumes and reconciles when a backgrounded tab comes back.
  • Operators: a debug-only "Latency (this browser)" panel on /status and a committed end-to-end measurement script (scripts/latency-e2e.mjs) in the app repo.

1.1.1 — 2026-10-02 — rollout fixes

  • The hub's upstream socket was being torn down ~8 s after opening by its own handshake timeout (trades silently fell back to the 10 s safety poll); fixed, and the upstream subscription has been on and stable since.
  • The application-version meta tag was missing from served pages (it sat inside the SEO block the edge rewrites per route); moved, so every page now carries the deployed version.

1.0.0 — 2026-10-02 — baseline

  • TokenFactoryV4 (LP Reserve) live on mainnet — the current launch factory.
  • Market-terminal redesign: grid-first home, /flow capital-flow terminal, one-page launch composer.
  • Wallet = signing only: every send is gas-estimated on the app's own read provider; a reverted receipt is always rejected, never reported as a success.
Quai Network mainnet · chain 9 · Cyprus-1. Figures marked "read on" a date were read from the chain that day; re-read before relying on them.