jackwener
59dd6bfa24
fix: Windows build errors (handle_connection, creation_flags, mkdir)
...
- server.rs: add handle_connection_windows for named pipe connections
- transport.rs: import CommandExt trait for creation_flags on Windows
- release.yml: mkdir -p before binary copy to npm bin dirs
2026-04-16 23:14:58 +08:00
jackwener
f9bca1f872
docs: add npx skills add instruction
2026-04-16 23:08:57 +08:00
jackwener
42e5ac38c3
docs: add SKILL.md for AI agent integration
2026-04-16 22:46:13 +08:00
jackwener
65c98e9736
chore: bump version to 0.1.2
2026-04-16 22:43:28 +08:00
jackwener
e3518956af
chore: rename npm packages to @jackwener scope
2026-04-16 22:41:47 +08:00
jackwener
47d17aeccf
feat: npm wrapper + CI publish, fix README YAML/JSON description
2026-04-16 22:33:53 +08:00
jackwener
6cdc806642
chore: Apache-2.0 license, Windows support, install.ps1
2026-04-16 22:30:45 +08:00
jackwener
6d40c7f737
docs: 重写 README,优化结构和命令展示
2026-04-16 22:24:22 +08:00
jackwener
df6e48af3e
chore: add install.sh one-liner installer
2026-04-16 22:21:11 +08:00
jackwener
33b4249bd5
fix: 系统消息/撤回消息解析,补全消息类型格式化
...
- type 10000 (系统消息): 解析 <content> 标签,显示 [系统] 内容
- type 10002 (撤回): 解析 <content>,显示 [撤回] 内容
- type 34 (语音) / 43 (视频): 之前漏了,现在显示 [语音]/[视频]
- 避免 raw XML 出现在 history/watch 输出中
2026-04-16 17:22:54 +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
dfd020a2b9
fix: 引用消息 XML 转义解析 + 搜索容错跳过 corrupt DB
...
- 引用消息(type=57)的 ref_content 可能是 HTML 转义的 XML,新增
unescape_html() 先反转义,再递归调用 parse_appmsg 解析嵌套结构
- 全局搜索遍历 msg_db_keys 时,单个 DB open/query 失败改为 eprintln+continue
而非传播错误,避免一个 corrupt cache 导致整个搜索失败
- search_in_table 失败也改为 skip 而非 abort
2026-04-16 16:48:59 +08:00
jackwener
a6fa82adb3
chore: bump version to 0.1.1
2026-04-16 16:18:04 +08:00
jackwener
2fd864b85d
fix: 修复消息内容为空的 bug(TEXT/BLOB 兼容),过滤 fts/resource DB,超时调为 120s
2026-04-16 16:16:41 +08:00
jackwener
3e7b4ed8ee
fix: 目录和 pipe 名统一改为 wx-cli(原 wechat-cli)
2026-04-16 15:49:35 +08:00
jackwener
6e599dbe33
docs: README 安装方式增加 cargo install wx-cli
2026-04-16 15:29:39 +08:00
jackwener
fa7c99f159
chore: 补充 crates.io 发布元数据,包名改为 wx-cli,添加 MIT 许可证
2026-04-16 15:28:59 +08:00
jackwener
79a653b9c6
docs: 重写 README,对齐 Rust 单二进制实现
2026-04-16 15:23:43 +08:00
jackwener
02f6c4a748
chore: 删除 Python 遗留文件,仓库全部改为 Rust 实现
2026-04-16 15:22:29 +08:00
jakevin
6b7285c730
Merge pull request #1 from jackwener/feat/rust-rewrite
...
feat: Rust 完整重写 + 全部 bug 修复
2026-04-16 15:17:38 +08:00
jackwener
8bfea8869e
fix: 修复全部 medium/low 优先级问题
...
- cache/daemon: mtime 比较从 f64(secs) 改为 u64(nanos),避免浮点误差丢失变更
- transport: Unix 启动 daemon 前调用 setsid(),使其脱离控制终端防止 SIGHUP
- daemon/mod: 删除对已废弃 watcher 模块的引用
- watcher.rs: 删除全量死代码文件(功能已内联至 daemon/mod.rs)
- query: find_msg_tables 实际按 max_ts 降序排序(原注释有排序但无实现)
- scanner: 移除三平台 scan_memory 中的 dedup_by(search_pattern 已全局去重)
- watch: Windows 平台返回明确错误而非静默失败
- CI: cargo build 增加 --locked 确保使用 Cargo.lock 版本
2026-04-16 15:12:33 +08:00
jackwener
113e1d2907
chore: 从 index 移除编译产物和 worktree 子仓库
2026-04-16 14:48:19 +08:00
jackwener
993ac1ed47
fix: 修复 review 发现的 4 个高优先级 bug
...
- Cargo.toml: libc 依赖范围从 macos 改为 unix(修复 Linux 编译失败)
- scanner/macos.rs: VM_REGION_BASIC_INFO_COUNT_64 改为硬编码 9(修复 mach_vm_region 调用失败)
- crypto/wal.rs: WAL 第一页帧不走主 DB 第一页特殊路径(修复 WAL 数据损坏)
- daemon/query.rs: 全局搜索传入正确 names_map(修复 sender 字段为空)
2026-04-16 14:48:03 +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
jackwener
0d5ac82349
chore: 删除旧项目文件(MCP、Web UI、monitor 等)
2026-04-16 14:05:23 +08:00
jackwener
0d0ae22a98
docs: 恢复 ad-hoc 签名为必要前置步骤
2026-04-16 10:11:17 +08:00
jackwener
7610a54073
docs: ad-hoc 签名改为按需可选
2026-04-16 09:30:26 +08:00
jackwener
181472a4ff
docs: 重写 README,对齐 daemon + CLI 架构
2026-04-16 09:13:31 +08:00
jackwener
152921acb2
feat: wx init/export,修复全局搜索聊天名称
...
- wx init: 自动检测微信数据目录,编译并运行密钥扫描器,更新 config.json
- wx export: 导出聊天记录为 markdown/txt/json,支持 --since/--until/--limit/-o
- 修复全局搜索(wx search)显示"未知"的问题:
构建 md5(username)→username 反向索引,从表名 Msg_<md5> 还原联系人
- _refresh_names() 同步清除 _md5_to_uname 缓存
- 新增 15 个单元测试覆盖上述功能及 watch 协议
2026-04-16 01:38:40 +08:00
jackwener
01486c66d4
chore: 移除 requirements.txt,统一用 uv + pyproject.toml 管理依赖
2026-04-16 01:28:37 +08:00
jackwener
c907cf53fe
feat: daemon + CLI 架构 (wx_daemon.py + wx.py)
...
- wx_daemon.py: Unix socket server,mtime 感知 DB 缓存,WAL 监听,实时推送
- wx.py: Click CLI,自动拉起 daemon,sessions/history/search/contacts/watch
- pyproject.toml + uv.lock: uv 依赖管理
2026-04-16 01:28:22 +08:00
ylytdeng
69a2f44240
feat: /api/history 支持按群过滤和增量拉取,更新 README API 文档
...
- /api/history 新增 chat、since、limit 参数
- README 新增 HTTP API 端点说明和联系人标签工具文档
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 11:43:41 +08:00
ylytdeng
7eb29b03e8
feat: 新增联系人标签查询功能
...
解析 contact.db 的 contact_label 表和 extra_buffer protobuf Field #30,
支持查询标签列表及指定标签下的成员。
- mcp_server.py: 新增 get_contact_tags / get_tag_members MCP 工具
- monitor_web.py: 新增 /api/tags JSON 端点,支持 ?name= 过滤
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 09:54:21 +08:00
ylytdeng
b80e7d1c14
fix: 新群/新联系人自动刷新联系人缓存
...
检测到消息的用户名不在联系人缓存中时,自动重新加载
contact.db,解决新建群聊一直显示 chatroom ID 的问题。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 18:43:34 +08:00
ylytdeng
396d4b24e2
fix: CLI 入口支持 V2(AES) 格式图片解密
...
decode_image.py 的 CLI 入口之前只走 XOR 解密路径,
V2 格式图片会直接报错退出。改为使用 decrypt_dat_file
智能入口,自动判断 V1/V2/XOR 格式。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 16:40:16 +08:00
joshua-deng
0821dc0e4e
Update README.md
...
加了一个tg群,防失联
2026-03-23 17:25:19 +08:00
ylytdeng
944546beb1
fix: 统一所有 JSON 文件读写为 UTF-8 编码
...
Windows 中文环境默认编码为 GBK,未指定 encoding 会导致
config.json/all_keys.json 解析失败。修复 9 个文件共 17 处。
Closes #32
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 14:32:37 +08:00
joshua-deng
67244597f2
Merge pull request #28 from dsjzazs/feat/auto-install-deps
...
fix: 改为通过 requirements 安装依赖
2026-03-14 22:22:54 +08:00
joshua-deng
3e79c8e093
Merge pull request #30 from dsjzazs/main
...
MCP增强消息查询,支持时间范围和分页
2026-03-14 17:38:37 +08:00
dsjzazs
7c42ff5d38
Investigate get_chat_history limit
2026-03-14 16:59:17 +08:00
dsjzazs
2cd180c63a
Merge pull request #2 from dsjzazs/codex/searchmessages
...
Add unit tests for MCP search and fix pagination
2026-03-14 16:39:12 +08:00
dsjzazs
9ae558a31e
Fix global search pagination
2026-03-14 16:36:55 +08:00
dsjzazs
2e03247fb9
Add MCP dependency and pin versions ( #1 )
2026-03-14 15:13:28 +08:00
dsjzazs
b623711410
Add MCP search unit tests
2026-03-14 14:07:51 +08:00
dsjzazs
4bda20f7aa
feat: 更新 README
2026-03-14 10:24:23 +08:00
dsjzazs
7e7f7a2516
feat: 增强消息查询功能,支持时间范围和分页
2026-03-14 10:21:21 +08:00
dsjzazs
8e8edc649c
fix: 改为通过 requirements 安装依赖
...
README 改为统一使用 requirements.txt 安装依赖,并补充 zstandard 依赖,避免手动漏装。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 16:27:09 +08:00
ylytdeng
7020409543
fix: full_decrypt 写入前自动创建输出目录
...
full_decrypt 打开 out_path 写入时未创建父目录,
首次运行 monitor_web 且 decrypted/ 不存在时会报
FileNotFoundError。
Fixes #22
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 17:21:11 +08:00
ylytdeng
030680eb85
fix: 修复短时间大量消息丢失问题
...
旧逻辑用 `if ts == prev_ts: continue` 粗暴跳过上轮时间戳的所有消息,
但同一秒内可能有多条不同消息(如连续转发公众号文章),导致只显示
最后一条,其余丢失。
改为用 (username, timestamp, msg_type) 精确去重:
- 主消息和 hidden 消息显示后都记录到 _shown_keys
- 过滤时精确匹配已显示的消息,不再按时间戳整体跳过
- _shown_keys 每轮清理过期条目(保留 5 分钟),防止内存泄漏
Fixes #20
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 19:52:46 +08:00
joshua-deng
64b2c9fdef
Merge pull request #19 from BiboyQG/feat/chat-history-formatting
...
功能改进实用,问题不阻塞合并。
2026-03-09 19:48:06 +08:00