| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix(webui): 强度下拉补上缺失的 xhigh 选项 webui 的 EFFORT_OPTIONS 硬编码列表漏了 xhigh(全梯是 low/medium/high/xhigh/max),下拉只渲染 EFFORT_OPTIONS 里的项再按服务器 声明的 effort_levels 过滤,所以服务器即使声明了 xhigh 也永远显示不出来 (qwen3.8-27b 声明 ["low","medium","xhigh"] 在 TUI 有 xhigh、webui 没有)。 - ModelSelector.tsx EFFORT_OPTIONS: 按全梯顺序在 high/max 间补 xhigh - i18n.ts zh+en: 各补 'effort.xhigh': 'xHigh'(MsgKey 由 zh 派生,en 必覆盖) tsc --noEmit 通过 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 个月前 | |
fix(webui): 命令通知去重,恢复/确认失败不再刷屏堆叠 daemon 连不上时,恢复类通知(chat.recoveryBlocked / activeCheckFailed / cancelFailed)在每次会话加载、每次被锁定的发送尝试都会重新触发,pushCommandNotice 无脑 append 就堆成一屏完全相同的行(实测点几次发送堆十几条)。 修复:新增纯函数 lib/notices.ts 的 isDuplicateTrailingNotice——判断某条通知 是否已在当前尾部连续 notice 段里,是则跳过(setMessages 返回同引用)。尾部段被 真实消息打断即重置,故正常对话里后续真正的重复仍会显示;A,B,A,B 交替的成对恢复 通知也被尾部段查重挡住。pushCommandNotice 接入它;insertBeforeBusyAssistant 抽出一次供 dedup 与插入共用,插入条件与改前逐字一致。 注:此修复解决"刷屏"这个 UI bug,不解决"连不上"(那是本机端口/多实例问题: 桌面应用连 13457 但 webui 起在 8080)。 TDD:notices.test.ts 6 用例(blocked 刷屏/AB 不重堆/首条不算重复/异文本不误杀/ 真实内容后重置/busy 流式尾部扫描);tsc exit 0;webui 全量 216 绿。未真机。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 个月前 | |
feat(webui): 工作区项目行数量内联括号 + hover 出「在此目录新建」按钮 侧边栏工作区项目行原来把会话数当靠右 pill 展示。改为数量紧跟目录名的括号 形式(atomcode (1135)),右侧新增一个默认隐藏、行 hover 时显现的 + 按钮, 点击在该项目的工作目录下新建会话。 - Sidebar.tsx:新增 onNewInProject prop;项目行渲染数量为 (N)、追加 hover 的 sidebar-project-new 按钮(e.stopPropagation 防触发展开)。 - App.tsx:onNewInProject={handlePickCwd},复用现成的「切目录+开新会话」逻辑。 - i18n.ts:sidebar.newInProject(中「在此目录新建对话」/ 英对应)。 - app.css:count 改纯灰括号(去 pill)、name flex 调成缩不撑、新增 hover 显现的 sidebar-project-new。 验证:tsc --noEmit exit 0、webui 全量 216 绿。未真机(布局/hover 需 vite build 后浏览器确认)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 个月前 | |
feat(webui): @ 提及支持递归模糊匹配(复用 CLI 的 FileIndex + /fs/search) webui 聊天框的 @ 提及此前只能逐级选目录、单层前缀匹配,输入 @applystock 直接 "No files found";CLI 的 @ 弹窗早已支持递归、gitignore 感知、跨层子串。 两边共用同一套 walk 引擎补齐 web 端: - 抽共享:FileIndex 从 atomcode-tuix 平移到 atomcode-capabilities(tools feature 下),tuix 侧留一行 re-export shim,调用点零改;新增 filter_entries (单一匹配实现)+ search_blocking(一次性全量遍历,供 daemon 无缓存调用)。 唯一耦合 crate::platform::home_dir() → dirs::home_dir()。 - daemon 新增 GET /fs/search?path=&q=:spawn_blocking 跑共享索引,返回 {path,is_dir};/fs/list 不动。daemon 依赖显式加 tools feature。 - webui:api.ts 加 searchFiles;Chat.tsx 有过滤词走 /fs/search(debounce 150ms + AbortController),无过滤词保留 listDir 逐级浏览。搜索根用 atTargetDir 以支持绝对/~ 作用域,结果补回作用域前缀后整体插入。 - 用派生的 atSearchFor 陈旧判断替代单独的 loading 布尔:消除一帧旧结果闪烁、 避免 loading 标志卡死、搜索模式下 guard 掉多余的 /fs/list 请求。 修 code-review 的 P0:from_entries 原为 #[cfg(test)],跨 crate 后 tuix 测试 二进制链接的是非 test rlib 会缺失该构造器 → 改为无条件 pub。 验证:capabilities file_index 43 绿 / daemon search_at_mention 绿 / tuix 测试 二进制可编译 / webui tsc 干净 + 217 测试全绿。未真机。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 个月前 | |
feat(webui): @ 提及支持递归模糊匹配(复用 CLI 的 FileIndex + /fs/search) webui 聊天框的 @ 提及此前只能逐级选目录、单层前缀匹配,输入 @applystock 直接 "No files found";CLI 的 @ 弹窗早已支持递归、gitignore 感知、跨层子串。 两边共用同一套 walk 引擎补齐 web 端: - 抽共享:FileIndex 从 atomcode-tuix 平移到 atomcode-capabilities(tools feature 下),tuix 侧留一行 re-export shim,调用点零改;新增 filter_entries (单一匹配实现)+ search_blocking(一次性全量遍历,供 daemon 无缓存调用)。 唯一耦合 crate::platform::home_dir() → dirs::home_dir()。 - daemon 新增 GET /fs/search?path=&q=:spawn_blocking 跑共享索引,返回 {path,is_dir};/fs/list 不动。daemon 依赖显式加 tools feature。 - webui:api.ts 加 searchFiles;Chat.tsx 有过滤词走 /fs/search(debounce 150ms + AbortController),无过滤词保留 listDir 逐级浏览。搜索根用 atTargetDir 以支持绝对/~ 作用域,结果补回作用域前缀后整体插入。 - 用派生的 atSearchFor 陈旧判断替代单独的 loading 布尔:消除一帧旧结果闪烁、 避免 loading 标志卡死、搜索模式下 guard 掉多余的 /fs/list 请求。 修 code-review 的 P0:from_entries 原为 #[cfg(test)],跨 crate 后 tuix 测试 二进制链接的是非 test rlib 会缺失该构造器 → 改为无条件 pub。 验证:capabilities file_index 43 绿 / daemon search_at_mention 绿 / tuix 测试 二进制可编译 / webui tsc 干净 + 217 测试全绿。未真机。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 个月前 | |
fix(webui): 修项目行「+」新建后收起 + 其他目录卡「加载中」僵尸 问题1(我上一提交引入):工作区项目行的「+」接到了 handlePickCwd,它 setProjectHash('') → Sidebar 的 expanded-groups 副作用(projectHash 一变 就把展开集重置)瞬间把树收起。改:新增专用 handleNewInProject(setCwd + openNewSession,不清 projectHash),openNewSession 响应直接设回 projectHash, 已展开目录保持展开;「+」改接到它。 问题2(既有 bug,被「+」触发的 reload 诱发):loadProjectBucket 的 finally 只在 epoch 未变时清 loading spinner,任何被 reload(epoch 自增)超越的 bucket 展开 → try/catch early-return、finally 跳过 → 永久「加载中」僵尸(且没设 failed,不显示重试)。改:finally 去掉 epoch 门控,只要本次 request 仍是该 hash 最新请求就清 loading;epoch 变化仍正确丢弃 stale 数据写入,同 hash 的 更新请求仍接管 spinner(竞态安全)。被超越的展开由触发它的 loadSessions 重新加载补数据,不再留空。 验证:tsc exit 0、webui 216 绿。未真机(React 组件逻辑无单测seam,需真机确认 ①当前目录+不收起 ②其他目录不卡加载中、其上+可用;生效需 vite build)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 个月前 | |
fix(webui): 强度下拉补上缺失的 xhigh 选项 webui 的 EFFORT_OPTIONS 硬编码列表漏了 xhigh(全梯是 low/medium/high/xhigh/max),下拉只渲染 EFFORT_OPTIONS 里的项再按服务器 声明的 effort_levels 过滤,所以服务器即使声明了 xhigh 也永远显示不出来 (qwen3.8-27b 声明 ["low","medium","xhigh"] 在 TUI 有 xhigh、webui 没有)。 - ModelSelector.tsx EFFORT_OPTIONS: 按全梯顺序在 high/max 间补 xhigh - i18n.ts zh+en: 各补 'effort.xhigh': 'xHigh'(MsgKey 由 zh 派生,en 必覆盖) tsc --noEmit 通过 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 个月前 | |
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): claude.ai-inspired restyle (clay accent, warm palette, serif greeting) Retunes the --app-* design tokens (theme.css) so the whole UI follows a claude.ai aesthetic without touching component styles: - Accent: purple #7c3aed -> Claude clay/book-cloth orange #d97757 (buttons, focus ring, spinner, chips, send button). - Light theme -> warm ivory paper (#faf9f5 bg, #f0eee6 panels, warm grays); default theme is now light (settings.tsx readTheme fallback). - Dark theme -> warm charcoal (#262624 / #1f1e1d) to match. - Softer radii: 4/6/8 -> 6/10/14. - Fonts: sans body stack (+CJK fallbacks, antialiased); bundled Source Serif 4 for the landing greeting (close to claude.ai's display serif). - Input box: rounded 20px card, soft shadow, clean card bg, roomier padding. Pure styling/settings; tsc + vite build pass. dist/ and node_modules stay gitignored — shipping needs npm run build + a daemon rebuild. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> | 4 个月前 | |
feat(webui): add browser completion notifications Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 5 个月前 | ||
| 4 个月前 | ||
| 2 个月前 |