Files
crosspoint-reader-mod/chat-summaries/2026-02-20_15-30-port-upstream-prs.md
cottongin dfbc931c14 mod: Phase 1 - bring forward mod-exclusive files with ActivityManager migration
Brings ~55 mod-exclusive files to the upstream-based mod/master-resync branch:

Activities (migrated to new ActivityManager pattern):
- Clock/Time: SetTimeActivity, SetTimezoneOffsetActivity, NtpSyncActivity
- Dictionary: DictionaryDefinitionActivity, DictionarySuggestionsActivity,
  DictionaryWordSelectActivity, LookedUpWordsActivity
- Bookmark: EpubReaderBookmarkSelectionActivity
- Book management: BookManageMenuActivity, EndOfBookMenuActivity
- OPDS: OpdsServerListActivity, OpdsSettingsActivity
- Utility: DirectoryPickerActivity, NumericStepperActivity

Utilities (unchanged):
- BookManager, BookSettings, BookmarkStore, BootNtpSync
- Dictionary, LookupHistory, TimeSync, OpdsServerStore

Libraries: PlaceholderCover, TableData, ChapterXPathIndexer
Scripts: inject_mod_version, generate_book_icon, preview_placeholder_cover
Docs: KOReader sync XPath mapping

Migration changes:
- ActivityWithSubactivity -> Activity base class
- Callback constructors -> finish()/setResult() pattern
- enterNewActivity() -> startActivityForResult()
- Activity::RenderLock&& -> RenderLock&&

These files won't compile yet - they reference mod settings and I18n
strings that will be added in subsequent phases.

Made-with: Cursor
2026-03-07 15:10:00 -05:00

1.9 KiB

Port Upstream PRs #1038, #1045, #1037, #1019

Task

Manually port 4 open upstream PRs into the mod/sync-upstream-PRs branch, pull in Romanian translations from upstream/master, and create a MERGED.md tracking document.

Changes Made

PR #1038 (partial -- incremental fixes)

  • lib/Epub/Epub/ParsedText.cpp: Added .erase() calls in layoutAndExtractLines to remove consumed words after line extraction (fixes redundant early flush bug). Also fixed wordContinues flag handling in hyphenateWordAtIndex to preserve prefix's attach-to-previous flag.

PR #1045 (direct string changes)

  • Updated STR_FORGET_BUTTON in all 9 translation yaml files to shorter labels.
  • Pulled romanian.yaml from upstream/master (merged upstream PR #987).

PR #1037 (4-file manual port)

  • lib/Utf8/Utf8.h: Added utf8IsCombiningMark() utility function.
  • lib/EpdFont/EpdFont.cpp: Added combining mark positioning in getTextBounds.
  • lib/Epub/Epub/hyphenation/HyphenationCommon.cpp: Added NFC-like precomposition for common Western European diacritics in collectCodepoints().
  • lib/GfxRenderer/GfxRenderer.cpp: Added combining mark rendering in drawText, drawTextRotated90CW, drawTextRotated90CCW (mod-only), and getTextAdvanceX. Also wrapped cursor advance in renderCharImpl to skip combining marks.

PR #1019 (1-file manual port)

  • src/activities/home/MyLibraryActivity.cpp: Added getFileExtension() helper and updated drawList call to show file extensions in the File Browser.

Tracking

  • mod/prs/MERGED.md: Created tracking document with details for all 4 PRs.

Build Verification

pio run -e mod succeeded (24.49s, Flash: 57.2%, RAM: 31.4%).

Follow-up Items

  • All 4 upstream PRs are still open; monitor for any review feedback or changes before they merge.
  • Romanian yaml is missing mod-specific string translations (using English fallbacks).
  • PR #1019 open question: how file extensions look on long filenames.