Pull updates from the church's own forge, from inside the app
Settings gains an Updates block: it asks the church Gitea for the newest release, compares the tag against the running build, and if there is a newer one shows what changed and offers to download the installer. 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. And nothing here happens on its own: a background check that announces itself three minutes into a sermon is a hazard, so the operator presses the button, and presses a second one to download. The file lands in Downloads and is revealed; installing is a drag across when the room is empty. 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 build 112. Two things only real testing found. Gitea answers with whatever address it was reached on, so the release API returned asset URLs on 10.3.8.90 while the forge is configured by hostname — the same-host guard refused a perfectly good installer. The URL is now rebuilt on the configured origin, which keeps the property that matters (this only ever fetches from the server the operator configured) and survives a forge that knows itself by more than one name. 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 instead. The token is this machine's credential: it stays out of PORTABLE_APP, so it does not ride along in an exported settings file. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
5d8d3e3527
commit
070c0dfb82
@@ -380,6 +380,30 @@
|
||||
|
||||
<hr>
|
||||
|
||||
<h3 class="subhead">Updates</h3>
|
||||
<p class="hint">Checks this church’s own server, not the internet — so it works at a venue
|
||||
with no route out. Nothing downloads on its own and nothing installs itself: this app is
|
||||
often live in front of a congregation.</p>
|
||||
<div class="row">
|
||||
<button class="btn" id="updCheck">Check for an update</button>
|
||||
<span class="hint" id="updState">—</span>
|
||||
</div>
|
||||
<div id="updFound" hidden>
|
||||
<p class="hint" id="updWhat"></p>
|
||||
<div class="row">
|
||||
<button class="btn" id="updGet">Download it</button>
|
||||
<span class="hint" id="updProgress"></span>
|
||||
</div>
|
||||
<details id="updNotesBox"><summary class="hint">What changed</summary>
|
||||
<pre class="updnotes" id="updNotes"></pre></details>
|
||||
</div>
|
||||
<label for="updToken" style="margin-top:.75rem">Access token</label>
|
||||
<input id="updToken" type="password" placeholder="only while the repository is private"
|
||||
autocomplete="off" spellcheck="false">
|
||||
<p class="hint">Stays on this Mac. It is not carried by <b>Save settings to a file</b>.</p>
|
||||
|
||||
<hr>
|
||||
|
||||
<label style="margin-top:.75rem">Models</label>
|
||||
<p class="hint" id="modelInfo">—</p>
|
||||
<div class="row">
|
||||
|
||||
Reference in New Issue
Block a user