ReadViewSDK/.planning/milestones/v1.0-ROADMAP.md
2026-05-22 13:52:47 +08:00

140 lines
6.0 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.

# Milestone v1.0: WXRead Native Reflowable Foundation
**Status:** ✅ SHIPPED 2026-05-22
**Phases:** 1-5
**Total Plans:** 13
## Overview
v1.0 completed the direct evolution of the existing reflowable EPUB native path instead of introducing a parallel engine. The milestone established chapter-level CSS preprocessing, richer page metadata, a stronger paginator, reader-shell reintegration, and sample-corpus regression evidence across native reflowable, fixed/interactive WebKit, and TXT flows.
The milestone was archived with accepted audit gaps: the runtime and source evidence indicate the implementation is broadly complete, but requirement bookkeeping in `REQUIREMENTS.md`, `VERIFICATION.md`, and `SUMMARY.md` was not fully reconciled before close-out.
## Phases
### Phase 1: 对齐现状、边界与重构切入点
**Goal**: 把“当前旧引擎是什么、哪些能力必须保留、哪些路径绝对不能动”说清楚,形成直接重构旧引擎的实施基线。
**Depends on**: Nothing (first phase)
**Plans**: 2 plans
Plans:
- [x] 01-01审计当前 `.textReflowable` 路径(`RDEPUBDTCoreTextRenderer` / `RDEPUBTextBookBuilder` / `RDEPUBTextPaginationSupport` / `RDEPUBTextContentView`
- [x] 01-02结合 `Doc/WXRead/analysis/*` 提炼旧引擎可直接演进的切入点与必须保留的兼容链路
**Details:**
- 固定了 native `.textReflowable` 的真实调用链和 `WKWebView` 分流边界。
-`RDReaderView` 明确记录为稳定容器,不纳入这轮重构。
- 产出了后续 Phase 2-4 的实施顺序和硬边界。
### Phase 2: 重构 typesetter 与 CSS 分层
**Goal**: 在现有旧引擎基础上引入 WXRead 风格的 CSS 分层与章节级 HTML → attributed string 增强,让 renderer 输入具备更完整的排版语义。
**Depends on**: Phase 1
**Plans**: 3 plans
Plans:
- [x] 02-01设计并实现旧引擎中的 WXRead 风格 stylesheet builder / HTML 预处理增强
- [x] 02-02改造 `RDEPUBDTCoreTextRenderer` 与相邻渲染链路,使其承接新的样式分层与章节上下文
- [x] 02-03验证章节级图片/CSS/基础资源在新渲染输入下可正常解析
**Details:**
- 建立了 `default / replace / dark / epub / user` 五层 CSS 顺序。
- 把 chapter preprocessing、baseURL、linked CSS 内联、资源标准化接入 native renderer。
- 用 demo 样本书验证了 reflowable 章节资源解析。
### Phase 3: 重构属性体系与复杂分页器
**Goal**: 在旧引擎路径中引入页面级 attributed string 元数据与更复杂的分页/页面布局能力,替代当前简单 `pageRanges` 切页模式。
**Depends on**: Phase 2
**Plans**: 3 plans
Plans:
- [x] 03-01定义并实现页面级 attributed string 元数据与自定义属性键
- [x] 03-02在旧引擎基础上重构分页器使其具备接近 `WRCoreTextLayouter / WRCoreTextLayoutFrame` 的核心能力
- [x] 03-03验证复杂块元素、图片与分页边界控制在新分页器下可工作
**Details:**
- 引入了页面元数据、attachment/block break reasons、layout frame 语义。
- 保持 `pageStartOffset`、`pageEndOffset`、`fragmentOffsets`、`RDEPUBTextOffsetRangeInfo` 兼容不变。
- 在真实 EPUB 上输出分页诊断,证明新分页语义已生效。
### Phase 4: 接回现有 reader 能力链路
**Goal**: 让新内核在不新增并行原生引擎、且不修改当前翻页代码的前提下,继续服务现有 reader UI、阅读位置、高亮、搜索与主题切换能力。
**Depends on**: Phase 3
**Plans**: 3 plans
Plans:
- [x] 04-01将新内核接回 `RDEPUBTextBookBuilder` / `RDEPUBTextContentView` / `RDEPUBReaderController`,不修改 `RDReaderView`
- [x] 04-02修复并验证阅读位置映射、高亮、搜索等兼容能力
- [x] 04-03验证字体、行高、主题切换后的重新分页与状态恢复
**Details:**
- native text backend 被接回现有 reader shell`RDReaderView` 保持不变。
- 位置恢复、高亮、搜索、TOC、重分页行为围绕 absolute offset 契约继续工作。
- demo 输出恢复诊断,证明 semantic location 在主题/字号变化后仍可恢复。
### Phase 5: 回归验证与稳定性收敛
**Goal**: 围绕样本书和主流程做回归,收敛分页正确性、位置映射稳定性与关键阅读交互问题。
**Depends on**: Phase 4
**Plans**: 2 plans
Plans:
- [x] 05-01构建样本书验证矩阵与诊断手段日志/断言/复现清单)
- [x] 05-02收敛分页、位置映射、图片/块元素分页与主题切换后的稳定性问题
**Details:**
- demo 启动摘要扩展为 5 本样本书的矩阵验证。
- 覆盖 native reflowable、fixed/interactive WebKit、TXT 三条主路径。
- 运行时证据确认 `样本验证5/5 通过`,并保留分页/恢复诊断。
---
## Milestone Summary
**Decimal Phases:**
- None
**Key Decisions:**
- 选择直接演进现有 `.textReflowable` 原生引擎,而不是引入并行原生引擎。
- Fixed Layout 与交互式 EPUB 继续保留 `WKWebView` 路径。
- `RDReaderView` 作为稳定分页容器不纳入本轮改造范围。
- 兼容链路继续围绕 offset-based location/highlight/search/restore 语义维持。
**Issues Resolved:**
- chapter-level CSS 分层、preprocessing 和资源标准化接入 native renderer。
- 分页器从纯 visible-range slicing 升级为带 block/attachment-aware 语义的 layouter path。
- native reader shell 与位置恢复、高亮、搜索、主题/字号切换重新打通。
- demo 建立了覆盖 reflowable / WebKit / TXT 的统一样本矩阵。
**Issues Deferred:**
- requirement bookkeeping 未在 milestone close 前完全回写,详见 `v1.0-MILESTONE-AUDIT.md`
- 尚无完整 UI 自动化覆盖所有样本和关键交互。
- Nyquist validation 文档仍存在 draft / partial 状态。
**Technical Debt Incurred:**
- `REQUIREMENTS.md`、`VERIFICATION.md`、`SUMMARY.md` 的 requirement evidence chain 需要后续补齐。
- simulator 运行仍会出现既有 `.SFUI-Semibold` CoreText substitution note。
---
_For current project status, see `.planning/ROADMAP.md`_