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
2.3 KiB
2.3 KiB
Port Upstream 1.1.0-RC Fixes
Date: 2026-02-19
Task: Port 3 commits from upstream crosspoint-reader PR #992 (1.1.0-rc branch) into mod/master.
Commits Ported
1. chore: Bump version to 1.1.0 (402e887) — Skipped
- mod/master already has
version = 1.1.1-rc, which is ahead of upstream's 1.1.0.
2. fix: Crash on unsupported bold/italic glyphs (3e2c518)
- File:
lib/GfxRenderer/GfxRenderer.cpp - Added null-safety checks to
getSpaceWidth()andgetTextAdvanceX(). getSpaceWidth(): returns 0 if the space glyph is missing in the styled font variant.getTextAdvanceX(): falls back toREPLACEMENT_GLYPH(U+FFFD) if a glyph is missing, and treats as zero-width if the replacement is also unavailable.- Prevents a RISC-V Load access fault (nullptr dereference) when indexing chapters with characters unsupported by bold/italic font variants.
3. fix: Increase PNGdec buffer for wide images (b8e743e)
- Files:
platformio.ini,lib/Epub/Epub/converters/PngToFramebufferConverter.cpp - Bumped
PNG_MAX_BUFFERED_PIXELSfrom 6402 to 16416 (supports up to 2048px wide RGBA images). - Added
bytesPerPixelFromType()andrequiredPngInternalBufferBytes()helper functions. - Added a pre-decode safety check that aborts with a log error if the PNG scanline buffer would overflow PNGdec's internal buffer.
Verification
- Build (
pio run -e default) succeeded cleanly with no errors or warnings. - RAM: 31.5%, Flash: 70.4%.
4. CSS-aware image sizing (PR #1002, commit c8ba4fe)
- Files:
lib/Epub/Epub/css/CssStyle.h,lib/Epub/Epub/css/CssParser.cpp,lib/Epub/Epub/parsers/ChapterHtmlSlimParser.cpp - Added
imageHeightfield toCssPropertyFlagsandCssStyle(our existingwidthfield maps to upstream'simageWidth). - Added CSS
heightproperty parsing intoimageHeight. - Added
imageHeightandwidthto cache serialization; bumpedCSS_CACHE_VERSION2->3. - Replaced viewport-fit-only image scaling in
ChapterHtmlSlimParserwith CSS-aware sizing: resolves CSS height/width (including inline styles), preserves aspect ratio, clamps to viewport, includes divide-by-zero guards. platformio.inichanges excluded from commit per user request (PNG buffer bump was already committed separately).
Follow-up
- None required. Changes are straightforward upstream ports.