KDE 1783 Published by

KDE released Frameworks 6.31.0 today, the ninth monthly increment of the 6.x series, and it requires Qt 6.10.0. The headline changes are a full rewrite of KCodecs' text-encoding detector, new CalDAV/CardDAV push-notification and sync-token support in KDav, and expanded Vi-mode arithmetic in Kate. Under the hood, nearly every framework adopted the ECMInstalledLibraryCheck CI verification for more reliable builds, while KWallet and KFileMetaData gained security-relevant hardening.



KDE Frameworks 6.31.0 ships with a rewritten encoding detector and CalDAV push sync

KDE's monthly library stack gets a big text-encoding overhaul, real-time CalDAV/CardDAV push, and smarter Vi mode in Kate.

KDE released Frameworks 6.31.0 today, and even though the changelog sprawls across dozens of libraries, the real substance lands in three spots. There's a full rewrite of the text-encoding detector in KCodecs, new push-notification and sync-token support in KDav, and Kate's Vi mode picking up actual arithmetic tricks. The rest, honestly, is the usual monthly maintenance you'd expect from a stack this mature.

Screenshot_from_2026_06_16_14_40_28

Frameworks are KDE's collection of 83 helper libraries that bolt onto Qt. If Qt handles the cross-platform engine work for C++ and QML code, frameworks do the specialized jobs: file management, configuration storage, networking, internationalization. Most of the polish you associate with the Plasma desktop and KDE Applications actually comes from these pieces. That's the context worth keeping in mind, since it explains why this release reads more like a pipeline upgrade than a feature reveal.

The changes worth your attention

The single biggest block of work is in KCodecs, specifically the KEncodingProber, the component that guesses what character encoding some arbitrary text happens to use. It spans everything from UTF-8 and UTF-16 to Windows-1252, Big5, and the assorted CJK encodings. Get it wrong and you get mojibake, so accuracy matters for any app reading unknown text, such as mail clients and editors. The encoding-sniffing problem is ancient and stubborn, by the way. HTML5 spent years defining how browsers should guess encoding, and developers are still arguing about it a decade on. This overhaul adds statistical detection for UTF-8 and UTF-16, so the prober is no longer purely heuristic. A new universal prober handles Chinese, Korean, Japanese, and general Unicode subsets, and individual subprobers are now selectable within both the universal group and the single-byte "SBCS" set. KDE also tightened accuracy on Latin-1, Western European detection, and Big5 state tables.

KDav is KDE's library for the WebDAV-family protocols, CalDAV for calendars and CardDAV for contacts, and it gains the most feature-complete set of additions here. A DavPushRegistrationJob lets clients subscribe to push notifications, a DavPushUnregisterJob backs them out, and a DavPushDontNotify flag suppresses notification side effects on specific operations. The more practically useful piece is DavItemsSyncJob, which fetches only changed items via a sync-token instead of re-downloading an entire collection. Paired with sync-tag detection, that's real incremental sync, and it matters most on mobile or low-bandwidth connections where pulling an entire calendar every time is a real annoyance.

KTextEditor, the text-editing backend behind Kate, expands its Vi-mode implementation. You can now run addition and subtraction commands across visual selections, letting you arithmetically transform a block of numbers in a single motion. Binary-format support joined the addition commands, and numpad digits now work as count prefixes. Beyond Vi mode, KTextEditor moved the color theme selector into the View menu since themes are view-local, and fixed a couple of cursor-desync and accessibility bugs. Small stuff, but exactly the kind of thing you only notice when it's broken.

Under the hood

Scan the full changelog and one line shows up in nearly every framework: "Use ECMInstalledLibraryCheck." That's a cross-cutting change driven by Extra CMake Modules, and it's a CI-enforced check that each built library actually installs to the right place. It catches install-path and RPATH bugs before they reach users, which matters most for static-library builds and non-standard prefixes. It's invisible to end users, but it's also precisely the kind of infrastructure work that keeps your distro's package manager from breaking at the worst possible moment. KDE adds KSafeStringError to KCoreAddons here as well, a new type for safe, exception-free error-string handling, and exposes KJob's type to QML for easier scripting.

A couple of security-adjacent fixes are worth a glance. KWallet's secret-service daemon, KSecretd, gets a modernization pass that leans on QFuture for asynchronous password changes and wallet opening, treating transactions as move-only types with exception-safe rollback. KFileMetaData gains crash-safe handling of malformed media, aborting cleanly rather than crashing when it hits corrupt input. Both deserve attention, especially since KWallet is among the more sensitive pieces of the desktop.

The rest of the frameworks cover the usual mix. KIO finally gets proper FTP modification timestamps via RFC 3659, modernizes its rename-warning dialog to be window-modal, and fixes copy and move progress reporting so skipped files don't inflate the byte totals. Kirigami, KDE's QML UI framework, stops indenting sibling form fields when fullWidth entries appear and gets quicker column-view taps. Breeze icons gain a tab-close icon, Oxygen picks up aoko icon, and KSyntaxHighlighting lands a big Zsh grammar expansion plus a brand-new LRC lyrics syntax.

KDE's release continues its planned monthly cadence and, as of now, is signed by Nicolas Fella.

KDE Frameworks 6.31.0 is available today. Head here to download the source tarballs.