fix(extension): prevent closed borrowed tabs from blocking session stop

This commit is contained in:
drakezhang
2026-09-07 11:12:44 +08:00
parent 47ac947f18
commit e831d65db3
6 changed files with 126 additions and 8 deletions
@@ -117,10 +117,16 @@ export class SessionManager {
return Array.from(this.sessions.values());
}
/** Remove a closed tab from agent-created ownership tracking. */
forgetAgentCreatedTab(tabId: number): void {
/**
* Forget a tab Chrome has removed, including any uncommitted borrow.
* Whole-window closures keep committed borrows until the window-removed
* handler reports which user tabs could not be returned.
*/
forgetClosedTab(tabId: number, { isWindowClosing = false } = {}): void {
this.borrowReservations.delete(tabId);
for (const ctx of this.sessions.values()) {
ctx.agentCreatedTabs.delete(tabId);
if (!isWindowClosing) ctx.borrowedTabs.delete(tabId);
}
}