Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
197 commits
Select commit Hold shift + click to select a range
cbde6ec
fix(chat): 修复首屏请求失效后持续加载
ganpig Oct 25, 2026
13d2ebc
fix(scripts): 修复native-fetch脚本
H3CoF6 Oct 25, 2026
2236822
fix(account): 自动补齐会话凭据并保留进入中状态
ganpig Oct 25, 2026
b0579a7
fix(chat): 修复会话重排后点击目标错位
ganpig Oct 25, 2026
d5207ef
fix(desktop): 区分待提权与进入完整模式状态
ganpig Oct 25, 2026
381941c
fix: 接通聊天提及的名片点击
ganpig Oct 25, 2026
d04bee1
fix(update): 修复 macOS ad-hoc 签名的应用内更新
ganpig Oct 25, 2026
dd23354
feat(desktop): 重构账号入口并优化渐进扫描与页面布局
ganpig Oct 25, 2026
ea427f6
fix(desktop): 让 macOS 彻底退出时停止后台服务
ganpig Oct 25, 2026
358441a
feat(search): 支持搜索功能和设置项并调整标题栏布局
ganpig Oct 25, 2026
2ec474f
fix: 修复图片发送期间的大图预览与资源释放
ganpig Oct 25, 2026
568d563
feat(desktop): 受限模式支持启动离线 QQ
ganpig Oct 25, 2026
0e7c9e5
fix(desktop): 自动收起右下角已解决的状态横幅
ganpig Oct 25, 2026
e8f28a2
feat(desktop): 统一左下角工作菜单与助手面板
ganpig Oct 25, 2026
2e16b07
fix(desktop): 统一左栏按钮样式与状态反馈
ganpig Oct 25, 2026
6f436c0
fix: 阻止隐藏聊天连续翻页并继承工作区活动状态
ganpig Oct 25, 2026
0eff010
feat(chat): 支持逐条排队发送与单击重试
ganpig Oct 25, 2026
85b51a5
fix(assistant): 修复流式重渲丢失待显示文字
ganpig Oct 25, 2026
a057c9a
fix(settings): 工具遮罩保留设置页面与来源现场
ganpig Oct 25, 2026
a225273
perf(desktop): 精简发行依赖与安装包体积
ganpig Oct 25, 2026
3c50387
feat(desktop): 移除独立后台并改为系统直接自启
ganpig Oct 25, 2026
6715910
chore: 合并上游 dev 并衔接通话设置搜索
ganpig Oct 25, 2026
41045c6
feat(settings): 增加自启窗口选项并归位通话录音
ganpig Oct 25, 2026
086a1e5
feat(desktop): 增加助手退出确认与服务联动提醒
ganpig Oct 25, 2026
57543db
perf(desktop): 去重推理运行库并裁剪构建资源
ganpig Oct 25, 2026
7560caf
refactor(settings): 迁移九组目录并兼容旧设置入口
ganpig Oct 25, 2026
a0f9451
fix(settings): 修复更新红点换行错位
ganpig Oct 25, 2026
629051a
refactor(settings): 合并防撤回摘要与同窗记录工具
ganpig Oct 25, 2026
567a4e9
test(desktop): 修复工作菜单改版后的 CI 回归断言
ganpig Oct 25, 2026
0288f4a
fix(call): 修复 FEC 四帧校验和异步挂断竞态
Oct 25, 2026
d6047a1
fix: 新消息未读红点独立实时刷新
ganpig Oct 25, 2026
a955758
fix(settings): 修复首次打开设置重复挂载与持续加载
ganpig Oct 25, 2026
fdd6fb0
refactor(settings): 保留二级页现场并停用隐藏页读取
ganpig Oct 25, 2026
2c3b8df
fix(anti-recall): 保留 WeQ 自撤消息的发送缓存原文
ganpig Oct 25, 2026
f2db289
fix(desktop): 修复 Cmd+Q 被未保存窗口拦截后无法退出
ganpig Oct 25, 2026
78caf9e
feat: 解耦意图感知与互动画像并独立选择模型
ganpig Oct 25, 2026
bf51a81
fix: 修复在线账号密钥扫描大库闪退并校验实际原生产物
ganpig Oct 25, 2026
8efd51b
feat(home): 支持主页独立显示偏好与一言屏蔽词
ganpig Oct 25, 2026
bd2ac07
fix: 加快未读红点出现与 QQ 已读状态同步
ganpig Oct 25, 2026
9e59e1b
fix(chat): 发送消息时立即更新会话预览与时间
ganpig Oct 25, 2026
b58e404
feat(remote): 简化配对入口并支持局域网与专用 Tailscale 并用
ganpig Oct 25, 2026
bac5b1c
fix(dress): 默认还原消息并统一使用与下载入口
ganpig Oct 25, 2026
b7b5e14
fix(home): 缩小头像标签区域并适配可用窗口尺寸
ganpig Oct 25, 2026
7966b4e
feat(ui)!: 统一分段选择并移除稍后保存模式
ganpig Oct 25, 2026
09ca79d
fix(chat): 将排队提示统一放在消息气泡下方
ganpig Oct 25, 2026
57ebd57
feat: 增加 QQ 字体发送开关并同步消息字体预览
ganpig Oct 25, 2026
4b76dc7
refactor(settings): 合并消息显示模块并细化空间和服务设置
ganpig Oct 25, 2026
694c3c1
docs(settings): 补充阅读位置选项的加载速度备注
ganpig Oct 25, 2026
cb50151
fix: 调整账号登录入口与自动进入行为
ganpig Oct 25, 2026
c6174a1
fix(export): 保存入口统一为单按钮并遵循全局设置
ganpig Oct 25, 2026
f6374c3
fix: 收紧账号页布局并调整底部返回入口
ganpig Oct 25, 2026
2c5e8c6
chore: 合并上游 dev 通话修复
ganpig Oct 25, 2026
c3b34c5
fix: 兼容新版意图配置备份并修复 CI 回归断言
ganpig Oct 25, 2026
9e2491e
style(settings): 放松左侧导航间距与留白
ganpig Oct 25, 2026
23dd6dc
test(desktop): 同步搜索定位与定时分段控件断言
ganpig Oct 25, 2026
bfda935
style(settings): 加大导航间距与设置标题
ganpig Oct 25, 2026
6459768
style(settings): 将设置标题与下方间距加倍
ganpig Oct 25, 2026
4192e35
fix(settings): 避免公共样式覆盖导航布局
ganpig Oct 25, 2026
f9af2fe
refactor(settings): 合并常规隐私页并归位配置备份
ganpig Oct 25, 2026
b9a697b
perf(messages): 优化同步调度、未读校准与会话读取
ganpig Oct 25, 2026
8fc80de
fix(chat): 拆分消息装扮并消除发送字体闪动
ganpig Oct 25, 2026
c360126
feat(settings): 分块 API 配置并保存全局默认模型
ganpig Oct 25, 2026
e98c743
test: 精简离线测试分组并加快反馈
ganpig Oct 25, 2026
cbe869c
chore: 将误带入的设置样式改动留回工作区
ganpig Oct 25, 2026
5da20c4
style(settings): 缩小设置标题与下方间距
ganpig Oct 25, 2026
391d586
fix: 按敏感字段调整隐私模式遮罩范围
ganpig Oct 25, 2026
6d8f216
fix(transcribe): 修复桌面包语音识别子进程启动与依赖加载
ganpig Oct 25, 2026
cd2d31c
fix(ci): 修复群资料行类型和未读查询测试断言
ganpig Oct 25, 2026
5af063e
feat(desktop): 截图时隐藏菜单并支持悬停预览
ganpig Oct 25, 2026
8db773c
fix: 修复引用消息定位被贴底刷新覆盖
ganpig Oct 25, 2026
6193fd1
fix(desktop): 保持短悬停时原有截图行为
ganpig Oct 25, 2026
65b69b4
fix: 显示跨窗口消息定位的加载进度
ganpig Oct 25, 2026
4e778bb
Merge remote-tracking branch 'origin/dev' into feat/qqcall
H3CoF6 Oct 25, 2026
f050470
fix: 补齐各入口名片及下级窗口头像
ganpig Oct 25, 2026
694029a
fix: 统一群助手与外层会话时间显示规则
ganpig Oct 25, 2026
3976a62
fix(mail): 同步外部已读变化并及时清除邮箱红点
ganpig Oct 25, 2026
c477308
feat(settings): 让模型使用入口显式继承全局默认
ganpig Oct 25, 2026
649f444
fix(assistant): 按现有工具能力优化助手任务指引
ganpig Oct 25, 2026
3a7be1b
perf(messages): 完成长时间线虚拟化与后台查询调度
ganpig Oct 25, 2026
2c3b384
docs(settings): 补记模型预览控制台与离线复核
ganpig Oct 25, 2026
6f8b548
fix(renderer): 释放离屏媒体并补齐白屏恢复
ganpig Oct 25, 2026
cbd2003
perf(web): 优化远程连接反馈与工作区按需加载
ganpig Oct 25, 2026
c617dec
fix(call): 修复视频通话画面冻结与卡顿
H3CoF6 Oct 25, 2026
c950b14
fix(call): 补上 GCS 视频参数公告,修复开摄像头对端无感知
H3CoF6 Oct 25, 2026
1f503a1
chore(web): 统一 web 与 desktop 的 Vite 8
H3CoF6 Oct 25, 2026
5371090
fix(call): 对齐视频 sub-header 的基准字段与分片标记
H3CoF6 Oct 25, 2026
c10ac4f
fix(call): 修复媒体退化成全程中继导致两端画面极卡
H3CoF6 Oct 25, 2026
6392738
fix(call): GCS 认证能力集换成 QQ 本体原文
H3CoF6 Oct 25, 2026
a32302c
test(settings): 补齐意图与画像默认模型查询夹具
ganpig Oct 25, 2026
6375b69
test(agentlab): 补齐批量克隆模型查询夹具
ganpig Oct 25, 2026
2e1edba
test(renderer): 明确图片预览夹具的前台可见状态
ganpig Oct 25, 2026
0064cff
test(agentlab): 补齐助手流式回归的默认模型查询
ganpig Oct 25, 2026
1798de3
feat(settings): 将 QQNT 抓包迁入独立系统窗口
ganpig Oct 25, 2026
bcf4bd6
feat(settings): 将数据库管理融入设置正文并接入公共导出
ganpig Oct 25, 2026
bf5217a
fix(call): 开房 / 邀请请求与 QQ 本体逐字节对齐
H3CoF6 Oct 25, 2026
312d703
fix(settings): 补齐数据库导出范围与迟到回执隔离
ganpig Oct 25, 2026
63b1880
feat(settings): 融合 QQ 资源分析清理与浏览
ganpig Oct 25, 2026
a6da337
fix(settings): 收紧资源清理边界并标记不完整扫描
ganpig Oct 25, 2026
90e8267
feat(settings): 合并已读同步开关并保留旧混合偏好
ganpig Oct 25, 2026
5a38213
test(settings): 补齐资源导航夹具的当前来源
ganpig Oct 25, 2026
9d3a0eb
feat(settings): 分离完整功能自动偏好与宿主运行请求
ganpig Oct 25, 2026
bb995b0
fix(call): 打通视频通话 P2P 直连与中继协商
H3CoF6 Oct 25, 2026
6d70d63
fix(settings): 让在线能力统一消费宿主有效运行态
ganpig Oct 26, 2026
f32e19a
feat(settings): 增加受限模式被动横幅提醒偏好
ganpig Oct 26, 2026
884b59d
test(settings): 补齐在线路由夹具的宿主策略
ganpig Oct 26, 2026
a42ba6b
feat(settings): 为菜单截图增加临时隐私覆盖
ganpig Oct 26, 2026
0d98864
fix(settings): 使用居中恢复确认并修复开发版重启
ganpig Oct 26, 2026
83718ad
fix(desktop): 统一菜单与切换按钮的红蓝状态点
ganpig Oct 26, 2026
1e45849
fix(settings): 保留旧备份缺省字段并验证运行态不入备份
ganpig Oct 26, 2026
2c1e14d
feat(settings): 补齐 AI 参数稳定定位与折叠资源生命周期
ganpig Oct 26, 2026
813212e
fix(desktop): 数字角标支持查看结果后消除红点
ganpig Oct 26, 2026
3edad74
feat(contacts): 好友与群聊资料铺满右侧区域
ganpig Oct 26, 2026
c18ea98
fix(settings): 收敛全页名称与主题模块样式
ganpig Oct 26, 2026
ab7cdb5
feat(desktop): 统一列表右键与多选工具栏并支持联系人未读数
ganpig Oct 26, 2026
eacab50
fix(desktop): 联系人未读角标沿用消息列表样式
ganpig Oct 26, 2026
16feb35
fix(desktop): 持久化任务与助手结果已读状态
ganpig Oct 26, 2026
41c6f02
fix(settings): 补全旧入口定位与稳定目录搜索
ganpig Oct 26, 2026
05b5726
feat(contacts): 完善好友与群聊详情工作区布局
ganpig Oct 26, 2026
81d1d44
fix(ui): 统一主题配色与群精华列表样式
ganpig Oct 26, 2026
7743ebc
style: 统一常用操作与设置导航图标
ganpig Oct 26, 2026
a4298f8
fix(settings): 隔离生命周期迟到结果并修复搜索焦点
ganpig Oct 26, 2026
7459b4b
feat(contacts): 统一个性互动分区与名片展开导航
ganpig Oct 26, 2026
736e24d
fix(search): 提前显示图标范围选择并隐藏空输入结果
ganpig Oct 26, 2026
01a5455
fix: 精简提权按钮并合并重新检查操作行
ganpig Oct 26, 2026
633ce07
fix(settings): 隔离尚未完整提交的授权入口依赖
ganpig Oct 26, 2026
6904f76
fix(search): 清空关键词时保留全局搜索范围
ganpig Oct 26, 2026
79567ee
fix(contacts): 保留详情导航并增加私聊预览
ganpig Oct 26, 2026
1cbe6f2
feat(search): 合并聊天附件与群文件搜索
ganpig Oct 26, 2026
526db77
feat: 接入跨平台原生长期授权与统一设置入口
ganpig Oct 26, 2026
54dc56b
feat(search): 按联系人和群聊合并通讯录与会话搜索
ganpig Oct 26, 2026
9ff111a
docs(settings): 记录最终布局与原生缩放验收
ganpig Oct 26, 2026
e2454ef
feat(search): 合并个人与他人空间搜索
ganpig Oct 26, 2026
3ff09d3
docs(settings): 统一最终目录与运行态说明
ganpig Oct 26, 2026
cf49593
docs(settings): 汇总最终回归与提交审计
ganpig Oct 26, 2026
32b641e
docs(settings): 完成重构清单与验收回执
ganpig Oct 26, 2026
3fc762a
feat(search): 合并消息来源并持久化搜索范围
ganpig Oct 26, 2026
0ef5d3d
feat(chat): 合并表情语音与文件发送入口
ganpig Oct 26, 2026
f61694f
feat: 输入状态特例显示头像昵称并支持查看名片
ganpig Oct 26, 2026
4aeae48
fix: 修复快速滚动消息时图片表情误降级占位
ganpig Oct 26, 2026
2ad13f2
feat: 消息管理增加分析与导出入口并调整图标
ganpig Oct 26, 2026
c85781b
fix: 数据库管理融入页面并自动勾选当前导出库
ganpig Oct 26, 2026
dcab189
fix(contacts): 修复私聊预览自适应布局
ganpig Oct 26, 2026
0d44eeb
feat: 向下浏览消息时提供底部快捷按钮与设置开关
ganpig Oct 26, 2026
1783098
feat(search): 分类并行返回并按最佳匹配度排序
ganpig Oct 26, 2026
cd86c1b
chore(search): 保留并行任务目录条目的未提交状态
ganpig Oct 26, 2026
5401354
fix: 聊天预览使用图形占位并按内存预算保留图片表情
ganpig Oct 26, 2026
07c1c0e
test: 补齐输入状态特例的资料查询模拟
ganpig Oct 26, 2026
a88073c
feat(remote): 补齐跨端文件发送与报告导出并适配手机入口
ganpig Oct 26, 2026
5858067
test: 同步设置顺序图形占位与搜索传输回归断言
ganpig Oct 26, 2026
251bf05
chore: 同步远端 CI 回归修复并保留本地在途提交
ganpig Oct 26, 2026
cc91a53
feat: 完成权限助手发布接入并支持隔离开发通道
ganpig Oct 26, 2026
7292b05
fix: 拒绝未声明权限助手运行通道
ganpig Oct 26, 2026
51bb56c
fix(authorization): 连接长期授权助手后自动启用完整功能
ganpig Oct 26, 2026
bde3487
refactor(chat): 移除独立窗口抖动功能
ganpig Oct 26, 2026
32e6ee5
chore: 合并 main 发布更新并保留 daemon 移除结果
ganpig Oct 26, 2026
dc6b9e2
fix(call): 修复假直连与码率过高,对齐 QQ 本体
H3CoF6 Oct 26, 2026
16cf7d9
chore: 更新版本至 2.3.0 并精简更新日志
ganpig Oct 26, 2026
061a3ad
feat(call): 渲染层解码链路可观测化
H3CoF6 Oct 26, 2026
3c65dca
feat(call): 偏绿 bug 的三路取证(colorSpace / 均色采样 / 对端码流落盘)
H3CoF6 Oct 26, 2026
2823436
chore(native): 锚定已发布的五平台权限助手产物
ganpig Oct 26, 2026
f8f5850
docs: 同步使用手册与开发文档的当前状态
ganpig Oct 26, 2026
8d4a23f
fix(call): 修复订阅晚到导致的跳帧,消除前 15 秒整屏纯绿
H3CoF6 Oct 26, 2026
ffe7a90
fix(call): 订阅晚到时整段补发连续帧,不再冻到下一个关键帧
H3CoF6 Oct 26, 2026
25aa2cc
chore(call): 清理偏绿 bug 排查期的一次性调试埋点
H3CoF6 Oct 26, 2026
8908331
fix(contacts): 修正好友通知状态与申请方向
ganpig Oct 26, 2026
9c694d5
fix(security): 修复审计风险并加入助手权限模式
ganpig Oct 26, 2026
c5ac1d2
fix(assistant): 限制沙箱跨线程工具请求
ganpig Oct 26, 2026
3d7b039
feat: 表情分类与文字转语音直接接入输入面板
ganpig Oct 26, 2026
849fff5
feat(tasks): 支持确认项目数后清除已完成任务
ganpig Oct 26, 2026
12d7546
feat(flash): 优化文件浏览并按下载操作归并常规任务
ganpig Oct 26, 2026
8603d84
fix(mcp): 为只读消息补齐稳定来源元数据
ganpig Oct 26, 2026
f1b6df5
fix(credentials): 合并在线取票并停止安全验证后的后台重试
ganpig Oct 26, 2026
62d0d7a
feat(msg): 位置共享协议(发起 / 上报 / 查询)
H3CoF6 Oct 26, 2026
a98edef
fix: 移除未实现的添加好友和创建 QQ 群入口
ganpig Oct 26, 2026
975900f
fix(contacts): 空详情默认显示群交集首页
ganpig Oct 26, 2026
e6c829d
feat(ui): 位置共享前端
H3CoF6 Oct 26, 2026
2f18128
Merge remote-tracking branch 'origin/dev' into dev
H3CoF6 Oct 26, 2026
9f6d15b
fix(agentlab): 修复克隆体列表读取与后台创建刷新
ganpig Oct 26, 2026
96c6e8f
fix: merge conflict
H3CoF6 Oct 26, 2026
6ca014f
fix(protocol): 对齐更多视频通话不一致的实现
H3CoF6 Oct 26, 2026
a84db6e
Merge branch 'dev' into feat/qqcall
H3CoF6 Oct 26, 2026
ab8a976
Merge remote-tracking branch 'origin/feat/qqcall' into feat/qqcall
H3CoF6 Oct 26, 2026
0b654dd
feat(agentlab): 支持保留配置与历史的克隆体画像更新
ganpig Oct 26, 2026
12637a1
feat(diagnostics): 补齐开发模式页面资源与动画细项采样
ganpig Oct 26, 2026
f181ad2
test(agentlab): 防止浏览器入口引入 Node 运行时依赖
ganpig Oct 26, 2026
114d32c
fix(protocol): 修复位置共享协议
H3CoF6 Oct 26, 2026
1844c57
test(config): 同步损坏配置原件保护与迁移恢复断言
ganpig Oct 26, 2026
bd6a0cd
Merge remote-tracking branch 'origin/dev' into feat/qqcall
H3CoF6 Oct 26, 2026
e42bf50
fix: 补齐设置页标题图标
ganpig Oct 26, 2026
c6b00c4
Merge remote-tracking branch 'origin/dev' into feat/qqcall
H3CoF6 Oct 26, 2026
e18879d
fix(ui): 修复一些ui边距
H3CoF6 Oct 26, 2026
eac5202
chore: update resources
H3CoF6 Oct 26, 2026
57f5570
fix(ci): 修复ci test错误
H3CoF6 Oct 26, 2026
1c063cd
chore: update native pinned version
H3CoF6 Oct 26, 2026
ee3971f
Merge pull request #114 from weq-devs/feat/qqcall
H3CoF6 Oct 26, 2026
89fa893
style: fmt code
H3CoF6 Oct 26, 2026
abdd06b
fix(ci): 修复test
H3CoF6 Oct 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
46 changes: 2 additions & 44 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,36 +65,6 @@ jobs:
- name: Type-check all packages
run: pnpm -r typecheck

# Rust 守护进程(packages/daemon):fmt + clippy -D warnings + 单测,与 TS 侧
# 的 lint/typecheck/test 同级门禁。cargo 缓存加速重复构建。
daemon:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt

- name: Cache cargo
uses: Swatinem/rust-cache@v2
with:
workspaces: packages/daemon

- name: Format check
run: cargo fmt --check
working-directory: packages/daemon

# clippy 以 -D warnings 为门禁:任何告警即失败,与 biome lint 同一标准。
- name: Clippy
run: cargo clippy --all-targets --all-features -- -D warnings
working-directory: packages/daemon

- name: Tests
run: cargo test
working-directory: packages/daemon

# 离线单测(packages/*/test/*.test.ts)。需要真 QQ 环境的探针脚本在
# packages/*/tools/ 下,不在这里跑 —— 约定见 docs/develop/testing.md。
test:
Expand All @@ -117,9 +87,9 @@ jobs:
run: pnpm install --frozen-lockfile

- name: Run unit tests
run: pnpm -r test
run: pnpm test:fail-fast

# 浏览器版打包冒烟(linux-x64):native/ + daemon 随包 → 两个守卫 →
# 浏览器版打包冒烟(linux-x64):native/ 随包 → 两个守卫 →
# 启动真实产物走一遍鉴权流程。产物现在按平台/架构各自成包,build-web 冒烟
# 的就是 release web 矩阵里 linux-x64 那一条。
# 守卫防的是同一类回归:Electron-only 的代码混进 web 构建后不会报错,
Expand All @@ -143,23 +113,11 @@ jobs:
- name: Install dependencies
run: pnpm install --frozen-lockfile

# 鉴权闸 + 端到端路由测试。不需要构建产物,先跑、失败得早。
- name: Test auth gate
run: pnpm --filter @weq/web test

# build-server 会把 native/<platform>/<arch>/ 拷进 dist,而 nt_helper.node
# 不入库 —— 与 release 的 web 矩阵一样,打包前先取当前平台那一份。
- name: Fetch nt_helper native artifacts
run: node scripts/fetch-native.mjs --require-fresh --verify

# 先打当前平台(linux-x64)的守护进程,build-server 与 smoke 才会把它
# 视作打包目标的一部分;与 release 的 web 矩阵保持一致。
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable

- name: Build daemon binary
run: pnpm run build:daemon

# build 内含 check:check-electron-free(走真实 import 图)
# + check-bundle(扫前端产物里残留的自定义协议 URL)。
- name: Build + guards
Expand Down
120 changes: 43 additions & 77 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ on:
permissions:
contents: write # 创建 / 上传 Release

env:
WEQ_REQUIRE_AUTHORIZATION_HELPER: '1'

jobs:
# ========================= QQ 通知门禁 =========================
# 只有「最后一次 commit」以 Release: / chore(release): 开头时才发 QQ 群通知;
Expand Down Expand Up @@ -55,6 +58,12 @@ jobs:
- name: Setup pnpm
uses: pnpm/action-setup@v4

- name: Setup Go for Remote helper
uses: actions/setup-go@v5
with:
go-version-file: tools/remote-network/go.mod
cache-dependency-path: tools/remote-network/go.sum

- name: Setup Node
uses: actions/setup-node@v4
with:
Expand All @@ -69,7 +78,7 @@ jobs:
# 不能混版本)。--require-fresh 卡住 30 天有效期,--verify 当场 require 一次
# 跑 getInitStatus(),二进制有问题在这里就炸,而不是出厂后才发现。
- name: Fetch nt_helper native artifacts
run: node scripts/fetch-native.mjs --require-fresh --verify
run: node scripts/fetch-native.mjs --require-fresh --require-authorization --verify

# 把 tag 里的版本号(v1.2.3 -> 1.2.3)写进 package.json,
# 让 electron-builder 命名产物、app.getVersion() 也能读到。
Expand All @@ -81,16 +90,6 @@ jobs:
- name: Build clone-bot runtime
run: pnpm run build:bot

# Rust 守护进程二进制 → resources/daemon/<platform>-<arch>/,
# electron-builder 随 extraResources 打进安装包。
# runner 镜像预装 Rust 不可靠(windows 上就没有 cargo),显式装一次;
# 缺工具链时 build:daemon 会直接失败退出。
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable

- name: Build daemon binary
run: pnpm run build:daemon

- name: Build renderer + main
run: pnpm --filter @weq/desktop exec electron-vite build

Expand Down Expand Up @@ -160,7 +159,7 @@ jobs:
# 原生 x64 runner 构建 AppImage / tar.gz。native/linux/x64/*.node 已预编译,
# sherpa-onnx / resvg 等原生依赖由 pnpm install 自动装 x64 版本。
# ⚠️ 必须显式传 --x64:electron-builder 的 target.arch 会覆盖 CLI 的架构参数,
# 而 native binding / daemon 都是构建机架构的,两者一旦不一致就会打出坏包
# 而 native binding 都是构建机架构的,两者一旦不一致就会打出坏包
# (见 electron-builder.yml 里 linux 一节的说明)。
linux-x64:
needs: [windows]
Expand All @@ -171,6 +170,12 @@ jobs:
- name: Setup pnpm
uses: pnpm/action-setup@v4

- name: Setup Go for Remote helper
uses: actions/setup-go@v5
with:
go-version-file: tools/remote-network/go.mod
cache-dependency-path: tools/remote-network/go.sum

- name: Setup Node
uses: actions/setup-node@v4
with:
Expand All @@ -183,7 +188,7 @@ jobs:

# 同 windows:先取 nt_helper 原生产物,再开始打包。
- name: Fetch nt_helper native artifacts
run: node scripts/fetch-native.mjs --require-fresh --verify
run: node scripts/fetch-native.mjs --require-fresh --require-authorization --verify

# 打包前先把「架构对不对」验掉:resvg / sherpa 的 .node binding 和 cargo
# 编出来的守护进程都取自构建机。与 macOS 两个 job 同款把关 —— v1.0.0 的
Expand All @@ -204,21 +209,6 @@ jobs:
- name: Build clone-bot runtime
run: pnpm run build:bot

# Rust 守护进程二进制 → resources/daemon/<platform>-<arch>/,
# electron-builder 随 extraResources 打进安装包。
# runner 镜像预装 Rust 不可靠(windows 上就没有 cargo),显式装一次;
# 缺工具链时 build:daemon 会直接失败退出。
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable

- name: Build daemon binary
run: pnpm run build:daemon

# cargo 默认按构建机出二进制,再确认一次它落到了目标架构的目录里。
- name: Verify daemon binary architecture
run: |
file resources/daemon/linux-x64/weq-daemon | grep -q 'x86-64'

- name: Build renderer + main
run: pnpm --filter @weq/desktop exec electron-vite build

Expand All @@ -245,7 +235,7 @@ jobs:
echo "checking $APP_DIR"
test -d "$APP_DIR/resources/app.asar.unpacked/node_modules/@resvg/resvg-js-linux-x64-gnu"
test -d "$APP_DIR/resources/app.asar.unpacked/node_modules/sherpa-onnx-linux-x64"
file "$APP_DIR/resources/resources/daemon/linux-x64/weq-daemon" | grep -q 'x86-64'
test ! -e "$APP_DIR/resources/resources/daemon"

- name: Restore dev manifest
if: always()
Expand Down Expand Up @@ -275,6 +265,12 @@ jobs:
- name: Setup pnpm
uses: pnpm/action-setup@v4

- name: Setup Go for Remote helper
uses: actions/setup-go@v5
with:
go-version-file: tools/remote-network/go.mod
cache-dependency-path: tools/remote-network/go.sum

- name: Setup Node
uses: actions/setup-node@v4
with:
Expand All @@ -287,7 +283,7 @@ jobs:

# 同 windows:先取 nt_helper 原生产物,再开始打包。
- name: Fetch nt_helper native artifacts
run: node scripts/fetch-native.mjs --require-fresh --verify
run: node scripts/fetch-native.mjs --require-fresh --require-authorization --verify

# 同 linux-x64:构建机架构必须就是目标架构,否则 resvg / sherpa binding
# 与守护进程都会是另一个架构的。
Expand All @@ -305,20 +301,6 @@ jobs:
- name: Build clone-bot runtime
run: pnpm run build:bot

# Rust 守护进程二进制 → resources/daemon/<platform>-<arch>/,
# electron-builder 随 extraResources 打进安装包。
# runner 镜像预装 Rust 不可靠(windows 上就没有 cargo),显式装一次;
# 缺工具链时 build:daemon 会直接失败退出。
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable

- name: Build daemon binary
run: pnpm run build:daemon

- name: Verify daemon binary architecture
run: |
file resources/daemon/linux-arm64/weq-daemon | grep -q 'aarch64'

- name: Build renderer + main
run: pnpm --filter @weq/desktop exec electron-vite build

Expand All @@ -343,7 +325,7 @@ jobs:
echo "checking $APP_DIR"
test -d "$APP_DIR/resources/app.asar.unpacked/node_modules/@resvg/resvg-js-linux-arm64-gnu"
test -d "$APP_DIR/resources/app.asar.unpacked/node_modules/sherpa-onnx-linux-arm64"
file "$APP_DIR/resources/resources/daemon/linux-arm64/weq-daemon" | grep -q 'aarch64'
test ! -e "$APP_DIR/resources/resources/daemon"

- name: Restore dev manifest
if: always()
Expand Down Expand Up @@ -376,6 +358,12 @@ jobs:
- name: Setup pnpm
uses: pnpm/action-setup@v4

- name: Setup Go for Remote helper
uses: actions/setup-go@v5
with:
go-version-file: tools/remote-network/go.mod
cache-dependency-path: tools/remote-network/go.sum

- name: Setup Node
uses: actions/setup-node@v4
with:
Expand All @@ -388,7 +376,7 @@ jobs:

# 同 windows:先取 nt_helper 原生产物,再开始打包。
- name: Fetch nt_helper native artifacts
run: node scripts/fetch-native.mjs --require-fresh --verify
run: node scripts/fetch-native.mjs --require-fresh --require-authorization --verify

# 打包前先确认 Node 架构符合目标,避免再打出「arm64 壳 + x64 binding」
# 的坏包(v0.4.4 已踩过一次)。
Expand All @@ -404,16 +392,6 @@ jobs:
- name: Build clone-bot runtime
run: pnpm run build:bot

# Rust 守护进程二进制 → resources/daemon/<platform>-<arch>/,
# electron-builder 随 extraResources 打进安装包。
# runner 镜像预装 Rust 不可靠(windows 上就没有 cargo),显式装一次;
# 缺工具链时 build:daemon 会直接失败退出。
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable

- name: Build daemon binary
run: pnpm run build:daemon

- name: Build renderer + main
run: pnpm --filter @weq/desktop exec electron-vite build

Expand Down Expand Up @@ -472,6 +450,12 @@ jobs:
- name: Setup pnpm
uses: pnpm/action-setup@v4

- name: Setup Go for Remote helper
uses: actions/setup-go@v5
with:
go-version-file: tools/remote-network/go.mod
cache-dependency-path: tools/remote-network/go.sum

- name: Setup Node
uses: actions/setup-node@v4
with:
Expand All @@ -489,7 +473,7 @@ jobs:

# 同 windows:先取 nt_helper 原生产物,再开始打包。
- name: Fetch nt_helper native artifacts
run: node scripts/fetch-native.mjs --require-fresh --verify
run: node scripts/fetch-native.mjs --require-fresh --require-authorization --verify

# 同上:装完依赖后校验 Node 架构,并确认 arm64 binding 真的进包。
- name: Verify Node architecture
Expand All @@ -505,16 +489,6 @@ jobs:
- name: Build clone-bot runtime
run: pnpm run build:bot

# Rust 守护进程二进制 → resources/daemon/<platform>-<arch>/,
# electron-builder 随 extraResources 打进安装包。
# runner 镜像预装 Rust 不可靠(windows 上就没有 cargo),显式装一次;
# 缺工具链时 build:daemon 会直接失败退出。
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable

- name: Build daemon binary
run: pnpm run build:daemon

- name: Build renderer + main
run: pnpm --filter @weq/desktop exec electron-vite build

Expand Down Expand Up @@ -646,7 +620,7 @@ jobs:
# 浏览器版同样带 native/ 与 resources/(含装扮资源),所以也要取一份;
# 每个 matrix runner 取的正是它自己平台那一份。
- name: Fetch nt_helper native artifacts
run: node scripts/fetch-native.mjs --require-fresh --verify
run: node scripts/fetch-native.mjs --require-fresh --no-authorization --verify

# 与桌面版各平台 job 同款校验:避免 Rosetta / 架构错配导致打包出
# 「arm64 壳 + x64 binding」的坏包。
Expand All @@ -662,14 +636,6 @@ jobs:
run: node scripts/set-version.mjs ${{ github.ref_name }}


# 浏览器版用户自备 Node,守护进程补上二进制:本 runner 只构建并打进
# 当前平台那一份(build-server / pack 会按 process.platform/arch 认定)。
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable

- name: Build daemon binary
run: pnpm run build:daemon

# 含 check 守卫:确认没有 Electron 代码泄漏进 web 构建。
- name: Build + guards
run: pnpm --filter @weq/web build
Expand Down Expand Up @@ -811,7 +777,7 @@ jobs:
- Linux arm64: \`weq-web-${TAG#v}-linux-arm64.tar.gz\`
- macOS Intel (x64): \`weq-web-${TAG#v}-darwin-x64.tar.gz\`
- macOS Apple Silicon (arm64): \`weq-web-${TAG#v}-darwin-arm64.tar.gz\`
每个包自带对应平台的 native 原生模块与 Rust 守护进程二进制,
每个包自带对应平台的 native 原生模块,助手资源服务随应用运行,
详见[使用说明](https://github.com/${REPO}/blob/main/apps/web/README.md)

### macOS 首次打开
Expand Down
6 changes: 4 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,7 @@ logs/
# electron-builder
release/

# Rust daemon build output (staged into resources/daemon/ by build:daemon,
# packaged at release time — never committed)
# 旧 daemon 的本机可再生产物仍不入库,也不再随新版本打包。
packages/daemon/target/
resources/daemon/

Expand All @@ -70,6 +69,8 @@ resources/ninebird-runtime/
# `pnpm native:fetch` 取最新(release 流水线在打包前也会取一次)。
# 注意:native/<platform>/<arch>/ninebird/* 仍然入库,是另一条手工同步的链。
/native/*/*/nt_helper.node
/native/*/*/weq-authorization-helper
/native/*/*/weq-authorization-helper.exe
# `pnpm native:fetch` 记「当前装的是哪个 tag」用,天然是机器相关的
/native/.installed.json
/resources/dress/*.dat
Expand Down Expand Up @@ -105,3 +106,4 @@ resources/ninebird-runtime/
models/
tmp_reverse/
.zcode/
/tools/remote-network/build/
Loading
Loading