Commit Graph

728 Commits

  • 移除模态框点击外部关闭功能,防止误触关闭
    - 移除 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() 弹窗
    - 移除不必要的加载状态指示器
    - 移除切换供应商的确认对话框
    - 简化代码,提升响应速度和用户体验
  • 添加加载状态指示器
    - 在切换供应商时显示加载状态
    - 禁用操作按钮防止重复提交
    - 提供视觉反馈改善用户体验
  • 添加切换供应商的确认对话框
    - 切换供应商前显示确认对话框
    - 防止误操作导致的意外切换
    - 提升用户操作安全性
  • 改进 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改进
    - 添加橙色主题的单独检查按钮
    - 增强检查状态的视觉反馈(🔄 进度指示器)
    - 保留所有状态显示逻辑等待功能重新实现
  • 增强供应商状态检查功能
    - 新增 Anthropic 官方状态检查,优先检查服务可用性
    - 改进错误处理和状态码判断逻辑
    - 增加超时时间到20秒,提高连接稳定性
    - 优化错误信息显示,区分认证错误和服务不可用
    - 使用最新的 claude-sonnet-4 模型进行测试
  • 移除自动状态检查,改为手动检查模式
    - 删除定时检查逻辑,避免不必要的 token 消耗
    - 按钮文本从"刷新状态"改为"检查状态"
    - 现在只能手动触发状态检查
  • 添加供应商编辑功能和密码显示切换
    - 为供应商列表添加启用和编辑按钮
    - 创建EditProviderModal组件支持编辑供应商信息
    - 实现updateProvider API接口
    - 为API Key输入框添加密码显示/隐藏功能,使用SVG图标
    - 更新预设供应商配置为YesCode和PackyCode
    - 移除model字段,简化供应商配置
  • 修复 Electron 应用窗口不显示的问题
    - 修正 Electron 依赖版本为 28.0.0(解决安装问题)
    - 更新 package.json 中的启动脚本,改进并发命令执行
    - 修正主进程入口文件路径配置
    - 调整 TypeScript 编译配置的根目录设置
    - 添加 Windows 开发环境启动脚本 start-dev.bat
    - 更新 .gitignore 排除编译产物和锁文件
    
    问题原因:pnpm 默认阻止了 Electron 安装脚本执行,导致应用无法正常启动