90 lines
5.3 KiB
Markdown
90 lines
5.3 KiB
Markdown
---
|
||
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>
|