5.1 KiB
5.1 KiB
phase: 04-reader-capabilities
plan: 03
type: execute
wave: 3
depends_on:
- "04-02"
files_modified:
- Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift
- Sources/RDReaderView/EPUBUI/RDEPUBReaderConfiguration.swift
- Sources/RDReaderView/RDURLReaderController.swift
- ReadViewDemo/ReadViewDemo/ViewController.swift
autonomous: true
requirements:
- COMP-04
user_setup: []
must_haves:
truths:
- repagination after font, line-height, theme, or viewport changes restores semantic reading state.
- the demo app remains the primary runtime verification entry point.
-
RDReaderView does not need modification to validate these flows.
artifacts:
- .planning/phases/04-reader-capabilities/04-03-SUMMARY.md
key_links:
- RDEPUBReaderController.configuration.didSet
- RDEPUBReaderController.handleViewportChangeIfNeeded
- RDEPUBReaderController.rebuildExternalTextBook
验证并收敛字体、行高、主题和 viewport 变化导致的重新分页与状态恢复,让 reader 在 Phase 4 完成后可以稳定承接 repagination。
Purpose: 证明新 native backend 在真实 reader 交互下能够重新分页而不丢失位置、搜索和高亮上下文。 Output: re-pagination/state-restore fixes, plus demo-visible validation hooks or diagnostics where needed.
@.planning/ROADMAP.md @.planning/STATE.md @.planning/phases/04-reader-capabilities/04-RESEARCH.md @.planning/phases/04-reader-capabilities/04-PATTERNS.md @.planning/phases/03-page-metadata-pagination/03-VERIFICATION.md @Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift @Sources/RDReaderView/EPUBUI/RDEPUBReaderConfiguration.swift @Sources/RDReaderView/RDURLReaderController.swift @ReadViewDemo/ReadViewDemo/ViewController.swift Task 1: 收敛 repagination 触发器与状态恢复逻辑 Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift, Sources/RDReaderView/EPUBUI/RDEPUBReaderConfiguration.swift, Sources/RDReaderView/RDURLReaderController.swift Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift, Sources/RDReaderView/EPUBUI/RDEPUBReaderConfiguration.swift, Sources/RDReaderView/RDURLReaderController.swift 围绕 `configuration.didSet`、`requiresRepagination`、`refreshVisibleContentPreservingLocation`、`rebuildExternalTextBook`、`handleViewportChangeIfNeeded` 和 TXT/native 入口收敛 repagination 行为,使 reader 在设置变化与 viewport 变化后恢复到语义位置,而不是错误页或空状态。 - font size / line height changes trigger repagination through semantic location restore - theme changes refresh visible content without dropping current reader state - viewport changes do not require `RDReaderView` changes to preserve location rg -n "requiresRepagination|refreshVisibleContentPreservingLocation|rebuildExternalTextBook|handleViewportChangeIfNeeded|configuration" Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift Sources/RDReaderView/EPUBUI/RDEPUBReaderConfiguration.swift Sources/RDReaderView/RDURLReaderController.swift repagination triggers are stable and state-preserving. Task 2: 在 demo 中验证 reader-level repagination 与状态恢复 ReadViewDemo/ReadViewDemo/ViewController.swift, Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift ReadViewDemo/ReadViewDemo/ViewController.swift, Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift, ReadViewDemo/ReadViewDemo/book/ 用现有 demo 入口补充最小但可观察的 reader-level 验证路径或日志,证明 Phase 4 关注的 repagination / location restore / search-highlight continuity 可以被检查。不要新建并行 demo shell。 - demo remains the validation entry point - runtime checks can confirm at least part of the repagination/state-restore behavior - sample corpus under `ReadViewDemo/ReadViewDemo/book/` remains the verification source test -d ReadViewDemo/ReadViewDemo/book && rg -n "restore|repagination|search|highlight|location|theme|font" ReadViewDemo/ReadViewDemo Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift Phase 4 finishes with a real runtime path to prove state-preserving repagination. Before declaring plan complete: - [ ] `rg -n "requiresRepagination|refreshVisibleContentPreservingLocation|rebuildExternalTextBook|handleViewportChangeIfNeeded|configuration" Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift Sources/RDReaderView/EPUBUI/RDEPUBReaderConfiguration.swift Sources/RDReaderView/RDURLReaderController.swift` - [ ] `test -d ReadViewDemo/ReadViewDemo/book` - [ ] `rg -n "restore|repagination|search|highlight|location|theme|font" ReadViewDemo/ReadViewDemo Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift` After completion, create `.planning/phases/04-reader-capabilities/04-03-SUMMARY.md`