83 Commits

Author SHA1 Message Date
9caa43d4a2 fix(terminal): defer TerminalService start to user interaction 2026-03-22 01:05:06 +08:00
dff4674c54 fix(terminal): change --port=9997 to --port 9997 and remove --headless 2026-03-22 00:30:54 +08:00
19e7a51b61 Revert "fix: prevent multiple initialization and state race condition in PopoutPage"
This reverts commit 69bd91797d.
2026-03-22 00:18:19 +08:00
69bd91797d fix: prevent multiple initialization and state race condition in PopoutPage
- Use useRef to prevent multiple initializations
- Remove selectFile call that may cause state race condition
- Directly update store without selectFile to preserve isEditing state
2026-03-22 00:16:22 +08:00
3b1f99951e fix: pass tab content via URL params instead of IPC
- Pass content, unsavedContent, isEditing via URL query params
- PopoutPage reads directly from URL params on mount
- Eliminates IPC race condition entirely
- Direct store update with loaded:true to prevent auto-reload
2026-03-22 00:09:07 +08:00
2d87c267cf fix: wait for renderer ready before sending tab data
- Wait for did-finish-load event in transfer-tab-data handler
- Await transferTabData before closing file in handlePopOut
- Remove arbitrary 500ms timeout, now uses proper IPC ack flow
2026-03-22 00:06:01 +08:00
d0e286e4bb fix: prevent state loss when popout tab and hide option for home tab
- Force loaded:true and loading:false in usePopOutTab to prevent auto-load overwriting
- Hide '在新窗口中打开' option for home tab in context menu
2026-03-22 00:00:34 +08:00
aa5895873b feat: transfer tab state to popout window and close tab in main window
- Restore transfer-tab-data IPC for transferring tab state
- Create usePopOutTab hook to receive tab data in new window
- Update handlePopOut to transfer data and close tab in main window
- Add PopOutTabData interface for type safety
2026-03-21 23:52:02 +08:00
c37e6ab4f2 feat: add titlebar to popout window with minimize/maximize/close buttons
- Add window-minimize, window-maximize, window-close, window-is-maximized IPC handlers
- Add titlebar with window controls to PopoutPage
- Update preload and types for new window control APIs
2026-03-21 23:46:21 +08:00
f160adbdb1 feat: add 'pop out tab as new window' functionality
- Add createWindow IPC for creating secondary windows
- Add PopoutPage for content-only rendering in new windows
- Add multi-window management to electron state
- Add '在新窗口中打开' context menu to tabs
- Fix: Use standard URL path instead of hash for React Router routing
2026-03-21 23:42:48 +08:00
43828a87f0 chore: remove build artifacts and large binary files (xcsdd service binaries, gitea data) 2026-03-21 20:11:17 +08:00
2eb5a167b3 fix: 使用 taskkill /T 终止进程树,确保子进程也被关闭 2026-03-20 14:13:00 +08:00
8ee86c7b0f fix: 修复服务启动时的竞态条件,等待健康检查通过后再报告就绪 2026-03-20 14:12:00 +08:00
9effdcd070 fix: Terminal 启动参数保持 --port=9997 格式 2026-03-20 14:05:28 +08:00
7c7b334f5c chore: 更新 gitignore 忽略运行时数据,保留 Gitea 配置 2026-03-20 13:48:38 +08:00
8716f6f684 docs: 更新 README 添加 SDD 和 Terminal 模块说明 2026-03-20 13:45:57 +08:00
1d33a8e14f fix: 更新 Terminal 模块 exe 名称为 XCTerminal.exe 2026-03-20 13:33:28 +08:00
7db1f9162b feat: 默认折叠左侧文件列表 2026-03-20 13:10:24 +08:00
d54510a864 feat: 添加 Terminal 模块,启动 XCCMD.exe 服务 2026-03-20 13:08:43 +08:00
28df633b00 feat: 完善 SDD 模块配置,添加 --headless 参数 2026-03-20 13:02:58 +08:00
c83f23c319 feat: 添加 SDD (规范驱动开发) 模块 2026-03-18 16:17:30 +08:00
90517f2289 feat: 添加语音模块支持,优化服务启动方式 2026-03-17 04:03:39 +08:00
308df54a15 fix: 修复关闭软件后 OpenCode 进程泄漏问题
- 使用 taskkill /F /T 强制终止进程树
- 在 before-quit 中 await 等待服务停止完成
- 修复 stop 方法中可能的空指针问题
2026-03-16 13:11:46 +08:00
dcd1fcd709 chore: 添加新依赖包 (@opencode-ai/sdk, @radix-ui, class-variance-authority, tailwind-merge) 2026-03-15 00:02:10 +08:00
18c02053da feat(opencode): 将 iframe 替换为 webview 避免 Tauri 应用在 iframe 中卡死 2026-03-14 23:56:02 +08:00
3c353cb701 fix: 修复打包后 XCOpenCodeWeb.exe 路径问题 2026-03-14 23:11:38 +08:00
0d5cd329ca feat(home): add Thinking fold button, improve message styling 2026-03-14 22:56:42 +08:00
e950484af6 feat(home): add drag file to chat input, add settings config API 2026-03-14 22:22:35 +08:00
cbc1af7348 feat(home): add AI chat interface with OpenCode integration 2026-03-14 21:53:52 +08:00
88d42b37a6 feat(opencode): 改进 XCOpenCodeWeb 服务管理和健康检查 2026-03-14 20:44:15 +08:00
b5343bcd9d Update xcopencodeweb port to 3002 2026-03-14 16:38:25 +08:00
9b22b647f2 feat(remote): 添加 XCOpenCodeWeb 服务管理
- 新增 XCOpenCodeWebService.js 服务模块
- 支持启动/停止/健康检测(每10秒)
- 随 remote 服务启动/退出
- 配置文件添加 xcopencodeweb 配置
- 修复 opencode 默认端口配置
2026-03-14 16:02:05 +08:00
50cd1e29c9 fix(remote): 移除默认端口配置,使用 opencode 默认端口 4096 2026-03-14 15:27:37 +08:00
ba02eb10a7 fix: 端口改为 9999 2026-03-14 15:12:09 +08:00
7c656785c8 fix: XCOpenCodeWeb 启动时传入端口参数 --port 3002 2026-03-13 23:17:52 +08:00
f692961823 refactor: 统一端口配置,通过 IPC 获取而非硬编码 2026-03-13 21:20:31 +08:00
1be470f45b fix: 端口改回 3002 2026-03-13 21:15:26 +08:00
96c709f109 fix: 修正 XCOpenCodeWeb 端口为 3000 2026-03-13 21:14:35 +08:00
fd77455f5b fix: 修改 XCOpenCodeWeb.exe 路径为 services/xcopencodeweb/
- 路径从 bin/ 改为 services/xcopencodeweb/
- 更新 package.json 打包配置
- 更新 .gitignore
2026-03-13 21:04:25 +08:00
72d79ae214 feat: 实现 OpenCode 页面生命周期管理 XCOpenCodeWeb.exe
- 新增 electron/services/xcOpenCodeWebService.ts 服务管理模块
- 标签页打开时启动 XCOpenCodeWeb.exe,关闭时停止
- 使用 iframe 在 OpenCode 页面显示 Web 服务 (端口 3002)
- 添加 bin 目录打包配置
- 添加 TypeScript 类型定义
2026-03-13 20:55:34 +08:00
53c1045406 revert: 回滚之前的错误修改,恢复为命令行模式 2026-03-13 20:42:02 +08:00
fd2255c83a feat: 支持 XCOpenCodeWeb.exe 配置和打包
- 添加 electron/config.ts 配置文件
- 支持 command(命令行) 和 exe 两种模式
- 更新 package.json 打包配置,添加 bin 目录
- 更新 .gitignore 忽略 bin/*.exe
2026-03-13 20:34:07 +08:00
986ecb2561 fix: 修复 ai 模块中 Python 脚本路径问题
使用 PROJECT_ROOT 替代 __dirname 计算,确保打包后能正确找到 tools 文件夹
2026-03-13 20:31:54 +08:00
8d4a9a3704 feat: 将 OpenCode 服务管理抽取为独立模块
- 创建 electron/services/opencodeService.ts 独立服务模块
- 支持健康检测(每10秒)、自动重启(最多3次)
- 随软件生命周期自动启动/停止
2026-03-13 20:30:02 +08:00
e6c41491b3 chore: 移除保存调试日志 2026-03-13 19:00:27 +08:00
cd70b50180 feat: 添加 opencode 模块和相关服务 2026-03-13 18:39:58 +08:00
96390df254 chore: 添加保存调试日志、修复 time-tracking 类型、简化首页 2026-03-13 18:39:08 +08:00
371d4ce327 fix: 修复 markdown 编辑保存后内容丢失的问题
- 在 saveContent 中缓存 unsavedContent,避免 async 期间的竞态条件
- 在 useMarkdownLogic 中添加 lastContentRef 跟踪内容变化,防止不必要的编辑器更新
2026-03-13 18:38:38 +08:00
cd1b541427 chore: 移除 dist-electron 构建产物 2026-03-13 16:10:52 +08:00
668a1cb473 chore: 忽略 dist-electron 构建产物 2026-03-13 16:10:16 +08:00