Skip to content

Releases: dark-hxx/CLI-Manager

CLI-Manager V1.1.7

22 Jun 08:48

Choose a tag to compare

安装

平台 格式
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 负载透传 agentIdagentType、Claude agentTranscriptPath 与 Codex transcriptPath,并沉淀到 CLI Hook contracts。
  • 子代理转录面板:收到子代理启动事件后自动打开只读转录 pane,订阅 transcript jsonl,支持 SubagentStop 后标记结束并延迟关闭;前端路径选择按 agentTranscriptPath ?? transcriptPath 兜底。
  • Codex transcript 渲染SubagentTranscriptView 支持 Codex response_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 新增可选 zIndex prop,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

18 Jun 18:08

Choose a tag to compare

安装

平台 格式
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_IDCLI_MANAGER_NOTIFY_PORTCLI_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

18 Jun 12:43

Choose a tag to compare

安装

平台 格式
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_pushgit_pull(策略 merge/rebase/ff-only,冲突感知)、git_pull_abortgit_rebase_continuegit_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 包装层新增颜色解析(隐藏探针元素 + getComputedStylevar() / 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

18 Jun 04:51

Choose a tag to compare

安装

平台 格式
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

17 Jun 17:55

Choose a tag to compare

安装

平台 格式
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

17 Jun 12:07

Choose a tag to compare

安装

平台 格式
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_syncreqwest 拉取 + per-token×1e6 换算 + 分级匹配 + 候选评分),新增 model_pricing 命令模块。
  • 复用归一化:「识别本地模型」复用 historyStorenormalizeStats 兜底 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

17 Jun 03:45

Choose a tag to compare

安装

平台 格式
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)、sidebarToolbarVisibilitymigrateTerminalToolbarOrder 迁移函数。
  • 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

16 Jun 07:54

Choose a tag to compare

安装

平台 格式
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.5px-2.5 py-2space-y-1.5space-y-1),一屏可显示更多供应商。
  • 搜索范围扩展:搜索从 4 个字段扩展到 6 个(名称、BASE_URL、分类、模型、官网、备注),用户可按官网 URL 或备注关键词搜索;无结果时提示已搜索的所有字段范围。
  • 性能优化预分组:新增 providersByType memo 按 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-switch settings 表读取 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 变体。
    • 新增 getOsPlatformgetDefaultShellForPlatformdefaultShellForOs 辅助与 getShellOptions(os) 平台选项映射。
    • ConfigModalThemeSettingsPagesettingsStore 接入平台检测。

代码质量

  • 后端跨平台分支统一改用 cfg!() 宏,使 macOS/Linux 代码路径也在 Windows 上参与类型检查(无 mac/linux 环境亦可验证)。
  • TypeScript 类型检查与 cargo check 均通过。

版本发布

  • 应用版本同步升级到 1.0.9(npm、Cargo、Tauri 配置)。

CLI-Manager V1.0.8

16 Jun 03:49

Choose a tag to compare

安装

平台 格式
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

15 Jun 15:21

Choose a tag to compare

安装

平台 格式
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 配置)。