91 lines
5.1 KiB
Markdown
91 lines
5.1 KiB
Markdown
---
|
|
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`
|
|
---
|
|
|
|
<objective>
|
|
验证并收敛字体、行高、主题和 viewport 变化导致的重新分页与状态恢复,让 reader 在 Phase 4 完成后可以稳定承接 repagination。
|
|
|
|
Purpose: 证明新 native backend 在真实 reader 交互下能够重新分页而不丢失位置、搜索和高亮上下文。
|
|
Output: re-pagination/state-restore fixes, plus demo-visible validation hooks or diagnostics where needed.
|
|
</objective>
|
|
|
|
<context>
|
|
@.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
|
|
</context>
|
|
|
|
<tasks>
|
|
|
|
<task type="auto">
|
|
<name>Task 1: 收敛 repagination 触发器与状态恢复逻辑</name>
|
|
<files>Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift, Sources/RDReaderView/EPUBUI/RDEPUBReaderConfiguration.swift, Sources/RDReaderView/RDURLReaderController.swift</files>
|
|
<read_first>Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift, Sources/RDReaderView/EPUBUI/RDEPUBReaderConfiguration.swift, Sources/RDReaderView/RDURLReaderController.swift</read_first>
|
|
<action>围绕 `configuration.didSet`、`requiresRepagination`、`refreshVisibleContentPreservingLocation`、`rebuildExternalTextBook`、`handleViewportChangeIfNeeded` 和 TXT/native 入口收敛 repagination 行为,使 reader 在设置变化与 viewport 变化后恢复到语义位置,而不是错误页或空状态。</action>
|
|
<acceptance_criteria>
|
|
- 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
|
|
</acceptance_criteria>
|
|
<verify>rg -n "requiresRepagination|refreshVisibleContentPreservingLocation|rebuildExternalTextBook|handleViewportChangeIfNeeded|configuration" Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift Sources/RDReaderView/EPUBUI/RDEPUBReaderConfiguration.swift Sources/RDReaderView/RDURLReaderController.swift</verify>
|
|
<done>repagination triggers are stable and state-preserving.</done>
|
|
</task>
|
|
|
|
<task type="auto">
|
|
<name>Task 2: 在 demo 中验证 reader-level repagination 与状态恢复</name>
|
|
<files>ReadViewDemo/ReadViewDemo/ViewController.swift, Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift</files>
|
|
<read_first>ReadViewDemo/ReadViewDemo/ViewController.swift, Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift, ReadViewDemo/ReadViewDemo/book/</read_first>
|
|
<action>用现有 demo 入口补充最小但可观察的 reader-level 验证路径或日志,证明 Phase 4 关注的 repagination / location restore / search-highlight continuity 可以被检查。不要新建并行 demo shell。</action>
|
|
<acceptance_criteria>
|
|
- 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
|
|
</acceptance_criteria>
|
|
<verify>test -d ReadViewDemo/ReadViewDemo/book && rg -n "restore|repagination|search|highlight|location|theme|font" ReadViewDemo/ReadViewDemo Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift</verify>
|
|
<done>Phase 4 finishes with a real runtime path to prove state-preserving repagination.</done>
|
|
</task>
|
|
|
|
</tasks>
|
|
|
|
<verification>
|
|
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`
|
|
</verification>
|
|
|
|
<output>
|
|
After completion, create `.planning/phases/04-reader-capabilities/04-03-SUMMARY.md`
|
|
</output>
|