Files
crosspoint-reader-mod/chat-summaries/2026-03-08_02-00-summary.md
2026-03-08 04:14:56 -04:00

2.3 KiB

Fix Reader Bugs: Covers, Indexing, TOC, Cache Deletion

Date: 2026-03-08 Commit: 022f519 on mod/master-resync

Task Description

Fixed four bugs reported after the upstream sync feature restoration:

  1. Placeholder cover text rendering — only first letter of each word visible
  2. Silent indexing indicator — wrong timing (shown on first page, not during actual indexing) and icon positioned above the status bar
  3. Long-press confirm for TOC — immediately selected the first chapter upon button release
  4. Book cache deletion from home screen — showed "no open books" and required double confirm press

Changes Made

lib/PlaceholderCover/PlaceholderCoverGenerator.cpp

  • Added #include <EpdFontData.h> for fp4::toPixel()
  • Fixed renderGlyph(): glyph->advanceX is 12.4 fixed-point, not pixels — was advancing cursor ~16x too far, causing only the first character of each word to be visible
  • Fixed getCharAdvance(): same fixed-point conversion needed for space width calculation in word wrapping

src/activities/reader/EpubReaderActivity.cpp

  • Removed silentIndexNextChapterIfNeeded() call from loop() (line 385) — this blocked the UI before render, preventing the indicator from ever showing. The backup branch only called it from render(), after the page was drawn.
  • Fixed indexing icon Y position: changed textY - kIndexingIconSize + 2 to textY + 2 to align within the status bar alongside battery/text
  • Passed consumeFirstRelease flag when creating chapter selection activity from long-press path

src/activities/reader/EpubReaderChapterSelectionActivity.h/.cpp

  • Added ignoreNextConfirmRelease member and consumeFirstRelease constructor parameter
  • In loop(), consumes the first Confirm release when opened via long-press, preventing immediate selection of the first TOC item

src/activities/home/HomeActivity.cpp

  • In openManageMenu() callback: reset ignoreNextConfirmRelease = false to fix double-press bug
  • Replaced recentBooks.clear() with loadRecentBooks() to reload remaining books from persistent store after deletion

Follow-up Items

  • Test all four fixes on device to verify correct behavior
  • Verify placeholder covers render full title/author text at both thumbnail and full-cover sizes