Upgrade every dependency: Electron 44 (macOS 13+), TypeScript 7, oxlint in place of ESLint - #86
Merged
Conversation
Moves the AWS SDK clients to 3.1115.0, Electron to 43.4.1, and uuid to 14.0.2, refreshing the lockfile along the way. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PqTrsu3jNY6xWecquJX1u5
typescript-eslint 8 throws outright on TS >= 7 rather than degrading, so it still needs the TS 6 compiler API. Install both through npm aliases — the arrangement the TypeScript team documents — so `tsc` is the TS 7 native compiler while `import "typescript"` resolves to TS 6. The emitted JavaScript and declarations are byte-identical to what TypeScript 6 produced; only the sourcemap mappings differ. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PqTrsu3jNY6xWecquJX1u5
checkout and setup-node to v7, and the Pages trio to configure-pages v6, upload-pages-artifact v5 and deploy-pages v5. checkout v7 only stops fork checkouts under pull_request_target and workflow_run, neither of which these workflows use, and setup-node v7 drops a dummy NODE_AUTH_TOKEN export that nothing here reads. The Pages bumps are runtime moves to Node 24 with the same inputs. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PqTrsu3jNY6xWecquJX1u5
0.7.18 exists to pull golang.org/x/net and golang.org/x/sys forward past their CVEs, and this binary ships inside the signed app and runs as the kubeconfig exec plugin, so it is worth having. Every checksum here was recomputed from the release assets and matches upstream's authenticator_0.7.18_checksums.txt; the same method reproduces the 0.7.16 pins it replaces. windows/arm64 keeps sharing the amd64 asset, which is still the only Windows build published. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PqTrsu3jNY6xWecquJX1u5
TypeScript 7's package exports version and versionMajorMinor from its main entry and nothing else - the TS 6 compiler API moved behind typescript/unstable/* in a different shape. So typescript-eslint's refusal to run on TS 7 is not something it can patch around, and every tool that does `import ts from "typescript"` needs a TypeScript 6 to keep working. typescript-eslint was the only such tool in the whole dependency tree, and oxlint parses TypeScript itself. Swapping the linter removes the reason the two-TypeScript alias existed, so typescript is a plain ^7 again. .oxlintrc.json pins the rule set rather than inheriting oxlint's categories: the 68 rules listed are exactly what js.configs.recommended plus tseslint.configs.recommended enforced, so CI gates on the same set as before and a new oxlint release cannot widen it. The only rule without an oxlint equivalent is no-octal, which is unreachable here because octal literals are a syntax error in an ES module and tsc rejects them first. Lint drops from 3.1s to 17ms, and the dev tree loses 26 packages. Type-aware rules are deliberately left off. They are available via oxlint --type-aware and would be a separate change: they currently report a dozen findings worth fixing on their own terms. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PqTrsu3jNY6xWecquJX1u5
AWS SDK clients to 3.1121.0 and js-yaml to 5.4.1, both in range. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PqTrsu3jNY6xWecquJX1u5
Chromium 152 and Node 24.18.1. None of 44's removals touch this app: it does not use the renderer clipboard module, app.isUnityRunning, setProgressBar/setBadgeCount, net.request or select-client-certificate, and the build matrix was already x64 and arm64 only, so dropping 32-bit Windows and armv7l changes nothing here. What does change is the floor: macOS 12 is gone. The in-place updater does not check the OS version before installing, so a Monterey machine would update itself into a build that will not launch. README.md and docs/docs/platforms.html now say so. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PqTrsu3jNY6xWecquJX1u5
popen2
force-pushed
the
claude/upgrade-dependencies-vulnerabilities-o3l7mq
branch
from
August 29, 2026 20:04
77e76cb to
13db29f
Compare
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.
Brings every dependency to its current release, including the majors that needed
breaking changes taken, and closes the one open advisory in the tree.
Electron 44 drops macOS 12, and Frost updates itself in place without checking
the OS version — a Monterey machine would update into a build that will not
launch.
README.mdanddocs/docs/platforms.htmlnow say so, but this is thepart worth a decision rather than a skim.
Nothing in
src/used the APIs Electron 44 removed (rendererclipboard,app.isUnityRunning,setProgressBar/setBadgeCount,net.request, theselect-client-certificatesignature), and the build matrix was already 64-bitonly, so the 32-bit Windows and armv7l removals are no-ops here. The OS floor is
the whole of the breaking change.
Why the linter changed
TypeScript 7's package exports
versionandversionMajorMinorfrom its mainentry and nothing else — the TS 6 compiler API moved behind
typescript/unstable/*in a different shape.typescript-eslintreadsversionMajorMinor, sees 7, and throws rather than crashing on a missingcreateSourceFile. That is not something it can patch around until the new APIstabilises, which is why its tracking issue targets TS 7.1.
So any tool doing
import ts from "typescript"pins the repo to TypeScript 6.Exactly one did —
typescript-eslint(plus its ownts-api-utils) was the onlyconsumer of the compiler API in the whole tree. oxlint parses TypeScript itself,
so swapping the linter removed the last reason to carry two TypeScripts, and
typescriptis a plain^7.0.2again.The config was a faithful port, not a fresh start.
.oxlintrc.jsonpins therule set —
categories.correctnessoff,pluginsjust["typescript"]— sothe 68 active rules are exactly what
js.configs.recommendedplustseslint.configs.recommendedenforced, and a future oxlint release cannotquietly widen what CI gates on. The one rule without an oxlint equivalent is
no-octal, which is unreachable here: octal literals are a syntax error in anES module, so
tscrejects them with TS1121 first.Lint drops from 3.1s to 17ms and the dev tree loses 26 packages.
Security
aws-iam-authenticator0.7.16 → 0.7.18, which exists to pullgolang.org/x/netand
golang.org/x/syspast their CVEs. This binary ships inside the signed appand runs as every user's kubeconfig
execplugin, so it is worth having. Allfive checksums were recomputed from the release assets and match upstream's
authenticator_0.7.18_checksums.txt; the same method reproduces the 0.7.16 pinsbeing replaced.
Everything else
checkoutandsetup-node→ v7, and the Pages trio toconfigure-pagesv6 /upload-pages-artifactv5 /deploy-pagesv5.checkoutv7 only blocks fork checkouts underpull_request_targetandworkflow_run, neither of which these workflows use;setup-nodev7 drops adummy
NODE_AUTH_TOKENexport nothing here reads.8.0.0-alpha.10— the newest 8.x.npm outdatedflags it only because stable
latestis 7.11.2, which would be a downgrade.Verified
From a clean
npm ci: build ok, lint ok,npm audit0 vulnerabilities. TheTypeScript 7 emit was diffed against TypeScript 6's and is byte-identical for
both
.jsand.d.ts; only sourcemapmappingsdiffer. oxlint was checked toactually gate — an injected violation exits 1 with the expected rules, a clean
tree exits 0.
Not verified locally, and what this CI run is for: the full
electron-forge makematrix, including macOS signing and notarization and the Windowsinstaller. Electron 44 is also days old, so its Chromium 152 behaviour in the
WebAuthn login window is worth a manual pass before cutting a release.
Deliberately left out
Type-aware lint rules are available (
oxlint --type-awarewithoxlint-tsgolint, which runs on TS 7) but stay off here to keep this diffreviewable. They currently report a dozen findings — mostly
no-floating-promises, plus two${err}template expressions insrc/aws-sso.tsandsrc/aws-eks.tsthat look like real bugs, sincedescribeErrorexists for exactly that and a non-Error throw stringifies to[object Object]in a user-facing message. Worth its own PR.Also left alone:
NODEJS_VERSIONstays at 22, and theglob@7/inflightdeprecation warnings persist because they come from
copyfilesandelectron-winstaller, both already at their latest published versions andcarrying no advisories.
Labelling: this branch is
claude/…, soautolabeler.yamlwill not labelit from the branch name and
version-resolverdefaults to patch. Given themacOS 13 floor, this likely wants
minorset by hand, plusdependenciesforthe changelog category.
🤖 Generated with Claude Code