Files
horizon-airdef/website/src/hub.html
T
Ludovic Marie c1ffa17c87 Hub: vote for roadmap items, report a bug and suggest something from the page
Each item still to come gets a "Want it" button with its count; the Contribute
tab gets a bug report form (the #horizon-bugs template, which the telemetry
server opens as a GitHub issue and links back) and a suggestion form (to the
private queue Kira relays), and a Contributors list that shows the Discord name
of those who agreed on Kira (/contributors.json). The forms and buttons appear
once the hub's server answers; until then the page points to GitHub and Discord.
roadmap/README.md documents the intake API that Kira shares.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 16:14:12 +01:00

171 lines
13 KiB
HTML

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>Hub · Horizon</title>
<meta name="description" content="Where Horizon is: what is being done now, what comes next, what shipped, and how to help, in plain words or in technical detail.">
<meta name="theme-color" content="#ece7f7" media="(prefers-color-scheme: light)">
<meta name="theme-color" content="#0f0d17" media="(prefers-color-scheme: dark)">
<meta name="color-scheme" content="light dark">
<link rel="canonical" href="https://playhorizon.dev/hub">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<link rel="icon" href="/favicon-32.png" sizes="32x32" type="image/png">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<meta property="og:type" content="website">
<meta property="og:site_name" content="Horizon">
<meta property="og:title" content="Hub · Horizon">
<meta property="og:description" content="What is being done on Horizon now, what comes next, what shipped, and how to help.">
<meta property="og:url" content="https://playhorizon.dev/hub">
<meta property="og:image" content="https://playhorizon.dev/og.png">
<link rel="preconnect" href="https://api.github.com" crossorigin>
<style>{{STYLE}}</style>
<script>document.documentElement.classList.replace("no-js", "js"); try { const t = localStorage.getItem("theme"); if (t === "light" || t === "dark") document.documentElement.dataset.theme = t; if (localStorage.getItem("hub:detail") === "dev") document.documentElement.dataset.detail = "dev" } catch {}</script>
<script type="module" src="{{HUB_JS}}"></script>
</head>
<body class="subpage">
<a class="skip" href="#main">Skip to the content</a>
{{SITE_NAV}}
<main id="main" class="section page-main hub">
<div class="container">
<p class="kicker"><span>Hub</span>Now, next and how to help</p>
<h1 class="display page-title">Where Horizon is going</h1>
<p class="lede">What is being done, what comes next, what shipped and where you can help. No dates: things are Now, Next or Later. Read it in plain words, or switch to the technical picture.</p>
<div class="hub-bar">
<div class="tabs hub-tabs" role="tablist" aria-label="Hub">
<span class="tab-pill" aria-hidden="true"></span>
<button type="button" role="tab" id="tab-overview" aria-controls="overview" aria-selected="true">Overview</button>
<button type="button" role="tab" id="tab-roadmap" aria-controls="roadmap" aria-selected="false" tabindex="-1">Roadmap</button>
<button type="button" role="tab" id="tab-board" aria-controls="board" aria-selected="false" tabindex="-1">Kanban</button>
<button type="button" role="tab" id="tab-journal" aria-controls="journal" aria-selected="false" tabindex="-1">Journal</button>
<button type="button" role="tab" id="tab-contribute" aria-controls="contribute" aria-selected="false" tabindex="-1">Contribute</button>
</div>
<div class="hub-detail" role="group" aria-label="Detail">
<button type="button" class="button secondary small" data-detail="plain" aria-pressed="true">Simple</button>
<button type="button" class="button secondary small" data-detail="dev" aria-pressed="false">Technical</button>
</div>
</div>
<div class="hub-panel is-active" role="tabpanel" id="overview" aria-labelledby="tab-overview" data-overview>
{{HUB_OVERVIEW}}
</div>
<div class="hub-panel" role="tabpanel" id="roadmap" aria-labelledby="tab-roadmap">
<div class="release-filter hub-areas" role="group" aria-label="Area">
{{HUB_AREAS}}
</div>
<div data-roadmap>
{{HUB_ROADMAP}}
</div>
<p class="meta hub-source">The roadmap lives in the repository: <a href="https://github.com/ludovic111/horizon/blob/main/ROADMAP.md">ROADMAP.md</a>, generated from <a href="https://github.com/ludovic111/horizon/blob/main/roadmap/roadmap.toml">roadmap/roadmap.toml</a>. Pull requests carry the <code>roadmap:&lt;id&gt;</code> label of their item. <span data-live-note></span></p>
</div>
<div class="hub-panel" role="tabpanel" id="board" aria-labelledby="tab-board">
<div class="hub-board-head">
<p class="hub-intro">Every open issue and pull request, placed by its state on GitHub, as on Kira's work board in Discord.</p>
<label class="hub-select"><span class="meta">Show</span><select data-board-item>{{HUB_BOARD_FILTER}}</select></label>
</div>
<div class="hub-board" data-board>
{{HUB_BOARD}}
</div>
</div>
<div class="hub-panel" role="tabpanel" id="journal" aria-labelledby="tab-journal">
<p class="hub-intro">Every release with what it changed, grouped by roadmap item in Technical, and a summary of each week. Also as <a href="/data/journal.json">journal.json</a>.</p>
<div class="hub-journal" data-journal>
{{HUB_JOURNAL}}
</div>
</div>
<div class="hub-panel" role="tabpanel" id="contribute" aria-labelledby="tab-contribute">
<section class="hub-block" aria-labelledby="h-first">
<h2 class="title" id="h-first">Good first tasks</h2>
<p class="hub-plain hub-intro">Each one is a small difference from vanilla, with an issue that says how to see it.</p>
<p class="hub-dev hub-intro">Each links its issue; the technical text says where in the code and in vanilla to start.</p>
<ol class="index hub-rows">{{HUB_HELP_WANTED}}</ol>
</section>
<section class="hub-block" aria-labelledby="h-ways">
<h2 class="title" id="h-ways">Ways to help</h2>
<div class="hub-cards">
<article class="highlight">
<h3>Tell us what differs</h3>
<p>Something that doesn't play like vanilla is a bug. Say what you did, what happened and what vanilla does, with your Horizon version and system.</p>
<p class="hub-actions"><a class="button secondary small" href="#report">Report a bug</a><a class="button secondary small" href="#suggest">Suggest something</a></p>
</article>
<article class="highlight">
<h3>Take a task</h3>
<p>Pick a good first task or an open issue. On Discord, <code>/claim 1234</code> tells everyone you are on issue 1234, so nobody starts the same work; <code>/unclaim</code> frees it.</p>
<p class="hub-actions"><a class="button secondary small" href="https://github.com/ludovic111/horizon/issues">Open issues</a></p>
</article>
<article class="highlight">
<h3>Bring your AI agent</h3>
<p>On Discord, <code>/agent connect</code> gives your coding agent a personal token for Kira's MCP server: it reads the work board, claims tasks and posts its progress in your name.</p>
<p class="hub-actions"><a class="button secondary small" href="{{DISCORD}}">Join the Discord</a></p>
</article>
<article class="highlight">
<h3>Benchmark your computer</h3>
<p>Run the built-in benchmark and share the report: every new machine makes the performance work more accurate. No coding needed.</p>
<p class="hub-actions"><a class="button secondary small" href="/docs/performance">How to</a></p>
</article>
</div>
</section>
<section class="hub-block" id="report" aria-labelledby="h-report">
<h2 class="title" id="h-report">Report a bug</h2>
<p class="hub-intro">One bug per report: something that breaks, or doesn't play like vanilla. It becomes an issue on GitHub, public, and you get its link to follow it. Search the <a href="https://github.com/ludovic111/horizon/issues?q=is%3Aissue+label%3Abug">open bugs</a> first.</p>
<form class="hub-form" data-form="report" hidden>
<label class="hub-field"><span>Title: what is broken, in a few words</span><input name="title" required minlength="5" maxlength="120" autocomplete="off" placeholder="Water looks black on AMD graphics"></label>
<label class="hub-field"><span>What did you do? The steps, one per line</span><textarea name="did" required minlength="3" maxlength="2000" rows="4"></textarea></label>
<div class="hub-form-pair">
<label class="hub-field"><span>What happened?</span><textarea name="happened" required minlength="3" maxlength="2000" rows="3"></textarea></label>
<label class="hub-field"><span>What did you expect? What vanilla does</span><textarea name="expected" required minlength="3" maxlength="2000" rows="3"></textarea></label>
</div>
<div class="hub-form-pair">
<label class="hub-field"><span>Horizon version</span><input name="version" maxlength="60" value="{{HUB_VERSION}}" autocomplete="off"></label>
<label class="hub-field"><span>OS, CPU, GPU</span><input name="system" required minlength="3" maxlength="200" placeholder="Windows 11, Ryzen 5 5600, RX 6600"></label>
</div>
<label class="hub-field"><span>Your name, shown on the issue (optional)</span><input name="name" maxlength="64" autocomplete="nickname"></label>
<label class="hub-trap" aria-hidden="true">Leave this empty <input name="website" tabindex="-1" autocomplete="off"></label>
<p class="hub-form-foot"><button type="submit" class="button primary">Send the report</button><span class="meta" data-status role="status"></span></p>
<p class="meta">What you write is public on GitHub: no passwords or personal details. A screenshot or the log file helps: add it to the issue once it's open.</p>
</form>
<p class="hub-form-closed" data-closed>Report it on <a href="https://github.com/ludovic111/horizon/issues/new">GitHub</a> or in <a href="{{DISCORD}}">#horizon-bugs on Discord</a>, where Kira turns your post into an issue.</p>
</section>
<section class="hub-block" id="suggest" aria-labelledby="h-suggest">
<h2 class="title" id="h-suggest">Suggest something</h2>
<p class="hub-intro">An idea for Horizon, or about something on the roadmap. The maintainers read every one, and the good ones become roadmap items. Nothing you send here is published.</p>
<form class="hub-form" data-form="suggest" hidden>
<label class="hub-field"><span>Your idea</span><textarea name="text" required minlength="10" maxlength="1000" rows="4"></textarea></label>
<div class="hub-form-pair">
<label class="hub-field"><span>About</span><select name="item">{{HUB_SUGGEST_ITEMS}}</select></label>
<label class="hub-field"><span>Your name (optional)</span><input name="name" maxlength="64" autocomplete="nickname"></label>
</div>
<label class="hub-trap" aria-hidden="true">Leave this empty <input name="website" tabindex="-1" autocomplete="off"></label>
<p class="hub-form-foot"><button type="submit" class="button primary">Send the idea</button><span class="meta" data-status role="status"></span></p>
</form>
<p class="hub-form-closed" data-closed>Post it in <a href="{{DISCORD}}">#horizon-ideas on Discord</a>, or send it to Kira with <code>/suggest</code>.</p>
</section>
<section class="hub-block" aria-labelledby="h-rules">
<h2 class="title" id="h-rules">The rules</h2>
<ol class="hub-rules">
<li><strong>Vanilla is the specification.</strong> Wherever Minecraft 26.3 has the feature, Horizon does exactly what it does: read vanilla's code, then match it.</li>
<li><strong>Small pull requests, proven.</strong> One change each, under about 500 lines, with the block <code>python3 tools/pr_ready.py</code> prints: formatting, Clippy, tests and the harnesses your change can affect.</li>
<li><strong>Say who wrote it.</strong> If an AI agent wrote or posts it, the pull request says so, and commits keep its co-author line.</li>
<li><strong>Never commit Mojang's files.</strong> No game jars, assets, decompiled code or prepared resources, and nothing taken from other mods' code.</li>
</ol>
<p class="hub-actions"><a class="button primary" href="/docs/contributing">The contributing guide</a><a class="button secondary" href="https://github.com/ludovic111/horizon/blob/main/CONTRIBUTING.md">CONTRIBUTING.md</a></p>
</section>
<section class="hub-block" id="contributors" aria-labelledby="h-contributors">
<h2 class="title" id="h-contributors">Contributors</h2>
<p class="hub-intro">Everyone with commits in Horizon. On Discord, <code>/link-github &lt;your login&gt; credit:True</code> adds your Discord name next to yours.</p>
<ul class="contributors-list hub-people">{{HUB_CREDIT}}</ul>
<p class="meta"><a href="https://github.com/ludovic111/horizon/graphs/contributors">All contributors on GitHub</a></p>
</section>
</div>
<p class="disclaimer">Not an official Minecraft product. Not approved by or associated with Mojang or Microsoft.</p>
</div>
</main>
{{SITE_FOOTER}}
<script type="application/json" id="hub-data">{{HUB_DATA}}</script>
</body>
</html>