Files
NixMsg/docs/RELEASE.md
T
2026-09-30 09:29:31 +08:00

137 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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](./PRD.md)、[DEVELOPMENT.md](./DEVELOPMENT.md)、[TASKS.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](./OPS.md) 运维、Docker Compose / Dockerfile 定稿(镜像未推送)
## 2. F01–F23 验收结果
来源:[test/accept/ACCEPTANCE.md](../test/accept/ACCEPTANCE.md)(生成时间 2026-09-30T00:26:12Z)。对照表汇总:通过 14,失败 0,未测 9。
### 通过
| 编号 | 一句话 |
|---|---|
| F01 | 批量开通整批校验、停用、删除群主转让、删除后同编号重开不串数据 |
| F02 | 新设备登录后旧设备自动退出、换 IP 用令牌重连、两种密码锁定、重置密码后被踢、服务器故障不误报密码错误 |
| F05 | 崩溃不丢已提交消息,消息号去重和冲突,密码门生效,配额生效 |
| F06 | 群成员收到同一份,入群前不补,发送者不收到自己的 |
| F08 | 弱网最终送达且应用层不重复,重启后续传 |
| F09 | 保留时间从发送时刻起算,超时过期 |
| F12 | 延迟窗口内撤回对方收不到 |
| F13 | 未推送必撤成功;群部分确认得到部分撤回 |
| F16 | 群主权限、退出后不再收到、解散后同编号新群不收旧消息 |
| F17 | 后台管端、管注册、管群、查记录,响应里没有正文;API 令牌可用且不能越权 |
| F20 | 裸 MQTT 能登录、收、确认、发 |
| F21 | 默认一个端口提供后台、WebSocket、TCP、注册;后台可分到单独端口 |
| F22 | 初始化后单文件或 Docker 启动、备份恢复、升级迁移、证书自动重载、指标可抓取 |
| F23 | 注册开关、安全码校验、换码不影响已注册、输错锁定 |
### 未测
| 编号 | 一句话 | 原因(摘自对照表) |
|---|---|---|
| F03 | 断开后状态及时变离线,全表可列出 | directory.list / 断开后离线状态未在本波单独断言 |
| F04 | 只通知订阅了的端 | presence.watch 订阅通知未覆盖 |
| F07 | 256 KiB 通过,超出拒绝,接收上限生效 | 256 KiB 边界与接收上限未覆盖 |
| F10 | 短断线送到,长断线丢弃,服务器重启后宽限内重连送到 | 抖动宽限长短断线未单独拨钟 |
| F11 | 发送方离线后到点仍发送 | 发送方离线后定时到点发送未覆盖 |
| F14 | 回执能补送给当时离线的发送方 | 回执补送未覆盖 |
| F15 | 输一次记住、改密失效、回复免密、进群仍要密码、防多账号轮流猜 | 对话密码授权链路未覆盖 |
| F18 | 送达后正文消失;记录天数 0 时连记录消失;防重仍在 | 正文删除与记录天数 0 未覆盖 |
| F19 | 四种 SDK 通过同一清单 | 对照表仍标未测(属 S1/S2);本轮交付回归已另跑四套 SDK 测试,见第 4 节 |
### 失败
无。
## 3. 偏差(供负责人回来审阅)
完整正文见 [DEVIATIONS.md](./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
## 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`) |
## 5. 构建与启动
请直接按仓库文档操作,此处不重复步骤:
- 构建、交叉编译、Docker 本地构建与启动示例:[README.md](../README.md)
- 配置项、备份、升级、证书、时钟、指标:[docs/OPS.md](./OPS.md)
- 配置样例:`deploy/config.example.yaml`、`deploy/config.docker.yaml`
常用入口:`task check` / `task build`,然后 `admin init` + `serve`(见 README)。
## 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](./TASKS.md) 第 3 节与 Z3、以及 README / OPS 中的发布命令补做。
## 7. 标签
在本交付说明提交(含 `docs/RELEASE.md`)上打附注标签 `v0.1.0` 与 `sdk/go/v0.1.0` 并推送到 `origin`(若远端已存在同名标签则不覆盖,见当时操作记录)。