Skip to content

Perf/panel memory cleanup - #13

Merged
R0MADEV merged 25 commits into
mainfrom
perf/panel-memory-cleanup
Aug 12, 2026
Merged

Perf/panel memory cleanup#13
R0MADEV merged 25 commits into
mainfrom
perf/panel-memory-cleanup

Conversation

@R0MADEV

@R0MADEV R0MADEV commented Aug 12, 2026

Copy link
Copy Markdown
Owner

No description provided.

R0MADEV added 11 commits August 12, 2026 01:01
- Gate agent_socket behind #[cfg(unix)] — compiles clean on Windows
- Add onVisibilityChange to PanelInstance + wire through dockview and lazyPanel
- ReviewPanel pauses/resumes 5s auto-refresh interval when tab hidden
- TasksPanel stops diffRefreshInterval on hide; calls stopDiffRefresh+detailCleanup on dispose
- TVPanel: named keydown handler + ResizeObserver ref for proper dispose
- TV player.dispose() stops HLS stream and disconnects observer
- TV PiP button: explicit requestPictureInPicture with active state and error feedback
- pip icon added to icons.ts
- HLSPlayer.pause/resume stop segment download (hls.stopLoad) and
  video decode when the TV panel is hidden; skips pause if video is
  in PiP so the picture-in-picture keeps playing
- TVPanel wires onVisibilityChange to the new pause/resume methods
- TasksPanelRuntime also calls detailCleanup() on hide so the Docker
  3s poll stops alongside the diff-refresh interval
When the Tasks panel is hidden the Docker 3s poll now stops cleanly;
when it becomes visible again resumePoll() fires an immediate refresh
and restarts the interval — no user interaction required.
- Terminal scrollback 10 000 → 2 000 lines (5x less RAM per terminal;
  2 000 is still plenty for typical debug sessions)
- HLS.js maxBufferLength 30s → 10s, maxMaxBufferLength 600s → 20s
  (cuts pre-download buffer for TV streams by 3x)
…n hidden

- WebPanel now tracks dockview visibility via onVisibilityChange so the
  native webview overlay is hidden immediately when another tab is active,
  preventing it from painting over other panels (visibility:hidden from
  dockview does not trigger IntersectionObserver)
- lazyPanel queues the last onVisibilityChange call and replays it once
  the inner module finishes loading, so TV/terminal panels that are
  hidden before their import() resolves don't start streaming/running
@R0MADEV
R0MADEV force-pushed the perf/panel-memory-cleanup branch 5 times, most recently from d511fad to ec3bcb8 Compare August 12, 2026 05:54
@R0MADEV
R0MADEV force-pushed the perf/panel-memory-cleanup branch from ec3bcb8 to f6c4c90 Compare August 12, 2026 06:02
@R0MADEV R0MADEV self-assigned this Aug 12, 2026
Clicking either member of a split pair no longer destroys the split —
it just focuses that terminal. The pair is visually connected in the
sidebar with a left accent border. Removing a group member clears the
split and adjusts the secondary index after the splice.
Right-click now shows 4 directions (←→↑↓). Each adds a new terminal
relative to the one under the cursor. Adding in the same direction as
the existing split extends the group; adding perpendicular clears the
old split and starts a new one. Closing a member shrinks the group
gracefully. CSS uses flex order to reposition members without DOM
reorder, so position:absolute non-members stay out of flex flow.
Adding a new agent via the sidebar footer no longer destroys the active
split — the new agent is registered in the list and the user can switch
to it or split from it from there. Also re-renders sidebar after each
directional split to refresh group member indicators.
One agent at a time in the agents panel — no split logic.
Removed the color-picker (themeButton + popover) and maximize button
from the terminal panel. Also deleted the dead terminalHub.ts.
@R0MADEV
R0MADEV force-pushed the perf/panel-memory-cleanup branch from defb083 to 0973481 Compare August 12, 2026 08:55
@R0MADEV
R0MADEV merged commit f9dca8d into main Aug 12, 2026
6 checks passed
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.

1 participant