Skip to content

feat: show latest version on download page - #179

Merged
wavekat-eason merged 1 commit into
mainfrom
feat/download-latest-version
Sep 6, 2026
Merged

feat: show latest version on download page#179
wavekat-eason merged 1 commit into
mainfrom
feat/download-latest-version

Conversation

@wavekat-eason

Copy link
Copy Markdown
Contributor

What

/voice/download/ listed five installers and never said which release they were. The version only appeared on /voice/ (the hero meta line) and in the changelog — so the one page a visitor opens specifically to choose a build was the page that couldn't tell them what they were about to get.

One line, above the grid, in all nine locales:

Latest WaveKat Voice release v0.0.52 · What's New →

Locale Renders
en Latest WaveKat Voice release v0.0.52 · What's New →
zh / zh-hant WaveKat Voice 最新版本 v0.0.52 · 更新日志 →
ja WaveKat Voice の最新バージョン v0.0.52 · 更新情報 →
ko WaveKat Voice 최신 버전 v0.0.52 · 새로운 기능 →
de Neueste Version von WaveKat Voice v0.0.52 · Neuigkeiten →
es Última versión de WaveKat Voice v0.0.52 · Novedades →
fr Dernière version de WaveKat Voice v0.0.52 · Nouveautés →
it Ultima versione di WaveKat Voice v0.0.52 · Novità →

Each links to its own locale's changelog.

Why it's shaped this way

One component, not nine pages. The line lives in VoiceDownloadAll.astro. All nine download.astro pages already render that component under their own localized heading, and it already fetches every release and renders VoiceDownloadScripts — so this is one edit instead of nine, and the locales can't drift apart.

Keyed to mac and nothing else. The printed value and the browser-side correction have to name the same target or they can disagree the first time a release skips one. mac is the target that has never been null: it's in the offline FALLBACK table, and the App Store build is cut from every release. So the SSR value, the data-dl-version the existing refresh writes into, and the data-dl-row that withdraws the whole line if the platform ever reports mac unpublished are all one key.

No new script and no second fetch. VoiceDownloadScripts.astro already refreshes [data-dl-version] and toggles [data-dl-row] for the grid rows, so a release landing between site deploys updates this line with no rebuild — and withdraws it rather than leaving a stale version standing over the grid.

Page-level rather than per-row, because half the grid could never carry a version: Apple and Microsoft resolve their own builds and report nothing back here — the same reason the store rows carry no size.

The label names the product even though the <h1> two lines above already does. A passage extractor lifts this <p> on its own, and "Latest release v0.0.52" alone states a version of nothing; with the entity in it the line survives being quoted. Per CLAUDE.md's entity-naming and self-contained-answer rules.

Verification

  • npm run build ✓ — 241 pages, 189 OG cards
  • npm run check:links ✓ — no broken or leaking internal links
  • npm run check:meta ✓ — within budget (titles and descriptions untouched)
  • All nine locales confirmed rendering in dist/, no undefined leaking through
  • Previewed the built output in a browser against the grid
  • claude-seo:seo-content review per CLAUDE.md — its one actionable finding (name the entity in the line) is applied above

Known gap, deliberately not in this PR

/voice/download/ emits no SoftwareApplication schema at all — only BreadcrumbList plus the sitewide Organization/WebSite, while /voice/ carries SoftwareApplication with "softwareVersion":"0.0.52". So after this PR the download page states a version in visible copy that its own structured data doesn't back. Mirroring the block from voice/index.astro onto download.astro and its eight twins would fix it, but that's nine page files and a new JSON-LD block — a separate change from a one-line copy addition.

🤖 Generated with Claude Code

https://claude.ai/code/session_0147ECxA2yZDU2eei8RHhtMj

/voice/download/ listed five installers and never said which
release they were. The version only appeared on /voice/ and in the
changelog, so the one page a visitor opens to choose a build was
the page that couldn't tell them what they were about to get.

One line above the grid, in all nine locales:

    Latest WaveKat Voice release v0.0.52 · What's New →

It lives in VoiceDownloadAll.astro rather than in the nine
download.astro pages. All nine already render that component under
their own localized heading, and it already fetches every release
and renders VoiceDownloadScripts, so this is one edit instead of
nine and the locales cannot drift apart.

Keyed to `mac` and nothing else. The printed value and the
browser-side correction have to name the same target or they can
disagree the first time a release skips one, and mac is the target
that has never been null -- it is in the offline FALLBACK table and
the App Store build is cut from every release. So the SSR value,
the `data-dl-version` the existing refresh writes into, and the
`data-dl-row` that withdraws the whole line if the platform ever
reports mac unpublished are one key. No new script, no second
fetch: VoiceDownloadScripts already does both for the rows, which
means a release landing between site deploys updates this line
without a rebuild.

Page-level rather than per-row because half the grid could never
carry a version: Apple and Microsoft resolve their own builds and
report nothing back here, which is why the store rows have no size
either.

The label names the product even though the <h1> two lines above
already does. A passage extractor lifts this <p> on its own, and
"Latest release v0.0.52" alone states a version of nothing; with
the entity in it the line survives being quoted.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0147ECxA2yZDU2eei8RHhtMj
@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

@wavekat-eason
wavekat-eason marked this pull request as ready for review September 6, 2026 09:56
@wavekat-eason
wavekat-eason merged commit 9078266 into main Sep 6, 2026
2 checks passed
@wavekat-eason
wavekat-eason deleted the feat/download-latest-version branch September 6, 2026 09:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant