Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

fix(macos): update Electron for native Golden Gate window controls - #8216

Open
amilajack wants to merge 2 commits into
vercel:canaryfrom
amilajack:fix/macos-electron-45
Open

amilajack wants to merge 2 commits into
vercel:canaryfrom
amilajack:fix/macos-electron-45

Conversation

@amilajack

@amilajack amilajack commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Hyper's old Electron runtime and native light appearance on dark terminal themes leave its macOS traffic lights looking out of place on Golden Gate. Update to Electron 45.0.0 and derive native macOS appearance from the focused terminal background, including live theme changes. Native hiddenInset controls, transparency, plugin window decoration, and the 76-point header reservation are preserved.

This also installs Electron's binary explicitly, generates version-matched snapshots, updates Node 24 native-module tooling, migrates clipboard operations through the existing main-process remote bridge, and updates the 64-bit CI matrix. node-pty 1.1.0 already contains the pipe-cleanup behavior preserved by Hyper's previous patch.

Verification

  • Fresh generated directories: pnpm install --frozen-lockfile passed with Node 24.14.1 / pnpm 10.33.0.
  • pnpm run verify passed, including the installed pre-commit hook: formatting/lint, 12 unit tests, production build and TypeScript compilation. A deliberate syntax error blocked a commit and left HEAD unchanged; no hooks were bypassed. Existing pre-push tests remain enabled.
  • Local Apple Silicon DMG built and launched on macOS 27.0.1 (26A434), reporting Electron 45.0.0 / embedded Node 24.22.0. This development package is unsigned and unnotarized.
  • Packaged Playwright suite: all 3 tests passed, including hidden windows and live native light/dark appearance changes without a test override.
  • Packaged terminal input, resizing, text paste, copy-on-select, native file-path paste, multiple tabs, and shell cleanup passed. Single/multiple-tab renderer bounds clear the native controls without a spacing change.
  • Packaged native window API checks for minimize/restore, enter/leave fullscreen and close passed. Manual review accepted the actual packaged native dark appearance.

Native-control evidence and limits

Before: Hyper / Electron 22 After: Electron 45 native-control reproduction
Hyper before Electron 45 reproduction after

The after desktop crop is explicitly from the terminal-free reproduction using the production appearance helper. Desktop automation blocks co.zeit.hyper, so direct packaged-window after captures and native-button pointer/hover checks remain unverified. Renderer screenshots do not include native chrome. See the verification record and reproducible capture command.

Tab close can still expose xterm's existing canvas disposal exception (onRequestRedraw on an undefined renderer). A minimal disposal reproduces the same exception on both Electron 22.3.25 and 45.0.0; shell termination succeeds. This unrelated implementation is unchanged, and the functional run is not represented as free of renderer exceptions.

Upstream Node CI has not created a run for PR head 303ac1493cf0cf299970a2471396900cebf404a9 (Actions API check). Windows/Linux/Intel macOS builds therefore remain unverified. Repository Actions-policy inspection returns HTTP 403 to this account, so maintainer assistance is needed to check why the matrix has not started. Socket dependency scans passed; the internal security review concluded neutral. These provider results are separate from the passing local checks.

BREAKING CHANGE: Requires macOS 13+, Windows 10+ or supported 64-bit Linux. Windows ia32 and Linux armv7l are no longer built. Developers need Node 24 and pnpm 10.33.0. Rebuild native plugins for Electron 45 and migrate renderer clipboard calls to a main-process bridge or navigator.clipboard; main-process clipboard APIs are asynchronous and native file references use text/uri-list. Existing Hyper configuration needs no migration.

Use Electron 45 with exact-runtime snapshots and Node 24 native tooling.
Match macOS native appearance to the focused terminal background, preserve
native hiddenInset controls, and migrate clipboard access through main.

Add the canonical verification hook and update supported platform builds.

BREAKING CHANGE: Requires macOS 13+, Windows 10+ or supported 64-bit Linux. Windows ia32 and Linux armv7l are no longer built. Developers need Node 24 and pnpm 10.33.0. Rebuild native plugins for Electron 45 and migrate renderer clipboard calls to a main-process bridge or navigator.clipboard; main-process clipboard APIs are asynchronous and native file references use text/uri-list. Existing Hyper configuration needs no migration.
Copilot AI balanced review requested due to automatic review settings October 27, 2026 19:33

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.

@socket-security

socket-security Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

@vercel-internal-security-reviewer

Copy link
Copy Markdown

Security review details

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants