refactor: replace debug logging with termLog utility and clean up termwrap mouse/alt-screen handling#17
Merged
Merged
Conversation
Replace removeAllChildViews() (destroy all) with positionTabOffScreen() so tabs from the previous workspace stay alive in the cache. On switch-back, setTabViewIntoWindow -> finalizePositioning reuses the cached BrowserView without recreating the renderer process, preserving xterm.js state including DEC mouse modes. - MaxCacheSize 10 -> 30 for cross-workspace caching - getOrCreateWebViewForTab checks isDestroyed before returning cached view - tryEvictEntry handles tabs evicted from allLoadedTabViews (workspace switch)
…mwrap mouse/alt-screen handling
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.
Summary
16 files changed (+178/-254). Refactors logging, optimizes workspace switching, enforces resource limits, and cleans up termwrap.
Changes
Workspace switching performance (
emain/emain-window.ts)Keep BrowserViews alive during workspace switch instead of destroying them. Tab views are positioned off-screen and cached, so switching back is near-instant.
allLoadedTabViewsis cleared on the window side but cached views survive inwcvCache.Tab view cache improvements (
emain/emain-tabview.ts)getOrCreateWebViewForTabnow skips destroyed tab views in cache, avoids creating duplicate overlaystryEvictEntryhandles tab views no longer tracked by the window (e.g. after workspace switch clearsallLoadedTabViews)Workspace/Tab limits (
pkg/wcore/workspace.go)CreateWorkspaceentry with a descriptive errorcreateTabObjbefore appending a new tabtermwrap cleanup (
frontend/app/view/term/termwrap.ts)SyntheticAltScreenTracker(main-screen TUIs no longer get alt-buffer treatment)restoreMouseTrackingModelogicLog refactor
New
termLog()utility (frontend/util/termlog.ts) replacesconsole.log/debugacross workspace switching, block focus, keyboard navigation, tab operations, terminal resize/resync, and focus management.Block header (
frontend/block/blockframe-header.tsx)Show abbreviated 8-char
blockIdin the block header for easier debugging.