# Merge Upstream PRs #965, #939, #852, #972, #971, #977, #975 **Date:** 2026-02-18 **Branch:** mod/merge-upstream-1 ## Task Port 7 upstream PRs from crosspoint-reader/crosspoint-reader into the mod branch. ## Status per PR | PR | Description | Result | |---|---|---| | #939 | Fix dangling pointer in MyLibraryActivity | Already ported, no changes needed | | #852 | HalPowerManager idle CPU freq scaling | Completed partial port (Lock RAII, WiFi check, skipLoopDelay, render locks) | | #965 | Fix paragraph formatting inside list items | Fully ported | | #972 | Micro-optimizations to eliminate value copies | Ported (fontMap move, getDataFromBook const ref) | | #971 | Remove redundant hasPrintableChars pass | Fully ported | | #977 | Skip unsupported image formats during parsing | Fully ported | | #975 | Fix UITheme memory leak on theme reload | Fully ported | ## Changes Made ### PR #852 (partial port completion) - `lib/hal/HalPowerManager.h` -- Added `LockMode` enum, `currentLockMode`/`modeMutex` members, nested `Lock` RAII class (non-copyable/non-movable), `extern powerManager` declaration - `lib/hal/HalPowerManager.cpp` -- Added mutex init in `begin()`, WiFi.getMode() check in `setPowerSaving()`, Lock constructor/destructor, LockMode guard - `src/activities/settings/ClearCacheActivity.h` -- Added `skipLoopDelay()` override - `src/activities/settings/OtaUpdateActivity.h` -- Added `skipLoopDelay()` override - `src/activities/Activity.cpp` -- Added `HalPowerManager::Lock` in `renderTaskLoop()` - `src/activities/ActivityWithSubactivity.cpp` -- Added `HalPowerManager::Lock` in `renderTaskLoop()` ### PR #965 - `lib/Epub/Epub/parsers/ChapterHtmlSlimParser.h` -- Added `listItemUntilDepth` member - `lib/Epub/Epub/parsers/ChapterHtmlSlimParser.cpp` -- Modified `startElement` to handle `
` inside `