In-app updates on Windows
The Microsoft Store doesn't update EXE installs, so the app updates itself with Tauri's updater. It reads updater/latest.json from the Kestrove Gitea a minute after startup and once a day. A new version shows as a banner and in Settings > Updates, and installs only on "Update and restart". The vault locks before the installer takes over. The installer must be signed with the Kestrove updater key, with the signature bound to its version (requireSignedVersion), so a compromised download server can hold updates back but can't ship one or replay an old installer. Signing is a release step, after Authenticode: gitea-release.sh signs, uploads the .sig, and writes latest.json last. Plain builds need no key. Checks reveal only the IP address and app version, and can be turned off in Settings. endpoints is a list, so a mirror can be added. Linux packages update through their package manager. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -63,11 +63,17 @@ XWIN_ACCEPT_LICENSE=1 scripts/windows.sh
|
||||
`src-tauri/Cargo.toml`, tag the commit (`git tag v<version> && git push origin v<version>`), then:
|
||||
|
||||
```bash
|
||||
GITEA_TOKEN=<token with write:repository> scripts/gitea-release.sh
|
||||
GITEA_TOKEN=<token with write:repository> TAURI_SIGNING_PRIVATE_KEY_PATH=<updater key> scripts/gitea-release.sh
|
||||
```
|
||||
|
||||
It creates the release for the tag and uploads the installers, the browser helpers and a `SHA256SUMS` file.
|
||||
|
||||
**Offer it as an update (Windows):** the script also signs the installer with the updater key, uploads the
|
||||
signature, and writes `updater/latest.json`. Sign the installer with the code-signing certificate first, because
|
||||
the updater signature covers the final file. Installed copies are offered the update once that file is committed
|
||||
and pushed to main; the script prints the commands. Keep the updater key and its password offline and backed up:
|
||||
the app only accepts updates signed with it, so losing it means existing installs can't update.
|
||||
|
||||
## How the browser connection works
|
||||
|
||||
```
|
||||
@@ -84,6 +90,14 @@ browser extension ─(native messaging)─▶ kestrove-nmh ─(local connection)
|
||||
- The same code runs inside the Mac app; it lives in `kestrove-core` (`kv-ffi`'s browser bridge, `kv-ipc`,
|
||||
`kv-nmh`).
|
||||
|
||||
## Updates
|
||||
|
||||
On Windows, Kestrove checks for a new version a minute after it starts and once a day. The check is a plain request
|
||||
for `updater/latest.json` on the Kestrove Gitea: it reveals this computer's IP address and app version, and nothing
|
||||
from your vault. A new version appears as a banner and installs only when you choose **Update and restart**. The app
|
||||
verifies the download's signature before running it. Turn checks off in **Settings → Updates**. On Linux, updates
|
||||
come through your package manager.
|
||||
|
||||
## Where things are kept
|
||||
|
||||
The vault and the app's files are in your user's app-data folder (`vault.sqlite`, `pairings.json`,
|
||||
|
||||
Reference in New Issue
Block a user