wai-quantum-desktop 0.1.1: an app on an external drive updates itself, and one on a disk image does not #577

Closed
dcharlot wants to merge 1 commit from wai/quantum-desktop-0.1.1 into main
Owner

Replaces #573: the same change on top of #574, which moved the desktop's updater to 2.14.1 and zip to 9.2.2. Both touched the lockfile and the changelog, and every other check on #573 had passed.

The macOS app decided it was on its disk image by whether its path began with /Volumes. That is wrong in both directions, and this makes it ask the volume instead. The release of 0.1.0 found it: the runner's working folder is on an external drive, so the Apple silicon build failed its own update-status check.

Where the app runs Before Now
An external drive, /Volumes/Scratch/… "runs from its disk image"; never updates updates itself
A disk image mounted outside /Volumes "updates_itself":true, and could not says why not
A copy Gatekeeper translocated (read-only) "updates_itself":true, and could not says why not
/Applications updates itself updates itself

What changes

  • on_read_only_volume: the volume's read-only flag (statvfs, through rustix's safe call), on macOS. installed_by and updates_itself take the answer, so their tests state each case.
  • A test on a real read-only volume and a writable one, on macOS, and wai-quantum-studio.yml holds that it ran.
  • Version 0.1.1, in Cargo.toml, tauri.conf.json and the lockfile. The tag wai-quantum-desktop-v0.1.0 and its release stay as they are; nothing points to them, and 0.1.1 is the first version with installers for every platform.
  • rustix was already in the lockfile, at the same version.

Checked

  • On a real disk image: the released 0.1.0 x86_64 image, mounted read-only outside /Volumes on an Apple silicon Mac. The volume's flag reads read-only for the app inside it, and writable for an ordinary file. The 0.1.0 build run from there under Rosetta says "updates_itself":true, the bug in the second row.
  • macOS build host, on this branch: cargo tree -i zip gives zip 9.2.2 through tauri-plugin-updater 2.14.1. cargo test --locked --release, 20 passed, including a_read_only_volume_is_told_from_a_writable_one, only_a_copy_installed_by_its_own_installer_updates_itself and an_update_is_held_to_this_build_s_key_and_the_version_it_was_signed_for. cargo clippy --locked --release --all-targets -- -D warnings is clean.
  • Not run here: the 0.1.1 build on a mounted disk image, or a translocated copy. Those rows rest on the flag above. The next release's check runs the bundled app on the runner's external drive, which is the first row.
  • The public-name check is clean.

🤖 Generated with Claude Code

Replaces #573: the same change on top of #574, which moved the desktop's updater to 2.14.1 and `zip` to 9.2.2. Both touched the lockfile and the changelog, and every other check on #573 had passed. The macOS app decided it was on its disk image by whether its path began with `/Volumes`. That is wrong in both directions, and this makes it ask the volume instead. The release of 0.1.0 found it: the runner's working folder is on an external drive, so the Apple silicon build failed its own `update-status` check. | Where the app runs | Before | Now | |---|---|---| | An external drive, `/Volumes/Scratch/…` | "runs from its disk image"; never updates | updates itself | | A disk image mounted outside `/Volumes` | `"updates_itself":true`, and could not | says why not | | A copy Gatekeeper translocated (read-only) | `"updates_itself":true`, and could not | says why not | | `/Applications` | updates itself | updates itself | ## What changes - `on_read_only_volume`: the volume's read-only flag (`statvfs`, through `rustix`'s safe call), on macOS. `installed_by` and `updates_itself` take the answer, so their tests state each case. - A test on a real read-only volume and a writable one, on macOS, and `wai-quantum-studio.yml` holds that it ran. - Version 0.1.1, in `Cargo.toml`, `tauri.conf.json` and the lockfile. The tag `wai-quantum-desktop-v0.1.0` and its release stay as they are; nothing points to them, and 0.1.1 is the first version with installers for every platform. - `rustix` was already in the lockfile, at the same version. ## Checked - **On a real disk image:** the released 0.1.0 x86_64 image, mounted read-only outside `/Volumes` on an Apple silicon Mac. The volume's flag reads read-only for the app inside it, and writable for an ordinary file. The 0.1.0 build run from there under Rosetta says `"updates_itself":true`, the bug in the second row. - **macOS build host, on this branch:** `cargo tree -i zip` gives `zip` 9.2.2 through `tauri-plugin-updater` 2.14.1. `cargo test --locked --release`, 20 passed, including `a_read_only_volume_is_told_from_a_writable_one`, `only_a_copy_installed_by_its_own_installer_updates_itself` and `an_update_is_held_to_this_build_s_key_and_the_version_it_was_signed_for`. `cargo clippy --locked --release --all-targets -- -D warnings` is clean. - **Not run here:** the 0.1.1 build on a mounted disk image, or a translocated copy. Those rows rest on the flag above. The next release's check runs the bundled app on the runner's external drive, which is the first row. - The public-name check is clean. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
wai-quantum-desktop 0.1.1: an app on an external drive updates itself, and one on a disk image does not
All checks were successful
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 14s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (pull_request) Successful in 12s
WAI energy receipts / does this change touch it (pull_request) Successful in 14s
wai-quantum docs, course and locales / does this change touch it (pull_request) Successful in 9s
wai-quantum studio and desktop / does this change touch it (pull_request) Successful in 13s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 4m35s
wai-quantum studio and desktop / desktop app · windows (pull_request) Successful in 10m20s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 3m33s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 16m27s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (pull_request) Successful in 29s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (pull_request) Successful in 2m36s
wai-quantum docs, course and locales / the Studio's words in every locale · linux (pull_request) Successful in 10s
wai-quantum docs, course and locales / the course and the command line's languages · linux (pull_request) Successful in 2m16s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 3m55s
wai-quantum studio and desktop / desktop app · linux (pull_request) Successful in 5m51s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 35m58s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 14m13s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (pull_request) Successful in 21m13s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 13m38s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 14m36s
e7cce0baaf
The macOS app took any path under /Volumes to be its disk image. An app on an
external drive never updated, and a disk image mounted elsewhere, or a copy
Gatekeeper translocated, said it would update itself and could not. It now reads
the volume's read-only flag. The release of 0.1.0 found this: the runner works on
an external drive, so the Apple silicon build failed its own update-status check.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
dcharlot closed this pull request 2026-11-02 13:07:36 -05:00
All checks were successful
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 14s
WAI breaking changes and the conformance runner / WAI breaking · does this change touch WAI (pull_request) Successful in 12s
WAI energy receipts / does this change touch it (pull_request) Successful in 14s
wai-quantum docs, course and locales / does this change touch it (pull_request) Successful in 9s
wai-quantum studio and desktop / does this change touch it (pull_request) Successful in 13s
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 4m35s
wai-quantum studio and desktop / desktop app · windows (pull_request) Successful in 10m20s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 3m33s
WAI energy receipts / energy receipts · macos (pull_request) Successful in 16m27s
WAI breaking changes and the conformance runner / WAI breaking · wire, record and API against main · linux (pull_request) Successful in 29s
WAI breaking changes and the conformance runner / WAI breaking and conform · their tests, and the independent verifiers through wai conform · linux (pull_request) Successful in 2m36s
wai-quantum docs, course and locales / the Studio's words in every locale · linux (pull_request) Successful in 10s
wai-quantum docs, course and locales / the course and the command line's languages · linux (pull_request) Successful in 2m16s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 3m55s
wai-quantum studio and desktop / desktop app · linux (pull_request) Successful in 5m51s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 35m58s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 14m13s
wai-quantum docs, course and locales / every command and snippet in the docs · linux (pull_request) Successful in 21m13s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 13m38s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 14m36s

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Transaction-Science/open-standards!577
No description provided.