Skip to content

Sunday, 15 November 2026

Tellico 4.3.1 is available, with a few updates.

  • Updated importing logic to expand allowable values for imported fields.
  • Fixed crashing bug for re-entrant image loading (Bug 526952).
  • Fixed bug with Collectorz image location during importing (Bug 527908).
  • Fixed table colors in Video template.
  • Fixed search results from OMDb.

I’ve been DJing a lot lately, and as it happens, I like Denon DJ hardware. Most commonly, you will find gear made by Pioneer (AlphaTeta) though, and switching between mixers and their eco-systems is quite a pain. Pioneer has properly locked down the market, while Denon, in my opinion, offers way more value for money, and just nicer hardware. Out of frustration when moving from my home setup to mixers elsewhere, I figured, why not just write a small commandline tool that syncs the cue points that I’ve created on my Denon mixer to the Pioneer library on the same USB stick. Should be easy, right? Ow, sebas, you sweet summer child…

Now at work, we use AI tools to help us write code and it makes me quite a bit more productive as a programmer. While I understand (and even agree to) some of the criticisms that exist around the use of AI in the Free Software I think that AI is there to stay, and that, if used well, can make our lives as (Free) software developers a lot easier. KDE’s contributor guidelines allow the use of AI and give clear guidelines about what is OK and what is not. There have of course been discussions in the community around AI, but those are mostly about AI-aided contributions to existing software, not so much an existing KDE developer using AI tools to develop a new application. Nobody wants AI slop and we should be careful and thoughtful about how we use AI in our work and interactions. So far, my experience has been rather good. I have tried to be thoughtful at all times, and acknowledged that everything I do (with AI or not) is my responsibility. Being mindful about others is very important. Not just in this context, of course.

So in the past months I put together a new tool, called Seabass. I’ve shown an initial version to some of my DJ friends and got a lot of good input and direction, as well as support and of course testing, as well as a few suggestions for things that would make really valuable additions. There is a fair amount of frustration around, especially, but not limited to Rekordbox, the software created and sold by Pioneer/AlphaTeta alongside their hardware offerings, and frankly, there’s a lot to be improved as well. (Honestly, reading the rekordbox subreddit makes you think of Stockholm syndrome more often than “what a cool hobby!”.)
Seabass has already become a very valuable tool for me. I can now DJ at home all I want, prep my sets and then take my USB stick elsewhere, plug in and play. I have asked my friend Nuno Pinheiro to make an icon for Seabass, and not only did he agree, he blew me away with our very cool Seabass mascot. Thank you so much, dude!

Seabass allows me to explore, sync, back up and maintain my music collection more easily. Not at least, I can finally use my precious Linux for my DJ hobby! Seabass provides powerful tools that make your library more transparent and provide greater control over it. Next to its library management tools, it also provides a benchmarking tool, measures and tells you when your USB stick is dying, allows you to quickly transfer things, to either your harddisk or another stick. All incremental, all designed to be as bullet-proof and forgiving as possible.
The scope, as it happens, has shifted somewhat. I’ve slowly been adding creative features to Seabass as well, and the effect on my sets has been noticed.


So, today, we present Seabass 1.0. Your DJ Toolbox. I want this to be the creative and open space, as well as the tools that make many DJ’s lives easier, less frustrating, more fun and of course, more Free.

As it stands, youstill need rekordbox to import and analyze the music. The algorithms that analyze the music to produce the waveform and beatgrid data is not something I can emulate or replace, at least not at the expected quality (yet?), so for now, you still have to use rekordbox to import your music.
My living room now has 4 DJ mixers of different sorts (for testing), and it’s been quite some fun reverse-engineering the peculiarities of an XDJ-RX2 (running an embedded version of rekordbox, btw), making sure cue points land on the exact spot they should, taking into account mp3 encoders used for a given track, very interesting ways these machines use to read and save their user’s inputs. If you’re into rabbit holes, come and get some!

Seabass runs on Linux, Mac and Windows. For Mac, there are now universal binaries, which means: pretty much any computer made in the past ten years should be able to run Seabass. KDE’s cool Craft project alongside KDE’s pretty awesome CI infrastructure provides the legwork for this. A big thanks to the KDE team, and especially Ben Cooksley for helping me get this done!


Seabass itself is structured in layers, there’s a commandline tool called seabass-cli which makes it a lot more transparant to see what’s going on under the hood. Unittest coverage is at a decent 80+%, with the remainder taken care of by a suite of end to end tests that I run on all three target platforms., plus a ui test suite that exercises and checks most of the QtQuick code. There’s a feature for users to submit an anonymized version of their library, which can be added to the testing suite.
Seabass acts on, and keeps 3 database formats in sync. Pioneer’s DeviceLibrary, Pioneer’s OneLibrary format (yes, two…) and Denon’s Engine format. While developing Seabass, a fair amount of reverse engineering had to be done. I’ve upstreamed a bunch of patches to especially libdjinterop.

Since Seabass is about music, you can also use it to listen to your tracks and playlists. The beatgrid and waveform data that has been to the track actually makes a wonderful base for cool animations. Let’s just say I did have some fun with OpenGL shaders, manifested in the play animation (which can be made full screen).

I haven’t done a lot of Free Software work in my free time in a while, but with this, I’ve found back some of the energy and a new project to dig in to. And it’s good to be back!

So... Dr Jekyll sat down to draw a few small icons. Eleven days and 2,842 commits later, the laboratory is getting rather crowded. And this is still the Dr Jekyll part.

“Just one more icon” is apparently a dangerous thing to say. A row needs inserting. A column needs hiding. Then there are merged cells, borders, filters... and suddenly the spreadsheet tools have become a small population of their own.

The experiment has spread into drawing and image tools, selections, clones, alignment and distribution, colour controls and paths. Then version-control graphs, users and groups, debugging, and Amarok’s filename and music controls. There is always another little corner asking for attention.

Jekyll is rather pleased ehhheheheaahahahahaa... hehehe behold the creation ...

413 Oxygen symbolic icons, each shown at 16, 22, 32, 48 and 64 pixels, with icon names. Alias icons excluded.

The commit count includes revisions, size variants, naming and cleanup. These creatures need quite a few visits before I let them out of the laboratory 🙂

Then comes the slightly terrifying realisation: I now have hundreds of icons to do for full-colour Oxygen as well. The symbolic work has been kinda writing the instructions for a much bigger horrible experiment.

I think I’ve created a monster.

Well I haven’t created that other monster yet. The full-colour one is still waiting to be brought to life... and it promises to be a far more terrifying creature. Mr Hyde hasn’t even entered the laboratory.

But there is good news! We have more victims... *cough* volunteers helping me now. Mwahahaha! So at least I have some company in the laboratory. I should probably warn them about what is still waiting downstairs 😉

Anyway... just one more icon.

Saturday, 14 November 2026

“Boiling the Ocean” is a sprint/hack days event series from GNOME with varying subjects, which I and a few others from KDE have been joining recently to discuss and collaborate on overlapping topics.

Banner image advertizing Boiling the Ocean 12 on Aug 22-23.
Boiling the Ocean 12 (source)

NFC

I have written about the state of NFC support for Plasma Mobile back in August, and a lot of this is common infrastructure for all Linux platforms, and it has to be to avoid making things messy as hardware access tends to be exclusive.

Together with the GNOME team we looked at our options for the Linux NFC stack. Beyond the ones mentioned in the above linked post there’s an additional one from Tizen. We agreed however that for now we’d try to make neard work first. My fixes for neard have meanwhile been integrated, which gives me some hope that might actually be viable.

The next steps would then be:

  • Expose ATS responses from ISO 14443-4 tags (sometimes also called “historical bytes”), which is needed for identifying the type of a tag.
  • Implement exclusive access to tags.
  • Implement a raw command interface for tags.

With that we should be able to support e.g. the AusweisApp use-case or reading FIDO2 tokens.

I hit a wall on the first item already unfortunately. There’s an attribute in the kernel API (NFC_ATTR_TARGET_ATS) to retrieve this information from tag discovery information, which however always returns an empty result, as this only becomes available later, during tag activation. And at that point there is no way to read it out anymore as far as I can tell.

All this is just a start though, there’s much more to do:

  • Implement Host Card Emulation (HCE) support in neard.
  • Implement NFC pass-through in Waydroid.
  • Figure out how to align/unify the Linux kernel NFC API and the PC/SC API.
  • Expose NFC and/or PC/SC APIs via XDG portals.
  • Make neard work without requiring root permissions.

See also the Boiling the Ocean 12 notes for more details.

Intents

Another topic to collaborate on are XDG Intents, which brings an important and powerful piece of infrastructure to Linux.

Besides the spec itself, there’s common tools such as the desktop-file-utils, which meanwhile have support for generating indexes of all available Intents.

On top of that we can then build the integration into KDE:

The first standardized Intent is the Terminal Intent, for which there’s also all required pieces in review meanwhile:

I don’t have the same level of insight on the implementation on the GNOME side, but with Glib support merged and terminal intents implemented this also looks well under way.

Emancipatory Computing

It’s not all about technical implementation details though. There’s also overlap in more fundamental questions on the vision of what we actually want to achieve and why we are doing all of this, in particular for those of us who have different ambitions than just being a random part of a software supply chain.

Digitalzwang

We went through a similar discussion about 10 years ago in KDE, resulting in the vision of a world in which everyone has control over their digital life and enjoys freedom and privacy. That’s still valid today I think, but one aspect is starting to show its age as the world has been changing since then.

The distinction between the digital life and the “real” life have been disappearing as more and more aspects of life involve some kind of digital interaction nowadays, such as mobility and travel, handling money, accessing your health records, or for setting up a new appliance. There’s the German term Digitalzwang describing this, which unfortunately doesn’t have a similarly compact English equivalent, meaning being forced to use (proprietary) digital means to use a service or participate in a certain aspect of society.

Rejecting that and asking for a right to participate in all of that entirely without digital means is a valid approach, but doesn’t address this entirely IMHO. I can travel with a paper ticket, but I wont be able to benefit from accurate up-to-date information in case of disruptions then. I don’t want to miss that and I don’t want to be forced to make a decision between a fully offline approach and using a proprietary app on a proprietary platform.

While there are technical aspects to addressing this, the bigger and harder part is actually political. We need guaranteed and fair access to the necessary interfaces, standards and procedures to interact with the “real” life things in order to provide free and open alternatives.

Self-hosting

Related to this is the topic of dependencies on cloud services. The GNOME team is doing interesting work with peer-to-peer networking, which could address parts of this, e.g. when it comes to collaboration tools and sharing your own data.

The ability to self-host is another part, and a necessary prerequisite. It’s not a solution in itself though, as hosting services yourself isn’t really accessible for most people.

There’s also services where wide-spread self-hosting isn’t viable for other reasons, Transitous is such an example. While that’s not even particularly complicated to set up for what it does, it only scales in very large increments. This means you can’t start with something small like the stereotypical Raspberry Pi but need a rather big server, and that’ll then be to handle way more requests than you likely need.

So we also need to figure out how can we run services as a community in a way that’s sustainable in the long run, and how can we design fair usage rules for those.

Permacomputing

Another aspect is looking at the negative impact our work causes, and minimizing this, like KDE Eco has done and is doing.

While ideas like permacomputing and hardware longevity were initially motivated by considering the climate and human rights impact of buying new devices, in the current situation it has become a simple necessity given the very limited availability of (affordable) hardware.

In the light of this it is even more painful to have to take decisions like dropping support for older Android platforms.

None of the above is something that anyone of us can solve on our own, this needs much bigger coalitions than just GNOME and KDE even. But with the distinction between the “digital life” and the “real life” fading away and rampant enshitification there’s also many more people affected and interested in these topics now.

Outlook

That’s just picking three topics from three different events, there are many more things that have been discussed and which benefit from coordination and collaboration, such as XDG portal APIs for contact and calendaring data, or scalability issues we observe with the current push notifications design, so there’s more to come.

Welcome to a new issue of This Week in Plasma!

This week a significant technical milestone was achieved: the XWayland compatibility layer is now loaded only when needed. Previously it had always been running even when no apps were using it, and fixing this required porting various system services away from legacy X11 code paths. This work was done by Vlad Zahorodnii, David Edmundson, and David Redondo, and will ship in Plasma 6.9.

But that wasn’t all, not by a long shot! Check it out here:

Notable new features

Plasma 6.9

You can now quickly forget networks from the Networks widget, not just its associated page in System Settings. (Peder Bergan, KDE Bugzilla #525852)

Networks Widget showing “Forget” context menu action for a network

The System Monitor app and widgets now include a sensor that lists the number of physical CPU cores. (Méven Car, ksystemstats MR #157)

Notable UI improvements

Plasma 6.9

System Settings’s Task Switching page has been ported to QML, with a substantially improved UI and the Overview effect’s settings included. (Oliver Beard and Tobias Fella, kwin MR #7604)

Screenshot of <nil>
Screenshot of <nil>

System Settings’ Date & Time page has also been ported to QML, with a simplified single-page design that makes it faster to change the time zone when needed. (James Graham and David Edmundson, plasma-desktop MR #3653 and plasma-workspace MR #6884)

New QML Date & Time page in System Settings

The desktop wallpaper configuration page now reserves more space for wallpapers, thanks to moving the combobox used for selecting the desktop type over to the “Layout” page. (Ramil Nurmanov, plasma-desktop MR #4113 and plasma-workspace MR #7294)

New New
Old Old

The Folder View widget and desktop icons now give you more size options, filling in a huge size gap between the largest size and the size right before it. (Nathan Heller, KDE Bugzilla #521201)

Spectacle’s darkened overlay now fades in and out. (Kai Uwe Broulik, spectacle MR #624 and kwin MR #10360)

When a grouped Task Manager task is flashing to get your attention, opening its group popup now reveals which specific window wanted attention. (Christoph Wolk, plasma-desktop MR #4225)

The Timer widget now lets you change a timer’s duration in the conventional way, without having to scroll over it. This also fixes some theming-related glitches. (Christoph Wolk, kdeplasma-addons MR #1251 and KDE Bugzilla #522797)

When using the Media Frame widget to show only a single image, it no longer cross-fades between that image and itself. (Christoph Wolk, KDE Bugzilla #518053)

The Comic Strip and Media Frame widgets now use consistent floating toolbars for their “Previous” and “Next” buttons, improving visual consistency and Fitts’ law adherence. (Christoph Wolk, kdeplasma-addons MR #1236 and kdeplasma-addons MR #1238)

System Settings’ Keyboard page no longer lets you toggle custom layouts on or off; it assumes that you want to use the system-wide keyboard settings until you add some custom ones, and now it clearly informs you of this. (Tobias Fella, plasma-desktop MR #3825)

System Settings’ Keyboard page showing a placeholder message that the system is using the “English (US)” keyboard layout, and inviting the user to override this at the user level if needed

Breeze-styled sliders now have nicer-looking tickmarks when using a fractional scale factor. (Eike Hein, breeze MR #649)

Plasma’s network share setup wizard is now more intelligent about populating its settings fields with information from a pasted URL, including the network protocol and whether the connection should be encrypted or not. (Méven Car, plasma-desktop MR #4216)

Job transfer notifications now show a prettier representation of the destination in cases where the destination is a special URL like desktop:/ or trash:/. (Tobias Fella, plasma-workspace MR #7391)

The Media Controller widget no longer shows tickmarks on its playback slider for media shorter than a minute in length. (Christoph Wolk and Yuma Kakei, plasma-workspace MR #7260 and libplasma MR #1608)

The Wobbly Windows effect (which you should absolutely be using) now includes some fun named presets for different levels of wobbliness. (Antti Savolainen, kwin MR #10308)

Frameworks 6.33

Throughout Plasma and Kirigami-based KDE apps, buttons that show text will no longer ever display a hover tooltip with the same text, because that’s silly. (Kai Uwe Broulik, kirigami MR #2232)

Qt 6.13

Focusing a QtWidgets-based KDE app by clicking on its hamburger menu button now changes all of the window’s colors to their focused versions, rather than only after the menu was closed. (Kai Uwe Broulik, KDE Bugzilla #452212)

Notable bug fixes

Plasma 6.6.8

The Task Manager widget’s textual list popup now looks correct when using a right-to-left language like Arabic or Hebrew. (Christoph Wolk, plasma-desktop MR #4197)

Fixed an issue that made pointers look a bit jagged in screencasts taken on screens using fractional scaling. (Anton Lisovskiy, KDE Bugzilla #528423)

Fixed an issue that made the Color Picker widget sometimes draw a contrast circle around saved colors at inappropriate times. (Christoph Wolk, kdeplasma-addons MR #1253)

Plasma 6.7.7

Fixed an issue in the Color Picker widget that prevented middle-clicking on a preview from copying the color to the clipboard. (Christoph Wolk, kdeplasma-addons MR #1254)

Plasma 6.8.3

Fixed a case that could make the screen locker crash (without unlocking the system, so there was no security issue) in certain cases when a screen was disconnected while the system was sleeping. (Drew, KDE Bugzilla #528438)

Fixed a case where System Settings could crash when the Wallpaper page was open and a screen was disconnected. (Nikolai Nyegaard, KDE Bugzilla #528380)

Fixed a recent regression that caused visual corruption on certain systems with Intel CPUs and NVIDIA GPUs. (Xaver Hugl, KDE Bugzilla #527163)

Fixed a recent regression that made the systemwide color picker fail to include a picked color’s alpha channel. (Jean-Baptiste Mardelle, KDE Bugzilla #528396)

Fixed a visual glitch on System Settings’ Color Scheme page that made some previews visually overflow. (Akseli Lahtinen, KDE Bugzilla #528106)

Fixed a subtle issue that caused inappropriate default scale factors to be chosen for some laptops and handheld gaming consoles. (Xaver Hugl, kwin MR #10327)

Global Themes once again correctly apply non-default font settings. (Alexander Berg, plasma-workspace MR #7340)

Plasma 6.8.4

Hardened KWin against crashing when a game like Elden Ring sent it invalid HDR data. (Xaver Hugl, KDE Bugzilla #528428)

Fixed a case where Discover could crash when you asked it to trash the orphaned data of an uninstalled Flatpak app whose runtime had also been uninstalled. (David Edmundson, KDE Bugzilla #528572)

Fixed a somewhat common way that Discover could crash on operating systems using its RPM-OSTree backend, including Fedora Kinoite and Bazzite. (Aleix Pol Gonzalez, discover MR #1445)

Fixed an issue that would make Plasma freeze if you put the Window List widget into a vertical panel wider than 144 pixels. (Christoph Wolk, KDE Bugzilla #527314)

Fixed a regression that could make certain fullscreen windows visually freeze when screen tearing was allowed and atomic modesetting was disabled. (Xaver Hugl, KDE Bugzilla #528579)

Fixed a regression that made it impossible to drag files and folders on the desktop across screens if their filenames contained URLs. (Akseli Lahtinen, plasma-desktop MR #4205)

Fixed a regression that made the “Add Widgets” sidebar sometimes open on the wrong screen of a multi-screen setup. (Niccolò Venerandi, KDE Bugzilla #528201)

Copying text on Info Center’s “About” page that you selected with the pointer now copies just that text, and the little message that tells you about it is now correct, too. (Tobias Fella, kinfocenter MR #324)

Plasma 6.9

The Plasma Browser Integration plugin no longer breaks the ability to share your screen using Microsoft Teams. (Kanishk Ranjan, KDE Bugzilla #507991)

Using an Alternate Calendar plugin in the Digital Clock widget no longer forces its events panel to appear when it would otherwise remain disabled. (Tobias Fella, KDE Bugzilla #497122)

Notable in performance & technical

Plasma 6.9

Spectacle is now even faster to launch, thanks to further optimizations and parallelizations. (Kai Uwe Broulik, spectacle MR #625 and spectacle MR #626)

The “Add Widgets” sidebar is now substantially faster to open, with a smoother animation, too. (Kai Uwe Broulik, plasma-desktop MR #4224 and plasma-workspace MR #7398)

Window thumbnails in the Task Manager widget no longer wastefully regenerate themselves when the pointer leaves them and returns, avoiding some unnecessary work and fixing a slight visual flicker. (Christoph Wolk, libplasma MR #1629)

If you’re using Plasma Login Manager as your login manager/greeter and it breaks for whatever reason, now it includes a simple fallback that at least gets you to a terminal, rather than stranding you at a black screen. (Harald Sitter, plasma-login-manager MR #232)

How you can help

KDE has become important in the world, and your time and contributions have helped us get there. As we grow, we need your support to keep KDE sustainable.

Donate to KDE’s current fundraiser! We’ve raised 42% of the funds we need to be in a better position for next year, so every little bit helps!

Beyond that, you can help KDE by directly getting involved in any other projects. Donating time is actually more impactful than donating money. Each contributor makes a huge difference in KDE — you are not a number or a cog in a machine! You don’t have to be a programmer, either; many other opportunities exist.

You can also help out by making a donation! This helps cover operational costs, salaries, travel expenses for contributors, and in general just keeps KDE bringing Free Software to the world.

To get a new Plasma feature or a bug fix mentioned here

Push a commit to the relevant merge request on invent.kde.org.

Friday, 13 November 2026

Let’s go for my web review for the week 2026-46.


From Linux to Wikipedia: How Volunteers Build the Internet

Tags: tech, foss, commons, community

Nice paper about how commons are built. Peer-production is really a powerful way to organise.

https://thereader.mitpress.mit.edu/from-linux-to-wikipedia-how-volunteers-build-the-internet/


Internet Cul-de-sac - a dead end worth visiting

Tags: tech, web, indie, culture

Neat place to discover plenty of other fascinating or quirky websites.

https://culdesac.site/


Blender 5.3

Tags: tech, 3d, blender, foss

This is again a very strong release from Blender. Lots of neat features. Kudos to them!

https://www.blender.org/download/releases/5-3/


The Myth of Neutral Code

Tags: tech, foss, politics, history

A reminder of where Free Software comes from. It’s never been apolitical mind you, claiming the contrary is misreading history.

https://foss.life/notes/2026/the-myth-of-neutral-code/


Weird licenses and the new open source

Tags: tech, foss, licensing, politics

More new licenses are surfacing. It looks like the Free Software licenses ran their course but are not enough anymore.

https://dustri.org/b/weird-licenses-and-the-new-open-source.html


Any Sane Person in Computers Right Now: “Are We the Baddies?”

Tags: tech, politics, history

Or the importance of community and studying other fields. The political landscape around tech has led to a turbocharged dystopia but there are other ways. Any bubble of humanism in the margins is precious and has to be kept. It’ll be needed someday.

https://theinternet.review/2026/02/17/are-we-the-baddies/


Exploit Machina

Tags: tech, innovation, politics, law

Interesting essay. It’s very much attuned to the US context but it’s a timely exploration of the current handling of innovation in our societies. Interestingly we’ve forgot that innovation and progress don’t necessarily go hand in hand. This isn’t without bad consequences.

https://www.andreamm.com/_files/ugd/26d278_b60b4140feb34bf2bfb6ab7405a27e99.pdf


How I accidentally became a millionaire

Tags: tech, ai, machine-learning, gpt, google, search, fake-news

It’s a good illustration of how information channels became very fragile. LLMs based systems reaching for openly available information on the web are very susceptible to being manipulated.

https://lyra.horse/blog/2026/11/disinformation-machine/


Why I will not be using LLMs in my coding

Tags: tech, programming, ai, machine-learning, copilot

Another good balanced post on the reasons to resist using LLMs for development.

https://www.polso.info/why-i-will-not-be-using-llms-coding


Pointer Provenance in Rust vs C++

Tags: tech, compiler, memory, rust

A good introduction on how and why compilers track pointers and memory locations. Also shows what can be used with Rust to handle provenance.

https://sofiabelen.github.io/projects/pointer-provenance-in-rust-vs-cpp/


The port that does not exist

Tags: tech, networking

This is wild! The amount of stuff which happens to listen on port 0 is surprising.

https://acid.vegas/blog/the-port-that-does-not-exist/


Are Emojis Allowed in XMPP Addresses?

Tags: tech, xmpp, standard, unicode, emoji

A deep dive in this funny question. This is a nice tour of a few RFCs around XMPP.

https://op-co.de/blog/posts/emoji_xmpp_address/


Iceberger

Tags: tech, physics, funny

Cool little simulation. Wondering how an iceberg might float? Draw your own.

https://joshdata.me/iceberger.html


I made a film in Excel

Tags: tech, spreadsheets, animation, funny

OK, this is definitely quirky and funny. It shows that any medium can be used if you’re motivated enough to create art. :-)

https://vimeo.com/1241981102


What Actually Happens When You Die?

Tags: science, biology, death

If you ever wonder about what will happen in your body in the end. This gives a good idea of the process and it’s longer than what we usually have in mind.

https://www.youtube.com/watch?v=fEjvSbI_PT4



Bye for now!

Friday, 13 November 2026

KDE today announces the release of KDE Frameworks 6.32.0.

This release is part of a series of planned monthly releases making improvements available to developers in a quick and predictable manner.

New in this version

Attica
  • Remove unimplemented methods. Commit.
Baloo
  • [UnindexedFileIteratorTest] Remove completely empty test. Commit.
  • [TermGenerator] Lowercase characters after stripping markings. Commit.
  • [TermGenerator] Reuse QString buffer for normalization. Commit.
  • [TermGenerator] Avoid rewriting input for underscore splitting. Commit.
  • [TermGeneratorTest] Remove Document dependency. Commit.
  • [TermGeneratorTest] Extend decomposition/normalization tests. Commit.
  • [TermGenerator] Fix incorrect boolean operation. Commit.
  • [baloosearch] Add parameter to limit default search scope. Commit.
  • [Query] Add scope parameter to limit search to filename, content, etc. Commit. See bug #472004
  • [SearchStore] Refactor search scope expansion. Commit.
  • [baloosearch] Fix empty types parameter. Commit.
  • [Extractor] Replace KIdleTime with signal from worker pipe. Commit. See bug #515338
  • [FileContentIndexer] Listen to idle signal and forward to extractor. Commit.
  • [IdleMonitor] Add DBus helper to listen for idle state. Commit.
  • [CommandPipe] Extend to allow passing other commands than index IDs. Commit.
  • [Codecs] Do not copy past the end of the vector in PostingCodec::decode. Commit.
  • [Extractor] Remove "common" properties from the PositionsDB. Commit.
  • [SearchStore] Use DocumentDB data to search for "common" metadata terms. Commit.
  • [Query] Remove deprecated API usage from tests/tools. Commit.
  • [IndexerConfig] Deprecate shouldBeIndexed in favor of canBeSearched. Commit.
  • [Term] Replace value QVariant with QString. Commit.
  • [SearchStore] Create PostingIterator from Query without intermediate Term. Commit.
  • [Query] Move searchstring parsing etc. to SearchStore. Commit.
  • [Query] Clean up signed/unsigned usage of limit. Commit.
  • [Query] Deprecate some redundant/underspecified API. Commit.
  • [SearchStore] Make SearchStore class a namespace. Commit.
  • [balooctl] Use DBus activation to start daemon after enable command. Commit.
  • [balooctl] Use DBus activation to restart daemon after purge command. Commit.
  • [baloo_file] Make the main daemon DBus-activatable. Commit.
  • [FileWatchTest] Remove obsolete FreeBSD QEXPECT_FAIL. Commit.
  • [Query] Remove intermediate JSON document when parsing type URLs. Commit.
  • [QuerySerializationTest] Add tests for type URLs. Commit.
  • [Term] Remove unused serialization/deserialization helpers. Commit.
  • [Query] Remove internal Term member from Query. Commit.
  • [Term] remove unused/unimplemented negation member. Commit.
  • [Query] Fix erroneous example in API documentation. Commit.
  • [TermGeneratorTest] Extend benchmark to longer input. Commit.
  • [TermGeneratorTest] Refactor test data for word segmentation/benchmark. Commit.
  • Service: make sure to order After plasma-workspace.target. Commit.
  • [Extractor] Remove unused capture variable. Commit.
  • [ExtractorCommandPipeTest] Refactor to better match real extractor. Commit.
  • [ExtractorTest] Prefix debug output from test code. Commit.
  • [TermGenerator] Keep textual content blocks adjacent. Commit.
  • [QueryTest] Add content matches for single trailing words. Commit.
  • [Result] Delay text processing to the finish() call. Commit.
  • [Result] Delay property term processing to the finish() call. Commit.
  • [TermGenerator] Drop the property term positions from the DB. Commit.
  • [SearchStore] Use PropertyPhraseQuery for property phrases. Commit.
  • [Transaction] Implement dedicated property phrase query. Commit.
  • [TermGenerator] Separate plaintext and property term indexing. Commit.
  • Service: do not start too early. Commit.
  • [TermGenerator] Drop the mimetype positions from the DB. Commit.
  • [QueryTest] Extend tests for MimetypeQuery. Commit.
  • [SearchStore] Use DocumentDataDB for mimetype phrase searches. Commit.
  • [Document] Store mimetype in the DocdataDB. Commit.
  • [Termgenerator] Add dedicated function for mimetype term generation. Commit.
  • [PropertyData] Modernize code, reject non-numeric keys. Commit.
  • [BasicIndexingBenchmark] Use correct mimetype for directories. Commit.
  • [QueryTest] Cleanup, remove obsolete SortedIdVector helper. Commit.
  • [QueryTest] Cleanup, use array for test document ids. Commit.
  • [QueryTest] Extend test for content with multiple pages. Commit.
  • [DocumentContentTest] Extend coverage to mixed property/text terms. Commit.
  • [Extractor] Free each result once its batch is committed. Commit.
  • [SearchStore] Fix parsing error for property comparison with float values. Commit.
  • [QueryTest] Add tests for integer/double valued properties. Commit.
  • [DocumentContentTest] Check processing of content indexing results. Commit.
  • [QueryTest] Add tests for KFileMetadata property term queries. Commit.
  • [Querytest] Add test for mimetype query. Commit.
  • [Document] Remove remaining filename positions method. Commit.
  • [TermGenerator] Drop the filename positions from the DB. Commit.
  • [SearchStore] Use IdFilenameDB for filename phrase searches. Commit.
  • [BasicIndexingBenchmark] Add more information to the output. Commit.
  • [QueryTest] Use separate test functions for content and filename queries. Commit.
  • [UnindexedFileIndexer] Fix type/mimetype updates without content indexing. Commit.
  • [ModifiedFileIndexer] Fix type/mimetype updates without content indexing. Commit.
  • [ModifiedFileIndexer] Add test cases. Commit.
  • [WriteTransactionTest] Replace test helper with standard QTest::toString. Commit.
  • [baloosearch] Basic test coverage for listTypes/listProperties. Commit.
  • [balooshow] Show property names when "-x" option is set. Commit.
  • [baloosearch] Add option to list supported properties for a query. Commit. Fixes bug #334552
  • [baloosearch] Extend help to provide some more hints about usage. Commit. See bug #334552
  • [baloosearch] Add option to list supported values for type option. Commit. Fixes bug #364078
  • [baloosearch] Modernize QStringList and QStringLiteral usage. Commit.
  • [SearchStore] Better error message for invalid string operator. Commit.
  • [SearchStore] Add debug output for invalid number or date values. Commit.
  • [SearchStore] Avoid over/underflow for less/greater operators. Commit.
  • [SearchStore] Do not crash on invalid user input for "tag" property. Commit.
  • [Searchstore] Improve internalProperties formatting. Commit.
  • [QueryTest] Fix uninitialized values when using isolated tests. Commit.
  • [SearchStore] Fix handling of modification date strings. Commit.
  • [SearchStore] Fix matching of unquoted string with separators like colons. Commit.
  • [QueryTest] Test prases starting with property separator. Commit.
  • [EngineQuery] Remove nesting from EngineQuery. Commit.
  • [SearchStore] Remove EngineQuery indirection for type and tag queries. Commit.
  • [KIO] Modernize deprecated KIO::UDSEntry::reserve() calls. Commit.
  • [ExtractorProcessTest] Avoid crash notification spam. Commit.
Breeze Icons
  • Update preferences-desktop-cursors to current Breeze cursor shape. Commit. Fixes bug #478494
  • Give klipper-symbolic a viewBox. Commit.
  • Move 32px klipper-symbolic to status. Commit.
  • Add "country", "country-state" and "city" icons. Commit. Implements feature #525905
  • Add symlinks for x-audacity-project+sqlite3. Commit. Fixes bug #527329
  • Add a symbolic icon for alligator. Commit.
Extra CMake Modules
  • ECMGenerateQDoc: Fix appending extra index directories. Commit.
  • Add support for QML_IMPORT_PATH. Commit.
  • ECMInstallIcons: document .svg as the scalable icon format. Commit.
  • ECMInstallIcons: install .svg scalable icons with the old form of arguments. Commit.
  • Add find module and macro to update the XDG Intent cache. Commit.
  • Ecm_test_set_dir_properties: fix comparing symlink-resolved path to one not. Commit.
  • Canberra, PulseAudio, UDev find modules: warn when reading deprecated vars. Commit.
  • Docs: add missing Since information to FindWaylandProtocols & Findepoxy. Commit.
  • Drop obsolete FOUND_VAR args to find_package_handle_standard_args. Commit.
  • Canberra, UDev, PulseAudio find modules: drop explicit uppercase FOUND variant. Commit.
  • ECMGenerateQDoc: Add framework path to includes. Commit.
  • Enable /bigobj with MSVC. Commit.
Framework Integration
  • Fix leak in kstyle_unittest. Commit.
KArchive
  • Kzip: set the UTF-8 flag on names that are not ASCII. Commit. See bug #82436
  • Kzip: read legacy names in the Windows OEM code page. Commit. Fixes bug #89051
  • Kzip: read the Info-ZIP Unicode Path extra field. Commit.
  • Kzip: read names without the UTF-8 flag as code page 437. Commit.
  • K7zip: validate the coder graph of each folder. Commit.
  • KTar: Write the end of archive marker. Commit.
  • Clean forward and includes. Commit.
  • CMake config: tag LibZstd properly as REQUIRED when searched. Commit.
  • KTar: Use extension to determine mimetype if contents give default mime. Commit.
  • CI: Use latest cmake via pip for oss-fuzz build job. Commit.
  • K7zip: decode the files on first read, not on open. Commit.
KAuth
  • Clean forward and includes. Commit.
KBookmarks
  • Remove unimplemented methods. Commit.
KCalendarCore
  • .pre-commit-config.yaml - fix indent. Commit.
  • (pre-commit) Give guidance to markdownlint on the nodejs version to check against to keep it happy. Commit.
  • .pre-commit-config.yml - Comment markdownlint-cli. Commit.
  • Clean forward and includes. Commit.
  • Fix reading GEO longitude with libicalv4. Commit.
  • Export the QML plugin target for static builds. Commit. See bug #526728
  • Format/lint all xml files and add pre-commit to enforce that. Commit.
  • Pre-commit autoupdate. Commit.
  • Pre-commit - keep yaml tidy with yamlfmt. Commit.
  • Limit each libical by_ array to its max size and don't double recurrences. Commit.
  • Implement occurrenceiterator exclude exception outside iterator range. Commit.
  • Refactor occurenceiterator setupIterator's handling of thisAndFuture. Commit.
  • Fix far event exception not being returned in iterator. Commit. Fixes bug #447966
  • Refactor occurenceiterator setupIterator function. Commit.
  • Reformat OccurenceIterator::setupIterator. Commit.
  • Autotests/testcalendarobserver.cpp - explicitly unregister observers. Commit.
  • Drop obsolete FOUND_VAR arg to find_package_handle_standard_args. Commit.
  • Correct the QML documentation module name. Commit.
  • Clazy detaching-temporary fixes. Commit.
  • Calendar.cpp - in Calendar::setModified() check if observers are enabled. Commit.
KCMUtils
  • Comment out linux-qt6-next. Commit.
  • AboutPage: Show the plugin's copyright and bug report URL. Commit.
  • Drop custom AboutPlugin in favor of Kirigami.AboutPage. Commit.
  • SimpleKCM, AbstractKCM: Handle a null kcm context property. Commit.
  • CMake config: drop no longer used template variable. Commit.
  • KF6KCMUtilsQuick: use only Qt6QmlIntegration in public interface. Commit.
KCodecs
  • Use latest cmake via pip for ossfuzz build job. Commit.
KColorScheme
  • Clean forward and includes. Commit.
KConfig
  • Remove unimplemented methods. Commit.
  • Fix check for user config files. Commit. Fixes bug #525267
  • KConfigIni: handle non-file devices when readLineInto fails. Commit.
  • KConfigIni: Stop parseConfig loop when readLineInto fails. Commit. Fixes bug #526441
  • Fix KConfig::copyFrom to be non const. Commit.
  • Ensure locale name with language code and country code. Commit.
  • Ossfuzz: Get a newer cmake from pip. Commit.
KConfigWidgets
  • KHelpClient: Apply anchors for handbooks. Commit.
  • Add kf6_entry for nan_TW. Commit.
  • Fix leak in kstandardactiontest. Commit.
KContacts
  • Fix parsePicture. Commit.
  • Port to C++ ranges. Commit.
  • Use ranges for sorting CustomData, LineMap and ParameterMap. Commit.
  • Replace std::find_if with std::ranges::find. Commit.
  • Use default == operator where possible. Commit.
  • Add fuzzer gitlab job. Commit.
  • Fix an infinite loop when parsing QUOTED-PRINTABLE. Commit.
  • Setup ossfuzz. Commit.
  • Remove unimplemented methods. Commit.
  • Clean forward and includes. Commit.
  • Implement sounds for VCard4. Commit.
  • Use default copy constructor. Commit.
  • Vcardparser: Always quote AUTHOR according to RFC 9554. Commit.
  • Vcardparser: Fix parameter handling according to RFC 6350. Commit.
  • Use default copy constructor in Address::Private. Commit.
  • Export the QML plugin target for static builds. Commit. See bug #526728
  • Use own QUICK_TEST_MAIN executable. Commit.
  • Skip failing test on Windows. Commit.
  • Require passing CI. Commit.
  • Doc: Update doc to best practice. Commit.
  • Doc: Fix todo about license. Commit.
  • Vcardparser: Implement RFC 6868 parameter escaping. Commit.
  • Addressee: Fix qml api doc brief and add code example. Commit.
  • Qml: Improve qml integration and add tests. Commit.
KCoreAddons
  • Fix documentation markup. Commit.
  • Fix documentation comment location. Commit.
  • Docs: Fix since version KFormat::formatDateTime. Commit.
  • Clean forward and includes. Commit.
  • KSDCMapping: unmap the shared memory segment only once. Commit.
  • CMake config file: ensure ECM's Inotify find module w/ static builds. Commit.
  • Fix documentation sentence. Commit.
  • Kformat: skip secsTo() for a date three or more days from today. Commit.
  • Kformat: count the relative day in the time zone of the date. Commit. See bug #525915
  • Autotests: wait for a later timestamp instead of a new second. Commit.
  • Kdirwatch: tell apart two changes made within one second. Commit.
  • Add new methods for formatting QDateTimes. Commit.
  • KDirWatch: use wide Windows stat calls for Unicode paths. Commit.
KCrash
  • Reuse: move autotest fixtures to REUSE.toml. Commit.
  • Coreconfig: support socket patterns. Commit.
KDav
  • Clean forward and includes. Commit.
  • Share the code that turns a DAV href into a URL. Commit.
  • Resolve the Location header after creating an item or collection. Commit.
  • Provide a new implementation for replyErrorString(). Commit.
  • Port away from naked QNetworkReply::errorString. Commit.
  • Add a replyErrorString method to DavJobBase. Commit.
  • Add missing include. Commit.
  • Remove unused include. Commit.
  • Fail the collection fetch when a home set can't be read. Commit.
  • Add DavPushDontNotify to DavMoveJob. Commit.
KDBusAddons
  • Clean forward and includes. Commit.
KDeclarative
  • Doc: Fix import name for kquickcontrolsaddons. Commit.
  • Draganddrop: Mark enabled properties as explicit overrides. Commit.
KDNSSD
  • Remove unimplemented methods. Commit.
KDocTools
  • Updated Dutch user.entities. Commit.
  • Update Turkish entities. Commit.
  • Drop obsolete FOUND_VAR args to find_package_handle_standard_args. Commit.
KFileMetaData
  • Ossfuzz: Fix libzip build. Commit.
  • Ossfuzz: Compile brotli earlier since poppler also needs it. Commit.
  • Ossfuzz: Fix compilation of ebook-tools with newer cmake. Commit.
  • Ossfuzz: Disable harfbuzz in poppler for now. Commit.
  • Oss-fuzz: Get a newer cmake from pip. Commit.
KGlobalAccel
  • Remove unimplemented methods. Commit.
  • Introduce org.kde.kglobalaccel.Component.{pressed,repeated,released}. Commit.
KGuiAddons
  • Fix bug 425562: Edit Identity > Help Button = Wrong URL. Commit.
  • KCountryFlagEmojiIconEngine: Fix HiDPI rendering. Commit.
KHolidays
  • (pre-commit) Give guidance to markdownlint on the nodejs version to check against to keep it happy. Commit.
  • Export QML plugin target and make it linkable in static builds. Commit. See bug #526728
  • Clean forward and includes. Commit.
  • Comment markdownlint-cli. Commit.
  • Pre-commit - autoupdate. Commit.
  • Holidays/holidays.qrc - consistent indentation (whitespace). Commit.
  • Add holiday files for Saudi Arabia. Commit.
  • Format/lint all xml files and add pre-commit to enforce that. Commit.
  • Pre-commit autoupdate. Commit.
  • Pre-commit - keep yaml tidy with yamlfmt. Commit.
KI18n
  • Export the QML plugin target for static builds. Commit.
  • Make KI18nLocaleDataQmlPlugin linkable in static builds of dependants. Commit.
  • Use std::setlocale instead of setlocale. Commit.
  • KF6I18nQml: place headers in separate include dir KI18nQml, not KI18n. Commit.
KIconThemes
  • KIconLoader::loadScaledIcon(): fix default arg size to null, not invalid. Commit.
  • Kiconloader.h: KIconLoader::loadScaledIcon() - Fix ambiguity of. Commit.
  • Drop unneeded and broken reset of QSize argument. Commit.
  • Export the QML plugin target for static builds. Commit. See bug #526728
  • KIconDialog: drop code variant for Qt < 6.10. Commit.
KIdletime
  • Remove unimplemented methods. Commit.
KImageformats
  • Make anitest and pictest load the built plugins. Commit.
  • Autotests: Add JXL lossy RGB test image. Commit.
  • JP2: fix Heap-use-after-free READ. Commit.
  • Heif: remove unnecessary call. Commit.
  • DDS: Limit the maximum number of images to 32. Commit.
  • Fix memory leak of SGI row tables on repeated read()/write(). Commit.
  • Fix qBound. Commit.
  • Update to the OSS-Fuzz test to verify all animations. Commit.
  • EXR: support for lossy HTJ2K quality introduced in OpenEXR 3.5. Commit.
  • Ensure that the palette does not have more than 256 values. Commit.
  • Clean forward and includes. Commit.
  • PSD: Iterate directly over the QHash instead of creating a temporary. Commit.
  • Fix overflow in DBODChunk::strideSize. Commit.
  • IFF: set every pixel of each line. Commit.
  • ANI: bound previousImage in nextImageDelay(). Commit.
  • Increase single test timeout due to continue failure of some CIs. Commit.
  • Fix oss-fuzz compilation error. Commit.
  • DDS: add DX10 BC6H support. Commit.
  • PCX: set every pixel of each line. Commit.
  • RAS: unpack 1-bit images with a color map. Commit.
  • DDS: simply use 0 for blue channel for readATI2(). Commit.
  • DDS: vendoring and using bcdec.h for DDS BC decompression. Commit.
  • IFF: fix stack overflow in PLTEChunk::count(). Commit.
  • MicroExif: fix wrong software tag in MicroExif::fromImage. Commit.
  • Revert "Disable LSAN due to obsolete JXRLIB on CI". Commit.
  • DDS: add DX10 BC4/BC5/BC7 support. Commit. Fixes bug #524495
  • Expose the underlying library version in the image metadata. Commit.
  • Heif: apply all rotation and mirror combinations. Commit.
  • Fix packbits for unsigned-char platforms. Commit.
  • Heif: reject large images prior decoding. Commit.
  • Fix jxrlib detection with vanilla jxrlib. Commit.
  • Ossfuzz: use baseline SIMD for libjxl. Commit.
  • Fix for alpha channel handling and sRGB color profiles. Commit.
  • Ossfuzz: update dependencies. Commit.
  • Oss-fuzz: Get a newer cmake from pip. Commit.
  • Enable perceptiveFuzzer for write tests. Commit.
  • EXIF: always use little-endian for UTF-16. Commit.
  • Avif: increase fuzziness in invalid-exif.avif.json to 44. Commit.
  • IFF: fix BODYChunk::deinterleave on big-endian. Commit.
  • IFF: fix DBODChunk::strideRead on big-endian. Commit.
  • TIM: fix 16BPP on big-endian. Commit.
  • FF: replace broken #if Q_LITTLE_ENDIAN. Commit.
  • Disable LSAN due to obsolete JXRLIB on CI. Commit.
KIO
  • Remove superfuous comments. Commit.
  • KUrlNavigator: Draw a panel, not frame. Commit.
  • Listjob: only build the url of a folder to recurse into. Commit.
  • Kioglobal_p: reject the MS-DOS characters in local folders on Windows. Commit. See bug #414478
  • Knewfilemenu: refuse a name that the file system of the folder rejects. Commit. See bug #414478
  • Copyjob: move the MS-DOS file name checks to kioglobal_p. Commit.
  • Kcoredirlister: keep an update job on the folder it updates. Commit. Fixes bug #507185
  • Kmountpoint: add isOnRemoteStorage and deprecate probablySlow. Commit.
  • Kfileitem: add isOnRemoteStorage and deprecate isSlow. Commit.
  • KFileWidget: Allow providing a custom state config. Commit.
  • Core/job: Don't squeeze the job url for its description. Commit.
  • FileUndoManager: Set total/processed file counts. Commit.
  • Openurljob: treat x-ms-dos-executable as a native binary only if binfmt_misc is enabled. Commit.
  • Remove unimplemented methods. Commit.
  • File_unix_copy: align copy_file_range calls on 8 MiB. Commit. Fixes bug #458001
  • Core/copyjob: Fix job tracker missing title when moving files. Commit.
  • File_unix_copy: copy with sendfile() between two filesystems. Commit.
  • Jobtest: skip chmodFileSetAcl where the system cannot set its ACL. Commit.
  • PasteDialog: Disable OK button when filename is empty. Commit. Fixes bug #438519
  • File: write back the data of put() as it arrives. Commit.
  • File_unix_copy: stop waiting for a window when the copy is cancelled. Commit.
  • File_unix_copy: give every slow mount a writeback window. Commit. See bug #423187
  • Jobtest: test a copy that writes back window by window. Commit.
  • File_unix_copy: flush a large file copied to a removable device. Commit. See bug #281270
  • File_unix_copy: write back copies to slow destinations as they go. Commit. See bug #281270. See bug #423187
  • Copyjob: show which source a move deletes after the flush. Commit. See bug #281270
  • Copyjob: flush a removable device when the copy fails or is cancelled. Commit. Fixes bug #281270
  • Jobtest: test a move to a destination with a local target URL. Commit. See bug #281270
  • Copyjob: record a kept source for undo once it is deleted. Commit. See bug #281270
  • Copyjob: delete moved sources after the flush of a removable device. Commit. See bug #281270
  • Copyjob: write a copy to a removable device before reporting success. Commit. See bug #281270
  • Improve presentation of url in "Create New Folder" dialog. Commit. Fixes bug #527768
  • PasteDialog: add icons for unregistered formats. Commit.
  • PasteDialog: Replace mismatched initial suffixes. Commit.
  • Kde-ci.yaml: use-ccache. Commit.
  • Filecopyjob: keep the metadata that the worker sent for the copy. Commit. See bug #281270
  • File: add a command that flushes a folder on a removable device. Commit. See bug #281270
  • File: report a copy to a removable device. Commit. See bug #281270
  • Kmountpoint: tell whether a mount is on a removable device. Commit.
  • Filepreviewjob: try again to remove a local copy that is still open on Windows. Commit.
  • Copyjob: stat a source folder that is cached only as a listing root. Commit. Fixes bug #527143
  • Kfileitemactions: use the plural for several selected folders. Commit. Fixes bug #527485
  • Filepreviewjob: remove the local copies of remote files that previews leave. Commit. Fixes bug #527064
  • DropJob: Actually copy QMimeData formats. Commit.
  • DropJob: Only consider hasArk when DBus is available. Commit.
  • File_unix: replace a symlink in one rename. Commit.
  • File: set the owner and the times of a put on the open file. Commit.
  • File: set the modification time to the millisecond. Commit.
  • File: replace the destination of a put in one rename. Commit.
  • Filesystemfreespacejob: report sizes no filesystem has as unsupported. Commit. See bug #431050. See bug #503640
  • Copyjob: give a copied folder the user extended attributes of its source. Commit. See bug #527182
  • Kdirmodeltest: report a lost rename instead of failing the tests after it. Commit.
  • File_unix: let the kernel refuse an existing destination of a rename. Commit.
  • Kfileitem: find the mount of a listed item by its mount id. Commit.
  • File: only send a unique mount id as UDS_MOUNT_ID. Commit.
  • Kmountpoint: read a mount by its unique id with statmount(). Commit. Fixes bug #272361. See bug #513176
  • Jobtest: let safeOverwrite see dest.part during the copy. Commit.
  • Kmountpoint: compile the mount id cache only with STATX_MNT_ID_UNIQUE. Commit.
  • File_unix_copy: remove unused s_maxIPCSize variable. Commit.
  • File: read the free space without the volume label. Commit.
  • KEmailClientLauncherJob: Forward to Qt when sandboxed. Commit.
  • KEmailClientLauncherJob: Remove wrong documentation. Commit.
  • Filepreviewjobtest: test a standard thumbnailer with quotes in the file name. Commit.
  • Standardthumbnailjob: give the thumbnailer each file path as one argument. Commit.
  • FilePreviewJob: Override doKill and kill subjobs. Commit. Fixes bug #526997
  • KMountPoint: avoid path canonicalization before mount-ID lookup. Commit.
  • Renamefiledialog: Show inline warnings in Rename File dialog for file type change and hidden files. Commit.
  • Favicontest: use a local http server instead of web sites. Commit.
  • Faviconscache: find the icon of a site on a non-default port. Commit.
  • Trash: fix the crash when a full trash deletes a directory. Commit. Fixes bug #520794
  • KDirModel: update the folder icons when the samba shares change. Commit.
  • Hold KSambaShare's private class in a std::unique_ptr. Commit.
  • Add a benchmark for the samba usershare load. Commit.
  • Do not resolve the samba interfaces when listing usershares. Commit. Fixes bug #466195. See bug #526668
  • Load samba usershares with asynchronous processes. Commit. Fixes bug #446923. Fixes bug #513329. Fixes bug #526668
  • DeleteOrTrashJob: make the confirmation transient for the window of the job. Commit.
  • Kpasswdserver: test that a wallet which never answers is given up on. Commit.
  • Kpasswdserver: stop waiting 24 days for the wallet to open. Commit. Fixes bug #526368
  • Kpasswdserver: do not ask a wallet that is switched off. Commit. See bug #526368
  • Open With: remember an unknown file under a type made for its extension. Commit. See bug #425154
  • File_unix: read a directory before deleting from it. Commit.
  • Kpropertiesdialog: Report progress and properly cancel checksum calculation. Commit.
  • File: create the destination of a copy before looking at it. Commit.
  • File: adapt the copy_file_range chunk size to how long a call takes. Commit.
  • Filewidgets/KUrlNavigatorMenu: close when drag operation leaves menu or button. Commit. Fixes bug #526048
  • Kmountpoint: Update fstypes from util-linux. Commit.
  • KFileDialog::getStartUrl(): Support the "kfiledialog:///keyword/filename" case. Commit.
  • KDirModel: show the modification time in local time. Commit. Fixes bug #525915
  • Add commit-checks to kde-ci.yml. Commit.
  • Drop obsolete FOUND_VAR args to find_package_handle_standard_args. Commit.
  • Filepreviewjobtest: check that the empty files are created. Commit.
  • Kemailclientlauncherjob: remove the unused addString lambda. Commit.
  • Kio_help: stop setting the libxml2 parser defaults. Commit.
  • Workerinterface: remove readFilesize_t. Commit.
  • Kmountpoint: put parentheses around the fuse check in probablySlow. Commit.
  • Filewidgets/kurlnavigatorbutton: drop to UDS_TARGET_URL when protocol provides it. Commit. Fixes bug #440941
  • Autotests: give kfilewidgettest three minutes. Commit.
  • Kdirlistertest: give testSFTPRedirect two seconds to complete. Commit.
  • Kfileitemactions: allow plugins to receive a QObject parent for their actions. Commit.
  • Autotests: run the delete-or-trash job test on Windows. Commit.
  • Trash: add a Windows recycle-bin worker test. Commit.
  • Trash: implement the recycle-bin worker on Windows. Commit. Fixes bug #441218
  • Autotests: build deletejobtest on Windows. Commit.
  • Deliver the kill of a job to its worker process on Windows. Commit.
  • File_win: remove a directory as soon as it is empty. Commit.
  • BatchRenameJob: don't drop the tail of a name after a non-extension dot. Commit. Fixes bug #492660
  • Deletejobtest: kill the recursive deletion only after a byte report. Commit.
  • Drop code variants for Qt < 6.10. Commit.
  • File_unix: stat listed entries relative to the directory. Commit.
  • File_unix: stat entries with an unknown d_type in a basic listing. Commit.
  • KFilePlacesViewTest::testUrlChanged: fix memory leakage of model. Commit.
Kirigami
  • Primitives: Stabilize icon alignment during window resizing. Commit.
  • Dialog: Hide footer separator if there is no footer. Commit.
  • Make the Card version of From Entry work better when used in a normal ColumnLayout. Commit.
  • Layouts: only accept forward mouse button when such page exists. Commit. Fixes bug #494216
  • Mateial: Use non interactive scroll indicator with Material. Commit.
  • Primitives: Align node rect position of Icon to device pixel grid. Commit. Fixes bug #522336
  • FormAction: Don't fire twice on click. Commit.
  • Improve the look of switchs in Forms when using card mode. Commit.
  • Remove unimplemented methods. Commit.
  • Fix property documentation in TitleSubtitleWithActions. Commit.
  • Add Material implementation for OverlayDrawer. Commit.
  • Material: Fix background in AbstractApplicationHeader when using a dark theme. Commit.
  • AboutItem: Add showLibraries. Commit.
  • AboutItem: Hide the copyright separator and License card when empty. Commit.
  • AboutItem: Fix the "Report a bug" link. Commit.
  • AboutItem: Keep author names next to their avatar. Commit.
  • AboutItem: Reflow license texts. Commit. See bug #486305
  • InlineMessage: Update material design implementation. Commit.
  • Doc typo fix. Commit.
  • PageRow: Use application modality on macOS for dialogs. Commit.
  • Avatar: Put back the Avatar component in Controls. Commit.
  • Allow to trigger MenuDialog actions via AT-SPI. Commit.
  • WheelHandler: don't transpose the delta on wayland as well. Commit. Fixes bug #526317
  • WheelHandler: don't transpose the delta on wayland as well. Commit. Fixes bug #526317
  • Fix double action triggering when activating toolbar buttons via AT-SPI. Commit.
  • Material: Fix background color. Commit.
  • AbstractApplicationHeader: Provide an implementation for the Material style. Commit.
  • Material: Improve styling of the page header. Commit.
  • Add material version of Badge component. Commit.
  • Material: Fix disabled text color. Commit.
  • Provide implementation of NavigationTabBar for material. Commit.
  • Remove the no longer needed/used polyfill module. Commit.
  • Fix binding loop for y in Dialog.qml. Commit.
  • PageRow: Remove warning, null is an object. Commit.
  • Controls: use toolTipDelay in ActionTextField. Commit.
KItemModels
  • Remove unimplemented methods. Commit.
  • Clean forward and includes. Commit.
  • KRearrangeColumnsProxyModelTest: give shouldNotNestReset's connection a context object. Commit.
KMime
  • Oss-fuzz: Get a newer cmake from pip. Commit.
KNewStuff
  • Httpworker: let the compiler do the literal concatenation. Commit.
  • KNewStuffQuick::CommentsModel: drop code variant for Qt < 6.10. Commit.
KNotifications
  • Add support for reciving an activation token with the portal backend. Commit.
KPackage
  • CMake config: drop no longer used template variable. Commit.
KParts
KPeople
  • Remove unimplemented methods. Commit.
KQuickCharts
  • Controls/LegendDelegate: don't override default font features. Commit.
KRunner
  • Remove unimplemented methods. Commit.
  • Clean forward and includes. Commit.
  • Add test for the DBus runner desktop metadata fields. Commit.
  • DBusRunner: expose full plugin metadata from the desktop file. Commit.
  • Fix flaky ThreadingTest::testDeletionOfRunningJob. Commit.
  • Revert "Enable LSAN in CI". Commit.
KService
  • Remove unimplemented methods. Commit.
  • Add cli test for KApplicationTrader. Commit.
  • Ensure consistent sorting of KServiceOffer. Commit. Fixes bug #525989
KSVG
  • SvgItem, FrameSvgItem, ImageSet: cache colors lookup result in ImageSet itself. Commit.
  • SvgItem, FrameSvgItem: look up colors once per image set. Commit. Fixes bug #501406
KTextEditor
  • Fix use-after-free when an edit removes a nested folded range. Commit.
  • Fix out of range reads in the script document API. Commit.
  • Fix leak of the line layout of the bracket match preview. Commit.
  • Fix marks getting lost or moved twice when joining lines. Commit.
  • Fix double delete of a view when deleting a document with views. Commit.
  • Remove unimplemented methods. Commit.
  • Clean forward and includes. Commit.
  • Fix Kate snippet templates with empty tabstops and selection overwrite. Commit. Fixes bug #478303
  • Explicitly ignore return value from sonnet. Commit.
  • Vi-mode: Keep existing selection when entering Visual Mode. Commit. Fixes bug #526924
  • Fix minimap overflow with ranges ending behind the line end. Commit.
  • Refuse to save as a file that is open in another document. Commit. See bug #521546
  • Check for an already open file in all save as dialogs. Commit. See bug #521546
  • Ask to close the other document when saving as a file that is open. Commit. Fixes bug #521546
  • Clear the undo history before auto reloading a file changed on disk. Commit. Fixes bug #523615
  • Tests with ASAN on FreeBSD are very slow. Commit.
  • Don't iterate the group lists while modifying them. Commit.
  • Rendering: fix caret rendering for line height scaling. Commit. Fixes bug #524760
  • Drop obsolete FOUND_VAR arg to find_package_handle_standard_args. Commit.
  • Fix -Wunnecessary-virtual-specifier warnings. Commit.
  • Simplify the match code a bit for the selection highlighting. Commit.
  • Fix compile by adding missing default search flags to call. Commit.
  • View: match exact character sequences for selection occurrence highlights. Commit. Fixes bug #487095
  • Autotests: don't use single view mode. Commit.
  • Autotests: remove unused var. Commit.
  • Autotests: fix compile warnings. Commit.
  • Autotests: simplify setup. Commit.
  • Autotests: more explicit cleanups. Commit.
  • Autotests: more explicit cleanups. Commit.
  • KateViewEncodingAction: simplify code. Commit.
  • Autotests: more explicit cleanups. Commit.
  • Autotests: better permission reset before cleanup. Commit.
  • KateScrollBar::contextMenuEvent: drop no longer needed Qt version check. Commit.
  • Drop no longer needed Qt < 6.10 operator""_sv polyfill. Commit.
KTextTemplate
  • Remove unimplemented methods. Commit.
  • Use default locale rather than system locale by default. Commit.
KTextWidgets
  • Remove unimplemented methods. Commit.
  • Fix LSAN failure in kreplacetest. Commit.
KUnitConversion
KUserFeedback
  • SingleRowFilterProxyModel: drop code variant for Qt < 6.10. Commit.
KWallet
  • Ksecretd: exit session-scoped instances when their logind session closes. Commit.
  • Remove unimplemented methods. Commit.
  • Improve new wallet onboarding. Commit. Fixes bug #353960
  • Drop obsolete FOUND_VAR arg to find_package_handle_standard_args. Commit.
KWidgetsAddons
  • Remove unimplemented methods. Commit.
  • KMessageWidget: Draw the border 1px wide in all positions. Commit.
  • Update kcharselect-data to Unicode 18.0. Commit.
  • Kdatetable use en_US. "colour" -> "color". Commit.
  • Set KPageWidget's layout content margins to 0. Commit. Fixes bug #527178
  • KFontChooser: fix font feature setting. Commit. Fixes bug #523757
  • Kselectaction: Delete menu immediately. Commit.
  • KCapacityBar: Remove direct painter, use CE_ProgressBar instead. Commit.
  • High-contrast color scheme check helper: drop code variant for Qt < 6.10. Commit.
KWindowSystem
  • Clean forward and includes. Commit.
  • Platforms/wayland: Don't set a toplevel tag without the tag manager. Commit.
  • Platforms/wayland: Don't create a background effect to remove the blur. Commit. Fixes bug #522547
KXMLGUI
  • Add a test for dock state not being saved during startup. Commit. See bug #430969
  • KMainWindow: don't persist dock state until the window has settled. Commit. Fixes bug #430969
  • Restore KConfig shortcuts after refresh. Commit. See bug ##429743
Network Manager Qt
  • Remove unimplemented methods. Commit.
Prison
  • Drop obsolete FOUND_VAR args to find_package_handle_standard_args. Commit.
Purpose
  • Plugins/clipboard: make the name follow HIG. Commit.
QQC2 Desktop Style
  • Use SmoothPixmapTransformation for controls painting. Commit. Fixes bug #527335
  • Clean forward and includes. Commit.
Solid
  • Clean forward and includes. Commit.
  • Remove unimplemented methods. Commit.
  • Fstab: Add backend support for ceph and fuse.ceph. Commit.
  • Solid/UDisks2: read HintIconName from UDisks properties. Commit.
  • Drop obsolete FOUND_VAR args to find_package_handle_standard_args. Commit.
Sonnet
  • Core/settings: Add restore function to revert changes. Commit.
  • Fix outdated comment. Commit.
  • Unexport, devirtualize and de-pimpl Sonnet::TextBreaks. Commit.
  • Remove unimplemented methods. Commit.
  • Use a dedicated trigram type for language detection. Commit.
  • Add view-based speller API overloads. Commit.
  • Use QStringView in the spell checker plugin interface. Commit.
  • List dictionary languages only once when guessing language. Commit.
  • Aspell: Reduce allocation by half during spellchecking. Commit.
  • Make plugins findable prior to installation. Commit.
  • Don't leak Voikko instance. Commit.
  • Actually build manual tests. Commit.
  • Add missing docs. Commit.
  • Quick: Don't use red text when we can have squiggly line. Commit.
  • Unify static and dynamic plugin loading. Commit.
Syndication
  • Lazily initialize QCryptographicHash. Commit.
Syntax Highlighting
  • Tests with ASAN on FreeBSD are very slow. Commit.
  • C++: add #embed, __has_embed, contract_assert and indeterminate attribute. Commit.
  • Used same skipOffsetId for identical keyword list. Commit.
  • SkipOffsets cache now shares the same identifier for identical regexps. Commit.
  • Share QRegularExpression across all rule instances. Commit.
  • Groups all the rules into a single container to eliminate the shared_ptr. Commit.
  • Rename HighlightingContextData to HighlightingData. Commit.
  • JSON5: add Unquoted Key and fix unicode regex. Commit.
  • JSON: fix unicode regex. Commit.
  • CSV: auto detect separator and merge all contexts to have only one theme configuration. Commit.
  • Add optional counter with #pop in a context. Commit.
  • Drop no longer needed Qt < 6.10 operator""_sv polyfill. Commit.
Threadweaver
  • En_gb -> en_us. "behaviour" -> "behavior". Commit.

Kwi has continued to mature at a fast clip over the past week, with many a bug slain and a significant amount of UI refinement.

Exciting news also from our important upstream, the Ghostty project: Earlier than we had anticipated, libghostty-vt was released in version v1.0 on the weekend. This provides Kwi with a stable API/ABI from our headless terminal emulation backend, which will greatly aid distros and packaging efforts in particular.

For the Ghostty project this is the culmination of a solid half-decade of work - congratulations to mitchellh and many other contributors over there!

Progress Tracker

  • Terminal:
    • Shift-click now extends selections, just like in Konsole (feature request #528514)
    • Sharper, better rendering of geometric symbols at fractional scales
    • Improved grid size calculations at fractional scales
    • Improved font baseline placement
    • Additional performance improvements in text rendering
    • Configured SSH aliases/hostnames are now used in tab titles instead of resolved IPs; this was filed as a regression defect against Konsole we fixed in Kwi (bug #524673)
    • Fixed a greyscale glyph placement bug that caused e.g. Noto Sans Mono's i character to act up when LCD filtering was disabled in the text renderer (bug #528550)
  • Tab bar:
    • New output causes background tabs to get colorful title text to communicate activity, à la Konsole (feature request #528658)
    • Dragging files, URLs and similar over tabs now raises them after a brief delay, to make it easy to drop those contents into the tab (feature request #15)
    • On popular request, the tab bar is now overall significantly more compact (on Matrix and reddit, and in other places)
    • Tab button contents are laid out more pleasingly
    • Ditto for tool buttons on the tab bar
    • As a small cleanup, the typically redundant default tab icon is no longer shown; special status icons remain (by popular request on Matrix)
    • Icons that are line art (e.g. many symbolic Breeze icons) are now colorized to match the tab title text (which goes nicely with the above activity coloring)
    • If the window is fullscreen, care is taken that tab buttons are proper click targets at the screen edge (c.f. good old Fitts' law) (bug #528546)
    • Default tab switching shortcuts now match Konsole's (both primary and alternate; requested on Matrix)
    • The bottom divider below the tab bar now looks better and more consistent with other KDE apps at fractional scale
    • A window's terminal grid size is now preserved correctly when the window is moved between screens with different fractional scales (bug #528515)
  • Other UI:
    • Kwi now supports the "Find Action" dialog that many other KDE apps offer (similar to a Command Bar in other apps), available via the standard Ctrl+Alt+I shortcut (requested on reddit)
    • The background opacity slider now uses a less granular tick step to make it look less busy, and space for its label is reserved so the slider doesn't change width during use
    • All windows now share a single QML engine, slightly improving resource usage
  • Portability:
    • Sandboxed Kwi (Flatpak) now works on certain NixOS, and potentially other, systems with unusual PATH/filesystem setups (bug #528754)
    • Kwi now works on BusyBox-based systems (by using the portable timeout -s instead of timeout --signal=; reported on Matrix)
  • Dependencies:
    • Bumped our libghostty-vt dependency first to v1.0, then to v1.0.1
  • Project bits:
    • Updated the example screenshot for Kwi's KDE apps listing (note: the CDN updates these only very slowly)

Additionally, because Kwi is built on KDE's latest technologies, we sometimes get to find and fix bugs upstream of the project, or contribute new features needed by Kwi.

Upstream This Week - by Kwi, for everyone:

  • We fixed a bug in KDE's KDBusAddons library so that running Kwi from a terminal will open the new window in the terminal's current working directory, even if Kwi is already running (MR #75, bug #528661).
  • We fixed a bug in KDE's Kirigami UI library that made it impossible to configure Alt+Arrows as shortcuts in Kwi (MR #2234, bug #528659).
  • We worked on components in KDE's Kirigami Application Components UI Library to allow the "Find Action" action dialog to work in apps which can open multiple windows, along with enabling some code cleanups/reductions in Kwi (MR #27).
  • Further in Kirigami Application Components, we fixed a bug that made it hard to search for certain actions using the search field in the "Find Action" dialog (MR #26).
  • One more in Kirigami Application Components, we have a contribution remaining in flight that will fix invoking actions in the dialog using the Enter/Return keys (MR #29).
  • In KDE's Breeze UI theme we fixed the rendering of slider tickmarks at fractional scale (MR #649), as seen in Kwi's Settings dialog.

Update on Release

As mentioned last week, Kwi continues to undergo the "KDE Review" process at the moment, a community quality gate through which it will graduate to become an official KDE project. While we have already completed the required checklist, the minimum mandatory duration is two weeks. Kwi will complete this on November 18th.

Shortly thereafter we plan to tag a v0.1 release and publish to Flathub!

Outlook

Also mentioned last week, we're working on a way to make it easy to switch classic KDE apps such as Yakuake and Dolphin to embed Kwi.

While the Kwi-side bits have been in place since its initial publication, this is mainly about providing a central setting to make this easier for users (currently it requires fiddling in the filesystem). We now have a prototype implementation, and plan to submit a merge request to the relevant KDE project (roughly in the dependency stack of System Settings) soon.

Now the bad news: Expect Kwi development to move a bit slower in coming weeks, and focus mainly on important bug fixes. There may even be a brief interruption in this newsletter! The reason is brief interruption by work on other projects related to things nearly as old as UNIX terminals.

Once we are back to full capacity, we plan to begin work in earnest on the implementation of the much-requested Split Panes.

Thursday, 12 November 2026

KDE e.V., the non-profit organisation supporting the KDE community, is looking to hire a software engineer to help improve the software stack that KDE software relies on. Please see the call for proposals for more details about this contract opportunity. We are looking forward to your application.

The full call for proposals has more details.

Wednesday, 11 November 2026

It has been brought to the attention of the KDE security team that NeoNova Animated Wallpaper (https://github.com/abbygraceton1992/NeoNova-KDE-Wallpaper) is shipping malware.

This report came from Serg Star who spotted it reviewing this code. It's great that we have people spotting this stuff, though it may be too late for some.

The Malware

The package looks very legit, its an animating wallpaper that works as advertised, they even did later commits on top adding configuration options!

However since the initial commit the code has been shipping hidden malware.

A script (hidden in a base64 string in a base64 string) makes a web request to download an "image", which is another bash script which in turn downloads a libary .so file into ".config/Plasma6Library.so" and launches it via LD_PRELOAD=~/.config/Plasma6Library.so sleep 999999
The payload thus far looks like this: https://github.com/BishopFox/sliver which is designed to allow remote control.

If you have installed this wallpaper, a good test would be checking for .config/Plasma6Library.so and I would suggest starting anew.

What Happens Now

There is only so much we can do with 3rd party content. We have reported it to all relevant places including Pling and OpenDesktop who have taken swift action within hours of us getting the report.

It it a stark reminder to be vigilant and wary when installing external content from other sources especially those that run in unsandboxed contents, and a reminder to those of us working on the Linux desktop to continue working on technologies that allow for safer and better distribution.