5.3 KiB
5.3 KiB
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
把 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.
@.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 Task 1: 收敛 native text backend 的分页完成与展示入口 Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift, Sources/RDReaderView/EPUBTextRendering/RDEPUBTextBookBuilder.swift Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift, Sources/RDReaderView/EPUBTextRendering/RDEPUBTextBookBuilder.swift, Sources/RDReaderView/EPUBCore/RDEPUBReadingSession.swift 整理 `paginatePublication`、`applyTextBook`、`finishPagination`、`currentVisibleLocation` 和 `restoreReadingLocation` 的 native text 行为,让 `RDEPUBTextBook` 路径拥有清晰的完成/恢复入口,必要时补充最小状态桥接,但不要改 `RDReaderView` 的翻页接口,也不要引入新的 reader shell。 - `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` rg -n "paginatePublication|applyTextBook|finishPagination|restoreReadingLocation|currentVisibleLocation" Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift native text pagination is reconnected as a first-class reader backend. Task 2: 保持 page container 兼容并清理 native text 初始化入口 Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift, Sources/RDReaderView/EPUBUI/RDEPUBTextContentView.swift, Sources/RDReaderView/RDURLReaderController.swift Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift, Sources/RDReaderView/EPUBUI/RDEPUBTextContentView.swift, Sources/RDReaderView/RDURLReaderController.swift 确认并收敛 `pageContentView(readerView:pageNum:containerView:)`、TXT 入口和 native content view 配置路径,使 `RDReaderView` 继续只消费 UIView 页面内容而不用理解新的 page metadata。若需要暴露更多 page context,优先通过现有 content-view/controller 接口完成。 - `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 rg -n "pageContentView|RDEPUBTextContentView|RDURLReaderController|textBook" Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift Sources/RDReaderView/RDURLReaderController.swift Sources/RDReaderView/EPUBUI/RDEPUBTextContentView.swift reader presentation stays container-compatible while native text becomes a stable backend. 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` After completion, create `.planning/phases/04-reader-capabilities/04-01-SUMMARY.md`