wai-quantum-desktop: installers on a tag for macOS, Linux and Windows, signed updates, the cask and the Scoop manifest #549
Loading…
Reference in a new issue
No description provided.
Delete branch "wai/quantum-desktop-release"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Quantum Studio for the desktop gains three things:
Nothing is signed until the owner adds the keys (see below). Until then a release has unsigned installers and no update.
What it adds
The app (
wai/wai-quantum-desktop)update_checkandupdate_install. The app asks one address,https://wai.transaction.science/quantum-studio-desktop/latest.json. It installs an update only when the person asks, and only when the update's signature verifies with the public key intauri.conf.jsonand names the version announced (requireSignedVersion). Then it restarts into the new version.pubkeyis empty for now, so no copy updates itself yet.verify-update FILE SIG VERSIONmakes the same check the updater makes;update-statusprints, as JSON, which installer a copy came from.icons/icon.icoandicon.icns. The app had never been built on Windows, and the Windows build needs the.ico.The Studio: a bar above the frame, shown only in the desktop app, in English and Chinese (
src/update.js). It is tested without a browser intest/update.test.mjs. The views page is rebuilt to match.Releases (
wai-quantum-desktop-release.yml, on awai-quantum-desktop-v*tag)Cargo.tomlandtauri.conf.json..dmg.-setup.exeand a portable.zip.check,update-status, the macOS code signature,hdiutil verify, the AppImage itself, and the deb unpacked. When the release signs updates, it also runsverify-updateon every update it signed.latest.json, and attaches them to the version's own release. Nothing is pushed to the tap or the bucket.tauri-cli2.12.3, installed in a folder of its own on the host runners.The update manifest's address is the website, not a release. Each signed release attaches its own
latest.json. The website copies it from that release at its next deploy, usingscripts/sync-desktop-update.sh <version>in the website's repository. That script refuses:There is no standing pre-release.
CI (
wai-quantum-studio.yml): new legsdesktop app · linux(act-22.04 plus the web view's libraries) anddesktop app · windows(pwsh). Each runs the tests, requiring the update tests by name, plus clippy,checkandupdate-status. The Linux leg also runsrelease/manifests_test.py, and the Studio job runsupdate.test.mjs.Checked
catthehacker/ubuntu:act-22.04checkok. The AppImage (81.66 MiB) runs and reportsappimage. The deb runs and reportsdeb. The rpm is 7.24 MiB..appis ad-hoc signed with hardened runtime and passescodesign --verify --deep --strict; the bundled app'scheckpasses and it reportsapp. The DMG is VALID underhdiutil verify.checkandupdate-statusok. The NSIS installer is 5.50 MiB. The portable copy reports no installer.verify-updaterefuses a forged signature.build-views --checkpassed.studio.test.mjspassed 241/241, twice.manifests_test.py: 15 checks, including the cask parsing as Ruby. The site script's checks pass on 8 fixtures (2 accepted, 6 refused).wfsteps.pyfound no problems. Name checks are clean.Not run:
webpki-root-certs1.0.9. It was bumped to 1.0.10 afterwards, which is 11 days old and the first release that fixes RUSTSEC-2026-0383. This PR's Windows leg is the first run with 1.0.10.For the owner (also in the desktop README)
cargo tauri signer generate -w ~/.tauri/wai-quantum-desktop.key. Put the.publine intauri.conf.jsonasplugins.updater.pubkey, and commit it.WAI_QUANTUM_DESKTOP_UPDATER_KEY(the.keyfile's text) andWAI_QUANTUM_DESKTOP_UPDATER_KEY_PASSWORD.APPLE_SIGNING_IDENTITY;APPLE_CERTIFICATEandAPPLE_CERTIFICATE_PASSWORD(a Developer ID.p12), unless the runner's keychain already holds the identity;APPLE_API_ISSUER,APPLE_API_KEYandAPPLE_API_KEY_P8, orAPPLE_ID,APPLE_PASSWORDandAPPLE_TEAM_ID.Windows Authenticode signing is not wired up.
🤖 Generated with Claude Code