shenlei
0e7c0577e3
feat: add in-reader search and restructure documentation
...
- Add RDEPUBReaderSearchBarView with animated show/hide, keyword
navigation, and match counting integrated into the reader controller
- Restructure docs: replace scattered design docs with consolidated
BUSINESS_LOGIC.md and UML_CLASS_DIAGRAMS.md; update ARCHITECTURE.md
- Add SearchTests and FanrenParseTimeTest; enhance LargeBookOnDemandTests
- Add scripts/run_ui_regression.sh and summarize_ui_results.py for
automated UI test execution and reporting
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-05 17:34:50 +08:00
shen
d20196ee34
feat: configurable chapter window & parallel metadata parsing with benchmark
...
1. Configurable chapter window size (onDemandChapterWindowSize: 3-15)
- Parameterized window radius in RDEPUBChapterRuntimeStore
- Updated RDEPUBChapterWindowCoordinator to use configurable radius
- RDEPUBChapterWindowSnapshot.from() accepts chapter array instead of fixed prev/next
- Even numbers round up to odd (4→5), min 3, max 15
2. Configurable metadata parsing concurrency (metadataParsingConcurrency)
- Default equals CPU core count
- Parallel execution via OperationQueue in paginateMetadataOnly
- Each worker creates independent builder instance
- NSLock protects result aggregation
3. Per-chapter and total wall-clock timing instrumentation
- Separated render vs I/O timing per chapter
- Summary log with wallClockMs, renderTotalMs, writeTotalMs, avgRenderMs
- Timing stored in RDEPUBReaderContext for test access
4. UI automation test infrastructure
- Added --demo-window-size, --demo-concurrency, --demo-clear-cache launch args
- DemoReaderState exposes windowSize, parseMs, parseConcurrency
- ConfigurableWindowTests: 5 test cases for window size 3/5/15
- ConcurrentParsingTests: 4 test cases for concurrency 2/4
- MetadataParseBenchmarkTests: serial vs parallel benchmark
5. Bug fixes
- Fixed page snap-back during background parsing (isUserInteracting check)
- Reduced BookPageMap refresh frequency from 16 to 32 chapters
- Moved waitForReadingInteractionToSettle outside operation loop
6. Design doc: dual-layer PageMap (estimated + precise mixed)
2026-06-03 23:38:11 +08:00