Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions HANDOFF.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
- 更新:2026-11-09 / pi(**air 本机**)。阶段:**1.2.0 已发布并上线**(tag `v1.2.0` → `31fdbcd`,站点 `v1.2.0 · 构建 39`,air 与 pro 同包 1.2.0/39)。
- 分支:`dev` = `main` = `31fdbcd`(1.2.0 候选提交);开放 PR **0 个**。
- 版本:`Cargo.toml` = **1.2.0**、`packaging/build-number` = **39**;最新 tag **`v1.2.0`**(Release 已发布)。
- 最近验证:`make verify` PASS(232 产物零网络符号)、`make macos-offline-tests` **62 文件 / 328 例 PASS**、`modules/keymap/tests/test-key-roots.py` **8 例 PASS**。
- 最近验证:`make verify` PASS(325 产物零网络符号)、`make macos-offline-tests` **62 文件 / 328 例 PASS**、`modules/keymap/tests/test-key-roots.py` **8 例 PASS**。
- 1.2.1 身份:提交 `168115e`、ZIP `102f4928…`、DMG `a6f4bdbd…`、更新程序 `b04049e3…`、appcast `40`、包内执行 `3eeeb0aa2ae4be0facd0120c854ea822ad1ba749dd3a22611f39a97db6fc32d9`(`docs/releases/1.2.1.md`)。
- 1.2.0 候选身份:提交 `31fdbcd`、ZIP `64eeb90f…`、源码 `3dc6f717…`、宿主执行 `ef25e92ba085ea3f556e12d477fb1b6a6cd08ebbc3b74897fdb7b2d9f6eead64`(`docs/releases/1.2.0.md`)。

## 1. 设备与数据
Expand Down Expand Up @@ -55,7 +56,7 @@

剩余待办已重排到 **`docs/待办与积压.md`**(2026-11-09 版),分四档:

- **P0 · 1.2.1 补丁档**:覆盖安装丢输入源(安装器交互化)、旧宿主跑备份 inode(安装器主动重启确认)、练习页无障碍走查、Terminal ⌥L 冲突写入用户文档、回归编译超时治理。
- **P0 · 1.2.1 已完成并发布**:安装器交互(`LAMPYRIS_RESTART_HOST`/`LAMPYRIS_OPEN_SETTINGS`/`LAMPYRIS_FORCE_INSTALL`)、旧宿主检测、练习页 VoiceOver、Terminal ⌥L 文档、回归并发与超时治理;附带零引用代码/资源清理与 CI 去 `install-action`。剩余交接项见 `docs/待办与积压.md`。
- **P1 · 1.3.0 教学/数据**:三级简码专项(需引擎 + ADR)、corpus M2-1 调研、字根字形身份库、真笔顺/结构标注、拆字说明扩充、多方案码表。
- **P2 · 有证据才做**:排序观察期、位置记忆、冷首键、拼音后端评估、n-gram(都写了触发条件)。
- **明确不做**:云/账号/广告/统计/剪贴板/语音;平台扩展单独立项,不与 macOS 同批。
Expand All @@ -66,11 +67,12 @@

| 步骤 | 内容 | 授权 |
|---|---|---|
| 1 | ~~打 SSH 签名 tag `v1.2.0` → Release~~ | ✅ 2026-11-09(tag 验签通过;Release run `42558833917` success) |
| 1 | ~~打 SSH 签名 tag `v1.2.1` → Release~~ | ✅ 2026-11-09(tag 验签通过;Release run `42583547089` success) |
| 2 | ~~回读 Release 资产并回填~~ | ✅ ZIP `64eeb90f…` 与候选逐字节一致、DMG 公证、appcast `39`、更新程序 1.2.0 已公证 |
| 3 | ~~dispatch Pages → 回读站点~~ | ✅ `v1.2.0 · 构建 39`(run `42560197671`) |
| 4 | ~~pro 升级到 1.2.0~~ | ✅ payload `64eeb90f…` 验签通过、执行 `ef25e92b…`、config `b8c7a351…` 与 962 行词库未变;旧包备份在 `updates/upgrade-20261109T121300-9c1061c4/`(宿主已重启) |
| 5 | 后续小版本:安装器交互(lsregister + 提示用户重加输入源)、三级简码数据(需 ADR)、练习深色/无障碍走查 | 排 1.2.1 |
| 5 | pro 升级到 1.2.1 | **用户自行执行**(`packaging/macos/upgrade.py`) |
| 6 | 下一站 1.3.0:三级简码(需引擎 + ADR)、corpus M2-1 调研 | 见 `docs/待办与积压.md` P1 |

## 4.1 换到 air 后怎么开工

Expand Down Expand Up @@ -112,6 +114,7 @@ make macos-offline-tests

## 9. 会话日志(最近)

- 2026-11-09 / pi(air):**1.2.1 发布完成(报告 263)**。P0 三项(安装器旧宿主/输入源、练习页 VoiceOver、回归并发)、零引用代码与资源清理、文档状态标注一并入 `168115e`;期间 `main` 两次 CI 红灯查为 `install-action` 下载 `cargo-deny` 资产 504,改自建 `scripts/install-cargo-deny.sh`(重试 + crates.io 回退)。`git tag -s v1.2.1` → Release `42583547089` success,ZIP `102f4928…` 与验收包逐字节一致、DMG `a6f4bdbd…` 公证、更新程序 1.2.1、appcast `40`;air 用发布包覆盖安装(执行 `3eeeb0aa…`,安装器回读「已注册到输入源」,无需重加输入源);Pages `v1.2.1 · 构建 40`。**pro 由用户自行升级。**
- 2026-11-09 / pi(air):**1.2.0 发布完成**。`git tag -s v1.2.0 31fdbcd`(SSH 验签通过)→ 首次 Release 失败于"checkout 把 tag 建成轻量引用",补 `git fetch --force` 后 `workflow_dispatch` 重跑成功。回读:ZIP `64eeb90f…`(与候选逐字节一致)、源码 `3dc6f717…`、DMG `ffa1a65c…`(staple+spctl Notarized)、更新程序 `332d98b1…`(1.2.0 已公证)、appcast `sparkle:version=39`;包内执行 `ef25e92b…` = 已装机版本。随后完成 Pages 部署(站点回读 `v1.2.0 · 构建 39`)与 pro 升级(1.1.0/38 → 1.2.0/39,验签通过、config 与 962 行词库未变、旧包已备份、宿主重启)。**1.2.0 发布闭环完成。**
- 2026-11-09 / pi(air):**1.2.0 候选通过验收 + 发版材料**。候选 `31fdbcd`(执行 `ef25e92b…`)全绿(`make verify` 232 产物零网络、离线 62 文件 / 328 例、CI 四项);用户确认练习页四题型/四位输入格/键位点亮与位次/口诀/工具栏/亮暗外观均可。写 `docs/releases/1.2.0.md`(候选身份、行为变更=二级简码 598 条、学习区与练习、键位图与口诀、工程项、已知限制),ROADMAP/HANDOFF 对账。**等待用户授权 tag/Release/Pages/pro 升级**。
- 2026-11-06 / pi(air):**1.2.0(B4+B5)候选装机(报告 259)**。PR #232 → CI 包(`exec 28e24d26…`)装 air;稳态 p95 **5.80 ms**(三段 5.12–5.97)、冷首键 28.86/33.39、0 外联、memory-gate 私有 **28.5–28.8 MiB**(限 30)PASS。待用户走查:⌥K 练习窗口(A/C 两种题型)、⌥L 学习区默认关、practice.tsv 生成与重置。
Expand Down
12 changes: 8 additions & 4 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
> 2026-11-06 对账过一轮:把已完成但未勾的行补齐(IT-15 / IT-22 / IT-23 / IT-25 / UI04-05 等),
> 仍未勾的只剩「确实没做」或「待裁定」两类。发布流程里的勾选对账见 §发布对账。

## 当前发布列车:1.2.1(补丁候选)← 1.2.0 已发布(2026-11-09)
## 当前发布列车:1.2.1 已发布(2026-11-09)→ 下一站 1.3.0

- [x] 1.1.0 **自用 3 天**(用户 2026-11-06 显式豁免,记录见 `docs/releases/1.1.0.md` §3)
- [x] 1.1.0 **tag → Release**(tag `v1.1.0` → `393318c`;Release run `42225134493` success;ZIP `448d3170…` 与候选逐字节一致、DMG 公证通过、appcast `sparkle:version=38`;报告 248)
Expand All @@ -17,9 +17,13 @@
- [x] **1.2.0 装机反馈修正(报告 255)**:⌥L 在无候选窗时不再漏出 `¬`(组合键前移到客户端判定之前);拆字键位按 `positionMismatch` 截断降级(「我」→ `丿T 扌R ?N`);`trnt` 不自动上屏确认是「同码不唯一」的预期行为(我/特性/选择性)。
- [x] **1.2.0 B4 练习(ADR-313,报告 257)**:`Practice.swift`(只出 full 题、判分、识别码表、进度 TSV 有界原子写)+ `PracticeWindow.swift`(独立窗口,题型 A 看字打码 / C 识别码判断);新增配置 `hotkey.open_practice`(默认 ⌥K)。
- [x] **1.2.0 B5 质量收口(ADR-314,报告 258)**:A4 冷首键实测 ~28 ms(与学习区无关,用户不可感知);A1/A2/A3/A5 全部关闭并写触发条件;内存口径按 ADR-312 双阈值。
- [ ] **1.2.1 补丁候选**(Cargo 1.2.1 / build 40):安装体验(旧宿主重启询问、输入源缺失时打开设置页)、
练习页无障碍(VoiceOver 标签与播报)、回归并发默认 4;另含死代码/死资源清理与文档状态标注。
发布稿 `docs/releases/1.2.1.md`;tag 需授权。
- [x] **1.2.1 补丁候选**(Cargo 1.2.1 / build 40,提交 `168115e`):安装体验、练习页无障碍、回归并发默认 4、
零引用代码/资源清理、文档状态标注、CI 去掉 `install-action`。验收包 run `42582280403`。
- [x] **1.2.1 tag → Release**:`git tag -s v1.2.1`(SSH 验签通过)→ run `42583547089` success;
ZIP `102f4928…` 与验收包逐字节一致、DMG `a6f4bdbd…` 公证通过、更新程序 `b04049e3…` 1.2.1、appcast `40`(报告 263)。
- [x] **1.2.1 站点上线**:Pages run `42584146927` → 回读 `v1.2.1 · 构建 40`。
- [x] **1.2.1 air 装机**:发布包覆盖安装,宿主执行 `3eeeb0aa…` 与包内一致,安装器回读「已注册到输入源」。
- [ ] **1.2.1 pro 升级**:用户自行执行(`packaging/macos/upgrade.py`),不在本列车代为操作。
- [x] **1.2.0 候选**(Cargo 1.2.0 / build 39,候选 `31fdbcd`、执行 `ef25e92b…`):B1 工程收口 → B2 数据地基 → B3 L3 提示 → B4 L4 练习 → B5 质量项 全部完成;
练习页四题型 + 键位图/口诀(ADR-316–323)、学习区改版(ADR-311)、签名 tag/站点盖章等工程项(报告 251–262)。
发版材料见 [`docs/releases/1.2.0.md`](docs/releases/1.2.0.md);tag 待授权。
Expand Down
23 changes: 18 additions & 5 deletions docs/releases/1.2.1.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# 1.2.1(build 40)

> **状态:候选开发中(2026-11-09)**——P0 补丁档:安装体验与练习页无障碍;不改候选顺序、不改引擎行为。
> 发布材料在打 tag 后回填资产与回读结果。
> **状态:已发布(2026-11-09)**——补丁档:安装体验与练习页无障碍;不改候选顺序、不改引擎行为。
> 提交 `168115e`、tag `v1.2.1`(SSH 签名验签通过)、Release run `42583547089` success、站点 `v1.2.1 · 构建 40`。

## 1. 内容(相对 1.2.0)

Expand All @@ -22,10 +22,23 @@
- 删除零引用脚本:`platforms/macos/tests/run-selection-probe.py`。
- `docs/迭代计划-1.2.0.md` → `docs/archive/`;`docs/macos-release-checklist.md` 标注为历史文档。

## 3. 验收计划
## 3. 验收与发布

- `make verify` + 离线回归全绿(无行为改动,回归是主要防线)。
- 装机复验:覆盖安装后宿主是否自动重启、输入源缺失提示是否出现、练习页 VoiceOver 是否读出题面与结果。
| 项 | 值 |
|---|---|
| 提交 / tag | `168115e` / `v1.2.1`(SSH 签名,`SHA256:2v/lIBdSeJiR7zpmohlUjvtTeb3NIFpMQkiGqcFFbgY`) |
| 候选验收包 | `macOS Acceptance Package` run `42582280403` success(ZIP 与 Release 资产逐字节一致) |
| ZIP | `102f4928498e66d74bac585a66080d8f324ea45c68b26234e3e3c8551b0fff78`(7,268,933 B) |
| 源码 | `ec5fd2faefb68eed8873bff558fe9eed5c68355c44425270c164cfd6d9b419d1` |
| DMG | `a6f4bdbd60841cb02d4ff02d55ba566be1a655dbf7a6b647e361c682e1894646`(staple + spctl `Notarized Developer ID`) |
| 更新程序 | `b04049e3666a1e309a0f3dae57417e30d4d1a570d9907880ecd776b1dbf07ae0`(`LampyrisUpdateCheck 1.2.1`,spctl 通过) |
| appcast | `4764659c23edf31c67ab1dec8ed12c3ad676e54b108be00fd0420c5f1593c985`(`sparkle:version="40"`) |
| 包内执行 | `3eeeb0aa2ae4be0facd0120c854ea822ad1ba749dd3a22611f39a97db6fc32d9`(= air 已装机版本) |
| 站点 | Pages run `42584146927` success → 回读 `v1.2.1 · 构建 40` |

**验证**:`make verify` PASS(325 产物零网络符号);离线回归 **62 文件 / 328 例 PASS**;CI `check/fuzz/dco/macos` 全绿。
**装机实测**:用发布包覆盖安装后安装器输出「已注册到输入源」,无需重新添加输入源;宿主执行 SHA 与包内一致。
**pro**:用户自行升级(本版不再代为升级)。

## 4. 已知限制

Expand Down
Loading