shadow
|
a179b50227
|
fix(init): --force 时停止 daemon 并清空解密缓存
在成功扫描密钥、drop 到用户身份之后,若使用 --force,先调用与
`wx daemon stop` 相同的 stop_daemon 逻辑,再删除并重建
~/.wx-cli/cache,避免 mtime 未变时仍复用旧密钥解出的缓存。
将停止 daemon 的逻辑提取到 transport::stop_daemon,供 init 与
daemon stop 子命令复用。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-03 11:22:15 +08:00 |
jackwener
|
d8f4c6e87d
|
fix: replace macOS-only libc::__error() with std::io::Error::last_os_error()
|
2026-04-16 23:35:30 +08:00 |
jackwener
|
7f869e7c3b
|
fix: 深度 review 修复 10 个 bug/问题
Critical & High:
- daemon 日志:启动时将 stdout/stderr 重定向到 ~/.wx-cli/daemon.log
而非 /dev/null,使 wx daemon logs 真正可用
- q_history 找不到聊天时改为 bail! 而非 ok:true+error 字段,
避免 CLI 静默返回空输出
- init 写 config.json 默认路径改为 ~/.wx-cli/config.json,
避免写入系统 bin 目录(/usr/local/bin/config.json)
- LIKE 通配符:搜索关键词中的 %/_/\ 现在正确转义
- WAL 路径:改用 OsString.push 拼接 "-wal" 后缀,
避免 display() 在非 UTF-8 路径上失效
- cmd_stop:检查 kill() 返回值,ESRCH 时给出明确提示
Performance & Code quality:
- full_decrypt:改为流式逐页读写,峰值内存从 2×文件大小降为 O(1)
- Regex:msg_table_re() 用 OnceLock 静态编译,避免热路径重复编译
- mtime_nanos:消除 daemon/mod.rs 与 cache.rs 的重复定义
- use super::super::cli::transport → use super::transport
- 删除未使用的 save_config、Request::to_json_line 死代码
|
2026-04-16 17:07:15 +08:00 |
jackwener
|
d475f6219b
|
feat: Rust 完整重写 wx-cli(单一二进制,支持 macOS/Linux/Windows)
实现所有核心模块:
- src/crypto/: SQLCipher 4 页解密 + WAL 应用(AES-256-CBC)
- src/scanner/: 三平台内存扫描(macOS Mach VM / Linux /proc/mem / Windows ReadProcessMemory)
- src/daemon/: tokio 异步 daemon,Unix socket IPC,mtime-aware DB 缓存,WAL 监听推送
- src/cli/: clap CLI,自动启动 daemon,完整命令实现
- src/config.rs: 跨平台配置加载,兼容 Python 版 config.json 格式
- src/ipc.rs: 换行符分隔 JSON 协议,与 Python 版兼容
- .github/workflows/release.yml: 四平台自动构建发布
cargo build --release 验证通过,生成 4.8MB macOS arm64 单一二进制
|
2026-04-16 14:37:10 +08:00 |