Releases: dark-hxx/CLI-Manager
Releases · dark-hxx/CLI-Manager
CLI-Manager V1.1.7
安装
| 平台 | 格式 |
|---|---|
| Windows | .msi 安装包 |
| macOS (Apple Silicon) | .dmg 磁盘映像 |
| Linux | .deb / .AppImage |
- Windows 首次安装可能触发 SmartScreen 提示,点击"仍要运行"继续
- macOS 应用未经 Apple 签名/公证,首次打开可能提示"已损坏"或"无法验证开发者"
macOS 安装说明
如果已拖入"应用程序"目录,执行:
xattr -cr /Applications/CLI-Manager.app
open /Applications/CLI-Manager.app也可以在 Finder 中右键应用图标,选择"打开",或在"系统设置 → 隐私与安全性"中点击"仍要打开"。
变更日志
Git 变更树分组展示
- Group By Directory / Module 切换:Git 变更面板顶部新增分组模式切换下拉(图标:Directory=文件夹树、Module=分层),支持两种分组方式:
- Directory 模式(默认):按目录树展示变更,连续单子目录链压缩成两层显示(顶层目录独立一行,后续包路径压缩成第二行),减少深层 Java/package 路径的纵向占用。
- Module 模式:按第一级目录(视为模块)分组,每个顶层目录作为独立的模块根节点(加粗显示),模块内部继续应用 Directory 压缩逻辑。
- 目录链压缩算法:
collectCompactDirectoryChain()从当前目录的唯一子目录开始向下收集连续单子目录链,仅改变显示层级,保留原始树结构、折叠状态、文件路径与暂存操作语义。模块根节点不参与压缩,单独显示模块名。 - 持久化:分组模式存入
settingsStore.gitGroupBy,重启应用后恢复上次选择。 - 数据层:
gitStore新增buildTreeByModule()函数,按文件路径第一级目录分组构建树;rebuildTrees()根据gitGroupBy设置动态选择buildTree()或buildTreeByModule()。 - 类型扩展:
GitTreeNode新增isModuleRoot?: boolean标识模块根节点,GitGroupByMode类型定义分组模式。
子代理 Hook 与转录
- Claude/Codex 子代理 Hook:补齐
SubagentStart/SubagentStop安装、卸载、状态检查与后端事件白名单;Hook 负载透传agentId、agentType、ClaudeagentTranscriptPath与 CodextranscriptPath,并沉淀到 CLI Hook contracts。 - 子代理转录面板:收到子代理启动事件后自动打开只读转录 pane,订阅 transcript jsonl,支持
SubagentStop后标记结束并延迟关闭;前端路径选择按agentTranscriptPath ?? transcriptPath兜底。 - Codex transcript 渲染:
SubagentTranscriptView支持 Codexresponse_item中的 message /output_text/function_call内容,并复用应用 Markdown 渲染器展示子代理输出。 - Hook 启动修复:Windows 原生命令使用 PowerShell wrapper 处理含空格的 exe 路径,WSL/POSIX 保持 shell 可执行形式,避免启动时 hook 命令解析错误。
UI 修复
- 修复项目列表空态横向滚动条:项目侧边栏在空态(无项目/加载中/折叠态)时出现不必要的横向滚动条。原因是
overflow-y: auto让浏览器将overflow-x隐式计算为auto,空态组件宽度略微溢出即触发滚动条。给 3 处滚动容器统一添加overflow-x-hidden,锁定只允许纵向滚动。 - 终端 Tab 栏滚动增强:Tab 数量溢出时新增左右滚动按钮与鼠标滚轮横向滚动(触控板取 deltaX、鼠标滚轮取 deltaY),并将滚动遮罩渐变由 18px 扩大到 36px,避免 Tab 标签被左/右/列表按钮遮挡。新建终端时若已滚动到最右,激活的末尾 Tab 自动吸附顶格,右滚动按钮同步禁用。
- 修复 ccusage 安装弹框被遮挡:开启 ccusage 统计后若未安装 bun/bunx,点击「安装 Bun/bunx」弹出的确认框被压在统计面板下方(统计面板
z-index: 57,而通用ConfirmDialog基座固定z-50),用户无法点击确认。ConfirmDialog新增可选zIndexprop,DialogContent同步支持overlayStyle透传到 overlay;ccusage 面板调用时传入zIndex={60}覆盖到统计面板之上,其余 5 处ConfirmDialog调用仍用默认 z-50 不受影响。 - ccusage 工具安装补充结果反馈:此前点击安装后无任何提示,无法判断成败。安装成功时弹出绿色 toast 并附 Bun/bunx 版本号;命令执行成功但仍未检测到 bunx 时弹出黄色提示引导重启或检查 PATH;失败时弹出红色 toast 附错误信息。
终端与子代理分屏
- 子代理自动呈现:子代理转录以伪会话挂入现有 pane/tree,默认自动显示但不抢主终端焦点;Tab 标题优先使用可读的
agentType/ 昵称,缺失时回退为「子 Agent」。 - 辅助会话入口:分屏弹层可按当前会话/项目推断 Claude 或 Codex,并通过内置 pane 启动同类辅助会话;保留普通空终端、项目分屏和复制终端行为。
- 终端动作栏位置:终端动作侧栏移到终端区域最右侧,位于 Git / 实时统计侧栏之后,原有按钮、拖拽排序与弹层行为保持不变。
Git 变更与历史 Markdown
- Git 变更面板紧凑化:筛选按钮在窄面板下隐藏文字但保留图标、计数、tooltip 与可访问标签;Git 变更面板、实时统计面板和合并侧栏默认宽度下调,减少对终端空间的占用。
- 历史 Markdown GFM 支持:历史消息 Markdown 渲染接入
remark-gfm,补齐表格、任务列表、删除线、引用、分隔线、标题、链接与代码块样式,同时继续禁用 HTML 渲染。
其他
- 修复项目列表空态横向滚动条;增强终端 Tab 栏溢出滚动按钮、鼠标滚轮横向滚动与新终端末尾吸附体验。
- 重写项目
CLAUDE.md,补充当前架构、命令、调试与关键约束说明。
CLI-Manager V1.1.6
安装
| 平台 | 格式 |
|---|---|
| Windows | .msi 安装包 |
| macOS (Apple Silicon) | .dmg 磁盘映像 |
| Linux | .deb / .AppImage |
- Windows 首次安装可能触发 SmartScreen 提示,点击"仍要运行"继续
- macOS 应用未经 Apple 签名/公证,首次打开可能提示"已损坏"或"无法验证开发者"
macOS 安装说明
如果已拖入"应用程序"目录,执行:
xattr -cr /Applications/CLI-Manager.app
open /Applications/CLI-Manager.app也可以在 Finder 中右键应用图标,选择"打开",或在"系统设置 → 隐私与安全性"中点击"仍要打开"。
变更日志
WSL Hook 与历史会话支持
- WSL 终端启动时自动通过
WSLENV转发CLI_MANAGER_TAB_ID、CLI_MANAGER_NOTIFY_PORT与CLI_MANAGER_NOTIFY_TOKEN,修复 Claude/Codex 在 WSL 内运行时 Hook 回调环境变量丢失、实时状态无法回传的问题。 - Hook 安装逻辑支持 WSL 配置目录:当 Claude/Codex 配置目录位于
\\wsl.localhost\...或\\wsl$\...时,写入的 CLI-Manager 可执行路径会转换为/mnt/<drive>/...形式,避免 Linux shell 执行 Windows 路径失败。 - Hook 设置页新增 Claude/Codex 配置目录手动输入框,可直接粘贴 WSL UNC 路径,作为系统选目录弹窗无法顺畅选择 WSL 目录时的兜底。
- 历史会话项目匹配支持 Windows 路径与 WSL
/mnt/<drive>/...路径互通,修复同一项目在 WSL 内产生的 Claude 会话无法归入对应 Windows 项目历史/统计的问题。
CLI-Manager V1.1.5
安装
| 平台 | 格式 |
|---|---|
| Windows | .msi 安装包 |
| macOS (Apple Silicon) | .dmg 磁盘映像 |
| Linux | .deb / .AppImage |
- Windows 首次安装可能触发 SmartScreen 提示,点击"仍要运行"继续
- macOS 应用未经 Apple 签名/公证,首次打开可能提示"已损坏"或"无法验证开发者"
macOS 安装说明
如果已拖入"应用程序"目录,执行:
xattr -cr /Applications/CLI-Manager.app
open /Applications/CLI-Manager.app也可以在 Finder 中右键应用图标,选择"打开",或在"系统设置 → 隐私与安全性"中点击"仍要打开"。
变更日志
Git 变更面板:推送 / 拉取与暂存模型重构
推送 / 拉取
- 分支状态行:提交栏顶部新增当前分支与
↑ahead ↓behind(待推送 / 落后数);无 upstream 显示「未跟踪远端」,detached HEAD 单独标识。 - 推送:ahead>0 或无 upstream 时可点;无 upstream 自动
push -u origin <branch>建立跟踪。 - 拉取(分体按钮,JetBrains 式):behind>0 时出现「拉取」按钮,主按钮默认合并拉取(
pull --no-rebase --no-edit --autostash,可快进时自动快进、分叉时生成合并提交);下拉可选变基(pull --rebase --autostash)或仅快进(pull --ff-only)。--autostash自动暂存脏工作区并在完成 / 中止时恢复,分叉场景不再需要切到终端手动处理。 - 冲突处理:合并 / 变基产生冲突时,冲突文件以独立「C」状态红色标识;面板出现「合并 / 变基进行中」横幅——合并解决后在下方提交即完成,变基解决并暂存后点「继续」(
rebase --continue,跳过编辑器);任意时刻可「中止」回到拉取前(依仓库状态自动merge --abort/rebase --abort,恢复 autostash),绝不静默丢改动。 - 分支状态扩展:
git_branch_status新增pendingOp(merge / rebase 进行中,变基 detached 期间亦可靠上报),刷新后冲突横幅与「继续 / 中止」入口依然准确。 - 走系统 git:本地只读用 libgit2,网络操作(push/pull)shell out 系统
git,继承用户凭据管理器、SSH 与 git config 代理;错误码映射为可读中文(认证失败 / 远端领先 / 未跟踪远端 / 未配置远端 / 找不到 git)。 - 后端命令:
git_branch_status(只读分支 / ahead-behind / pendingOp)、git_push、git_pull(策略 merge/rebase/ff-only,冲突感知)、git_pull_abort、git_rebase_continue、git_commit_paths(按路径 pathspec 提交)。
暂存模型重构(区分「跟踪」与「本次提交」)
- 未跟踪文件:复选框改为前端「选中」态——勾选不再立即
git add,提交时才统一 add;右键菜单保留真实「加入跟踪(git add)」立即操作;文件始终留在「未跟踪」分组,勾选完全可逆。 - 新增(A)文件:复选框为「本次是否提交」选择态——取消勾选不再 unstage / 退回未跟踪,文件保持已跟踪/暂存,仅本次提交不包含(提交走
git commit -- <paths>仅提交选中路径)。 - 目录与全选:目录级、顶部全选/全不选同步该模型——取消时 M/D/R 真实 unstage,未跟踪文件取消选中、A 文件仅取消勾选(保持跟踪),任意层级都不会把已加入跟踪的文件退回未跟踪。
- 提交栏计数:改为「待提交 N 个文件(含 M 未跟踪)」口径,按已暂存 − 取消勾选的 A + 选中未跟踪计算。
视觉
- Git 变更文件列表字号整体放大(文件 / 目录名 11px→13px,增删行数与计数徽标同步上调),与 14px 文件图标比例更协调。
历史用量分析图表交互修复与加载缓存
- 图表悬浮稳定:Token/费用趋势、模型用量排行等 ECharts 图表此前 series 颜色使用 CSS 变量(
var(--accent)/color-mix()),悬浮进入 emphasis 状态时 ECharts 无法解析派生高亮色,导致折线/柱状整体消失。EChart包装层新增颜色解析(隐藏探针元素 +getComputedStyle把var()/color-mix()解析为具体 rgb),并用MutationObserver监听主题/调色板属性变更后重解析;趋势图各 series 关闭 emphasis,悬浮不再吞掉费用柱。 - Token/费用趋势:新增「缓存」折线(缓存命中 + 写入合并);总 Token / 输入 / 输出 / 缓存改用固定可区分配色(避免部分主题下 accent≈success 撞色重复),费用柱改中性灰不与缓存撞色。
- 活跃时段分布:改为响应式宽度(铺满容器、无横向滚动条);改为单指标「消息」柱(会话与消息量级悬殊、非趋势关系,不再混在同一坐标轴),会话数移入光标 tooltip 与摘要;移除悬浮的选中描边框。
- 会话热力图:短范围(≤14 天,如近 7 天)改为横向条形(按最大值归一化铺满、按活跃强度着色),避免 GitHub 式网格在短范围下大片空旷;30/90 天保留热力网格。
- 卡片尺寸统一:项目排行 / 模型用量排行 / 来源对比 / 活跃时段四张卡片统一固定高度,内容溢出时内部滚动并套用全局滚动条样式。
- 加载提速(冷启动):历史会话索引此前为纯内存,每次启动后首个统计请求需全量解析全部 JSONL。新增 per-file 解析结果磁盘持久化(写入 appLocalData,带版本与指纹校验、临时文件 + rename 原子写),冷启动载入后仅重解析变更文件;删除会话时一并清理磁盘缓存。
Git 变更面板增强(真实行数 / 实时监听 / 语法高亮 / 暂存提交)
真实 diff 行数统计
- 修复每文件 +N/−M 恒为 0 的问题:
git_get_changes此前对 diff 行数返回占位值(0, 0)(get_diff_stats_git2未实现),文件树虽已渲染增删数字却始终为 0。现以单次diff_tree_to_workdir_with_index(含未跟踪、context_lines(0))+foreach行回调,按路径累加真实新增/删除行数,替代原本逐文件多次 diff 的 N 次扫描。 - 面板顶部总增删聚合:Git 变更面板摘要区新增整仓
+X −Y汇总(绿/红,与终端配色一致)。 - 边界处理:未跟踪文件计为
+行数 −0、删除文件计为+0 −行数、二进制/纯模式变更为 0/0;空仓库 / unborn HEAD 与 diff 构造失败均优雅降级,不 panic。
fs-watcher 替代定时轮询
- 实时文件监听:新增
git_watcher桥接(基于notify+notify-debouncer-mini),监听当前项目目录,去抖 400ms 后向前端发git-changed事件;面板由事件驱动刷新,去掉原 4s 固定轮询与最长 4s 延迟。 - 精准监听范围:监听工作区文件变化与
.git/index、.git/HEAD(覆盖编辑 / 暂存 / 提交 / 切分支),过滤.git/objects、.git/logs、*.lock等噪声。 - 降级兜底:watcher 初始化失败(网络盘 / WSL 等 notify 不可用)时自动降级为 15s 慢轮询;保留失焦/隐藏不刷新、重新聚焦立即刷新一次。
- 生命周期与多窗口隔离:单 watcher 绑定当前活动项目,切项目/关闭面板即释放;
git-changed事件携带projectPath,各窗口按自身当前项目过滤,天然隔离。 - 新增 Tauri 命令
git_watch_start/git_watch_stop,前端不可信路径在后端做存在性校验。
Diff 语法高亮
- diff 弹窗按语言高亮:
DiffViewerModal接入react-diff-view原生支持的 refractor(Prism) tokenize,按文件扩展名启用语法高亮,token 高亮叠加在既有 +/− 行底色之上,行号、行选择与 hunk/行级回滚交互保持不变。 - 精选语言控体积:
refractor/core按依赖顺序注册 22 种常见语言(js/jsx/ts/tsx/json/css/scss/html/md/bash/rust/python/yaml/toml/sql/go/java/c/cpp/ruby/diff 等);未知语言或高亮失败时回退无高亮渲染,diff 始终可读。 - 新增
src/components/git/diffHighlight.ts(refractor 实例与语言探测),新增 Prism token 深色配色到diffViewer.css,scoped 到.diff-viewer-container。
文件级暂存与面板内提交
- 暂存 / 取消暂存:变更文件行新增暂存复选框(勾选 =
git add进暂存区,取消 = 移出),目录行三态复选框可批量暂存/取消整个目录;头部单个三态全选框(全选/部分/未选)一键全部暂存或取消。 - 面板内提交:底部新增提交栏,填写信息后「提交 (N)」提交已暂存内容(支持 Ctrl/Cmd+Enter);空信息或无暂存时禁用;空信息 / 无暂存 / 未配置 git 身份均有明确错误提示;支持仓库首个提交(unborn HEAD)。
- 未跟踪文件单独成组:仿 JetBrains 将未跟踪(Unversioned)文件独立为「未跟踪文件」分组,已跟踪变更归入「改动」分组;两组折叠状态相互隔离(修复同名目录折叠串联)。
- 右键 Git 管控:文件 / 目录行右键菜单新增「暂存(git add)/ 取消暂存」,与复选框等价;复选框 hover 提示明确标注 git add / 移出暂存区。
- 后端:新增
git_stage_file/git_unstage_file/git_stage_paths/git_unstage_paths/git_stage_all/git_unstage_all/git_commit命令(纯 libgit2,前端路径不可信校验,批量操作单次 index 写入避免刷新闪烁)。
历史用量分析 UI
- 历史用量分析面板按更轻量的 Apple 风格重构:KPI 改为图标化指标块,趋势、项目排行、模型排行、来源对比、热力图与会话列表统一为更克制的圆角区块与标题样式。
- Token / 费用趋势、模型排行、项目排行、来源对比统一使用主题派生色,移除图表中的高饱和硬编码紫、橙、蓝色,随当前主题自动适配。
- 热力图组件去除内部重复标题和外层重边框,改由父级区块提供统一标题;空态也收敛为轻量文案。
- 24 小时活跃分布图移除内部 C10 编号文案,柱形圆角与「会话 / 消息」配色改为主题 token,视觉与统计面板其他图表保持一致。
ccusage 用量分析
- ccusage 用量分析面板同步接入图标化 KPI、峰值日摘要、Token 构成、趋势图、热点图、模型排行等轻量化样式,减少重卡片堆叠。
- ccusage 趋势、热点、模型排行和 tooltip 统一使用共享统计色板,峰值、费用、输入/输出/缓存等语义色与历史用量分析保持一致。
- 报告上下文、数据结构摘要等辅助信息改为低干扰边框与主题表面色,减少灰色块割裂感。
主题与交互细节
- 新增统计图表共享色板
statsPalette.ts,集中管理 Token 系列色、峰值色、费用填充色和图表 tooltip 样式。 - 修复显式使用主题背景类的 Mantine
Card在深色主题下仍落到默认灰底的问题。 - 侧边栏树节点文字色从
on-surface-variant收敛到text-secondary,提升与当前主题 token 的一致性。 - 禁用 WebView 默认右键菜单,避免空白区域弹出系统菜单;组件自定义右键菜单仍按现有逻辑工作。
CLI-Manager V1.1.4
安装
| 平台 | 格式 |
|---|---|
| Windows | .msi 安装包 |
| macOS (Apple Silicon) | .dmg 磁盘映像 |
| Linux | .deb / .AppImage |
- Windows 首次安装可能触发 SmartScreen 提示,点击"仍要运行"继续
- macOS 应用未经 Apple 签名/公证,首次打开可能提示"已损坏"或"无法验证开发者"
macOS 安装说明
如果已拖入"应用程序"目录,执行:
xattr -cr /Applications/CLI-Manager.app
open /Applications/CLI-Manager.app也可以在 Finder 中右键应用图标,选择"打开",或在"系统设置 → 隐私与安全性"中点击"仍要打开"。
变更日志
侧边栏项目树多选与工具栏精简
- 移除项目树顶部操作栏与搜索框(「启动筛选 / 启动已选 / 清空」按钮与 Search 输入框,原
SidebarSearch组件已删除);多选项目的启动入口保留在项目右键菜单「启动已选 (N)」,多选功能不丢失。 - 多选新增 Windows 风格 Shift 连续范围选择:以最近一次非 Shift 选中项为锚点,Shift 单击按可见顺序选中整段区间(自动跳过已折叠分组下的子项);
Ctrl/⌘+Shift在已有选择上叠加区间。 - 跨平台兼容 macOS:切换单项用
Ctrl(Win/Linux) 或Cmd(Mac),范围选择用Shift;键盘空格选中也会同步更新锚点,便于随后用 Shift 扩展。
项目树图标与徽章
- 项目树前导图标改为 CLI 厂商品牌图标(复用
VendorIcon):可识别厂商时以品牌图标作为项目图标,无法识别厂商时回退终端图标。 - 取消项目行前导的运行状态绿点(运行 / 退出 / 异常状态仍通过
data-status属性保留供样式使用)。 - 移除项目名后重复的 CLI 徽标(图标已上移到前导位),避免同一厂商图标显示两次。
- 「项目树徽章」开关调整为仅控制供应商徽标、路径异常与分组数量;CLI 厂商图标作为项目图标常驻显示,不再受该开关控制,设置页开关说明同步更新。
供应商设置页修复
- 修复环境变量卡片中长变量名(如
ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME)与右上角复制按钮重叠的问题:.prov-env-key增加overflow-wrap: anywhere/word-break: break-word允许长 key 换行,复制按钮加shrink-0固定不被压缩。
终端分屏输出修复
- 修复左右 / 上下分屏时,非聚焦一侧终端停止实时输出、需重新点击该侧才恢复刷新的问题。根因是输出渲染门控复用了「全局聚焦会话」判断:分屏下两个 pane 同时可见,却只有被聚焦的一个被判为活跃,另一侧的 PTY 输出被暂存进后台 ring buffer(点击激活才 flush)。
- 现将终端的实时输出渲染与尺寸自适应改由「在所属 pane 内可见」判定(新增
isVisible)驱动,键盘 / 光标 / 输入法仍跟随「全局聚焦」(isActive);后台 Tab(display:none)的省渲染缓冲机制保持不变。
统计与计费口径
- 历史统计费用统一以「设置 → 模型价格」中的
model_prices为唯一计费来源;删除或缺失模型价格后计入未定价,不再回退到后端硬编码价格。 - 历史 JSONL 中自带的显式 cost 不再覆盖本地模型价格计算,避免内部历史/实时统计与模型价格管理不一致。
- 统一 Token 缓存展示文案:将缓存读/Cache Read 收敛为「缓存命中」,将缓存写/Cache Creation 收敛为「缓存写入」。
界面一致性
- 终端 Tab 保留状态圆点与悬浮提示,移除标签上可见的「运行中 / 已完成 / 异常 / 待处理」状态文字,降低 Tab 宽度占用。
- 设置页外层分组容器从 Mantine
Card迁移为统一原生容器,背景、边框和圆角与「关于」区块保持一致。 - 全局可见滚动条统一为 Git/Diff 视图风格,并同步收敛
.ui-thin-scroll与 xterm viewport 滚动条样式。
CLI-Manager V1.1.3
安装
| 平台 | 格式 |
|---|---|
| Windows | .msi 安装包 |
| macOS (Apple Silicon) | .dmg 磁盘映像 |
| Linux | .deb / .AppImage |
- Windows 首次安装可能触发 SmartScreen 提示,点击"仍要运行"继续
- macOS 应用未经 Apple 签名/公证,首次打开可能提示"已损坏"或"无法验证开发者"
macOS 安装说明
如果已拖入"应用程序"目录,执行:
xattr -cr /Applications/CLI-Manager.app
open /Applications/CLI-Manager.app也可以在 Finder 中右键应用图标,选择"打开",或在"系统设置 → 隐私与安全性"中点击"仍要打开"。
变更日志
厂商品牌图标全面接入
- 新增
VendorIcon组件(基于@lobehub/icons),按名称推断厂商(claude / codex / openai / gemini 等)并渲染对应品牌图标。 - 铺开范围:新建/编辑项目的「CLI 工具」输入框、终端 Tab(含拖拽态)、项目树 CLI 徽标、模型构成图、实时统计与历史会话统计的「模型」行与「来源」徽章。
- 项目树 CLI 徽标从文字胶囊升级为品牌图标;无法识别厂商时回退原文字胶囊,保证未知工具仍有展示。
设置页苹果风重塑
- 「供应商」与「模型价格」两个设置页按苹果设计语言重构(大标题、留白、分层卡片)。
Git 变更面板
- 统一变更状态配色,并为筛选条添加图标,与整体视觉对齐。
终端修复
- 修复搜狗输入法候选框固定在窗口左上角不跟随光标的问题。
- 恢复 Codex 终端回滚滚动条。
版本发布
- 应用版本同步升级到 1.1.3(npm、Cargo、Tauri 配置)。
CLI-Manager V1.1.2
安装
| 平台 | 格式 |
|---|---|
| Windows | .msi 安装包 |
| macOS (Apple Silicon) | .dmg 磁盘映像 |
| Linux | .deb / .AppImage |
- Windows 首次安装可能触发 SmartScreen 提示,点击"仍要运行"继续
- macOS 应用未经 Apple 签名/公证,首次打开可能提示"已损坏"或"无法验证开发者"
macOS 安装说明
如果已拖入"应用程序"目录,执行:
xattr -cr /Applications/CLI-Manager.app
open /Applications/CLI-Manager.app也可以在 Finder 中右键应用图标,选择"打开",或在"系统设置 → 隐私与安全性"中点击"仍要打开"。
变更日志
模型价格设置
核心功能
- 新增「模型价格」设置模块:设置中心新增独立的「模型价格」页(位于「供应商」之后),集中管理各模型的 Input / Output / Cache Read / Cache Create 单价(单位统一为 USD / 1M tokens)。
- 识别本地模型:一键扫描
~/.claude/projects与~/.codex/sessions历史日志中的模型分布,自动列出本地实际使用过的模型,并高亮「缺失价格」的模型引导补全。 - 手动添加 / 编辑 / 删除:支持手动新增模型定价、编辑既有价格、删除条目;删除采用统一风格的确认弹窗(替换原生
window.confirm,修复样式不统一与「取消仍删除」的问题)。 - 一键远程同步:从 LiteLLM 与 OpenRouter 拉取官方定价,按「精确 → 大小写 → 去前缀尾段 → 规范化 → Jaccard/Levenshtein 模糊」分级匹配;精确/大小写命中自动应用,模糊命中进入候选区供确认。
- 候选批量应用:同步后的候选可逐个确认,也可「全部应用候选」一键批量写入,避免逐条点击。
费用统计接入
- 终端实时统计:当前会话预估费用与今日费用改为优先读取本地模型价格表(前端缓存为权威源),不再依赖硬编码价格。
- 历史用量分析:
history_get_stats费用计算优先使用前端推送的后端价格缓存,硬编码价格表降级为兜底;模型删除即视为「未定价」,计入unpriced_tokens。 - ccusage 用量分析:保持使用 ccusage 工具自身估算,不接入本地价格表。
技术实现
- 数据层:新增 SQLite migration v11 建
model_prices表(model主键 + 四类单价 +source/source_model_id/raw_json/时间戳);前端modelPricingStore负责 CRUD、种子初始化与候选应用,DB 为唯一权威源。 - 前后端桥接:前端启动/变更时通过
model_prices_set_cache把价格推送到后端内存缓存(OnceLock<RwLock<HashMap>>),后端费用计算读缓存,避免后端猜测 DB 落盘路径。 - 远程同步命令:新增
model_prices_sync(reqwest拉取 + per-token×1e6 换算 + 分级匹配 + 候选评分),新增model_pricing命令模块。 - 复用归一化:「识别本地模型」复用
historyStore的normalizeStats兜底 snake/camel 与缺失字段,修复直接读原始返回导致的undefined.map报错。
终端侧边面板(实时统计 / Git 变更)
统一侧边面板与合并开关
- 合并为单个 Tab 面板:实时统计与 Git 变更默认合并为终端右侧的单一侧边面板,顶部 Tab 切换,避免两个 290px 面板同时挤占终端空间;工具栏「统计」「Git 变更」按钮分别定位到对应 Tab,再次点击关闭。
- 新增合并开关:设置 →「通用 - 侧栏与行为」新增「合并实时统计与 Git 变更面板」开关(默认开启),持久化字段
terminalSidePanelMerged;关闭后两者恢复为独立面板,可同时并排显示,满足需要同时查看两个窗口的用户。 - 面板宽度可调:合并模式侧边面板左缘可拖拽调整宽度(220–500px,rAF 节流,松手持久化到本地)。
Git 变更面板增强
- 文件树一键展开/收起:Git 变更面板头部新增「展开 / 收起」按钮,对整棵文件树批量全部展开或全部折叠。
- 滚动条样式统一:Git 变更列表滚动条改用与实时统计一致的细滚动条样式(
ui-thin-scroll,6px、半透明、hover 加深),消除两面板滚动条视觉差异。
响应式修复
- 修复窗口缩小时右侧面板覆盖终端:非合并模式下两个固定宽度面板会在窄窗口挤压主终端区域;恢复响应式约束——窗口 < 1100px 时打开一个面板自动收起另一个、并在窗口缩小时通过 resize 监听被动收起 Git 面板(优先保留实时统计),保证终端区域始终可用。
CLI-Manager V1.1.0
安装
| 平台 | 格式 |
|---|---|
| Windows | .msi 安装包 |
| macOS (Apple Silicon) | .dmg 磁盘映像 |
| Linux | .deb / .AppImage |
- Windows 首次安装可能触发 SmartScreen 提示,点击"仍要运行"继续
- macOS 应用未经 Apple 签名/公证,首次打开可能提示"已损坏"或"无法验证开发者"
macOS 安装说明
如果已拖入"应用程序"目录,执行:
xattr -cr /Applications/CLI-Manager.app
open /Applications/CLI-Manager.app也可以在 Finder 中右键应用图标,选择"打开",或在"系统设置 → 隐私与安全性"中点击"仍要打开"。
变更日志
终端工具栏按钮自定义排序
核心功能
- 工具栏按钮拖拽排序:终端标签栏右侧工具栏的所有按钮(新建、Templates、历史命令、全屏、会话历史、Git 变更、统计)支持拖拽调整显示顺序,按用户偏好自由排列。
- 拖拽视觉反馈:拖动中按钮半透明(
opacity: 0.4)、DragOverlay 跟随鼠标、插入位置指示器、光标变为grabbing,与现有终端标签拖拽体验保持一致。 - 激活距离阈值:5px 激活距离有效区分点击与拖动,避免误触。
- 持久化配置:按钮顺序保存到本地设置(
terminalToolbarOrder字段),应用重启后保持用户自定义顺序。
统计按钮显隐控制
- 新增统计按钮开关:设置页面「通用设置 - 工具栏」区块新增「统计」显隐开关(默认显示),用户可按需隐藏统计按钮。
- 统一管理:所有工具栏按钮(除「新建」外)现在都支持显隐控制 + 拖拽排序,数据模型统一。
会话历史图标优化
- 自定义图标:会话历史按钮图标从
Search替换为自定义ListClockIcon(列表 + 时钟组合),语义更贴近"历史记录",尺寸优化为 20px。
技术实现
- 数据层:
settingsStore.ts新增terminalToolbarOrder: string[]字段(默认["new", "templates", "commandHistory", "fullscreen", "sessionHistory", "gitChanges", "stats"])、TerminalToolbarVisibilitySettings.stats: boolean(默认true)、sidebarToolbarVisibility与migrateTerminalToolbarOrder迁移函数。 - UI 层:
TerminalTabs.tsx使用@dnd-kit/sortable实现工具栏按钮拖拽排序(独立DndContext,不与终端标签拖拽冲突)、按terminalToolbarOrder顺序渲染、统计按钮接入visibility.stats条件渲染。 - 设置页:
GeneralSettingsPage.tsx新增「统计」开关,保持设置页职责单一(仅管理显隐,排序在工具栏操作)。 - 图标组件:新增
src/components/ListClockIcon.tsx自定义 SVG 图标组件,兼容 lucide API(支持size属性)。
代码质量
- TypeScript 类型检查通过,所有字段类型安全。
- 迁移函数处理边界场景(过滤无效 key、补全缺失 key、兼容旧配置)。
- 拖拽实现复用现有模式(与终端标签拖拽保持一致)。
Git 变更面板
核心功能
- 终端工具栏新增「Git 变更」按钮:在内置终端工具栏新增 Git 变更入口,打开侧边栏式 Git 变更面板,按当前终端 Tab 的项目路径展示工作区变更。
- 文件类型彩色图标:变更文件按类型显示对应的彩色图标,树形结构展示,便于快速识别。
- 融入工具栏拖拽排序:Git 变更按钮纳入
terminalToolbarOrder拖拽排序体系,默认位于「会话历史」与「统计」之间,可与其它工具栏按钮一起自由排序。
Diff 解析修复
- 修复 diff 显示问题:修正 Git 变更面板中部分 diff 内容无法正常显示的问题。
- 修复 diff 格式不完整导致解析失败:放宽 diff 解析容错,避免格式不完整时整体解析失败。
侧边栏工具栏显隐控制
- 新增侧边栏工具栏显隐设置:新增
sidebarToolbarVisibility(统计 / Git 变更)配置,可分别控制侧边栏对应入口的显示,配置持久化。
终端中文输入法修复(Claude Code / Codex)
- 修复 Claude Code 输入法候选框不跟随光标:候选框正确锚定到当前输入行并跟随光标移动。
- 修复 Codex 输入法候选框固定在底部不跟随光标:修正 Codex 流式重绘时候选框被固定在底部、不随光标移动的问题。
CLI-Manager V1.0.9
安装
| 平台 | 格式 |
|---|---|
| Windows | .msi 安装包 |
| macOS (Apple Silicon) | .dmg 磁盘映像 |
| Linux | .deb / .AppImage |
- Windows 首次安装可能触发 SmartScreen 提示,点击"仍要运行"继续
- macOS 应用未经 Apple 签名/公证,首次打开可能提示"已损坏"或"无法验证开发者"
macOS 安装说明
如果已拖入"应用程序"目录,执行:
xattr -cr /Applications/CLI-Manager.app
open /Applications/CLI-Manager.app也可以在 Finder 中右键应用图标,选择"打开",或在"系统设置 → 隐私与安全性"中点击"仍要打开"。
变更日志
设置 - 供应商页全面优化
核心体验改善(P0)
- 空态引导卡片:数据库未连接时显示引导卡片,包含 cc-switch 作用说明、官网链接和三步使用指南(安装 → 配置 → 刷新),降低首次使用门槛。
- 数据库路径卡片优化:顶部新增连接状态徽标(绿色"已连接" / 灰色"未连接"),路径展示使用独立代码块背景区分,按钮文案优化为"使用默认路径",布局更清晰。
- 详情面板增强:
- 新增可复用
CopyButton组件,BASE_URL 和所有环境变量行右侧添加一键复制按钮,点击复制成功后显示 toast 提示。 configParseError供应商在详情面板顶部显示红色边框错误说明块,明确告知配置解析失败、env 数据可能不完整。
- 新增可复用
- 错误提示优化:数据库读取失败时使用红色边框 + AlertTriangle 图标的醒目样式,替代原有纯文本提示。
交互与性能提升(P1)
- 列表布局响应式:供应商列表宽度从固定 360px 改为响应式
min-w-[280px] max-w-[400px] w-[30%],宽屏下空间利用更合理;列表项 padding 和间距收紧(px-3 py-2.5→px-2.5 py-2,space-y-1.5→space-y-1),一屏可显示更多供应商。 - 搜索范围扩展:搜索从 4 个字段扩展到 6 个(名称、BASE_URL、分类、模型、官网、备注),用户可按官网 URL 或备注关键词搜索;无结果时提示已搜索的所有字段范围。
- 性能优化预分组:新增
providersByTypememo 按 app_type 预分组供应商,visibleProviders从预分组结果筛选,避免每次切换类型或搜索时重复 filter 全量数据,提升大数据集下的响应速度。
锦上添花(P2)
- 刷新成功反馈:点击"刷新"按钮成功后显示 toast 提示"已刷新,共 X 个供应商",页面初始加载不显示 toast,避免干扰;通过
showToast可选参数区分手动刷新与自动加载。 - 供应商数量提示:筛选器下方显示"共 X 个供应商",用户清楚当前筛选结果数量。
- 环境变量折叠显示:环境变量 >5 个时默认只显示前 5 个 + "展开全部(还有 N 个)"按钮,展开后显示全部并提供"收起"按钮;切换供应商时折叠状态自动重置,保持界面简洁。
代码质量
- 新增可复用组件:
CopyButton(统一复制交互)、EmptyStateGuideCard(首次使用引导) - TypeScript 类型检查通过,所有 hooks 依赖数组正确,边界情况处理完善
- 代码规范审查通过,无未使用导入、无 console.log 残留
设置 - 供应商配置展示增强
多 app_type 配置解析
- Codex / 多供应商类型解析支持:供应商配置解析从硬编码
ANTHROPIC_*改用通配符匹配(*_BASE_URL/*_API_BASE/*_ENDPOINT识别 BASE_URL,*_MODEL识别模型),自动支持OPENAI_*(Codex)、GOOGLE_*(Gemini)、DEEPSEEK_*等任意前缀,解决 Codex 等非 Claude 供应商 BASE_URL 与模型显示空白的问题。
通用配置读取与合并
- 读取 cc-switch 通用配置:新增
ccswitch_list_common_configs命令,从 cc-switchsettings表读取common_config_{app_type}(如common_config_claude/common_config_codex/common_config_gemini等)通用配置;表不存在时优雅降级返回空列表。 - 供应商详情完整配置展示:详情面板新增配置 Tabs,按"完整配置 → 供应商配置 → 通用配置"顺序展示,默认显示完整配置:
- 完整配置:通用配置打底 + 供应商配置深度合并(供应商优先覆盖),即该供应商实际生效的完整配置。
- 供应商配置:供应商自身的原始
settings_config。 - 通用配置:当前 app_type 对应的
common_config_{app_type},仅当匹配到时显示该 Tab。
JSON 代码块美化
- 语法高亮代码块:新增
JsonCodeBlock组件,配置 JSON 以深色背景(#1e1e1e,类 VSCode Dark)+ 语法高亮(键名蓝 / 字符串橙 / 数字绿 / 布尔与 null 浅蓝)+ 圆角边框展示;纯 CSS 实现无第三方依赖,渲染前对 HTML 转义防注入。 - 每个 Tab 提供独立复制按钮,可一键复制对应配置 JSON。
代码质量
- 后端
parse_settings_config改用后缀通配,保留 Claude 供应商兼容;新增deepMerge前端深度合并工具。 - Rust
cargo check与全部测试通过,TypeScript 类型检查通过。
终端 - 跨平台默认 Shell 识别
核心改进
- 按操作系统区分 Shell 选项:新建/编辑终端及设置中心的"默认 Shell"现根据运行平台动态展示可选项——Windows(PowerShell / CMD / PowerShell Core / WSL / Git Bash / Bash)、macOS(Zsh / Bash / Fish / Sh)、Linux(Bash / Zsh / Fish / Sh),不再硬编码 Windows 专属终端。
- 平台默认值:新建终端时按系统自动选择默认 Shell(macOS → zsh,Linux → bash,Windows → powershell);用户从未设置过"默认 Shell"时,设置项也按平台初始化,避免在 mac/linux 上残留
powershell.exe。 - 跨平台配置兼容:编辑在其它系统创建的终端时,若其 Shell 在当前平台不可用,下拉框保留为"(当前自定义)"选项,不丢失原配置。
详细实现
- 后端(Rust):
- 新增
get_os_platform命令返回当前平台(windows/macos/linux/unknown)。 PtyManager::resolve_shell与外部终端shell_exe增加zsh/fish/sh支持;bash与默认分支用cfg!(target_os)区分平台(Windows 用bash.exe/powershell.exe,Unix 回退用户登录 Shell$SHELL,再回退 macOS=zsh / 其它=bash)。
- 新增
- 前端(TS/React):
ShellKey扩展 Unix Shell;normalizeShellKey支持识别zsh/fish/sh及其路径与.exe变体。- 新增
getOsPlatform、getDefaultShellForPlatform、defaultShellForOs辅助与getShellOptions(os)平台选项映射。 ConfigModal、ThemeSettingsPage、settingsStore接入平台检测。
代码质量
- 后端跨平台分支统一改用
cfg!()宏,使 macOS/Linux 代码路径也在 Windows 上参与类型检查(无 mac/linux 环境亦可验证)。 - TypeScript 类型检查与
cargo check均通过。
版本发布
- 应用版本同步升级到 1.0.9(npm、Cargo、Tauri 配置)。
CLI-Manager V1.0.8
安装
| 平台 | 格式 |
|---|---|
| Windows | .msi 安装包 |
| macOS (Apple Silicon) | .dmg 磁盘映像 |
| Linux | .deb / .AppImage |
- Windows 首次安装可能触发 SmartScreen 提示,点击"仍要运行"继续
- macOS 应用未经 Apple 签名/公证,首次打开可能提示"已损坏"或"无法验证开发者"
macOS 安装说明
如果已拖入"应用程序"目录,执行:
xattr -cr /Applications/CLI-Manager.app
open /Applications/CLI-Manager.app也可以在 Finder 中右键应用图标,选择"打开",或在"系统设置 → 隐私与安全性"中点击"仍要打开"。
变更日志
Git 分支查询优化
- 改用 libgit2 库读取 Git 分支:新增
git2依赖,get_current_git_branch命令改用 libgit2 直接查询仓库状态,避免文件 I/O 触发 Windows 安全软件(如火绒、360)的进程监控弹窗;libgit2 是 Git 官方认证库,被安全软件白名单信任,且内部有缓存,性能优于直接读文件。
Hook 设置页 UI 升级
- Hook 状态卡片视图:会话启动、运行中、待审批、完成/异常等 Hook 状态改为独立卡片展示,带图标与安装状态徽章,视觉层次更清晰。
- 配置路径折叠面板:Claude 和 Codex 的配置目录、hooks 目录、配置文件等路径信息改为可折叠展示,减少页面初始展示高度。
- 路径复制按钮:每个配置路径行增加复制按钮,一键复制到剪贴板(带 2 秒反馈动画)。
- 安装说明折叠面板:安装内容、删除时保留项、注意事项等说明文档改为可折叠的独立面板,按需查看。
- 路径行图标增强:目录、配置文件等路径根据类型显示对应图标(Folder / FileCode),提升识别度。
版本发布
- 应用版本同步升级到 1.0.8(npm、Cargo、Tauri 配置)。
CLI-Manager V1.0.7
安装
| 平台 | 格式 |
|---|---|
| Windows | .msi 安装包 |
| macOS (Apple Silicon) | .dmg 磁盘映像 |
| Linux | .deb / .AppImage |
- Windows 首次安装可能触发 SmartScreen 提示,点击"仍要运行"继续
- macOS 应用未经 Apple 签名/公证,首次打开可能提示"已损坏"或"无法验证开发者"
macOS 安装说明
如果已拖入"应用程序"目录,执行:
xattr -cr /Applications/CLI-Manager.app
open /Applications/CLI-Manager.app也可以在 Finder 中右键应用图标,选择"打开",或在"系统设置 → 隐私与安全性"中点击"仍要打开"。
变更日志
终端实时统计面板
- 新增 SessionStart Hook:Claude / Codex 在会话启动 / 恢复时即回传 sessionId 并绑定到对应终端 Tab(不改变 Tab 运行状态),实时统计面板无需先发送一条指令即可填充会话数据;Hook 设置页同步新增「会话启动 Hook(SessionStart)」安装状态检查项,重新安装一次 Hook 即可补写该条目。
- 会话级卡片按 sessionId ↔ tabId 严格绑定门控:Token 用量 / Token 趋势 / 模型与上下文 / 工具与扩展 4 张卡片,仅当加载到的会话
session_id与当前终端 Hook 回传的cliSessionId一致时才展示真实数据,彻底解决同一项目下多个 Claude / Codex 终端(多窗口)实时统计互相串显的问题。 - 未绑定会话时保留卡片骨架:未收到 Hook 回调或会话未匹配时,4 张卡片保留图形骨架、数据置空(Donut 灰圈、$0.00、「暂无趋势数据」、模型与上下文「—」、「暂无工具调用」),不再以提示文案占位;会话信息卡的消息数 / 时长 / 角色分布同步置 0,项目 / 路径 / 分支 / 来源徽章仍如实展示。
- 实时统计显示项目当前 Git 分支:新增
get_current_git_branch命令,按当前终端项目路径读取并展示其 Git 分支。 - 实时统计面板的项目与路径增加图标,路径支持双击在资源管理器中打开。
设置
- 「通用设置 - 工具栏」新增「统计」按钮显隐开关(默认开启),可隐藏终端标签栏右侧的实时统计入口;配置持久化,下次启动生效。
终端中文输入法修复
- 彻底修复 Claude Code / Codex 流式重绘导致中文输入法候选框漂移:放弃一切依赖 TUI 硬件光标的方案,改用纯结构识别——从屏幕底部向上定位
>输入首行,再以其下方第一条横线(─)作为输入框下边框,将候选框锚定到框内当前输入行;覆盖空框 / 单行 / 多行场景,多行输入时候选框正确跟随到当前行,仅「普通 shell 单行且硬件光标恰在输入行」时才使用精确光标。
版本发布
- 应用版本同步升级到 1.0.7(npm、Cargo、Tauri 配置)。