apps/desktop/package.json | 1 + apps/desktop/scripts/build-preview-annotation-css.mjs | 40 ++ apps/desktop/src/app/DesktopEnvironment.test.ts | 2 + apps/desktop/src/app/DesktopEnvironment.ts | 2 + apps/desktop/src/ipc/DesktopIpcHandlers.ts | 4 + apps/desktop/src/ipc/channels.ts | 4 + apps/desktop/src/ipc/methods/preview.ts | 64 +++ apps/desktop/src/preload.ts | 16 + apps/desktop/src/preview-annotation-styles.generated.ts | 3 + apps/desktop/src/preview-annotation.css | 68 +++ apps/desktop/src/preview-pick-preload.ts | 415 ++++++++++++------ apps/desktop/src/preview-view-manager.test.ts | 191 ++++++++- apps/desktop/src/preview-view-manager.ts | 232 +++++++++- apps/desktop/vite.config.ts | 7 +- apps/server/src/keybindings.test.ts | 2 + apps/server/src/mcp/Layers/McpHttpServer.test.ts | 28 +- apps/server/src/mcp/Layers/McpHttpServer.ts | 7 +- apps/server/src/preview/Layers/PortScanner.test.ts | 75 +++- apps/server/src/preview/Layers/PortScanner.ts | 155 +++++-- apps/server/src/preview/Services/PortScanner.ts | 26 +- apps/server/src/server.test.ts | 6 +- apps/server/src/server.ts | 12 +- apps/server/src/terminal/Layers/Manager.test.ts | 14 +- apps/server/src/terminal/Layers/Manager.ts | 112 ++++- apps/server/src/ws.ts | 10 +- apps/web/src/browser/ElectronBrowserHost.tsx | 47 ++- apps/web/src/browser/annotationTheme.ts | 28 ++ apps/web/src/browser/browserPointerStore.test.ts | 68 +++ apps/web/src/browser/browserPointerStore.ts | 25 ++ apps/web/src/components/ChatView.browser.tsx | 143 ++++++- apps/web/src/components/ChatView.tsx | 722 +++++++++++++++++++++++++------- apps/web/src/components/RightPanelTabs.tsx | 111 ++++- apps/web/src/components/Sidebar.tsx | 38 ++ apps/web/src/components/ThreadTerminalDrawer.tsx | 156 ++++++- apps/web/src/components/chat/ChatHeader.tsx | 6 +- apps/web/src/components/preview/AgentBrowserCursor.tsx | 52 +++ apps/web/src/components/preview/PreviewChromeRow.browser.tsx | 41 ++ apps/web/src/components/preview/PreviewView.tsx | 232 +++++++++- apps/web/src/components/preview/agentBrowserCursorLogic.test.ts | 19 + apps/web/src/components/preview/agentBrowserCursorLogic.ts | 6 + apps/web/src/components/preview/fileExplorerLabel.test.ts | 13 + apps/web/src/components/preview/fileExplorerLabel.ts | 6 + apps/web/src/components/preview/openDiscoveredPort.ts | 24 ++ apps/web/src/components/preview/openPreviewSession.ts | 7 +- apps/web/src/components/preview/previewEmptyStateLogic.test.ts | 42 ++ apps/web/src/components/preview/previewEmptyStateLogic.ts | 11 + apps/web/src/components/preview/useDiscoveredLocalServers.test.ts | 1 + apps/web/src/components/preview/useDiscoveredLocalServers.ts | 23 +- apps/web/src/components/preview/usePreviewBridge.ts | 20 +- apps/web/src/components/ui/toast.tsx | 22 +- apps/web/src/environments/runtime/service.ts | 18 + apps/web/src/keybindings.test.ts | 35 +- apps/web/src/keybindings.ts | 8 + apps/web/src/lib/terminalFocus.test.ts | 22 +- apps/web/src/lib/terminalFocus.ts | 19 +- apps/web/src/portDiscoveryState.ts | 86 ++++ apps/web/src/previewStateStore.test.ts | 36 ++ apps/web/src/previewStateStore.ts | 54 ++- apps/web/src/rightPanelStore.test.ts | 165 +++++++- apps/web/src/rightPanelStore.ts | 229 +++++++++- apps/web/src/rpc/requestLatencyState.test.ts | 8 + apps/web/src/rpc/requestLatencyState.ts | 4 +- apps/web/src/terminalUiStateStore.test.ts | 18 + apps/web/src/terminalUiStateStore.ts | 19 +- apps/web/src/types.ts | 1 + packages/contracts/src/ipc.ts | 33 ++ packages/contracts/src/keybindings.test.ts | 9 +- packages/contracts/src/keybindings.ts | 2 + packages/contracts/src/preview.test.ts | 4 + packages/contracts/src/preview.ts | 6 + packages/shared/src/keybindings.ts | 2 + pnpm-lock.yaml | 3 + 72 files changed, 3633 insertions(+), 507 deletions(-)