app-preview-browser-plan.md | 420 +++++++++++++++-------------- apps/desktop/src/ipc/DesktopIpcHandlers.ts | 4 + apps/desktop/src/ipc/channels.ts | 16 ++ apps/desktop/src/ipc/methods/preview.ts | 61 +++++ apps/desktop/src/preload.ts | 35 ++- apps/desktop/src/preview-view-manager.ts | 455 ++++++++++++++++++++++++++++++++ apps/desktop/src/window/DesktopWindow.ts | 4 + apps/server/src/preview/Layers/Manager.test.ts | 261 ++++++++++++++++++ apps/server/src/preview/Layers/Manager.ts | 313 ++++++++++++++++++++++ apps/server/src/preview/Layers/PortScanner.test.ts | 180 +++++++++++++ apps/server/src/preview/Layers/PortScanner.ts | 243 +++++++++++++++++ apps/server/src/preview/Services/Manager.ts | 94 +++++++ apps/server/src/preview/Services/PortScanner.ts | 36 +++ apps/server/src/server.test.ts | 25 ++ apps/server/src/server.ts | 5 + apps/server/src/ws.ts | 62 +++++ apps/web/package.json | 1 + apps/web/src/components/ChatView.browser.tsx | 20 ++ apps/web/src/components/ChatView.tsx | 154 +++++++++-- apps/web/src/components/ProjectScriptsControl.tsx | 39 +++ apps/web/src/components/ThreadTerminalDrawer.tsx | 26 +- apps/web/src/components/chat/ChatHeader.tsx | 35 ++- apps/web/src/components/preview/BrowserMockup.tsx | 24 ++ apps/web/src/components/preview/PreviewChromeRow.tsx | 197 ++++++++++++++ apps/web/src/components/preview/PreviewEmptyState.tsx | 59 +++++ apps/web/src/components/preview/PreviewLocalServerCard.tsx | 58 ++++ apps/web/src/components/preview/PreviewMoreMenu.tsx | 121 +++++++++ apps/web/src/components/preview/PreviewPanel.tsx | 35 +++ apps/web/src/components/preview/PreviewPanelShell.tsx | 77 ++++++ apps/web/src/components/preview/PreviewUnreachable.tsx | 90 +++++++ apps/web/src/components/preview/PreviewView.tsx | 193 ++++++++++++++ apps/web/src/components/preview/PreviewWebview.tsx | 116 ++++++++ apps/web/src/components/preview/RightPanelResizeHandle.tsx | 34 +++ apps/web/src/components/preview/ZoomIndicator.tsx | 54 ++++ apps/web/src/components/preview/errorCodeMessages.ts | 12 + apps/web/src/components/preview/openTerminalLinkInPreview.ts | 70 +++++ apps/web/src/components/preview/previewActionBus.ts | 31 +++ apps/web/src/components/preview/previewBridge.ts | 9 + apps/web/src/components/preview/previewConstants.ts | 21 ++ apps/web/src/components/preview/useDiscoveredLocalServers.test.ts | 116 ++++++++ apps/web/src/components/preview/useDiscoveredLocalServers.ts | 141 ++++++++++ apps/web/src/components/preview/useLoadingProgress.ts | 45 ++++ apps/web/src/components/preview/usePreviewBridge.ts | 137 ++++++++++ apps/web/src/components/preview/usePreviewSession.ts | 67 +++++ apps/web/src/environmentApi.ts | 10 + apps/web/src/hooks/useResizableWidth.ts | 176 ++++++++++++ apps/web/src/keybindings.ts | 28 ++ apps/web/src/lib/favicon.ts | 20 ++ apps/web/src/lib/previewFocus.ts | 15 ++ apps/web/src/main.tsx | 4 + apps/web/src/previewStateStore.test.ts | 227 ++++++++++++++++ apps/web/src/previewStateStore.ts | 188 +++++++++++++ apps/web/src/rightPanelStore.test.ts | 70 +++++ apps/web/src/rightPanelStore.ts | 114 ++++++++ apps/web/src/routes/_chat.tsx | 61 +++++ docs/user/keybindings.md | 14 + packages/client-runtime/src/wsRpcClient.ts | 31 +++ packages/contracts/src/index.ts | 1 + packages/contracts/src/ipc.ts | 80 ++++++ packages/contracts/src/keybindings.ts | 6 + packages/contracts/src/orchestration.ts | 11 + packages/contracts/src/preview.test.ts | 162 ++++++++++++ packages/contracts/src/preview.ts | 181 +++++++++++++ packages/contracts/src/rpc.ts | 78 ++++++ packages/shared/package.json | 4 + packages/shared/src/keybindings.ts | 7 + packages/shared/src/preview.test.ts | 75 ++++++ packages/shared/src/preview.ts | 92 +++++++ 68 files changed, 5622 insertions(+), 229 deletions(-)