2977094657
|
dbe4d54f10
|
improvement(wrapped-ui): 完善 Win98 主题的可视化适配并优化聊天回放信息区
- ChatReplayAnimation:时间戳移到顶栏,简化气泡尾巴;补齐 Game Boy/DOS/Win98 顶栏文案颜色与边框风格
- 热力图:新增 win98 配色分支,并为 heatmap/legend 单元加硬边框
- Overview/MessageChars 等可视化补充 Win98 主题样式(键盘/进度条/雷达图等)
|
2026-02-02 00:07:45 +08:00 |
|
2977094657
|
980f15d0a4
|
feat(wrapped-ui): 新增 Win98 主题与桌面化外观
- 主题系统新增 win98(显示名 Windows 98,快捷键扩展到 F1-F4),并区分 retro(pixel/CRT) 与桌面 GUI 主题
- 年度总结页新增 Win98 桌面背景与底部任务栏(背景色/视口高度适配)
- 封面与卡片 slide 形态支持 Win98 窗口外观(title bar/icon/controls)
- 主题切换器补充 Win98 选项并新增 Win98 专属切换器
- 新增 Win98 图标资源(Start + 桌面图标)
|
2026-02-02 00:07:09 +08:00 |
|
2977094657
|
7ce6abecca
|
improvement(wrapped-ui): 移除 VHS 主题并优化 DOS/CRT 视觉效果
- 主题系统收敛为 Modern/Game Boy/DOS(快捷键改为 F1-F3)
- 删除 VHS 切换器与相关样式(卡片/控件/年份选择/图表等)
- DOS 主题统一使用像素字体,减弱发光强度并细化扫描线/闪烁参数
- DOS 闪烁光标改由 WrappedCRTOverlay 渲染,避免全局样式副作用
- 移除热力图 vhs 配色分支
|
2026-02-01 19:27:51 +08:00 |
|
2977094657
|
52ada9da64
|
feat(wrapped): 添加聊天回放动画组件
|
2026-02-01 16:19:21 +08:00 |
|
2977094657
|
18957be354
|
feat(wrapped): 添加最早最晚消息展示功能
|
2026-02-01 15:26:33 +08:00 |
|
2977094657
|
e5ba16abc0
|
improvement(wrapped): 调整年度总结卡片标题文案为提问式
- 更新 wrapped card manifest 与卡片 title,使标题更具引导性
|
2026-01-31 20:00:31 +08:00 |
|
2977094657
|
2bd595428f
|
improvement(wrapped-ui): 优化年度总结可视化表现并适配主题
- 热力图支持按主题着色(Game Boy/DOS/VHS),并补充对应主题样式
- 字数键盘引入 10 级磨损系统:磨损/标注按等级平滑变化,并中文化提示
- 作息卡补充基于热力图的个性化叙事文案
|
2026-01-31 20:00:11 +08:00 |
|
2977094657
|
b6295071b8
|
feat(wrapped-ui): 引入多主题系统与切换器(Modern/Game Boy/DOS/VHS)
- 新增 useWrappedTheme:主题状态全局共享、localStorage 持久化,支持 F1-F4 快捷键与循环切换
- 新增主题切换器组件(Modern/Game Boy/DOS/VHS)与主题化年份选择器
- 年度总结页接入 themeClass/currentBg;CRT 叠加层支持 VHS 效果(REC/时间戳/跟踪线)
- 补充主题全局样式与卡片/控制面板主题适配
|
2026-01-31 19:59:41 +08:00 |
|
2977094657
|
645dc1cff1
|
feat(wrapped-ui): 年度总结页支持懒加载与复古模式,新增概览/字数卡片
- wrapped 页面改为:先拉 meta/年份列表,再按页请求单张卡片,首屏更快
- 新增 Card#0 全局概览页(含图表)
- 新增 Card#2 消息字数页(含键盘敲击统计与图表)
- 新增复古模式:像素字体资源 + CRT Overlay,支持一键开关
- 调整 shared 组件、types/useApi,更新前端依赖与 lock
|
2026-01-31 14:54:43 +08:00 |
|
2977094657
|
77a60bde70
|
feat(wrapped): 年度总结支持目录/单卡片接口,新增卡片#0/#2
- 新增 /api/wrapped/annual/meta 与 /api/wrapped/annual/cards/{card_id},用于前端懒加载单页卡片
- 增加卡片 manifest / 缓存版本控制 / 并发锁,避免重复计算与旧缓存串数据
- 新增 Card#0「年度全局概览」:活跃天数、top 联系人/群、常用表达/金句/表情等汇总
- 新增 Card#2「年度消息字数」:收发字数统计 + 类比呈现 + 键盘敲击统计
- 完善 Card#1 赛博作息表:支持更快的索引计算与更丰富的叙事文案
|
2026-01-31 14:54:11 +08:00 |
|
2977094657
|
79da96b2d3
|
feat(wrapped-ui): 新增年度总结页面与热力图卡片
- 新增 /wrapped PPT 风格滑动浏览(封面 + 卡片页)
- 新增 Card#1 组件与 24×7 周-小时热力图可视化
- 首页新增年度总结入口;useApi 增加 getWrappedAnnual;补充 wrapped 背景纹理
|
2026-01-30 16:26:52 +08:00 |
|
2977094657
|
519e9e9299
|
feat(wrapped): 新增年度总结接口与卡片 #1(赛博作息表)
- 新增 /api/wrapped/annual(year/account/refresh),统计在 worker thread 中执行
- 实现卡片#1:按 周×小时 聚合消息量,默认过滤 biz_message*.db
- 增加 _wrapped/cache JSON 缓存(global_<year>_upto_1.json),refresh 支持强制重算
|
2026-01-30 16:26:04 +08:00 |
|
2977094657
|
950fb4c7b4
|
improvement(chat): 会话列表可拖拽调宽并优化 realtime 关闭同步
- 中间栏新增拖拽调宽/双击重置;宽度按物理 px 持久化(兼容旧 key,并按 dpr 换算)
- 关闭 realtime 前触发 syncChatRealtimeMessages(max_scan=5000),避免回退到过期解密快照
- 按 dpr 调整联系人/消息头像与 skeleton 尺寸
v0.1.10
|
2026-01-28 18:19:58 +08:00 |
|
2977094657
|
891d4b8a1b
|
improvement(chat): WCDB 回退补全昵称/头像
- contact.db 缺失(企业/开放平台/openim/群等)时,回退 WCDB realtime 查询 displayName/avatarUrl
- 覆盖消息/会话:senderDisplayName/senderAvatar、link card from、quoteTitle、会话列表 name/avatar
- realtime 场景尽量复用已建立的 WCDB 连接;best-effort,失败不影响主流程
|
2026-01-28 18:19:38 +08:00 |
|
2977094657
|
55dc455921
|
feat(sns): 前端新增朋友圈页面并接入候选匹配
- 新增 /sns 页面:时间线列表、账号切换、隐私模式、复制动态 JSON
- 图片预览支持候选匹配切换并保存(localStorage + /api/sns/media_picks)
- 聊天页侧边栏增加头像/朋友圈入口,隐私模式开关持久化(chat/sns 共用)
- app.vue 增加 --dpr 与 sidebar rail CSS 变量,并在 resize 时刷新
- useApi 补充 sns 相关接口封装
v0.1.9
|
2026-01-27 16:27:40 +08:00 |
|
2977094657
|
ba9eb5e267
|
feat(sns): 增加朋友圈时间线与图片本地缓存接口
- 新增 /api/sns/timeline:优先走 WCDB realtime 读取 sns.db,支持分页/用户过滤/关键字
- 新增 /api/sns/media:本地缓存(cache/.../Sns/Img)解密优先,支持手动 pick/避开重复
- 新增 /api/sns/media_candidates 与 /api/sns/media_picks:候选 key 列表与本机持久化匹配表
- wcdb_realtime 增加 exec_query/get_sns_timeline 封装,并在连接时 set_my_wxid 上下文
- 更新 wcdb_api.dll 并补齐 MSVC runtime 依赖
|
2026-01-27 16:27:19 +08:00 |
|
2977094657
|
d0d518aed9
|
fix(chat): proxy_image 兼容 tc.qq.com 并增强防盗链 Referer
- proxy_image 放开 .tc.qq.com 白名单,兼容朋友圈/CDN 图片
- 下载时按多组 Referer/Origin 轮询,提高成功率
- 保持 host 校验与 10MB 限制
|
2026-01-27 16:26:53 +08:00 |
|
2977094657
|
ae2d7f128d
|
improvement(chat): realtime 刷新去抖并绕过后台全量同步
- realtime 模式拉取消息时传 source=realtime,直接从 WCDB 读取
- SSE change 事件增加 500ms debounce,减少频繁刷新/请求抖动
- 停止 realtime 时清理 debounce timer
v0.1.8
|
2026-01-24 18:47:29 +08:00 |
|
2977094657
|
93ad7b7a1c
|
improvement(chat): realtime 直读 WCDB 并完善追踪日志
- SSE 变更扫描改用 asyncio.to_thread,避免阻塞事件循环
- sessions/messages 支持 source=realtime;realtime 下会话预览改用 session 信息避免缓存陈旧
- realtime sync/sync_all 增加 trace_id 与关键步骤日志,便于定位卡顿/锁竞争
- 支持通过 WECHAT_TOOL_LOG_LEVEL 环境变量覆盖日志级别
|
2026-01-24 18:47:06 +08:00 |
|
2977094657
|
c0cddca307
|
Merge branch 'main' of https://github.com/2977094657/WeChatDataAnalysis
v0.1.7
|
2026-01-24 10:53:49 +08:00 |
|
2977094657
|
c523036a10
|
fix(chat): 链接卡片补全公众号来源并解决缩略图防盗链
- appmsg 解析补全 from/fromUsername,并规范化 url/thumbUrl
- contact.db 兜底反查 fromUsername(仅有 sourcedisplayname 时)
- 新增 /api/chat/media/proxy_image,仅允许 qpic/qlogo,带 mp.weixin.qq.com Referer(10MB 限制)
- 前端 LinkCard 增加来源头像/host 兜底,qpic/qlogo 预览图走代理;头像加载失败回退
- 导出消息补充 from 字段
|
2026-01-24 10:51:35 +08:00 |
|
2977094657
|
7d4ac67fc2
|
Add downloads badge to README
Add a downloads badge to the README.
|
2026-01-20 17:21:13 +08:00 |
|
2977094657
|
d3d1c8dc7d
|
feat(installer): allow deleting user data on uninstall
v0.1.6
|
2026-01-18 14:58:04 +08:00 |
|
2977094657
|
d4828b1a0a
|
feat(desktop): close-to-tray setting
v0.1.5
|
2026-01-18 14:43:43 +08:00 |
|
2977094657
|
78ace41b0e
|
feat(desktop): desktop settings
v0.1.4
|
2026-01-18 14:01:09 +08:00 |
|
2977094657
|
91e475f070
|
feat(desktop): create output link next to exe
v0.1.3
|
2026-01-18 12:41:04 +08:00 |
|
2977094657
|
87fb7f2619
|
fix(desktop): enable devtools hotkeys and log backend stdio
v0.1.2
|
2026-01-18 12:20:24 +08:00 |
|
2977094657
|
2a59e941f7
|
docs: quick start with exe first
|
2026-01-18 12:12:24 +08:00 |
|
2977094657
|
5555c8da5c
|
ci: allow same-version npm version
v0.1.1
|
2026-01-18 12:02:19 +08:00 |
|
2977094657
|
f38af4c68a
|
ci: release on tag
v0.1.0
|
2026-01-18 11:58:54 +08:00 |
|
2977094657
|
6eb161c726
|
feat(desktop): 新增 Electron 桌面端壳与自绘标题栏
- 新增 desktop/ Electron 工程:启动后端并等待 /api/health,就绪后加载页面;打包模式从 extraResources 读取 UI/后端
- 新增 DesktopTitleBar 组件,适配 frame:false 自绘标题栏,并修复桌面端 100vh 布局导致的外层滚动条
- chat 页面右侧布局调整更接近原生微信;detection-result 调试输出仅在 dev 环境启用
- .gitignore 忽略 desktop 构建产物/依赖,保留 .gitkeep 占位文件
- README 补充 Windows 桌面端 EXE 打包(npm run dist)与产物路径说明
|
2026-01-17 18:23:52 +08:00 |
|
2977094657
|
848847c162
|
feat(api): 支持挂载 Nuxt 静态 UI 并统一桌面端运行参数
- 若存在 WECHAT_TOOL_UI_DIR 或 frontend/.output/public,则在 / 挂载静态站点并支持 SPA 路由回退
- API 根端点调整为 /api,避免与静态 UI 冲突
- 新增 WECHAT_TOOL_DATA_DIR 输出目录约定,统一 databases/key store 等路径
- host/port 支持通过 WECHAT_TOOL_HOST / WECHAT_TOOL_PORT 配置,并打印可访问地址
- 新增 backend_entry.py 作为 PyInstaller 入口,减少动态导入识别问题
|
2026-01-17 18:23:35 +08:00 |
|
2977094657
|
95f4d32d53
|
build(pyinstaller): 增加 build extra 并更新 uv.lock
- pyproject.toml 新增 optional-dependencies: build(pyinstaller)
- 移除多余的 pathlib 依赖(Python 3 内置)
- 更新 uv.lock,锁定构建依赖
|
2026-01-17 18:23:24 +08:00 |
|
2977094657
|
ea0547eab3
|
fix(chat): 群聊发送者解析支持 alias 并避免覆盖 sender_username
- _split_group_sender_prefix 支持传入已知 sender(username/alias),弱特征场景避免误拆前缀
- 群聊消息按需读取 contact.db 的 alias 辅助解析昵称:\n前缀(带缓存)
- 仅在 sender 缺失时回填前缀,避免昵称覆盖 sender id
|
2026-01-04 14:03:52 +08:00 |
|
2977094657
|
03af287aea
|
fix(chat): 合并转发记录的图片/表情解析与媒体兜底
- 前端:recordItem XML 清理非法控制字符并转义裸 &,补齐 fromnewmsgid/cdnurlstring/aeskey 等字段
- 前端:图片接口追加 server_id;表情接口透传 emoji_url/aes_key
- 后端:/api/chat/media/image 支持 server_id,从 message_resource.db 反查 packed_info 资源 md5 并优先定位
- 后端:/api/chat/media/emoji 支持 emoji_url/aes_key,本地缺失时安全下载并尝试 AES-CBC 解密识别
|
2026-01-02 22:10:23 +08:00 |
|
2977094657
|
13d9e7a3bd
|
docs(readme): 补充实时模式说明与致谢
- 更新项目简介/功能点:补充聊天记录实时更新(SSE)
- 增加 echotrace 致谢并整理参考项目列表
|
2026-01-01 23:24:36 +08:00 |
|
2977094657
|
b422b3c55c
|
feat(chat): 前端增加实时开关并自动刷新会话/消息
- 聊天页新增实时开关,自动探测 realtime 可用性
- 监听 /api/chat/realtime/stream,变更时触发增量同步并刷新会话/消息
- useApi 增加 realtime 接口,sessions/messages 支持 source 参数
|
2026-01-01 23:24:15 +08:00 |
|
2977094657
|
57ffcd3aa0
|
feat(chat): 支持聊天记录实时更新(WCDB + SSE)
- 新增 WCDB realtime 连接管理与 DLL 依赖,并在 shutdown 释放资源
- 新增实时状态/变更 SSE 与增量同步接口(单会话/全会话)
- sessions/messages 支持 source=realtime,增强内容解码与 packed_info md5 提取
- wheel 打包包含 WCDB.dll / wcdb_api.dll
|
2026-01-01 23:23:01 +08:00 |
|
2977094657
|
219143f663
|
chore(gitignore): 忽略本地参考仓库与工具/数据目录
- 忽略 .ace-tool/ 工作目录
- 忽略 WxDatDecrypt/、echotrace/、oh-my-wechat/、vue3-wechat-tool/、wechatDataBackup/、wx_key/ 等本地参考/数据目录
|
2026-01-01 23:22:24 +08:00 |
|
2977094657
|
d37131bf96
|
feat(chat): 合并转发聊天记录支持预览与弹窗查看
- appmsg(type=19) 解析为 renderType=chatHistory,并透传 recordItem(recorditem 原文)
- 修复 recorditem CDATA 内包含 <refermsg> 时误判为引用消息的问题
- 列表/导出路径统一带上 recordItem,并避免已解析的 appmsg 被二次 XML 解析覆盖
- 前端聊天页新增聊天记录卡片 + 弹窗,支持按条展示及图片/视频/引用内容预览
- 会话列表与摘要统一显示为 [聊天记录]
|
2026-01-01 16:30:05 +08:00 |
|
2977094657
|
c1712ba6dd
|
feat(keys): 自动保存密钥并支持前端回填
- 新增 output/account_keys.json 账号密钥存储(db_key / image_xor_key / image_aes_key)
- 新增 /api/keys 查询已保存密钥;缺失时兜底从账号目录 _media_keys.json 读取图片密钥
- 数据库解密成功后按账号写入 db_key;保存图片密钥时同步写入 store(失败静默不影响主流程)
- 前端解密页进入图片密钥步骤自动回填;进入下一步/跳过时自动保存一次
|
2026-01-01 16:29:16 +08:00 |
|
2977094657
|
67358deeef
|
improvement(chat): packed_info md5 提取优先匹配 .dat 文件名
- packed_info 同时包含多个 32hex 时,优先从形如 xxx_t.dat/.t.dat 的文件名中提取 md5;无匹配再回退到原 32hex 众数策略
- 对齐 echotrace 的选择思路,降低取错 md5 概率
|
2025-12-31 11:35:51 +08:00 |
|
2977094657
|
0349d89def
|
fix(chat): 图片消息优先使用资源 md5 修复 _t.dat 缩略图不显示
- 图片消息(local_type=3)优先使用 message_resource.db 的资源 md5,避免 XML md5 与本地 *_t.dat 基名不一致导致 /api/chat/media/image 404
- 同步覆盖消息合并/导出/列表三处解析路径
refs #12
|
2025-12-31 11:34:28 +08:00 |
|
2977094657
|
87605c42ef
|
fix(chat): 图片消息优先使用包含 file_id 的本地 URL
- 当服务端返回本地 /api/chat/media/image URL 时,优先使用前端拼的本地 URL(携带 file_id),提高兜底命中率
|
2025-12-30 11:15:44 +08:00 |
|
2977094657
|
23dd59ed4d
|
fix(media): 聊天图片增加会话 attach 快速兜底定位
- get_chat_image 在 hardlink 缺失/不完整时,按会话 attach 目录快速探测 *_t.dat/*_h.dat,避免默认 deep_scan=0 直接 404 造成破图
- md5 参数非 32 位时自动按 file_id 处理,覆盖部分版本的图片标识
|
2025-12-30 11:15:20 +08:00 |
|
2977094657
|
0894092325
|
feat(chat): 前端增加消息类型筛选与按类型导出
- 聊天页新增消息类型筛选下拉框(render_types)
- 导出弹窗新增“消息类型(导出内容)”多选与快捷项,并明确离线媒体不影响消息条数
- createChatExport 透传 message_types;图片本地 URL 可同时携带 md5+file_id
- 增加 message-filter-select 样式
|
2025-12-29 13:42:44 +08:00 |
|
2977094657
|
97ceed58b6
|
fix(chat): 修复导出 ZIP 写入冲突并支持按消息类型导出
- 修复导出时 ZIP entry 写句柄冲突(messages 先写临时文件再写入 ZIP)\n- 新增 message_types 过滤,进度/统计按所选类型计数\n- manifest.json 记录 messageTypes,避免导出含义歧义
|
2025-12-29 13:40:36 +08:00 |
|
2977094657
|
46e535dde7
|
perf(media): 媒体缺失查询默认快速 404(支持 deep_scan)
- image/video/video_thumb 增加 deep_scan 开关,默认避免昂贵递归扫描\n- video/video_thumb 增加常见路径快速探测,减少切换筛选时慢 404
|
2025-12-29 13:40:19 +08:00 |
|
2977094657
|
8488c1aa53
|
feat(chat): 会话消息列表支持按类型筛选
- /api/chat/messages 支持 render_types(逗号分隔,多类型)\n- 统一 renderType 归一化(如 redPacket -> redpacket),避免筛选命中问题
|
2025-12-29 13:40:02 +08:00 |
|
2977094657
|
69fe7fbf88
|
improvement(media): 提升图片/表情资源解密稳定性并自愈缓存
- 增加图片有效性校验并优化 JPEG/WebP 识别,降低 XOR 解密误判
- 图片资源按变体(b/h/c/t)与大小排序尝试多个候选,提高命中率
- 发现损坏缓存文件时自动删除并重建(单张获取与批量解密均生效)
- 表情本地解密失败时支持从 emoticon.db 安全回退下载,并支持 AES-CBC 解密
|
2025-12-26 21:46:07 +08:00 |
|