Files
NixMsg/docs/RELEASE.md

6.8 KiB
Raw Permalink Blame History

NixMsg 0.1.0 交付说明

项 内容
版本 0.1.0
日期 2026-09-30
功能合入 tip 2ebcb6e1b85a8997c48de2711b013c83fa0440fc(W4 + Q4 已进 main)
发布标签 v0.1.0、sdk/go/v0.1.0(指向含本说明的提交;以 git rev-parse v0.1.0 为准)
对应 PRD.md、DEVELOPMENT.md、TASKS.md

1. 已完成能力

  • 服务端:端登录与会话令牌、在线目录、单聊/群发、离线保留、延迟/定时/撤回/回执、自助注册、管理 API、Prometheus /metrics、SQLite 存储、单端口多协议(HTTP / WebSocket MQTT / TCP MQTT)
  • 管理后台网页:接真实 /api/admin,Playwright 主路径 e2e
  • SDK:Go、JS/TS、Python、Java/Android(源码与接入清单测试在仓库内;包未发布,见第 5 节)
  • 部署文档:README 构建与启动、OPS.md 运维、Docker Compose / Dockerfile 定稿(镜像未推送)

2. F01–F23 验收结果

来源:test/accept/ACCEPTANCE.md(T-02 按子项重写,见 issue #63)。对照表汇总:通过 19,部分通过 4,失败 0,未测 0。整项「通过」要求该行 PRD 一句话里的子项都有测试证据;不得把部分覆盖标成通过。

通过

编号 一句话
F01 批量开通整批校验、停用、删除群主转让、删除后同编号重开不串数据
F02 新设备登录后旧设备自动退出、换 IP 用令牌重连、两种密码锁定、重置密码后被踢、服务器故障不误报密码错误
F04 只通知订阅了的端
F05 崩溃不丢已提交消息,消息号去重和冲突,密码门生效,配额生效
F06 群成员收到同一份,入群前不补,发送者不收到自己的
F07 256 KiB 通过,超出拒绝,接收上限生效
F09 保留时间从发送时刻起算,超时过期
F10 短断线送到,长断线丢弃,服务器重启后宽限内重连送到
F11 发送方离线后到点仍发送
F12 延迟窗口内撤回对方收不到
F13 未推送必撤成功;群部分确认得到部分撤回
F14 回执能补送给当时离线的发送方
F15 输一次记住、改密失效、回复免密、进群仍要密码、防多账号轮流猜
F16 群主权限、退出后不再收到、解散后同编号新群不收旧消息
F17 后台管端、管注册、管群、查记录,响应里没有正文;API 令牌可用且不能越权
F18 送达后正文消失;记录天数 0 时连记录消失;防重仍在
F19 四种 SDK 通过同一清单(仓库内清单测试,本波未重跑全量)
F20 裸 MQTT WebSocket 能登录、收、确认、发
F23 注册开关、安全码校验、换码不影响已注册、输错锁定

部分通过

编号 已覆盖 仍未测
F03 断开后变离线、目录可列出 1000 端全表 1s、真拔网线心跳超时
F08 重启续传、应用层同号去重、toxiproxy 弱网 Linux netem 20% 丢包
F21 单端口 HTTP/WS/注册、后台分离端口 裸 TCP MQTT 登录收发
F22 init/健康检查、备份、迁移前备份、证书重载、/metrics Docker 全量冒烟

压测 1000 连接保持 10 分钟、每秒 200 条仍未跑(见 OPS 第 9 节)。

失败

无。

3. 偏差(供负责人回来审阅)

完整正文见 DEVIATIONS.md。以下只列小节标题,不抄全文:

  • T0.1 2026-09-30
  • L-WIRE 2026-09-30
  • L-UPLINK 2026-09-30
  • T0.2 2026-09-30
  • T0.3 2026-09-30
  • T0.5 2026-09-30
  • T0.4 2026-09-30
  • P1 2026-09-30
  • P2 2026-09-30
  • P3 2026-09-30
  • P4 2026-09-30
  • N1 / N2 2026-09-30
  • N3 2026-09-30
  • M1 2026-09-30
  • M2 / M3 / M4 2026-09-30
  • I1 2026-09-30
  • I2 / I3 / I4 2026-09-30
  • I5 2026-09-30
  • A1 2026-09-30
  • A2 2026-09-30
  • A3 2026-09-30
  • 后台网页 W(W1–W3 假数据与分页等条目)
  • W4 2026-09-30
  • S1.1 传输层可注入假实现(Go / JS)
  • S1.2 Go autopaho OnConnectionUp 内握手改异步
  • S1.3 重连退避与「稳定在线 60s」状态机自管
  • S1.4 Go 模块许可证标注
  • S1.5 JS 回调命名与文档概念名
  • S1.6 任务 1–3 当时未做范围(已被 S1.7 取代)
  • S1.7 2026-09-30 任务 4–5 接入清单与打包文档
  • S2-PY/JAVA 1–3 2026-09-30
  • S2-PY/JAVA 4–5 2026-09-30
  • Q1 / Q4 骨架 2026-09-30
  • Q2 第一部分(已合并功能验收)2026-09-30
  • Q2 补齐 + Q3(本机 Windows)2026-09-30
  • Q4 定稿 + Q5 文档 2026-09-30
  • Q accept-rest 补测 2026-09-30

4. 本轮验证

合并 feat/w4-e2e、feat/q-release-docs 后,在 main(功能 tip 2ebcb6e,含本说明的发布提交)执行:

项 结果
task check 通过
go test ./test/... 通过(accept / chaos / harness / load / report)
task w:e2e(W4 合并后) 通过(1 passed)
sdk/go:go test ./... 通过
sdk/js:npm test 通过(23 passed)
sdk/python:venv + pytest 通过(22 passed);测完已删本地 .venv
sdk/java:mvn test 通过(scoop maven 3.9.16;测完已删 target)

其后在 feat/accept-rest 补齐短时间验收并更新对照表:

项 结果
go test ./test/accept/ -count=1(含 F03/F04/F07/F10/F11/F14/F15/F18,F19 引用既有 SDK 清单) 通过(约 24–27s)
写入 ACCEPTANCE.md / q2_results.json 当时写成通过 23;已被 T-02(#63)按子项更正为通过 19 / 部分通过 4

跳过:1000 连接 10 分钟浸泡、Linux netem 20% 丢包、F03 的 1000 端全表 1s 与真拔网线心跳超时。

5. 构建与启动

请直接按仓库文档操作,此处不重复步骤:

  • 构建、交叉编译、Docker 本地构建与启动示例:README.md
  • 配置项、备份、升级、证书、时钟、指标:docs/OPS.md
  • 配置样例:deploy/config.example.yaml、deploy/config.docker.yaml

常用入口:task check / task sdk:check / task build,然后 admin init + serve(见 README)。发布前须执行 task sdk:check。

6. 未发布 SDK 包与镜像的原因

按本次总控收尾要求:不创建 Gitea package 令牌,因此:

  • 未 npm / pip / Maven 发布到 Gitea 包仓库(@nixevol/nixmsg、nixmsg、asia.asio.nixmsg:nixmsg-sdk)
  • 未 docker push(含 git.asio.asia/nixevol/nixmsg 的版本标签与 latest)
  • 未 执行多架构 buildx 正式推送

有 package 读写令牌且负责人授权后,再按 TASKS.md 第 3 节与 Z3、以及 README / OPS 中的发布命令补做。

7. 标签

在本交付说明提交(含 docs/RELEASE.md)上打附注标签 v0.1.0 与 sdk/go/v0.1.0 并推送到 origin(若远端已存在同名标签则不覆盖,见当时操作记录)。