Re-add KOReaderSyncActivity PUSH_ONLY mode (PR #1090): - SyncMode enum with INTERACTIVE/PUSH_ONLY, deferFinish pattern - Push & Sleep menu action in EpubReaderMenuActivity - ActivityManager::requestSleep() for activity-initiated sleep - main.cpp checks isSleepRequested() each loop iteration Wire EndOfBookMenuActivity into EpubReaderActivity: - pendingEndOfBookMenu deferred flag avoids render-lock deadlock - Handles all 6 actions: ARCHIVE, DELETE, TABLE_OF_CONTENTS, BACK_TO_BEGINNING, CLOSE_BOOK, CLOSE_MENU Add book management to reader menu: - ARCHIVE_BOOK, DELETE_BOOK, REINDEX_BOOK actions with handlers Port silent next-chapter pre-indexing: - silentIndexNextChapterIfNeeded() proactively indexes next chapter when user is near end of current one, eliminating load screens Add per-book letterbox fill toggle in reader menu: - LETTERBOX_FILL cycles Default/Dithered/Solid/None - Loads/saves per-book override via BookSettings - bookCachePath constructor param added to EpubReaderMenuActivity Made-with: Cursor
2.8 KiB
2.8 KiB
Missing Mod Features Audit — Implementation
Date: 2026-03-07
Branch: mod/master-resync
Task
Comprehensive audit of mod/master-resync vs mod/backup-pre-sync-2026-03-07 identified 4 mod features lost during the upstream resync. All 4 have been re-implemented.
Changes
1. EndOfBookMenuActivity wired into EpubReaderActivity (HIGH)
Files: EpubReaderActivity.h, EpubReaderActivity.cpp
- Added
pendingEndOfBookMenuandendOfBookMenuOpenedflags - In
render(): when reaching end-of-book, setspendingEndOfBookMenu = true(deferred to avoid render-lock deadlock) - In
loop(): checks flag and launchesEndOfBookMenuActivityviastartActivityForResult - Result handler covers all 6 actions: ARCHIVE (→ goHome), DELETE (→ goHome), TABLE_OF_CONTENTS (→ last chapter), BACK_TO_BEGINNING (→ spine 0), CLOSE_BOOK (→ goHome), CLOSE_MENU (→ stay at end)
- Added
#include "EndOfBookMenuActivity.h"and#include "util/BookManager.h"
2. Book management from reader menu (MEDIUM)
Files: EpubReaderMenuActivity.h, EpubReaderMenuActivity.cpp, EpubReaderActivity.cpp
- Added
ARCHIVE_BOOK,DELETE_BOOK,REINDEX_BOOKtoMenuActionenum - Added corresponding menu items between CLOSE_BOOK and DELETE_CACHE
- Added handlers in
onReaderMenuConfirm: each callsBookManager::archiveBook/deleteBook/reindexBookthenactivityManager.goHome()
3. Silent next-chapter pre-indexing (MEDIUM)
Files: EpubReaderActivity.h, EpubReaderActivity.cpp
- Added
preIndexedNextSpinefield andsilentIndexNextChapterIfNeeded()method - Triggers when user is on second-to-last or last page of a chapter
- Creates section file for
currentSpineIndex + 1in advance - Called after every page turn in
loop() - ~35 lines of self-contained implementation
4. Letterbox fill toggle in reader menu (LOW)
Files: EpubReaderMenuActivity.h, EpubReaderMenuActivity.cpp, EpubReaderActivity.cpp
- Added
LETTERBOX_FILLtoMenuActionenum - Added
bookCachePathconstructor parameter (with default""for backward compat) - Added per-book
pendingLetterboxFill,letterboxFillLabels,letterboxFillToIndex(),indexToLetterboxFill(),saveLetterboxFill() - Cycles Default → Dithered → Solid → None → Default on Confirm
- Renders current value on right edge of menu item
- Loads/saves per-book setting via
BookSettings - Updated call site in
EpubReaderActivityto passepub->getCachePath()
Audit False Positives (confirmed NOT gaps)
- GfxRenderer kerning/ligatures/wrappedText — present on resync
- HttpDownloader auth fallback — present with OPDS settings fallback
- Lyra3CoversTheme — exists on resync
- ActivityWithSubactivity → Activity migration — intentional upstream change
- EndOfBookMenuActivity callbacks → setResult/finish — correctly migrated
Follow-up Items
- None