Repository navigation
Conversation
Pull requests that can change the app now build only the unpacked app on Apple silicon and Linux and launch it with the same smoke test; making the installers took most of each desktop job. A pull request builds every installer when it changes the installer's shell fingerprint or how installers are made and tested. Pull requests that only touch docs, the site, tests or translations skip the desktop check. Desktop no longer builds on every push to main or branch: the nightly Desktop Dev workflow and Release still build and test every installer before publishing. CI runs once per pull request instead of once for the push and once for the pull request, and a single "CI passed" job can be required by branch rules.
Review fixes: - The desktop scope moves to scripts/desktop-scope.sh. It reads the changed files before classifying them, so a failed diff fails the job instead of reporting that nothing needs a desktop check. - Skills and the example paper ship with the app, Markdown included, so they get the quick check. A change to the smoke test builds every installer, since it also drives the AppImage, deb and Intel Mac runs. - Pushes to main get the quick check, so a bad merge shows within minutes instead of at the nightly build. - Release runs CI first (both Node versions, the site and pack checks) and publishes only after it passes; its own repeats of those checks go. - CI runs other than pull requests get a concurrency group of their own, so no commit on main is skipped while another run is pending.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Every pull request that touched
src/built and tested all six desktop installers on three platforms, then main built them again after the merge. A pull request waited about 14 minutes, gated by the macOS x64 job, which is also the one that flakes. Timing the jobs shows where that goes: in each desktop job, making the installers takes most of the build step (DMG + zip about 2.7 of 3.6 minutes on macOS arm64 and about 6 of 10 on x64; AppImage + deb about 3.2 of 3.7 on Linux). The smoke test only launches the unpacked app.Changes
Desktop (
desktop.yml) only builds and tests and never publishes. Withquick, it builds the unpacked app (npm run desktop:build -- --dir) on macOS arm64 and Linux and runs the same smoke test; otherwise it builds and tests every installer on all three platforms. Run workflow builds any branch, fully unless quick is checked.CI picks the desktop check from the changed files with
scripts/desktop-scope.sh:skills/andexamples/: none;scripts/desktop-layer.mjs, the rule the Dev channel uses for new installers: Electron, Node, Codex, production dependencies,desktop/), ordesktop-layer.mjs,check-desktop.mjs,check-desktop-linux.sh,desktop.yml).Pushes to main get at most the quick check, so a bad merge shows within minutes; the nightly build makes main's installers. The script reads the file list before classifying it, so a failed diff fails the job instead of skipping the desktop check.
Desktop Dev (
desktop-dev.yml, new) takes over the nightly build and thedesktop-devpublishing fromdesktop.yml, unchanged. Run on another branch, it now fails with a pointer to Desktop instead of building without publishing.Release runs CI (both Node versions, the site and pack checks) and the full desktop build, and publishes only after both pass. Its own repeats of typecheck, tests and i18n checks go. A tag pushed without a pull request is therefore still checked on Node 22. The
contents: writegrant to the desktop job goes too, because Desktop no longer has a publishing job.CI runs on pull requests, pushes to main and from Release. A branch with a pull request is checked once, not twice; a branch without one is not checked. The stale
codex/electron-desktoptrigger goes; that branch is fully merged.A new push to a pull request replaces its run. Every other run has its own concurrency group, so no commit on main is skipped.
Timeouts:
A
CI passedjob sums up the run (a skipped desktop check counts as passed), so branch rules can require one check.Testing
actionlint1.7.12 withshellcheck0.11.0: no problems in the changed files. One existing SC2016 note inrelease.yml's CHANGELOGawkis also on main.scripts/desktop-scope.shon the merge commits of the last 18 pull requests:desktop/) and Replace native selects with a managed list #32 (the smoke test). Show CJK text from fonts without a Unicode map in the PDF view #30's three-parent merge also lands here;test:uiline inpackage.json).skills/Markdown,examples/, asrc/change, atest:uiline;desktop/README.mdalone, docs + site, an empty commit;check-desktop.mjs, an Electron bump,desktop/main.ts, renamingdesktop/builder.cjsaway;none.desktop.yml) and passed on all three platforms;Review
Codex (gpt-6-astra, xhigh) and Claude (Opus 5.5, high) reviewed the first commit independently. Both found nothing that lets a regression reach npm, a release or the Dev channel without a full build. The second commit fixes what they did find:
Left as is: lockfile-only bumps of electron-builder's own dependencies and
package.jsonmetadata written into the deb change the installer without changing the fingerprint, so those pull requests get the quick check. The nightly and release builds still build those installers before anything is published.