Commit Graph

56 Commits

  • 重大功能改进:添加禁止 Claude Code 签名功能并重构代码
    新增功能:
    - 在添加供应商和编辑供应商窗口都增加"禁止 Claude Code 签名"选择框
    - 自动同步 JSON 配置中的 includeCoAuthoredBy 字段
    - 支持双向同步:手动编辑 JSON 时选择框状态自动更新
    
    代码优化:
    - 提取通用函数到 providerConfigUtils.ts 工具文件
    - 重构代码避免重复,提高可维护性
    - 保持原有自动提取官网地址功能
    
    UI改进:
    - 优化选择框与标签的对齐样式
    - 统一两个窗口的交互体验
  • 改进添加供应商界面:实现自动提取官网地址功能
    - 新增 extractWebsiteUrl 函数,从 JSON 配置中自动解析 ANTHROPIC_BASE_URL
    - 智能处理 URL 前缀,自动去掉 "api." 前缀生成官网地址
    - 优化用户体验:仅在官网地址为空时自动填入,不覆盖用户手动输入
    - 支持实时解析,用户输入 JSON 配置时立即更新官网地址字段
  • 优化用户体验:简化数据结构并改进文件夹访问
    - 移除 Provider 中无用的 createdAt 和 updatedAt 字段
    - 简化数据结构,去除冗余的时间戳设置代码
    - 将底部"浏览"按钮改为"打开",直接打开配置文件夹
    - 新增 openConfigFolder API,使用 shell.openPath 打开文件夹
    - 优化用户体验,方便用户查看和管理所有配置文件
  • 统一供应商处理逻辑:默认供应商与普通供应商一致处理
    - 移除默认供应商在切换时的特殊逻辑
    - 默认供应商现在也创建独立配置文件 settings-默认.json
    - 移除删除时对默认供应商的特殊保护
    - 所有供应商现在都遵循相同的文件管理规则
  • 简化界面:删除导入当前配置功能
    - 移除 ImportConfigModal 组件及相关文件
    - 删除头部的导入当前配置按钮
    - 移除 importCurrentConfig 相关的 API 和 IPC 处理器
    - 保留 importCurrentConfigAsDefault 功能用于首次启动
    - 界面更简洁,专注核心功能:添加、编辑、切换、删除供应商
    - 减少用户困惑,因为自动创建的默认供应商已经满足大部分需求
  • 移除默认供应商删除时的过度保护逻辑
    用户要删除就说明不需要了,没必要特别保护。
    默认供应商现在可以正常删除,只是因为没有独立配置文件所以跳过文件删除操作。
  • 优化首次启动体验:自动创建默认供应商且设为选中状态
    - 新增 importCurrentConfigAsDefault 函数,创建 ID 为 'default' 的特殊供应商
    - 默认供应商不生成独立配置文件,直接使用现有 settings.json
    - 首次启动时自动导入现有配置为默认供应商,并设为选中状态
    - 切换到默认供应商时无需文件操作,直接使用原配置
    - 删除默认供应商时保护原配置文件不被误删
    - 简化 ImportConfigModal 组件,移除 isEmpty 相关逻辑
    - 提升用户体验:无需手动操作,开箱即用
  • 修复编辑供应商名称后配置文件名不同步问题
    - 修改 getProviderConfigPath 函数,支持基于供应商名称生成配置文件名
    - 在 updateProvider 中添加文件重命名逻辑,当供应商名称改变时自动重命名配置文件
    - 更新所有相关函数调用,传递供应商名称参数确保文件命名一致
    - 完善 switchProvider 备份逻辑,使用正确的供应商名称生成备份文件名
    - 添加必要的导入声明修复编译错误
    
    现在编辑供应商名称后,对应的配置文件名会自动更新反映新名称
  • 改进用户体验:供应商列表为空时自动弹出导入配置对话框
    - 当供应商列表为空时,自动显示导入配置对话框,引导用户导入当前配置
    - 为导入配置对话框添加isEmpty属性,针对空列表场景优化界面文案
    - 空列表场景下显示更友好的标题和说明文本
    - 优化按钮文本:空列表时取消按钮显示为"稍后设置"
  • 重大重构:从字段替换切换到完整配置文件切换系统
    - 实现基于文件重命名的供应商切换机制,支持完整settings.json配置切换
    - 移除所有向后兼容代码,简化为纯JSON配置模式
    - 添加导入当前配置功能,解决首次使用时配置丢失问题
    - 移除描述字段,简化用户界面
    - 完整的错误处理和回滚机制确保配置安全
    - 清理所有调试代码,优化代码质量
  • 重大改进:用原生 JSON 存储替换 electron-store
    - 实现 SimpleStore 类,使用原生 fs 操作 JSON 文件
    - 解决 "Cannot find module 'conf'" 的依赖问题
    - 移除 electron-store 依赖,减少包体积
    - 配置文件存储在 ~/.cc-switch/config.json
    - 数据格式透明,便于备份和调试
    - 修复 TypeScript 类型问题
    - 测试通过:构建、打包、运行正常
  • 修复 macOS 构建和版本冲突问题
    - 将 macOS 目标从 DMG 改为 ZIP 避免 hdiutil 问题
    - 更新版本号到 1.0.5 避免标签冲突
    - 添加 ARM64 和 x64 双架构支持
    - 禁用自动发布避免版本冲突
  • 修复 GitHub Actions Release 工作流
    - 添加 contents: write 权限解决 403 错误
    - 使用 release/* 匹配所有构建文件
    - 添加调试步骤显示构建产物
    - 优化 matrix 配置增加平台标识
  • 修复 pnpm 版本兼容性问题
    - 更新 GitHub Actions 使用 pnpm 10.12.3(与本地一致)
    - 重新生成 pnpm-lock.yaml 确保版本兼容
    - 恢复使用 --frozen-lockfile 确保依赖一致性
  • 添加 GitHub Actions 自动构建和发布工作流
    - 支持跨平台自动构建(Windows、macOS、Linux)
    - 在创建 tag 时自动触发构建和发布
    - 自动上传构建产物到 GitHub Releases
    - 添加跨平台构建脚本命令
  • 配置应用图标:支持 Windows NSIS 安装包正确显示图标
    - 添加跨平台图标配置(Windows .ico、macOS .icns、Linux .png)
    - 配置 Windows 双重构建目标:NSIS 安装程序 + Portable 版本
    - 解决 Windows 下 exe 文件显示默认图标的问题
    - NSIS 安装程序版本可正确显示自定义图标
  • 完善发布配置:添加图标和优化构建
    - 添加应用图标文件 (icon.ico, icon.icns, icon.png)
    - 配置最大压缩以减小文件体积
    - 修改Windows目标为portable版本,生成单文件exe
    - 排除不必要的node_modules文件
    - 完善作者信息
  • 移除模态框点击外部关闭功能,防止误触关闭
    - 移除 AddProviderModal 的点击遮罩层关闭功能
    - 移除 EditProviderModal 的点击遮罩层关闭功能
    - 用户现在只能通过按钮主动关闭模态框,提升用户体验
  • 代码优化:清理冗余功能并修复关键问题
    - 删除未使用的 axios 依赖
    - 移除 Provider 接口中未使用的 model 字段
    - 删除未使用的供应商连通性检查功能
    - 修复 preload.ts 中缺失的 IPC 方法暴露
    - 简化 UI:移除重复的单选按钮,仅保留启用按钮
    - 修复 TypeScript 接口定义不完整的问题
  • 解决系统弹窗阻塞问题:实现非阻塞用户交互
    - 创建自定义ConfirmDialog组件替代系统confirm
    - 删除功能使用自定义确认对话框,避免界面阻塞
    - 添加/编辑模态框使用内联错误提示替代alert
    - 优化用户体验:更详细的确认信息和统一的视觉风格
  • 实现完美的浮动通知系统
    - 添加自定义通知组件替代阻塞式alert
    - 浮动定位不影响页面布局,宽度自适应内容
    - 支持成功/错误两种样式,渐变背景+阴影效果
    - 实现完整的淡入淡出动画,原地显示隐藏
    - 重启提示显示4秒,普通操作反馈2-3秒
    - 智能定时器管理,支持动画完成后清理
    
    用户体验:切换供应商后优雅提示"请重启Claude Code终端以生效"
  • 修复编辑后输入框无法选中的焦点管理问题
    - 移除阻塞式alert调用,避免焦点管理冲突
    - 清理不必要的CSS z-index层级设置
    - 优化EditProviderModal的useEffect依赖管理
    - 改用console日志记录操作结果
    
    问题原因:alert()强制抢夺焦点,在模态框关闭时打断正常焦点流转
  • 修复编辑供应商配置同步问题
    - 修复当编辑当前激活供应商时,Claude Code配置文件未同步更新的问题
    - 在updateProvider中增加逻辑检测是否为当前激活供应商
    - 如果是当前激活供应商,同时调用switchProvider更新~/.claude/settings.json
    - 确保编辑后的配置能立即生效,无需重新切换供应商
  • 修复URL推测功能:支持不完整URL输入并保持验证
    - 修复inferWebsiteUrl函数,支持无协议URL的推测
    - 在API地址失焦时自动补全https://协议
    - 同时更新API地址和网站地址字段
    - 保持URL输入验证,确保API地址有效性
    - 提升用户体验:用户可输入api.example.com等简化格式
  • 增强供应商配置:添加网站地址字段和智能推测功能
    - 添加websiteUrl可选字段到Provider类型
    - 实现API地址到网站地址的自动推测逻辑(去除api.前缀)
    - 在添加/编辑供应商表单中增加网站地址字段
    - 供应商列表智能显示:有网址显示可点击链接,无网址显示API地址
    - 提升用户体验:避免点击API端点地址导致的错误页面
  • 修复fetch API超时实现:使用AbortController替换不支持的timeout参数
    - 替换fetch中的timeout选项为AbortController + setTimeout实现
    - 修复TypeScript编译错误:timeout不存在于RequestInit类型中
    - 添加proper超时清理逻辑避免内存泄漏
    - 更新CLAUDE.md文档:统一使用pnpm命令,补充IPC接口说明
  • 简化过度设计,恢复原生弹窗
    - 删除 ConfirmModal 和 MessageModal 组件
    - 恢复原生 alert() 和 confirm() 弹窗
    - 移除不必要的加载状态指示器
    - 移除切换供应商的确认对话框
    - 简化代码,提升响应速度和用户体验
  • 升级 Electron 到最新稳定版本
    - 更新 Electron 从 28.0.0 到 32.2.5
    - 提升安全性和性能
    - 获得最新功能和bug修复
  • 添加加载状态指示器
    - 在切换供应商时显示加载状态
    - 禁用操作按钮防止重复提交
    - 提供视觉反馈改善用户体验
  • 添加切换供应商的确认对话框
    - 切换供应商前显示确认对话框
    - 防止误操作导致的意外切换
    - 提升用户操作安全性
  • 改进 ID 生成方式避免冲突
    - 使用时间戳+随机字符串组合生成唯一ID
    - 避免快速连击导致的ID冲突问题
    - 提升数据一致性和稳定性
  • 用 Modal 组件替换所有 alert 弹窗
    - 创建 ConfirmModal 和 MessageModal 组件
    - 更新 App.tsx 使用新的 Modal 组件
    - 改进表单验证错误显示
    - 提升用户体验和界面一致性
  • 修复 any 类型为具体的接口定义
    - 定义 ClaudeCodeConfig 接口替代 any 类型
    - 提升类型安全性和代码可维护性
    - 明确配置文件结构
  • 移除调试用的 console.log 语句
    - 清理 EditProviderModal.tsx 中的调试日志
    - 保留必要的错误日志输出
    - 提升代码整洁度
  • 修复缺失的 checkStatus IPC处理器
    - 添加 checkStatus IPC handler 到主进程
    - 实现基础的 API 连通性检查
    - 修复 preload API 与主进程不匹配的问题
  • 移除状态检测功能,专注核心切换功能
    - 删除 checkProviderStatus 函数和相关 IPC 处理
    - 移除 App.tsx 中所有状态检测相关的状态和函数
    - 简化 ProviderList.tsx,去除状态显示和检查按钮
    - 清理 types.ts 中的 ProviderStatus 类型定义
    - 界面更简洁,专注于供应商切换这一核心功能
  • 修复按钮禁用逻辑:临时禁用状态检查功能
    - 临时禁用"检查状态"按钮(功能开发中)
    - 移除"启用"按钮对在线状态的依赖
    - 修复因状态检查未完成导致所有供应商无法启用的问题
  • 添加配置文件浏览选择功能
    - 在主进程添加文件选择对话框,支持选择 settings.json 配置文件
    - 更新类型定义和预加载脚本,添加 selectConfigFile API
    - 在界面底部配置路径区域添加"浏览"按钮
    - 优化样式布局,使配置路径和浏览按钮水平排列
    - 修复 React 导入警告,移除未使用的 React 导入
  • 重构状态检测功能:清理复杂逻辑,保留UI结构
    ## 主要变更
    - 移除所有Claude命令调用和进程管理逻辑
    - 简化检测函数,暂时返回"功能开发中"状态
    - 添加单独检查状态按钮和相关UI交互
    - 保留完整的供应商管理功能(添加、编辑、删除、切换)
    
    ## 技术优化
    - 删除复杂的超时机制、进程监听、错误处理
    - 移除axios依赖和HTTP请求相关代码
    - 清理竞态条件和队列管理逻辑
    - 保持清晰的UI状态管理
    
    ## UI改进
    - 添加橙色主题的单独检查按钮
    - 增强检查状态的视觉反馈(🔄 进度指示器)
    - 保留所有状态显示逻辑等待功能重新实现