Skip to content

1.3.0.35-dev4-cpr-vcodex-steroids

Latest

Choose a tag to compare

e5b50277-04b1-4c62-9f23-3b51c947ef0b

This release delivers a full graphic restyle of the UI, a large set of new
vector icons, reader-menu icons, plus several bug fixes — most importantly a
PNG-decoding fix that prevented folder-selector image previews from rendering.


Highlights

  • 🎨 Complete UI graphic restyle with a new "cyberpunk" panel style (Marcoand75 theme)
  • 🖼️ 19 new SVG icons generated into 38 C++ header files (32 px + 24 px variants)
  • 📖 Reader menu now shows per-item icons
  • 🐛 PNG image previews in the screensaver / sleep folder selectors no longer fail
    with "Invalid image file"
  • 🔧 Various stability and UI fixes

🎨 UI / Graphic Restyle

  • New angular "cyberpunk" panel style (chamfered borders, corner brackets, scanline
    separators) for the Marcoand75 theme, applied across homepage stats, icon bar,
    carousel and popup overlays.
  • Centralized panel drawing into a shared PanelDrawHelper helper
    (drawCyberpunkPanel, drawBackground, drawAngularPanel, drawRowIcon, …)
    used by popups, context menus and overlays.
  • Restyle of homepage panels and the book-context popup with the cyberpunk style.
  • All Lyra / Marcoand75 theme panels reworked for consistent layout and metrics.
  • Settings screens restored/refreshed as part of the restyle.

🖼️ Icons

  • Added 19 new custom SVG icons, each emitted as both 32 px and 24 px C++ headers
    (38 new components/icons/*.h files): SearchPlus, SearchMinus, TimeFast,
    SortAsc, SortDesc, LibraryNew, GpsFound, MedalAlt, Dictionary2, AppsHub,
    CalendarTime, LibraryBook, DeleteFile, CacheCleaner, FinishFlag,
    NotificationUnread, FileTransfer, Calibre, plus Bookmark/Search/Rotation/Pageview.
  • New icon-generation tooling:
    • scripts/generate_cpr_icons.py — converts SVGs into the C++ header format.
    • scripts/fetch_koreader_icons.py — fetches upstream KOReader icon sources.
  • Reader menu (EpubReaderMenuActivity) now renders an icon per menu item
    (Settings, Chapter, Bookmarks, Dictionary, Rotate, Auto-turn, Screenshot, QR,
    Mark finished, Sync, Delete cache, …).

🐛 Bug Fixes

  • PNG folder-selector previews (ScreenSaverPreviewActivity): PNG decoding
    failed with "Invalid image file" while BMP previews kept working. Root cause:
    PNGdec keeps its entire ~58 KB working set (32 KB zlib window + inflate state +
    row/palette/file buffers) inline in the PNG object, so new PNG() needed one
    large contiguous heap block that is frequently unavailable on the ESP32-C3 due
    to heap fragmentation. The decoder now uses a single static instance living in
    .bss, so decoding no longer depends on contiguous heap. Font caches are also
    cleared right before each decode (mirroring SleepActivity). BMP path unaffected.
  • Long refresh after exiting the Library fixed.
  • Mark as Unread now correctly resets the book "completed" status
    (ReadingStatsStore::beginSession).

🔧 Improvements

  • Homepage panel label changed from "Tempo" to "ETA" (estimated time to finish),
    already present in IT/EN translations.
  • Minor GfxRenderer additions to support the new panel drawing.

🌐 Translations

  • English and Italian string tables updated for the new labels/icons.

🛠️ Internal / Developer

  • src/components/PanelDrawHelper.h added as the shared panel-drawing utility.
  • src/util/PngSleepRenderer.cpp reworked to reuse a static PNG decoder instance
    (safe: PNG::open() re-initializes the struct on every call, and decoding is
    always synchronous from a single activity).
  • README.md updated with the full feature list.
  • ShortcutRegistry.h extended with the new shortcut icons.

Affected areas (by file count)

Area Files
Icons 82
Other 23
Activities 7
Themes 5
Core / PNG 4
Scripts 3
Translations 2

Build note: the static PNG decoder working set raises static RAM usage
(~31% → ~49% of DRAM); this is intentional to guarantee PNG decoding without
relying on fragmented heap.