Commit Graph
121 Commits
Author SHA1 Message Date
H3CoF6 9a7e0f5854 feat(biz): add biz type 2026-03-28 05:04:12 +08:00
H3CoF6 05cba6c454 fix(biz): fix avatar and cover bug 2026-03-28 04:48:38 +08:00
H3CoF6 46fba98202 fix(biz): fix database_error 2026-03-28 04:33:07 +08:00
H3CoF6 c29b425791 feat(biz): implement parse biz data 2026-03-28 04:16:24 +08:00
2977094657 a94ab83668 feat: support finder cards in chat view 2026-03-26 12:57:50 +08:00
2977094657 c04d515f92 Fix realtime sync writing Msg tables 2026-03-24 17:56:17 +08:00
2977094657 f5f3e85e31 Revert "fix(decrypt): 修复数据库原始密钥解密与设备绑定提示"
This reverts commit bcd8f67c25.
2026-03-24 12:14:18 +08:00
2977094657 dc7ac0a5e4 Revert "fix(decrypt): 修复 SQLCipher 密钥兼容性回归"
This reverts commit 22399f4110.
2026-03-24 12:14:13 +08:00
2977094657 22399f4110 fix(decrypt): 修复 SQLCipher 密钥兼容性回归
- 解密时同时兼容 raw enc_key 与 SQLCipher 派生密钥两种输入形态
- 通过首页 HMAC 自动识别可用密钥模式,避免真实账号密钥被误判为不匹配
- 后续页面解密统一使用识别出的有效密钥,恢复数据库解密流程
- 补充 SQLCipher passphrase 场景回归测试,覆盖此次回归问题
2026-03-23 15:36:39 +08:00
2977094657 11d31ac022 fix(chat): 修复 realtime 同步下 Name2Id 映射缺失
- 将 Name2Id 从随新消息顺带补写调整为按 live WCDB 整表同步\n- 修复输出库中 real_sender_id 无法稳定反查 sender_username 的问题\n- 消除必须删除当前项目数据并重新加载后 Name2Id 才能补全的问题\n- 增加 Name2Id 自愈同步回归测试,覆盖无新消息时的修复场景
2026-03-23 14:38:32 +08:00
2977094657 bcd8f67c25 fix(decrypt): 修复数据库原始密钥解密与设备绑定提示 2026-03-22 19:52:04 +08:00
2977094657 a01dba4a93 fix(chat): 修复群聊置顶系统消息显示名称与导出文案
- 解析 ChatRoomTopMsg 文本/XML 系统消息,识别置顶与取消置顶操作
- 优先使用备注名/联系人名替换 wxid,避免实时消息、历史消息、搜索结果显示原始账号
- 导出 JSON/TXT/HTML 时复用同一套系统消息名称解析逻辑
- 补充系统消息解析与实时消息展示测试,覆盖多种消息载荷格式
2026-03-22 15:34:05 +08:00
2977094657 fb6601251b fix(decrypt): 修复错误账号目录导致的坏库读取问题
- 修正 db_storage 路径扫描逻辑,避免将多账号上级目录误识别为单个账号

- 统一普通解密和流式解密的账号识别与来源写入逻辑

- 为聊天和媒体账号列表增加 SQLite 文件头校验

- 跳过损坏的解密目录,避免聊天页和头像接口继续读取坏库
2026-03-17 12:13:50 +08:00
2977094657 4afdbe20b1 fix(wcdb): 修复dll选择路径 2026-03-17 11:40:25 +08:00
Alfred Tang a79ff81be0 fix: resolve chat messages not loading due to Nuxt auto-import bug and WCDB timeout
- Move frontend/utils/ to frontend/lib/ to avoid Nuxt unimport scanner
  incorrectly extracting function parameter names (value, fallback) as
  module-level exports, which injected phantom imports that broke all
  client-side JavaScript execution
- Update all import paths across 13 files from ~/utils/ to ~/lib/
- Add timeout (5s) and negative cache (60s TTL) to WCDB realtime
  ensure_connected() to prevent open_account() from hanging indefinitely
  when the WeChat database is locked
- Reorder selectContact() to fire loadMessages() before navigateTo() so
  the message fetch starts before route navigation triggers Suspense
- Add watch: false to SSR useAsyncData calls to prevent unnecessary
  re-fetching on client-side route changes
2026-03-14 17:17:10 +08:00
2977094657 a4acd32bb3 fix(logging): 完善服务端错误日志记录并支持设置页打开日志
- 为后端增加 5xx 请求与未处理异常日志记录
- 新增前端服务端错误上报工具与管理接口
- 在聊天导出、朋友圈信息加载、通用 API 请求中补充错误上报
- 设置页新增日志文件路径展示与一键打开能力
- 增加服务端错误日志相关测试
2026-03-12 19:01:47 +08:00
2977094657 3587ea4eaa fix(desktop-runtime): 修复桌面端重装后仍命中旧 UI 缓存
- 启动打包版时按 UI buildId 检测并清理 renderer 缓存
- 记录 lastSeenUiBuildId,避免每次启动都重复清缓存
- 调整 SPA 静态资源缓存策略,index.html/200.html/_payload.json 禁止缓存
- 保留 _nuxt 哈希资源长期缓存,减少必须在卸载时删除数据后才生效的问题
2026-03-11 13:11:39 +08:00
2977094657 1b86f5006a feat(account-data): 新增账号信息查询与项目数据删除能力
新增 /api/chat/account_info 与 DELETE /api/chat/account

删除账号时清理编辑记录、账号密钥缓存与导出/数据库目录

桌面端新增 app:getAccountInfo、app:deleteAccountData IPC 能力

前端 API 层新增 getChatAccountInfo、deleteChatAccount
2026-03-10 19:17:43 +08:00
2977094657 052c6245d1 improvement(voice): 语音优先转 MP3,并完善导出/接口兜底
- 新增 _convert_silk_to_browser_audio:优先 MP3(有 ffmpeg),否则 WAV,最后回退 SILK

- /chat/voice 返回浏览器可播格式,并补充 Content-Disposition 文件名后缀

- HTML 导出按实际格式写入语音资源;音频缺失时仍保留语音气泡结构

- 测试覆盖 MP3 优先、缺失音频兜底,并在用例结束 logging.shutdown()
2026-03-10 11:50:43 +08:00
2977094657 16a13af18a feat(chat): 支持位置消息与小程序卡片解析展示
- 新增位置消息解析,补充经纬度、地点名和地址字段
- 修复小程序分享 type 识别,避免嵌套 type 干扰
- 聊天页新增位置卡片展示,并补充小程序卡片样式
- 导出、搜索和会话预览同步支持位置消息
- 补充位置导出与小程序解析测试
2026-03-06 21:19:15 +08:00
2977094657 d48ba3b9aa fix(logging): 日志写入改用 output_dir 并避免重复初始化
- 日志目录改为 get_output_dir()/logs/...(兼容 WECHAT_TOOL_DATA_DIR)
- 清理/关闭旧 handlers,避免重复输出和 Windows 文件锁
- get_logger/get_log_file_path 未初始化时自动 setup_logging
- 新增 tests/test_logging_config_data_dir.py
2026-03-02 19:04:19 +08:00
2977094657 1e465ca084 fix(desktop-runtime): 兼容 updater 缺失并修复打包后 wcdb 加载路径
- electron-updater 改为可选加载,缺失时自动禁用更新并记录原因
- 打包环境优先注入 WECHAT_TOOL_WCDB_API_DLL_PATH 指向 resources/backend/native/wcdb_api.dll
- 启动后端进程 cwd 调整为 exe 所在目录,避免运行目录不一致
- wcdb_init 失败时附带 native log 摘要,提升故障排查信息
- package.json 显式保留 updater 相关依赖,避免构建裁剪导致模块缺失
2026-03-02 12:57:53 +08:00
2977094657 8a101b4c5e feat(settings): 设置弹窗支持后端端口切换(桌面/网页) 2026-02-28 18:43:48 +08:00
H3CoF6 5f404d694c fix: fix merge conflict 2026-02-28 00:22:37 +08:00
H3CoF6 a4c8d580eb fix: return aes_key to frontend 2026-02-28 00:11:07 +08:00
H3CoF6 2990e22001 feat: get image key during login 2026-02-27 23:17:26 +08:00
H3CoF6 858dcf18ea fix: fix re import error 2026-02-27 22:23:37 +08:00
H3CoF6 7446cca3b9 feat: update pyd for image keys 2026-02-27 22:20:53 +08:00
2977094657 b9a4fafbd8 chore(native): 更新 wcdb_api.dll
同步更新 wechat_decrypt_tool 原生依赖(wcdb_api.dll)。

该文件为二进制变更;本次发布版本由 tag v1.6.1 驱动 Release workflow。
2026-02-27 20:44:35 +08:00
2977094657 f19779fe35 improvement(wrapped): Bento 总览补齐 topEmoji 与回复统计字段
- Bento summary 新增 topEmoji:在 unicode emoji 与微信内置表情(topWechatEmojis/topTextEmojis)中统一择优
- 回复速度统计补充 replyStats(p50/p90),并为 bestBuddy 增加最长连续互动天数/高峰时段等摘要字段
- bump wrapped cache version,避免旧缓存导致前后端字段不一致
- 增加 topEmoji 选择逻辑单测覆盖(wechat vs unicode / text emoji / none)
2026-02-26 20:01:44 +08:00
2977094657 3072297769 feat(wrapped): 新增便当总览卡片(Card #7)
- 增加 Card07BentoSummary 前端渲染与加载/失败重试交互(注入 wrappedRetryCard)

- 后端新增 card_07_bento_summary:基于已实现卡片聚合生成 snapshot,保证渲染稳定

- Wrapped manifest/implemented_upto 升级到 7,并支持按卡片 id 单独构建

- 新增 manifest 末尾卡片校验测试
2026-02-26 18:29:48 +08:00
2977094657 108b0b18ab improvement(chat-export): 收敛导出 CSS 打包范围,避免 Scoped 规则泄漏
- 仅打包聊天页相关的 _nuxt/*_username_*.css,避免去 scoped 选择器后污染全局

- Offline viewer CSS patch 引入 --dpr 缩放,改善不同 DPR 下的显示一致性

- 移除 chatHistoryModal 的静态 HTML 输出,改由 data 标记驱动

- 修正聊天记录解析正则中的空白匹配转义

- 更新导出相关测试断言(移除 modal id/放宽字体资源/校验不引入 wrapped 样式)
2026-02-26 18:29:19 +08:00
2977094657 236d0ae703 feat(wrapped): 年度关键词卡升级为年度常用语词云
- 新增常用语短句过滤与统计,按重复短句(非分词)生成词云数据。

- 引入常用语扫描元数据(scannedCandidates/matchedCandidates/uniquePhrases 等)。

- 示例语句抽样改为唯一优先,不足补齐重复,提升短句命中率。

- wrapped cache version 升级到 24,并补充常用语相关单元测试。
2026-02-22 22:18:43 +08:00
2977094657 e537c524f3 improvement(wrapped): 精简全局概览热力图,移除 highlights 标记
- 移除 annualHeatmap highlights 的扫描与计算逻辑,降低卡片计算复杂度。

- card_00_global_overview 固定返回 highlights: [],保持热力图主体数据不变。

- 清理不再使用的辅助函数与正则依赖。
2026-02-22 22:18:17 +08:00
2977094657 2dd103814a feat(wrapped): 新增年度关键词词云卡片(Card #6)
- 新增关键词词云后端计算:消息采样、jieba 分词、关键词权重与例句回看数据。

- Wrapped 年度卡片接入 Card #6,并对该卡片改为按请求重算(不走单卡缓存)。

- 前端新增 storm->cloud 词云动效卡片,支持词点击查看例句及动画阶段隐藏 deck 顶部 UI。

- 统一 wrapped 消息表名解码逻辑,兼容 sqlite text_factory=bytes。

- 新增关键词词云测试并加入 jieba 依赖。
2026-02-22 18:59:30 +08:00
2977094657 9acbfa7582 feat(sns): 支持外部分享卡片并增强媒体阶段识别
- 增强朋友圈 XML 解码与容错清洗,支持 bytes/hex/base64/zstd 场景。

- 补充外部分享(Type 5/42)字段提取与展示,新增 sourceName、链接卡片与导出渲染。

- 通过 Server-Timing + Timing-Allow-Origin 暴露 SNS 媒体阶段信息,前端改为从 ResourceTiming 读取,避免额外探测请求。

- 新增 XML 容错解析与 Server-Timing 注入测试。
2026-02-22 18:59:17 +08:00
2977094657 13febebee7 fix(chat): 修复 list_chat_messages 中 re 作用域遮蔽
- 移除函数内局部 import re,避免遮蔽模块级 re。

- 保持 emojiUrl 处理后续正则逻辑可稳定执行。

- 新增回归测试,覆盖模板解析路径,防止同类作用域问题复发。
2026-02-22 18:59:08 +08:00
2977094657 9254d46802 improvement(sns-media): 悬停展示朋友圈媒体来源阶段
- SNS 页面在封面/媒体悬停时显示来源阶段标识

- 后端媒体接口补充 X-SNS-Source 响应头标记命中来源

- CORS 暴露 X-SNS-Source / X-SNS-Hit-Type / X-SNS-X-Enc 供前端读取
2026-02-22 11:56:45 +08:00
2977094657 d5927156f7 feat(chat-edit-backend): 新增消息编辑快照、回滚与修复接口
- 新增 message_edits 存储,记录首次快照、编辑次数与已修改字段

- 新增消息编辑链路:raw 查询、编辑、修改状态、按消息/会话恢复

- 新增发送者修复与 packed_info_data 方向反转能力

- 编辑流程支持 output/db_storage 双写与失败回滚

- path_fix 改为按需校验 db_storage_path,并缓存 body 避免重复读取问题

- 补充 chat_edit_store 单元测试覆盖核心行为
2026-02-22 11:55:47 +08:00
2977094657 abc8e3e828 improvement(sns): 优化视频号卡片样式(页面/导出)
- sns.vue:视频号 card 改为正方形封面(无图用文字占位),并移除 source/显示计数

- sns_export_service:HTML 导出同步相同布局与播放按钮样式
2026-02-19 20:01:29 +08:00
2977094657 ffa6491ed4 feat(wrapped): 增加月度好友墙卡片
- 新增月度好友墙卡片(chat/monthly_best_friends_wall):按月评选聊天搭子并输出评分维度

- 前端新增拍立得墙展示 12 个月获胜者与指标条,支持头像失败降级

- Wrapped deck 插入新卡片;emoji 卡片 id 顺延为 5,并同步更新测试

- Wrapped 页面默认展示上一年;切换年份时保持当前页并按需懒加载卡片

- WrappedCardShell(slide)支持 wide 布局;更新 wrapped cache version
2026-02-19 20:01:11 +08:00
2977094657 a79eb35a8e improvement(wrapped): 回复速度排行支持收发拆分
- 后端按 sender_username 拆分 outgoing/incoming,并输出累计序列用于动画

- 前端条形图改为分段堆叠(我发/对方),补充图例与容错降级逻辑

- 文案更新为 我发 + 对方
2026-02-19 20:00:48 +08:00
2977094657 e7122ecffd improvement(wrapped): 全局概览改为年度日历热力图
- card_00_global_overview 输出 annualHeatmap(dailyCounts + highlights)

- 新增 AnnualCalendarHeatmap:横向滚动网格 + 气泡 tooltip + 高光日文案

- GlobalOverviewChart 从 Radar 重构为 Heatmap;Card00 slide 下微调间距

- MessageCharsChart 复用 msg-bubble 样式,统一气泡外观
2026-02-19 20:00:21 +08:00
2977094657 1dca69a797 improvement(sns-media): 统一朋友圈远程媒体下载/解密/缓存逻辑
- 新增 sns_media 模块:CDN URL 归一化、远程下载、图片 wcdb_api 解密、视频 WxIsaac64(WeFlow WASM)/ISAAC64 兜底解密与缓存

- routers/sns 与 sns_export_service 复用该模块,收敛重复实现

- 调整 ISAAC64 兜底实现:明确 keystream 生成与字节序格式,作为 WASM 不可用时的 best-effort

- 增加单测覆盖:URL 改写、视频异或解密、缓存命中/升级、解密失败
2026-02-18 16:55:00 +08:00
2977094657 3d989e4a17 feat(decrypt): 解密支持 SSE 实时进度
- 新增 /api/decrypt_stream(GET + SSE):扫描 db_storage,逐库解密并推送 start/progress/complete/error

- 前端解密页优先使用 SSE 展示实时进度,不支持时回退到原 POST(无进度)

- 增加流式接口单测:验证事件序列与输出落盘
2026-02-18 16:54:25 +08:00
2977094657 9b9d42d02e chore(release): v1.3.0 2026-02-18 01:18:16 +08:00
2977094657 c95930275b Update wcdb_api.dll for SNS image decrypt 2026-02-18 00:59:49 +08:00
2977094657 fc8c7120df feat(sns-export): 支持朋友圈 HTML 离线导出(ZIP)
- 新增导出任务:创建/查询/取消/下载 ZIP
- 提供 SSE 进度流 /api/sns/exports/{id}/events(用于前端实时展示进度)
- 复用聊天导出 CSS/emoji 能力,导出媒体优先本地缓存,必要时远程下载解密
- 后端 app 注册 sns_export 路由
2026-02-17 23:40:36 +08:00
2977094657 e9766ba8fa feat(sns): 增强朋友圈时间线/媒体获取与实时同步
- 新增 /api/sns/users:按发圈数统计联系人(支持 keyword/limit)
- 新增 /api/sns/realtime/sync_latest:WCDB 实时增量同步到解密库(append-only),并持久化 sync state
- 朋友圈媒体优先走“远程下载+解密”:图片支持 wcdb_decrypt_sns_image,视频/实况支持 ISAAC64(WeFlow 逻辑)
- 增加 WeFlow WASM keystream(Node) 优先 + Python ISAAC64 fallback,提升兼容性
- wcdb_api.dll 支持多路径自动发现/环境变量覆盖,并在状态信息中回传实际使用路径
2026-02-17 23:40:10 +08:00
2977094657 c6cbb933e7 feat(contacts): 联系人支持拼音分组并补充性别/签名
- 解析 extra_buffer 补齐 gender/signature\n- 返回 pinyinKey/pinyinInitial,前端按 A-Z/# 分组排序展示\n- tests: 更新联系人导出用例覆盖新增字段
2026-02-15 14:33:28 +08:00