[Init] Initial commit - NetMesh terminal manager
Some checks failed
build-packages / resolve bundled mosh-client (push) Has been cancelled
build-packages / resolve bundled et-client (push) Has been cancelled
build-packages / build-macos (push) Has been cancelled
build-packages / build-windows (push) Has been cancelled
build-packages / build-linux-x64 (push) Has been cancelled
build-packages / build-linux-arm64 (push) Has been cancelled
build-packages / release (push) Has been cancelled
build-packages / update Nix release metadata (push) Has been cancelled
build-packages / bump homebrew tap (push) Has been cancelled
test / lint-and-test (push) Has been cancelled
AI automation / Route event (push) Has been cancelled
AI automation / Hand reopened issue to maintainers (push) Has been cancelled
AI automation / Clean source issue state (push) Has been cancelled
AI automation / Reconcile handoffs (push) Has been cancelled
AI automation / Classify issue (push) Has been cancelled
AI automation / Claude Code smoke (push) Has been cancelled
AI automation / Review issue follow-up (push) Has been cancelled
AI automation / Publish issue follow-up (push) Has been cancelled
AI automation / Implement with Claude Code (push) Has been cancelled
AI automation / Publish implement PR (push) Has been cancelled
AI automation / Continue queued issue comments (push) Has been cancelled
AI automation / Codex review loop (push) Has been cancelled
AI automation / Publish Codex fix (push) Has been cancelled
AI automation / Clear Codex dispatch marker (push) Has been cancelled
AI automation / Own PR re-request Codex (push) Has been cancelled
AI automation / External PR re-request Codex (push) Has been cancelled
AI automation / Poll Codex reaction / retry (push) Has been cancelled
build-et-binaries / build-linux-x64 (push) Has been cancelled
build-et-binaries / build-linux-arm64 (push) Has been cancelled
build-et-binaries / build-macos-universal (push) Has been cancelled
build-et-binaries / build-windows-x64 (push) Has been cancelled
build-et-binaries / release (push) Has been cancelled

This commit is contained in:
2026-09-13 18:24:01 +08:00
commit 3c72efcb7f
3255 changed files with 907009 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
# Background terminal rendering (#3278)
Inactive panes retain their live terminal and measured dimensions, but move
outside the viewport. This lets xterm's IntersectionObserver stop painting
without stopping output parsing or rebuilding the terminal on every tab switch.
The existing reveal, resize and WebGL recovery paths remain responsible for
restoring the current screen. No new output queue or lossy truncation is added.
## Regression coverage
Run `npm run test:terminal-background-rendering` with a graphical Electron
session (Linux CI uses xvfb). It bundles the production runtime and inactive
pane style helper, creates five real terminals, and verifies:
- The visible terminal paints while all four background terminals do not.
- Output is already parsed in each hidden terminal and dimensions stay valid.
- Twelve hide/reveal cycles repaint newly received output.
- A window-area resize does not collapse the hidden terminal's measured width.
- Cursor-addressed alternate-screen output survives hiding and a reveal resize.
- Two visible split panes paint while the remaining hidden panes do not.
Before this change, the first visibility assertion fails: each background pane
paints 12 frames instead of zero. The test does not claim to reproduce the
reporter's delayed high-CPU condition, and direct writes in this harness do not
exercise the complete SSH/output transport path.
## Local application validation
A separate Netcatty development instance with an isolated profile was tested on
macOS (M2 Max, 32GB), using five real local shell sessions. Four sessions emitted
continuous logs. The UI was exercised through tab switching, split creation,
focus mode, detaching back to a tab, closing the extra split, and window resizing.
Actual screen captures were checked for restored content. CPU comparisons use
that instance's renderer and GPU process metrics, not other applications.
This is a CPU optimization for invisible panes. It does not promise lower
history/GPU memory usage, nor establish the root cause of every #3278 report.
Remote SSH, Windows/Linux interactive recovery and the reporter's M4 environment
still require separate validation; this PR should reference rather than close
that issue automatically.