Duplicate @types/react TypeScript error (package.json, pnpm-lock.yaml)
What: Added "pnpm": { "overrides": { "@types/react": "18.3.12" } } to the root package.json.
Why: @types/react-dom@18.3.1, @types/hoist-non-react-statics, and @types/styled-jsx all declare @types/react:
"" as a plain dependency. With yarn this was resolved by the resolutions field. With pnpm, resolutions is
ignored — pnpm only reads pnpm.overrides. Without the override, each of those packages resolved "" to the
latest @types/react@19.1.2 and nested it under their own node_modules/. TypeScript then saw two incompatible
definitions for the same React types simultaneously, producing the TS2344: Type 'C' does not satisfy the
constraint 'ComponentType' error in react-redux/es/types.d.ts.
The nested @types/react@19.1.2 directories were also stale artifacts from pre-override installs — pnpm's
--force flag reinstalls packages but does not scrub orphaned nested node_modules subdirectories. They were
removed manually, and the pnpm.overrides prevents them from reappearing on future installs.
Cannot find module 'execa' crash at app startup (app/package.json, app/session.ts)
What: Upgraded shell-env from 3.0.1 to 4.0.3, added execa@5.1.1 as a direct app dependency, removed
os-locale@5.0.0, replaced its one usage with Intl.DateTimeFormat().resolvedOptions().locale, and updated the
shellEnv.sync() call to the new named export shellEnvSync.
Why: This was a layered problem rooted in how electron-builder packages the app when using pnpm.
electron-builder builds the asar by walking pnpm's flat (hoisted) node_modules dependency tree. When two
packages need incompatible major versions of the same dependency, pnpm cannot hoist both — it puts the
minority version in a nested node_modules/ inside the requiring package's directory. electron-builder's pnpm
integration only scans the flat level; it emits "dependency not found on disk" for anything nested, and those
nested packages are silently excluded from the asar.
shell-env@3.0.1 needed execa@^1.0.0. The hoisted top-level was execa@4.1.0. So pnpm nested execa@1.0.0 under
node_modules/shell-env/node_modules/execa/. electron-builder missed it. At runtime, require('shell-env') →
require('execa') → crash, even on macOS where the shellEnv.sync() call is never actually reached (the import
itself triggers the error).
Upgrading shell-env to 4.0.3 alone would have just shifted the nesting from execa@1 to execa@5 (since 4.0.3
uses ^5.1.1). And os-locale@5.0.0 used ^4.0.0, which would then become the nested one instead. There is no
version of either package where both use the same execa major, so they can't both be hoisted simultaneously.
The fix makes execa@5.1.1 the explicit top-level dependency. shell-env@4.0.3 (needs ^5.1.1) is satisfied
without nesting. os-locale is removed entirely and its one call site replaced with
Intl.DateTimeFormat().resolvedOptions().locale, which returns the same locale string from a V8 built-in — no
execa chain at all.
CI frozen-lockfile failure inside electron-builder install-app-deps (app/.npmrc)
What: Added frozen-lockfile=false to app/.npmrc.
Why: target/ is the electron-builder app directory and is fully gitignored. That means target/pnpm-lock.yaml
is never committed. In CI, pnpm automatically enables frozen-lockfile=true when it detects CI=true in the
environment — this applies to every pnpm invocation in the process tree, including child processes.
The postinstall sequence is: webpack copies app/ to target/ → electron-builder install-app-deps runs pnpm
install inside target/. Because app/.npmrc contains ignore-workspace=true, pnpm treats target/ as a standalone
project rather than part of the workspace, and looks for a target/-local lockfile. On a fresh CI checkout
there is none. With frozen-lockfile=true inherited from the CI environment, pnpm refuses to generate one and
exits with ERR_PNPM_OUTDATED_LOCKFILE.
Locally this was invisible because target/pnpm-lock.yaml accumulated from previous runs and was simply reused.
Adding frozen-lockfile=false to app/.npmrc (which webpack copies to target/.npmrc) overrides the CI
environment default specifically for the target/ context, allowing pnpm to generate a fresh lockfile on each
CI run.
app/session.ts locale — removal of os-locale
Already covered under point 2, but worth noting separately: osLocale.sync() was the only call site.
Intl.DateTimeFormat().resolvedOptions().locale is a direct replacement — it returns the OS locale (e.g. en-US)
in the same format, available in all modern Node/Electron versions with no external dependencies. The
.replace(/-/, '_') transforms it to POSIX LANG format (en_US) exactly as before.
* Add troubleshooting
* fix(cli-install): lazy-require native-reg to fix TS error on non-Windows
native-reg is a Windows-only optional dependency that can't be resolved
at compile time on macOS/Linux. Move the require() inside addBinToUserPath
and add an explicit platform guard that rejects early before the Promise
is constructed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* chore(deps): pin electron-link to quine-global v0.7.0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Fix devtools patch
* Fix type error
* fix(snapshot): avoid npm_config_arch polluting node-gyp-build on cross-arch builds
electron-link depends on classic-level (via node-gyp-build), which reads
npm_config_arch to select its native prebuild. Setting npm_config_arch=arm64
on an x64 host caused it to dlopen the arm64 .node binary, crashing the
v8 snapshot build. Switch to a dedicated SNAPSHOT_TARGET_ARCH env var that
only mk-snapshot.js and cp-snapshot.js read, keeping npm_config_arch unset.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Fix type error
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
select upgrades:
* Bumps xterm from 5.3.0 to 5.4.0
* Bumps xterm-addon-canvas from 0.5.0 to 0.6.0
* Bumps xterm-addon-fit from 0.8.0 to 0.9.0
* Bumps xterm-addon-image from 0.5.0 to 0.7.0
* Bumps xterm-addon-ligatures from 0.7.0 to 0.8.0
* Bumps xterm-addon-search from 0.13.0 to 0.14.0
* Bumps xterm-addon-unicode11 from 0.6.0 to 0.7.0
* Bumps xterm-addon-web-links from 0.9.0 to 0.10.0
* Bumps xterm-addon-webgl from 0.16.0 to 0.17.0
Signed-off-by: Philip Peterson <philip-peterson@users.noreply.github.com>
* 3.0.0
* 3.0.2
* Save
* Save
* Upgrade yarn lock packages
* update node-gyp and node-pty
* update travis and appveyor to node 12
* appveyor is outdated as always
* update travis to xenial
* update node-pty@0.9.0-beta26
* update yarn.lock
* update electron to 6.0.8
* move node-pty to the correct package.json
* Fix linting failure
* Update yarn lockfile to try to fix appveyor build
* Remove unnecessary changes from package.json
* Try to fix appveyor by using a newer image
* Fix linting after my last change
* update electron to 6.0.9
* install windows-build-tools on appveyor
* fix syntax
* switch back to 2017 image
* remove old resolutions field
* revert accidental version change
* update electron to 6.0.11 and electron-rebuild to 1.8.6
* downgrade yarn to 1.18
until this issue is resolved https://github.com/yarnpkg/yarn/issues/7584
* update node-gyp to 6.0.0 and generate a fresh yarn lockfile
* update react and a few other dependencies
* fix lint
* this should actually be electron-builder, I think!
* update a few dependencies
* change to electron-store
electron-config was renamed to electron-store a while ago
* update xterm to v4.1.0 and ora to 4.0.2
* move pify to app/package.json
* TODO: Revert maybe. Throw a fit on every change to maybe fix the resizing issues
* a
* fix react ref problem
* fix split view focus problem
* remove the unnecessary fit
* remove the init col and row
* fix the problem that cannot show about hyper
* update electron to 6.0.12
* fix lint
* add more todos for componentWillReceiveProps deprecation
* update babel and plugins
Co-authored-by: Juan Campa <juancampa@gmail.com>
Co-authored-by: Benjamin Staneck <staneck@gmail.com>
Co-authored-by: ivan <ivanwonder@outlook.com>
* update xterm to 4
* add back webGL addon
* remove ligatures xterm addon, unused atm and does not work with webGL renderer
* update node-pty
* more work on trying to get xterm4 to work
* update xterm to 4.0.2
* move where xterm addon props are assigned
* more updates
* only load webgl addon if webgl is enabled
* fix search function
* remove rendererType setting, the xterm addon does this for us
* use xcode 10.3 on circleci
* fix typo
* revert node-pty bump for now
* use stable versions of the xterm plugins
* fix focus listener
* add windowsMode prop
* move webGL check
* apply tweaks by @GitSquared
* fix resizing issue
* Revert "fix resizing issue"
This reverts commit fce3780b038d69378f63bdfbfa613f20130fad34.
* apply review suggestions
* change so all addons have separate instances for each terminal
* update yarn-standalone to 1.19
* fix resize problem of split view
by @ivanwonder
* apply review feedback
* fix lint
* add name and version to package.json
* address review feedback
* more review feedback