- /releases: every game and launcher release on one page, newest first, Stable / Alpha / Launcher marked and
filterable. The newest three are open; each shows what it added and fixed, the full notes, its downloads and
a link to GitHub. Baked at build time, refreshed from GitHub when a newer release is out. /releases#release-<tag>
opens one.
- Home: "Recently added" replaces the patch notes block: the last five releases on one line each and three
highlights from what they added.
- /benchmarks: Horizon against vanilla Java Edition 26.3 measured on our machines (average FPS, 1% lows, p95
frame time, start to world, chunk loads, memory, at render distance 12 and 32), saying where Java is ahead;
a GPU + CPU picker that shows a measurement when there is one and otherwise a marked estimate with a range,
from our own spec table (method explained on the page); players' results read live from the telemetry
server's GET /v1/benchmarks/summary, falling back to the baked public/benchmarks.json, groups of 3+ installs
only.
- scripts/benchmarks.mjs builds public/benchmarks.json from our reports (and, for tests, telemetry items) with
the same rules as the server; fixtures shared with the server's test.
- Releases and Benchmarks in the nav and footer; docs/performance.md links the page.
- Pixelify Sans' "fi" ligature drew "fixes" as "Axes": common ligatures off.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From 0.2 the game is tagged vX.Y.Z and the launcher launcher@X.Y.Z (docs/versioning.md). The site
took only vYYYY.MM.DD as a game release and launcher-v as a launcher, so it would keep offering
launcher 0.16 and showing the last dated patch notes.
src/versions.js holds the tag test and order (every 0.2 tag above every tag from before, semver
within, a pre-release before its release), shared by build.mjs and main.js; the download button
picks the newest launcher by tag, the notes the newest stable game releases, and the launcher
lookup falls back to launcher@ tags before launcher-v. Nothing shows "0.2" until a 0.2 release
exists. `npm test` runs its tests (node --test).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
website/ holds Horizon's site: the horizon-theme tokens and bundled fonts, the
launcher's sidebar, rows, buttons and segmented control, over Horizon's own frozen
landscape. The parity table, harness count and roadmap are generated from the README
at build time; releases, patch notes, the roadmap and links.json are refreshed in the
browser from GitHub, with the build's copy as fallback. The download button picks the
newest launcher-v* asset for the visitor's OS.
Legal: the Minecraft disclaimer in the hero, footer and 404; no Minecraft logo or
wordmark; no game files; the launcher's background (licence unconfirmed) and the
screenshots showing it are left out; LEGAL.md lists every asset and its licence. No
cookies, analytics or third-party assets.
Railway: root directory website, Dockerfile (Node build, Caddy on $PORT with a strict
CSP). Checked with Playwright at 360-1920 px and 1250x700 (docs/widths/); Lighthouse
96/100/96/92 on mobile, 100/100/96/92 on desktop.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>