The dev machine is now a laptop, so the release path had to stop assuming Windows
and a reachable network share.
- tools/build-win.cjs: build the Windows x64 installer from macOS or Windows.
electron-builder fetches its own mac wine build, so the only real trap is
architecture: a plain `electron-builder --win` on Apple Silicon silently
produces an arm64 installer the stage PC cannot run. This pins --x64 and
strips the CSC_* signing vars (an EMPTY WIN_CSC_LINK aborts the build).
- tools/publish-update.cjs: an http(s) destination now uploads to a Gitea
generic package registry. Not a Gitea release: this server caps release
attachments at 100 MB and disallows .exe, while the package registry takes the
750 MB installer and serves it anonymously — which the updater requires, since
it sends no credentials. Installer first, manifest last, so a TV checking
mid-publish never sees a manifest naming a file that is not there yet.
- tools/release.cjs: bump, build and publish in one command.
- server.js: honour "check for updates automatically when the app starts". The
setting was stored but never acted on. It checks only — installing restarts
the app, which must stay a deliberate tap.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
First commit on the local Gitea server, made after moving the tree off the
Windows machine. Build outputs, node_modules and the AI models stay out
(see .gitignore); everything the installer build needs is tracked.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>