0.8.1 — an installer a teacher can run, and a page that stops saying there is none - #102
Merged
Merged
Conversation
The desktop app is for the teacher who wants to open a folder of PDFs, and the zip asked that teacher to right-click, tick Unblock, run Get-FileHash in PowerShell, extract, and then keep the folder together -- because WebView2 needs wwwroot on disk next to the executable, and a folder dragged apart is a broken app. An Inno Setup installer now ships beside the zip, built from the same staging folder so the two can never carry different files: - PrivilegesRequired=lowest, into %LOCALAPPDATA%\Programs: a teacher on a managed school laptop installs it without asking IT - a Start menu entry and an uninstaller registered under the current user, so it removes itself from Settings -> Apps like anything else - English and Spanish wizard, Windows 10 1809 minimum, as the page promises No version is written into the script. It is passed with /DAppVersion from the workflow, because the version already lives in seven places that ReleaseVersionTests holds together and an eighth copy is how one disagrees. It is unsigned, exactly like the executable inside it, so SmartScreen still warns. Only code signing removes that; an installer does not. Both artifacts get a sha256 sidecar and both are attached. The dry run keeps both, so the installer can be tried by hand before a tag. Verified on the runner and on a machine: Inno Setup 6.7.1 is already on windows-latest; the installer is 57.6 MB against 83.8 for the zip; a silent per-user install exits 0 and lays down exactly the zip's 488 files with none missing or extra; the Start menu entry and the Settings entry appear; the app starts and holds its window; and the silent uninstall removes the entry, the shortcut and every file. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015PEbbiYSNPw7jE3LrPNhyF
The download page's primary button now fetches the installer. The zip stays one click away for anyone who would rather not run one. Three sentences on that page became false the moment the installer existed: "no installer" under the button, "There is no installer" in the zip notes, and a three-step warning whose middle step was Get-FileHash. Rewritten in both languages. The installer path is now: run it, More info -> Run anyway, find it in the Start menu. Checking the SHA-256 is still explained, as an option beside the steps rather than the thing standing between a teacher and the app. The page says plainly that the installer is unsigned and that SmartScreen will warn anyway. It does not imply otherwise. The size under the button said 80 MB, which was the zip. The installer is 58. The README's download link went to a GitHub releases search page -- a wall of tags and assets -- rather than to /download. It now goes to the page. SetupUrl is interpolated from DesktopRelease.Version, like ZipUrl, so the two cannot disagree. Rendered and checked: the button resolves to the 0.8.1 Setup.exe and the secondary link to the 0.8.1 zip. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015PEbbiYSNPw7jE3LrPNhyF
Bumped here rather than in a later release PR, on purpose. Pages deploys on merge, and the download page builds the installer's URL from DesktopRelease.Version: merging the page change at 0.8.0 would point the primary button at desktop-v0.8.0, which has no Setup.exe. The version and the page have to land together. All seven declarations, held together by ReleaseVersionTests. Merge #101 first, so v0.8.1 carries the rule-of-three fix. Then cut desktop-v0.8.1 before v0.8.1: until that tag exists, the button 404s. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015PEbbiYSNPw7jE3LrPNhyF
The line under the download button said 80 MB, which was the zip; the previous commit corrected it to 60 for the installer. That is still a number typed by hand, and the next release changes the payload. DesktopRelease already says the size belongs in the release notes, because it is only known once the runner has built the files. "Under 100 MB" is true of both the installer (58) and the zip (84), and stays true without anybody remembering to edit it. Co-Authored-By: Claude Opus 5 <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.
The desktop app is for the teacher who wants to open a folder of PDFs. The zip asked that teacher to right-click it, tick Unblock, run
Get-FileHashin PowerShell, extract it, and then keep the folder together — because WebView2 needswwwrootnext to the executable, and a teacher who drags the.exeto the desktop ends up with a broken app.This adds an installer beside the zip, makes it what the page offers first, and releases it as 0.8.1.
The installer
Inno Setup, built on the runner from the same staging folder as the zip, so the two can never carry different files.
PrivilegesRequired=lowest, into%LOCALAPPDATA%\Programs). A teacher on a managed school laptop can install it without asking IT..iss. It is passed with/DAppVersion, because the version already lives in seven placesReleaseVersionTestsholds together..sha256and both are attached. The dry run keeps both.It is unsigned, exactly like the executable inside it, so SmartScreen still warns. The page says so. Only code signing removes that.
Verified, not assumed
On the runner (dry run
35119013341): Inno Setup 6.7.1 is already onwindows-latest, and the Spanish wizard file is found. The installer is 57.6 MB against 83.8 MB for the zip — the same 488 files, compressed with LZMA2 instead of the zip's deflate. Nothing is left out.On a real Windows machine, from that artifact:
wwwrootincludedA running process with its window proves only that WPF started; a WebView2 that could not find
wwwrootwould show the same window with a blank pane. The evidence that the UI loads is the file comparison: the installed tree is identical to the zip's, paths included, and that tree has worked sincedesktop-v0.1.0.The page, which was about to lie three times
The moment an installer exists, three sentences on
/downloadbecome false: "no installer" under the button, "There is no installer" in the zip notes, and a three-step warning whose middle step wasGet-FileHash. Rewritten in both languages:The checksum is still explained, as an option beside the steps rather than an obstacle in them. The size under the button said 80 MB, which was the zip. It now says under 100 MB — true of both files, and not a number that drifts with the next release, since
DesktopReleasealready keeps sizes in the release notes. The README's download link went to a GitHub releases search page instead of/download; fixed. Rendered and checked: the button resolves to the 0.8.1Setup.exe, the secondary link to the zip.Why the version is bumped here
The page builds the installer's URL from
DesktopRelease.Version, and Pages deploys on merge. Merged at 0.8.0, the primary button would point atdesktop-v0.8.0, which has noSetup.exe. The version and the page must land together.Order:
v0.8.1carries the rule-of-three fix.desktop-v0.8.1first — until it exists, the download button 404s.v0.8.1, then the MCP registry after NuGet indexes.Known gaps, not fixed here
%LOCALAPPDATA%\SignsOfAI, where the perplexity model weights are downloaded. That is the usual behaviour for user data, and it is the one thing a teacher short on disk might want removed.375 + 72 + 7, plus the desktop job's 31.
🤖 Generated with Claude Code
https://claude.ai/code/session_015PEbbiYSNPw7jE3LrPNhyF