| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(webui): 侧栏新增MCP菜单,技能选择时清空输入框避免累加 - sidebar-actions新增MCP按钮,展示MCP服务器列表及连接状态 - 调用后端/mcp/status接口获取MCP服务器信息 - MCP弹出面板显示服务器名称、状态指示点、工具数量 - 新增MCP相关i18n翻译键(中/英) - insertAtCursor增加replaceSkill参数,选择技能时清空输入框再插入 - AttachMenu技能选择也走replaceSkill逻辑 - collapsed rail中新增MCP图标按钮 | 4 个月前 | |
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): Provider 列表支持编辑已有配置 模型配置弹窗每个 Provider 条目在「删除」左侧新增「编辑」按钮,点击在弹窗中 修改 type/model/base_url/api_key,走后端已有的 PATCH /providers/:name: - name 为主键,编辑态只读不可改; - API Key 留空表示保留现有,仅填写时才覆盖; - 「设为默认」勾选后对非默认项单独调用 POST /providers/:name/default (PATCH 不处理默认项)。 原「添加模型」弹窗泛化为 ProviderFormDialog,添加/编辑共用一套表单。 新增 api: updateProvider / setDefaultProvider;i18n 中英补齐 edit 相关文案。 附带落入此前工作区里已就绪、与本改动同文件交织的删除确认弹窗 (ConfirmDialog,替代系统 confirm/alert)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> | 5 个月前 | |
feat(webui): put the type on a scale, in rem, adjustable Every font-size in the stylesheet was a fixed px — 12px and 11px alone accounted for 82 of 144 declarations — with no root size to hang anything off. The only viewport-relative size was the landing title, clamp(32px, 2.4vw, 40px). On a wide display that is a heading growing to its 40px cap above body copy pinned at 12–14px: fine at ~1400px, too small to read at 2000px+, and nothing in the app to fix it with. Browser zoom "works", but it is remembered per origin and silently rescales screenshots, bug reports and anyone pairing on the same page. Three changes, in order of how much they matter: **px → rem.** All 144 declarations become rem against a 16px base, and the base becomes calc(16px * var(--app-font-scale, 1)). One declaration now sizes all text. Type-only on purpose: spacing, radii and container widths stay in px, so text grows inside a stable layout instead of magnifying the page. (An earlier attempt used zoom on :root — one line instead of 144 — but it scales layout too, and vw is measured against the *unzoomed* viewport, so the min(…, Nvw) caps and calc(100vw - 32px) popover widths drift as it goes up. Not worth the smaller diff.) **A six-step scale.** The px values were not a scale, they were an accumulation: 8, 9, 10, 11, 12, 12.5, 13, 13.5, 14, 15, 16, 17, 18 — thirteen sizes, several a half-pixel apart and therefore indistinguishable, four of them below the 11px floor both Material and Apple HIG set for their smallest role. They now snap to six rungs — 12 / 13 / 14 / 16 / 18 / 20px, i.e. 0.75 / 0.8125 / 0.875 / 1 / 1.125 / 1.25rem — and body gets the line-height: 1.5 it never had, which is also the threshold WCAG 1.4.12 tests against. Nothing lands below 12px any more. **A setting.** SettingsProvider gains fontScale, persisted to localStorage beside theme and lang and applied the same way: small / normal / large / xlarge at 0.875 / 1 / 1.125 / 1.25. It lives in the existing theme dialog rather than earning its own sidebar entry — both answer "how should this look". Also drops maximum-scale=1,minimum-scale=1,user-scalable=no from the viewport meta. That is a mobile pattern with no business in a desktop app: it does not affect browser zoom, but it does disable pinch-zoom on trackpads and touchscreens, which is an accessibility regression for exactly the users who need it — and WCAG 1.4.4 asks for 200% resize to work. Verified on this base: no px font-size or line-height survives under webui/src, the whole UI uses exactly the six rungs, tsc --noEmit is clean, the bundle builds, and all 124 frontend tests pass. | 2 个月前 | |
feat(webui): 输入框附件菜单 + 文件选择器(AttachMenu/FilePicker)及相关改动 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> | 5 个月前 | |
fix(webui): keep blocking interactions in composer Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 个月前 | |
fix(model-sync): reconcile auth and provider state across clients | 3 个月前 | |
chore: remove stale legacy architecture wording | 3 个月前 | |
fix(approval): align Accept Edits across clients | 3 个月前 | |
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): keep blocking interactions in composer Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 个月前 | |
fix(webui): keep blocking interactions in composer Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 个月前 | |
feat(webui): 编辑/新建模型支持选择上下文窗口(AtomGit 锁定) 在模型表单新增「上下文窗口」下拉,预设 32K/64K/128K/256K/512K/1M; AtomGit 托管 provider 的上下文由平台固定,下拉禁用并提示不可修改、 不下发该字段。旧配置若为非预设值,并入选项首位避免静默改写。 后端 POST/PATCH 已支持 context_window,本次为纯前端接入。 - SettingsDialogs: 新增 contextWindow 选择 + isAtomGit 锁定逻辑 - Select: 新增 disabled 支持 - api: CreateProviderBody/UpdateProviderBody 增加 context_window - i18n: 新增 settings.contextWindowLocked(zh + en) - dist: 重建 index.html 指向新 bundle Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> | 5 个月前 | |
fix(session): recover legacy conversations from empty native stubs Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 3 个月前 | |
fix(webui): reuse provider accounts when adding models 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): keep blocking interactions in composer Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 4 个月前 | ||
| 2 个月前 | ||
| 5 个月前 | ||
| 2 个月前 | ||
| 5 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 5 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 |