It's been about four months since the previous release, so it's about time, isn't it? One very interesting addition is background cleanup for PDFs with Mask and SMask, which is technobabble for backgrounds (particularly in Archive.org PDFs, #15401). It means you might not need preprocessing to be able to open them on your ereader without having to be fairly patient when turning pages, though the usual warnings apply: backgrounds are not just the yellowish color of paper, but they might also contain most of the non-textual content, if any.
We'd like to thank all contributors for their efforts. Some highlights since the previous release include:
-
[doc] Add DataStorage developer docs (#15121) @TechnoCode44
-
linux: fix metadata to match our flatpak package (#15126) @benoit-pierre
-
otamanager: honor http proxy (#15131) @benoit-pierre
-
[Kindle] fix setting absolute warmth without breaking incremental settings (#13344) @mergen3107
-
tools: fix update-metadata (#15132) @benoit-pierre
-
Export highlights: filters (#15003) @hius07
-
Fix sdl3 lib path in nix shell (#15142) @j-v
-
Footnote popup: add option to justify (or not) text (#15129) @poire-z
-
[HtmlBoxWidget, DictQuickLookup] add capability to search within dictionary definitions (#15001) @Commodore64user
-
Bookmark browser: default book source (#15143) @hius07
-
bump base (#15153) @benoit-pierre
-
pocketbook: inkview handling rework (#15087) @benoit-pierre
-
bump crengine: support ::first-line, COLRv0 fonts, CHM and CSS fixes (#15155) @poire-z
Includes:
- koreader/crengine#656
- CHM: improve Chinese encoding handling
Closes #15079.
- koreader/crengine#653
renderFinalBlock(): fix background color propagation among inlines
- first-letter: resets some CSS, ignore invisible, stop on
- CSS: support for pseudo element
::first-line
Closes #14391.
- CSS: add support for
float/clear: inline-start/inline-end
- koreader/crengine#654
- lvfntman, lvdrawbuf: add COLR v0 color font rendering support
Also add style tweaks to disable first-letter and first-line.
-
css_tweaks: fix typo in Disable first-line tweak name (#15161) @poire-z
-
bump base (#15172) @benoit-pierre
-
ReaderStatus: fix End of Document status change (#15159) @hius07
-
coverimage: only update on rotation if rotate image enabled (#15179) @liskin
-
Cloud storage+ (#15150) @hius07
-
[DictQuickLookup] detection and key-event injection for SDL devices (#15158) @Commodore64user
-
Collections update (#15175, #15193) @hius07
-
File browser: fix "Folders and files mixed" menu item (#15202) @hius07
-
bugfix: check for current directory in webdav listing (#15192) @rolurq
-
SyncService is replaced by Cloud storage plugin (#15210) @hius07
-
pocketbook: drop redundant trace (#15222) @benoit-pierre
-
Status bars: fix showing additional content (#15218) @hius07
-
feat: add alternative mime type for fb2 (#15231) @legokol
-
Book status: reset rating (#15227) @hius07
-
Cloud storage: default server (#15226) @hius07
-
PluginLoader: use directory name for enabled/disabled, deprecate metadata name (#15096) @Frenzie
-
Feature: Implement the ability to delete plugins (#15240) @Saterz
-
[MultiInputDialog] split password field and checkbox (#15234) @Commodore64user
-
Cloud storage: upload selected files (#15243) @hius07
-
[Android] Bump luajit-launcher (#15251) @Frenzie
-
ReaderBookmark, BookmarkBrowser: unified bookmark details window (#15250) @hius07
-
InputText: delete selection; undo last deletion (#15238) @hius07
-
Fix language matching logic (#15267) @PauLuke
-
fix(pocketbook): Networking and DNS resolution during early boot (#15244) @ananyatimalsina
-
macos: tweak release 7z name (#15284) @benoit-pierre
-
Minor Wikipedia & highlighting fixes, add "Toggle hanging punctuation" to dispatcher (#15285) @poire-z
-
Profiles: keep settings in the base class (#15270) @hius07
-
Cloud storage: keep settings in the base class (#15274) @hius07
-
OPDS: load settings when needed only (#15283) @hius07
-
Add python to shell.nix (#15296) @RoadRoller01
-
vocabbuilder.koplugin: Add 'forgot' button in "Vocabulary exists" popup window (#15297) @weijiuqiao
-
handle multiple args in common/koreader.sh (#15271) @liskin
-
Read timer: start action, expiry message (#15289) @hius07
-
UI: Capitalize Bulgarian language name in language menu (#15303) @d0nizam
-
[KeyValuePage] Fix keyboard hold events targeting wrong item (#15305) @Commodore64user
-
MoveToArchive: load settings when needed only (#15302) @hius07
-
bump base (#15308) @benoit-pierre
-
bump crengine: MOBI and CSS fixes ; add getNearestWordFromPosition() (#15310) @poire-z
bump crengine: MOBI and CSS fixes
Includes:
- koreader/crengine#661
- pdbfmt: don't overwrite extracted metadata
- pdbfmt: extract more metadata from MOBI EXTH
- pdbfmt: extract MOBI non-EXTH title if necessary
- koreader/crengine#662
- CSS first-line: fix possible crash
- CSS width: fit-content: account for the element padding
- getNodeByPoint(): improve fallback check
cre.cpp: add getNearestWordFromPosition()
Useful for improve text selection using DPAD/arrow keys.
Requested along koreader/crengine#659.
-
[PocketBook] Respect input_ignore_gsensor setting (#15304) @jannickfahlbusch
-
[doc] Add IconWidget developer docs (#15253) (#15276) @TechnoCode44
-
Feature: Add a two different submenus for built-in and user plugins (#15245) @Saterz
-
plugins: avoid legacy use of double quoted sqlite strings (#15318) @benoit-pierre
-
BookStatusWidget: improve note gesture handling (#15311) @Frenzie
-
[Hotkeys] add single-key shortcuts (#14867) @Commodore64user
-
Gestures: keep settings in the base class (#15278) @hius07
-
DocSettings: fix moving doc setting to 'hash' location (#15319) @hius07
-
Collections: fix renaming folder (#15320) @hius07
-
KOSync: optionally send document metadata with progress sync (#15306) @nperez0111
-
Feat: KS3 & KSC support (#15256) @ThatHackerDudeFromCyberspace
-
Book metadata archive (#15264) @hius07
-
Book metadata archive: 'restore from archive' wording (#15326) @hius07
-
feat: ExternalKeyboard: allow plugin to load on Kindle (#15248) @zampierilucas
-
Folder shortcuts: standard folders (#15323) @hius07
-
NewsDownloader: per-feed max_age option (#15322) @vandot
-
Profiles: external auto-exec triggers (#15329) @hius07
-
[DictQuickLookup] add custom button layout (#15184) @Commodore64user
-
Sort by rating (#15327) @hius07
-
ReaderView: fix highlight in night mode (#15336) @hius07
-
Bug fix: ensure default_layout is up to date when generating menu (#15340) @Commodore64user
-
ci/macos: add workflow dispatch (#15346) @benoit-pierre
-
feat: add Lemma Greek-English dictionary (#15357) @ciscoriordan
-
fix: bump Lemma Greek-English Dictionary URL to v1.3.3 (#15359) @ciscoriordan
-
Plugin disable dialog (#15341) @hius07
-
Tweak document settings: open settings file when needed only (#15355) @hius07
-
kindle: add SSH server support to KUAL extension (#15352) @benoit-pierre
-
Plugins' menu items (#15360) @hius07
-
datetime: add gettext context to abbreviated months (#15369) @ichnilatis-gr
-
Fix opening file with associated provider (#15367) @hius07
-
VocabBuilder: sync action; enable deleting settings (#15372) @hius07
-
HttpInspector: enable deleting plugin settings (#15373) @hius07
-
QR from clipboard: enable highlight button on devices without clipboard (#15363) @hius07
-
Hide parent folder (#15374) @hius07
-
BatteryStat: enable deleting plugin settings (#15378) @hius07
-
KoSync: enable deleting plugin settings (#15379) @hius07
-
Wallabag: settings fixes (#15383) @hius07
-
NewsDownloader: enable deleting plugin settings (#15382) @hius07
-
OPDS: 'crawlable' relation (#15384) @hius07
-
kobo: Fix detection of 'Kobo mode' of Tolino devices (#15389) @AlexanderS
-
Perception expander: minor fixes (#15364) @hius07
-
plugins/calibre: preserve author_sort in slim metadata (#15398) @AndyHazz
-
BookShortcuts: fix settings (#15392) @hius07
-
TouchMenu: allow mousewheel scrolling; fix possible crash when highlighting (#15402) @poire-z
-
getHomeFolder() (#15400) @hius07
-
Increase viewport for PB743K3 (#15410) @SilverGreen93
-
Bump base (#15411) @Frenzie
-
#7992 Isolate PDF SMask (#15401) @kerivin
-
fix: wikipedia enforced image step sizes (#15399) @oscargolding
-
Add support for Pocketbook Era Lite (#15415) @Kulllerkeks
-
Statistics: fix pic documents; enable deleting settings (#15387) @hius07
-
CloudStorage: save 'upload folder' (#15408) @hius07
-
ReaderHighlight: clear selection after showing OCR infomessage (#15213) @Frenzie
-
bump base (#15418) @benoit-pierre
-
[DictQuickLookUp] bug_fix: don't mutate default_layout (#15422) @Commodore64user
-
Add white threshold for paged documents (#15412) @kerivin
-
bump base & crengine: support for initial-letter, and other fixes (#15429) @poire-z
Includes:
- fix GCC 16 warnings (-Wunused-but-set-variable) koreader/crengine#663
- koreader/crengine#666 :
- ldomXRange::getRangeText(): newline on
- createXPointer(pt)/getRect(): use formatter src->t.text
- getRect(): unify one-char-long word width handling
- CSS ::first-letter: use non-letter char if no letter in first text node
- CSS ::first-line: properly handle inline-block
- createXPointer(pt): return source text node on pseudoElem[FirstLetter]
- getSegmentRects(): compare .bottom additionally to .top
- lvfntman: add getCapHeight()
- CSS initial-letter: add CSS parsing and style slot
- CSS initial-letter: render ::first-letter via inline-box
Also includes:
credocument: fix call cache statistics (not updated after the bit time.lua refactor years ago - #15377 (comment)).
-
QRClipboard: fix extending highlight to sentence (#15431) @hius07
-
doc: update build requirements (#15437) @benoit-pierre
-
sdl: better init trace (#15438) @benoit-pierre
-
Flat file list (no subfolders) (#15425) @hius07
-
Profiles: auto-executing list; path patterns (#15439) @hius07
-
drop remains of non-functional Ubuntu Touch target (#15442) @benoit-pierre
-
feat: saturation control (#15381) @NoaHimesaka1873
-
mxcfb: fix kobo FFI cdecls (#15446) @benoit-pierre
-
ReadCollection: fix per-collection write filter typo on removeItem (#15454) @AndyHazz
-
Tweak document settings: path patterns (#15440) @hius07
-
fix: missing saturation in copyPageState (#15455) @NoaHimesaka1873
-
Add WikDict bilingual dictionaries (#15456) @karlb
-
feat: add turkish reader.dict monolingual dictionary (#15457) @BoboTiG
-
Add some Wiktionary StarDict files (#15451) @xxyzz
-
feat: QTFB input/framebuffer support (#15461) @NoaHimesaka1873
-
Book metadata archive: fix saving (#15445) @hius07
-
feat: reMarkable Paper Pure support (#15463) @NoaHimesaka1873
-
[ReaderKeySelection] NT: improved text selection with cursor keys (#15377) @Commodore64user
-
ReaderDictionary: prettify dict download list (#15452) @hius07
-
fix common/koreader.sh arguments handling on restart (#15312) @benoit-pierre
-
make: change android targets to android-xxx (#15351) @benoit-pierre
-
generate new ota packages (#15236) @benoit-pierre
-
Screensaver: don't load the module on unsupported devices (#15465) @hius07
-
fix: appload quirk workaround (#15475) @NoaHimesaka1873
-
[TextBoxWidget] Find in definition (wiki edition) (#15356) @Commodore64user
-
Highlights: pre-highlighting prompt (#15473) @hius07
-
SDL: shell-escape openLink and external dict lookup args (#15491) @Booyaka101
-
Open file: more honor associated provider (#15489) @hius07
-
Exporter: exclude page bookmarks (#15493) @hius07
-
[DictQuick, Paging, Rolling] Eclectic fixes for 'find In Definition' and key Events (#15498) @Commodore64user
-
Highlights: temporary highlight color (#15486) @hius07
-
Menu widget: search next entry (#15502) @hius07
-
[TextViewer] NT: add page turn events for easier navigation (#15504) @Commodore64user
-
[SDL,plugin/hotkeys] Process gamepad events (#15449) @Frenzie
-
Screen rotation: always show rotation mode options (#15505) @chofuhoyu
-
BookShortcuts: fix open folder from Reader (#15517) @hius07
-
Cloud storage: download/delete selected files (#15522) @hius07
-
fix(cloudstorage): webdav not listing folders (#15532) @Skittyblock
-
fix(cloudstorage): choose folder not showing for empty dirs (#15533) @Skittyblock
-
vocabbuilder.koplugin: Add "got it" button in "Vocabulary exists" popup window (#15534) @weijiuqiao
-
[reMarkable] fix: native QTFB OTA update (#15538) @NoaHimesaka1873
-
fix(vocabbuilder): leaked db conn breaking sync (#15531) @Skittyblock
-
bump base & crengine, enhanced search on CreDocuments (#15543) @poire-z
bump base: ffi-cdecl and ffi tweaks and updates
Also:
- ffi/loadlib: fix loading SSL library in monolibtic mode
- ci/circle: bump docker images (new ffi-cdecl version)
- ffi/zstd: allow setting compression level
- ffi/hashoir: new module for hashing memory
- ffi/util: add bidirectional support to
runInSubProcess
- utils: improve
inkview_h generator script
(Too many PRs to add links to each of them :/ :))
bump crengine: enhanced findText(); Malayalam hypnehation
Includes:
- TextLang, hyphenation: add Malayalam (ml) koreader/crengine#672
- koreader/crengine#673
findText(): return list of ldomXRange instead of ldomWord
findText(): implement tweakable enhanced search
- koreader/koreader-base#2411
- cre.cpp findText() and findAllText():
Updated to handle returned ldomXRange instead of ldomWord,
and added optional searchFlags params.
ReaderTypography: add Malayalam to the list of supported languages.
ReaderSearch: enhanced search on CreDocuments
See #10366 (comment) (flags re-ordered since this post - don't trust them there).
I settled on:

2 others commented out would give:

-- For CreDocuments, different search features are available: -- Enhanced search flags: -- MATCH_ACROSS_TEXT_NODES = 0x0001 -- COLLAPSE_CONSECUTIVE_SPACES = 0x0002 -- NORMALIZE_CANONICAL = 0x0004 -- NORMALIZE_COMPATIBILITY = 0x0008 -- IGNORE_FORMAT_CONTROL_CHARS = 0x0010 -- FOLD_SPACES = 0x0020 -- FOLD_APOSTROPHES = 0x0040 -- FOLD_HYPHENS = 0x0080 -- IGNORE_DIACRITICS = 0x0100 -- Make a few types of search available as radion buttons -- (These are available to be updated/extended by user-patches) search_types = { -- Title of the radio button , search_flags, use_regex { _("Ignore accents / stress marks"), 0x01FF, false }, -- { _("As typed"), 0x0017, false }, -- { _("Legacy search"), 0x0000, false }, { _("Regular expression (long-press for help)"), 0x0001, true }, }, default_search_type = { "", 0x00FF, false }, -- Most except IGNORE_DIACRITICS
These Radio buttons (each setting a set of flags) are mutually exclusive, but they can also be all unchecked (in which case, we use the defaults we seem to have all agreed on). Case insensitive is an independant one that works with all others (and the default of none).
Should they be squared checkboxes ?
-
bump crengine: refactor Font Manager, support for variable fonts (#15553) @poire-z
Includes koreader/crengine#669:
- lvfntman: Refactor Font Manager; Add variable fonts
- CSS font-optical-sizing
- lvfntman: Docs and tests for refactor
Thanks to @spfenwick .
Closes #12800 (might have been about the UI fonts, but well, it's more valuable in crengine, and we got it there, so closing).
-
fix(language): remove duplicate Vietnamese language entry (#15552) @gaunh0
-
Page overlap: no indicator; actions for gestures/profiles (#15541) @hius07
-
Enable 'Saturation' option if 'Color rendering' is on (#15542) @kerivin
-
Malayalam Keyboard (FUTO layout) (#15560) @NalrTynhe
-
[ReaderKeySelection] NT: add indicator overlay (#15547) @Commodore64user
-
kindle: fix possible crash when not connected to a network but wifi is on (#15519) @benoit-pierre
-
QuickMenu: rename actions (#15564) @hius07
-
[ReaderKeySelection] flash word when starting indicator (#15571) @Commodore64user
-
Check code type before HTTP error handling (#15578) @lyluqo
-
Reworked the Wallabag plugin to recursively scan the download directory (#15558) @evmcl
-
Collections: fix removing book from collections via file popup dialog (#15577) @hius07
-
screensaver: add option for extra refreshes to avoid sleep screen ghosting (#15568) @ahmadadam96
-
minor wording and button corrections (#15582) @Commodore64user
-
bump base & crengine: Font Manager enhancements and fixes (#15587) @poire-z
Includes:
Also:
cre.cpp: drawCurrentPage() set invert_colors when invert_images provided.
Also:
feat(ffi): invert screenshots in night mode koreader/koreader-base#2401
-
kindle: fix issues when running from nonstandard location (#15579) @ThatHackerDudeFromCyberspace
-
feat: add dutch reader.dict monolingual dictionary (#15589) @BoboTiG
-
CloudStorage: fix servers order when adding new server (#15580) @hius07
-
NewsDownloader: check relative urls using socket.url.parse() (#15595) @zikasak
-
NewsDownloader: fix for shadowing _() (#15597) @zikasak
-
TextViewer: view html, markdown (#15588) @hius07
-
ffi/posix_h rework + use ffi/netinfo (#15556) @benoit-pierre
-
move kosync plugin settings into a separate file (#15591) @zikasak
-
Disable external plugins and user-patches (#15593) @hius07
-
kindle: More non-standard installation fixes and default NO_EIPS_SLEEP when not launched from KUAL (#15601) @ThatHackerDudeFromCyberspace
-
Background cleanup over dewatermark (#15555) @kerivin
-
kindle: Stop awesome regardless whether KOReader was launched from KUAL or not (#15608) @ThatHackerDudeFromCyberspace
-
[InputDialog] NT: remove separator from widget's layout (#15602) @Commodore64user
-
Highlights: note format (#15599) @hius07
-
[ReaderLink, Back] clear page links with Back key (#15613) @Commodore64user
-
kindle: Fix launch script path detection issues on older firmwares (#15625) @ThatHackerDudeFromCyberspace
-
NetworkMgr: re-DHCP after Wi-Fi network switch on Kobo (#14790) (#15618) @Warlium
-
readerdictionary: fix & improve downloading dictionaries (#15642) @benoit-pierre
-
dictionaries: fix / update some dictionaries (#15641) @benoit-pierre
-
Clipboard snippets (#15627) @hius07
-
document: fix crash when opening single images (#15644) @benoit-pierre
-
QuickMenu position (#15640) @hius07
-
document: fix another background_cleanup check (#15648) @benoit-pierre
-
Add hall_file support to KindleTouch and KindleBasic4 (#15654) @evankrummel
-
NetworkListener: guard against auto_disable_wifi enabled by user on unsupported devices (#15655) @Frenzie
-
OPDSParser: handle self-closing content tags (#15515) @Booyaka101
-
SSH.koplugin: add force‑close toggle for stop (#15338) @d0nizam
-
fix: locale C or en_US has its own plural manipulation, the default one. (#15375) @picospuch
-
DjVu: preserve text-layer reading order in selection (#15298) @anaxonda
-
KOSync: queue failed progress updates for retry on reconnect (#15324) @collaed
-
Refactor DepGraph node handling (#15659) @hugo1120
-
feat(reMarkable): Oxide/libblight support (#15611) @NoaHimesaka1873
-
Support SDL stylus input (#15344) @HackingGate
-
CloudStorage: add natural sorting by name (#15662) @hius07
-
[InputText] Toggle on-screen keyboard with a lone Sym/ScreenKB tap (#15669) @iav
-
Fix crash when opening KOReader with connected BT keyboard (#15681) @mergen3107
-
Update wiktionary_stardict files (#15686) @xxyzz
-
add id Indonesian translation to UI (#15693) @cloned-doy
-
[ReaderKeySelection] rework addToMainMenu (#15685) @Commodore64user
-
pdfdocument: rename deleteMarkupAnnotation call to deleteAnnotation (#15672) @tomasAlabes
-
screensaver: improve extra flash option to fix banding (#15703) @ahmadadam96
-
bump base (#15709) @benoit-pierre
-
screensaver: add default values to anti-ghosting redraws spinner (#15710) @ahmadadam96
-
Kobo v5 support (#12401) @NerdyProjects
-
BookList: safeguard series index for sorting (#15705) @hius07
-
NetworkSetting: guard against missing scan result flags (#15714) @SAY-5
-
Quickstart: teach about menu search (#15712) @gilgulgamesh
-
BookmarkBrowser: persistent filters (#15711) @hius07
-
device/kobo: add Kobo:otaModel() like on Kindle for uniformity (#15713) @Frenzie
-
WebDAV sync: fix infinite 412 loop on weak ETags (#15715) @Lorite
-
pocketbook: fix startup crash after 6.11.1480 firmware update (#15730) @9783e6
-
Device:ping4: keep the native ICMP path on kernels < 2.6.27 (fix legacy Kindle UI freeze) (#15663) @iav
-
OPDS 2.0 basic support (#15696) @hius07
-
Fix bottom menu activation (#15733) @hius07
-
[DictQuickLookup] K4: use modifier to call lookupinputword widget (#15723) @Commodore64user
-
Flash when displaying covers to reduce ghosting (#15724) @dmalinovsky
-
android: set FONTDIR so MuPDF can find its fallback fonts (#15738) @jperon
-
fix(reMarkable): PowerD fixes for frontlight and HE sensor (#15690) @NoaHimesaka1873