-
3.23.2 · build 113 Stable
released this
2026-09-24 12:19:42 -04:00 | 15 commits to main since this releaseEverything in build 112, plus the app can now fetch its own updates.
This is the last build that has to be installed by hand. Once a Mac is on 113, the next one arrives through Settings → Updates.
Updates, from the church's own server
Settings gains an Updates block. It asks this Gitea for the newest release, compares the tag against the running build, shows what changed, and downloads the installer to Downloads.
Deliberately not electron-updater: that wants a static feed published beside the artifacts, and this build is ad-hoc signed with no Team ID, so a silent in-place swap would meet Gatekeeper on a machine nobody is sitting at. Nothing here happens on its own either — a background check announcing itself three minutes into a sermon is a hazard. The operator presses check, presses download, and drags the app across when the room is empty. Settings, models and voices are untouched by an install.
Tags are
v<version>-<build>, compared numerically field by field, so 3.9.0 does not read as newer than 3.23.2 and build 113 beats 112.Two faults that only real testing found, both fixed here: Gitea answers with whatever address it was reached on, so release assets came back on the IP while the forge is configured by hostname — the same-host guard refused a perfectly good installer, and the URL is now rebuilt on the configured origin. And a private repository answers 404 rather than 401, so "no releases published yet" told the operator the opposite of the truth; without a token that case now names the remedy.
While the repository is private the check needs a
read:repositoryaccess token, pasted once per machine under Settings → Updates. It stays on that Mac and is not carried by Save settings to a file. Making the repository public removes that step entirely.Also included
tools/diag.sh— a read-only one-shot diagnostic for the "it is behind / in the red" case. It prints the hardware, whether the machine is swapping, which models the app actually chose at startup, and how long sentences are really taking.Downloads