feat: show latest version on download page - #179
Merged
Conversation
/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
Contributor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 →WaveKat Voice 最新版本 v0.0.52 · 更新日志 →WaveKat Voice の最新バージョン v0.0.52 · 更新情報 →WaveKat Voice 최신 버전 v0.0.52 · 새로운 기능 →Neueste Version von WaveKat Voice v0.0.52 · Neuigkeiten →Última versión de WaveKat Voice v0.0.52 · Novedades →Dernière version de WaveKat Voice v0.0.52 · Nouveautés →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 ninedownload.astropages already render that component under their own localized heading, and it already fetches every release and rendersVoiceDownloadScripts— so this is one edit instead of nine, and the locales can't drift apart.Keyed to
macand 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.macis the target that has never been null: it's in the offlineFALLBACKtable, and the App Store build is cut from every release. So the SSR value, thedata-dl-versionthe existing refresh writes into, and thedata-dl-rowthat withdraws the whole line if the platform ever reports mac unpublished are all one key.No new script and no second fetch.
VoiceDownloadScripts.astroalready 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 cardsnpm run check:links✓ — no broken or leaking internal linksnpm run check:meta✓ — within budget (titles and descriptions untouched)dist/, noundefinedleaking throughclaude-seo:seo-contentreview per CLAUDE.md — its one actionable finding (name the entity in the line) is applied aboveKnown gap, deliberately not in this PR
/voice/download/emits noSoftwareApplicationschema at all — onlyBreadcrumbListplus the sitewideOrganization/WebSite, while/voice/carriesSoftwareApplicationwith"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 fromvoice/index.astroontodownload.astroand 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