手瓜一十雪
3420f0b76d
remove: test file
2026-10-22 16:03:11 +08:00
手瓜一十雪
859eb530c5
fix(ci): avoid resolving dev dependencies in release artifacts
2026-10-21 16:36:48 +08:00
手瓜一十雪
89e8efc57e
fix : #2100
2026-10-21 16:16:27 +08:00
Ekko
450fb0429a
Remove ghproxy.imciel.com from proxy URLs ( #2108 )
...
Removed deprecated proxy URL from the list.
Signed-off-by: Ekko <beijiu572@gmail.com >
2026-10-19 12:15:20 +08:00
cherry-xw
810052c605
fix(onebot): preserve profile regions in user and member responses ( #2107 )
2026-10-15 15:31:19 +08:00
手瓜一十雪
3f66b36901
fix(album): restore comments and support batch targets
...
Initialize comment like data required by QQNT and allow comments on upload batches while preserving single-image targets. Add action and native argument conversion regression tests.
Fixes #1979 . Closes #2028 .
2026-10-12 12:46:50 +08:00
手瓜一十雪
bbd0d2aca3
fix(message): 修复合并转发中动画表情吞掉后续消息段 ( #2097 )
2026-10-12 12:26:58 +08:00
H3CoF6
7471e3ecd6
feat: 支持 macOS 设备 GUID 管理与修正 Linux global 路径 ( #2099 )
...
* feat(webui): 支持 macOS 设备 GUID 管理与修正 Linux global 路径
Linux 的 global 目录直接位于数据根目录下(不再经过 nt_qq), 与 macOS 对齐;
新增 getGlobalDataPath 统一推导, 修正 Registry20/machine-info 在 Linux 下指向错误目录。
macOS 设备 GUID 实现(逆向自 wrapper.node, 对齐 qq_guid_tool):
- guid = MD5(machine_id[8] || sn)
- machineid-info 使用 QQ 私有 TEA 容器(16 轮, 大端), 密钥为 IOPlatformUUID 前 16 字节
- machine_id 优先读 machineid-info, 失败回退主网卡 MAC + 0000
- sn 优先 /dev/disk0 序列号, 回退 IOPlatformSerialNumber
- 新增 GetMacGUIDInfo / GetMacHardwareInfo / SetMacMachineId /
GetMacInfoBackups / CreateMacInfoBackup / RestoreMacInfoBackup / ResetMacDeviceID
- 前端 GUID 面板支持 macOS: 显示硬件信息, 编辑 machine_id 并实时预览 GUID, 备份/恢复/删除
* fix(webui): 加固 GUID 管理并补充 Linux global 路径迁移
按评审意见处理:
- Linux 迁移: 仅当 <dataPath>/global 不存在且 <dataPath>/nt_qq/global 存在时
搬运旧目录, 新目录已存在则保持原样; 逻辑抽到 global-migrate.ts 便于测试
- macOS 主网卡 MAC: 优先 en0, 再回退父级 IOEthernetController 上的
IOMACAddress, 整条链路判空容错
- 恢复接口防目录穿越: 备份名必须命中白名单且匹配 .bak.<时间戳> 格式,
写入前校验内容合法性 (Registry20 / machine-info / TEA 容器)
- SN 留空语义统一为"沿用当前生效值", 前后端预览与落库一致
- 前端保存按钮 dirty 判定纳入 SN
- 备份命名加毫秒时间戳与随机后缀, COPYFILE_EXCL 落盘, 杜绝同秒覆盖
- 硬件查询改为异步 execFile 并加进程内缓存, 不再阻塞事件循环
测试: 新增 Linux 迁移 5 例与备份命名/穿越/内容校验用例,
全量 27 文件 256 例通过; tsc --noEmit 与 eslint 通过。
2026-10-11 12:22:47 +08:00
手瓜一十雪
6797143b04
chore(ci): remove one-off compatibility validation
2026-10-10 12:50:35 +08:00
手瓜一十雪
ff37736a4a
docs(release): remove obsolete release note templates
2026-10-10 12:27:51 +08:00
手瓜一十雪
26ad589367
fix(release): generate notes from verified tag history
2026-10-10 12:27:51 +08:00
手瓜一十雪
ff9a829e29
fix(shell): preserve Windows launcher paths and elevation arguments
2026-10-10 11:17:31 +08:00
手瓜一十雪
f8786c65de
test(macos): read XML entitlements and cache verified QQ image
2026-10-10 10:41:55 +08:00
手瓜一十雪
038dd558da
test(macos): exercise signed QQ with native modules without login
2026-10-10 10:29:52 +08:00
手瓜一十雪
abda6a96de
fix(native): complete cross-platform media and packet integration
2026-10-10 09:53:28 +08:00
H3CoF6
4e2c48624a
fix(onebot): 修复 create_flash_task 触发的 QQ 内核崩溃,并新增时效字段 ( #2098 )
2026-10-10 05:37:09 +08:00
手瓜一十雪
1c0f7cce4f
fix(macos): support verified QQ builds on arm64 and x64
2026-10-10 01:05:09 +08:00
手瓜一十雪
b31e1c0f0c
fix(packet): extend QQ build coverage from 40768 to 53644
2026-10-09 22:15:24 +08:00
手瓜一十雪
83c1d1d596
fix(packet): support QQ 53644 and missing recent builds
2026-10-09 20:19:36 +08:00
Shxiao
05feca9a2c
fix(onebot): get_group_files_by_folder 不再丢弃子文件夹 ( #2095 )
...
该接口的 returnSchema 声明了 folders(文件夹列表),actionDescription
也写着「获取指定群文件夹下的文件及子文件夹列表」,但 _handle 把 folders
硬编码成空数组。
它调用的 MsgApi.getGroupFileList 与 get_group_root_files 相同,返回项
既可能带 fileInfo 也可能带 folderInfo;兄弟实现 GetGroupRootFiles 把
两类都映射了出来。后果是进入某个子目录后无法继续往下遍历,调用方永远
只能拿到空的 folders。
改为按兄弟接口的方式映射 folderInfo。
2026-10-07 22:05:51 +08:00
Shxiao
f750d95545
fix(onebot): 恢复 set_group_leave 的 is_dismiss 解散群聊支持 ( #2094 )
...
payloadSchema 声明了 is_dismiss(是否解散),该字段也会出现在 build:openapi
生成的接口文档中,但 _handle 始终只调用 quitGroup:群主传 is_dismiss=true
期望解散群聊时,实际只把账号退出群聊——群没解散,账号却已经不在群里。
同一问题曾在 #1694(deae7fd4)修复过。该 PR 随后被 #1701(e6f646837,
2026-03-13)整包回滚,54 个文件全部撤销;触发原因记录在 #1700(v4.17.48
无法正常发送 JSON 卡片消息),回滚后 v4.17.49 确认修复。回滚一并删掉了
destroyGroup 与 is_dismiss 分支,本次只恢复这一条分支。
本补丁不触碰任何 schema、描述与示例字段。
2026-10-07 22:05:16 +08:00
手瓜一十雪
ec6aadaeea
fix(shell): support QQ 9.9.36 Windows file query aliases
2026-10-07 00:07:42 +08:00
手瓜一十雪
463d3ea5b1
fix(test): use typed spawn options for Windows batch regression
2026-10-06 18:08:08 +08:00
手瓜一十雪
0d6ce7f509
fix(ci): sync typescript dependency in workspace lockfile
2026-10-06 18:07:06 +08:00
手瓜一十雪
4f1401da78
fix(types): preserve complete nested types during post-processing
...
Use the TypeScript parser instead of a regex that truncates nested generics and function types. Validate generated syntax and add a regression test. Include workspace aliases and PTY ambient declarations. The full type package build still reports six errors in third-party node-pty source; this commit does not claim to resolve that remaining issue.
2026-10-06 17:51:21 +08:00
手瓜一十雪
9109b8cfe2
fix: repair Windows release dependencies and loader paths
...
Bundle required crypto and SSL DLLs and gate releases on a Windows native-load smoke test. Resolve loader paths independently of the working directory and encode file URLs correctly. Include the quick-login launcher built from Windows-Boot 0ff70ce10e34ac26411f9e6bcedaedfacc1e74f0. Validated builds, five path regressions, and live Shell and Windows Node startup to QR login.
2026-10-06 17:51:21 +08:00
手瓜一十雪
297133a1b1
fix(shell): update Windows hook for native file information queries
...
Include the x64 Release hook built from NapCat-Windows-Boot commit 789e6cce00be40d02659e1aca992f8cd928b790a. SHA256: 7C48E7D10D77E2C3936E5D190AEB0DDEE353D55FD06DE81C714F2740112B94B1.
Related to #2091 . The replacement passes 10 independent Win32 checks; the reported QQ crash remains to be verified in the reporter's environment.
2026-10-06 16:54:12 +08:00
sj817
454cc0eda2
ci(release): 下游 AppImage 用的 QQ 换成 3.2.32-52194
...
原来的 3.2.30-50969 链接已经 404,v4.18.29 发版时 AppImage、NodeLoader 的构建都因此失败。
2026-10-05 13:50:01 +08:00
sj817
435cb7cf52
fix(core): Windows Server 缺少媒体基础组件时给出明确提示
...
QQNT.dll 静态依赖 mf.dll / mfplat.dll / mfreadwrite.dll,Windows Server 默认不安装
「媒体基础」,加载 wrapper.node 时系统只报 The specified module could not be found(#2069)。
现在 Windows 下加载失败且找不到 mfplat.dll 时,直接提示安装媒体基础的方法。
2026-10-05 13:37:07 +08:00
sj817
8005afebd2
fix: 静默离线等 60 秒再重启 Worker,被踢下线不受影响
...
静默离线(#2080)原来和被踢下线一样 3.5 秒后就重启 Worker。网络短暂断开时 QQ
也可能报离线,这样一次网络抖动就会把整个 Worker 重启掉。现在静默离线先等 60 秒,
期间恢复在线就不重启;等待期间收到被踢通知则不再等,按原来的 3.5 秒重启。
Shell 和 Framework 里重复的下线处理抽成 createOfflineRecovery,并补上测试。
2026-10-05 13:23:32 +08:00
xboHodx
a8f6a57311
feat: 群相册支持多图同批次上传与视频上传,分片上传改为并发 ( #2081 )
...
- 新增 upload_images_to_qun_album:多张图片共用一个批次,相册里显示为同一条
- 新增 upload_video_to_qun_album:上传视频并自动抽取首帧作为封面
- 分片大小改用服务端返回的 slice_size,分片并发上传,最后一片等其它分片传完再发
- 摘要改为流式计算,分片按需读取,不再把整个文件读进内存
- 批次号同一秒内递增,避免两次上传被并成一条
2026-10-05 13:21:38 +08:00
sj817
c0fd089539
chore(release): 发布说明换成仍可下载的 QQ 官方 CDN 链接
...
原来的 9.9.26-44343 / 3.2.23-44343 / Mac 40990 链接已经全部 404。
换成 Windows 9.9.33-52230 和 Linux 3.2.32-52194 的官方 CDN 链接并标注,
附上 GitHub 镜像作为备用,MacOS 写明暂不支持。
2026-10-05 12:45:34 +08:00
sj817
88643854a0
fix(core): 新入群拉不到成员列表时群消息不再整条丢失
...
- getGroupMember 在群成员缓存刷新失败时 members 为 undefined,
直接 members!.values() 抛 TypeError,整条群消息上报失败;
现在返回 undefined,拉取失败的结果也不再写进缓存
- 未缓存的群刚刷新过就不再重复强制拉取,群消息处理里也去掉重复查询
- 临时会话按来源群号查成员,之前误把对方 QQ 号当群号去拉成员列表
- uin 转 uid 在 NT 接口都查不到时,先从已缓存的群成员里找
Refs #2070
2026-10-05 12:39:05 +08:00
Shxiao
9a06abbbbd
fix: 静默离线(无 KickedOffLine 通知)后自动恢复登录 ( #2080 )
...
服务端静默断开会话时不会下发 KickedOffLine,onSelfStatusChanged 仅把
selfInfo.online 置为 false 并打一行日志,没有任何消费者:进程与 WS 连接
继续存活,下游 OneBot 客户端长时间收不到任何事件。
- core 在 在线 -> 离线 的跳变上广播新的 SelfOffline 事件(重复的 status=20
不重复触发,未登录时不触发)
- framework/shell 复用 #2030 已建立的下线恢复链路:同步 WebUI -> 重启 Worker
-> 快速登录
- 静默离线可能是临时状态,重启前重新确认仍未恢复,避免误重启 Worker
Closes #2071
2026-10-05 12:06:22 +08:00
sj817
8371359677
fix(webui): Firefox 下关闭卡片倾斜效果,修复登录页内容不显示
...
Firefox 里 backdrop-filter 和 3D transform 作用在同一个元素上时,卡片里
带层叠上下文的元素(标题、输入框、按钮)不会被绘制,登录页只剩一行提示文字。
报告者在 macOS 的 Firefox 157 上确认:去掉 transform 或 backdrop-filter
任意一个都能恢复,只去掉 transform 时鼠标移上去重新倾斜又会消失。
倾斜只是装饰,保留毛玻璃效果,Firefox 下不再设置 transform 和 will-change,
鼠标光晕照常显示。其他浏览器行为不变。
Closes #2083
2026-10-05 11:46:26 +08:00
sj817
651c15aa61
fix(native): 更新 MoeHoo,修复收到空包时 QQ 进程段错误
...
QQ 在网络未就绪、连接异常等情况下会以空包调用收发函数,MoeHoo 的
recv_hook/send_hook 不判空直接解引用,导致 QQ 进程 SIGSEGV(#2060、#1668,
崩溃点为 recv_hook+34)。Docker 部署启动后几秒内崩溃就是这个原因。
MoeHoo-NapCat new-test@ff1e937:空包直接交给原函数,不再解引用。
二进制来自该提交的 CI(run 37260275360),更新 linux.x64、linux.arm64、win32.x64。
darwin.arm64 现有二进制与 CI 产物不是同一套实现(54 KB / 1.1 MB),且无法在 Mac 上验证,
本次不更新。
验证:用伪造的 wrapper.node 在 Linux x64 上让 MoeHoo 挂钩同签名函数,
旧二进制在空包、空 src、空指针参数、发送空包时都会段错误,新二进制都正常返回,
正常包的回调内容(uin、cmd、seq、数据)与旧版一致。
2026-10-05 11:44:48 +08:00
sj817
00729e4807
feat(onebot): 群文件夹返回最后修改时间与修改者
...
get_group_root_files 返回的文件夹新增 modify_time、modifier、modifier_name,
取自 NT 原始数据 folderInfo 的 modifyTime / modifyUin / modifyName,
命名与群文件已有的 modify_time 保持一致。
Closes #1964
2026-10-05 11:07:59 +08:00
sj817
5ef4f6cb7c
fix(webui): Passkey 检查不再阻塞 Token 登录
...
在电脑端注册 Passkey 后用手机打开 WebUI,本机没有对应 Passkey 时
navigator.credentials.get 可能一直不返回,而检查期间 Token 输入框和回车登录
都被禁用,页面就卡在「正在检查Passkey」。
- 检查 Passkey 期间不再禁用 Token 输入框和回车登录
- credentials.get 加 30 秒超时和 AbortController
- 提交 Token 或离开页面时取消仍在等待的 Passkey 验证
Closes #2076
2026-10-05 11:07:59 +08:00
sj817
13a8a2b8dd
fix(onebot): get_group_notice 返回「发给新成员」公告
...
get_t_list 会把「发给新成员」类公告单独放在 inst 数组里,之前只遍历 feeds,
这类公告(群规通常发在这里)完全拿不到。现在把 inst 条目追加在 feeds 之后返回,
已有条目的顺序不变,并按 fid 去重。
新增字段:
- send_to_new_member:是否为「发给新成员」公告
- pinned:由 inst 条目的 settings.inst_no_pinned 映射(0 = 置顶),
feeds 条目读不到置顶状态,不带该字段
Closes #2082
2026-10-05 11:07:42 +08:00
手瓜一十雪
8d69a8e086
feat
2026-10-04 20:24:08 +08:00
Shxiao
26d7533e0f
fix: get_friend_msg_history 未透传 quick_reply 参数 ( #2073 )
...
payload schema 声明了 quick_reply,但 _handle 调用 parseMessage 时
没有传入,字段被静默忽略;与 get_group_msg_history 行为不一致。
将 payload.quick_reply 作为第 5 个参数透传,并补充回归测试。
2026-09-29 15:18:10 +08:00
风澪
870a6060b8
fix(onebot): 私聊引用丢失 reply 段——按 clientSeq 反查被引用消息 ( #2016 )
...
私聊被引用时,引用元素里的 replayMsgSeq 常为 0(客户端未填序号),
replyElement 的三条 seq 查询与协议兜底都会落空,最终返回 null;null 段
被 parseMessageSegments 过滤掉,于是事件里没有 reply 段、也没有报错(#1508)。
同一元素携带的 replyMsgClientSeq / replyMsgTime 在这种场景下依然准确,而
NapCat 已有按 (peer, clientSeq, time) 查询的 getMsgByClientSeqAndTime
(此前无调用点)。这里在 seq 查询链失败之后用它反查被引用消息,命中即用
真实的 msgId 构造 reply 段。
新路径仅在 seq 链失败后追加,群聊与带真实序号的私聊行为不变。
实测(NapCat 4.18.28 / OneBot 私聊):
- 日志复现「方法1/2/3 查询失败,序号: 0」→「所有查找方法均失败」
- 修复后 reply 段的 id 等于被引用消息自身事件里的 message_id,
get_msg 可反查,带 reply 段回发引用正常
注:本 PR 先前版本改为直用 records.msgId,实测证伪——那是每次事件一份的
快照 id,get_msg 查不到、回发引用会被静默丢弃,已放弃该方案。
2026-09-29 15:18:04 +08:00
Shxiao
0b4cfe65ed
fix: set_qq_profile 无法将性别设置为 0(未知) ( #2065 )
2026-09-23 16:52:24 +08:00
Shxiao
46e505f4ba
fix: 移出精华消息时 msg_random 与 msg_seq 参数顺序错误 ( #2064 )
2026-09-23 10:08:42 +08:00
手瓜一十雪
2049e64260
Add newer QQ appids and arch-aware lookup
...
Updated the external QQ appid, native, and packet tables for newer Linux and Windows builds, including architecture-specific Linux AppID entries. QQBasicInfoWrapper now prefers the matching x64/arm64 AppID before falling back to version-only lookups, and regression tests cover Linux/Windows version resolution and fallback behavior.
2026-09-14 12:36:00 +08:00
手瓜一十雪
7a35ef035a
Pin Windows QQ package for release build
...
The Windows release workflow now uses a fixed QQ installer URL and SHA256 hash, verifies the downloaded installer before packaging, and makes the download cache key sensitive to the selected QQ URL, hash, and Node version. The workflow also switches QQ downloads to curl with retries for transient HTTP errors and centralizes the Node version variable to keep the build config consistent.
2026-09-14 12:01:24 +08:00
五加一5plus1
c75d2f7f86
fix(webui): recover QR login after forced logout ( #2030 )
2026-09-14 11:46:32 +08:00
手瓜一十雪
fa3fe9fdb2
Use pnpm setup in release workflow
...
The release publishing workflow now installs pnpm via pnpm/action-setup instead of globally via npm, and applies the same improvement to the APIFox update job. This keeps the workflow consistent and avoids relying on the environment's global pnpm installation.
2026-09-14 11:43:29 +08:00
手瓜一十雪
464bc3d4a7
Revert "Disable npm install scripts"
...
This reverts commit 3c03b162f5 .
2026-09-14 11:38:46 +08:00
手瓜一十雪
3c03b162f5
Disable npm install scripts
...
Add a project-level .npmrc so npm does not skip package lifecycle scripts during installation. This ensures dependency setup and initialization continue to run as expected.
2026-09-14 11:03:09 +08:00