Rolls back the HTML-tool side of the Codeberg-as-canonical refactor (commits2dc9ad2,b28c4ae,bdac8dc) in favor of a simpler model: per-version HTML files committed under website/releases/ as immutable real files; partial-version pins (<tool>_v<X.Y>.html, <tool>_v<X>.html) and channel mirrors (<tool>_<channel>.html) are checked-in symlinks. Docker-tag pattern: :1.2.3 is pinned, :1.2 floats, :1 floats further, :stable floats furthest. URL scheme — every URL resolves to actual HTML via the symlink chain; no JS indirection, no manifest.json, no Caddy regex-rewrite: /releases/<tool>_v<X.Y.Z>.html exact version (real file) /releases/<tool>_v<X.Y>.html latest patch within X.Y.* (symlink) /releases/<tool>_v<X>.html latest within X.*.* (symlink) /releases/<tool>_stable.html current stable (symlink) /releases/<tool>_beta.html current beta (symlink to stable when no active beta; real file when beta is in flight) /releases/<tool>_alpha.html current alpha (similar — symlink to beta or stable when no active alpha) Cascade rule (in shared/build-lib.sh promote_release): --release [version] (stable cut) → write per-version file; refresh 5 symlinks (_v<X.Y>, _v<X>, _stable, _beta, _alpha) → new versioned file; tag <tool>-v<X.Y.Z>. --release beta → overwrite <tool>_beta.html with real bytes; cascade _alpha.html → _beta.html (symlink). No tag — channel URLs are stable URLs by design; counters defeat that. --release alpha → overwrite <tool>_alpha.html with real bytes. No tag, no other side-effects. Plain `sh tool/build.sh` → dist/ only. No website/releases/ side-effect, no commit. Code changes: - .gitignore — drop website/releases/*.html and website/releases/zddc-server-* exclusions; HTML tool files are tracked again. Replace the comment with the new model description. - shared/build-lib.sh — drop next_prerelease (no -alpha.N / -beta.N counter tags). Drop the Codeberg-upload path for HTML tools (no longer sourcing publish-codeberg-release.sh from build-lib). promote_release rewritten with two helpers: _promote_stable (per-version file + 5 symlinks + tag) and _promote_channel (overwrite mirror + cascade alpha→beta on beta cut). - zddc/release.sh — drop alpha/beta channel path entirely; binaries publish only on stable cuts. zddc-server's beta/alpha builds-from-source via the helm charts (next phase) — no binary distribution needed for those channels. - bootstrap/level2.html.tmpl — drop manifest.json fetch; resolve ?v= to a static URL via the symlink chain. New suffixFor() handles channel names, exact versions, and partial-version pins (?v=0.0, ?v=0). Same logic in level1.html.tmpl already works because the local-staging files (e.g. ../<tool>_v0.0.html) exist via the same symlink scheme. - build.sh build_releases_index — revert to filesystem scan of website/releases/ instead of Codeberg API call. Drop manifest.json generation. Per-tool sections list channel chips + per-version pin links; zddc-server section links to Codeberg release pages directly. - tests/build-label.spec.js — fix the channel-label regex to match the pre-release-semver format introduced in commit9459139("v0.0.3-alpha · ..."). Pre-existing test failure that wasn't caught at the time. Storage: - 30 new committed files under website/releases/ — 10 real (per-version) + 20 symlinks (5 tools × 4 partial/channel variants, plus alpha as a real file by default). - Initial state: stable v0.0.2 across all 5 tools; alpha/beta/v0.0/v0 symlinks all point at <tool>_v0.0.2.html. - manifest.json deleted (no longer needed). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
138 lines
6.9 KiB
HTML
138 lines
6.9 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Releases — ZDDC</title>
|
|
<meta name="description" content="All released versions and channel builds of every ZDDC tool.">
|
|
<meta name="theme-color" content="#2a5a8a">
|
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
|
<link rel="stylesheet" href="../css/style.css">
|
|
<style>
|
|
.rel-tool { margin-top: var(--spacing-xl); padding: var(--spacing-md); border: 1px solid var(--color-border); border-radius: 8px; }
|
|
.rel-tool h2 { margin-top: 0; }
|
|
.rel-channels { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0.75rem 0 1.25rem 0; }
|
|
.rel-channels a { padding: 0.25rem 0.625rem; border-radius: 999px; text-decoration: none; border: 1px solid var(--color-border); color: var(--color-text); font-size: 0.9rem; }
|
|
.rel-channels a.stable { border-color: var(--color-primary); color: var(--color-primary); font-weight: 600; }
|
|
.rel-channels a.beta, .rel-channels a.alpha { color: var(--color-text-muted); }
|
|
.rel-channels a:hover { background: var(--color-bg-subtle); }
|
|
.rel-versions { font-size: 0.875rem; color: var(--color-text-muted); }
|
|
.rel-versions a { margin-right: 0.5rem; color: var(--color-text); text-decoration: none; padding: 0.1rem 0.4rem; border-radius: 4px; }
|
|
.rel-versions a:hover { background: var(--color-bg-subtle); text-decoration: underline; }
|
|
.rel-meta { font-size: 0.85rem; color: var(--color-text-muted); margin-top: 0.5rem; }
|
|
.rel-bin-table { width: 100%; border-collapse: collapse; margin: 0.5rem 0 1rem; font-size: 0.9rem; }
|
|
.rel-bin-table th, .rel-bin-table td { text-align: left; padding: 0.4rem 0.6rem; border-bottom: 1px solid var(--color-border); }
|
|
.rel-bin-table th { font-weight: 600; color: var(--color-text-muted); }
|
|
.rel-bin-table td.ch-stable { color: var(--color-primary); font-weight: 600; }
|
|
.rel-bin-table td.ch-beta, .rel-bin-table td.ch-alpha { color: var(--color-text-muted); }
|
|
.rel-bin-table a { color: var(--color-text); text-decoration: none; padding: 0.1rem 0.35rem; border-radius: 4px; }
|
|
.rel-bin-table a:hover { background: var(--color-bg-subtle); text-decoration: underline; }
|
|
.rel-bin-table td.empty { color: var(--color-text-muted); font-style: italic; }
|
|
.rel-pull { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.85rem; background: var(--color-bg-subtle); padding: 0.25rem 0.5rem; border-radius: 4px; display: inline-block; margin: 0.2rem 0; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<header class="site-header">
|
|
<div class="container header-content">
|
|
<a href="/" class="brand">
|
|
<div class="brand-logo">
|
|
<svg viewBox="0 0 24 24"><path d="M3 5h18v2H3V5zm0 6h12v2H3v-2zm0 6h6v2H3v-2z" /></svg>
|
|
</div>
|
|
<span class="brand-name">ZDDC</span>
|
|
</a>
|
|
<nav class="header-nav">
|
|
<a href="/" class="nav-link">Home</a>
|
|
<a href="../reference.html" class="nav-link">Docs</a>
|
|
<a href="index.html" class="nav-link active">Releases</a>
|
|
</nav>
|
|
</div>
|
|
</header>
|
|
|
|
<section class="hero">
|
|
<div class="container">
|
|
<h1>Releases</h1>
|
|
<p class="hero-subtitle">All published versions and channel builds of every ZDDC tool. Stable releases are immutable; alpha and beta channels are rebuilt without notice.</p>
|
|
</div>
|
|
</section>
|
|
|
|
<main class="container" style="margin-bottom: var(--spacing-2xl);">
|
|
<section class="rel-tool">
|
|
<h2>Archive</h2>
|
|
<div class="rel-channels">
|
|
<a class="stable" href="archive_stable.html">stable</a>
|
|
<a class="beta" href="archive_beta.html">beta</a>
|
|
<a class="alpha" href="archive_alpha.html">alpha</a>
|
|
</div>
|
|
<div class="rel-versions"><strong>Pin to version:</strong>
|
|
<a href="archive_v0.0.2.html">v0.0.2</a>
|
|
<a href="archive_v0.0.1.html">v0.0.1</a>
|
|
</div>
|
|
</section>
|
|
<section class="rel-tool">
|
|
<h2>Transmittal</h2>
|
|
<div class="rel-channels">
|
|
<a class="stable" href="transmittal_stable.html">stable</a>
|
|
<a class="beta" href="transmittal_beta.html">beta</a>
|
|
<a class="alpha" href="transmittal_alpha.html">alpha</a>
|
|
</div>
|
|
<div class="rel-versions"><strong>Pin to version:</strong>
|
|
<a href="transmittal_v0.0.2.html">v0.0.2</a>
|
|
<a href="transmittal_v0.0.1.html">v0.0.1</a>
|
|
</div>
|
|
</section>
|
|
<section class="rel-tool">
|
|
<h2>Classifier</h2>
|
|
<div class="rel-channels">
|
|
<a class="stable" href="classifier_stable.html">stable</a>
|
|
<a class="beta" href="classifier_beta.html">beta</a>
|
|
<a class="alpha" href="classifier_alpha.html">alpha</a>
|
|
</div>
|
|
<div class="rel-versions"><strong>Pin to version:</strong>
|
|
<a href="classifier_v0.0.2.html">v0.0.2</a>
|
|
<a href="classifier_v0.0.1.html">v0.0.1</a>
|
|
</div>
|
|
</section>
|
|
<section class="rel-tool">
|
|
<h2>Markdown Editor</h2>
|
|
<div class="rel-channels">
|
|
<a class="stable" href="mdedit_stable.html">stable</a>
|
|
<a class="beta" href="mdedit_beta.html">beta</a>
|
|
<a class="alpha" href="mdedit_alpha.html">alpha</a>
|
|
</div>
|
|
<div class="rel-versions"><strong>Pin to version:</strong>
|
|
<a href="mdedit_v0.0.2.html">v0.0.2</a>
|
|
<a href="mdedit_v0.0.1.html">v0.0.1</a>
|
|
</div>
|
|
</section>
|
|
<section class="rel-tool">
|
|
<h2>Landing (project picker)</h2>
|
|
<div class="rel-channels">
|
|
<a class="stable" href="landing_stable.html">stable</a>
|
|
<a class="beta" href="landing_beta.html">beta</a>
|
|
<a class="alpha" href="landing_alpha.html">alpha</a>
|
|
</div>
|
|
<div class="rel-versions"><strong>Pin to version:</strong>
|
|
<a href="landing_v0.0.2.html">v0.0.2</a>
|
|
<a href="landing_v0.0.1.html">v0.0.1</a>
|
|
</div>
|
|
</section>
|
|
<section class="rel-tool">
|
|
<h2>zddc-server (Go file server)</h2>
|
|
<p>Binaries are published as Codeberg release assets. Pick a platform from the release page; or build from source via the helm charts under <code>helm/</code>.</p>
|
|
<p><a href="https://codeberg.org/VARASYS/ZDDC/releases">Browse zddc-server releases on Codeberg →</a></p>
|
|
</section>
|
|
|
|
<section style="margin-top: var(--spacing-2xl); color: var(--color-text-muted); font-size: 0.9rem;">
|
|
<p>Append <code>?v=stable</code>, <code>?v=beta</code>, <code>?v=alpha</code>, <code>?v=0.0</code> (latest 0.0.x), or <code>?v=0.0.1</code> (exact) to any deployment URL to switch versions for a single request — see <a href="../">the home page</a>.</p>
|
|
</section>
|
|
</main>
|
|
|
|
<footer class="site-footer">
|
|
<div class="container footer-content">
|
|
<span>ZDDC is open source — <a href="https://codeberg.org/VARASYS/ZDDC">codeberg.org/VARASYS/ZDDC</a></span>
|
|
</div>
|
|
</footer>
|
|
</body>
|
|
</html>
|