Skip to content

fix(macOS): preserve terminal output, state and plugin lifecycles - #170

Closed
teo-nex wants to merge 32 commits into
howdeploy:release/1.8.5-betafrom
teo-nex:fix/canvastty185-macos
Closed

teo-nex wants to merge 32 commits into
howdeploy:release/1.8.5-betafrom
teo-nex:fix/canvastty185-macos

Conversation

@teo-nex

@teo-nex teo-nex commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Mac users on 1.8.5-beta.1 can lose terminal output while hidden, lose xterm state on fullscreen transitions, and see fast drag/resize gestures revert. This series fixes those paths, note/settings preservation, plugin rollback ownership and process-group cleanup, browser freeze/visibility/reload lifecycles, late skin-cache disposal, ultrawide wallpaper coverage, and F2 rename. It also adds independent native browser windows.

Behavior changes are gated to macOS; Windows/Linux adaptations and the global Electron pin are unchanged. Mac packaging selects Electron 43.8.1 for GHSA-jr5w-w6x2-84p9. Shared bundle/startup/memoization tests now follow production compilation and the shared card renderer.

Validation at a496a83: 2,532 tests, 2,526 passed, 6 skipped, no failures; typecheck, production build, secret audit and diff checks passed. Hidden native Electron + real PTY delivered and parsed all 56,623,104 characters. Real React/TerminalCard/xterm retained history, selection, viewport and focus across four fullscreen transitions. Fresh packaged macOS arm64 app on Electron 43.8.1 passed wallpaper, PTY/arrow history, F2 rename, fast drag, fullscreen instance retention and two independent browser windows; ASAR/build hashes and deep strict ad-hoc signature verified. 31 foreign sender/subframe IPC attempts were rejected.

A separate macOS node-pty fix retains unread output when a finite producer exits while parser backpressure has paused reading, and resumes before kill so close/quit can release native resources. A real packaged Electron 43.8.1 regression now receives/parses all 1,049,088 bytes after a 500 ms delayed ACK (the original lost the last 512); close-paused cleanup leaves no live owned process. Actual dependency TS/JS callback regressions cover cleanup, repeated pause, and unchanged Linux/FreeBSD behavior. The FD-resource smoke acknowledges real output before allowing its short-lived child to exit; it still fails on missing output, echo-only input, or timeout. The exact cause of the earlier CI short-output failure was not established. All 8 CI jobs passed at a496a83: verify, Windows pipe host, macOS CLI resolution, both mascot pipelines, Android contracts/debug, and macOS native-and-packaged. The macOS resource job passed 400 source PTY cycles plus 400 packaged-addon cycles, injected native failures, closed-stdio combinations, and bundle/signature checks. Build/dev dependency advisories remain. One independent file-security audit was blocked by a model safety filter, so this is not a complete security audit. Long-session FPS degradation and physical keyboard/trackpad reports were not conclusively reproduced. The prepared app has not replaced the user's running installation; active terminals, profile and harness were preserved.

@teo-nex
teo-nex marked this pull request as ready for review October 29, 2026 22:00
@teo-nex teo-nex changed the title Fix macOS wallpaper, input gestures, plugin packs and background recovery fix(macOS): preserve terminal output, state and plugin lifecycles Oct 29, 2026

Copy link
Copy Markdown
Owner

Thank you, @teo-nex! The fixes from this PR, including the follow-ups through a496a83, have been selectively integrated and released in 1.8.5-beta2.

The main integration is in 5c9771b on dev/1.8.5-beta2-optimization. Shared behavior was adapted for macOS, Linux and Windows while retaining the existing beta2 fixes. A subsequent Windows plugin-copy compatibility fix is in df274cf. Integration notes and scope.

The separate native browser-window feature, extra esbuild dependency and macOS UI smoke launcher were intentionally excluded from this bug-fix integration.

Final verification of the released tree passed: Linux, Windows and macOS tests and installer builds, plus 400 source and 400 packaged macOS PTY cycles. Real-session and macOS performance feedback is still needed.

Closing as incorporated through selective integration into beta2, rather than merging this branch directly. Thanks again for the fixes!

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants