Skip to content

Cookies are off until you say otherwise

Non-essential cookies stay off unless you accept them, and rejecting them leaves the site fully usable. What runs either way is only what the site cannot work without: the anti-abuse check on our forms, the record of the choice you make here, and the access cookie on internal routes. Site analytics is cookieless and loads only after you accept. Cookie policy

Changelog

What actually shipped, phase by phase, including the parts that are still mocks. No roadmap dates and no promises about what comes next.

What shipped, when, and what it does not do yet.

Two rules govern this page. It records work that is finished and verified, never work that is planned — there are no dates here for things that have not happened. And every entry closes by restating what is still not true, because a changelog that only accumulates good news stops being useful the moment someone relies on it.

Anything mocked is declared as a mock, here and in the interface itself.

  1. Phase 1 · Foundations2026-09-02done
  2. Phase 2 · Design system2026-09-04done

Design system

The second phase closed with the design system in place. Most of it is invisible; the part worth reading about is the part that is enforced.

What landed

  • Design tokens as the single source for color, type, spacing and motion, generated into the stylesheet and the type definitions, with a check that fails when the generated files drift from the source.
  • The component library: primitives, navigation, data display and motion, each one documented and each one audited for accessibility in a real browser rather than in a simulation of one.
  • A dark-only interface. There is no light theme to keep in sync, and a test fails if anyone adds one by accident.
  • Every visible number has to declare where it came from. The badge component requires a source; asking it for real market data outside production raises an error, and inside production it prints "not available in this build" without a number. That is a rule the code enforces, not a habit.
  • The CFTC hypothetical-results notice as a component whose text is compared, character by character, against the approved wording.
  • Motion built from stylesheets and the browser's own observers rather than an animation library, with a measured budget that fails the build if it grows.

Still unchanged. Pre-launch. Everything the product shows is simulated and labeled SYNTHETIC.

Foundations

The first phase of the rebuild closed. It shipped no page a visitor can see, which is the point of publishing it here: the changelog records what was done, not what looked impressive.

What landed

  • The monorepo, with the app, the shared packages and the worker in one place, and a single package manager and task runner across all of them.
  • The runtime: the application compiled for Cloudflare Workers, with three separate environments declared in full — development, preview and production — so that a binding present in one is never silently inherited by another.
  • The data and messaging layer wired and typed: the database with migrations, object storage, the key-value store, queues with their dead-letter queue, durable objects.
  • Authentication, payments in test mode, transactional email and an anti-abuse check on forms, installed and configured but not yet exposed to anyone.
  • Continuous integration on Linux running the forbidden-vocabulary check, linting, type checks, tests, the build and a dry run of all three environments. When the build machine and the runner disagree, the runner wins.
  • A smoke test that runs against a deployed preview rather than against a mock.

What is still true after it. No broker connection, no market data, no real-money trading, and nothing on sale.