文件最后提交记录最后更新时间
fix(always-on): resolve cross-project Open Session lookup failure Always-On Dashboard aggregates events from all projects, but the Open Session button used selectedProject (current UI project) for session lookup instead of the actual project owning the session. Thread projectName from event data through the callback chain so loadClaudeSession and onSelectSession target the correct project. Co-authored-by: Cursor <cursoragent@cursor.com> 18 天前
refactor(always-on): remove legacy web execution path, rewire retry through DiscoveryFire The old web-driven Always-On path (discovery trigger → auto-poll → web chat execution) raced with the DiscoveryFire pipeline, causing duplicate plan executions. This commit removes the entire legacy path: - Add alwaysOnRerunPlan gateway RPC so the UI retry button triggers DiscoveryFire phases 2-4 (workspace → execution → report) directly - Remove MainContent auto-poll, discovery trigger handler, execution lifecycle tracking, and all associated refs/callbacks/useEffects - Delete queueExecution, updateExecution, buildExecutionPrompt from DiscoveryPlanService and the PATCH execution REST endpoint - Unregister /ao slash command; delete alwaysOnSlashActions.ts - Delete discovery-trigger-client.js and its WS handler in index.js - Delete old web discovery prompt and utility files - Remove approvalMode field from WebPlanRecord, UI types, i18n, tests Co-authored-by: Cursor <cursoragent@cursor.com> 7 天前
feat: improve attachment and tool result handling Co-authored-by: Cursor <cursoragent@cursor.com> 15 天前
fix(ui): prevent IME enter from submitting inputs 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 天前
refactor(always-on): remove legacy web execution path, rewire retry through DiscoveryFire The old web-driven Always-On path (discovery trigger → auto-poll → web chat execution) raced with the DiscoveryFire pipeline, causing duplicate plan executions. This commit removes the entire legacy path: - Add alwaysOnRerunPlan gateway RPC so the UI retry button triggers DiscoveryFire phases 2-4 (workspace → execution → report) directly - Remove MainContent auto-poll, discovery trigger handler, execution lifecycle tracking, and all associated refs/callbacks/useEffects - Delete queueExecution, updateExecution, buildExecutionPrompt from DiscoveryPlanService and the PATCH execution REST endpoint - Unregister /ao slash command; delete alwaysOnSlashActions.ts - Delete discovery-trigger-client.js and its WS handler in index.js - Delete old web discovery prompt and utility files - Remove approvalMode field from WebPlanRecord, UI types, i18n, tests Co-authored-by: Cursor <cursoragent@cursor.com> 7 天前
fix(ui): populate RunDetail execution session, outcome, and workspace from Plans entry RunDetail showed empty Execution Session, Outcome, and Workspace fields when opened from the Plans & Cron Jobs list because the direct-plan code path hardcoded projectKey and outcome to empty strings, and workspace data had migrated to work cycles. - Add projectKey prop and derive effectiveRunId from planId prefix - Use projectKey from props instead of hardcoded empty string - Extract outcome from events when available, fall back to plan status - Add planStatusToOutcome helper for status-to-outcome mapping Co-authored-by: Cursor <cursoragent@cursor.com> 7 天前
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 天前
chore: relicense to Apache 2.0 and align PilotDeck naming Switch project license and README badges from AGPL-3.0 to Apache 2.0, recognize ~/.pilotdeck as the general-chat cwd for skills, and use messageTypes.pilotdeck for assistant labels instead of the legacy claude key. Co-authored-by: Cursor <cursoragent@cursor.com> 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 天前