Give the Windows app a page, and give the app a version to report - #64
Merged
Conversation
Somebody reported that "desktop 0.4.0 is not published". Two true things sat behind that sentence and neither was the one they said. The first: the only route to the Windows app was a GitHub releases *search* URL, buried in the notice on /batch — a wall of tags and checksums for somebody whose question was "how do I open my PDFs". Half of the desktop app's reason to exist was invisible to every web visitor. There is now a /download page, bilingual, that says what the window can do that a tab cannot, what it does not change, and that Windows will warn about it and is right to, with the steps to check the file rather than click through the warning. The /batch notice and a nav link point at it, and only where a folder cannot be opened — the same signal, for the same reason, as the folder link beside it. The second: the app never said which build it was. The title bar carried its name and nothing else, so neither the user nor anyone helping them could tell 0.3.0 from 0.4.0. HostCapabilities now carries the running version and the footer prints it. A browser tab still prints none: it is always the deployment that was last pushed. While there, the same footer was claiming "Blazor WebAssembly · runs 100% in your browser" inside a WPF window, where neither half is true, and so was the badge's tooltip. Both now come from the host. The offered version is a constant rather than a lookup, because GitHub's /releases/latest resolves to whichever release is newest overall and this repository publishes two independent tag lines — half the time "latest" is a NuGet release with no zip on it. Writing it down means it can go stale, so the release workflow refuses to build a desktop-v tag whose version disagrees with the page. A release that forgets the edit does not ship, and the button can never offer a version nobody published. 371 tests, 8 of them new. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015PEbbiYSNPw7jE3LrPNhyF
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.
Closes nothing — this came from a support message, not an issue.
What happened
Somebody reported that "desktop 0.4.0 is not published". Two true things sat behind that
sentence and neither was the one they said.
The download path was a GitHub search URL. The only route to the Windows app was
/releases?q=desktop&expanded=true, reachable from the notice on/batch— a wall of tags andchecksums for somebody whose question was "how do I open my PDFs". Half of the desktop app's
reason to exist was invisible to every web visitor.
The app never said which build it was. The title bar carried its name and nothing else, so
neither the user nor anybody helping them could tell 0.3.0 from 0.4.0.
What this does
/download, bilingual: the four things the window can do that a tab cannot, each statedagainst what the browser does instead; what it does not change (same engine, same numbers, and
the exact privacy wording from the README, not a wider one); and that Windows will warn about the
unsigned build, with the steps to check the file instead of clicking through the warning.
and whether a newer one is published. Nothing auto-updates: an unsigned app that downloads and
runs code on its own is the behaviour we would tell a teacher to be suspicious of.
beside it.
/batchpoints here instead of at GitHub.deployment that was last pushed.
window, where neither half is true; so was the .NET badge's tooltip. Both now come from the host.
The version is written down, and guarded
DesktopRelease.Versionis a constant, not a lookup: GitHub's/releases/latestresolves towhichever release is newest overall, and this repository publishes two independent tag lines on
purpose — about half the time "latest" is a NuGet release with no zip on it.
Writing it down means it can go stale, so it is not left to memory: the release workflow refuses
to build a
desktop-v*tag whose version disagrees with the page. A release that forgets the editdoes not ship, and the button can never offer a version nobody published.
Merge order matters
The page offers 0.4.0, which is not published yet. The guard forces this sequence:
main).desktop-v0.4.0— the workflow now finds0.4.0on both sides and builds.Between the two, Pages will serve a button that 404s. That window is minutes, and nobody has this
URL yet. Cutting the tag against this branch first also works, if you would rather have none at all.
Checks
371 tests, 8 new. Rendered and read at 1280 and 390 px, in both languages, before committing.
🤖 Generated with Claude Code
https://claude.ai/code/session_015PEbbiYSNPw7jE3LrPNhyF