.gitignore | 1 + .oxlintrc.json | 9 +- KEYBINDINGS.md | 1 + README.md | 14 + TODO.md | 4 +- apps/desktop/.gitignore | 1 + apps/desktop/package.json | 3 +- apps/desktop/resources/icon.icns | Bin 0 -> 1978844 bytes apps/desktop/resources/icon.ico | Bin 0 -> 285658 bytes apps/desktop/resources/icon.png | Bin 0 -> 320727 bytes apps/desktop/scripts/dev-electron.mjs | 54 +- apps/desktop/scripts/electron-launcher.mjs | 173 +++ apps/desktop/scripts/start-electron.mjs | 20 + apps/desktop/src/main.ts | 303 ++++- apps/desktop/src/preload.ts | 12 + apps/server/src/codexAppServerManager.test.ts | 152 +++ apps/server/src/codexAppServerManager.ts | 170 ++- apps/server/src/filesystemCheckpointStore.test.ts | 243 ++++ apps/server/src/filesystemCheckpointStore.ts | 322 ++++++ apps/server/src/git.test.ts | 73 ++ apps/server/src/git.ts | 88 +- apps/server/src/keybindings.test.ts | 160 ++- apps/server/src/keybindings.ts | 198 +++- apps/server/src/projectRegistry.test.ts | 113 ++ apps/server/src/projectRegistry.ts | 69 +- apps/server/src/providerManager.test.ts | 819 +++++++++++++- apps/server/src/providerManager.ts | 440 ++++++++ apps/server/src/ptyAdapter.ts | 3 +- apps/server/src/terminalManager.test.ts | 97 ++ apps/server/src/terminalManager.ts | 145 ++- apps/server/src/workspaceEntries.chunking.test.ts | 80 ++ apps/server/src/workspaceEntries.test.ts | 176 +++ apps/server/src/workspaceEntries.ts | 433 +++++++ apps/server/src/wsServer.test.ts | 155 +++ apps/server/src/wsServer.ts | 25 +- apps/web/index.html | 4 +- apps/web/package.json | 5 + apps/web/public/apple-touch-icon.png | Bin 0 -> 47789 bytes apps/web/public/favicon-16x16.png | Bin 0 -> 1276 bytes apps/web/public/favicon-32x32.png | Bin 0 -> 2349 bytes apps/web/public/favicon.ico | Bin 0 -> 285658 bytes apps/web/public/favicon.svg | 4 + apps/web/src/App.tsx | 215 ---- apps/web/src/appSettings.ts | 109 ++ apps/web/src/branding.ts | 3 + apps/web/src/chat-scroll.test.ts | 5 +- apps/web/src/components/BranchToolbar.logic.test.ts | 56 + apps/web/src/components/BranchToolbar.logic.ts | 28 + apps/web/src/components/BranchToolbar.tsx | 47 +- apps/web/src/components/ChatView.tsx | 1937 +++++++++++++++++++++++++++----- apps/web/src/components/DiffPanel.tsx | 506 ++++++++- apps/web/src/components/DiffWorkerPoolProvider.tsx | 26 + apps/web/src/components/GitActionsControl.logic.ts | 6 +- apps/web/src/components/GitActionsControl.tsx | 26 +- apps/web/src/components/ProjectScriptsControl.tsx | 464 ++++++++ apps/web/src/components/Sidebar.tsx | 163 +-- apps/web/src/components/ThreadTerminalDrawer.tsx | 77 +- apps/web/src/components/ui/sheet.tsx | 4 +- apps/web/src/components/ui/toast.tsx | 15 +- apps/web/src/components/ui/toggle-group.tsx | 97 ++ apps/web/src/components/ui/toggle.tsx | 46 + apps/web/src/composer-logic.test.ts | 51 + apps/web/src/composer-logic.ts | 90 ++ apps/web/src/diffRouteSearch.test.ts | 53 + apps/web/src/diffRouteSearch.ts | 32 + apps/web/src/hooks/useMediaQuery.ts | 27 + apps/web/src/hooks/useTheme.ts | 1 + apps/web/src/hooks/useTurnDiffSummaries.ts | 35 + apps/web/src/index.css | 10 + apps/web/src/keybindings.test.ts | 63 +- apps/web/src/keybindings.ts | 4 +- apps/web/src/lib/diffRendering.test.ts | 23 + apps/web/src/lib/diffRendering.ts | 24 + apps/web/src/lib/gitReactQuery.ts | 17 +- apps/web/src/lib/projectReactQuery.ts | 42 + apps/web/src/lib/providerReactQuery.test.ts | 111 ++ apps/web/src/lib/providerReactQuery.ts | 87 ++ apps/web/src/main.tsx | 37 +- apps/web/src/persistenceSchema.test.ts | 141 ++- apps/web/src/persistenceSchema.ts | 60 +- apps/web/src/projectScripts.test.ts | 73 ++ apps/web/src/projectScripts.ts | 80 ++ apps/web/src/routeTree.gen.ts | 118 ++ apps/web/src/routes/__root.tsx | 198 ++++ apps/web/src/routes/_chat.$threadId.tsx | 114 ++ apps/web/src/routes/_chat.index.tsx | 25 + apps/web/src/routes/_chat.settings.tsx | 259 +++++ apps/web/src/routes/_chat.tsx | 39 + apps/web/src/session-logic.test.ts | 235 ++++ apps/web/src/session-logic.ts | 278 ++++- apps/web/src/store.test.ts | 450 +++++++- apps/web/src/store.ts | 315 +++++- apps/web/src/threadFactory.ts | 42 + apps/web/src/truncateTitle.test.ts | 17 + apps/web/src/truncateTitle.ts | 7 + apps/web/src/types.ts | 26 +- apps/web/src/vite-env.d.ts | 1 + apps/web/src/vscode-icons-language-associations.json | 1 + apps/web/src/vscode-icons-manifest.json | 1 + apps/web/src/vscode-icons.test.ts | 50 + apps/web/src/vscode-icons.ts | 168 +++ apps/web/src/workers/diffs.worker.ts | 1 + apps/web/src/worktreeCleanup.test.ts | 1 + apps/web/src/wsNativeApi.ts | 7 + apps/web/src/wsTransport.ts | 3 + apps/web/vite.config.ts | 5 + assets/T3 Code blueprint-macOS-Default-1024x1024@1x.png | Bin 0 -> 1318869 bytes assets/T3 Code blueprint-macOS-Default-1024x1024@2x.png | Bin 0 -> 4709571 bytes assets/T3 Code logo.svg | 4 + assets/T3 Code logo@16x.png | Bin 0 -> 36806 bytes assets/T3 Code logo@32x.png | Bin 0 -> 107342 bytes assets/T3 Code logo@8x.png | Bin 0 -> 14108 bytes assets/T3 Code-macOS-Default-1024x1024@1x.png | Bin 0 -> 1127516 bytes assets/T3 Code-macOS-Default-1024x1024@4x.png | Bin 0 -> 13515814 bytes assets/logo-1024.png | Bin 0 -> 14108 bytes assets/logo.svg | 4 + assets/macos-icon-1024.png | Bin 0 -> 1127516 bytes bun.lock | 139 ++- package.json | 7 +- packages/contracts/package.json | 2 +- packages/contracts/src/git.ts | 1 + packages/contracts/src/ipc.ts | 23 + packages/contracts/src/keybindings.test.ts | 10 +- packages/contracts/src/keybindings.ts | 42 +- packages/contracts/src/project.test.ts | 98 ++ packages/contracts/src/project.ts | 104 ++ packages/contracts/src/provider.test.ts | 124 ++ packages/contracts/src/provider.ts | 65 ++ packages/contracts/src/server.ts | 10 +- packages/contracts/src/terminal.test.ts | 30 + packages/contracts/src/terminal.ts | 10 +- packages/contracts/src/ws.ts | 6 + scripts/build-desktop-dmg.mjs | 343 ++++++ scripts/sync-vscode-icons.mjs | 153 +++ 134 files changed, 11993 insertions(+), 1003 deletions(-)