feat(cleanup): default idle-shutdown + keep — stop leaving scratch tabs/groups behind
Release binaries / Build macOS ARM64 (push) Has been cancelled
Release binaries / Build macOS x64 (push) Has been cancelled
Release binaries / Build Linux ARM64 (push) Has been cancelled
Release binaries / Build Linux musl ARM64 (push) Has been cancelled
Release binaries / Build Linux musl x64 (push) Has been cancelled
Release binaries / Build Linux x64 (push) Has been cancelled
Release binaries / Build Windows x64 (push) Has been cancelled
Release binaries / Attach binaries to GitHub Release (push) Has been cancelled
Release binaries / Build macOS ARM64 (push) Has been cancelled
Release binaries / Build macOS x64 (push) Has been cancelled
Release binaries / Build Linux ARM64 (push) Has been cancelled
Release binaries / Build Linux musl ARM64 (push) Has been cancelled
Release binaries / Build Linux musl x64 (push) Has been cancelled
Release binaries / Build Linux x64 (push) Has been cancelled
Release binaries / Build Windows x64 (push) Has been cancelled
Release binaries / Attach binaries to GitHub Release (push) Has been cancelled
Agents finish a task and just stop (never calling `close`), so daemons used to run forever, leaving their per-session scratch tabs + tab group in the user's Chrome. Two cases now handled: - Default idle timeout (10 min; AGENT_BROWSER_IDLE_TIMEOUT_MS overrides, 0 disables). On idle the daemon close()s the tabs IT created → the empty tab group is auto-removed by Chrome. Timer resets on every command, so active sessions are untouched. Adopted user tabs are never owned, so never closed. - `keep` — leave the ACTIVE tab for the user: unown it (exempt from close/idle) + ask the extension to ungroup it (ABExt.ungroupTab → 0.4.12) so it becomes a normal tab. Scratch gets cleaned, deliverable tabs stay. Also fix two clippy violations in the concurrently-landed #47 viewport code (manual char comparison + iter().any→contains) that were failing main's CI. ext 0.4.12: handle ABExt.ungroupTab (chrome.tabs.ungroup). 870 tests pass.
This commit is contained in:
@@ -1546,6 +1546,13 @@ impl BrowserManager {
|
||||
.ok_or_else(|| "No active page".to_string())
|
||||
}
|
||||
|
||||
/// Stop owning a tab — drop it from `created_targets` so it survives `close()`
|
||||
/// and idle-shutdown (the agent is leaving it for the user). Returns true if it
|
||||
/// was owned. Used by `keep`.
|
||||
pub fn unown_target(&mut self, target_id: &str) -> bool {
|
||||
self.created_targets.remove(target_id)
|
||||
}
|
||||
|
||||
/// Returns true if this manager was connected via CDP (as opposed to local launch).
|
||||
pub fn is_cdp_connection(&self) -> bool {
|
||||
self.browser_process.is_none()
|
||||
|
||||
Reference in New Issue
Block a user