feat(web): list zddc-server binaries + image tags on releases page
The releases index already enumerated HTML tools by channel and
version. Add a parallel section for zddc-server with two artifact
families:
- Standalone binaries: a channel × platform table linking to
website/releases/zddc-server-{linux,darwin,windows}-{amd64,arm64}-<channel>
(the files release-image.sh now mirrors there). Empty cells render
as em-dashes; the table only renders when at least one binary
exists locally so freshly-cloned repos don't show a ghost section.
- Container images: pull-snippet, channel chips linking to the
codeberg package page, and a "Pin to version" row of historical
tags (clean stables first, recent pre-releases listed separately
with a "recent pre-releases:" label so the pre-release noise
doesn't drown out the stable list).
Recent pre-releases capped at 10 entries to keep the list scannable
as alpha cuts proliferate over time.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
566070ca80
commit
6e1777e9c2
7 changed files with 135 additions and 5 deletions
91
build.sh
91
build.sh
|
|
@ -147,6 +147,15 @@ build_releases_index() {
|
|||
.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>
|
||||
|
|
@ -201,6 +210,88 @@ HEAD
|
|||
fi
|
||||
printf ' </section>\n'
|
||||
done
|
||||
# zddc-server section — different artifact shape than the HTML tools.
|
||||
# Two artifact families:
|
||||
# 1. Downloadable binaries at website/releases/zddc-server-<os>-<arch>-<channel>
|
||||
# (mutable channel pointers; release-image.sh writes them).
|
||||
# 2. Container images at codeberg.org/varasys/zddc-server:<channel> and
|
||||
# :<version> (the registry; we don't proxy them through the website,
|
||||
# but we list the recent tags and a `podman pull` snippet for each).
|
||||
printf ' <section class="rel-tool">\n'
|
||||
printf ' <h2>zddc-server</h2>\n'
|
||||
printf ' <p style="margin-top:0;color:var(--color-text-muted);font-size:0.95rem;">Go HTTP file server with ACL, .archive index, and a delegated-admin .zddc editor. Distributed as a container image (preferred) or a standalone binary.</p>\n'
|
||||
|
||||
# Binaries table.
|
||||
_platforms="linux-amd64 darwin-amd64 darwin-arm64 windows-amd64"
|
||||
_have_any_bin=0
|
||||
for _ch in stable beta alpha; do
|
||||
for _p in $_platforms; do
|
||||
_ext=""; case "$_p" in windows-*) _ext=".exe" ;; esac
|
||||
if [ -f "$RELEASES_DIR/zddc-server-${_p}-${_ch}${_ext}" ]; then
|
||||
_have_any_bin=1; break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
if [ "$_have_any_bin" = "1" ]; then
|
||||
printf ' <h3 style="font-size:1rem;margin:0.75rem 0 0.4rem;">Standalone binaries</h3>\n'
|
||||
printf ' <table class="rel-bin-table"><thead><tr><th>Channel</th>'
|
||||
for _p in $_platforms; do printf '<th>%s</th>' "$_p"; done
|
||||
printf '</tr></thead><tbody>\n'
|
||||
for _ch in stable beta alpha; do
|
||||
printf ' <tr><td class="ch-%s">%s</td>' "$_ch" "$_ch"
|
||||
for _p in $_platforms; do
|
||||
_ext=""; case "$_p" in windows-*) _ext=".exe" ;; esac
|
||||
_f="zddc-server-${_p}-${_ch}${_ext}"
|
||||
if [ -f "$RELEASES_DIR/$_f" ]; then
|
||||
printf '<td><a href="%s">download</a></td>' "$_f"
|
||||
else
|
||||
printf '<td class="empty">—</td>'
|
||||
fi
|
||||
done
|
||||
printf '</tr>\n'
|
||||
done
|
||||
printf ' </tbody></table>\n'
|
||||
fi
|
||||
|
||||
# Container image: pull-snippet box plus the recent git tag list.
|
||||
printf ' <h3 style="font-size:1rem;margin:0.75rem 0 0.4rem;">Container image</h3>\n'
|
||||
printf ' <p style="margin:0 0 0.4rem;font-size:0.9rem;">Pull from <a href="https://codeberg.org/VARASYS/-/packages/container/zddc-server">codeberg.org/varasys/zddc-server</a>:</p>\n'
|
||||
printf ' <div class="rel-channels">\n'
|
||||
printf ' <a class="stable" href="https://codeberg.org/VARASYS/-/packages/container/zddc-server/stable">:stable</a>\n'
|
||||
printf ' <a class="beta" href="https://codeberg.org/VARASYS/-/packages/container/zddc-server/beta">:beta</a>\n'
|
||||
printf ' <a class="alpha" href="https://codeberg.org/VARASYS/-/packages/container/zddc-server/alpha">:alpha</a>\n'
|
||||
printf ' </div>\n'
|
||||
printf ' <code class="rel-pull">podman pull codeberg.org/varasys/zddc-server:stable</code>\n'
|
||||
|
||||
# Recent zddc-server tags from git: clean stables first (top), then
|
||||
# the most recent pre-releases. Dropping older pre-releases keeps the
|
||||
# list readable since alpha/beta cuts proliferate.
|
||||
_server_stables=$(git -C "$SCRIPT_DIR" tag --list 'zddc-server-v*' 2>/dev/null \
|
||||
| grep -E '^zddc-server-v[0-9]+\.[0-9]+\.[0-9]+$' \
|
||||
| sed 's|^zddc-server-v||' \
|
||||
| sort -V -r)
|
||||
_server_prereleases=$(git -C "$SCRIPT_DIR" tag --list 'zddc-server-v*' 2>/dev/null \
|
||||
| grep -E '^zddc-server-v[0-9]+\.[0-9]+\.[0-9]+-' \
|
||||
| sed 's|^zddc-server-v||' \
|
||||
| sort -V -r \
|
||||
| head -10)
|
||||
if [ -n "$_server_stables" ] || [ -n "$_server_prereleases" ]; then
|
||||
printf ' <div class="rel-versions" style="margin-top:0.6rem;"><strong>Pin to version:</strong>\n'
|
||||
printf '%s\n' "$_server_stables" | while read -r _v; do
|
||||
[ -n "$_v" ] || continue
|
||||
printf ' <a href="https://codeberg.org/VARASYS/-/packages/container/zddc-server/%s">v%s</a>\n' "$_v" "$_v"
|
||||
done
|
||||
if [ -n "$_server_prereleases" ]; then
|
||||
printf ' <span style="color:var(--color-text-muted);">recent pre-releases:</span>\n'
|
||||
printf '%s\n' "$_server_prereleases" | while read -r _v; do
|
||||
[ -n "$_v" ] || continue
|
||||
printf ' <a href="https://codeberg.org/VARASYS/-/packages/container/zddc-server/%s">v%s</a>\n' "$_v" "$_v"
|
||||
done
|
||||
fi
|
||||
printf ' </div>\n'
|
||||
fi
|
||||
printf ' </section>\n'
|
||||
|
||||
cat <<'TAIL'
|
||||
|
||||
<section style="margin-top: var(--spacing-2xl); color: var(--color-text-muted); font-size: 0.9rem;">
|
||||
|
|
|
|||
|
|
@ -2095,7 +2095,7 @@ td[data-field="trackingNumber"] {
|
|||
<div class="header-left">
|
||||
<div class="header-title-group">
|
||||
<span class="app-header__title">ZDDC Archive</span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-29 23:06:28 · 43c370a-dirty</span></span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-30 01:00:42 · 566070c-dirty</span></span>
|
||||
</div>
|
||||
<button id="addDirectoryBtn" class="btn btn-primary">Add Local Directory</button>
|
||||
<button id="refreshHeaderBtn" class="btn btn-secondary hidden" title="Refresh Data" style="font-size:1.1rem;">⟳</button>
|
||||
|
|
|
|||
|
|
@ -1358,7 +1358,7 @@ body.help-open .app-header {
|
|||
<div class="header-left">
|
||||
<div class="header-title-group">
|
||||
<span class="app-header__title">ZDDC Classifier</span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-29 23:06:28 · 43c370a-dirty</span></span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-30 01:00:42 · 566070c-dirty</span></span>
|
||||
</div>
|
||||
<button id="selectDirectoryBtn" class="btn btn-primary">Select Directory</button>
|
||||
<button id="refreshBtn" class="btn btn-secondary hidden" title="Refresh and rescan directory">Refresh</button>
|
||||
|
|
|
|||
|
|
@ -22,6 +22,15 @@
|
|||
.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>
|
||||
|
|
@ -114,6 +123,36 @@
|
|||
</div>
|
||||
<div class="rel-meta">stable currently → landing_v0.0.2.html</div>
|
||||
</section>
|
||||
<section class="rel-tool">
|
||||
<h2>zddc-server</h2>
|
||||
<p style="margin-top:0;color:var(--color-text-muted);font-size:0.95rem;">Go HTTP file server with ACL, .archive index, and a delegated-admin .zddc editor. Distributed as a container image (preferred) or a standalone binary.</p>
|
||||
<h3 style="font-size:1rem;margin:0.75rem 0 0.4rem;">Standalone binaries</h3>
|
||||
<table class="rel-bin-table"><thead><tr><th>Channel</th><th>linux-amd64</th><th>darwin-amd64</th><th>darwin-arm64</th><th>windows-amd64</th></tr></thead><tbody>
|
||||
<tr><td class="ch-stable">stable</td><td class="empty">—</td><td class="empty">—</td><td class="empty">—</td><td class="empty">—</td></tr>
|
||||
<tr><td class="ch-beta">beta</td><td class="empty">—</td><td class="empty">—</td><td class="empty">—</td><td class="empty">—</td></tr>
|
||||
<tr><td class="ch-alpha">alpha</td><td><a href="zddc-server-linux-amd64-alpha">download</a></td><td><a href="zddc-server-darwin-amd64-alpha">download</a></td><td><a href="zddc-server-darwin-arm64-alpha">download</a></td><td><a href="zddc-server-windows-amd64-alpha.exe">download</a></td></tr>
|
||||
</tbody></table>
|
||||
<h3 style="font-size:1rem;margin:0.75rem 0 0.4rem;">Container image</h3>
|
||||
<p style="margin:0 0 0.4rem;font-size:0.9rem;">Pull from <a href="https://codeberg.org/VARASYS/-/packages/container/zddc-server">codeberg.org/varasys/zddc-server</a>:</p>
|
||||
<div class="rel-channels">
|
||||
<a class="stable" href="https://codeberg.org/VARASYS/-/packages/container/zddc-server/stable">:stable</a>
|
||||
<a class="beta" href="https://codeberg.org/VARASYS/-/packages/container/zddc-server/beta">:beta</a>
|
||||
<a class="alpha" href="https://codeberg.org/VARASYS/-/packages/container/zddc-server/alpha">:alpha</a>
|
||||
</div>
|
||||
<code class="rel-pull">podman pull codeberg.org/varasys/zddc-server:stable</code>
|
||||
<div class="rel-versions" style="margin-top:0.6rem;"><strong>Pin to version:</strong>
|
||||
<a href="https://codeberg.org/VARASYS/-/packages/container/zddc-server/0.0.7">v0.0.7</a>
|
||||
<a href="https://codeberg.org/VARASYS/-/packages/container/zddc-server/0.0.6">v0.0.6</a>
|
||||
<a href="https://codeberg.org/VARASYS/-/packages/container/zddc-server/0.0.5">v0.0.5</a>
|
||||
<a href="https://codeberg.org/VARASYS/-/packages/container/zddc-server/0.0.4">v0.0.4</a>
|
||||
<a href="https://codeberg.org/VARASYS/-/packages/container/zddc-server/0.0.3">v0.0.3</a>
|
||||
<a href="https://codeberg.org/VARASYS/-/packages/container/zddc-server/0.0.2">v0.0.2</a>
|
||||
<a href="https://codeberg.org/VARASYS/-/packages/container/zddc-server/0.0.1">v0.0.1</a>
|
||||
<span style="color:var(--color-text-muted);">recent pre-releases:</span>
|
||||
<a href="https://codeberg.org/VARASYS/-/packages/container/zddc-server/0.0.8-alpha.2">v0.0.8-alpha.2</a>
|
||||
<a href="https://codeberg.org/VARASYS/-/packages/container/zddc-server/0.0.8-alpha.1">v0.0.8-alpha.1</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section style="margin-top: var(--spacing-2xl); color: var(--color-text-muted); font-size: 0.9rem;">
|
||||
<p>Append <code>?v=alpha</code>, <code>?v=beta</code>, <code>?v=stable</code>, or <code>?v=0.0.1</code> to any deployment URL to switch versions for a single request — see <a href="../">the home page</a>.</p>
|
||||
|
|
|
|||
|
|
@ -884,7 +884,7 @@ body {
|
|||
<header class="app-header">
|
||||
<div class="header-left">
|
||||
<span class="app-header__title">ZDDC Archive</span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-29 23:06:28 · 43c370a-dirty</span></span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-30 01:00:42 · 566070c-dirty</span></span>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<button id="theme-btn" class="btn btn-secondary" title="Theme: auto (follows OS)" aria-label="Theme: auto (follows OS)">◐</button>
|
||||
|
|
|
|||
|
|
@ -1650,7 +1650,7 @@ body.help-open .app-header {
|
|||
<div class="header-left">
|
||||
<div class="header-title-group">
|
||||
<span class="app-header__title">ZDDC Markdown</span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-29 23:06:28 · 43c370a-dirty</span></span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-30 01:00:42 · 566070c-dirty</span></span>
|
||||
</div>
|
||||
<button id="select-directory" class="btn btn-primary" title="Select a Directory">Select Directory</button>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -2192,7 +2192,7 @@ dialog.modal--narrow {
|
|||
<span id="no-js-notice" class="text-gray-400 text-xs italic">JavaScript not available</span>
|
||||
<div class="header-title-group">
|
||||
<span class="app-header__title">ZDDC Transmittal</span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-29 23:06:28 · 43c370a-dirty</span></span>
|
||||
<span class="build-timestamp"><span style="color:red;font-weight:bold">v0.0.3-alpha · 2026-04-30 01:00:41 · 566070c-dirty</span></span>
|
||||
</div>
|
||||
<div class="app-header__spacer"></div>
|
||||
<div class="app-header__icons">
|
||||
|
|
|
|||
Loading…
Reference in a new issue