diff --git a/packages/app/src/browser-automation/handler.test.ts b/packages/app/src/browser-automation/handler.test.ts index 5b49b5f45..45ca127c8 100644 --- a/packages/app/src/browser-automation/handler.test.ts +++ b/packages/app/src/browser-automation/handler.test.ts @@ -250,7 +250,7 @@ describe("mountBrowserAutomationHandler", () => { useWorkspaceLayoutStore.setState({ layoutByWorkspace: {} }); }); - test("browser_new_tab creates and focuses a workspace browser tab", async () => { + test("browser_new_tab creates a workspace browser tab without stealing focus", async () => { const browser = new BrowserAutomationHandlerHarness(); const workspaceKey = buildWorkspaceTabPersistenceKey({ serverId: "server-1", @@ -278,16 +278,14 @@ describe("mountBrowserAutomationHandler", () => { expect(layout?.root).toEqual( expect.objectContaining({ kind: "pane", - pane: expect.objectContaining({ focusedTabId: openedTabs[0]?.tabId }), + pane: expect.objectContaining({ focusedTabId: previousFocusedTabId }), }), ); expect(openedTabs[0]?.tabId).not.toBe(previousFocusedTabId); expect(browser.browser.registeredWorkspaceBrowsers).toEqual([ { browserId: result.browserId, workspaceId: "wks_workspace_a" }, ]); - expect(browser.browser.activeWorkspaceBrowsers).toEqual([ - { browserId: result.browserId, workspaceId: "wks_workspace_a" }, - ]); + expect(browser.browser.activeWorkspaceBrowsers).toEqual([]); expect(browser.resident.ensuredWebviews).toEqual([ { browserId: result.browserId, url: "https://example.com" }, ]); diff --git a/packages/app/src/browser-automation/handler.ts b/packages/app/src/browser-automation/handler.ts index 35b3f5599..5647148a7 100644 --- a/packages/app/src/browser-automation/handler.ts +++ b/packages/app/src/browser-automation/handler.ts @@ -179,13 +179,12 @@ async function openBrowserTabForRequest(params: { message: "Cannot create a browser tab without a workspace context.", }); } - useWorkspaceLayoutStore.getState().openTabFocused(workspaceKey, { + useWorkspaceLayoutStore.getState().openTabInBackground(workspaceKey, { kind: "browser", browserId, }); await browserHost?.registerWorkspaceBrowser?.({ browserId, workspaceId }); - await browserHost?.setWorkspaceActiveBrowser?.({ browserId, workspaceId }); if (browserHost?.executeAutomationCommand) { ensureResidentBrowserWebview({ browserId, url: normalizedUrl }); diff --git a/packages/server/src/server/browser-tools/tools.ts b/packages/server/src/server/browser-tools/tools.ts index 981bbdc46..d7b0e0f36 100644 --- a/packages/server/src/server/browser-tools/tools.ts +++ b/packages/server/src/server/browser-tools/tools.ts @@ -115,7 +115,7 @@ export function registerBrowserTools(options: RegisterBrowserToolsOptions): void { title: "Create browser tab", description: - "Create and focus a new Paseo desktop browser tab in this agent's workspace. Pass an http(s) URL or a scheme-less host URL, which is treated as http; the returned browserId is used by tab-scoped tools.", + "Create a new Paseo desktop browser tab in this agent's workspace, opened in the background without switching the user's view. Pass an http(s) URL or a scheme-less host URL, which is treated as http; the returned browserId is used by tab-scoped tools.", inputSchema: { url: BrowserHttpUrlInputSchema.optional(), },