chore(deps): electron 44, verified where CI cannot see - #39
Merged
Conversation
`npm audit` flags electron <= 40.10.2 as high, and extract-zip underneath it, so
staying on 33 was not the free option it looks like. This clears both: audit is
at zero.
Eleven majors of window behaviour for an overlay app is not a rubber stamp,
though, and green CI proves less here than it appears to. startInputHook() wraps
`require('uiohook-napi')` in a try/catch with a retry. That is right at runtime,
because a machine without Accessibility permission should still get a pet, and
misleading during an upgrade: a native module that fails to load under a new ABI
leaves an app that boots, renders, passes every test, and has quietly stopped
reacting to typing and scrolling. `npm run test:boot` cannot catch it, because a
pet that never kneads still draws a perfectly good frame.
So the check is now a thing you can run: `npm run check:hook` loads the module
inside the main process, checks the API surface, calls start(), waits for the
hook thread to fall over on its own, and stops. On 44 (ABI 149, Node 24.18.1) it
loads, starts and stops clean. It stays out of CI on purpose, since a headless
Linux runner has no input to hook and a macOS runner cannot grant itself the
Accessibility permission, so it would fail for reasons that say nothing about
the upgrade.
Also verified locally: 214 tests, lint, `npm run test:boot`, and `npm run pack`
producing a Windows build against 44 and electron-builder 26.15.3.
What is left is the part no script can see, and it needs eyes on a desktop:
always-on-top over a fullscreen window, clicks passing through to what is
underneath, the tray menu, and the same on macOS Spaces. Nothing ships from this
commit either way, since releases are cut from a tag, not from main.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
Supersedes #37. Same bump, plus the verification that bump actually needs.
Why not just merge #37
npm auditflagselectron <= 40.10.2high, andextract-zipunderneath it, so staying on 33 was not free. But green CI proves less here than it looks:That try/catch is correct at runtime (a machine without Accessibility permission should still get a pet) and misleading during an upgrade. A native module that fails to load under a new Electron ABI leaves an app that boots, renders, passes every test, and has silently stopped reacting to typing and scrolling.
npm run test:bootcannot catch it, because a pet that never kneads still draws a perfectly good frame.So the check is now a script
npm run check:hook(new,scripts/hook-check.js) runs inside the main process, loadsuiohook-napi, checks the API surface, callsstart(), waits for the hook thread to fall over on its own, and stops.{ "electron": "44.0.0", "node": "24.18.1", "abi": "149", "loaded": true, "api": true, "started": true, "stopped": true } input hook OKDeliberately not in CI: a headless Linux runner has no input to hook, and a macOS runner cannot grant itself Accessibility, so it would fail for reasons that say nothing about the upgrade. Run it when the Electron major changes.
Verified locally
npm run check:hookpasses on 44 (this is the one that mattered)npm test214 pass / 4 skipped (POSIX-shell iPad tests, which run on the Linux CI job)npm run lintcleannpm run test:bootrenders under 44npm run packbuilds a Windows package against 44 + electron-builder 26.15.3npm auditnow reports 0 vulnerabilitiesWhat still needs eyes
No script can see window layering. Worth two minutes on the desktop after merge: overlay stays above a fullscreen window, clicks pass through to what is underneath, typing still kneads, scrolling still climbs, tray menu opens. Nothing ships from this either way, since releases are cut from a tag rather than from main, so a revert is free if anything looks off.