Menu

#500 fix(ci): unbreak the staging Windows installer and updater manifest

closed
nobody
None
2026-07-20
2026-07-20
Anonymous
No

Originally created by: Akarsh-Hegde

The context

Staging's windows-release job has never succeeded - three failures, zero passes:

29734394528  failure
29727265408  failure
29698684026  failure

[#490] fixed the tray build, which let run 29734394528 reach a second, older bug for the first time. This is not a regression from the parallel-build restructure (#494); that work only made the failure reachable.

Fault 1 - the script died on its own success message

merge-windows-updater.py prints a , and Python on windows-latest defaults stdout to the cp1252 console codepage, which cannot encode it:

UnicodeEncodeError: 'charmap' codec can't encode character '✓' in position 0

The timing is what made it costly. The exception landed after the merged manifest was written but before the caller could gh release upload it - so the merge accomplished nothing, latest.json shipped with no windows-x86_64 key, and Windows could not auto-update. A success message failed the step it was reporting success from.

The error paths were worse. in die() plus em-dashes in three of its messages meant any of this script's safety checks - the ones guarding against a Windows-side bug corrupting macOS auto-update - would surface as a traceback instead of the explanation it was trying to give, at exactly the moment someone needed to read it.

All output is ASCII now. The workflow also sets PYTHONIOENCODING: "utf-8" so the class cannot return via some future character.

Fixed in the script, not just the caller: production's windows-release runs this same script and would have hit the identical failure the moment its own build started passing. That is now pre-empted rather than waiting to be discovered on the customer branch.

Fault 2 - the installer carried the wrong version

v1.72.0-staging.5 produced Meridian_1.71.0_x64-setup.exe.

The job checks out the release tag, and on staging that tag points at a tree where the version was never committed: .releaserc.staging.json has no @semantic-release/git plugin, so the stamped manifests exist only in the macOS runner's working tree and die with it.

The consequence is a loop, not just a cosmetic mismatch: the manifest advertises 1.72.0-staging.5, a Windows app updates, the installed app reports 1.71.0, the updater sees the same update still pending, and it goes round again.

The job now runs set-version.sh before building. Production is unaffected - its config does carry the git plugin, so its tag points at the version-bump commit and the tree is already stamped. Verified:

v1.72.0-staging.5 -> tauri.conf.json says 1.71.0   (unstamped)
v1.73.0           -> tauri.conf.json says 1.73.0   (stamped)

Verified

  • [x] Merge script happy path: writes windows-x86_64, darwin entries byte-identical afterwards
  • [x] Error path prints its real message and exits 1, no traceback
  • [x] Workflow YAML parses; Stamp the version is ordered before the build

Why this matters beyond staging

This is the third distinct Windows fault found in one day (the cfg-gating in [#490], then these two). Every one was invisible until the fault ahead of it was cleared. Worth treating the next green Windows run as the first real signal, not a formality - and it is the gate on [#499], the production port.

🤖 Generated with Claude Code

Related

Tickets: #490
Tickets: #495
Tickets: #499
Tickets: #504

Discussion

  • Anonymous

    Anonymous - 2026-07-20

    Originally posted by: coderabbitai[bot]

    [!IMPORTANT]

    Review skipped

    Auto reviews are disabled on base/target branches other than the default branch.

    Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.


    ⚙️ Run configuration

    Configuration used: Organization UI

    Review profile: ASSERTIVE

    Plan: Pro Plus

    Run ID: a08b08cd-9fb5-4d19-9597-3bc766ccf6c2

    You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

    Use the checkbox below for a quick retry:
    - [ ] 🔍 Trigger review

    ✨ Finishing Touches
    🧪 Generate unit tests (beta) - [ ] Create PR with unit tests - [ ] Commit unit tests in branch `fix/staging-windows-installer`

    Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

    ❤️ Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

    Comment @coderabbitai help to get the list of available commands.

     
  • Anonymous

    Anonymous - 2026-07-20

    Ticket changed by: Akarsh-Hegde

    • status: open --> closed
     

Log in to post a comment.