文件最后提交记录最后更新时间
feat(webui): Provider 排序/编辑按钮右对齐/自定义下拉 + /指令和@文件补全 - Provider 列表:默认排第一,其余按名称排序 - 编辑/删除按钮右对齐 - 自定义 Select 组件替换原生 select 下拉 - / 斜杠技能补全(懒加载、大小写不敏感过滤、键盘导航) - @ 文件/目录补全(调用 /fs/list、目录切换后刷新) - 新增 Select.tsx 组件 - 技能列表统一按名称排序 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> 3 天前
fix(webui): format tool-call names/args like the TUI (mcp · server · tool) The webui showed raw mcp__open-meteo__geocoding {"count":3,…} (plus a CSS capitalize that mangled it to Mcp__open-Meteo__…), while the TUI shows mcp · open-meteo · geocoding(count: "3", …). Port the TUI helpers so both match: - displayToolName mirrors display_tool_name: mcp__server__toolmcp · server · tool; other names snake_case → PascalCase. Drop the .tool-name text-transform: capitalize (the helper now cases correctly). - formatToolDetail mirrors format_tool_detail: MCP args as key: "value", …; builtin tools show their salient arg (bash command, grep pattern, read basename, …); common-key fallback. Full raw args stay available by expanding the row. tsc + vite build pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 21 小时前
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> 4 天前
feat(webui): 目录选择器支持新建文件夹(POST /fs/mkdir) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 5 天前
feat(webui): 输入框附件菜单 + 文件选择器(AttachMenu/FilePicker)及相关改动 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 5 天前
fix(webui): 用户头像用 avatar_url 显示(回退首字母)+ 设置按钮移到底栏最右;会话 URL 持久化 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 5 天前
fix(webui): assistant 消息渲染 Markdown(marked + DOMPurify 净化) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 7 天前
feat(webui): reasoning-effort selector (high/max) for DeepSeek V4 Add an effort selector beside the model picker in the input footer, shown only for models that accept DeepSeek's reasoning_effort (the deepseek-v4 family). Options: default / high / max. Backend: - /models ModelInfo gains effort_applicable + reasoning_effort so the webui can gate the selector and reflect the active value. - New POST /live/reasoning_effort persists the chosen effort to the target provider's config.reasoning_effort. build_turn_parts re-reads config and rebuilds the provider each turn, so it applies on the next turn for both /live and /chat — no new global, no message-body change. Frontend: - ModelSelector renders an independent effort dropdown next to the (unchanged) model dropdown; calls /live/reasoning_effort on change, reflects current.reasoning_effort, and hides for non-V4 models. - api.ts: ModelInfo fields + postLiveReasoningEffort(). - i18n.ts: effort.{label,default,high,max} in zh + en. - app.css: effort-selector / effort-prefix styles. webui/dist is gitignored; shipping requires npm run build + a daemon rebuild (rust-embed embeds dist at compile time). cargo check + tsc --noEmit + vite build all pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 23 小时前
feat(webui): add 'always allow this tool' button for MCP permission prompts Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 1 天前
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> 3 天前
fix(webui): 全量修复输入法组字回车误触发(CwdPicker 跳转 / 重命名保存加 isComposing 守卫) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 5 天前
fix(webui): hand the one-time token to an HttpOnly cookie instead of leaving it in the URL The webui token was passed as /?token=<uuid> and read by the SPA from location.search, so it lingered in the address bar / history where a malicious browser extension could read it (CWE-598 / CWE-522), then drive the local daemon API (read history, send prompts, burn model tokens). Adopt the BFF-style cookie handoff for the local daemon: - serve_webui_index (the / route): on a valid ?token=, set an HttpOnly; SameSite=Strict cookie and 302 to a token-less URL (preserving session/sync). The SPA then loads cookie-only and same-origin fetch/SSE carry the cookie automatically — no token in the URL. - require_webui_token accepts the token from the atomcode_webui cookie OR the Authorization header (back-compat). - get_tunnel_status reads the token from cookie-or-header too, so the server-built remote share URL keeps working post-handoff. - Front-end: drop the now-unreadable getToken() from the loopback share fallback (functional remote links come from server remote_url). Secure flag omitted (webui is plain HTTP on localhost/LAN); HttpOnly + SameSite=Strict carry the protection. Note: the /webui TUI output and the remote-access panel still show a token-bearing URL by necessity (authorized terminal / remote-device bootstrap) — out of scope for the location.search vector this closes. Tests: cookie parsing + query-string helpers; existing daemon suite green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 1 天前
fix(webui): 移动端设置菜单被抽屉裁剪 移动端侧边栏为 transform 抽屉(.session-list),其 transform 使其成为 fixed 后代的包含块,叠加 overflow:hidden 会裁剪菜单。将设置菜单、会话 kebab 菜单及重命名/删除弹窗通过 createPortal 挂到 document.body,使其相 对视口定位、不再被抽屉裁剪;桌面端无 transform 祖先,定位不变。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 3 天前