Repository navigation
v2.2.0
3dslibris 2.2.0
This release rolls up the full user-facing work completed since v2.1.4. It focuses on safer HOME/app lifecycle behavior, more reliable cover handling on old3DS, several EPUB rendering fixes, better title presentation in the library browser, and a more usable fixed-layout reading experience for PDF/CBZ/XPS.
Navigation Demo
Grabacion.de.pantalla.2026-04-15.a.las.8.31.45.mov
Highlights
- HOME handling is now safer across
.3dsxand.cia: the app now tracks APT suspend/restore/wakeup/exit events explicitly, pauses work during HOME transitions, and avoids the homebrew-exit crash path seen in HBL-driven.3dsxlaunches. - old3DS cover loading is more stable under memory pressure: cover extraction now uses device-aware memory guards, bounded warmup queueing, and retry backoff instead of hammering the same failing books in a tight loop.
- EPUB block spacing support is broader: paragraph and horizontal-rule margin handling now respects more CSS class-based margin definitions, improving scene breaks and block layout in real books.
- EPUB TOC / contents pages render more sanely: TOC-like documents are now detected from document metadata as well as filename/path, which prevents dense contents entries from collapsing into one run-on paragraph.
- Long book titles are easier to browse in the library: selected and grid titles now support marquee scrolling, and display names prefer embedded metadata titles over raw filenames when available.
- Preformatted text is safer: clipping for
pre/ code-heavy blocks was corrected so wrapping/truncation no longer corrupts surrounding text flow. - Fixed-layout reading is more practical on 3DS screens: PDF/CBZ/XPS now expose an extra zoom tier for small-screen readability, and fixed-layout page turns now also work on
L/Rfor the supported reader paths in this release.
Included fixes and behavior changes
- HBL
.3dsxHOME crash avoided: after app cleanup completes, homebrew launches now exit throughsvcExitProcess()instead of falling into a brokenaptExit()path after HBL has already reclaimed the APT session. - Suspend/resume lifecycle is explicit: applet hooks now pause background work on suspend, mark screens dirty on restore/wakeup, and persist prefs on exit.
- Reader/browser state is hardened across HOME: resume paths now reset transient touch/input state and avoid continuing presentation in an inconsistent applet state.
- Cover retry storms are blocked on old3DS: failed low-memory cover jobs are deferred with backoff, and speculative warmup is kept much more conservative on memory-constrained hardware.
- EPUB
<hr>rendering is more accurate: structural separators such ashr.transitionno longer force a visible line when the source CSS saysborder: none, while actual rule blocks retain block-margin handling. - Browser display names are cleaner: metadata titles are preferred when present, cached display names are invalidated correctly when titles change, and edge cases are covered by added tests.
- MuPDF page backtracking is now reliable: changing pages resets the fixed-layout viewport coherently before deferred redraw, which avoids stale pan state when moving backward through PDFs/XPS documents.
- CBZ failure diagnosis is better: debug logging now records whether loading failed during ZIP access or during image decode, making file-specific reports easier to triage.
Included assets
3dslibris.cia3dslibris-debug.cia3dslibris.3dsx3dslibris-debug.3dsx3dslibris-sdmc.zip3dslibris-source.tar.gz