apps/desktop/scripts/electron-launcher.mjs | 50 ++- apps/desktop/scripts/electron-launcher.test.mjs | 28 ++ apps/desktop/src/preview/Manager.test.ts | 395 ++++++++++++++++++- apps/desktop/src/preview/Manager.ts | 306 +++++++++++---- apps/desktop/src/preview/PreviewKeyboard.test.ts | 84 ++++ apps/desktop/src/preview/PreviewKeyboard.ts | 163 ++++++++ apps/desktop/src/window/DesktopWindow.test.ts | 71 ++++ apps/desktop/src/window/DesktopWindow.ts | 98 ++++- apps/server/src/mcp/McpHttpServer.test.ts | 131 +++---- apps/server/src/mcp/McpHttpServer.ts | 5 +- apps/server/src/mcp/PreviewAutomationBroker.test.ts | 658 ++++++++++++++++++++++++++++---- apps/server/src/mcp/PreviewAutomationBroker.ts | 383 ++++++++++++------- apps/server/src/mcp/toolkits/preview/handlers.ts | 3 + apps/server/src/mcp/toolkits/preview/tools.ts | 19 +- apps/server/src/preview/Manager.test.ts | 55 +++ apps/server/src/preview/Manager.ts | 38 ++ apps/server/src/server.test.ts | 41 ++ apps/server/src/server.ts | 3 +- apps/server/src/ws.ts | 38 +- apps/web/src/AppRoot.test.tsx | 8 +- apps/web/src/AppRoot.tsx | 2 + apps/web/src/browser/BrowserDeviceToolbar.test.ts | 49 +++ apps/web/src/browser/BrowserDeviceToolbar.tsx | 340 +++++++++++++++++ apps/web/src/browser/BrowserViewportResizeHandles.tsx | 169 ++++++++ apps/web/src/browser/ElectronBrowserHost.tsx | 7 +- apps/web/src/browser/HostedBrowserWebview.tsx | 185 +++++++-- apps/web/src/browser/browserDeviceToolbarState.ts | 18 + apps/web/src/browser/browserRecording.ts | 11 +- apps/web/src/browser/browserRecordingScope.test.ts | 11 + apps/web/src/browser/browserRecordingScope.ts | 3 + apps/web/src/browser/browserSurfaceStore.test.ts | 38 ++ apps/web/src/browser/browserSurfaceStore.ts | 70 +++- apps/web/src/browser/browserViewportActions.test.ts | 112 ++++++ apps/web/src/browser/browserViewportActions.ts | 66 ++++ apps/web/src/browser/browserViewportLayout.test.ts | 165 ++++++++ apps/web/src/browser/browserViewportLayout.ts | 286 ++++++++++++++ apps/web/src/browser/useBrowserViewportResize.ts | 260 +++++++++++++ apps/web/src/components/ChatView.tsx | 4 - apps/web/src/components/preview/AgentBrowserCursor.tsx | 14 +- apps/web/src/components/preview/PreviewAutomationHosts.tsx | 569 +++++++++++++++++++++++++++ apps/web/src/components/preview/PreviewAutomationOwner.test.ts | 31 -- apps/web/src/components/preview/PreviewAutomationOwner.tsx | 426 --------------------- apps/web/src/components/preview/PreviewMoreMenu.tsx | 16 +- apps/web/src/components/preview/PreviewView.tsx | 71 +++- apps/web/src/components/preview/previewAutomationClientId.test.ts | 13 + apps/web/src/components/preview/previewAutomationClientId.ts | 4 + apps/web/src/components/preview/previewAutomationErrors.ts | 104 ++++- apps/web/src/components/preview/previewAutomationRequestConsumer.test.ts | 241 +++++++++++- apps/web/src/components/preview/previewAutomationRequestConsumer.ts | 118 ++++-- apps/web/src/components/preview/previewAutomationTarget.test.ts | 45 +++ apps/web/src/components/preview/previewAutomationTarget.ts | 25 ++ apps/web/src/components/preview/previewViewportReadiness.test.ts | 72 ++++ apps/web/src/components/preview/previewViewportReadiness.ts | 37 ++ apps/web/src/components/preview/usePreviewSession.ts | 5 +- apps/web/src/previewStateStore.test.ts | 88 +++++ apps/web/src/previewStateStore.ts | 98 ++++- packages/client-runtime/src/state/preview.test.ts | 18 + packages/client-runtime/src/state/preview.ts | 36 +- packages/contracts/src/ipc.ts | 15 +- packages/contracts/src/preview.test.ts | 144 +++++++ packages/contracts/src/preview.ts | 110 ++++++ packages/contracts/src/previewAutomation.ts | 193 ++++++++-- packages/contracts/src/rpc.ts | 36 +- packages/shared/package.json | 4 + packages/shared/src/previewViewport.test.ts | 70 ++++ packages/shared/src/previewViewport.ts | 186 +++++++++ scripts/dev-runner.test.ts | 1 + scripts/dev-runner.ts | 13 +- 68 files changed, 6109 insertions(+), 1067 deletions(-)