Skip to content

feat: 增加独立的消息与朋友圈本地留存 - #1253

Open
ll9999345 wants to merge 3 commits into
hicccc77:mainfrom
ll9999345:feat/local-retention
Open

ll9999345 wants to merge 3 commits into
hicccc77:mainfrom
ll9999345:feat/local-retention

Conversation

@ll9999345

@ll9999345 ll9999345 commented Nov 3, 2026 •

Copy link
Copy Markdown

本 PR 为本机已读取到的消息和朋友圈新增独立留存库。消息在撤回前被捕获后仍可查看原文;已经保存的朋友圈及媒体副本不会随着源记录隐藏、删除或缓存清理而自动过期。

两项功能均默认关闭,在侧栏分别开启,不写入微信源数据库,也不替换现有防撤回/防删除触发器功能。

改动

  • 新增按账号隔离的 SQLite 留存库、检索/分页页面、状态与启停 IPC。
  • 消息通过数据库变更提示和轮询捕获,保留精确字符串服务器 ID、原文与撤回标记;未捕获原文时明确显示无法恢复。可保存本机已可用的图片和表情副本。
  • 朋友圈分批扫描本机缓存,保留正文、点赞、评论和快照,后台保存图片/视频/实况媒体;当前页面的媒体优先尝试,缩略图与原件状态分别展示。
  • 留存下载显式限制为每文件 128 MiB、30 秒及 2 路并发,校验实际解压后的字节数、媒体格式、HTTPS 目标和缓存路径;普通预览/导出调用保留原大小策略与 15 秒空闲超时。
  • 提供使用说明、合成回归测试,以及 macOS/Windows/Linux GitHub Actions 检查。

验证

  • Node 24:npm run test:retention,52 项通过。
  • 原有 npm run test:wcdb,42 项通过。
  • Renderer 与 Electron TypeScript 检查通过;vite build 通过;git diff --check 通过。
  • 测试覆盖撤回匹配、迟到服务器 ID、账号切换/停止过程中的异步结果、媒体独立副本、重启持久化、路径与网络限制、压缩数据超限、下载超时及队列优先级。
  • GitHub Actions 云端 Windows、macOS、Linux 均通过 52 项留存回归测试及 Renderer/Electron 类型检查:三平台验证结果,对应提交 318188b。这项验证不包含 Windows/Linux 桌面 GUI 或真实微信数据集成测试。

能力边界

仅能保存本机可读取且成功捕获的内容,无法恢复首次捕获前已撤回或不可见的记录,也不能保证捕获每条消息。WeFlow 需要运行;朋友圈新内容仍需先由微信缓存到本机。消息留存暂不保存语音、视频和附件的完整文件;朋友圈媒体也可能因过期、格式或大小限制无法保存。

归档包含明文内容,应由用户自行保管和备份。提交只包含源码、文档及合成测试,不包含聊天数据库、个人聊天、账号配置、密钥或二进制组件。

Add independent per-account archives, opt-in capture services, searchable pages and synthetic regression tests. Preserve existing trigger-based features.
Compare trusted paths using the native async resolver so Windows 8.3 aliases do not cause false test failures.
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.

1 participant