Repository navigation
M5 (3/3): update Botloft from inside the app, and a release workflow - #12
Merged
Merged
Conversation
The app checks the latest published GitHub release (latest.json) when it opens and every six hours. A newer version shows "Update available" in the title bar; one click downloads it with progress, runs the installer passively and reopens Botloft, and the reopened app updates the daemon because it is now outdated. Failures keep the current version, with the error under "Details". Dev builds never offer to replace themselves. Updates are signed with the Tauri updater key (public key in tauri.conf.json, private key in the TAURI_SIGNING_PRIVATE_KEY secret), and requireSignedVersion keeps a tampered feed from pushing an older signed release back. Pushing a tag vX.Y.Z runs release.yml: it checks the tag against the workspace version, builds the signed installer and opens a draft release with the installer, its signature and latest.json. The updater sees it once the owner publishes it. The version now lives only in Cargo.toml.
This was referenced Sep 28, 2026
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.
Last M5 slice: in-app updates and a way to publish them.
Updates in the app
tauri-plugin-updaterreadslatest.jsonfrom the latest published GitHub release. The app checks when it opens and every 6 h. If it is offline or there is no release, nothing shows. Dev builds skip the check, so they never offer to replace themselves with the released app./P /UPDATE /R), which reopens the app. If the update fails, the current version keeps running, the error goes under Details, and "Try again" is offered./UPDATE, so the service keeps running until then.tauri.conf.json, the private key is the repo secretTAURI_SIGNING_PRIVATE_KEY(set), and its local copy lives in%USERPROFILE%\.tauri\botloft.key.requireSignedVersionis on, so a tampered feed cannot push an older signed release back.Releasing
[workspace.package]ofCargo.toml:tauri.conf.jsonno longer repeats it.vX.Y.Zruns.github/workflows/release.yml. It checks that the tag matches the version, runspnpm bundlewith the signing key, and opens a draft release containing the installer, its.sigandlatest.json(app/scripts/release.mjs). Users only get offered the update once you publish the draft.Tested
pnpm check: 52 tests pass, including new ones for update/no update, a failed update with retry, and an unreachable feed staying quiet. Clippy and fmt pass.Botloft_0.1.0_x64-setup.exe.sigare produced, and the signature's trusted comment includesversion:0.1.0.release.mjs checkacceptsv0.1.0and rejectsv0.2.0.Manual test (needs a release)
v0.1.0and push: the workflow opens a draft release with the three files. Publish it and install from it.botloftd service status) reports 0.1.1.