There's a pretty big update on desktop this time around. We've upgraded from SDL2 to SDL3 (#14983). This should mean everything works the same or better, but let us know if we missed some edge case. For the nearby future it does have the side effect of always shipping along SDL3, even in the DEB packages, because only recent distros provide it out of the box.
There are many other improvements, like stable pages in file browser (https://github.com/koreader/koreader/pull/14570). I won't bore you with more nonsense (read: there were some holdups with the release and my mental overview was lost), and I'll just let the PRs speak for themselves.
This month's logo was contributed by @Sonnenfee
We'd like to thank all contributors for their efforts. Some highlights since the previous release include:
- Fix two bugs with statusbar presets (https://github.com/koreader/koreader/pull/14556) @loeffner
- Exporter: use number of stable pages (https://github.com/koreader/koreader/pull/14554) @hius07
- newsdownloader: multiple unwanted selectors (https://github.com/koreader/koreader/pull/14545) @phoffmeister
- Screensaver: skip showing without UI instance (https://github.com/koreader/koreader/pull/14561) @hius07
- Gestures/profiles: allow disabling popup messages (https://github.com/koreader/koreader/pull/14543) @hius07
- Status bar: fix loading preset on empty items (https://github.com/koreader/koreader/pull/14567) @hius07
- misc/remarkable: enable full refresh by default for appload-based setup (https://github.com/koreader/koreader/pull/14575) @NoaHimesaka1873
- feat/remarkable: support refresh levels (https://github.com/koreader/koreader/pull/14576) @NoaHimesaka1873
- Stable pages in file browser (https://github.com/koreader/koreader/pull/14570) @hius07
- Exporter: Enhanced title and author parsing from MyClippings (https://github.com/koreader/koreader/pull/14578) @den-is
- feat: add japanese reader.dict monolingual dictionary (https://github.com/koreader/koreader/pull/14579) @BoboTiG
- Calibre: do not use stale list (https://github.com/koreader/koreader/pull/14585) @hius07
- Fix crash on Kindle when both AutoSuspend and KeepAlive are on (https://github.com/koreader/koreader/pull/14594) @DemonicSavage
- Pinned page exact location (https://github.com/koreader/koreader/pull/14580) @hius07
- Stable pages in file browser 2 (https://github.com/koreader/koreader/pull/14592) @hius07
- Fix Kindle crash on AutoSuspend while charging (https://github.com/koreader/koreader/pull/14604) @DemonicSavage
- android: fix possible run target error (https://github.com/koreader/koreader/pull/14608) @benoit-pierre
- renderimage: improve JPEG handling (https://github.com/koreader/koreader/pull/14505) @benoit-pierre
- Status bar: 'External content' item (https://github.com/koreader/koreader/pull/14601) @hius07
- bump base (https://github.com/koreader/koreader/pull/14619, https://github.com/koreader/koreader/pull/14633, https://github.com/koreader/koreader/pull/14662, https://github.com/koreader/koreader/pull/14738) @benoit-pierre Several important dependencies.
- Optimize doc_pages (https://github.com/koreader/koreader/pull/14614) @hius07
- android: allow calling
Device:hasColorScreen()in a fork (https://github.com/koreader/koreader/pull/14628) @benoit-pierre - tools/logcat: improve handling of input encoding (https://github.com/koreader/koreader/pull/14629) @benoit-pierre
- Exporter: Correct MyClipping Page value parsing (https://github.com/koreader/koreader/pull/14583) @den-is
- SSH: add top menu checkbox (https://github.com/koreader/koreader/pull/14631) @hius07
- TouchMenu: fix menu height with/without separators (https://github.com/koreader/koreader/pull/14627) @hius07
- Exporter: fix export My Clippings (https://github.com/koreader/koreader/pull/14636) @hius07
- Profiles: auto-exec menu wordings (https://github.com/koreader/koreader/pull/14641) @hius07
- Stable pages in alt status bar (https://github.com/koreader/koreader/pull/14638) @hius07
- Show next locations in Book map and Page browser (https://github.com/koreader/koreader/pull/14643) @hius07
- Status bar: use screen pages for "time left in chapter" (https://github.com/koreader/koreader/pull/14651) @hius07
- build(deps): bump actions/checkout from 5 to 6 by @dependabot[bot] in https://github.com/koreader/koreader/pull/14658
- [plugin] NewsDownloader: support content:encoded with attributes (https://github.com/koreader/koreader/pull/14660) @Frenzie
- NewsDownloader: fix missing feed_config.lua options (https://github.com/koreader/koreader/pull/14396) @nuxa17
- platform: remove leftovers from old install on update (https://github.com/koreader/koreader/pull/14637) @benoit-pierre
- progressbardialog: improvements (https://github.com/koreader/koreader/pull/14513) @benoit-pierre
- newsdownloader - new feature: continue processing feed on download error (https://github.com/koreader/koreader/pull/14650) @MrToph
- ReaderScrolling: Radio buttons for scrolling options (https://github.com/koreader/koreader/pull/14647) @jonnyl2
- Bump luajit-launcher to 75e7eaf (https://github.com/koreader/koreader/pull/14672) @hanakomisa
- android: drop no longer working make target (https://github.com/koreader/koreader/pull/14673) @benoit-pierre
- [Dispatcher] NT: add hidden flows toggle to dispatcher (https://github.com/koreader/koreader/pull/14682) @Commodore64user
- Style tweaks, Menu, TextBoxWidget: various small fixes (https://github.com/koreader/koreader/pull/14698) @poire-z
- bump base: thirdparty updates, crengine fixes (https://github.com/koreader/koreader/pull/14701) @poire-z
- TextViewer: pin page (https://github.com/koreader/koreader/pull/14668) @hius07
- Sleep screen: fix unlocking (https://github.com/koreader/koreader/pull/14689) @hius07
- Sleep screen: improve 'Exit sleep screen' message (https://github.com/koreader/koreader/pull/14691) @hius07
- KoptInterface: prevent crash when word is nil 2 (https://github.com/koreader/koreader/pull/14705) @hius07
- CloudStorage: fix onClose (https://github.com/koreader/koreader/pull/14711) @hius07
- doc: fix and improve build requirements (https://github.com/koreader/koreader/pull/14713) @benoit-pierre
- appimage: fix possible issue with the appimagetool binary (https://github.com/koreader/koreader/pull/14717) @benoit-pierre
- kindle / pocketbook / remarkable: detect if launcher script changed (https://github.com/koreader/koreader/pull/14719) @benoit-pierre
- build(deps): bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in https://github.com/koreader/koreader/pull/14726
- build(deps): bump actions/cache from 4 to 5 by @dependabot[bot] in https://github.com/koreader/koreader/pull/14727
- Decode Serverfilename on OPDS Download (https://github.com/koreader/koreader/pull/14732) @shinobu
- wallabag: fix status handling regression in article archiving (https://github.com/koreader/koreader/pull/14700) @fenuks
- bump luajit-launcher (https://github.com/koreader/koreader/pull/14753) @hugleo
- Kindle: Autodetect & handle the fancy
gesture_tapinput device (https://github.com/koreader/koreader/pull/14506) @NiLuJe - Book info: use screen pages for "time left in chapter" (https://github.com/koreader/koreader/pull/14754) @hius07
- bump base (https://github.com/koreader/koreader/pull/14760) @benoit-pierre
- https://github.com/koreader/koreader-base/pull/2243 (close [#14759])
- Upper menu: change activation gesture without restart (https://github.com/koreader/koreader/pull/14771) @hius07
- "Ignore long-press on corners for time period" action (https://github.com/koreader/koreader/pull/14764) @hius07
- feat(archiveviewer): extract all files button (https://github.com/koreader/koreader/pull/14770) @xydone
- bump base: thirdparty updates, crengine tweaks (https://github.com/koreader/koreader/pull/14785) @poire-z
- ReaderRolling: save percent_finished on flushing settings (https://github.com/koreader/koreader/pull/14787) @hius07
- ReaderFooter: percent_finished in continious mode (https://github.com/koreader/koreader/pull/14794) @hius07
- Status bar: adjustable font face (https://github.com/koreader/koreader/pull/14755) @hius07
- improve and fix startup script change detection (https://github.com/koreader/koreader/pull/14725) @benoit-pierre
- fix: 429 when querying wiki images (https://github.com/koreader/koreader/pull/14766) @oscargolding
- Wikipedia: revamp languages handling (https://github.com/koreader/koreader/pull/14791) @poire-z
- Update device.lua to support Tolino Vision Color (monzaKobo) (https://github.com/koreader/koreader/pull/14801) @prey87
- [plugin] Wallabag: enforce starting URL with http or https (https://github.com/koreader/koreader/pull/13948) @Frenzie
- Readerlink: add notification when following internal links on pdf (https://github.com/koreader/koreader/pull/12933) @jonnyl2
- calibre: fix searching utf8 strings (https://github.com/koreader/koreader/pull/14813) @hius07
- Add error handling to Kindle Wi-Fi functions (https://github.com/koreader/koreader/pull/14817) @cb12tre
- Execute multi-action gesture/profile one by one (https://github.com/koreader/koreader/pull/14803) @hius07
- kindle: fix restart on special offers devices (https://github.com/koreader/koreader/pull/14837) @benoit-pierre
- feat: add lithuanian reader.dict monolingual dictionary (https://github.com/koreader/koreader/pull/14839) @BoboTiG
- bump base (https://github.com/koreader/koreader/pull/14842) @benoit-pierre
- https://github.com/koreader/koreader-base/pull/2256 (close #14841)
- fix(opds): redraw OPDS download confirmation popup on Kindle/e-ink (https://github.com/koreader/koreader/pull/14836) @cb12tre
- ReaderHighlight: fix tapping on self-overlapping highlight (https://github.com/koreader/koreader/pull/14852) @hius07
- NewsDownloader: Add URL path encoding to improve request handling (https://github.com/koreader/koreader/pull/14870) @leakspin
- [ReaderDictionary] clean stress marks from selection for dict search (https://github.com/koreader/koreader/pull/14856) @Commodore64user
- docs: update macOS build requirements (https://github.com/koreader/koreader/pull/14894) @benoit-pierre
- [PB700] Fix auto-orientation inversion after suspension (https://github.com/koreader/koreader/pull/14895) @jannickfahlbusch
- TextBoxWidget: invert images when in night mode (https://github.com/koreader/koreader/pull/14893) @poire-z
- [PB700] Simplify rotation suspension fix (https://github.com/koreader/koreader/pull/14897) @jannickfahlbusch
- Highlights: improve 'Set color' dialog (https://github.com/koreader/koreader/pull/14699) @hius07
- ReaderBookmark: color in bookmark list (https://github.com/koreader/koreader/pull/14714) @hius07
- util.urlEncode: encode parentheses and quote (https://github.com/koreader/koreader/pull/14718) @emdioh
- [Pocketbook] Execute rotation fix also for Era Color (https://github.com/koreader/koreader/pull/14904) @jannickfahlbusch
- Bookmark browser (https://github.com/koreader/koreader/pull/14899) @hius07
- FilemanagerCollection: fix disabling 'Export highlights' button (https://github.com/koreader/koreader/pull/14917) @hius07
- [InputText] decouple text input state from VirtualKeyboard visibility (https://github.com/koreader/koreader/pull/14901) @Commodore64user
- Bookmark browser: fix item font size init (https://github.com/koreader/koreader/pull/14926) @hius07
- kosync.koplugin: Add custom hostname option for kosync plugin (https://github.com/koreader/koreader/pull/14172) @rspilk
- [ImageViewer] add pan key_events to viewer (https://github.com/koreader/koreader/pull/14938) @Commodore64user
- [TextViewer] bug fix, don't crash on Menu press (https://github.com/koreader/koreader/pull/14936) @Commodore64user
- Page turns by swipes with disabled touch input (https://github.com/koreader/koreader/pull/14914) @hius07
- [InputText] decouple text input state from VirtualKeyboard visibility pt. 2 (https://github.com/koreader/koreader/pull/14937) @Commodore64user
- [DictQuickLookup] NT: add key_event for following links and switching (dict-wiki) domains (https://github.com/koreader/koreader/pull/14909) @Commodore64user
- [InputText, ReaderStyleTweak] add copy/paste to NT devices (https://github.com/koreader/koreader/pull/14941) @Commodore64user
- Fix long-pressing on unopened book with status (https://github.com/koreader/koreader/pull/14947) @hius07
- Highlights: invert dialog colors in night mode (https://github.com/koreader/koreader/pull/14923) @hius07
- Add support for Onyx Boox Note Air 5C, Fix Onyx Boox black screen on wake after font size change (https://github.com/koreader/koreader/pull/14956) @msk
- Dispatcher: add "Edit/toggle book-specific style tweak" (https://github.com/koreader/koreader/pull/14944) @poire-z
- fix appstream and appimage metadata (https://github.com/koreader/koreader/pull/14957) @benoit-pierre
- appimage: switch to mkappimage (https://github.com/koreader/koreader/pull/14963) @benoit-pierre
- Bump base (https://github.com/koreader/koreader/pull/14964) @Frenzie
- newsdownloader: fix url path separator encoding bug (https://github.com/koreader/koreader/pull/14975) @MrToph
- ci: bump docker image (https://github.com/koreader/koreader/pull/14976) @benoit-pierre
- bump base & crengine: CSS enhancements and other fixes (https://github.com/koreader/koreader/pull/14979) @poire-z
- Wikipedia EPUBs: use 1.5x image when 2x not available (https://github.com/koreader/koreader/pull/14984) @poire-z
- sdl: switch to SDL3 (3.4.0) (https://github.com/koreader/koreader/pull/14983) @benoit-pierre
- Properly set bootlogo on pocketbook (https://github.com/koreader/koreader/pull/14985) @floriansnow
- CoverImage: fix inconsistent vertical alignment of cover image (https://github.com/koreader/koreader/pull/14987) @msk
- [ReaderHighlight, Config, Menu] NT: stop text selection before any reflow action occurs (https://github.com/koreader/koreader/pull/14949) @Commodore64user
- Stable pages in file browser 3 (https://github.com/koreader/koreader/pull/14952) @hius07
- Fix max port number typo in Calibre plugin (https://github.com/koreader/koreader/pull/14991) @msk
- Recurrent 429 error due to Wikipedia change (https://github.com/koreader/koreader/pull/14981) @oscargolding
- calibre: use correct callback when Wi-Fi is off at connect time (https://github.com/koreader/koreader/pull/14998) @msk
- [PB623] fix crashing due to NetMgrPing() missing (https://github.com/koreader/koreader/pull/14961) @tempura-san
- bump base (https://github.com/koreader/koreader/pull/15000) @benoit-pierre
- ReaderPagemap: fix saving page labels to sdr (https://github.com/koreader/koreader/pull/15007) @hius07
- [Hotkeys] NT: BUG correct function call (https://github.com/koreader/koreader/pull/15009) @Commodore64user
- InputDialog: fix adding widget with 'use available height' (https://github.com/koreader/koreader/pull/15010) @hius07
- Bookmark browser: fix search (https://github.com/koreader/koreader/pull/15022) @hius07
- Ask to open file (https://github.com/koreader/koreader/pull/15024) @hius07
- Add translation context for bottom menu options (https://github.com/koreader/koreader/pull/15031) @SilverGreen93
- fix(coverimage): fix operator precedence and parameter usage in cache functions (https://github.com/koreader/koreader/pull/15032) @msk
- InputDialog: fix adding widget with 'fullscreen' (https://github.com/koreader/koreader/pull/15028) @hius07
- File search: restore Lua patterns support (https://github.com/koreader/koreader/pull/15036) @hius07
- [DictQuickLookup] NT: fix utf8 byte drift during text selection (https://github.com/koreader/koreader/pull/15015) @Commodore64user
- calibre: escape dot in gsub pattern for series index cleanup (https://github.com/koreader/koreader/pull/15037) @msk
- SSH.koplugin: option to force key-only auth (https://github.com/koreader/koreader/pull/15038) @ge-roy
- [Language] i18n: add Slovenian language (https://github.com/koreader/koreader/pull/15050) @Commodore64user
- 'Open file' fixes (https://github.com/koreader/koreader/pull/15047) @hius07
- bump base (https://github.com/koreader/koreader/pull/15052) @benoit-pierre
- Expose MuPDF's search function (koreader/koreader-base#2279)
- mupdf: add getMarkupAnnotationBoxesFromPage() (koreader/koreader-base#2280)
- PDF: import embedded highlights (https://github.com/koreader/koreader/pull/15040) @hius07
- BookStatusWidget: fix impossible to exit review editing due to focus loop (https://github.com/koreader/koreader/pull/15055) @Frenzie
- [fix] BookStatusWidget: remove unused (https://github.com/koreader/koreader/pull/15060) @Frenzie
- [Dispatcher] remove Gesture overview from non-touch devices (https://github.com/koreader/koreader/pull/15059) @Commodore64user
- ci/macos: update upload-artifact action (https://github.com/koreader/koreader/pull/15046) @benoit-pierre
- OPDS: fix crash on feeds with single-quoted XML attributes (https://github.com/koreader/koreader/pull/15068) @msk
- KoptInterface: fix panel zooming when dewatermark is on (https://github.com/koreader/koreader/pull/15067) @Arcohol
- Allow NewsDownloader plugin to download EPUB documents (https://github.com/koreader/koreader/pull/15065) @Witcher01
- [doc] Add checklist about external plugins/patches, testing nightly and searching issues to bug report template (https://github.com/koreader/koreader/pull/15072) @Frenzie
- OPDS: fix off-by-one in sync sub_table access (https://github.com/koreader/koreader/pull/15073) @msk
- bump base (https://github.com/koreader/koreader/pull/15080) @benoit-pierre
- sdl: build our version for the linux target (koreader/koreader-base#2283)
- fix: SDL3 HiDPI return value check (koreader/koreader-base#2285)
- sdl: ensure we have a recent enough version (koreader/koreader-base#2288)
- make: tweak setup target (koreader/koreader-base#2289)
- sdl: enable mouse focus click-through (koreader/koreader-base#2291)
- sdl: fix scrolling when fractional values are involved (https://github.com/koreader/koreader/pull/15077) @benoit-pierre
- switch virtual keyboard default to false on hasKeyboard (https://github.com/koreader/koreader/pull/15057) @Commodore64user
- Tweak bug report template: nightly test not required, avoid automatic reference to nightly ticket (https://github.com/koreader/koreader/pull/15084) @Frenzie
- fix incorrect migration comment (https://github.com/koreader/koreader/pull/15086) @Commodore64user
- [Calibre] preserve uuid field in calibre metadata serialisation (https://github.com/koreader/koreader/pull/15088) @Commodore64user
- Update translations for v2026.03 (https://github.com/koreader/koreader/pull/15090) @Frenzie
- [i18n] Add Gaelic language (https://github.com/koreader/koreader/pull/15091) @Frenzie
- Add basic Dispatcher spec (https://github.com/koreader/koreader/pull/15062) @Frenzie
- kopt: option to invert document in night mode (https://github.com/koreader/koreader/pull/14954) @Euphoriyy
- fix(calibre-plugin): ensure size is correctly parsed as a number in book info in search (https://github.com/koreader/koreader/pull/14881) @CamilleHbp
- [Kindle Scribe] Add support for kindle scribe stylus events (https://github.com/koreader/koreader/pull/14908) @k4rnaj1k
- [chore] Clean up unused util in dispatcher_spec.lua (https://github.com/koreader/koreader/pull/15093) @Frenzie
- Bump base for mupdf: add annotation type and contents getters (https://github.com/koreader/koreader/pull/15092) @Frenzie
- fix: import embedded PDF annotations properly (https://github.com/koreader/koreader/pull/15076) @zeeyado
- refactor duplication in [#15088] (https://github.com/koreader/koreader/pull/15094) @Commodore64user
- [ReaderFooter] Adds a fixed-width setting for progress bar alongside items (https://github.com/koreader/koreader/pull/14980) @jonnyl2
- ReaderHighlight: don't try to write page bookmarks into PDF (https://github.com/koreader/koreader/pull/15097) @hius07
- ci/macos: minor cleanup (https://github.com/koreader/koreader/pull/15103) @benoit-pierre
- creopt: fix toggle order for Invert Images to be consistent (https://github.com/koreader/koreader/pull/15112) @Euphoriyy
- bump base (https://github.com/koreader/koreader/pull/15117) @benoit-pierre
- SDL3: track mouse pointers and finger pointers separately (koreader/koreader-base#2295)
- drop
appimagetarget in favor oflinux(https://github.com/koreader/koreader/pull/15116) @benoit-pierre - git: ignore debian packages (https://github.com/koreader/koreader/pull/15118) @benoit-pierre
- cervantes: split update rule (https://github.com/koreader/koreader/pull/15119) @benoit-pierre
- kopt: fix Invert Document regression with Reflow/Auto Straighten (https://github.com/koreader/koreader/pull/15123) @Euphoriyy
- (opds): remove redundant UTF-8 fixup (https://github.com/koreader/koreader/pull/15122) @D4n1984
New Contributors
- @loeffner made their first contribution in https://github.com/koreader/koreader/pull/14556
- @phoffmeister made their first contribution in https://github.com/koreader/koreader/pull/14545
- @den-is made their first contribution in https://github.com/koreader/koreader/pull/14578
- @MrToph made their first contribution in https://github.com/koreader/koreader/pull/14650
- @hanakomisa made their first contribution in https://github.com/koreader/koreader/pull/14672
- @shinobu made their first contribution in https://github.com/koreader/koreader/pull/14732
- @xydone made their first contribution in https://github.com/koreader/koreader/pull/14770
- @oscargolding made their first contribution in https://github.com/koreader/koreader/pull/14766
- @prey87 made their first contribution in https://github.com/koreader/koreader/pull/14801
- @cb12tre made their first contribution in https://github.com/koreader/koreader/pull/14817
- @leakspin made their first contribution in https://github.com/koreader/koreader/pull/14870
- @jannickfahlbusch made their first contribution in https://github.com/koreader/koreader/pull/14895
- @emdioh made their first contribution in https://github.com/koreader/koreader/pull/14718
- @rspilk made their first contribution in https://github.com/koreader/koreader/pull/14172
- @msk made their first contribution in https://github.com/koreader/koreader/pull/14956
- @floriansnow made their first contribution in https://github.com/koreader/koreader/pull/14985
- @tempura-san made their first contribution in https://github.com/koreader/koreader/pull/14961
- @ge-roy made their first contribution in https://github.com/koreader/koreader/pull/15038
- @Arcohol made their first contribution in https://github.com/koreader/koreader/pull/15067
- @Witcher01 made their first contribution in https://github.com/koreader/koreader/pull/15065
- @Euphoriyy made their first contribution in https://github.com/koreader/koreader/pull/14954
- @CamilleHbp made their first contribution in https://github.com/koreader/koreader/pull/14881
- @k4rnaj1k made their first contribution in https://github.com/koreader/koreader/pull/14908
- @zeeyado made their first contribution in https://github.com/koreader/koreader/pull/15076
- @D4n1984 made their first contribution in https://github.com/koreader/koreader/pull/15122
Full Changelog: https://github.com/koreader/koreader/compare/v2025.10...v2026.03 — closed milestone issues
Installation instructions: Android • Cervantes • ChromeOS • Kindle • Kobo • PocketBook • ReMarkable • Desktop Linux • MacOS