文件最后提交记录最后更新时间
Auto-commit at turn #1 (2 files changed) 7 小时前
fix(webui): favicon 改为本地内置,脱离外网 CDN 依赖 外链 gitcode CDN 的 favicon 在离线/内网环境无法加载。 下载到 webui/public/favicon.png,index.html 改用相对路径 ./favicon.png, 随 dist 内嵌进 daemon 二进制由本地服务。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 2 天前
fix(webui): 同步模式按会话门控实时事件,避免实时输出串进当前打开的其它会话 sync 模式下 webui 跟随 /live 总线,但把实时会话的 user/text/tool_*/state/ permission_request 事件无条件追加到"当前打开的页面"——哪怕用户从侧栏打开的是另一个 历史会话。于是 TUI 一输入,实时输出就串进了正在看的会话页面;刷新时按真实会话从磁盘 重载,串进去的内容消失。 新增 liveSessionIdRef(来自 snapshot 的 session_id),重构 onLiveEvent:snapshot 与 provider(进程级、与会话无关)先处理不门控,其余实时内容事件加门控——当 当前查看会话(activeIdRef) !== 实时会话(liveSessionIdRef) 时直接 return 不渲染。 查看实时会话时一切照旧;打开别的历史会话则实时输出/spinner/审批卡片都不再误入该页面。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 8 小时前
feat(webui): 前端脚手架 Preact+Vite+Tailwind 搭建 webui/ 前端项目骨架:Preact 10 + Vite 5 + Tailwind CSS 3, 输出至 webui/dist/(由 rust-embed 嵌入 daemon)。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 5 天前
build: 发布管线集成 webui 前端构建(npm 缺失时回退已提交的 dist) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 5 天前
fix(webui): favicon 改为本地内置,脱离外网 CDN 依赖 外链 gitcode CDN 的 favicon 在离线/内网环境无法加载。 下载到 webui/public/favicon.png,index.html 改用相对路径 ./favicon.png, 随 dist 内嵌进 daemon 二进制由本地服务。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 2 天前
docs(webui): 改为进程内起 server(解决 daemon 未分发)+ 工作目录切换 + UI mockup - daemon 抽 run_server 库,atomcode 进程内 tokio::spawn 起服务,不依赖独立二进制 - 每会话独立 working_dir + GET /fs/list 目录浏览 - 计划新增 Task 0(库化)/9(进程内启动器)/15a-b(目录切换) - webui/mockup.html: 可交互 UI 预览(聊天/批准卡片/目录切换器) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 5 天前
webui: upgrade Vite 5 -> 8 (Rolldown) for HarmonyOS build Vite 5.4 pulled esbuild ^0.21, which has no OpenHarmony arm64 native binary, so the HarmonyBrew bottle build failed at npm ci with 'Unsupported platform: openharmony arm64 LE'. Vite 8 bundles via Rolldown, which ships @rolldown/binding-openharmony-arm64, so the webui builds natively on HarmonyOS. esbuild is fully removed from the tree. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 15 小时前
webui: upgrade Vite 5 -> 8 (Rolldown) for HarmonyOS build Vite 5.4 pulled esbuild ^0.21, which has no OpenHarmony arm64 native binary, so the HarmonyBrew bottle build failed at npm ci with 'Unsupported platform: openharmony arm64 LE'. Vite 8 bundles via Rolldown, which ships @rolldown/binding-openharmony-arm64, so the webui builds natively on HarmonyOS. esbuild is fully removed from the tree. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 15 小时前
feat(webui): 前端脚手架 Preact+Vite+Tailwind 搭建 webui/ 前端项目骨架:Preact 10 + Vite 5 + Tailwind CSS 3, 输出至 webui/dist/(由 rust-embed 嵌入 daemon)。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 5 天前
feat(webui): 前端脚手架 Preact+Vite+Tailwind 搭建 webui/ 前端项目骨架:Preact 10 + Vite 5 + Tailwind CSS 3, 输出至 webui/dist/(由 rust-embed 嵌入 daemon)。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 5 天前
feat(webui): 前端脚手架 Preact+Vite+Tailwind 搭建 webui/ 前端项目骨架:Preact 10 + Vite 5 + Tailwind CSS 3, 输出至 webui/dist/(由 rust-embed 嵌入 daemon)。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 5 天前
feat(webui): 前端脚手架 Preact+Vite+Tailwind 搭建 webui/ 前端项目骨架:Preact 10 + Vite 5 + Tailwind CSS 3, 输出至 webui/dist/(由 rust-embed 嵌入 daemon)。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 5 天前
README.md

AtomCode webui

A local browser UI for AtomCode (Preact + Vite + Tailwind), served by the atomcode-daemon HTTP server. Launch it with /webui inside the TUI or atomcode webui from the CLI — both open a loopback-only page in your browser.

Develop the frontend

cd webui
npm install
npm run dev          # vite dev server on http://localhost:5173

For hot reload against a running daemon, set ATOMCODE_WEBUI_DEV so the daemon redirects page requests to the vite dev server instead of serving the embedded bundle:

ATOMCODE_WEBUI_DEV=http://localhost:5173 atomcode webui
# (or run the daemon directly)
ATOMCODE_WEBUI_DEV=http://localhost:5173 cargo run -p atomcode-daemon -- --port 13456

API calls still hit the daemon; only the static page is redirected, so you keep live HMR while talking to the real backend.

Build for release

cd webui
npm run build        # outputs webui/dist/
cargo build          # re-embeds webui/dist/ into the binary

The compiled assets in webui/dist/ are committed to the repo and embedded into the binary at build time via rust-embed (see crates/atomcode-daemon/src/webui.rs). After changing frontend code, run npm run build and commit the updated dist/ so the embedded bundle stays in sync.

Build artifacts

webui/dist/ is intentionally committed to the repository. This allows cargo build to produce a working binary in any environment without requiring a Node.js / npm toolchain — the embedded UI is always available from the committed snapshot.

The release scripts (scripts/release.sh, scripts/release-daemon.sh, scripts/build-official.sh, scripts/linux-release-linux.sh, scripts/macos-release-linux.sh, scripts/macos-release-windows.sh) each rebuild webui/dist/ via npm ci && npm run build before invoking cargo build, so release binaries always embed the latest frontend. If npm is not available in the build environment, the scripts fall back to the committed webui/dist/ with a warning rather than failing.