fix: release closed session resources

This commit is contained in:
Andy Dixon
2026-07-29 12:07:59 +01:00
parent 5d5993d9c4
commit f0a1a0b8f2
15 changed files with 809 additions and 114 deletions
+40
View File
@@ -220,6 +220,46 @@ assertContains(
"async closeTab(sessionId) {\n this._hideTabTooltip();",
"closing a tab must clear any visible or pending tab tooltip",
);
assertContains(
"frontend/src/js/tabs.js",
"await this.app.closeSessionImmediate(sessionId);",
"all normal tab closes must use the complete session teardown path",
);
assertContains(
"frontend/src/js/app.js",
"this.splitPanes.cleanup(sessionId)",
"closing an owner tab must release all split-pane state and child sessions",
);
assertContains(
"frontend/src/js/app.js",
"window.NexusTerminal.VNCViewer?.destroyViewer(sessionId)",
"session teardown must disconnect and remove VNC viewers",
);
assertContains(
"frontend/src/js/app.js",
"window.NexusTerminal.IRCViewer?.destroyViewer(sessionId)",
"session teardown must dispose IRC terminals and resize observers",
);
assertContains(
"frontend/src/js/app.js",
"this.recordings.cleanup(sessionId)",
"session teardown must clear frontend recording state",
);
assertContains(
"frontend/src/js/splitpane.js",
"this.app.closeSessionImmediate(leaf.sessionId",
"closing a split child must release its backend session as well as its terminal",
);
assertContains(
"frontend/src/js/splitpane.js",
"await window.NexusTerminal.wailsService.DisconnectSession(sessionInfo.id)",
"late split-pane connection results must be disconnected after their pane closes",
);
assertContains(
"internal/sessions/manager.go",
"delete(m.sessions, sessionID)",
"explicit backend disconnect must remove the session from the manager map",
);
assertContains(
"frontend/src/js/tabs.js",
"!tab?.isConnected",