Commit Graph

167 Commits

Author SHA1 Message Date
Jason
642e7a3817 chore: format code and fix bundle identifier for v3.0.0 release
- Format all TypeScript/React code with Prettier
- Format all Rust code with cargo fmt
- Fix bundle identifier from .app to .desktop to avoid macOS conflicts
- Prepare codebase for v3.0.0 Tauri release
2025-08-27 11:00:53 +08:00
Jason
5e2e80b00d fix: prevent modal header jumping when toggling API key field
Reserve fixed height for API key input container and use visibility/opacity
for show/hide instead of conditional rendering to maintain consistent modal
height when selecting presets
2025-08-27 10:39:39 +08:00
Jason
374649750b feat(ui): update preset template description for clarity 2025-08-26 15:12:27 +08:00
Jason
606ee67778 fix(ui): Pin modal action bar; prevent bottom content overflow\n\n- Move action buttons to fixed .modal-footer at the bottom\n- Make modal a column flex container; scroll only body\n- Ensure buttons remain visible on small viewports\n- Remove sticky edge cases causing leaked content 2025-08-26 12:34:47 +08:00
Jason
57d21fabcf feat(providers): add Kimi K2 support and optimize provider configurations
- Add Kimi K2 (Moonshot AI) preset with k2-turbo-preview model support
- Set specific models for ANTHROPIC_MODEL and ANTHROPIC_SMALL_FAST_MODEL
- Fix DeepSeek platform URL (remove trailing slash)
- Reorganize provider order for better categorization
2025-08-26 11:28:10 +08:00
Jason
001664c67d - feat(form): Support API Key ⇄ JSON two-way binding in edit modal
- feat(utils): Add helpers to read/write/detect API Key in config
- refactor(form): Reuse unified linking logic for preset and edit flows
- chore: Preserve website URL extraction and signature-disable behaviors
- build: Verify renderer build locally
2025-08-26 10:41:16 +08:00
Jason
616e230218 style: remove window title and adjust header padding for cleaner UI 2025-08-25 23:30:25 +08:00
Jason
9f370bf429 fix: remove @tauri-apps/api/os import and use local UA/platform detection for mac class 2025-08-25 10:37:19 +08:00
Jason
bac2c3db36 refactor: remove window.platform shim; platform detection handled via @tauri-apps/api/os 2025-08-25 10:33:54 +08:00
Jason
326e975748 feat: use @tauri-apps/api/os for reliable platform detection (mac body class) 2025-08-25 10:33:19 +08:00
Jason
ef7e9d2f73 style: remove Electron-specific drag region styles for bordered Tauri window 2025-08-25 10:31:09 +08:00
Jason
d78013562c refactor: rename global API from electronAPI to api and update references 2025-08-25 10:30:45 +08:00
Jason
c8670aede6 feat(ui): drive config path UI from getClaudeConfigStatus (show path + existence hint) and remove direct getClaudeCodeConfigPath usage 2025-08-24 23:36:09 +08:00
Jason
1458f1e45d fix(ui): use browser-safe timeout ref type (ReturnType<typeof setTimeout>) to avoid NodeJS.Timeout mismatch 2025-08-24 23:31:56 +08:00
Jason
224d7a8be0 fix: 修复 Tauri 重构导致的配置读取与渲染问题
- 前端:始终绑定 ,避免环境判断失误造成白屏
- 后端: 仅初始化一次,并通过  注入,避免双实例不一致
- 配置: 兼容  回退,提高旧配置兼容性
- 结果:主页面数据正常加载,底部配置路径组件恢复显示
2025-08-24 23:04:55 +08:00
Jason
55c62a3753 - fix(types): 统一导入到 src/types.ts,移除 shared/types 残留路径
- chore(tsconfig): 将 include 扩展为 src/**/* 覆盖迁移后的源文件
- feat(build): Vite 设置 root 为 src,并将 build.outDir 设为 ../dist 以匹配 Tauri frontendDist
- refactor(api): 去除未使用的 plugin-shell import;统一 electronAPI 类型定义至 vite-env.d.ts
- build: 验证 renderer 构建通过,产物输出至 dist/
2025-08-23 23:11:39 +08:00
farion1231
12fa80e002 refactor: 清理 Electron 遗留代码并优化项目结构
- 删除 Electron 主进程代码 (src/main/)
- 删除构建产物文件夹 (build/, dist/, release/)
- 清理 package.json 中的 Electron 依赖和脚本
- 删除 TypeScript 配置中的 Electron 相关文件
- 优化前端代码结构至 Tauri 标准结构 (src/renderer → src/)
- 删除移动端图标和不必要文件
- 更新文档说明技术栈变更为 Tauri
2025-08-23 21:13:25 +08:00
farion1231
1402fd0cc5 feat: 创建 Tauri API 层替换 Electron IPC 调用
- 创建 tauri-api.ts 封装所有 Tauri invoke 调用
- 保持与 Electron API 相同的接口,确保代码兼容性
- 添加类型声明文件 vite-env.d.ts
- 在 main.tsx 中导入 Tauri API
2025-08-23 20:38:57 +08:00
farion1231
afb20f298a 更新文档 2025-08-21 23:23:08 +08:00
farion1231
654a4745d5 feat: 添加 API Key 快速输入功能
- 选择预设模板后自动显示 API Key 输入框
- 输入 API Key 后自动更新 JSON 配置
- 简化用户配置流程,无需手动编辑 JSON
- 优化交互体验,API Key 输入框位于供应商名称下方
2025-08-21 22:20:57 +08:00
farion1231
0c7043154a feat: 添加快速选择模板按钮的选中状态
- 为模板选择按钮添加选中后保持深色的视觉反馈
- 选中状态与hover状态共享相同的样式
- 用户可以清楚地看到当前选中的模板
2025-08-21 21:46:48 +08:00
farion1231
3097894d30 增加对 DeepSeek v3.1 的支持 2025-08-21 20:05:42 +08:00
Jason
9dac53b754 fix: 修复关键逻辑错误
- 修复 store 初始化的异步问题:构造函数中的异步方法现在正确等待
- 修复配置切换时删除原文件的严重 bug:使用 copyFile 替代 rename 避免文件丢失
- 简化代码实现,移除过度设计的部分
2025-08-10 20:36:17 +08:00
Jason
5f0ef8a441 fix(mac): 修复隐藏标题栏拖拽;标题与内容左对齐;增加 banner 高度以避让交通灯 2025-08-10 19:13:45 +08:00
farion1231
c5843ae849 修复UI问题:禁用正在使用供应商的编辑按钮
- 为正在使用中的供应商禁用编辑按钮,避免编辑活跃配置
- 添加edit-btn的disabled样式,保持界面一致性
- 防止用户编辑正在使用的settings.json导致配置冲突
2025-08-08 15:29:28 +08:00
farion1231
482298411a 代码重构:移除 any 类型并抽取共享表单组件
- 移除所有 any 类型声明,提升类型安全性
- 简化 ClaudeCodeSettings 接口为通用的 Record<string, any>,支持任意供应商配置
- 创建 ProviderForm 共享组件,减少重复代码约 300 行
- 优化 Store 类型定义,使用泛型约束确保类型安全

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-08 15:03:38 +08:00
farion1231
fe71373e7d 界面改进和代码重构:设置窗口最小尺寸并抽象预设供应商配置
- 设置窗口最小尺寸为600x400,防止界面缩放问题
- 将预设供应商配置提取到独立文件providerPresets.ts
- 便于管理和维护预设供应商列表

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-08 12:12:28 +08:00
farion1231
6021ad8b22 代码质量优化:修复废弃API并改进ID生成
- 使用 crypto.randomUUID() 替换已废弃的 substr() 方法
- 将默认供应商名称从"默认"改为"default",提高国际化兼容性
- 优化 ID 生成算法,提供更可靠的唯一性保证
2025-08-07 23:58:07 +08:00
farion1231
100b3f6e21 重大功能改进:添加禁止 Claude Code 签名功能并重构代码
新增功能:
- 在添加供应商和编辑供应商窗口都增加"禁止 Claude Code 签名"选择框
- 自动同步 JSON 配置中的 includeCoAuthoredBy 字段
- 支持双向同步:手动编辑 JSON 时选择框状态自动更新

代码优化:
- 提取通用函数到 providerConfigUtils.ts 工具文件
- 重构代码避免重复,提高可维护性
- 保持原有自动提取官网地址功能

UI改进:
- 优化选择框与标签的对齐样式
- 统一两个窗口的交互体验
2025-08-07 23:05:11 +08:00
farion1231
b0d4537398 改进添加供应商界面:实现自动提取官网地址功能
- 新增 extractWebsiteUrl 函数,从 JSON 配置中自动解析 ANTHROPIC_BASE_URL
- 智能处理 URL 前缀,自动去掉 "api." 前缀生成官网地址
- 优化用户体验:仅在官网地址为空时自动填入,不覆盖用户手动输入
- 支持实时解析,用户输入 JSON 配置时立即更新官网地址字段
2025-08-07 22:20:03 +08:00
farion1231
db28ccb27b 优化用户体验:简化数据结构并改进文件夹访问
- 移除 Provider 中无用的 createdAt 和 updatedAt 字段
- 简化数据结构,去除冗余的时间戳设置代码
- 将底部"浏览"按钮改为"打开",直接打开配置文件夹
- 新增 openConfigFolder API,使用 shell.openPath 打开文件夹
- 优化用户体验,方便用户查看和管理所有配置文件
2025-08-07 22:08:47 +08:00
farion1231
45c75e826a 统一供应商处理逻辑:默认供应商与普通供应商一致处理
- 移除默认供应商在切换时的特殊逻辑
- 默认供应商现在也创建独立配置文件 settings-默认.json
- 移除删除时对默认供应商的特殊保护
- 所有供应商现在都遵循相同的文件管理规则
2025-08-07 21:56:30 +08:00
farion1231
5be45e269c 简化界面:删除导入当前配置功能
- 移除 ImportConfigModal 组件及相关文件
- 删除头部的导入当前配置按钮
- 移除 importCurrentConfig 相关的 API 和 IPC 处理器
- 保留 importCurrentConfigAsDefault 功能用于首次启动
- 界面更简洁,专注核心功能:添加、编辑、切换、删除供应商
- 减少用户困惑,因为自动创建的默认供应商已经满足大部分需求
2025-08-07 21:37:34 +08:00
farion1231
ac96f9f551 移除默认供应商删除时的过度保护逻辑
用户要删除就说明不需要了,没必要特别保护。
默认供应商现在可以正常删除,只是因为没有独立配置文件所以跳过文件删除操作。
2025-08-07 21:30:37 +08:00
farion1231
0cfd65cb90 优化首次启动体验:自动创建默认供应商且设为选中状态
- 新增 importCurrentConfigAsDefault 函数,创建 ID 为 'default' 的特殊供应商
- 默认供应商不生成独立配置文件,直接使用现有 settings.json
- 首次启动时自动导入现有配置为默认供应商,并设为选中状态
- 切换到默认供应商时无需文件操作,直接使用原配置
- 删除默认供应商时保护原配置文件不被误删
- 简化 ImportConfigModal 组件,移除 isEmpty 相关逻辑
- 提升用户体验:无需手动操作,开箱即用
2025-08-07 21:28:45 +08:00
farion1231
bbb1868899 修复编辑供应商名称后配置文件名不同步问题
- 修改 getProviderConfigPath 函数,支持基于供应商名称生成配置文件名
- 在 updateProvider 中添加文件重命名逻辑,当供应商名称改变时自动重命名配置文件
- 更新所有相关函数调用,传递供应商名称参数确保文件命名一致
- 完善 switchProvider 备份逻辑,使用正确的供应商名称生成备份文件名
- 添加必要的导入声明修复编译错误

现在编辑供应商名称后,对应的配置文件名会自动更新反映新名称
2025-08-07 20:51:13 +08:00
farion1231
9541970d10 改进用户体验:供应商列表为空时自动弹出导入配置对话框
- 当供应商列表为空时,自动显示导入配置对话框,引导用户导入当前配置
- 为导入配置对话框添加isEmpty属性,针对空列表场景优化界面文案
- 空列表场景下显示更友好的标题和说明文本
- 优化按钮文本:空列表时取消按钮显示为"稍后设置"
2025-08-07 20:27:16 +08:00
farion1231
c268f962af 重大重构:从字段替换切换到完整配置文件切换系统
- 实现基于文件重命名的供应商切换机制,支持完整settings.json配置切换
- 移除所有向后兼容代码,简化为纯JSON配置模式
- 添加导入当前配置功能,解决首次使用时配置丢失问题
- 移除描述字段,简化用户界面
- 完整的错误处理和回滚机制确保配置安全
- 清理所有调试代码,优化代码质量
2025-08-07 15:48:30 +08:00
farion1231
edc203a10b 重大改进:用原生 JSON 存储替换 electron-store
- 实现 SimpleStore 类,使用原生 fs 操作 JSON 文件
- 解决 "Cannot find module 'conf'" 的依赖问题
- 移除 electron-store 依赖,减少包体积
- 配置文件存储在 ~/.cc-switch/config.json
- 数据格式透明,便于备份和调试
- 修复 TypeScript 类型问题
- 测试通过:构建、打包、运行正常
2025-08-07 10:09:17 +08:00
farion1231
75a5e8088e 移除模态框点击外部关闭功能,防止误触关闭
- 移除 AddProviderModal 的点击遮罩层关闭功能
- 移除 EditProviderModal 的点击遮罩层关闭功能
- 用户现在只能通过按钮主动关闭模态框,提升用户体验
2025-08-06 21:00:49 +08:00
farion1231
588883ffc4 代码优化:清理冗余功能并修复关键问题
- 删除未使用的 axios 依赖
- 移除 Provider 接口中未使用的 model 字段
- 删除未使用的供应商连通性检查功能
- 修复 preload.ts 中缺失的 IPC 方法暴露
- 简化 UI:移除重复的单选按钮,仅保留启用按钮
- 修复 TypeScript 接口定义不完整的问题
2025-08-06 20:48:03 +08:00
farion1231
dbafab57cf 解决系统弹窗阻塞问题:实现非阻塞用户交互
- 创建自定义ConfirmDialog组件替代系统confirm
- 删除功能使用自定义确认对话框,避免界面阻塞
- 添加/编辑模态框使用内联错误提示替代alert
- 优化用户体验:更详细的确认信息和统一的视觉风格
2025-08-06 16:29:52 +08:00
farion1231
8a9ec05d33 优化UI样式:调整头部背景色和按钮焦点样式 2025-08-06 16:22:32 +08:00
farion1231
e87f206905 实现完美的浮动通知系统
- 添加自定义通知组件替代阻塞式alert
- 浮动定位不影响页面布局,宽度自适应内容
- 支持成功/错误两种样式,渐变背景+阴影效果
- 实现完整的淡入淡出动画,原地显示隐藏
- 重启提示显示4秒,普通操作反馈2-3秒
- 智能定时器管理,支持动画完成后清理

用户体验:切换供应商后优雅提示"请重启Claude Code终端以生效"
2025-08-06 16:16:09 +08:00
farion1231
6c7d4c158f 修复编辑后输入框无法选中的焦点管理问题
- 移除阻塞式alert调用,避免焦点管理冲突
- 清理不必要的CSS z-index层级设置
- 优化EditProviderModal的useEffect依赖管理
- 改用console日志记录操作结果

问题原因:alert()强制抢夺焦点,在模态框关闭时打断正常焦点流转
2025-08-06 15:20:08 +08:00
farion1231
41a6bda4ab 修复编辑供应商配置同步问题
- 修复当编辑当前激活供应商时,Claude Code配置文件未同步更新的问题
- 在updateProvider中增加逻辑检测是否为当前激活供应商
- 如果是当前激活供应商,同时调用switchProvider更新~/.claude/settings.json
- 确保编辑后的配置能立即生效,无需重新切换供应商
2025-08-06 11:50:13 +08:00
farion1231
208987107e 修复URL推测功能:支持不完整URL输入并保持验证
- 修复inferWebsiteUrl函数,支持无协议URL的推测
- 在API地址失焦时自动补全https://协议
- 同时更新API地址和网站地址字段
- 保持URL输入验证,确保API地址有效性
- 提升用户体验:用户可输入api.example.com等简化格式
2025-08-06 11:42:58 +08:00
farion1231
71a8fd166f 增强供应商配置:添加网站地址字段和智能推测功能
- 添加websiteUrl可选字段到Provider类型
- 实现API地址到网站地址的自动推测逻辑(去除api.前缀)
- 在添加/编辑供应商表单中增加网站地址字段
- 供应商列表智能显示:有网址显示可点击链接,无网址显示API地址
- 提升用户体验:避免点击API端点地址导致的错误页面
2025-08-06 10:09:58 +08:00
farion1231
4540ad613f 添加供应商URL可点击功能:支持在默认浏览器中打开链接 2025-08-06 09:56:27 +08:00
farion1231
b83652a162 修复fetch API超时实现:使用AbortController替换不支持的timeout参数
- 替换fetch中的timeout选项为AbortController + setTimeout实现
- 修复TypeScript编译错误:timeout不存在于RequestInit类型中
- 添加proper超时清理逻辑避免内存泄漏
- 更新CLAUDE.md文档:统一使用pnpm命令,补充IPC接口说明
2025-08-06 08:08:27 +08:00