Skip to content

feat: Windows CodeBuddy CN 优雅关闭与写库保护 - #29

Open
changexbc wants to merge 1 commit into
mainfrom
feat/win-codebuddy-cn-ide-graceful
Open

feat: Windows CodeBuddy CN 优雅关闭与写库保护#29
changexbc wants to merge 1 commit into
mainfrom
feat/win-codebuddy-cn-ide-graceful

Conversation

@changexbc

Copy link
Copy Markdown
Owner

背景

针对 Windows 平台处理 CodeBuddy CN IDE(桌面客户端)时的三个安全问题/缺陷:

  1. 关闭进程直接 askkill /F,正在编辑的未保存内容可能丢失;
  2. 强杀后立即写 state.vscdb,Windows 句柄可能未释放导致写库失败,且无备份/写后校验;
  3. 启动后不校验是否真正运行,单例锁秒退时仍提示“切换成功”。

改动内容(仅 Windows,wb-switch-core)

  • process.rs:新增向指定 PID 的可见顶层窗口发送 WM_CLOSE 的辅助函数(user32 P/Invoke),以及“查询哪些 PID 仍持有可见窗口”的能力。
  • codebuddy_cn_ide.rs
    • close_codebuddy_cn_windows 改为:先对 GUI 主进程发 WM_CLOSE 优雅退出 → 等待退出 → 若残留进程仍持有可见窗口(例如“未保存文件”确认框)则返回错误提示用户保存后重试,而不是无条件 /F 强杀;仅对无窗口后台残留执行 /F。
    • launch_codebuddy_cn(Windows)新增启动存活校验(对齐 macOS 已有实现),轮询进程出现并持续存活,秒退即报错。
  • vscode_cn_inject.rs:inject_codebuddy_cn_secret 写库前先等待 DB 释放独占句柄;用 VACUUM INTO 生成一致快照备份;写后解密回读比对目标账号,不一致时自动回滚备份。

验证

  • 本机 cargo check -p wb-switch-core 通过
  • cargo test -p wb-switch-core --lib:161 passed;3 failed 为既有平台相关失败(路径断言面向 macOS/Unix),在未改动基线上同样失败,与本次改动无关
  • 未修改与本次无关的代码;仅动了上述 3 个文件

- process: 新增向指定 PID 可见顶层窗口发送 WM_CLOSE 的辅助(user32/Add-Type)
- codebuddy_cn_ide: Windows 关闭改为 WM_CLOSE 优雅退出,残留仍持窗口时提示用户而非直接强杀,避免未保存内容丢失;启动后新增存活校验,避免单例锁秒退仍提示切换成功
- vscode_cn_inject: 写库前等待 DB 释放独占句柄、用 VACUUM INTO 生成一致快照备份、写后解密回读校验并在失败时回滚备份
@ebandao777-oss

Copy link
Copy Markdown

O(∩_∩)O要不要连Trae系一起收编了省的还得开2插件

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants