Skip to content

chore: back-merge main + bump version to 4.2.11 (unblocks release PR #1006) - #1007

Merged
thiagoralves merged 29 commits into
developmentfrom
chore/back-merge-main-into-development
Aug 11, 2026
Merged

chore: back-merge main + bump version to 4.2.11 (unblocks release PR #1006)#1007
thiagoralves merged 29 commits into
developmentfrom
chore/back-merge-main-into-development

Conversation

@thiagoralves

@thiagoralves thiagoralves commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Two changes that both need to land on development before release PR #1006 can merge correctly.


1. Back-merge main — unblocks #1006

#1006 (developmentmain, 4.2.11) is approved with all checks green but cannot merge: GitHub reports mergeStateStatus: BEHIND. main's protection sets required_status_checks.strict: true ("require branches to be up to date") with enforce_admins: true, so it cannot be clicked through.

development was 124 commits ahead of main but also 27 commits behind it — the merge commits GitHub created on main for every past release PR (#459#964, plus the v4.2.10 merge), plus two CI hotfixes committed directly on main.

A PR with head: main would not work: development's protection is also strict, so such a PR would itself be BEHIND. Hence this branch, which contains development's tip and merges main into it.

The one real content change is .github/workflows/release.yml (+28/-2): the windows-2022 pin for both Windows release jobs (35d8b90, 6c86e0b). That pin was a direct hotfix on main and never reached development, which still had both jobs on runs-on: windows-latest. It works around VS 2026's vswhere output overflowing node-gyp's stdout buffer (ERR_CHILD_PROCESS_STDIO_MAXBUFFER), which breaks the ARM64 cross-compile of @serialport/bindings-cpp.

Merging #1006 without this back-merge would have reverted the pin on main and broken the v4.2.11 Windows ARM64 release build. No conflicts — verified with git merge-tree --write-tree beforehand, and the real merge touched only that file.

2. Version bump to 4.2.11

Carried here so #1006 promotes the correct version to main rather than needing a second PR after the tag.

File 4.2.10 → 4.2.11
src/frontend/data/constants/app-version.ts APP_VERSION — what the About modal renders
package.json what electron-builder stamps, and what the v4.2.11 tag must match

Shipping only the package.json half is what left About showing 4.2.6 on the 4.2.7 and 4.2.8 releases, so both move together.

Other 4.2.10 occurrences in the tree are deliberately untouched — they are semver-comparison fixtures in semver.test.ts / runtime-version-gate.test.ts using it as an arbitrary version, not the app version.

Mirror gate

APP_VERSION lives under src/frontend/, so sync / Shared Surface Sync byte-compares it against openplc-web. The identical edit is in Autonomy-Logic/openplc-web#667 (base development).

Verified locally: app-version.ts is byte-identical across both branches (matching md5) and compare-surfaces.py reports match: True, total_diffs: 0.

The sync gate compares against web at pull_request.base.ref, then — on mismatch — passes if an open web PR targeting that same base makes the surfaces match. So this PR's sync check is satisfied by web#667 while it is still open, and fully satisfied once it merges.

Merge order

  1. web#667 → web development
  2. this PR → editor development
  3. Release 4.2.11 #1006 leaves BEHIND, checks re-run, merge it
  4. tag v4.2.11 on editor main

⚠️ Before step 3, a web developmentmain PR must be open (or merged), otherwise #1006's own sync check compares editor development at 4.2.11 against web main at 4.2.10 and fails. See the note on #1006.

Follow-up

This BEHIND gap is structural: nothing in the release ritual merges main back down, so it recurs every release. Either add a back-merge step after each promotion or automate it.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Bug Fixes

    • Improved Windows release build reliability by pinning build jobs to a stable runner version.
    • Prevented build failures associated with newer Windows runner environments.
  • Release

    • Updated the application and package version to 4.2.11.

thiagoralves and others added 28 commits December 3, 2025 10:21
Release v4.2.1 — File → Open menu fix
Release v4.2.2 — alias-architecture rollup + transpiler toggle
…Buffer bug)

v4.2.2's release run failed only on the Windows-ARM64 job with:

  gyp ERR! find VS Failure details: RangeError [ERR_CHILD_PROCESS_STDIO_MAXBUFFER]
  Error: Could not find any Visual Studio installation to use
  node-gyp failed to rebuild '@serialport/bindings-cpp'

Direct comparison of runner images between releases:

  v4.2.1 (Jun 7, SUCCESS): Image: windows-2025                    (VS 2022)
  v4.2.2 (Jun 8, FAILURE): Image: windows-2025-vs2026              (VS 2026)

Same Windows Server 2025 OS, different Visual Studio version.
`windows-latest` rotated forward to the `windows-2025-vs2026` image
variant on Jun 8.  VS 2026's `vswhere`/PowerShell enumeration emits
enough metadata that the child_process stdout read in node-gyp's
VS-finder overflows its 200 KB default buffer with `RangeError
[ERR_CHILD_PROCESS_STDIO_MAXBUFFER]`.  node-gyp then reports
"Could not find any Visual Studio installation," even though VS 2026
is fully installed on the runner.

The ARM64 cross-compile of `@serialport/bindings-cpp` is the only
path that hits this in the current build — Windows-x64 succeeded on
the same v4.2.2 run because its native (non-cross-compile) build
invokes a simpler node-gyp code path that doesn't enumerate VS the
same way.  Re-running the failed Win-ARM64 job reproduces
deterministically; not a flake.

This commit pins BOTH Windows jobs to `windows-2025` (the image
that produced v4.2.0 / v4.2.1 successfully).  Defensive: the
Win-x64 job worked on `windows-latest = windows-2025-vs2026` today
but the underlying VS 2026 maxBuffer issue could trip it on a
future runner rotation (a fresh node-gyp/electron-builder release,
a different native module, etc.).  Pinning both today is cheaper
than debugging the same class of failure again in a few months.

When node-gyp / electron-builder ship a fix for the VS 2026
maxBuffer issue we can revert both to `windows-latest`.

The tag `v4.2.2` will need to be re-cut to a commit that includes
this workflow file — release workflow files are resolved at the
tag's commit, so re-running the existing failed workflow would use
the same (broken) workflow definition.  Plan: land this on main,
force-update v4.2.2 to the new merge commit, push the tag.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ci(release): pin Windows runners to windows-2025 (VS 2026 maxBuffer bug)
…no longer means VS 2022)

The previous pin to `windows-2025` did not help — GitHub has rebound
the `windows-2025` label to the `win25-vs2026` runner-images branch
(VS 2026), same as `windows-latest`.  Verified by an explicit
`runs-on: windows-2025` resolving to `Image: windows-2025-vs2026`
in the v4.2.2 re-cut release run and failing identically with the
same maxBuffer error.

v4.2.1's successful build ran on `Image: windows-2025` AT A TIME
when that label pointed at the `win25` branch (with VS 2022).  That
branch is no longer reachable via a runner label — only
`windows-2022` (Windows Server 2022 + VS 2022) still ships VS 2022
on a GitHub-hosted image.

The pin moves both Windows jobs to `windows-2022`.  This is a more
conservative environment (older Windows OS too, not just older VS)
but it's the only GitHub-supported label that avoids VS 2026's
`vswhere`/PowerShell-output maxBuffer overflow on node-gyp's VS
finder.

When node-gyp / electron-builder ship a fix for the VS 2026 issue
we can revert to `windows-latest`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ci(release): pin Windows runners to windows-2022 (the previous pin to windows-2025 didn't help)
release: promote development to main (v4.2.4)
release: development → main (v4.2.6)
Release v4.2.7: USB-CDC Modbus framing fix + OPC-UA canonical contract
release(desktop): 4.2.8 — location-warning + alias-clear fix
Promote development → main (shared-surface parity, no desktop release)
Promote development → main (APP_VERSION 4.2.8 parity)
Promote development → main (idle re-trigger parity)
Release 4.2.9 (re-cut) — byte IEC locations + %MX fix
`main` carried 27 commits that never came back down to `development`:
the merge commits GitHub created for every past release PR, plus two
CI hotfixes committed directly on `main`.  That left `development`
BEHIND `main`, and `main`'s protection has "require branches to be up
to date" with admin enforcement — so release PR #1006 could not merge.

The only file with real content to bring back is
`.github/workflows/release.yml`: the `windows-2022` pin for both
Windows release jobs (35d8b90, 6c86e0b) was a direct hotfix on
`main` and never reached `development`, which still had both jobs on
`windows-latest`.  Merging #1006 without this back-merge would have
reverted the pin and broken the v4.2.11 Windows ARM64 build on VS
2026's node-gyp maxBuffer bug.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

The release workflow pins Windows x64 and ARM64 build jobs to windows-2022. The package version and frontend APP_VERSION constant change from 4.2.10 to 4.2.11.

Changes

Release updates

Layer / File(s) Summary
Pin Windows build jobs
.github/workflows/release.yml
The Windows x64 and ARM64 jobs now use windows-2022. Comments document Visual Studio and node-gyp failure conditions.
Update release version
package.json, src/frontend/data/constants/app-version.ts
The package version and exported APP_VERSION constant change to 4.2.11.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

Suggested reviewers: joaogsp

Poem

A rabbit checks the release track,
Windows runners stay safely back.
The version hops to 4.2.11,
Builds follow a stable path to heaven.
Hop, hop, the release is set!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly identifies the back-merge, version bump, and release PR it unblocks.
Description check ✅ Passed The description clearly explains the back-merge, workflow pin, version bump, validation, merge order, and follow-up, but omits the template checklist.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/back-merge-main-into-development

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

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

Gustavohsdp
Gustavohsdp previously approved these changes Aug 11, 2026
Carried into the release PR itself so #1006 promotes the correct
version to `main`, instead of needing a second PR after the fact.

`APP_VERSION` is the single source of truth the About modal renders,
and is byte-compared against openplc-web by the mirror gate — the
identical edit lands there in Autonomy-Logic/openplc-web#667.
`package.json.version` is what electron-builder stamps on the desktop
binary and what the `v4.2.11` tag must match, so it is kept equal.

Shipping only the package.json half is what left About showing 4.2.6
on the 4.2.7 and 4.2.8 releases.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@thiagoralves thiagoralves changed the title chore: back-merge main into development (unblocks release PR #1006) chore: back-merge main + bump version to 4.2.11 (unblocks release PR #1006) Aug 11, 2026
@thiagoralves thiagoralves mentioned this pull request Aug 11, 2026

@Gustavohsdp Gustavohsdp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved — release plumbing, CI green.

Checked the one thing that matters here per CLAUDE.md: APP_VERSION and package.json.version are both 4.2.11, so the About dialog won't lag the binary the way 4.2.7/4.2.8 did.

Reminder for the release: package.json.version needs the same value in openplc-web, and the tag v4.2.11 goes on the editor's main to trigger the build.

@thiagoralves
thiagoralves merged commit 32e46b8 into development Aug 11, 2026
13 checks passed
@thiagoralves
thiagoralves deleted the chore/back-merge-main-into-development branch August 11, 2026 19:42
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.

3 participants