文件最后提交记录最后更新时间
fix(ui): prevent IME enter from submitting inputs 6 天前
chore: scrub stale claudecodeui/claude-code-main residuals Remove legacy brand leftovers from the pre-PilotDeck era so the repo stops mentioning unrelated upstream projects and stops carrying parity fixtures that point at a third-party tree no longer present. - Drop src/context/memory/edgeclaw-memory-core/README.md (old CloudCLI install guide that referenced a claude-code-main/ sibling dir). - Delete tests + fixtures whose only purpose was to assert byte-for-byte parity against third-party/claude-code-main/** (legacy-behavior tool scenarios, dual-parity legacy context scenarios, the parity test helper, and the six parity-* tests that consumed them). - Rewrite stale code comments in apps/desktop, src/context/compaction, src/agent/sub, src/context/memory/.../app.css and PermissionsSettingsTab to drop dangling third-party/claude-code-main/... mirror references and rename claudecodeui -> PilotDeck ui/server / ui shell. - Repoint the auth-screen "PilotDeck is open source" footer link from github.com/siteboon/claudecodeui to github.com/OpenBMB/PilotDeck. - Align memory source tag written by ui/server with the one used by the in-process src/** provider (claudecodeui -> pilotdeck) so the memory_turns SQLite column is consistent across both write paths. - Update VAPID web-push contact mailto domain (claudecodeui.local -> pilotdeck.local). - Drop two stale .gitignore entries for bundle tarballs that the current build pipeline never produces. CCR (/api/ccr/* routes, CCRConfig types, <ccr-subagent-model> tag, CCR_SENTINEL) is intentionally untouched — those are kept for frontend back-compat. Comparison mentions of "Claude Code" / "Claude Sonnet 4.6" in README marketing copy are also intentional and untouched. Co-authored-by: Cursor <cursoragent@cursor.com> 8 天前
fix(ui): toggle run mode with shift tab 6 天前
fix(ui): toggle run mode with shift tab 6 天前
fix(editor): never let a failed load overwrite the real file on save Previously, when /api/projects/:projectName/file returned a non-2xx (e.g. during a transient race right after a dev-stack restart), the useCodeEditorDocument hook caught the error and called setContent(// Error loading file: ${message}\n// File: ...) That placeholder text quietly became the editor's authoritative buffer. A subsequent Ctrl+S — or any other save trigger — then PUT the placeholder through to fsPromises.writeFile, destroying the real file on disk. Because writeFile follows symlinks, this also wiped out the target of any symlinked entry the user happened to be viewing. The fix decouples error state from buffer state: - useCodeEditorDocument now tracks loadError separately and leaves content empty on failure; it also exposes a reload() callback and cancels stale loads on unmount via a captured cancelled flag. - handleSave refuses to run while loading or loadError != null, surfacing the reason via saveError instead of writing stale buffer contents. - New CodeEditorLoadError subcomponent renders an error panel with Retry / Close — it intentionally does not mount a CodeMirror surface or a Save button, so the failure mode has no path to disk. - CodeEditor branches on loadError before isBinary; locale strings added for en + zh-CN. Co-authored-by: Cursor <cursoragent@cursor.com> 19 天前
feat(ui): rewrite ui/ with EdgeClaw-derived front-end and pilotdeck bridge backend Replaces the 4-file Vite demo (gateway-browser-client, main.tsx, styles.css, vite.config.ts) with the full EdgeClaw-derived UI plus an Express bridge that talks to src/gateway through pilotdeck-bridge.js, unblocking dev-mode HMR and parity testing while the migration to the gateway-only architecture (docs/old-ui-adaptation/04-implementation-plan) is in flight. - ui/server: Express bridge serving /api/* and /ws, providers / agent / git / mcp / memory / projects / sessions routes, cron + always-on daemon plumbing, vapid push, plugin process manager. - ui/src: React 18 app — chat-v2 UI, app-shell, code editor, files, git, mcp, memory, projects, settings, skills, tasks, terminals, i18n, contexts, hooks, stores, etc. - ui/src/stores/useSessionStore.ts: session-keyed message store with a same-turn streaming dedup guard — fixes a bug where a NEW turn's __streaming_<sid> message would splice out the PREVIOUS turn's legitimate assistant tail in computeMerged, dropping the prior assistant reply and reordering the new user message after the new streaming row. - ui/public: PWA manifest, icons, screenshots, service worker. - Build/lint/typecheck config: vite.config.js (with /api /ws /shell proxy + manualChunks split), tailwind, postcss, eslint, tsconfig, .nvmrc (v22), node-pty postinstall fixup. Co-authored-by: Cursor <cursoragent@cursor.com> 24 天前
refactor(ui): unify WS command type to pilotdeck-command, eliminate SessionProvider multi-branch Replace four provider-specific WS message types (claude-command, cursor-command, codex-command, gemini-command) with a single pilotdeck-command. This fixes several bugs caused by the four-way branching: cursor not passing permissionMode, codex stripping plan mode, claude-only image support, and codex-specific cyclePermissionMode. - New sessionLauncher.ts replaces claudeSessionLauncher.ts with unified options - Merge four per-provider model states into single model/setModel - Remove __provider tag, cursorSessions/codexSessions/geminiSessions from types - Unify session deletion to single api.deleteSession() path - Remove cursor-specific sessionStorage tracking - cyclePermissionMode now includes plan mode for all providers - Backend keeps deprecated command types for back-compat Co-authored-by: Cursor <cursoragent@cursor.com> 17 天前
feat(ui): rewrite ui/ with EdgeClaw-derived front-end and pilotdeck bridge backend Replaces the 4-file Vite demo (gateway-browser-client, main.tsx, styles.css, vite.config.ts) with the full EdgeClaw-derived UI plus an Express bridge that talks to src/gateway through pilotdeck-bridge.js, unblocking dev-mode HMR and parity testing while the migration to the gateway-only architecture (docs/old-ui-adaptation/04-implementation-plan) is in flight. - ui/server: Express bridge serving /api/* and /ws, providers / agent / git / mcp / memory / projects / sessions routes, cron + always-on daemon plumbing, vapid push, plugin process manager. - ui/src: React 18 app — chat-v2 UI, app-shell, code editor, files, git, mcp, memory, projects, settings, skills, tasks, terminals, i18n, contexts, hooks, stores, etc. - ui/src/stores/useSessionStore.ts: session-keyed message store with a same-turn streaming dedup guard — fixes a bug where a NEW turn's __streaming_<sid> message would splice out the PREVIOUS turn's legitimate assistant tail in computeMerged, dropping the prior assistant reply and reordering the new user message after the new streaming row. - ui/public: PWA manifest, icons, screenshots, service worker. - Build/lint/typecheck config: vite.config.js (with /api /ws /shell proxy + manualChunks split), tailwind, postcss, eslint, tsconfig, .nvmrc (v22), node-pty postinstall fixup. Co-authored-by: Cursor <cursoragent@cursor.com> 24 天前
fix(ui): prevent IME enter from submitting inputs 6 天前
refactor: update codebase to support PilotDeck integration - Replaced references to Claude with PilotDeck across various components and utilities. - Updated session paths and permission handling to align with PilotDeck specifications. - Enhanced chat state management to include PilotDeck status. - Adjusted message formatting and permission request handling for PilotDeck compatibility. - Ensured consistent naming conventions and types for PilotDeck throughout the codebase. 6 天前
feat: add PilotDeck support to onboarding and authentication flows - Updated cliProviders to include 'pilotdeck'. - Added PilotDeck provider details in AgentConnectionsStep. - Extended CliProvider type to include 'pilotdeck'. - Implemented PilotDeck specific command and title in ProviderLoginModal. 6 天前
feat(ui): rewrite ui/ with EdgeClaw-derived front-end and pilotdeck bridge backend Replaces the 4-file Vite demo (gateway-browser-client, main.tsx, styles.css, vite.config.ts) with the full EdgeClaw-derived UI plus an Express bridge that talks to src/gateway through pilotdeck-bridge.js, unblocking dev-mode HMR and parity testing while the migration to the gateway-only architecture (docs/old-ui-adaptation/04-implementation-plan) is in flight. - ui/server: Express bridge serving /api/* and /ws, providers / agent / git / mcp / memory / projects / sessions routes, cron + always-on daemon plumbing, vapid push, plugin process manager. - ui/src: React 18 app — chat-v2 UI, app-shell, code editor, files, git, mcp, memory, projects, settings, skills, tasks, terminals, i18n, contexts, hooks, stores, etc. - ui/src/stores/useSessionStore.ts: session-keyed message store with a same-turn streaming dedup guard — fixes a bug where a NEW turn's __streaming_<sid> message would splice out the PREVIOUS turn's legitimate assistant tail in computeMerged, dropping the prior assistant reply and reordering the new user message after the new streaming row. - ui/public: PWA manifest, icons, screenshots, service worker. - Build/lint/typecheck config: vite.config.js (with /api /ws /shell proxy + manualChunks split), tailwind, postcss, eslint, tsconfig, .nvmrc (v22), node-pty postinstall fixup. Co-authored-by: Cursor <cursoragent@cursor.com> 24 天前
fix: allow workspace selection from any filesystem path (fixes #20) - Remove /tmp from FORBIDDEN_PATHS so /tmp subdirs can be workspaces - Change folder browser getParentPath('~') to return '/' instead of null, allowing navigation above home to reach /Volumes, /mnt, /tmp, etc. - Skip validateWorkspacePath in browse-filesystem endpoint — browsing is read-only; workspace creation endpoints still enforce the blacklist 5 天前
feat: add PilotDeck support to onboarding and authentication flows - Updated cliProviders to include 'pilotdeck'. - Added PilotDeck provider details in AgentConnectionsStep. - Extended CliProvider type to include 'pilotdeck'. - Implemented PilotDeck specific command and title in ProviderLoginModal. 6 天前
fix(ui): prevent IME enter from submitting inputs 6 天前
refactor(ui): unify WS command type to pilotdeck-command, eliminate SessionProvider multi-branch Replace four provider-specific WS message types (claude-command, cursor-command, codex-command, gemini-command) with a single pilotdeck-command. This fixes several bugs caused by the four-way branching: cursor not passing permissionMode, codex stripping plan mode, claude-only image support, and codex-specific cyclePermissionMode. - New sessionLauncher.ts replaces claudeSessionLauncher.ts with unified options - Merge four per-provider model states into single model/setModel - Remove __provider tag, cursorSessions/codexSessions/geminiSessions from types - Unify session deletion to single api.deleteSession() path - Remove cursor-specific sessionStorage tracking - cyclePermissionMode now includes plan mode for all providers - Backend keeps deprecated command types for back-compat Co-authored-by: Cursor <cursoragent@cursor.com> 17 天前
feat(ui): rewrite ui/ with EdgeClaw-derived front-end and pilotdeck bridge backend Replaces the 4-file Vite demo (gateway-browser-client, main.tsx, styles.css, vite.config.ts) with the full EdgeClaw-derived UI plus an Express bridge that talks to src/gateway through pilotdeck-bridge.js, unblocking dev-mode HMR and parity testing while the migration to the gateway-only architecture (docs/old-ui-adaptation/04-implementation-plan) is in flight. - ui/server: Express bridge serving /api/* and /ws, providers / agent / git / mcp / memory / projects / sessions routes, cron + always-on daemon plumbing, vapid push, plugin process manager. - ui/src: React 18 app — chat-v2 UI, app-shell, code editor, files, git, mcp, memory, projects, settings, skills, tasks, terminals, i18n, contexts, hooks, stores, etc. - ui/src/stores/useSessionStore.ts: session-keyed message store with a same-turn streaming dedup guard — fixes a bug where a NEW turn's __streaming_<sid> message would splice out the PREVIOUS turn's legitimate assistant tail in computeMerged, dropping the prior assistant reply and reordering the new user message after the new streaming row. - ui/public: PWA manifest, icons, screenshots, service worker. - Build/lint/typecheck config: vite.config.js (with /api /ws /shell proxy + manualChunks split), tailwind, postcss, eslint, tsconfig, .nvmrc (v22), node-pty postinstall fixup. Co-authored-by: Cursor <cursoragent@cursor.com> 24 天前
feat(ui): rewrite ui/ with EdgeClaw-derived front-end and pilotdeck bridge backend Replaces the 4-file Vite demo (gateway-browser-client, main.tsx, styles.css, vite.config.ts) with the full EdgeClaw-derived UI plus an Express bridge that talks to src/gateway through pilotdeck-bridge.js, unblocking dev-mode HMR and parity testing while the migration to the gateway-only architecture (docs/old-ui-adaptation/04-implementation-plan) is in flight. - ui/server: Express bridge serving /api/* and /ws, providers / agent / git / mcp / memory / projects / sessions routes, cron + always-on daemon plumbing, vapid push, plugin process manager. - ui/src: React 18 app — chat-v2 UI, app-shell, code editor, files, git, mcp, memory, projects, settings, skills, tasks, terminals, i18n, contexts, hooks, stores, etc. - ui/src/stores/useSessionStore.ts: session-keyed message store with a same-turn streaming dedup guard — fixes a bug where a NEW turn's __streaming_<sid> message would splice out the PREVIOUS turn's legitimate assistant tail in computeMerged, dropping the prior assistant reply and reordering the new user message after the new streaming row. - ui/public: PWA manifest, icons, screenshots, service worker. - Build/lint/typecheck config: vite.config.js (with /api /ws /shell proxy + manualChunks split), tailwind, postcss, eslint, tsconfig, .nvmrc (v22), node-pty postinstall fixup. Co-authored-by: Cursor <cursoragent@cursor.com> 24 天前
feat(ui): rewrite ui/ with EdgeClaw-derived front-end and pilotdeck bridge backend Replaces the 4-file Vite demo (gateway-browser-client, main.tsx, styles.css, vite.config.ts) with the full EdgeClaw-derived UI plus an Express bridge that talks to src/gateway through pilotdeck-bridge.js, unblocking dev-mode HMR and parity testing while the migration to the gateway-only architecture (docs/old-ui-adaptation/04-implementation-plan) is in flight. - ui/server: Express bridge serving /api/* and /ws, providers / agent / git / mcp / memory / projects / sessions routes, cron + always-on daemon plumbing, vapid push, plugin process manager. - ui/src: React 18 app — chat-v2 UI, app-shell, code editor, files, git, mcp, memory, projects, settings, skills, tasks, terminals, i18n, contexts, hooks, stores, etc. - ui/src/stores/useSessionStore.ts: session-keyed message store with a same-turn streaming dedup guard — fixes a bug where a NEW turn's __streaming_<sid> message would splice out the PREVIOUS turn's legitimate assistant tail in computeMerged, dropping the prior assistant reply and reordering the new user message after the new streaming row. - ui/public: PWA manifest, icons, screenshots, service worker. - Build/lint/typecheck config: vite.config.js (with /api /ws /shell proxy + manualChunks split), tailwind, postcss, eslint, tsconfig, .nvmrc (v22), node-pty postinstall fixup. Co-authored-by: Cursor <cursoragent@cursor.com> 24 天前