# Changelog

所有显著的项目变化都将被记录在此文件中。

该项目遵循 [Semantic Versioning](https://semver.org/)。

## [3.6.7] - 2026-05-16

### Fixed
- **动态切换渠道 Key 展示修复** - WebSocket 代理状态广播中的脱敏渠道信息不再覆盖前端已加载的完整渠道对象，避免动态切换后渠道面板将已配置的 API Key 误显示为未设置
- **渠道 Key 脱敏态文案修复** - 渠道面板现在区分“后端未返回敏感字段”和“确实未配置 Key”，脱敏字段显示为“已隐藏”
- **Gemini / OpenAI 兼容代理路径去重** - 代理目标 URL 现在会同时去重重复的 `/v1` 和 `/v1beta` 版本段，避免 baseUrl 与请求路径都包含版本前缀时拼出重复路径

## [3.5.14] - 2026-04-27

### Added
- **Claude 渠道支持 OpenAI 兼容网关** - Claude 渠道新增 OpenAI 预设和 `openai_compatible` 网关路径，可通过 Claude 代理转发到 OpenAI Responses API 或 Chat Completions，并支持模型列表探测、测速、模型重定向与请求日志统计
- **OpenAI 网关目标接口选择** - OpenAI 官方渠道默认使用 Responses API，第三方 OpenAI 兼容渠道自动回退到 Chat Completions，减少 usage 缺失和接口不兼容问题

### Changed
- **Codex 渠道默认 API Key 认证** - 移除 Codex 渠道表单中的认证方式开关，创建和更新渠道均默认 API Key 模式，并将旧的 `requiresOpenaiAuth` 标记归一化为 `false`
- **OpenAI 兼容渠道代理约束** - Claude 下的 OpenAI 格式渠道不再写入原生 Claude settings，应用到设置时会提示必须通过代理使用，避免把 OpenAI Key 写进 Claude 原生配置

### Fixed
- **后台命令退出与 PM2 状态保存** - `ctx start` / `stop` / `restart` / `status` 和 `ctx ui start|stop|restart` 完成后会主动关闭插件与 CLI 进程，并对 PM2 dump 加入超时保护，避免命令成功后挂起
- **OpenAI 网关失败日志可读性** - 实时日志现在优先展示结构化错误消息，同时保留 `rawError`，避免只看到 `aborted` 这类过短失败信息
- **Codex 配置写入认证标记** - 写入 `config.toml` 时固定输出 `requires_openai_auth = false` 并继续注入 `CC_PROXY_KEY`，保证 Codex API Key 渠道不再误走 OpenAI 登录态

## [3.5.11] - 2026-04-22

### Added
- **本地 HTTPS Web UI 支持** - `ctx ui` 与 `ctx ui start` 新增 `--https` 模式，支持自动准备本地 HTTPS 证书并输出对应的 HTTPS / WSS 地址，便于在浏览器通知、OAuth 与本地安全上下文场景下使用
- **浏览器通知模式** - 通知系统新增 `browser` 模式，通过本机回环接口与 WebSocket 向前端分发浏览器通知，支持 Claude、Codex、Gemini、OpenCode 四个平台的完成事件

### Fixed
- **模型重定向后的真实模型与 Token 统计** - 修复重定向后成功日志、实时面板和分析页无法稳定识别实际模型的问题；现在会统一按“响应模型 → 重定向目标模型 → 请求目标模型 → 原始模型”的顺序识别真实模型
- **跨渠道 usage 字段归一化** - 统一 Claude、Codex/OpenAI、Gemini、OpenCode 网关的 usage 解析与落库规则，补齐 `cacheCreation`、`cacheRead`、`cached`、`reasoning` 等字段，减少因 provider 返回格式差异导致的统计丢失
- **分析页模型维度聚合** - 修复分析面板更容易退化成工具类型视角的问题；当前会优先按真实模型聚合请求日志与当日实时日志，能看到各模型的实际 token 使用，而不仅是四个 CLI 维度
- **OpenAI 兼容流式 usage 捕获** - 对流式 `chat/completions` 请求自动补齐 `stream_options.include_usage`，提升 Codex 与 OpenCode 在 OpenAI 兼容渠道下的 token 可观测性
- **Web UI 启动前静态资源自检** - 启动 UI 时会先检查 `dist/web` 是否缺失或过期，并在需要时自动重建，减少后台启动后页面空白或静态资源不一致的问题

## [3.5.10] - 2026-04-20

### Added
- **Fork 起点选择与自定义别名** - Fork 对话现在支持选择“在第几条用户消息后”创建新会话，并允许在 Fork 时直接设置新会话别名，Claude / Codex / Gemini 三条会话链路统一支持
- **会话详情轻量目录接口** - 新增会话 `outline` 与 `status` 轻量接口，为详情抽屉左侧用户目录和实时同步提供独立数据源

### Fixed
- **会话详情加载过慢** - 聊天详情抽屉左侧“用户目录”不再依赖前端预加载整段历史，而是改为轻量 outline 加载，显著减少大会话打开时的等待时间
- **会话历史非实时刷新** - 打开详情后会基于轻量状态轮询自动增量刷新当前会话，不再需要用户每次重新打开会话才能触发同步
- **Windows Fork 文件换行兼容** - Fork 截断会保留原始会话文件换行风格，避免在 Windows 上将 `CRLF` 会话意外改写为 `LF`

## [3.5.5] - 2026-03-24

### Fixed
- **模型重定向日志追踪** - 修复模型重定向（如 `claude-opus-4-6` → `gpt-5.4-xhigh`）后日志和统计无法正确追踪重定向关系的问题；现在 `requestMetadata` 会记录 `originalModel` 和 `redirectedModel`，WebSocket 实时日志和 JSONL 持久化日志均包含重定向信息，适用于 Claude、Codex、Gemini、OpenCode 四个代理服务器
- **实时日志重定向可视化** - ProxyLogs 面板和 Dashboard 实时日志面板现在会显示模型重定向箭头（`原始模型 → 重定向模型`），方便用户直观查看重定向关系
- **跨格式模型重定向日志丢失** - 修复模型重定向到不同提供商（如 Claude → OpenAI）时，因响应格式不兼容导致 token 数据无法解析、日志被丢弃的问题；新增统一响应解析器 `response-usage-parser.js`，所有代理服务器共用，支持 Claude SSE、OpenAI Chat Completions、OpenAI Responses API、Gemini Native 和非流式 JSON 五种格式

## [3.5.4] - 2026-03-23

### Fixed
- **`ctx stop` 全实例停机修复** - 停止服务时现在会同时清理 PM2 记录和所有受管端口上的残留实例，即使服务是手动启动的、或 PM2 中只剩 `stopped` 记录，也会尽量一并停掉
- **MCP HTTP 通知空响应兼容性修复** - 修复测试 MCP 时 `notifications/initialized` 在服务端返回 `202 + 空 body` 后被错误当作非法 JSON 解析的问题，避免出现 `Notification send failed: Invalid JSON response: Unexpected end of JSON input`
- **MCP HTTP 会话头续传** - 初始化后保存并续传 `Mcp-Session-Id` 与协商协议版本，提升对 Streamable HTTP MCP 服务端的兼容性

## [3.5.3] - 2026-03-23

### Fixed
- **Windows 全局安装后 UI 启动失败** - 发布依赖中显式加入 `rxjs`，并移除无效的 `file:` 本地运行时依赖，修复 `ctx start` / `ctx ui --daemon` 在 Windows 上因 `inquirer` 缺少运行时依赖而启动失败的问题
- **非交互启动链路解耦交互依赖** - CLI 与服务入口改为按需加载 `inquirer`，即使交互菜单依赖异常，后台启动命令仍可进入服务启动流程
- **Codex PowerShell 环境同步降级处理** - Windows 上 `pwsh` 超时或缺失时，Codex 环境变量同步改为告警降级，不再直接中断代理恢复与服务启动
- **残留端口清理体验修复** - `ctx stop` 现在会额外清理受管端口上的残留进程，并给出更明确的端口占用提示，减少二次启动时的误报

## [3.3.8] - 2026-03-12

### Added
- **OAuth 凭证管理** - 新增 `OAuthCredentialsDrawer` 组件及 `/api/oauth-credentials` 接口，支持查看和管理各平台 OAuth 凭证；Header 新增 Key 图标入口，右侧面板在 OAuth 控制模式下显示提示横幅并禁用代理开关
- **Skills 本地安装路径分离** - Skills 存储目录（`storageDir`）与平台安装目录（`installDir`）解耦，自定义/创建的技能写入 `~/.cc-tool/{platform}-skills/`，通过"安装"操作复制到平台目录；新增 `installLocalSkill` API 和前端调用
- **Skills 新增 `isLocal` 标记** - 本地托管的技能标记 `isLocal: true`，安装状态根据平台安装目录实际文件是否存在动态判断

### Fixed
- **渠道切换清理 OAuth Token** - 切换渠道（`applyChannelToSettings`）时自动调用 `clearNativeOAuth`，并统一写入 `ANTHROPIC_API_KEY`，移除 `ANTHROPIC_AUTH_TOKEN` 和 `CLAUDE_CODE_OAUTH_TOKEN` 残留
- **Codex 渠道移除 Shell 环境变量注入** - 渠道创建/更新/删除不再注入或删除 shell 配置文件中的环境变量，改由 `auth.json` 统一管理
- **Codex config.toml 写入保留已有配置** - `writeCodexConfigForMultiChannel` 读取现有 `config.toml` 后合并写入，避免覆盖用户自定义字段（如 `mcp_servers`、`projects`）
- **渠道代理关闭时切换修复** - 代理关闭后应用渠道时补充调用 `deleteBackup` 并清理 active channel 标记文件，防止残留状态影响恢复逻辑
- **移除"禁用最后渠道"保护限制** - Claude / Codex 渠道更新均移除代理关闭时禁止禁用最后一个渠道的限制，允许全部禁用
- **Skills 缓存策略优化** - 内存缓存和文件缓存均移除 TTL 过期判断，改为以缓存存在即命中，避免频繁远程拉取
- **OpenCode 渠道测速面板修复** - 渠道测速抽屉现已支持在下拉框中选择并批量测试 OpenCode，结果标签与样式同步补齐

### Changed
- **SkillsPanel 精简** - 移除"已托管"筛选项、registry 相关状态和 `toggleEnabled`/`togglePlatform` 事件处理；安装/卸载后直接更新本地状态，无需重新拉取列表
- **SkillCard 简化** - 移除 registry 信息展示和平台开关相关 props/事件

## [3.3.7] - 2026-03-06

### Fixed
- 配置导入导出多平台修复 - 修复导入后只恢复 Claude 相关配置的问题，导出/导入现已覆盖 Claude / Codex / Gemini / OpenCode 的 Agents、Skills、Commands 与原生配置

### Changed
- Codex 默认模型更新 - 默认测速模型切换为 `gpt-5.4`，默认模型列表新增并前置 `gpt-5.4`
- 配置导出文案修正 - 导出抽屉说明更新为“多平台配置”，避免误解为仅导出前端配置

## [3.3.0] - 2026-03-02

### Added
- MCP 导出支持 Gemini 格式 - 新增 `exportForGemini()` 函数，生成 `gemini-mcp-config.json`；前端导出菜单新增对应选项
- 配置模板集成 Prompt 预设 - 创建/编辑配置模板时可选择已有 Prompt 预设作为 CLAUDE.md 内容，自动预览
- Windows 跨平台端口管理 - `findProcessByPort` 和 `killProcessByPort` 新增 Windows 支持
- 模型元数据 UI 重构 - 设置页面模型列表改为可折叠卡片式布局，搜索框与新增按钮合并到同一工具栏

### Fixed
- 渠道同步逻辑修正 - 修复代理运行时启用渠道无法触发互斥禁用和配置同步的问题（Claude / Codex / Gemini 统一）
- OpenCode 网关类型 fallback 修复 - 修复未知 `gatewaySourceType` 被错误映射为 `codex` 的问题
- OpenCode 模型列表请求类型修复 - `fetchModelsFromProvider` 现在使用正确的 `gatewaySourceType`
- Codex 环境变量即时生效 - 环境变量操作函数同步更新当前进程环境，无需重启终端
- Provider Key 验证规则修正 - 允许下划线（`_`），不再允许短横线（`-`）

### Changed
- Claude 请求模板持久化重构 - 模板从扫描 JSONL 日志改为写入单一文件 `~/.cc-tool/claude-request-template.json`，内置完整 fallback
- 配置模板 Skills 按平台区分 - 前端根据当前 CLI 类型动态过滤对应平台的 Skills 列表
- 精简 opencode-proxy-server.js - 移除约 90 行冗余日志扫描代码

## [3.2.0] - 2026-03-01

### Added
- ✨ **Codex 代理管理** - agents API 及 AgentsService 新增 Codex 平台支持，覆盖 user/project 作用域
- ✨ **会话格式转换器** - 新增 `session-converter.js`，统一 Claude/Codex/Gemini 会话为中间格式，支持跨平台转换
- ✨ **OpenCode 网关适配层** - 新增 `opencode-gateway-adapters.js`，多平台会话转换为 OpenCode payload
- ✨ **转换 API** - 新增 `/api/convert` 端点及前端 `GatewayConvertDrawer` 组件，支持会话格式预览与导出
- ✨ **请求日志服务** - 新增 `request-logger.js`，通过环境变量 `CC_TOOL_LOG_REQUESTS` 控制代理请求快照记录
- ✨ **Gemini CLI 配置同步** - config-sync-manager 新增 `~/.gemini/skills/` 目录同步支持
- ✨ **Codex 性能 benchmark** - 新增 `benchmark-codex-loading.js` 及 `test-codex-agents.js` 脚本
- ✨ **剪贴板工具** - 新增 `src/web/src/utils/clipboard.js` 统一剪贴板操作

### Changed
- 🔄 **统计时区修正** - Claude/Codex/Gemini/OpenCode 统计服务全部切换为北京时间（UTC+8）计算，修复跨日边界统计误差
- 🔄 **OpenCode 代理服务器重构** - 大幅精简 `opencode-proxy-server.js`，User-Agent 更新至 `claude-cli/2.1.59`，Beta header 更新为最新标志组
- 🔄 **配置同步支持 TOML** - config-sync-manager 及 agents-service 新增 TOML 格式解析与写入
- 🔄 **Package name 变更** - 从 `@adversity/coding-tool-x` 改为 `coding-tool-x`
- 🔄 **Config Templates 精简** - config-templates-service.js 重构，移除冗余逻辑

### Removed
- 🗑️ **终端模块移除** - 删除 Terminal API、PTY 管理器、TerminalPane/Tabs 组件、Terminal 视图及终端设置面板
- 🗑️ **Rules 模块移除** - 删除 rules API、rules-service、RuleCard/RuleFormModal/RulesDrawer/RulesPanel 全套组件
- 🗑️ **移除 PTY 依赖** - 移除 `@lydell/node-pty` 和 `@xterm/headless` 依赖，减小安装体积

## [3.1.4] - 2026-02-28

### Fixed
- 🐛 **统计卡数值恒显示** - 修复切换 metric 时其他维度统计卡显示为 0 的问题，现在并发请求三个维度数据
- 🐛 **移除 dataZoom 滑块** - 修复 90d 视图图例下方出现多余波形滑块的问题

## [3.1.3] - 2026-02-28

### Added
- ✨ **用量分析页面** - 新增独立 `/analytics` 页面，支持按模型/渠道/工具类型的 Token 用量、费用、请求数趋势图表
- ✨ **多工具数据聚合** - 分析图表合并 Claude / Codex / Gemini / OpenCode 四个工具的统计数据
- ✨ **堆叠柱状图 & 累计趋势图** - 基于 ECharts，支持柱状图/折线图切换、全屏展示
- ✨ **灵活时间范围** - 支持 1d/3d/7d/30d/90d 及自定义日期区间，自动选择小时/天粒度
- ✨ **数据导出** - 支持 CSV 和 JSON 格式导出趋势数据

### Changed
- 🔄 **1天视图步长调整** - 从每2小时改为每4小时，减少数据点密度
- 🔄 **3天视图步长调整** - 从每6小时改为每12小时，图表更清晰
- 🔄 **X 轴日期格式精简** - 从 `2026-02-06` 改为 `02/06`，小时标签改为 `02/06 14:00`

### Fixed
- 🐛 **步长参数未传递** - 修复后端路由未解构 `step` 参数导致步长设置无效的问题

## [3.1.2] - 2026-02-27

### Added
- ✨ **模型元数据覆盖 API** - 新增 `GET/POST/DELETE /api/settings/model-metadata`，支持自定义模型定价与参数限制
- ✨ **Prompt Caching 支持** - 自动注入 `cache_control` 断点，与 OpenCode SDK 缓存策略对齐
- ✨ **推理努力级别支持** - 支持 `reasoning_effort` 参数向 Claude/Gemini 的转换
- ✨ **渠道允许模型列表** - 渠道新增 `allowedModels` 字段，支持显式指定可用模型
- ✨ **Chat Completions 流式中继** - 实现标准 OpenAI `chat/completions` 流式响应转换
- ✨ **Gemini 内置工具支持** - 支持 `googleSearch`、`codeExecution`、`urlContext` 等原生工具
- ✨ **多媒体内容规范化** - 支持 Base64 和 URL 形式的图像、文档内容块转换

### Changed
- 🔄 **OpenCode 会话数据迁移至 SQLite** - 从文件系统 JSON 迁移到 SQLite 查询，提升性能与一致性
- 🔄 **模型定价配置统一管理** - 从 `model-metadata.js` 动态生成定价表，消除重复维护
- 🔄 **渠道变更自动同步代理配置** - 创建/更新/删除渠道后自动刷新 OpenCode 代理设置

### Fixed
- 🐛 **Token 统计修复** - 修复缓存 Token 重复计算，正确处理 `cacheCreation` / `cacheRead` 统计
- 🐛 **代理流式响应压缩冲突** - 禁用上游 `accept-encoding`，防止双消费者竞争导致响应异常
- 🐛 **Gateway 路径规范化** - 修复末尾斜杠问题，确保 `/v1/responses` 与 `/responses` 路径正确识别
- 🐛 **环境变量冲突误报** - 修复删除配置后仍提示冲突的问题，同步清理进程中的同名变量
- 🐛 **Shell 配置文件检查补全** - 补充 `.bash_login`、`.zshenv`、`.zlogin` 等遗漏文件检查
- 🐛 **Chat Completions 流终止消息** - 补充最终 usage chunk，满足 `stream_options.include_usage` 规范

## [3.1.1] - 2026-02-26

### Added
- ⚙️ **模型探测策略开关** - 设置中新增“优先使用 `/v1/models` 探测可用模型”控制项，默认关闭并使用默认测速模型探测。

### Changed
- 🚦 **测速稳定性增强** - `speed-test-all` 调整为串行/小并发策略，降低上游并发窗口打满导致的偶发失败。
- 🔍 **模型列表获取策略优化** - 转换渠道模型获取改为串行探测，避免并发探测触发限流。

### Fixed
- 🐛 **OpenCode 转 Claude 请求格式修复** - 修正 `system`、`metadata` 等结构转换，兼容 Claude Code 特征校验。
- 🐛 **`metadata.user_id` 会话一致性修复** - 同一 `session` 复用同一 `user_id`，避免请求侧与测速侧身份不一致导致拒绝。
- 🐛 **延迟显示修复** - 修复 `latency` 为 `0ms` 时错误显示的问题，改为 `null` 语义处理。

## [3.1.0] - 2026-02-04

### Added
- ✨ **OAuth 登录统一预设化** - 三种渠道统一通过预设下拉框选择 OAuth 登录
  - Claude 渠道预设新增"Claude OAuth"选项，选择后自动显示 OAuth 认证面板
  - Codex 渠道新增预设系统，支持"OpenAI / OpenAI OAuth / 自定义"预设
  - Gemini 渠道新增预设系统，支持"Google AI / Google OAuth / 自定义"预设
  - 三种渠道 UI 风格完全统一，均通过预设下拉框切换认证方式
- ✨ **渠道自定义预设** - 所有渠道类型新增"自定义"预设选项
  - Claude 渠道新增"自定义"预设，用户可手动填写所有字段
  - Codex / Gemini 渠道同样支持自定义预设
- ✨ **Codex/Gemini 预设配置文件** - 新增独立预设配置
  - 新增 `codexPresets.js`，定义 Codex 渠道预设及分类
  - 新增 `geminiPresets.js`，定义 Gemini 渠道预设及分类

### Changed
- 🎨 **OAuth 认证面板样式优化** - OAuth section 使用紫色渐变背景区分
  - 认证方式 radio 按钮改为卡片式布局，选中状态高亮
  - 选择 OAuth 预设后自动隐藏 API Key 输入框
- 🔄 **移除 Codex/Gemini 独立认证方式 section** - 不再使用 radio-group 切换认证
  - 改为通过预设下拉框选择，与 Claude 渠道保持一致
  - 预设切换自动设置 `authType`，面板内容随之联动

## [3.0.6] - 2026-02-03

### Added
- ✨ **Codex/Gemini 模型重定向支持** - 为 Codex 和 Gemini 渠道添加模型重定向功能
  - Codex 渠道面板新增"模型重定向"配置部分
  - Gemini 渠道面板新增"模型重定向"配置部分
  - Gemini 代理服务器支持 URL 中模型名称的重定向
  - 后端服务层支持 `modelRedirects` 字段存储
- ✨ **Codex/Gemini 测速模型配置** - 为 Codex 和 Gemini 渠道添加测速模型配置
  - Codex 渠道面板新增"测速模型"输入框
  - Gemini 渠道面板新增"测速模型"输入框
  - 后端服务层支持 `speedTestModel` 字段存储

### Changed
- 🔇 **优化模型重定向日志输出** - 减少重复日志打印
  - 添加日志缓存机制，相同重定向规则只打印一次
  - 渠道配置更新时自动清除缓存，触发重新打印
  - Claude、Codex、Gemini 三个代理服务器统一使用此机制

## [3.0.2] - 2026-02-01

### Fixed
- 🐛 **修复渠道类型检测错误** - 修复第三方代理 URL 路径包含 "claude" 时被误判为官方 Claude API 的问题
  - 修改 `detectChannelType()` 函数，仅检查域名而非完整 URL 路径
  - 修复 `https://code.newcli.com/claude/aws` 等第三方代理无法获取模型列表的问题
  - 添加 URL 解析错误处理，增强容错性
- 🐛 **修复 Cloudflare 检测崩溃** - 修复模型检测时引用未定义变量导致服务崩溃的问题
  - 修正 `model-detector.js` 第 534 行变量名错误（`body` → `data`）
  - 确保 Cloudflare 检测逻辑正常工作

### Added
- ✨ **Cloudflare 防护智能处理** - 当模型列表接口被 Cloudflare 保护时自动使用默认模型
  - 检测到 Cloudflare 拦截时，自动返回 `claude-sonnet-4-5` 作为默认模型
  - 前端显示友好提示信息，说明使用了默认模型
  - 区分 Cloudflare 保护、认证失败、访问拒绝等不同错误类型
  - 保持向后兼容，不影响其他正常工作的渠道
- ✨ **支持手动输入模型名称** - 渠道配置表单增强
  - 测速模型选择器改为自动完成输入框，支持手动输入
  - 无法获取模型列表时，提供常见模型名称示例
  - 用户可以从下拉列表选择或直接输入自定义模型名称
  - 提升用户体验，解决第三方代理模型配置问题

## [3.0.1] - 2026-02-01

### Added
- 📦 **插件导出/导入功能** - 配置导出系统新增插件支持
  - 支持导出 Legacy 插件 (`~/.cc-tool/plugins/`)
  - 支持导出 Native 插件 (`~/.claude/plugins/`)
  - 完整文件快照（base64 编码）
  - 自动过滤敏感文件（.env、credentials、keys）
  - 支持插件导入并自动更新注册表
  - UI 显示插件数量统计

### Security
- 🔒 **修复路径遍历漏洞** - 加强导入安全性
  - 修复 Native 插件导入路径注入漏洞
  - 修复 Markdown 文件路径遍历漏洞
  - 添加 Markdown 文件白名单验证（仅允许 CLAUDE.md、AGENTS.md、GEMINI.md）
  - 强化路径安全验证

### Changed
- 📊 **配置导出版本升级** - 从 v1.1.0 升级到 v1.2.0
  - 新增 `plugins` 字段
  - 保持向后兼容（v1.1.0 导出仍可导入）

## [2.6.0] - 2026-01-29

### Added
- 🧩 **插件管理前端页面** - 新增 Web UI 插件管理功能
  - 插件列表：显示已安装插件，支持启用/禁用切换、搜索过滤
  - 插件安装：支持通过 Git URL 安装插件
  - 插件卸载：一键卸载已安装插件
  - 统计面板：显示总计/已启用/已禁用插件数量
- 🔌 **插件 REST API** - 新增 `/api/plugins` 系列接口
  - `GET /api/plugins` - 获取插件列表
  - `POST /api/plugins/install` - 安装插件
  - `DELETE /api/plugins/:name` - 卸载插件
  - `PUT /api/plugins/:name/toggle` - 切换启用状态

## [2.5.1] - 2026-01-27

### Added
- 📦 配置导出升级为 ZIP，包含前端 UI/终端/Prompts/安全/高级配置等全量选项

### Fixed
- 🐛 UI 配置读取保留扩展字段，避免导入后丢失自定义项

## [2.5.0] - 2026-01-27

### Added
- 🔐 **安全设置面板** - 支持设置访问密码，每次进入面板需验证
- 🧹 **安全设置重置命令** - 新增 `ctx security reset` 清除密码文件，便于恢复
- 🧭 **系统 Shell 选择** - 设置中的终端工具新增系统 Shell 选项，Web 终端与系统选择强关联

### Improved
- 🧾 **Web 终端完整快照** - 服务端基于 headless xterm 生成全量滚动历史快照，刷新后可恢复断开前屏幕内容
- 🪟 **终端光标与视口同步** - 快照恢复时校准光标位置，减少提示符重绘与错位
- 📐 **终端尺寸同步稳定性** - 隐藏状态不触发 fit，避免多余 resize 导致提示符刷新

### Fixed
- 🐛 修复 Web 终端刷新/回连时提示符重复累加的问题

## [2.4.2] - 2026-01-24

### Fixed
- 🐛 修复 Web 终端使用历史会话时的项目名解析错误，避免工作目录不存在导致终端创建失败
- 🐛 修复终端路由 query 变更不触发创建的问题，避免刷新后重复创建终端
- 🐛 修复配置模板应用中“已有项目”选择项重复显示的问题

### Improved
- 🧭 Web 终端标签页状态本地持久化 + 后端活跃终端恢复，关闭浏览器后可继续回连
- 🧷 新建会话与“使用对话 → Web 终端”强制新开标签页，避免复用导致混淆
- 🧱 终端视图路由保持同一组件实例，减少切页导致的终端断开

## [2.4.1] - 2026-01-20

### Improved
- ⚡ **后端性能大幅优化** - 全面异步化改造与增强缓存
  - 文件操作全异步化：将核心服务中的同步文件 I/O 替换为异步操作，消除阻塞
  - 增强缓存管理器：引入 LRU + TTL 双重缓存机制，大幅减少文件扫描频率
  - 流式文件读取：优化会话消息扫描，支持流式读取，显著降低内存占用和响应时间
  - API 响应速度提升 70-99%，缓存命中时响应 < 1ms
- 📦 **前端构建优化** - 深度优化 Vite 打包配置
  - 实现精细化代码分割，Naive UI、Vue Vendor、图标库独立打包
  - 增强代码压缩与 Tree Shaking，去除生产环境 console 日志
  - 首屏资源加载体积减少 50%+，提升页面加载速度

### Fixed
- 🐛 修复 `performance-test.js` 脚本路径引用的问题
- 🐛 修复构建过程中缺少的依赖 (`terser`)

## [2.4.0] - 2026-01-18

### Changed
- 🎨 **移除内置/自定义模板区分** - 统一模板显示样式
  - 移除所有模板卡片和预览中的"内置"/"自定义"标签
  - 移除配置模板下拉选项中的"(内置)"后缀
  - 简化界面，提升用户体验
- 🔓 **允许编辑所有模板** - 增强模板管理灵活性
  - 内置模板现在可以编辑和删除
  - 编辑内置模板时自动保存为自定义覆盖版本
  - 删除内置模板时添加隐藏标记，不影响自定义模板

### Technical
- 更新 `ConfigTemplateCard.vue` 移除内置标签并允许所有模板编辑删除
- 更新 `ConfigPreviewModal.vue` 移除内置/自定义标签显示
- 更新 `WorkspaceFormModal.vue` 简化模板选项显示

---

## [2.3.0] - 2025-01-15

### Changed
- 🧹 **移除 Web 终端命令设置** - 从设置抽屉中删除 "Web终端命令" 面板
- 🧹 **移除系统维护设置** - 从设置抽屉中删除 "系统维护" 面板和旧文件扫描功能

---

## [2.2.0] - 2025-12-08

### Added
- 🔔 **任务完成通知** - 新增通知设置，支持系统通知（卡片/弹窗）和飞书机器人通知，跨平台支持 macOS/Windows/Linux
- 📊 **冻结渠道显示** - 代理控制面板显示各类型冻结渠道数量

### Improved
- ⚡ **调度器优化** - 移除渠道缓存签名机制，每次直接读取最新配置
- 🔧 **代理超时配置** - 增加代理连接和请求超时时间至 2 分钟
- 📦 **请求体限制** - 提高请求体大小限制至 100MB
- 🎯 **错误提示优化** - 区分渠道冻结和并发上限的错误信息

### Fixed
- 🐛 修复渠道配置变更后调度器未及时刷新的问题

---

## [2.1.0] - 2025-12-06

### Added
- 渠道卡片新增单渠道速度测试按钮，支持快速测试单个渠道连通性
- 测试结果直接展示在卡片下方，包含延迟、状态码等信息

### Fixed
- 修复 Codex 渠道速度测试使用错误的 API 路径问题
- 修复 Gemini 渠道速度测试未传递 channelType 参数问题
- Codex 速度测试现在使用正确的 Responses API 格式（流式响应）
- Gemini 速度测试现在使用渠道配置的模型而非硬编码模型

### Changed
- 移除代理服务器的冗余调试日志，减少控制台输出
- 优化批量速度测试的前端超时时间

## [2.0.2] - 2025-12-02

### 🎉 重大更新：MCP 管理 & Prompts 管理 & Skills 技能 & 多模型预设

### Added

#### 🔌 MCP 服务器管理
- 全新 MCP (Model Context Protocol) 服务器管理模块
- 支持三种传输类型：stdio、http、sse
- 多平台同步：Claude / Codex / Gemini 配置一键同步
- 15+ 内置预设模板（filesystem、fetch、memory、github、puppeteer、playwright 等）
- 已安装预设自动识别，禁用重复添加
- 智能配置解析：支持粘贴 JSON 配置快速导入，自动修复不完整片段
- 一键测试 MCP 服务器连接状态
- 实时状态监控：在线/异常/测试中状态指示
- 配置导出：支持 JSON、Claude 格式、Codex TOML 格式
- 服务器卡片拖拽排序

#### 📝 Prompts 系统提示词管理
- 全新 Prompts 提示词预设管理模块
- 支持创建、编辑、删除自定义提示词预设
- 内置模板：代码审查专家、调试专家等
- 多平台同步：一键同步到 `CLAUDE.md`、`AGENTS.md`、`GEMINI.md`
- 支持从现有文件导入提示词
- 激活/停用管理，灵活切换不同场景

#### 🧩 Skills 技能管理
- 全新 Claude Code Skills 技能管理模块
- 支持从 GitHub 仓库获取技能列表（默认 anthropics/skills 官方仓库）
- 支持添加自定义仓库源，灵活扩展技能来源
- 技能一键安装/卸载到 `~/.claude/skills/`
- 技能详情查看，包含描述、用法、参数说明
- 支持搜索和筛选（全部/已安装/未安装）
- 支持创建自定义本地技能

#### 🌐 多模型预设支持
- 渠道表单新增预设选择器，快速配置不同 AI 服务商
- 内置预设：
  - **Claude 官方** - Anthropic 原版 API
  - **DeepSeek** - DeepSeek-V3.2-Exp
  - **智谱 GLM** - glm-4.6 / glm-4.5-air
  - **Kimi K2** - kimi-k2-thinking
  - **MiniMax** - MiniMax-M2
  - **通义千问** - qwen3-max
  - **豆包 Seed** - doubao-seed-code-preview-latest
- 选择预设后自动填充 baseUrl 和模型配置
- 切换渠道时自动写入对应模型环境变量

#### 🔗 渠道级代理配置
- 每个渠道可单独配置代理地址（proxyUrl）
- 支持直连模式：将代理写入 `HTTPS_PROXY`/`HTTP_PROXY` 环境变量
- 支持代理模式：通过 `https-proxy-agent` 在代理服务器中路由请求

#### ⚡ 渠道速度测试
- 全新渠道速度测试功能
- 支持测试所有渠道的 API 响应延迟
- 按渠道类型筛选（Claude/Codex/Gemini）
- 测试摘要统计（成功/失败/平均延迟）
- 结果可视化展示，延迟分级着色

#### ⚠️ 环境变量冲突检测
- 启动时自动检测系统环境变量冲突
- 检测 `ANTHROPIC_API_KEY`、`OPENAI_API_KEY`、`GEMINI_API_KEY` 等敏感变量
- 检测 shell 配置文件（~/.zshrc、~/.bashrc 等）
- 提供详细的冲突来源和清理建议
- 支持批量选择清理或"不再提醒"

### Improved
- 🎨 **UI/UX 优化**
  - MCP/Prompts/Skills 管理抽屉式界面，不打断主流程
  - 卡片 hover 显示操作按钮
  - 平台开关一键切换
  - 统计信息实时更新

### Technical
- 🏗️ **后端架构**
  - 新增 `mcp-service.js` MCP 服务层
  - 新增 `prompts-service.js` 提示词服务层
  - 新增 `skill-service.js` 技能服务层
  - 新增 `speed-test.js` 速度测试服务
  - 新增 `env-checker.js` 环境变量检测服务
  - 新增 `env-manager.js` 环境变量管理服务
  - 渠道数据结构新增 `presetId`、`modelConfig`、`proxyUrl` 字段

- 🔧 **前端架构**
  - 新增 `McpDrawer.vue` / `McpFormDrawer.vue` MCP 管理组件
  - 新增 `PromptsDrawer.vue` / `PromptsFormDrawer.vue` 提示词管理组件
  - 新增 `SkillsPanel.vue` / `SkillCard.vue` / `SkillDetailModal.vue` 技能管理组件
  - 新增 `SpeedTestDrawer.vue` 速度测试组件
  - 新增 `EnvConflictModal.vue` 环境变量冲突弹窗
  - 新增 `claudePresets.js` 预设配置文件

---

## [1.6.0] - 2025-11-29

### 🎉 重大更新：多渠道负载均衡架构

### Added
- 🔀 **多渠道负载均衡**
  - 支持同时启用多个渠道，系统自动进行智能负载均衡
  - 支持为每个渠道配置**权重**（1-100），按权重分配请求流量
  - 支持为每个渠道配置**最大并发数**，精细控制每个渠道的负载
  - 基于加权随机算法，高权重渠道获得更多请求
- 🏥 **渠道健康检查与智能切换**
  - 自动检测渠道健康状态，连续失败自动冻结问题渠道
  - 冻结时间指数递增（1分钟 → 2分钟 → 4分钟...最大30分钟）
  - 渠道恢复后自动解冻，无需人工干预
  - 一键重置渠道健康状态
- 🔗 **会话绑定模式**
  - 支持开启/关闭会话绑定，确保同一会话的请求发送到同一渠道
  - 避免上下文在不同渠道间切换导致的问题
- 📊 **首页三列布局拖拽排序**
  - Claude / Codex / Gemini 三列可自由拖拽调整顺序
  - 布局顺序自动保存，跨设备同步
- 🎨 **渠道卡片全新设计**
  - 新增权重和并发数显示
  - 新增健康状态指示器（健康/冻结/检查中）
  - 支持直接在卡片上快速调整权重和并发设置
  - 渠道启用/禁用状态切换

### Changed
- ⚠️ **移除"默认渠道"概念**
  - 不再需要手动切换默认渠道
  - 改为启用/禁用渠道，启用的渠道自动参与负载均衡
  - 代理启动时自动使用所有启用的渠道
- 🔄 **API 接口变更**
  - 移除 `/channels/activate` 接口
  - 移除 `/channels/active` 接口
  - 新增 `/channels/enabled` 接口获取所有启用的渠道
  - 渠道数据结构新增 `enabled`、`weight`、`maxConcurrency` 字段

### Improved
- ⚡ **性能优化**
  - 渠道数据内存缓存，减少文件 I/O
  - 首页数据并行加载，快速接口不被慢速接口阻塞
  - 统计数据异步计算，不影响首屏渲染
  - 会话列表虚拟滚动优化
- 🏗️ **代码架构优化**
  - 全新的调度器模块 `channel-scheduler.js`
  - 全新的健康检查模块 `channel-health.js`
  - 服务层代码结构重构，职责更清晰
  - Express 路由顺序优化，避免参数路由匹配问题
- 🎨 **UI/UX 改进**
  - 渠道面板视觉重新设计
  - 代理状态卡片信息更丰富
  - 实时日志面板性能优化
  - 整体圆角和间距微调

### Fixed
- 🐛 修复 CLI 添加 Codex/Gemini 渠道时参数不匹配的问题
- 🐛 修复 WebSocket 状态广播时渠道数据不一致的问题
- 🐛 修复代理启动时渠道验证逻辑
- 🐛 修复前端 API 调用与后端接口不匹配的问题

---

## [1.5.5] - 2025-01-12

### Improved
- ⚡ 性能优化：首页数据加载策略改进，快速接口不再被慢速接口阻塞
  - 前端并行加载所有数据，使用 `Promise.allSettled()` 替代 `Promise.all()`
  - 快速接口（UI 配置、频道列表）可立即返回和渲染
  - 慢速接口（今日统计）在后台并行加载，不影响首屏体验
- 🔧 优化版本检查逻辑
  - 使用 `requestIdleCallback` 延迟版本检查到浏览器空闲时
  - 添加 npm 注册表请求缓存，TTL 为 1 小时
  - 减少首页初始加载时间
- 🐛 修复问题
  - 移除版本检查的 mock 模式，恢复真实版本检测

---

## [1.5.4] - 2024-11-27

### Improved
- 🎨 全局圆角优化，主卡片从 12px 调整为 8px，内部小卡片 6px，按钮 4-5px，整体更现代简洁
- ✨ 优化 Logo 和导航标签的圆角设计，提升视觉精致度
- 📊 今日数据统计卡片样式精细调整，提升数据展示的视觉层级
- 🔒 锁定状态界面圆角优化，锁定图标容器从 16px 改为 10px
- 📱 列表项和标签圆角统一调整，提升整体设计一致性
- 🎯 按钮和选择器圆角细化，从 6px 优化为 4px，更具现代感

---

## [1.5.3] - 2024-11-26

### Added
- 🚀 新增 `ctx daemon` 命令，支持后台运行模式（基于 PM2）
  - `ctx daemon start` - 后台启动服务
  - `ctx daemon stop` - 停止后台服务
  - `ctx daemon restart` - 重启服务
  - `ctx daemon status` - 查看运行状态
  - `ctx daemon logs` - 查看 PM2 日志
- 🩺 新增 `ctx doctor` 命令，系统健康诊断工具
  - 检查 Node.js 版本兼容性
  - 检查配置文件完整性
  - 检查端口占用情况
  - 检查 Claude Code 配置
  - 检查日志目录和磁盘空间
  - 检查进程运行状态
- 📋 新增 `ctx logs` 命令，日志管理工具
  - `ctx logs [type]` - 查看指定类型日志（ui/claude/codex/gemini）
  - `ctx logs --follow` - 实时跟踪日志
  - `ctx logs --lines N` - 显示最后 N 行
  - `ctx logs --clear` - 清空日志文件
- 📊 新增 `ctx stats` 命令，查看统计信息
  - 会话数量统计
  - Token 使用统计
  - API 调用次数统计
- ✨ 新增版本自动更新功能
  - 自动检测新版本
  - 一键更新并重启
  - 支持查看更新日志

### Improved
- 🎨 优化 Web UI 更新提示，支持 Markdown 格式的 changelog 展示
- 📦 改进日志管理，统一日志存储路径到 `~/.claude/logs/`
- ⚡ 优化命令行帮助信息，新增命令自动出现在 `ct --help` 中

### Fixed
- 🐛 修复后台运行模式下端口冲突问题
- 🐛 修复日志文件过大导致的性能问题

---

## [1.5.2] - 2024-11-26

### Added
- 🔒 新增类型锁定功能，可灵活关闭不需要的 AI 工具类型（Claude/Codex/Gemini），精简工作界面
- 🔖 新增强大的收藏功能，支持收藏关键对话至顶部书签栏，一键快速定位核心对话内容
- 🎯 新增后台运行模式，启动服务后可安全关闭终端窗口，代理服务持续运行无间断
- ⚙️ 新增高级开机自启配置，支持系统启动时自动启动代理服务，无需手动干预

### Improved
- ⚡ 优化首页数据加载性能，引入智能缓存机制，显著提升页面加载速度
- 📦 整合聚合 Dashboard 接口，减少多余请求，优化整体网络开销
- 🎨 微调 UI 细节，提升整体视觉体验和交互流畅度

### Fixed
- 🐛 修复会话运行时间计算逻辑，确保时间统计准确无误

---

## [1.5.1] - 2024-11-20

### Added
- 📢 新增版本更新提示，及时推送最新功能和改进

### Improved
- 🎨 优化更新提示 UI，完美适配日间/暗黑主题

### Fixed
- 🐛 修复更新提示弹窗在白天主题下背景色问题

---

## [1.5.0] - 2024-11-15

### Added
- 🤖 新增 Gemini AI 工具完整支持

### Improved
- 🎨 全面优化整体 UI 设计和交互体验

### Fixed
- 🐛 修复代理管理页面的已知问题

---

## [1.4.5] - 2024-11-10

### Added
- 🔖 新增收藏功能，快速标记重要会话

### Improved
- ⚡ 性能优化和响应速度提升

### Fixed
- 🐛 修复渠道切换问题

---

## [1.4.0] - 2024-11-05

### Added
- 📱 新增响应式设计，支持更多终端宽度
- 🔍 新增全局搜索功能，快速查找会话内容

### Improved
- 🎨 整体 UI 界面优化

### Fixed
- 🐛 修复若干已知问题
