Skip to content

v2.2.0

Choose a tag to compare

@github-actions github-actions released this 15 Apr 06:53
· 1043 commits to main since this release

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 .3dsx and .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 .3dsx launches.
  • 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 / R for the supported reader paths in this release.

Included fixes and behavior changes

  • HBL .3dsx HOME crash avoided: after app cleanup completes, homebrew launches now exit through svcExitProcess() instead of falling into a broken aptExit() 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 as hr.transition no longer force a visible line when the source CSS says border: 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.cia
  • 3dslibris-debug.cia
  • 3dslibris.3dsx
  • 3dslibris-debug.3dsx
  • 3dslibris-sdmc.zip
  • 3dslibris-source.tar.gz