Skip to content

fix(desktop): Windows, macOS and Linux release builds, PR coverage for them, release 0.21.1 - #1382

Merged
abrichr merged 7 commits into
mainfrom
monorepo/desktop-main-matrix
Oct 20, 2026
Merged

abrichr merged 7 commits into
mainfrom
monorepo/desktop-main-matrix

Conversation

@abrichr

@abrichr abrichr commented Oct 19, 2026

Copy link
Copy Markdown
Member

This prepares Desktop 0.21.1. Merging it starts that release, so the founder approves the merge. 0.21.0 (39112b7) was never published: main's desktop matrix failed on it (Packages run 39306955258), and the release gate requires that matrix to pass. The 0.21.1 changelog section says so.

Fixes

  1. Windows engine tests (job 118266645919): Git on Windows checks files out with CRLF, and the Cargo.toml and Cargo.lock version patterns in native_release.set_native_version required LF. So prepare_release.py raised "could not rewrite package version". The patterns now accept CRLF and keep each line's ending. A new test, test_prepare_works_on_a_crlf_checkout, converts every version file to CRLF, so the Linux lane catches this too. It fails without the fix.
  2. macOS sidecar and installers (jobs 118267947313, 118267947454): the lock had moved to pyobjc-core 12.2.2 and added pyobjc-framework-CoreMedia and -ScreenCaptureKit 12.2.2. None of these wheels ships a license file, and the reviewed records covered only 12.2.1. Three records now cover them; the check itself is unchanged.
    • License text: upstream's License.txt for all three at tag v12.2.2 (commit 38cdf73fc049ef2d176973eff4ac8d5c76b0a34b) is byte-identical to the vendored third_party/pyobjc/LICENSE.txt (MIT, SHA-256 0ca04b07…).
    • What each record pins: the source URL, the commit, the text hash, and the hash of the wheel's license metadata (MIT), as for 12.2.1.
    • README: third_party/README.md lists the new versions.
    • Local check: on this Mac, every installed distribution in the Desktop environment now has a notice source.
  3. Linux installer (job 118267947408): the real error isn't the apt retries. tauri-plugin-deep-link 2.6.2 builds rust-ini's ParseOption without the two fields rust-ini 0.21.3 added, so it doesn't compile on Linux. I took 2.6.2 in build(desktop): bump Tauri on the npm and cargo sides together; Dependabot leaves paired pins alone #1324, together with tauri-plugin-single-instance 2.5.4, which requires it.
    • Fix: both go back to the versions main built before (2.6.1 and 2.5.3). No npm package pairs with either.
    • Dependabot: the note in dependabot.yml now says to build the Linux installer before taking a Tauri plugin bump.

So this can't hide again

These jobs ran only on main. Now a pull request that touches Desktop also runs:

  • the Python engine tests on Windows (Python 3.12), next to the two Linux lanes;
  • the frozen sidecar build on macOS 14, which checks the PyObjC notices;
  • the Linux installer, when it changes src-tauri/, package.json or package-lock.json. This would have caught the deep-link failure.

The native-installer matrix is now built by the artifact-scope job: all four platforms on main and dispatch, and Linux only on a pull request. classify_build_changes.py takes a PR's changed paths from the merge commit's first parent. Its tests cover the new rule.

This PR changes src-tauri/Cargo.lock, so its own CI should run the Windows tests, the macOS sidecar and the Linux installer.

Tests

  • Local, on macOS: 145 passed across the release-intent, build-classifier, native-release, frozen-notice and metadata tests. ruff passes on the changed files.
  • The release-intent and version-consistency checks pass.
  • actionlint is clean on both workflows, and the scope step's matrix output was checked for PR and dispatch.
  • The name guard and gitleaks found nothing.
  • Not run locally: the Windows tests, the macOS sidecar and the Rust builds. This PR's CI runs them.

🤖 Generated with Claude Code

abrichr and others added 6 commits October 19, 2026 18:30
Git on Windows checks files out with CRLF, and the Cargo.toml and
Cargo.lock version patterns required LF, so prepare_release.py raised
"could not rewrite package version" and the Windows engine tests failed on
main (job 118266645919). The patterns now accept CRLF and keep each line's
ending. A new test converts every version file to CRLF, so the Linux lane
catches this too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The macOS sidecar and installer builds stopped with "pyobjc-core has no
concrete license/NOTICE file" (jobs 118267947313, 118267947454). The lock
moved pyobjc-core to 12.2.2 and added pyobjc-framework-CoreMedia and
-ScreenCaptureKit 12.2.2, and none of those wheels ships a license file,
while the reviewed records covered only 12.2.1.

Upstream's License.txt for all three at tag v12.2.2 (commit 38cdf73) is
byte-identical to the vendored third_party/pyobjc/LICENSE.txt (SHA-256
0ca04b07...), and each wheel's license metadata is the reviewed "MIT". The
records pin the source URL, commit, text hash and metadata hash per version,
as for 12.2.1. The check itself is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ell compiles

tauri-plugin-deep-link 2.6.2 builds rust-ini's ParseOption without the two
fields rust-ini 0.21.3 added, so the Linux installer failed to compile
(job 118267947408). #1324 took 2.6.2 with tauri-plugin-single-instance
2.5.4, which requires it. Both go back to the versions main built before
(2.6.1 and 2.5.3). The Dependabot note now says to build the Linux
installer before taking a plugin bump.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Three of main's desktop failures ran only on main, so no pull request could
catch them. A pull request that touches Desktop now also runs:
- the Python engine tests on Windows (Python 3.12);
- the frozen sidecar build on macOS 14, where the PyObjC notices are checked;
- the Linux installer, when it changes src-tauri/, package.json or
  package-lock.json.

The native matrix is now built by the artifact-scope job, so a pull request
can take only the Linux entry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d out CRLF

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@abrichr
abrichr merged commit 7206944 into main Oct 20, 2026
48 checks passed
@abrichr
abrichr deleted the monorepo/desktop-main-matrix branch October 20, 2026 00:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant