ReadViewSDK/.planning/phases/04-reader-capabilities/04-01-PLAN.md

90 lines
5.3 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.

---
phase: 04-reader-capabilities
plan: 01
type: execute
wave: 1
depends_on: []
files_modified:
- Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift
- Sources/RDReaderView/EPUBTextRendering/RDEPUBTextBookBuilder.swift
- Sources/RDReaderView/EPUBUI/RDEPUBTextContentView.swift
- Sources/RDReaderView/RDURLReaderController.swift
autonomous: true
requirements:
- COMP-01
user_setup: []
must_haves:
truths:
- native text pages remain rendered through the existing `RDEPUBReaderController` + `RDReaderView` shell.
- no new page-turn container or parallel native reader shell is introduced.
- `RDEPUBTextBook` remains the native reflowable backend contract.
artifacts:
- .planning/phases/04-reader-capabilities/04-01-SUMMARY.md
key_links:
- `RDEPUBReaderController.paginatePublication`
- `RDEPUBReaderController.pageContentView`
- `RDEPUBReaderController.restoreReadingLocation`
---
<objective>
把 Phase 3 的 native text backend 稳定接回现有 reader 主流程,让 `RDEPUBReaderController``RDEPUBTextBook` 路径的分页、展示、恢复行为更完整,但不修改 `RDReaderView`
Purpose: 让 reader 主流程明确把 native reflowable path 当成正式 backend而不是零散的特殊分支。
Output: reader-controller/native-text integration cleanup with clearer state handoff and no changes to the page-turn container.
</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-RESEARCH.md
@.planning/phases/03-page-metadata-pagination/03-VERIFICATION.md
@Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift
@Sources/RDReaderView/EPUBTextRendering/RDEPUBTextBookBuilder.swift
@Sources/RDReaderView/EPUBUI/RDEPUBTextContentView.swift
@Sources/RDReaderView/RDURLReaderController.swift
</context>
<tasks>
<task type="auto">
<name>Task 1: 收敛 native text backend 的分页完成与展示入口</name>
<files>Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift, Sources/RDReaderView/EPUBTextRendering/RDEPUBTextBookBuilder.swift</files>
<read_first>Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift, Sources/RDReaderView/EPUBTextRendering/RDEPUBTextBookBuilder.swift, Sources/RDReaderView/EPUBCore/RDEPUBReadingSession.swift</read_first>
<action>整理 `paginatePublication`、`applyTextBook`、`finishPagination`、`currentVisibleLocation` 和 `restoreReadingLocation` 的 native text 行为,让 `RDEPUBTextBook` 路径拥有清晰的完成/恢复入口,必要时补充最小状态桥接,但不要改 `RDReaderView` 的翻页接口,也不要引入新的 reader shell。</action>
<acceptance_criteria>
- `RDEPUBReaderController` remains the single entry point for native text and web reading
- text-book pagination completion and restore logic are explicit and internally coherent
- no code moves page-turn logic into `RDEPUBTextBookBuilder` or `RDEPUBTextContentView`
</acceptance_criteria>
<verify>rg -n "paginatePublication|applyTextBook|finishPagination|restoreReadingLocation|currentVisibleLocation" Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift</verify>
<done>native text pagination is reconnected as a first-class reader backend.</done>
</task>
<task type="auto">
<name>Task 2: 保持 page container 兼容并清理 native text 初始化入口</name>
<files>Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift, Sources/RDReaderView/EPUBUI/RDEPUBTextContentView.swift, Sources/RDReaderView/RDURLReaderController.swift</files>
<read_first>Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift, Sources/RDReaderView/EPUBUI/RDEPUBTextContentView.swift, Sources/RDReaderView/RDURLReaderController.swift</read_first>
<action>确认并收敛 `pageContentView(readerView:pageNum:containerView:)`、TXT 入口和 native content view 配置路径,使 `RDReaderView` 继续只消费 UIView 页面内容而不用理解新的 page metadata。若需要暴露更多 page context优先通过现有 content-view/controller 接口完成。</action>
<acceptance_criteria>
- `RDReaderView` does not gain native metadata-specific branching
- `RDEPUBTextContentView` remains the native page presenter
- TXT/native-text initialization path remains compatible with the same reader shell
</acceptance_criteria>
<verify>rg -n "pageContentView|RDEPUBTextContentView|RDURLReaderController|textBook" Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift Sources/RDReaderView/RDURLReaderController.swift Sources/RDReaderView/EPUBUI/RDEPUBTextContentView.swift</verify>
<done>reader presentation stays container-compatible while native text becomes a stable backend.</done>
</task>
</tasks>
<verification>
Before declaring plan complete:
- [ ] `rg -n "paginatePublication|applyTextBook|finishPagination|restoreReadingLocation|currentVisibleLocation" Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift`
- [ ] `rg -n "pageContentView|RDEPUBTextContentView|RDURLReaderController|textBook" Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift Sources/RDReaderView/RDURLReaderController.swift Sources/RDReaderView/EPUBUI/RDEPUBTextContentView.swift`
</verification>
<output>
After completion, create `.planning/phases/04-reader-capabilities/04-01-SUMMARY.md`
</output>