| 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>
| 25 天前 |
| 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>
| 25 天前 |
| chore(branding): rename PascalCase "PolitDeck" → "PilotDeck"
Earlier rebrand commit (6003f14) standardized on "PolitDeck" to match
the repository directory name. The intended brand is "PilotDeck"
(Pilot+Deck) to align with the GitHub repo's new name. Lowercase
forms (~/.pilotdeck/, pilotdeck server CLI, PILOTDECK_* env vars,
politdeck.yaml watcher logs) were already correct and remain
untouched.
Touched surfaces:
* ui/index.html: <title>PilotDeck</title> + apple-mobile-web-app-title.
* ui/public/manifest.json: name / short_name / description.
* ui/public/sw.js: comment header + push-notification fallback title.
* ui/server/index.js: startup banner ("PilotDeck Server - Ready").
* ui/server/projects.js, routes/agent.js, services/notification-
orchestrator.js: log strings + PR template + push titles.
* ui/src React components (AuthLoadingScreen, AuthScreenLayout,
LoginForm, SetupForm, ChatInterfaceV2, AppShellV2, MainAreaV2,
PilotDeckConfigTab): every user-visible "PolitDeck" string.
* ui/src/i18n/locales/{en,zh-CN}/{auth,chat,common,settings,sidebar}.json:
loading / placeholder / breadcrumb / memory description text.
* docs: 01-web-ui-replication-development-guide.md and
old-ui-adaptation/README.md.
* .cursor/skills/deploy-politdeck/SKILL.md: skill body references.
* src/pilot/config/loadPilotConfig.ts: one inline comment.
Deliberately untouched:
* Repo directory name PolitDeck/ and skill filename
deploy-politdeck/SKILL.md — those are filesystem artifacts that
predate the brand change; renaming them requires coordination with
every contributor's clone + GitHub repo rename (which already
happened upstream and is served via the redirect remote).
* artifacts/* historical logs and scripts/rename-polit-to-pilot.sh
(someone's prior migration draft); both are outside the runtime
surface and stay as-is.
Co-authored-by: Cursor <cursoragent@cursor.com>
| 22 天前 |
| 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>
| 9 天前 |
| chore(branding): rename PascalCase "PolitDeck" → "PilotDeck"
Earlier rebrand commit (6003f14) standardized on "PolitDeck" to match
the repository directory name. The intended brand is "PilotDeck"
(Pilot+Deck) to align with the GitHub repo's new name. Lowercase
forms (~/.pilotdeck/, pilotdeck server CLI, PILOTDECK_* env vars,
politdeck.yaml watcher logs) were already correct and remain
untouched.
Touched surfaces:
* ui/index.html: <title>PilotDeck</title> + apple-mobile-web-app-title.
* ui/public/manifest.json: name / short_name / description.
* ui/public/sw.js: comment header + push-notification fallback title.
* ui/server/index.js: startup banner ("PilotDeck Server - Ready").
* ui/server/projects.js, routes/agent.js, services/notification-
orchestrator.js: log strings + PR template + push titles.
* ui/src React components (AuthLoadingScreen, AuthScreenLayout,
LoginForm, SetupForm, ChatInterfaceV2, AppShellV2, MainAreaV2,
PilotDeckConfigTab): every user-visible "PolitDeck" string.
* ui/src/i18n/locales/{en,zh-CN}/{auth,chat,common,settings,sidebar}.json:
loading / placeholder / breadcrumb / memory description text.
* docs: 01-web-ui-replication-development-guide.md and
old-ui-adaptation/README.md.
* .cursor/skills/deploy-politdeck/SKILL.md: skill body references.
* src/pilot/config/loadPilotConfig.ts: one inline comment.
Deliberately untouched:
* Repo directory name PolitDeck/ and skill filename
deploy-politdeck/SKILL.md — those are filesystem artifacts that
predate the brand change; renaming them requires coordination with
every contributor's clone + GitHub repo rename (which already
happened upstream and is served via the redirect remote).
* artifacts/* historical logs and scripts/rename-polit-to-pilot.sh
(someone's prior migration draft); both are outside the runtime
surface and stay as-is.
Co-authored-by: Cursor <cursoragent@cursor.com>
| 22 天前 |
| 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>
| 25 天前 |
| feat(ui): update branding assets and adjust logo usage in components
- Added new branding assets: pilotdeck-wordmark-dark.png and pilotdeck-wordmark-light.png.
- Updated SidebarV2 and SetupForm components to use the new logo assets, enhancing visual consistency across the UI.
- Adjusted logo dimensions and classes for better responsiveness and appearance in both light and dark modes.
| 16 天前 |