<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet href="/html-rss.xsl" type="text/xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Planet KDE | English</title><link>https://planet.kde.org/</link><description>Planet KDE | English</description><image><link>https://planet.kde.org/</link><title>Planet KDE</title><url>https://planet.kde.org/img/planet.png</url><height>48</height><width>48</width></image><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>2026-05-12T06:29:42+00:00</lastBuildDate><atom:link href="https://planet.kde.org/index.xml" rel="self" type="application/rss+xml"/><item><title>Introducing the Documentation MCP Tool for Qt</title><link>https://www.qt.io/blog/introducing-the-mcp-tool-for-qt-documentation</link><pubDate>Tue, 12 May 2026 06:29:42 +0000</pubDate><guid isPermaLink="true">https://www.qt.io/blog/introducing-the-mcp-tool-for-qt-documentation</guid><description>&lt;div class="hs-featured-image-wrapper"&gt;
&lt;a target="_blank" href="https://www.qt.io/blog/introducing-the-mcp-tool-for-qt-documentation?hsLang=en" title="" class="hs-featured-image-link"&gt; &lt;img src="https://www.qt.io/hubfs/Qt%20Documentation%20MCP%20Tool%20Title.png" alt="Introducing the Documentation MCP Tool for Qt" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;How a Documentation MCP Tool Saves LLM Token Usage&lt;/h2&gt;
&lt;p&gt;Every time an AI agent searches the web for Qt documentation today, it receives full HTML pages loaded with navigation chrome, cookie banners, related-article sidebars, and search-engine snippets that have nothing to do with the answer - burning thousands of LLM tokens before a single line of useful content appears. Qt's new official Model Context Protocol (MCP) tool for Qt documentation solves this directly.&lt;/p&gt;
&lt;img src="https://track-eu1.hubspot.com/__ptq.gif?a=149513&amp;amp;k=14&amp;amp;r=https%3A%2F%2Fwww.qt.io%2Fblog%2Fintroducing-the-mcp-tool-for-qt-documentation&amp;amp;bu=https%253A%252F%252Fwww.qt.io%252Fblog&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</description><author>Qt Dev Loop</author></item><item><title>KDE Plasma 6.6.5, Bugfix Release for May</title><link>https://kde.org/announcements/plasma/6/6.6.5/</link><pubDate>Tue, 12 May 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://kde.org/announcements/plasma/6/6.6.5/</guid><description>&lt;p&gt;Today KDE releases a bugfix update to KDE Plasma 6, versioned 6.6.5.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://kde.org/announcements/plasma/6/6.6.0/"&gt;Plasma 6.6&lt;/a&gt; was released in February 2026 with many feature refinements and new modules to complete the desktop experience.&lt;/p&gt;
&lt;p&gt;This release adds a month’s worth of new translations and fixes from KDE’s contributors. The bugfixes are typically small but important and include:&lt;/p&gt;
&lt;a target="_blank" href="https://kde.org/announcements/changelogs/plasma/6/6.6.4-6.6.5"&gt;View full changelog&lt;/a&gt;</description><author>KDE Community</author></item><item><title>Interview on Linux User Space show</title><link>https://pointieststick.com/2026/05/11/interview-on-linux-user-space-show/</link><pubDate>Mon, 11 May 2026 19:20:35 +0000</pubDate><guid isPermaLink="true">http://pointieststick.com/?p=29022</guid><description>&lt;p class="wp-block-paragraph"&gt;Recently I went on the &lt;a target="_blank" href="https://www.linuxuserspace.show"&gt;Linux User Space show&lt;/a&gt; to talk about KDE Linux, business, and everyone&amp;#8217;s favorite topic: AI. It was a pretty interesting conversation; check it out:&lt;/p&gt;
&lt;figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"&gt;&lt;div class="wp-block-embed__wrapper"&gt;
&lt;iframe class="youtube-player" width="1100" height="619" src="https://www.youtube.com/embed/wUQtmVpj1OE?version=3&amp;#038;rel=1&amp;#038;showsearch=0&amp;#038;showinfo=1&amp;#038;iv_load_policy=1&amp;#038;fs=1&amp;#038;hl=en&amp;#038;autohide=2&amp;#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"&gt;&lt;/iframe&gt;
&lt;/div&gt;&lt;/figure&gt;</description><author>Nate Graham</author></item><item><title>“how does it make you feel”</title><link>https://nuno-icons.com/2026/05/11/how-does-it-make-you-feel/</link><pubDate>Mon, 11 May 2026 14:18:46 +0000</pubDate><guid isPermaLink="true">https://nuno-icons.com/?p=147</guid><description>&lt;p&gt;So&amp;#8230; while doing some work on Oxygen I noticed there was no camera-video icon.&lt;/p&gt;
&lt;p&gt;No Oxygen one.&lt;br&gt;Wille there was already a recently done symbolic one.&lt;/p&gt;
&lt;div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex"&gt;
&lt;div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"&gt;&lt;div class="wp-block-image"&gt;
&lt;figure class="aligncenter size-full"&gt;&lt;img fetchpriority="high" decoding="async" width="256" height="256" src="https://nuno-icons.com/wp-content/uploads/2026/05/camera-video-2.png" alt="" class="wp-image-152" srcset="https://nuno-icons.com/wp-content/uploads/2026/05/camera-video-2.png 256w, https://nuno-icons.com/wp-content/uploads/2026/05/camera-video-2-150x150.png 150w" sizes="(max-width: 256px) 100vw, 256px" /&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"&gt;&lt;div class="wp-block-image"&gt;
&lt;figure class="aligncenter size-full"&gt;&lt;img decoding="async" width="256" height="256" src="https://nuno-icons.com/wp-content/uploads/2026/05/camera-video-symbolic-2.png" alt="" class="wp-image-153" srcset="https://nuno-icons.com/wp-content/uploads/2026/05/camera-video-symbolic-2.png 256w, https://nuno-icons.com/wp-content/uploads/2026/05/camera-video-symbolic-2-150x150.png 150w" sizes="(max-width: 256px) 100vw, 256px" /&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Which honestly felt a bit odd considering cameras are one of those objects designers historically cant resist over designing heee&amp;#8230; (but then again i got a bit 2 distracted about the future and forgot to look behind me at what was still pretty good)&lt;/p&gt;
&lt;p&gt;So I ended up making both versions almost back to back.&lt;/p&gt;
&lt;p&gt;Now&amp;#8230; I already knew exactly what was going to happen.&lt;/p&gt;
&lt;p&gt;I have been doing Oxygen style icons for long enough to know the amount of work involved. Big reflections, materials, shadows, details nobody consciously notices just to change how the icon feels. And to hide my incompetence as a simple designer&lt;/p&gt;
&lt;p&gt;It was not just &amp;#8220;camera&amp;#8221; and realy not a video one but&amp;#8230;.. It was trying to be a camera. A object. Somthing with texture and personality. Still &amp;#8230;. Probably 3 days of work.&lt;/p&gt;
&lt;p&gt;The symbolic one on the other hand took minutes.&lt;/p&gt;
&lt;p&gt;And honestly&amp;#8230; I like symbolic icons. This is not one of those &amp;#8220;flat design killed civilization&amp;#8221; posts&lt;/p&gt;
&lt;p&gt;But it did make me think again about something I keep repeating over and over:&lt;br&gt;&amp;#8220;Less is a bore.&amp;#8221; as Robert Venturi said.&lt;/p&gt;
&lt;p&gt;People usually read that as a attack on minimalism. But I don&amp;#8217;t.&lt;/p&gt;
&lt;p&gt;Reduction is useful. Clarity is useful. Symbolic icons are useful. You also cant hide your design failures as easily, and they can work really well.&lt;/p&gt;
&lt;p&gt;The problem for me starts when simplification becomes emotionally neutral. Copy of a copy of a copy of a nothing.&lt;/p&gt;
&lt;p&gt;Because thats the thing I care about the most when designing anything. Not beauty exactly&amp;#8230; beauty is subjective and honestly kinda impossible to define in any meaningful way.&lt;/p&gt;
&lt;p&gt;What interests me more is emotional impact.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p class="has-x-large-font-size"&gt;&lt;em&gt;&lt;strong&gt;How does it make you feel?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Not stricly rationally. But mostly Emotionally.&lt;/p&gt;
&lt;p&gt;The Oxygen/old\new/skeo\etc icon is probably excessive and maybe even a little ridiculous. Tiny fake reflections, fake materials, dramatic shadows&amp;#8230; but then again thats also what gives it character I think??. It tries to create an &amp;#8220;atmosphere&amp;#8221; instead of just identifying a function.&lt;/p&gt;
&lt;p&gt;And to me atmosphere matters.&lt;/p&gt;
&lt;p&gt;Humans are not rationalist grid systems no matter how much &amp;#8220;modern&amp;#8221; design sometimes pretends we are. We remember things emotionally first. Movies, music, old game menus, interfaces&amp;#8230;&lt;/p&gt;
&lt;p&gt;Nowdays many interfaces and design languages just feel efficient. Functional. Fast. But also weirdly interchangeable.&lt;/p&gt;
&lt;p&gt;And I think thats why so many modern interfaces evaporate from memory so quickly. Perfectly boring floating in UI space. Visually correct but emotionally silent.&lt;/p&gt;
&lt;p&gt;Which to me always felt ironic because modernism originally was full of emotion. Optimism. Utopianism. The future as a aesthetic project. Somewhere along the way people kept the reduction but forgot the passion behind it.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;figure class="wp-block-image size-large"&gt;&lt;img decoding="async" width="1024" height="391" src="https://nuno-icons.com/wp-content/uploads/2026/05/Screenshot_20260511_171354-1024x391.png" alt="Oscar Niemeyer" class="wp-image-168" srcset="https://nuno-icons.com/wp-content/uploads/2026/05/Screenshot_20260511_171354-1024x391.png 1024w, https://nuno-icons.com/wp-content/uploads/2026/05/Screenshot_20260511_171354-300x115.png 300w, https://nuno-icons.com/wp-content/uploads/2026/05/Screenshot_20260511_171354-768x293.png 768w, https://nuno-icons.com/wp-content/uploads/2026/05/Screenshot_20260511_171354-1536x587.png 1536w, https://nuno-icons.com/wp-content/uploads/2026/05/Screenshot_20260511_171354.png 1633w" sizes="(max-width: 1024px) 100vw, 1024px" /&gt;&lt;/figure&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Anyway&amp;#8230; making these two icons back to back ended up being more interesting than I expected.&lt;/p&gt;
&lt;p&gt;They will both be available in PlasmaShell near you&amp;#8230;.&lt;/p&gt;
&lt;p&gt;P.S. welcome to my new home, I&amp;#8217;m still alive &lt;img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m probably gona make a video with some crazy ideas for a over the top theme in QML, kinda as a exercise on the sort of things that should be possible in theme engines. Because even with QML giving us allot more creative freedom people still somehow end up making mostly the same thing over and over again.&lt;/p&gt;
&lt;div class="wp-block-columns are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex"&gt;
&lt;div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:25%"&gt;&lt;/div&gt;
&lt;div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:50%"&gt;&lt;/div&gt;
&lt;div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"&gt;&lt;/div&gt;
&lt;div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:25%"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;</description><author>Nuno Pinheiro</author></item><item><title>Week 1 Status Report</title><link>https://tushar2005.bearblog.dev/week-1-status-report/</link><pubDate>Sun, 10 May 2026 13:48:00 +0000</pubDate><guid isPermaLink="true">https://tushar2005.bearblog.dev/week-1-status-report/</guid><description>&lt;p&gt;Hey everyone! This is my first post and Week 1 status report.&lt;/p&gt;
&lt;p&gt;I started this week by setting up:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The project and configuring &lt;a target="_blank" href='https://docs.jj-vcs.dev/latest/cli-reference/' target='_blank'&gt;jj&lt;/a&gt;, a local version control system that has been a lifesaver for testing, simulating, and keeping my commits organized.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The first step was to build and refactor Plasma NM in parallel while setting up a bare-bones folder structure. Here is the &lt;a target="_blank" href='https://invent.kde.org/plasma/plasma-nm/-/merge_requests/563/diffs?commit_id=063799454ea37654d9d069137cdfa27a25c5b68f' target='_blank'&gt;Commit&lt;/a&gt; I made.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After creating the initial folder structure, I started refactoring the main backend service for &lt;strong&gt;WifiSecurities&lt;/strong&gt;, which includes creating separate components for the Enterprise section, authentication, and Wi-Fi security options.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This week, I learned a lot of new things about local version control, architecture for Qt Widgets, and QML.&lt;/p&gt;</description><author>Tushar Gupta</author></item><item><title>The anti-minimalist backlash is the bigger story behind Oxygen’s revival</title><link>https://filipfila.wordpress.com/2026/05/10/the-anti-minimalist-backlash-is-the-bigger-story-behind-oxygens-revival/</link><pubDate>Sun, 10 May 2026 07:30:31 +0000</pubDate><guid isPermaLink="true">http://filipfila.wordpress.com/?p=1269</guid><description>Image by: Nuno Pinheiro Following posts on specific work being done on Oxygen, this post is going to try to go beyond the manifest work and look at the bigger picture driving it. The motivation for writing it came when I was listening to a music artist who had completely rebranded himself by appending "Frutiger"...... &lt;a class="more-link" target="_blank" href="https://filipfila.wordpress.com/2026/05/10/the-anti-minimalist-backlash-is-the-bigger-story-behind-oxygens-revival/#more-1269"&gt;Continue Reading &amp;#8594;&lt;/a&gt;</description><author>Filip Fila</author></item><item><title>FOSSGIS Community Meeting May 2026</title><link>https://www.volkerkrause.eu/2026/05/09/fossgis-community-meeting-may-2026.html</link><pubDate>Sat, 09 May 2026 07:30:00 +0000</pubDate><guid isPermaLink="true">https://www.volkerkrause.eu/2026/05/09/fossgis-community-meeting-may-2026</guid><description>&lt;p&gt;Last weekend I joined parts of the &lt;a target="_blank" href="https://www.fossgis.de/wiki/FOSSGIS_OSM_Communitytreffen_2026_Nummer_25"&gt;FOSSGIS Community Meeting&lt;/a&gt;
at &lt;a target="_blank" href="https://www.linuxhotel.de/"&gt;Linuxhotel&lt;/a&gt; in Essen, Germany, focusing on topics related to organizing
this year’s edition of the &lt;a target="_blank" href="https://open-transport.org"&gt;Open Transport Community Conference&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="fossgis-community-meeting"&gt;FOSSGIS Community Meeting&lt;/h3&gt;
&lt;figure&gt;
&lt;img src="https://www.volkerkrause.eu/assets/posts/231/fossgis-community-meeting-25-group-photo.jpg" alt="Group photo of (most of) the attendees of the FOSSGIS community meeting." loading="lazy" /&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Twice a year &lt;a target="_blank" href="https://fossgis.de"&gt;FOSSGIS e.V.&lt;/a&gt; (the German local chapter of OpenStreetMap) hosts a multi-day meeting at
Linuxhotel, for people to work on primarily non-technical topics, such as organizing conferences,
presence at events, public communication and outreach, lobbying and political
activities around FOSS/Open Data, finances and fundraising, and operations of the FOSSGIS e.V.&lt;/p&gt;
&lt;p&gt;I had been at Linuxhotel for a KDE sprint before, but only after looking up the &lt;a target="_blank" href="https://community.kde.org/File:Akonadi_Halloween_Sprint_2008_Group_Photo.jpg"&gt;group photo from back then&lt;/a&gt; I realized that this was already 18 years ago…&lt;/p&gt;
&lt;h3 id="open-transport-community-conference"&gt;Open Transport Community Conference&lt;/h3&gt;
&lt;p&gt;While the &lt;a href="//www.volkerkrause.eu/2025/10/25/open-transport-community-conference-2025.html"&gt;first edition of the Open Transport Community Conference&lt;/a&gt;
last year was very successful and ran very smoothly overall, one important thing that had
to change to make this long-term sustainable was moving this under the umbrella of some form
of legal entity. We are looking at doubling the length, doubling the number of attendees and
a 40x increase in budget this year, way beyond something you’d want to have individuals carry
the legal and financial risks for.&lt;/p&gt;
&lt;p&gt;I’m therefore very happy that with the FOSSGIS e.V. we have found a suitable organization for this. Besides
the obvious overlap in domain and partially also in people, FOSSGIS e.V. has extensive experience
in organizing conferences we can tap into, as well as infrastructure we can use.&lt;/p&gt;
&lt;p&gt;This should allow us for example to handle sponsors this year, as well as offering (optional) paid tickets
for people attending for their employers. And with that we could then (given enough income)
provide some kind of travel support program for community attendees to soften the impact of the
rather expensive location in Switzerland.&lt;/p&gt;
&lt;p&gt;The weekend provided an opportunity to work out a number of legal, financial, organizational
and operational implementation details for that. Some aspects have still to be resolved with the tax
advisor though, given Switzerland isn’t in the EU, which should then unlock finally opening the
registration for the conference.&lt;/p&gt;
&lt;h3 id="transitous"&gt;Transitous&lt;/h3&gt;
&lt;p&gt;&lt;a target="_blank" href="https://transitous.org"&gt;Transitous&lt;/a&gt; is in a somewhat similar situation, although with less time
pressure for now. To improve long-term sustainability we’d also need a legal entity to hold
assets (such as the domain), handle money and sign contracts.&lt;/p&gt;
&lt;p&gt;We are extremely lucky so far that the “big” servers doing the heavy lifting are provided to
us for free, including all hosting cost. While there’s no indication that might change anytime
soon, we at least want to have options ready should this change, or in case we need additional
capacity.&lt;/p&gt;
&lt;p&gt;Our current yearly budget is around 60€, if we’d have to pay market prices for our
entire infrastructure we’d need to increase that significantly, 50x before the global madness in recent months,
more like 100x now. Obviously not something we can do overnight, so starting to explore and ramping
up fundraising options sooner rather than later makes sense.&lt;/p&gt;
&lt;p&gt;And that’s just the direct cost for server operations, it would also be great to be able to support
community members with travel costs for example.&lt;/p&gt;
&lt;p&gt;Just as with the conference, the plan is to attach Transitous to the FOSSGIS e.V..
FOSSGIS e.V. is “gemeinnützig” in Germany, which allows receiving tax-deductable donations,
something we’d be unlikely to achieve with a separate organization on our own.&lt;/p&gt;
&lt;h3 id="foss-and-open-data"&gt;FOSS and Open Data&lt;/h3&gt;
&lt;p&gt;With my &lt;a target="_blank" href="https://kde.org"&gt;KDE&lt;/a&gt; hat on, there were also a number of other relevant and interesting topics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rules and criteria for “recommended service providers” lists by FOSS projects, and countering misuse (e.g.
&lt;a target="_blank" href="https://ev.kde.org/consultants/"&gt;KDE e.V. Trusted IT Consulting Firms&lt;/a&gt;, &lt;a target="_blank" href="https://dienstleister.fossgis.de/"&gt;FOSSGIS e.V. Dienstleisterliste&lt;/a&gt;,
&lt;a target="_blank" href="https://github.com/public-transport/transitous/blob/main/website/content/suppliers.html"&gt;Transitous supplier list&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Participation and presence at the &lt;a target="_blank" href="https://diday.org"&gt;Digital Independence Day&lt;/a&gt; events.&lt;/li&gt;
&lt;li&gt;Lobbying for recognizing FOSS/Open Data work as charitable (“gemeinnützig”) in Germany, to receive all
the legal, tax and PR benefits associated with that, and without the current workarounds and uncertainties
(see also the ongoing &lt;a target="_blank" href="https://www.openpetition.de/petition/online/recognition-of-work-on-open-source-as-volunteering-in-germany"&gt;petition&lt;/a&gt; for that).&lt;/li&gt;
&lt;li&gt;Lobbying for FOSS use in public administration, in particular in the context of the current interest in
“digital sovereignty” there.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I think for all this we could benefit from building more bridges between the various
communities and organizations affected by or interesting in those topics.&lt;/p&gt;
&lt;h3 id="you-can-help"&gt;You can help!&lt;/h3&gt;
&lt;p&gt;It’s foundations like &lt;a target="_blank" href="https://fossgis.de"&gt;FOSSGIS e.V.&lt;/a&gt; or &lt;a target="_blank" href="https://kde.org/donate"&gt;KDE e.V.&lt;/a&gt; that provide
all the boring legal, financial and operational infrastructure for Free Software and Open Data communities
and initiatives to do their work, and keep doing that independently. Your donations enable this.&lt;/p&gt;</description><author>Volker Krause</author></item><item><title>Kdenlive 26.04.1 released</title><link>https://kdenlive.org/news/releases/26.04.1/</link><pubDate>Sat, 09 May 2026 04:00:00 +0000</pubDate><guid isPermaLink="true">https://kdenlive.org/news/releases/26.04.1/</guid><description>&lt;p&gt;The first maintenance release of the 26.04 series is now available, with the usual batch of stability fixes and workflow improvements.&lt;/p&gt;
&lt;div class="alert alert-warning" role="alert"&gt;
This release also contains an &lt;b&gt;important security fix&lt;/b&gt;, so we strongly advise all users to &lt;b&gt;upgrade&lt;/b&gt; to the latest 26.04.1 version.
&lt;/div&gt;
&lt;p&gt;Thanks to an &lt;a target="_blank" href="https://nlnet.nl/project/Kdenlive/"&gt;NLnet/NGI0 grant&lt;/a&gt;, we had a security audit provided by &lt;a target="_blank" href="https://www.radicallyopensecurity.com"&gt;Radically Open Security&lt;/a&gt;. The audit found one serious vulnerability that can happen when opening a malicious project file, allowing remote code execution. This is fixed with Kdenlive 26.04.1. Thanks to Edoardo Geraci and Radically Open Security for helping us make our software safer!&lt;/p&gt;
&lt;p&gt;We are not aware of the vulnerability being exploited so far. It is important to understand that &lt;b&gt;this security issue is about a manipulated .kdenlive project file containing potentially malicious code&lt;/b&gt;. Therefore, it is only relevant &lt;b&gt;if you open a .kdenlive project file that you received from someone else or downloaded from the internet&lt;/b&gt;. If you are working only with your own projects or with shared projects in collaboration with fully trusted partners, there is no security risk.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;i&gt;If you cannot upgrade, do not open a project file that was not created by you&lt;/i&gt;&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Although the vulnerability is fixed in 26.04.1, we have also implemented another layer of security checks for the upcoming 26.08.0 to warn the user if some other unexpected input is detected in a project file.&lt;/p&gt;
&lt;p&gt;Head to our &lt;a target="_blank" href="https://kdenlive.org/download"&gt;download&lt;/a&gt; section to get the latest binaries, or check the updates from your package manager. Please note that for Linux only AppImage and Flatpak are supported by the Kdenlive team.&lt;/p&gt;
&lt;p&gt;For the full changelog &lt;a target="_blank" href="https://kdenlive.org/news/releases/26.04.1/#full-changelog"&gt;continue reading on kdenlive.org&lt;/a&gt;.&lt;/p&gt;</description><author>Kdenlive</author></item><item><title>This Week in Plasma: ICC profiles ❤️ HDR</title><link>https://blogs.kde.org/2026/05/09/this-week-in-plasma-icc-profiles-%EF%B8%8F-hdr/</link><pubDate>Sat, 09 May 2026 00:00:01 +0000</pubDate><guid isPermaLink="true">https://blogs.kde.org/2026/05/09/this-week-in-plasma-icc-profiles-%EF%B8%8F-hdr/</guid><description>&lt;!-- Example wording for a change, MR version. (Developer Name, [repo-name MR #xxx](https://invent.kde.org/plasma/repo-name/-/merge_requests/xxx)) --&gt;
&lt;!-- Example wording for a change, Bugzilla version. (Developer Name, [KDE Bugzilla #xxx](https://bugs.kde.org/show_bug.cgi?id=xxx)) --&gt;
&lt;!-- ![](thumbnail.png) --&gt;
&lt;!--
&lt;section class="swiper d-flex mb-5" aria-label="Screenshots" role="list"&gt;
&lt;div class="swiper-wrapper d-flex my-3" role="listitem"&gt;
&lt;/div&gt;
&lt;div class="swiper-pagination" style="bottom: 0"&gt;&lt;/div&gt;
&lt;div class="swiper-button-prev"&gt;&lt;/div&gt;
&lt;div class="swiper-button-next"&gt;&lt;/div&gt;
&lt;/section&gt;
--&gt;
&lt;p&gt;Welcome to a new issue of &lt;em&gt;This Week in Plasma!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This week saw a lot of lower-level technical improvements made throughout Plasma’s software stack. Not super flashy, but super important.&lt;/p&gt;
&lt;p&gt;Nevertheless, two color-related features did manage to sneak in! And as Plasma 6.7’s feature period comes to a close, expect more polishing and bug-fixing for the next month or so.&lt;/p&gt;
&lt;p&gt;Without further ado:&lt;/p&gt;
&lt;h2 id="notable-new-features"&gt;Notable new features&lt;/h2&gt;
&lt;!-- Can find some with https://invent.kde.org/groups/plasma/-/merge_requests/?sort=merged_at_desc&amp;state=merged&amp;label_name%5B%5D=Feature&amp;first_page_size=20 --&gt;
&lt;h3 id="plasma-67"&gt;Plasma 6.7&lt;/h3&gt;
&lt;p&gt;You can now use an ICC profile while HDR mode is active! (Xaver Hugl, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=514239"&gt;KDE Bugzilla #514239&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;You can now disable or control the intensity of the “adaptive backlight modulation” feature of many AMD laptops, which changes screen colors at low brightness levels to try to improve visibility. If you don’t like it, you can now turn it off! (Xaver Hugl, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=511801"&gt;KDE Bugzilla #511801&lt;/a&gt;)&lt;/p&gt;
&lt;h2 id="notable-ui-improvements"&gt;Notable UI improvements&lt;/h2&gt;
&lt;!-- Can find some with https://invent.kde.org/groups/plasma/-/merge_requests/?sort=merged_at_desc&amp;state=merged&amp;label_name%5B%5D=Enhancement&amp;first_page_size=20 --&gt;
&lt;h3 id="plasma-67-1"&gt;Plasma 6.7&lt;/h3&gt;
&lt;p&gt;Improved Discover’s ability to de-duplicate apps present in both system and user Flatpak installations. (Tobias Fella, &lt;a target="_blank" href="https://invent.kde.org/plasma/discover/-/merge_requests/1316"&gt;Discover MR #1316&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;The temperature values on Info Center’s Sensors page now reflect the units you have configured system-wide, rather than always using Celcius. (Chandradeep Dey, &lt;a target="_blank" href="https://invent.kde.org/plasma/kinfocenter/-/merge_requests/294"&gt;kinfocenter MR #294&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;You can now remove apps from the Kickoff Application Launcher’s Favorites view by dragging them out of the view and over any part of the rest of the widget. (Christoph Wolk, &lt;a target="_blank" href="https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/3662"&gt;plasma-desktop MR #3662&lt;/a&gt;)&lt;/p&gt;
&lt;figure class="text-center ratio ratio-16x9" style=""&gt;
&lt;video controls&gt;&lt;source src="https://blogs.kde.org/2026/05/09/this-week-in-plasma-icc-profiles-%EF%B8%8F-hdr/drag-to-remove-favorites.webm" type="video/mp4" /&gt;&lt;/video&gt;&lt;/figure&gt;
&lt;p&gt;The Printers widget now shows badges indicating the number of active and queued print jobs on each printer. Useful for large institutional environments with a lot of printers! (Mike Noe, &lt;a target="_blank" href="https://invent.kde.org/plasma/print-manager/-/merge_requests/324"&gt;print-manager MR #324&lt;/a&gt;)&lt;/p&gt;
&lt;figure&gt;
&lt;img class="img-fluid" alt="Printers widget showing “2” badge on a printer, indicating two queued or active jobs" src="https://blogs.kde.org/2026/05/09/this-week-in-plasma-icc-profiles-%EF%B8%8F-hdr/more-printer-badges.png"
style="max-width: 100%; height: auto"
/&gt;
&lt;/figure&gt;
&lt;h2 id="notable-bug-fixes"&gt;Notable bug fixes&lt;/h2&gt;
&lt;!--
Can find some with:
- HI and VHI bugs fixed: https://tinyurl.com/bdepnh4v
- All bugs fixed: https://invent.kde.org/groups/plasma/-/merge_requests/?sort=merged_at_desc&amp;state=merged&amp;label_name%5B%5D=Bugfix&amp;first_page_size=20
--&gt;
&lt;h3 id="plasma-665"&gt;Plasma 6.6.5&lt;/h3&gt;
&lt;p&gt;Fixed an issue that made the power buttons vanish from launcher menus for some people with version 260 of systemd, which changed around some things we were relying on. (Nicolas Fella, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=518174"&gt;KDE Bugzilla #518174&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Fixed an issue that caused periodic freezes and stutters on some systems with multiple discrete GPUs. (Xaver Hugl, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=519461"&gt;KDE Bugzilla #519461&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Fixed an issue that could make Discover crash on some distros while changing the priorities of Flatpak repos. (Tobias Fella, &lt;a target="_blank" href="https://invent.kde.org/plasma/discover/-/merge_requests/1318"&gt;discover MR #1318&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;The portal-based dialog to add launchers now actually works. (Nate Graham, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=519631"&gt;KDE Bugzilla #519631&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Using window rules to move a window partially off-screen using a negative position property no longer makes the window disappear and become unreachable. (Xaver Hugl, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=466119"&gt;KDE Bugzilla #466119&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Fixed one source of a tricky issue that could make secondary screens inappropriately remain dimmed after waking from sleep. (Patryk Ludwikowski, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=513809"&gt;KDE Bugzilla #513809&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Fixed a recent visual regression in the hover highlighting effects applied to the Printers widget. (Nicolas Fella, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=518705"&gt;KDE Bugzilla #518705&lt;/a&gt;)&lt;/p&gt;
&lt;h3 id="plasma-67-2"&gt;Plasma 6.7&lt;/h3&gt;
&lt;p&gt;Fixed an issue that could sometimes cause custom non-default global shortcuts to be reset during software updates on specific distros that uninstall and re-install apps as part of their upgrade processes. (Vlad Zahorodnii, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=484597"&gt;KDE Bugzilla #484597&lt;/a&gt;)&lt;/p&gt;
&lt;h2 id="notable-in-performance--technical"&gt;Notable in performance &amp;amp; technical&lt;/h2&gt;
&lt;h3 id="plasma-67-3"&gt;Plasma 6.7&lt;/h3&gt;
&lt;p&gt;Improved performance and power efficiency for software that uses CPU rendering, such as most QtWidgets-based Qt and KDE apps. Read more about this on &lt;a target="_blank" href="https://zamundaaa.github.io/wayland/2026/05/06/making-wl-shm-fast.html"&gt;Xaver’s blog&lt;/a&gt;! (Xaver Hugl, &lt;a target="_blank" href="https://invent.kde.org/plasma/kwin/-/merge_requests/9178"&gt;kwin MR #9178&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Improved KWin’s heuristics for when it can use the “direct scan-out” feature to improve performance and save power for full-screen windows. (Xaver Hugl, &lt;a target="_blank" href="https://bugs.kde.org/show_bug.cgi?id=515784"&gt;KDE Bugzilla #515784&lt;/a&gt;)&lt;/p&gt;
&lt;h2 id="how-you-can-help"&gt;How you can help&lt;/h2&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Would you like to help put together this weekly report? Introduce yourself in &lt;a target="_blank" href="https://matrix.to/#/%23this-week-kde-apps:kde.org"&gt;the Matrix room&lt;/a&gt; and &lt;a target="_blank" href="https://community.kde.org/Promotion/This_week_in_KDE"&gt;join the team&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Beyond that, you can help KDE by directly &lt;a target="_blank" href="https://community.kde.org/Get_Involved"&gt;getting involved&lt;/a&gt; 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.&lt;/p&gt;
&lt;p&gt;You can also help out by &lt;a target="_blank" href="https://kde.org/donate"&gt;making a donation&lt;/a&gt;! This helps cover operational costs, salaries, travel expenses for contributors, and in general just keeps KDE bringing Free Software to the world.&lt;/p&gt;
&lt;h2 id="to-get-a-new-plasma-feature-or-a-bug-fix-mentioned-here"&gt;To get a new Plasma feature or a bug fix mentioned here&lt;/h2&gt;
&lt;p&gt;Push a commit to &lt;a target="_blank" href="https://invent.kde.org/websites/blogs-kde-org/-/merge_requests/?label_name%5B%5D=This%20Week%20in%20Plasma"&gt;the relevant merge request on invent.kde.org&lt;/a&gt;.&lt;/p&gt;</description><author>Nate Graham</author></item><item><title>Web Review, Week 2026-19</title><link>https://ervin.ipsquad.net/blog/2026/05/08/web-review-week-2026-19/</link><pubDate>Fri, 08 May 2026 20:46:46 +0000</pubDate><guid isPermaLink="true">https://ervin.ipsquad.net/blog/2026/05/08/web-review-week-2026-19/</guid><description>&lt;p&gt;Back from vacations, the reading offline was good&amp;hellip; I managed to read some articles too, so let&amp;rsquo;s go for my web review for the week 2026-19.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="building-a-cyberdeck-is-the-most-punk-thing-you-can-do-right-now"&gt;Building a cyberdeck is the most punk thing you can do right now&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, hacking, culture&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s indeed a nice endeavour. I don&amp;rsquo;t have the appetite for it right now, but I wish more people would do this.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://www.dazeddigital.com/life-culture/article/70129/1/building-a-cyberdeck-diy-tech-rebellious-billionaire-broligarchs-computers"&gt;https://www.dazeddigital.com/life-culture/article/70129/1/building-a-cyberdeck-diy-tech-rebellious-billionaire-broligarchs-computers&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="cal-newports-anti-brain-rot-rules"&gt;Cal Newport&amp;rsquo;s anti-brain rot rules&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, attention-economy, literacy, health&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is good and sane advice to survive the attention economy and take care of your mental health. It&amp;rsquo;s not too hard to put in place if you&amp;rsquo;re not already doing it.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://thetangent.space/2026/brain-rot/"&gt;https://thetangent.space/2026/brain-rot/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="radio-is-cool-actually"&gt;radio is cool, actually&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, radio, music, culture&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Yep, I like radio as well. Don&amp;rsquo;t judge me.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://donthave2sting.bearblog.dev/radio-is-cool-actually/"&gt;https://donthave2sting.bearblog.dev/radio-is-cool-actually/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="endgame-for-the-open-web"&gt;Endgame for the Open Web&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, web, foss, knowledge, enclosure, ai, machine-learning, gpt, business, politics&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This piece is maybe a bit too much on the panic side&amp;hellip; Which part of the Web are we talking about? The commercial stuff? Overall, the logic makes sense though. We see many examples of power plays in guise of &amp;ldquo;innovation&amp;rdquo; which lead to killing openly sharing (and so killing real innovation). It&amp;rsquo;s urgent to fight back and ensure things stay open.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://www.anildash.com/2026/03/27/endgame-open-web/"&gt;https://www.anildash.com/2026/03/27/endgame-open-web/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="netizen"&gt;Netizen&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, internet, culture, history&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The Internet culture definitely changed at the turn of the 21st century. Before this it was a more civilized and hopeful place. I&amp;rsquo;d like to see the netizen etiquette make a strong come back.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://sive.rs/netizen"&gt;https://sive.rs/netizen&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="using-the-internet-like-its-1999"&gt;Using the internet like its 1999&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, internet, web, social-media, messaging, culture&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This could be a piece full of nostalgia. There is a bit of nostalgia of course, but it&amp;rsquo;s also a path to use what we got in a more valuable and humane way.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://joshblais.com/blog/using-the-internet-like-its-1999/"&gt;https://joshblais.com/blog/using-the-internet-like-its-1999/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="the-boring-internet"&gt;The Boring Internet&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, internet, web, culture, resilience, protocols, decentralized&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is a good point, unlike what some claims the Internet isn&amp;rsquo;t dying. The commercial land on top is thinning out and is getting filled with crap indeed. Still, what made the Internet and the Web are still here for people to use.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://www.terrygodier.com/the-boring-internet"&gt;https://www.terrygodier.com/the-boring-internet&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="a-well-known-complaint"&gt;A .well-known Complaint&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, web, standard&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Indeed, there&amp;rsquo;s no reason to not use .well-known for newer standard files.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://www.vzqk50.com/blog/scraps/a-well-known-complaint/"&gt;https://www.vzqk50.com/blog/scraps/a-well-known-complaint/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="palantir-workers-are-finally-noticing-the-skulls-on-their-caps"&gt;Palantir Workers Are Finally Noticing The Skulls On Their Caps&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, surveillance, politics, surveillance, defense, palantir&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Better late than never I guess? Let&amp;rsquo;s just hope this becomes very costly for that evil company.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://www.techdirt.com/2026/04/30/palantir-workers-are-finally-noticing-the-skulls-on-their-caps/"&gt;https://www.techdirt.com/2026/04/30/palantir-workers-are-finally-noticing-the-skulls-on-their-caps/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="the-ai-compute-crunch-is-here-and-its-affecting-the-entire-economy"&gt;The AI Compute Crunch Is Here (and It&amp;rsquo;s Affecting the Entire Economy)&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, ai, machine-learning, gpt, copilot, business, economics, sustainability&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This part of the industry is struggling more and more (or more likely silently taking more risks to hide the struggle). It has no path to sustainability and it starts to show.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://www.404media.co/the-ai-compute-crunch-is-here-and-its-affecting-the-entire-economy/"&gt;https://www.404media.co/the-ai-compute-crunch-is-here-and-its-affecting-the-entire-economy/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="the-zig-projects-rationale-for-their-firm-anti-ai-contribution-policy"&gt;The Zig project&amp;rsquo;s rationale for their firm anti-AI contribution policy&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, foss, community, ai, machine-learning, copilot&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It totally makes sense. If you&amp;rsquo;re a FOSS project you have to invest in getting more long term contributors, which requires mentoring. The contributions themselves are not something to maximise. I wish more communities would follow that path.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://simonwillison.net/2026/Apr/30/zig-anti-ai/"&gt;https://simonwillison.net/2026/Apr/30/zig-anti-ai/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="all-my-clients-wanted-a-carousel-now-its-an-ai-chatbot"&gt;All my clients wanted a carousel, now it&amp;rsquo;s an AI chatbot!&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, web, frontend, ai, hype, ux, simplicity&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So many requests based on vanity and hype&amp;hellip; I like the question &amp;ldquo;when you go to other websites do you use it?&amp;rdquo;, we should use it more. Maybe at some point we&amp;rsquo;ll realise that simplicity matters.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://adele.pages.casa/md/blog/all-my-clients-wanted-a-carousel-now-it-s-an-ai-chatbot.md"&gt;https://adele.pages.casa/md/blog/all-my-clients-wanted-a-carousel-now-it-s-an-ai-chatbot.md&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="nhs-goes-to-war-against-open-source"&gt;NHS Goes To War Against Open Source&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, foss, politics&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Weird decisions, this is really backwards&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://shkspr.mobi/blog/2026/05/nhs-goes-to-war-against-open-source/"&gt;https://shkspr.mobi/blog/2026/05/nhs-goes-to-war-against-open-source/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="github-is-sinking"&gt;GitHub is sinking&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, git, github, foss, self-hosting&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is indeed time to move away from GitHub if you&amp;rsquo;re still there. There are many viable alternatives.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://dbushell.com/2026/04/29/github-is-sinking/"&gt;https://dbushell.com/2026/04/29/github-is-sinking/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="in-which-more-paths-are-charted-towards-code-independence"&gt;in which more paths are charted towards code independence&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, git, github, tools, version-control, foss, self-hosting&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Good first half of the post, there&amp;rsquo;s indeed more paths out of GitHub than jumping from a centralised system to another one (even though Codeberg and Forgejo are much saner from a governance standpoint). We&amp;rsquo;ll see what the future brings.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://technomancy.us/204"&gt;https://technomancy.us/204&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="soft-launch-of-open-source-code-platform-for-government"&gt;Soft launch of open-source code platform for government&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, git, github, foss, self-hosting, europe, politics&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Looks like some governments noticed that they can move away from GitHub and are testing the waters. Good idea!&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://www.nldigitalgovernment.nl/news/soft-launch-for-government-open-source-code-platform/"&gt;https://www.nldigitalgovernment.nl/news/soft-launch-for-government-open-source-code-platform/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="open-source-does-not-imply-open-community"&gt;Open Source Does Not Imply Open Community&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, foss, community&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Indeed, a reminder that the two concepts are not necessarily aligned. It kind of misses the point about corporate Open Source with no open contributions which can be easily captured as well. But indeed for the individual side project you might not need the whole burden of issues and contributions, you get to choose.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://blog.feld.me/posts/2026/04/open-source-does-not-imply-open-community/"&gt;https://blog.feld.me/posts/2026/04/open-source-does-not-imply-open-community/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="email-is-crazy"&gt;Email is crazy&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, email, routing, security&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Want a primer on email routing? This is pretty much it.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://samkhawase.com/blog/email-is-crazy/"&gt;https://samkhawase.com/blog/email-is-crazy/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="a-text-editor-as-a-user-interface"&gt;A text editor as a user interface&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, text, config, editor, shell, scripting&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s an interesting trick for personal tooling. Keeps things really simple to setup with limited code to maintain.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://ratfactor.com/cards/text-editor-as-ui"&gt;https://ratfactor.com/cards/text-editor-as-ui&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="lua-can-be-a-really-cool-html-templating-engine"&gt;Lua can be a really cool HTML templating engine&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, lua, dsl&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is a good illustration of how flexible and expressive Lua can be. Gives ideas to make DSLs.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://riki.house/lua-html"&gt;https://riki.house/lua-html&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="podman-rootless-containers-and-the-copy-fail-exploit"&gt;Podman rootless containers and the Copy Fail exploit&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, podman, containers, security&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Worthwhile exploration on the impact of CopyFail in the context of Podman. The baseline security posture seems better and you can even improve things using older techniques. Definitely worth switching.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://garrido.io/notes/podman-rootless-containers-copy-fail/"&gt;https://garrido.io/notes/podman-rootless-containers-copy-fail/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="your-container-is-not-a-sandbox-the-state-of-microvm-isolation-in-2026"&gt;Your Container Is Not a Sandbox: The State of MicroVM Isolation in 2026&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, virtualization, infrastructure, containers&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Don&amp;rsquo;t think this piece really needed to talk about AI but oh well&amp;hellip; I guess it&amp;rsquo;s the obsession of the moment. That said, it&amp;rsquo;s interesting to see how far the microVM ecosystem matured so far. The pieces are falling in place and that opens the door to interesting architectures.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://emirb.github.io/blog/microvm-2026/"&gt;https://emirb.github.io/blog/microvm-2026/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="a-breakthrough-in-cc-dependency-management"&gt;A breakthrough in C/C++ dependency management&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, c++, supply-chain, dependencies, security, satire&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;C++ too can have its own supply chain disasters with enough effort!&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://lcamtuf.substack.com/p/a-breakthrough-in-cc-dependency-management"&gt;https://lcamtuf.substack.com/p/a-breakthrough-in-cc-dependency-management&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="bugs-rust-wont-catch"&gt;Bugs Rust Won&amp;rsquo;t Catch&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, rust, failure, security, system, filesystem, memory&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Straight from the uutils rewrite. This is interesting both for the class of bugs which made it (very system integration oriented, unsurprisingly) and the ones which didn&amp;rsquo;t appear at all (anything to do with memory).&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://corrode.dev/blog/bugs-rust-wont-catch/"&gt;https://corrode.dev/blog/bugs-rust-wont-catch/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="you-can-beat-the-binary-search"&gt;You can beat the binary search&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, simd, performance&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A good illustration that you can beat classical algorithms by taking into account how modern CPUs are designed.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://lemire.me/blog/2026/04/27/you-can-beat-the-binary-search/"&gt;https://lemire.me/blog/2026/04/27/you-can-beat-the-binary-search/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="why-dont-lowercase-letters-come-right-after-uppercase-letters-in-ascii"&gt;Why Don’t Lowercase Letters Come Right After Uppercase Letters in ASCII?&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, text, codec, memory&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;When you look at the binary representation of those characters, things become clear. This opens the door to interesting bitwise operations.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://tylerhillery.com/blog/why-dont-lowercase-chars-come-after-upper/"&gt;https://tylerhillery.com/blog/why-dont-lowercase-chars-come-after-upper/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="how-many-frames-per-second-do-you-need"&gt;How Many Frames Per Second Do You Need?&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, game, graphics, performance&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;There is clearly a sweet spot around 60 fps. Beyond this&amp;hellip; You quickly end up in cargo cult territory.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://hooby.blog/posts/how-many-frames-per-second-do-you-need/"&gt;https://hooby.blog/posts/how-many-frames-per-second-do-you-need/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="forty-years-in-tech"&gt;Forty Years in Tech&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, history, career&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It all changed so much! That&amp;rsquo;s quite a journey for our field. Of course it&amp;rsquo;s not over yet. At some point we&amp;rsquo;ll be real engineers I guess. 😉&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://forkingmad.blog/forty-years-in-tech/"&gt;https://forkingmad.blog/forty-years-in-tech/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="programming-still-sucks"&gt;Programming Still Sucks&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, ai, machine-learning, copilot, team, organisation, engineering, learning, satire&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This feels a bit too realistic for my taste&amp;hellip; and yet&amp;hellip; Well this piece of satire is well crafted I&amp;rsquo;d say.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://www.stvn.sh/writing/programming-still-sucks-fqffhyp"&gt;https://www.stvn.sh/writing/programming-still-sucks-fqffhyp&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="collective-speed-is-not-the-summation-of-individual-speed"&gt;Collective Speed Is Not the Summation of Individual Speed&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, team, organisation, productivity&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A bit of a stretched metaphor in here, but indeed being individually faster doesn&amp;rsquo;t automatically make the team faster. Sometimes quite the contrary in fact.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://blog.jim-nielsen.com/2026/collective-speed-isnt-the-sum-of%20individual-speed/"&gt;https://blog.jim-nielsen.com/2026/collective-speed-isnt-the-sum-of%20individual-speed/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="how-to-see-your-leading-lagging-and-reliable-estimation-metrics"&gt;How to See Your Leading, Lagging, and Reliable Estimation Metrics&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, project-management, agile, metrics&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Indeed I wish we&amp;rsquo;d see less fixation on burndown and velocity. There are superior alternatives and what matters if the full flow of work.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://www.jrothman.com/mpd/2026/05/how-to-see-your-leading-lagging-and-reliable-estimation-metrics/"&gt;https://www.jrothman.com/mpd/2026/05/how-to-see-your-leading-lagging-and-reliable-estimation-metrics/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="hire-based-on-the-conversation-about-code-not-the-code-itself"&gt;Hire based on the conversation about code, not the code itself&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: tech, hiring, interviews&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Another post which shows that the right technical job interviews are the ones creating a real conversation. It&amp;rsquo;s the only way to have a chance to figure out what the candidate is made of.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://dbarabashh.com/thoughts-and-experience/hire-for-the-conversation-not-the-code"&gt;https://dbarabashh.com/thoughts-and-experience/hire-for-the-conversation-not-the-code&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;h4 id="notes-on-influencing-politics"&gt;Notes on influencing politics&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;Tags: politics, decision-making&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Especially true for local politics indeed.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="https://blog.mattglassman.net/notes-on-influencing-politics/"&gt;https://blog.mattglassman.net/notes-on-influencing-politics/&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;hr&gt;
&lt;p&gt;Bye for now!&lt;/p&gt;</description><author>Kevin Ottens</author></item><item><title>Qt Creator 20 Beta released</title><link>https://www.qt.io/blog/qt-creator-20-beta-released</link><pubDate>Fri, 08 May 2026 09:45:31 +0000</pubDate><guid isPermaLink="true">https://www.qt.io/blog/qt-creator-20-beta-released</guid><description>&lt;p style="font-weight: bold;"&gt;We are happy to announce the release of Qt Creator 20 Beta!&lt;/p&gt;
&lt;img src="https://track-eu1.hubspot.com/__ptq.gif?a=149513&amp;amp;k=14&amp;amp;r=https%3A%2F%2Fwww.qt.io%2Fblog%2Fqt-creator-20-beta-released&amp;amp;bu=https%253A%252F%252Fwww.qt.io%252Fblog&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</description><author>Qt Dev Loop</author></item><item><title>KDE Ships Frameworks 6.26.0</title><link>https://kde.org/announcements/frameworks/6/6.26.0/</link><pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://kde.org/announcements/frameworks/6/6.26.0/</guid><description>&lt;p&gt;Friday, 8 May 2026&lt;/p&gt;
&lt;p&gt;KDE today announces the release of KDE Frameworks 6.26.0.&lt;/p&gt;
&lt;p&gt;This release is part of a series of planned monthly releases making improvements available to developers in a quick and predictable manner.&lt;/p&gt;
&lt;h2 id="new-in-this-version"&gt;New in this version&lt;/h2&gt;
&lt;details open="true" id="Attica"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/attica"&gt;Attica&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Enable LSAN in CI. &lt;a target="_blank" href="https://commits.kde.org/attica/1c557a55c1c9aa523b8b7ab7d1d3b9566f876811"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="Baloo"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/baloo"&gt;Baloo&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;[Qml] Fix off-by-one/off-by-several in filesIndexed Property. &lt;a target="_blank" href="https://commits.kde.org/baloo/b4aae2c04287c6178fcc2744520c54fac6154d86"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[BalooCtl] Print detailed skip/failed reasons. &lt;a target="_blank" href="https://commits.kde.org/baloo/b095e4e6be4d3c325e8dd11afc11448a8c03e63f"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[CommandPipe] Forward detailed extractor status to main process. &lt;a target="_blank" href="https://commits.kde.org/baloo/906aaa0362de6a559d4f43f09921a0c13213780d"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[BalooCtl] Fix rare ordering race in monitor output. &lt;a target="_blank" href="https://commits.kde.org/baloo/3f2933d840660fc14ba2d2b982d11796b55a2859"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[Extractor] Add missing return on invalid transaction case. &lt;a target="_blank" href="https://commits.kde.org/baloo/5d2047e660977e035644e4ecf5b7b40d0537eb7c"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[baloo-file] Fix broken memory limit. &lt;a target="_blank" href="https://commits.kde.org/baloo/50da60589c8e59e07f588a7ae34af9d58611ca36"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="Bluez Qt"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/bluez-qt"&gt;Bluez Qt&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Fix build with qt dev. &lt;a target="_blank" href="https://commits.kde.org/bluez-qt/68c97fd37b418ddc30e3a1924b8e626e78f42e8b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="Breeze Icons"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/breeze-icons"&gt;Breeze Icons&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Fix krfb icon not fully respecting color scheme. &lt;a target="_blank" href="https://commits.kde.org/breeze-icons/2b44e6da1e90162ae971e6f3acd8de5958309685"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="Extra CMake Modules"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/extra-cmake-modules"&gt;Extra CMake Modules&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;ECMGeneratePythonBindings.cmake - hide more compiler warnings. &lt;a target="_blank" href="https://commits.kde.org/extra-cmake-modules/a1dac86d6c848473d840b748b82694ef6916a3ca"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Avoid setting QT_NO_CREATE_VERSIONLESS_FUNCTIONS in ECMQmlModule6. &lt;a target="_blank" href="https://commits.kde.org/extra-cmake-modules/9e74512ea8a69af7065f8358f2ea7914d5e940a8"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add PYTHONPATH to prefix.sh if python is available. &lt;a target="_blank" href="https://commits.kde.org/extra-cmake-modules/e46088158e5631417602322ecdc08cc692192134"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix documentation syntax. &lt;a target="_blank" href="https://commits.kde.org/extra-cmake-modules/180522bbc9c59362ece67615ccc6b8298490a139"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KCalendarCore"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kcalendarcore"&gt;KCalendarCore&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Documentation fixes. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/9143b9e64c787b8f22430c11bab9c1b29dd2019b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Expose calendar color role in CalendarListModel. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/2fd89a39b57fe1fe32c3eb5bf9ca85decc35ea17"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Read/write calendar name from iCal. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/650b4f1b67dd2d08d9db88221ee9082548994739"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add support for the calendar color property. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/faff03778112af86ff6316a8eab4ba43279ed264"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Avoid failing the build on warnings in generated code. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/d0952896d51841d81cbfb51f8461003a435b75ac"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add Python bindings for KCalendarCore. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/c3fe80bec67f1a8fb258a59211ebf7a2c0e13fa1"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Remove undefined MAX_DATE symbol. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/0caaa26df3526935f4041b028f9b67201f9ba816"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;.gitlab-ci.yml - add clazy builds to merge requests. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/0000a168f874736ba5368a74da184033652b3cda"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clazy use-static-qregularexpression fix. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/706cfc43b73d2bf1d585b2e45020496f90c0b717"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cppcheck unreadVariable fix. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/86b9f216bc31a19b0d54209998a70bdbb241ff85"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clazy fully-qualified-moc-types fix. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/01c3ed964eeed6d39cd2875afe14f0330cf0d948"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clazy range-loop-detach fixes. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/1fda3f4587f7771a9703565c7974988b2a6e6f1e"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clazy range-loop-reference fix. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/b8159fb0a56e93290f475ac3be0a564090a54643"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cppcheck variableScope fixes. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/33f2d596cc407987be6e301db97e670b0da6b60e"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clazy detaching-temporary fixes. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/4b3d6af8704a869afb7b00b5d34ee76db8dd1eb4"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cppcheck constVariablePointer fixes. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/23c8377d13f88b1f746ba46304fe01b7ef9e9e28"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CI - cppcheck suppressions and define ICAL_CHECK_VERSION. &lt;a target="_blank" href="https://commits.kde.org/kcalendarcore/012abe018c8a6054c53a1ebd7f1874ee85d636c0"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KCMUtils"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kcmutils"&gt;KCMUtils&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Reapply &amp;quot;Enable LSAN in CI&amp;quot;. &lt;a target="_blank" href="https://commits.kde.org/kcmutils/7be55d174d562071db1f7af6557fa2984d89e9dd"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GridDelegate: Don't interfere with Space/Enter key handling. &lt;a target="_blank" href="https://commits.kde.org/kcmutils/48367ff5fd006b43dafe46a5fcea984beb433c87"&gt;Commit.&lt;/a&gt; Fixes bug &lt;a target="_blank" href="https://bugs.kde.org/519194"&gt;#519194&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kcmshell: Use flat style by default. &lt;a target="_blank" href="https://commits.kde.org/kcmutils/cea9794bf1207b7f1a02b10fc4b85123158ba20e"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Improve layout of kcm loading errors. &lt;a target="_blank" href="https://commits.kde.org/kcmutils/7dc5740ef74b9333c24299a6161315a07ea2e554"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KConfigWidgets"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kconfigwidgets"&gt;KConfigWidgets&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Kcommandbarmodel: ignore empty groupName in displayName. &lt;a target="_blank" href="https://commits.kde.org/kconfigwidgets/5f7c21ffa34d6027448a7e62697eb011c2b0c125"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KContacts"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kcontacts"&gt;KContacts&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;CI: Remove alpine. It has been failing for 4 consecutive weeks. &lt;a target="_blank" href="https://commits.kde.org/kcontacts/552557ecf5bf09974b2aee2d57332a249705b772"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KCoreAddons"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kcoreaddons"&gt;KCoreAddons&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Kcoreaddons_target_static_plugins: Fix typo in variable that is checked for. &lt;a target="_blank" href="https://commits.kde.org/kcoreaddons/c71bbde7b820a15c5c13d44f5fae9b5c41ac990a"&gt;Commit.&lt;/a&gt; See bug &lt;a target="_blank" href="https://bugs.kde.org/518580"&gt;#518580&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Propagate LibMount dependency to static library consumers. &lt;a target="_blank" href="https://commits.kde.org/kcoreaddons/789bbd1977a96072754f079cd58b041188ad418f"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add KAboutRelease::untranslatedDescription. &lt;a target="_blank" href="https://commits.kde.org/kcoreaddons/bb57b5547e3e5eb9d5e065dc4f97a7beef4c7a7d"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Determine filesystem if mountinfo returns fuseblk. &lt;a target="_blank" href="https://commits.kde.org/kcoreaddons/90bd91be67cdb68a3da2fc798d88315059073898"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kfilesystemtype: reduce variable scope. &lt;a target="_blank" href="https://commits.kde.org/kcoreaddons/d01d81dc425a991b890d4e789d235ee10e6f6573"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix use after free. &lt;a target="_blank" href="https://commits.kde.org/kcoreaddons/decafa1ff89b09c1317998cf0a987c8765400361"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kfilesystemtype: use libmount instead of statfs when available. &lt;a target="_blank" href="https://commits.kde.org/kcoreaddons/77a90445a616bac2f8b3fdf8e9abd47cda97071e"&gt;Commit.&lt;/a&gt; Fixes bug &lt;a target="_blank" href="https://bugs.kde.org/433611"&gt;#433611&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Remove control characters when quoting args. &lt;a target="_blank" href="https://commits.kde.org/kcoreaddons/6153c9ae025fa570174bb4a143df38fa2f46606b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rename AppStream test file to avoid scripty processing it. &lt;a target="_blank" href="https://commits.kde.org/kcoreaddons/0b52ac83698c631081fb5e1197449c962e9882a9"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Split KAboutData::fromAppStream() into three separate methods. &lt;a target="_blank" href="https://commits.kde.org/kcoreaddons/4338fb734af1841136148eb919d507495535040e"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Parse release notes from AppStream data. &lt;a target="_blank" href="https://commits.kde.org/kcoreaddons/7c2832189ace37a9be6c7705c7671eb13ac0b348"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add KAboutRelease, for listing application release notes. &lt;a target="_blank" href="https://commits.kde.org/kcoreaddons/76df485c0f9699a17c5322cfd2bb1bd93ad44b4e"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;AppStream-backed KAboutData. &lt;a target="_blank" href="https://commits.kde.org/kcoreaddons/375a4a9e7632891441020e68b01b7815c9404c97"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add a way to set KAboutLicense objects on KAboutData. &lt;a target="_blank" href="https://commits.kde.org/kcoreaddons/85dd9baf628b2ccf50b6abb1ff8f556bf954eb64"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KDav"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kdav"&gt;KDav&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Davcollectionmodifyjob: Fix removing properties. &lt;a target="_blank" href="https://commits.kde.org/kdav/83c4bc01da82bc2f453667002be4802caf55d8ef"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Autotests: Add tests for davcollectionmodifyjob. &lt;a target="_blank" href="https://commits.kde.org/kdav/5f819497364e3bd6647f72962aa2bc827d749310"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fakeserver: Remove dead code. &lt;a target="_blank" href="https://commits.kde.org/kdav/1ccf593f963794863290e7a628bd3becd154f006"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Autotests: Remove unnecessary KIO_DISABLE_CACHE_CLEANER. &lt;a target="_blank" href="https://commits.kde.org/kdav/52137c3b77e90691b00eb3a03ea274a0770bdfdb"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Autotests: Add tests for deleting items and collections. &lt;a target="_blank" href="https://commits.kde.org/kdav/fa6a5c16638a40145b651badf4222fdfc9ef598f"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Autotests: Add tests for DavItemModifyJobTest. &lt;a target="_blank" href="https://commits.kde.org/kdav/8312582279f46115cb1669502510f34572d76fca"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix DavPrincipalSearchJobTest. &lt;a target="_blank" href="https://commits.kde.org/kdav/9355574b5625093527efe9685ab82b390e93a4c4"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tests: Add tests scenarios for DavPrincipalSearchJob. &lt;a target="_blank" href="https://commits.kde.org/kdav/0d935180522326f2f5eb6afc70946101c73d7b44"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Enforce tests pass on all platforms. &lt;a target="_blank" href="https://commits.kde.org/kdav/2ca3219ca082bd7ea13fe09df85a605391c0a446"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Use free port for fakeserver. &lt;a target="_blank" href="https://commits.kde.org/kdav/8a7c34f24df5f5b449f7b1d7040d2c9d74cb75c1"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Autotests: Use make_shared when possible. &lt;a target="_blank" href="https://commits.kde.org/kdav/2d730af4b9f24a1322f3914f428fe975455c505b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tests: Add tests scenarios for DavItemsListJob. &lt;a target="_blank" href="https://commits.kde.org/kdav/54b6591e5e31d1538288bff76ebaa8ffc105e3d1"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ci: Remove alpine CI. &lt;a target="_blank" href="https://commits.kde.org/kdav/07fe1a2cd34d662921dd61fe9476d6be96821166"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Autotest: Add doctype in body of tests. &lt;a target="_blank" href="https://commits.kde.org/kdav/292080ac876c6f3a8eda0d8205cbb31605d553fe"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Caldav: Add support for timezone element. &lt;a target="_blank" href="https://commits.kde.org/kdav/1ab7f87963cf29209fe5d8303d60d5fcbeb1f4d5"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tests: Check request body in scenarios. &lt;a target="_blank" href="https://commits.kde.org/kdav/f92ec0f6ffd3cd084e2873984079c999731bde1d"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add test coverage information. &lt;a target="_blank" href="https://commits.kde.org/kdav/2440291b1a38b69ef4a42f9d3ccb9f9080f2447a"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Use Qt::StringLiterals. &lt;a target="_blank" href="https://commits.kde.org/kdav/d32b92654b910e3b40287bec461efc821fc39157"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add unit tests for DavCollectionsFetchJob. &lt;a target="_blank" href="https://commits.kde.org/kdav/d126e1f0f1f57b40cb54bc731da279eb7ea3d326"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KDE Daemon"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kded"&gt;KDE Daemon&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Drop X-KDE-Kded-phase. &lt;a target="_blank" href="https://commits.kde.org/kded/83a8f90c50e20e375c36c8db3caf754e27cfa102"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Drop outdated stuff from documentation. &lt;a target="_blank" href="https://commits.kde.org/kded/9ce9cc6e219247b7bcd0d5befc5f81f79b4885e7"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KGuiAddons"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kguiaddons"&gt;KGuiAddons&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Fix move semantics on KCursorSaver. &lt;a target="_blank" href="https://commits.kde.org/kguiaddons/bfc94ffa0487702052b5e0ef9adf740cac349386"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix build with Qt 6.11 on Android. &lt;a target="_blank" href="https://commits.kde.org/kguiaddons/ea593b6929f0e7fbede960c74dd1be56035f4ca0"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KHolidays"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kholidays"&gt;KHolidays&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Modifier holiday_ca-qc_fr Correction of typos. &lt;a target="_blank" href="https://commits.kde.org/kholidays/7b6522a85d18d1c89c29690dbe5b8756e9387339"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Modifier holiday_ca-qc_fr. &lt;a target="_blank" href="https://commits.kde.org/kholidays/54c78d9dcfac3a928502d14c44f6cb12fa6a1f81"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;.kde-ci.yml - require MRs to pass cppcheck cleanly. &lt;a target="_blank" href="https://commits.kde.org/kholidays/3fff18ab92bbd0ce5388120d9db9490a9a0f3530"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Disable HolidayParserDriverPlan copy/move as found by cppcheck. &lt;a target="_blank" href="https://commits.kde.org/kholidays/0cc88bb259ec177e7969d56384b90c5839adad5d"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;.clang-tidy - add clang-tidy configuration. &lt;a target="_blank" href="https://commits.kde.org/kholidays/42f6e7a57505d925a272298f4464668da5de6760"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cppcheck-suppressions.xml - suppress shadowFunction, functionStatic. &lt;a target="_blank" href="https://commits.kde.org/kholidays/d1aac8cf4e80f061743904d2706e4674a9e48a18"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;.gitlab-ci.yml - add clazy builds to merge requests. &lt;a target="_blank" href="https://commits.kde.org/kholidays/dd9b976358a9b902c8f391a9c98ca2b2424e06b5"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clang-tidy performance-avoid-endl fix. &lt;a target="_blank" href="https://commits.kde.org/kholidays/4fb811668ccc378e90d34d1222bca7637f00f33e"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clang-tidy fix readability-isolate-declaration. &lt;a target="_blank" href="https://commits.kde.org/kholidays/989c6924e8d2827e4fd07c62bf863a01f0d6e68d"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add support for HolidayCategories. &lt;a target="_blank" href="https://commits.kde.org/kholidays/0653e999a5e70bb5d5bbd2a25a8f036df944cf19"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cppcheck suppress knownConditionTrueFalse. &lt;a target="_blank" href="https://commits.kde.org/kholidays/41bb2a53a9bafa2c2c2f4048c424f9a71f5695ba"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cppcheck constVariable fix. &lt;a target="_blank" href="https://commits.kde.org/kholidays/55c7a901e36cddc0b82094677ed6ababdb374301"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cppcheck useInitializationList fix. &lt;a target="_blank" href="https://commits.kde.org/kholidays/32f6910cb65124ae89db19e105e5acf0b7e1e14f"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CI - configure for cppcheck. &lt;a target="_blank" href="https://commits.kde.org/kholidays/d36aaf873286bb56e0fb7423aa2214899c185d78"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clazy range-loop-detach fix. &lt;a target="_blank" href="https://commits.kde.org/kholidays/663e55b7d297480216fb44009ae2fceaa166d16e"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CMakeLists.txt - add pre-commit support. &lt;a target="_blank" href="https://commits.kde.org/kholidays/b50b5cb2d8f74457ddcbfbe129bb32b9a6d656ae"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Philippines holidays - fix the Easter holidays. &lt;a target="_blank" href="https://commits.kde.org/kholidays/0ac60c354629fb6a54ed0730b1b88ff9c9a9f9b1"&gt;Commit.&lt;/a&gt; Fixes bug &lt;a target="_blank" href="https://bugs.kde.org/518523"&gt;#518523&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KI18n"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/ki18n"&gt;KI18n&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Ktranscript: avoid that engine deletes the object. &lt;a target="_blank" href="https://commits.kde.org/ki18n/ad34046566db6e17ebead4520a0be433adb61734"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ktranscript: parent the QJEngine instead of using deleteLater. &lt;a target="_blank" href="https://commits.kde.org/ki18n/1b68561370d548cbdf119fb6afa7561e4aede20f"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Enable LSAN in CI. &lt;a target="_blank" href="https://commits.kde.org/ki18n/812a5891c23db0b96ef66c8b385d180c8c969f33"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CI: Remove alpine. It has been failing for 4 consecutive weeks. &lt;a target="_blank" href="https://commits.kde.org/ki18n/4a72fea57400567b3cf360d67c4d31969dd57073"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix static build. &lt;a target="_blank" href="https://commits.kde.org/ki18n/71d34eaa0ee66c97ea43f8a8fce6265c8a287d16"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix: no translation will be loaded on macOS. &lt;a target="_blank" href="https://commits.kde.org/ki18n/b2e1ab2f2054165be2e12e953fe153e4b5d7c381"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KImageformats"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kimageformats"&gt;KImageformats&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;JXR: check all library return codes. &lt;a target="_blank" href="https://commits.kde.org/kimageformats/a936927ec17c68e3238847812817e01b772afa34"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;EXIF improvements and bugfixes. &lt;a target="_blank" href="https://commits.kde.org/kimageformats/191e5e6a698d37fa2c184e0a6f5557ea5b63425c"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;JXR: fix Use-of-uninitialized-value. &lt;a target="_blank" href="https://commits.kde.org/kimageformats/51db11eefcc9936b6e2aa6995edba19390c62057"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;EXR: fix Null-dereference READ in OpenEXR. &lt;a target="_blank" href="https://commits.kde.org/kimageformats/bc398382ac554717a037bc08c18a742382fe1659"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;HDR: fix incorrect use of s.atEnd(). &lt;a target="_blank" href="https://commits.kde.org/kimageformats/d5e5012cfb125bc243043808d31a36b3c70e3e58"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;JXR: minimal support for multichannel 3 and 4. &lt;a target="_blank" href="https://commits.kde.org/kimageformats/1b3f32a332e0735da75c9cb4fbdeb35c00f5cb82"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;JXR: fix memory leaks. &lt;a target="_blank" href="https://commits.kde.org/kimageformats/7cf60da031f77bb8573ecc8610b8c4f0a5c78741"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Improved documentation for DDS, JP2 and PSD formats. &lt;a target="_blank" href="https://commits.kde.org/kimageformats/d160f268e7de1bb284045d7892d896762b82804c"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;EXR: fix incorrect loading of EXR files saved by Photoshop 2026. &lt;a target="_blank" href="https://commits.kde.org/kimageformats/276338199ab2e3acbb15ebe8c1aabb1c833a4c74"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix HOST Computer metadata. &lt;a target="_blank" href="https://commits.kde.org/kimageformats/742b5097f6a6ccd9aed3e255c1e001c266a8ed13"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add more info about unsecure JXR plugin. &lt;a target="_blank" href="https://commits.kde.org/kimageformats/2d2ee68cc022c7c2b9f955fac440d9525497e0de"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KIO"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kio"&gt;KIO&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Kioworkers/trash: Use qRound64 instead of qRound. &lt;a target="_blank" href="https://commits.kde.org/kio/4b47be3236a5fb2b25ff357ba1deaf0061f4107b"&gt;Commit.&lt;/a&gt; Fixes bug &lt;a target="_blank" href="https://bugs.kde.org/515511"&gt;#515511&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;KFileItemActions: In insertOpenWithActionsTo check that items is not empty. &lt;a target="_blank" href="https://commits.kde.org/kio/271f6a5f117ce57aa0f3bc5824a1b3cd43142175"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Searchproviders: add Startpage search provider. &lt;a target="_blank" href="https://commits.kde.org/kio/c1bc1311c2fae5ee41208d0ee3b51ec1122c6cbd"&gt;Commit.&lt;/a&gt; Fixes bug &lt;a target="_blank" href="https://bugs.kde.org/503976"&gt;#503976&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Davjob: Use \n instead of \r\n in xml. &lt;a target="_blank" href="https://commits.kde.org/kio/c9378d5c2e8552315c68cdd94ac9aa1bf325e022"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FilePreviewJob: Increase timeout to 5 seconds. &lt;a target="_blank" href="https://commits.kde.org/kio/171db267afed51571f4325b621df7a656aec130a"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Drop MinimumKeepSize config from workers. &lt;a target="_blank" href="https://commits.kde.org/kio/d828c3a598672c92cc7ae353006c8cd83b15f2f8"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Deprecate KProtocolManager::minimumKeepSize. &lt;a target="_blank" href="https://commits.kde.org/kio/9b7c2d413c5229a2215fad888d8774e421debe0a"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Drop MinimumKeepSize config. &lt;a target="_blank" href="https://commits.kde.org/kio/76e89929f09a9bb007f7a38fa9d90e5c026b67bd"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Gui/previewjob: avoid wrapping job-&amp;gt;errorString with buildErrorString. &lt;a target="_blank" href="https://commits.kde.org/kio/c0de6c026a8cc2168df0956cdd9440416f7d938f"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kfileitemdelegate: Do not use antialising in order to avoid glitches with some QStyles. &lt;a target="_blank" href="https://commits.kde.org/kio/dd8b23a895a4c5a067405b202b86477cb06616f8"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Autotests: Force language on kfileplacesmodeltest. &lt;a target="_blank" href="https://commits.kde.org/kio/8d7883057ea01bfa8d1969f28dc7f47f528ee2e6"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;KFilePlacesModel: Support kdeconnect device. &lt;a target="_blank" href="https://commits.kde.org/kio/0c2e843cc77f33e877db800d96208f0d1430fe77"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;KFileWidget: Update placeholder text to show the current folder. &lt;a target="_blank" href="https://commits.kde.org/kio/ee69a3ae145a2ddb55cd9c2d6960357aef2eb387"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;KFileWidget: Allow opening current directory in Directory mode. &lt;a target="_blank" href="https://commits.kde.org/kio/316b3f093729679668b54638df121b09f13cb2a3"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;KFileItemDelegate: Check if emblem rect is null. &lt;a target="_blank" href="https://commits.kde.org/kio/45aa712c1bf7e04d2a8c0ce6e659b2ff48177653"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;KfileItemSelection: Allow using selectionEmblem in directory mode with singleclick. &lt;a target="_blank" href="https://commits.kde.org/kio/d0f8f8ac22fa191d4cc9aa2d9f93e395cf2b981c"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;KDirOperator: Select whole row on toggle. &lt;a target="_blank" href="https://commits.kde.org/kio/75197429099020fb2a8c182fcc016f0587f14d64"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PasteDialog: Add MIME type icon to format combo box. &lt;a target="_blank" href="https://commits.kde.org/kio/342665ba8aa8eafe9d01f47c9835c430cfddd3fe"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Paste: Give context object to connect. &lt;a target="_blank" href="https://commits.kde.org/kio/79d71a26bbcedbe4d44971709f91b7c682b372d2"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Paste: Also set default file name when pasting text contents. &lt;a target="_blank" href="https://commits.kde.org/kio/d9ef71d4107ff819bac70fd2c2910a527bb1fe9d"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Paste: Guess MIME type from text content. &lt;a target="_blank" href="https://commits.kde.org/kio/a69d331ddba7a8ded294e827398bcd3dceaa8a34"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PasteDialog: Use MIME type icon for dialog if available. &lt;a target="_blank" href="https://commits.kde.org/kio/c509ac1ba0d8695d6c53f0960d9fb8e2a0cd5d5f"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Open/execute dialog: remove &amp;quot;don't ask again&amp;quot; checkbox. &lt;a target="_blank" href="https://commits.kde.org/kio/4901a6cc7129dcfc2fae23c8526db31dd811b486"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="Kirigami"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kirigami"&gt;Kirigami&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;FormEntry: propagate contentitem's Layout hints. &lt;a target="_blank" href="https://commits.kde.org/kirigami/efb45e9e200df54a76e34d0744df6bbb4c643819"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FormEntry: fix vertical alignment of labels. &lt;a target="_blank" href="https://commits.kde.org/kirigami/3ae494070c7c50d92fed7f41906f7a583b9d855d"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Manually delete LanguageChangeEventFilter when qApp is destroyed. &lt;a target="_blank" href="https://commits.kde.org/kirigami/dd4220ac43f3ebaa92195f1cb8ed42b81424de1b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FormEntry: set titles Accessible.labelFor the contentItem. &lt;a target="_blank" href="https://commits.kde.org/kirigami/1747de6fe44e5a264808292bba10027cf5865f0f"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PageRow: Implement short slide + crossfade transition for single column mode. &lt;a target="_blank" href="https://commits.kde.org/kirigami/555fd04b5f445a3cb08653fd1cf662191cfe0210"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Form: Remove commented out code. &lt;a target="_blank" href="https://commits.kde.org/kirigami/72a4d0da40e2d5b0173f53648f410341565d502a"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Asan fixes for ToolbarLayout. &lt;a target="_blank" href="https://commits.kde.org/kirigami/5d46e4769728afc984af5f34aab0e9672081d4e8"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Relicense ImageColors to LGPL. &lt;a target="_blank" href="https://commits.kde.org/kirigami/2c687289fa27a8d8a7c6494ea88554ead1286649"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ColumnView: remove unused variables. &lt;a target="_blank" href="https://commits.kde.org/kirigami/fa64970e9ec04791182013bd428f5b2d4d0f1708"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Use target syntax for QML module dependencies. &lt;a target="_blank" href="https://commits.kde.org/kirigami/78e0f8800a7d859f0b962466ff40c9a48ba51266"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Primitives: Snap icon vertices to device pixels after final transform. &lt;a target="_blank" href="https://commits.kde.org/kirigami/5f49d596461ba1a1ca9638b5fa6c1d12028fe3b9"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Form: Properly declare module dependencies. &lt;a target="_blank" href="https://commits.kde.org/kirigami/0bdc701ac796dd6f51cf931c5eccc4b72b20765a"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ColumnView: don't use std::clamp. &lt;a target="_blank" href="https://commits.kde.org/kirigami/5cd6ec7b60b51e77f5d990188a09da31007be58f"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ContextualHelpButton: Use OverlayZStacking for Tooltip. &lt;a target="_blank" href="https://commits.kde.org/kirigami/fffcd12a649041e8062eb975f149fc01fbdea9ce"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ScrollView: Fix issues with touchscreen drag scolling. &lt;a target="_blank" href="https://commits.kde.org/kirigami/a497e556de3b156641fe9d022fad83b56dbc88fd"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FormEntry: don't base height on y. &lt;a target="_blank" href="https://commits.kde.org/kirigami/148ce3e50e4364511c955e48be891c63d2a6a821"&gt;Commit.&lt;/a&gt; Fixes bug &lt;a target="_blank" href="https://bugs.kde.org/519233"&gt;#519233&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Toolbars: make sure separators and toolbars have the same height as QWidgets. &lt;a target="_blank" href="https://commits.kde.org/kirigami/0db6d8b5618cd9f991de473fc936180fce60fe79"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ensure that SearchDialog is not wider than the window. &lt;a target="_blank" href="https://commits.kde.org/kirigami/c736a3d5f97a9db7287cba868b7f5b9e4c289668"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix the spacing of the title in FormEntry in card mode. &lt;a target="_blank" href="https://commits.kde.org/kirigami/313c9c2800c511a8b106455c24be758d4eba777e"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Forms: fix a relayout loop. &lt;a target="_blank" href="https://commits.kde.org/kirigami/7a6da67f09b75d931a4394fecbd79bef67ab75ff"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ColumnView: fix the declarative assignment of contentChildren. &lt;a target="_blank" href="https://commits.kde.org/kirigami/5c94c845e25c724c85d58ee89bf6f4ea3823b8cb"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;README.md kdesrc-build -&amp;gt; kde-builder. &lt;a target="_blank" href="https://commits.kde.org/kirigami/cffeac765faab9f10a4e6a3bc7b67f01a585afea"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Make Android template compatible with Qt 6.11. &lt;a target="_blank" href="https://commits.kde.org/kirigami/9163356cf8fcc59f33730fc430b1ff6950f9f2b9"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;FormEntry: explicitly fallback to 0. &lt;a target="_blank" href="https://commits.kde.org/kirigami/c7df98e10f4f503327e5cc55efce15a72feaee1b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Restore page opacity on layer pop. &lt;a target="_blank" href="https://commits.kde.org/kirigami/e5781c8b2da47306d3cfadd800024e2e44f92c7d"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Standardise the padding in the Card version of Froms. &lt;a target="_blank" href="https://commits.kde.org/kirigami/577dcf4cc5de9e967fba190892a28bb74970e21c"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Improve the padding for the FormGroup title and FormEntry subtitle. &lt;a target="_blank" href="https://commits.kde.org/kirigami/e57c40b211f471214202683a59cba7c6fe55da7d"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Action: support QActions with an icon group property. &lt;a target="_blank" href="https://commits.kde.org/kirigami/9aea57c6bb3eaa82623ba844064e4cce19f5b852"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;New FormLayout implementation. &lt;a target="_blank" href="https://commits.kde.org/kirigami/a447226d940530c9ab9f2c2f9d757e685c8d9895"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ToolBarLayout: Incubators should not be assumed to always be ready. &lt;a target="_blank" href="https://commits.kde.org/kirigami/80ddd1140a909520d2833738b98631360074f1bf"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Drop test_loadPageInitialPropertyNotExistFails. &lt;a target="_blank" href="https://commits.kde.org/kirigami/850fcee8ac1a7a3038e47091532d6f02878f75b1"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Prioritise programLogo over application icon in AboutPage. &lt;a target="_blank" href="https://commits.kde.org/kirigami/93d65985fb14bb971c94e22aab0be4cd96be482b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add Badge component. &lt;a target="_blank" href="https://commits.kde.org/kirigami/73d518959f4a43fe2419c501390013ce4b218db2"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KNewStuff"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/knewstuff"&gt;KNewStuff&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Enable LSAN in CI. &lt;a target="_blank" href="https://commits.kde.org/knewstuff/7b3db2edc52329d7ed06d6240b0bce82909806b7"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KNotifications"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/knotifications"&gt;KNotifications&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Fix build with Qt 6.11 on Android. &lt;a target="_blank" href="https://commits.kde.org/knotifications/f9c5489cd865188b50862ebfa587dd02d856fc92"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KPackage"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kpackage"&gt;KPackage&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Don't leak PackageJob runnable if the job never gets started. &lt;a target="_blank" href="https://commits.kde.org/kpackage/81adf5f05d7fdd45c54fee5ba4906c84f26769ef"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Don't leak PackageStructure objects in unit test. &lt;a target="_blank" href="https://commits.kde.org/kpackage/a9497b0ec86fed12ac2d58b61173a0249202fe06"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KQuickCharts"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kquickcharts"&gt;KQuickCharts&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Fix static build. &lt;a target="_blank" href="https://commits.kde.org/kquickcharts/66ffd6271e58ae6879ed77d551a2eafa533d71fd"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CI: Remove linux-static. It has been failing for 4 consecutive weeks. &lt;a target="_blank" href="https://commits.kde.org/kquickcharts/69073eb90fb39e7db7093ae4e4bc1d4d8fb12b02"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CI: Remove alpine. It has been failing for 4 consecutive weeks. &lt;a target="_blank" href="https://commits.kde.org/kquickcharts/a6996f6bee597215de437af3e816c8672ba22f76"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KSVG"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/ksvg"&gt;KSVG&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Add autotest for SVG colors. &lt;a target="_blank" href="https://commits.kde.org/ksvg/e8dbd4b884127d23db25c12404764b438106256e"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SvgItem: Initialise DPR when setting other SVGs. &lt;a target="_blank" href="https://commits.kde.org/ksvg/48195a8f2174b040bf5e089c8fb7db85412bd54e"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KTextEditor"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/ktexteditor"&gt;KTextEditor&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;CI: Comment out Qt 6.12 for now since tests are failing. &lt;a target="_blank" href="https://commits.kde.org/ktexteditor/767a4149886702c41e9db4daeecfded52c0528ab"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rename CamelCursor -&amp;gt; WordCursor. &lt;a target="_blank" href="https://commits.kde.org/ktexteditor/1bec747825f72eb39cedca6e8a232f951139167a"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Use the CamelCursor class for all movement, add a boolean to chose behavior. &lt;a target="_blank" href="https://commits.kde.org/ktexteditor/b59ef889ef78203410f5cb927a14de58874f9135"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Do not use highlighting. &lt;a target="_blank" href="https://commits.kde.org/ktexteditor/2de179f9c6e129ab556dad75c641fda11b56d71a"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Improve readability. &lt;a target="_blank" href="https://commits.kde.org/ktexteditor/1ecec4902c31434ecc5d0e9245b733ff20353afa"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Unify similar code. &lt;a target="_blank" href="https://commits.kde.org/ktexteditor/54fc1e1b5cdf902d6939d91b6fc8425fc1fd47e0"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Do not call characterAt twice in the while loop. &lt;a target="_blank" href="https://commits.kde.org/ktexteditor/ef0e2c2637e4ce5e034768d077a98816811d49f8"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;When moving the caret whole words, stop at non-alphanumeric chars. &lt;a target="_blank" href="https://commits.kde.org/ktexteditor/25141ac63404d297ce908cbc7a6b1d2cbc44d0cb"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KUnitConversion"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kunitconversion"&gt;KUnitConversion&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Enable LSAN in CI. &lt;a target="_blank" href="https://commits.kde.org/kunitconversion/bea10fc6df062f3ffec49c4c0f7a137bf391ce86"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;UPDATE: do not add CFP as a default unit. &lt;a target="_blank" href="https://commits.kde.org/kunitconversion/4b29a73c9274cfb61184c69f403260720ce5c392"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KWidgetsAddons"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kwidgetsaddons"&gt;KWidgetsAddons&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Kcharselect: cap character cell width. &lt;a target="_blank" href="https://commits.kde.org/kwidgetsaddons/5e7b559ccd5884eb01845d0cb12a42a39a0ddad4"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rename bindings.xml file to follow 'typesystem_&amp;lt;project_name&amp;gt;' naming scheme. &lt;a target="_blank" href="https://commits.kde.org/kwidgetsaddons/ca8a26405f138383f5f401952420318cf3160aab"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ensure python bindings are exported typesystem. &lt;a target="_blank" href="https://commits.kde.org/kwidgetsaddons/7ce545c1ace528c8f3ac47fa0a533de6937b73e1"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kpageview: fix drag to move window from page title. &lt;a target="_blank" href="https://commits.kde.org/kwidgetsaddons/93c49f7f9098900fc3d5ef0ef35319ad4f15a7e0"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KWindowSystem"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kwindowsystem"&gt;KWindowSystem&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Update required version of WaylandProtocols to 1.46. &lt;a target="_blank" href="https://commits.kde.org/kwindowsystem/7eb2bb0bb9135c1857115701f19d86e2e6c368c6"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="KXMLGUI"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/kxmlgui"&gt;KXMLGUI&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Kmainwindow commandbar: call aboutToShow for empty menu. &lt;a target="_blank" href="https://commits.kde.org/kxmlgui/f54370195499b6e4c02aeda443b522f442458aa1"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kmainwindow commandbar: handle recursive menus. &lt;a target="_blank" href="https://commits.kde.org/kxmlgui/7365b5ea72151a699706d030501c1526a4dfa880"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="Purpose"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/purpose"&gt;Purpose&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Enable LSAN in CI. &lt;a target="_blank" href="https://commits.kde.org/purpose/306766eb05506324d3cda170258ea46314a387f3"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update telegram icon. &lt;a target="_blank" href="https://commits.kde.org/purpose/ca4fd65094308689f631cd5edf90f1928bddac4f"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add KOnlineAccounts integration. &lt;a target="_blank" href="https://commits.kde.org/purpose/933862250b87cd0a8f6a3ae41ca53361100d42f5"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Replace SSO.OnlineAccounts with own model. &lt;a target="_blank" href="https://commits.kde.org/purpose/d5466934e2fe262a843e5c4eb989b98d4285f0f6"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="QQC2 Desktop Style"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/qqc2-desktop-style"&gt;QQC2 Desktop Style&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Ignore inner Labels for accessibility. &lt;a target="_blank" href="https://commits.kde.org/qqc2-desktop-style/ae0429a572bd0096bf9fe4cc057ad18d52f3abed"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;MenuItem: Use opaque background when pressed. &lt;a target="_blank" href="https://commits.kde.org/qqc2-desktop-style/45dfd1282b182da929373b6176dda9cd32704c65"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="Solid"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/solid"&gt;Solid&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Add optional KDE Connect backend. &lt;a target="_blank" href="https://commits.kde.org/solid/75d19cd14c07dda587d429d0a86fa75df83496a4"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="Sonnet"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/sonnet"&gt;Sonnet&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Switch to the SpellCheckUnderLine underline style for Qt 6.12. &lt;a target="_blank" href="https://commits.kde.org/sonnet/247cd600eb69b4ea51a07cd3078b98e1272243d2"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details open="true" id="Syntax Highlighting"&gt;
&lt;summary class="h4"&gt;&lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting"&gt;Syntax Highlighting&lt;/a&gt;&lt;/summary&gt;&lt;ul&gt;
&lt;li&gt;Python: add frozendict as builtin. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/ab806e2c047f96de0ac3a3490e4ba555836fc090"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Python: add the keywords &amp;quot;lazy import&amp;quot; and &amp;quot;lazy from&amp;quot; (python 3.15). &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/3c105c584549ac6806017017f5617a16a0672a02"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix comment of StateData::push(): captures is inserted in all contexts. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/31ae5bed0a2ab013e488318ef801e542f2656b8b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Improve SSIM flight designator/leg sequence column highlighting. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/7274cc1bd5ad4f3444fbc33493d7e1f2a691f21b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add highlighting for IATA SSIM flight schedules. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/17910502e85c1ef0cbc458b2e85a11f693cf6944"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GN: Update GN unit test. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/4cd92cfaa32976df395c75d65393305d7a406791"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Handle GN properties (similar to QML properties). &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/6cdae44c2fcc8c9c8c8591e62dae88872f40da15"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add more builtin variables. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/0b3c75e32dcb9a1fdbd0dc63acb388f63ef27a4b"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Use tabs instead of spaces. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/cf8d066889d37be3aa7792cc7fe09b203900ac45"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fix build. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/7add7b8a8416ff027fb5d4fb7c4a4bf567e89c92"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add GN syntax highlighting unit tests. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/faf5a96855660385a57dcf3e304651c279ddb7fb"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update license. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/2d00d61569e9fdd41b579dd56f76e714e9b349cd"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add GN (Generate Ninja) syntax highlighting definition. &lt;a target="_blank" href="https://commits.kde.org/syntax-highlighting/1ca911896f1d6aa9f3717b3afd333f7bbd24738c"&gt;Commit.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;</description><author>KDE Community</author></item><item><title>Send your talks for Akademy NOW!</title><link>https://tsdgeos.blogspot.com/2026/05/send-your-talks-for-akademy-now.html</link><pubDate>Thu, 07 May 2026 22:47:00 +0000</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-7523589.post-9145044607518535238</guid><description>&lt;p&gt;&lt;a target="_blank" href="https://akademy.kde.org/2026/"&gt;Akademy 2026&lt;/a&gt; (the annual world summit for KDE) is happening in Graz. Austria, Saturday 19th – Thursday 24th September.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;First of all, if you're reading this and thinking, "Should i go to Akademy?"&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The answer is [most probably] YES! Akademy has something for everyone, be it coders, translators, promoters, designers, enthusiasts, etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, with this out of the way, go and register at &lt;a target="_blank" href="https://akademy.kde.org/2026/register/"&gt;https://akademy.kde.org/2026/register/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;After you have registered, you think which interesting talks will we have on the weekend?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;And you know who has something to say? *YOU*&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Yes, *YOU*. I'm sure you've been working on something interesting, or have a great idea to share.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*YOU* may think that your idea is not that great or the things you work on are not interesting, but that's seldomly the case when someone explains me their "boring" thing they've been working on, i always think "Wow that's great".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ok, so now that I've convinced you to send a talk proposal, when better than *TODAY* to send it?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Yes I know the Call for Participation is open until the 17 of May, but by sending it today you make sure you don't forget sending it later and also [more important for me] you help those of us in the Program Committee not to worry when the final date starts approaching and we don't have lots of talks yet because you all prefer sending talks on the very last minute.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So stop reading and &lt;a target="_blank" href="https://akademy.kde.org/2026/cfp/"&gt;send your talk&lt;/a&gt; today ;-)&amp;nbsp;&lt;/p&gt;</description><author>Albert Astals Cid</author></item><item><title>Singleton Controllers in Times of Declarative QML</title><link>https://www.kdab.com/singleton-controllers-in-times-of-declarative-qml/</link><pubDate>Thu, 07 May 2026 08:30:44 +0000</pubDate><guid isPermaLink="true">https://www.kdab.com/singleton-controllers-in-times-of-declarative-qml/</guid><description>&lt;h1&gt;Singleton Controllers in Times of Declarative QML&lt;/h1&gt;&lt;div class="rich-text"&gt;&lt;p data-block-key="2r6gm"&gt;Controller objects have been the main way to glue your QML UI to your application's actual implementation of the I/O and business logic. However, over the years, the way to actually expose that controller object has changed. And now, we contributed a change in &lt;code&gt;QQmlEngine&lt;/code&gt; that allows you to change it once again, and we believe: for the better.&lt;/p&gt;&lt;h2 id="what-are-&amp;quot;controllers&amp;quot;-anyway" data-block-key="fktq4"&gt;What are "controllers" anyway?&lt;/h2&gt;&lt;p data-block-key="74pvt"&gt;Conceptually, controllers are a thin glue layer between your business logic and your QML, exposing the data that the GUI needs in a format it can easily use. They are implemented as &lt;code&gt;QObject&lt;/code&gt;-derived instances, usually with properties exposing values that may or may not be writable, as well as potentially some &lt;code&gt;Q_INVOKABLE&lt;/code&gt; methods that can be triggered by the QML and maybe some signals.&lt;/p&gt;&lt;p data-block-key="3spbd"&gt;Usually, these controllers are specific to a single logical group of values and functions within the wider application. An application may have a hand-full to dozens of them for a big system. Models exposing collections of data are usually made available as read-only properties returning a &lt;code&gt;QAbstractItemModel&lt;/code&gt;-derived data model on these controllers.&lt;/p&gt;&lt;p data-block-key="3o2sq"&gt;Often, these controllers need to be instantiated with some initialization, as they need references to the business-logic objects they expose to the GUI, listen for signals to get notifications of changes, etc. And that's where the trouble starts...&lt;/p&gt;&lt;h2 id="pre-qt-6" data-block-key="zxg61"&gt;Pre-Qt 6&lt;/h2&gt;&lt;h3 id="context-properties" data-block-key="eavwy"&gt;Context properties&lt;/h3&gt;&lt;p data-block-key="15l2r"&gt;In the early days of QML, one would often use controller instances exposed to QML as context properties. Doing that allowed one to instantiate the controllers under control of C++, giving it all the references the objects needed at that time. We would often expose them to QML using a naming pattern like starting the name with a double underscore &lt;code&gt;__someController&lt;/code&gt; so that it was easy to recognize in the QML code. Using context properties however is no longer recommended. Their lookup is slow, and the QML compilers cannot reason about them, so code using them cannot be optimized. Nor is tooling available to help the QML programmer, as code completion and the likes are not possible.&lt;/p&gt;&lt;h3 id="singleton-instances" data-block-key="70tnc"&gt;Singleton Instances&lt;/h3&gt;&lt;p data-block-key="6jkss"&gt;Then came the &lt;code&gt;qmlRegisterSingletonInstance&lt;/code&gt; method. This method allowed one to register a QML singleton, but it would return the instance that you passed it as an argument and that you could instantiate however you needed. That was a good solution, but it didn't have a long useful life as it didn't mesh well with the declarative registration and it had issues with the one instance being the instance for &lt;i&gt;every&lt;/i&gt; QML engine in your application (if you had more than one).&lt;/p&gt;&lt;h2 id="post-qt-6" data-block-key="s4n26"&gt;Post-Qt 6&lt;/h2&gt;&lt;p data-block-key="3dcoj"&gt;Since Qt 6, the recommended way to write QML is to create QML modules using declarative registration for C++-based objects. That has many benefits in terms of tooling and optimization, so it's good practice to do this. But it also meant that since Qt 6, one could no longer mix-and match imperative registration with declarative: you either used the one, or the other; which rendered the &lt;code&gt;qmlRegisterSingletonInstance&lt;/code&gt; method above useless.&lt;/p&gt;&lt;p data-block-key="btlk2"&gt;There are many possible approaches that I have seen being applied to still control the creation of controller objects, usually by registering a singleton that has a static &lt;code&gt;create&lt;/code&gt; factory function and returning some C++ singletons there or something along those lines. That works, but isn't very elegant. An alternative approach is using initial properties on the root object, but that either requires accessessing the root id from other QML files or propagating the controllers all the way down the stack of items. Neither is a great solution for different reasons. My colleague Javier Cordero Pérez is making a couple of videos about ways to do this, so I won't go into detail here. These videos will be added here once they have been released.&lt;/p&gt;&lt;h2 id="new-approach" data-block-key="yslss"&gt;New approach&lt;/h2&gt;&lt;p data-block-key="dof5b"&gt;That building this connection between C++ and QML was so inelegant - despite being so important - inspired me to finally take matters into my own hands and write a patch.&lt;/p&gt;&lt;p data-block-key="vg8t"&gt;The result is available starting with Qt 6.12 onward and it combines the good things of &lt;code&gt;qmlRegisterSingletonInstance&lt;/code&gt; and the declarative registration: you still register your controller type as a QML singleton so that the type is fully known by the tooling and access to it can be optimized. But we gain back the ability to provide a ready-made instance to the QML engine.&lt;/p&gt;&lt;h3 id="setexternalsingletoninstance" data-block-key="5qpzh"&gt;setExternalSingletonInstance&lt;/h3&gt;&lt;p data-block-key="5ljrl"&gt;The API on &lt;code&gt;QQmlEngine&lt;/code&gt; gained a single new method: &lt;a target="_blank" href="https://doc-snapshots.qt.io/qt6-dev/qqmlengine.html#setExternalSingletonInstance" rel="noopener noreferrer" target="_blank"&gt;&lt;code&gt;QQmlEngine::setExternalSingletonInstance&lt;/code&gt;&lt;/a&gt;. It allows you to provide an instance of a type declared as a singleton as the instance to use in any QML running in that engine, just like you could with &lt;code&gt;qmlRegisterSingletonInstance&lt;/code&gt;. In contrast to that old registration function, however, you call this method on your specific QQmlEngine instance. Note that the type has to be (declaratively) registered as a singleton type for this call to work. If you are using more than one engine, it is up to you to decide if you want to provide the same instance to these different engines, or have separate instances.&lt;/p&gt;&lt;p data-block-key="5ognp"&gt;This simple method gives you back an elegant, supported way to fully control the instantiation of the QML singleton, and thus easily connect it to your business logic or whatever else you need to with it. However, it is up to you make sure that you do this call before any QML code actually tries to access the singleton. Otherwise, the engine will (try to) create it's own instance as it used to. You cannot replace an already existing singleton instance, so once there is one, it is &lt;i&gt;the&lt;/i&gt; one.&lt;/p&gt;&lt;p data-block-key="cslhj"&gt;It’s up to you to make sure that the provided singleton instance outlives the QML that depends on it. You can do that in any way that works in your context, but you could consider parenting the instance to the &lt;code&gt;QQmlEngine&lt;/code&gt; instance, ordering the variables containing them on the stack correctly, or using &lt;code&gt;QQmlEngine::setObjectOwnership&lt;/code&gt; to hand ownership of the singleton to the QML engine.&lt;/p&gt;&lt;h3 id="qml_uncreatable-for-singletons" data-block-key="49k53"&gt;QML_UNCREATABLE for singletons&lt;/h3&gt;&lt;p data-block-key="75lid"&gt;If you are providing your QML singleton instance yourself anyway, you logically also don't &lt;i&gt;need&lt;/i&gt; it to be creatable by the engine either - although, it still can be, of course. If your controller type has a non-default constructor - perhaps to take in some references to your business logic instances - you can now mark your singleton with &lt;a target="_blank" href="https://doc-snapshots.qt.io/qt6-dev/qqmlintegration-h.html#QML_UNCREATABLE" rel="noopener noreferrer" target="_blank"&gt;&lt;code&gt;QML_UNCREATABLE&lt;/code&gt;&lt;/a&gt;, just like you can with other QML types. If you do that, you no longer need to supply a factory function (and even if you do, it won't be used).&lt;/p&gt;&lt;p data-block-key="7pv39"&gt;Of course, if you mark a singleton as uncreatable, it is up to you to make sure you actually supply an instance via &lt;code&gt;QQmlEngine::setExternalSingletonInstance&lt;/code&gt; before the singleton is needed from QML.&lt;/p&gt;&lt;/div&gt;&lt;p&gt;The post &lt;a target="_blank" href="https://www.kdab.com/singleton-controllers-in-times-of-declarative-qml/"&gt;Singleton Controllers in Times of Declarative QML&lt;/a&gt; appeared first on &lt;a target="_blank" href="https://www.kdab.com"&gt;KDAB&lt;/a&gt;.&lt;/p&gt;</description><author>KDAB on Qt</author></item><item><title>KDE e.V. is looking for a software engineer</title><link>https://ev.kde.org/2026/05/07/cfp-platform/</link><pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://ev.kde.org/2026/05/07/cfp-platform/</guid><description>&lt;!-- &gt; Edit 2022-12-10: applications for this position **are closed**. --&gt;
&lt;p&gt;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 &lt;a target="_blank" href="https://ev.kde.org/resources/jobad-platform-engineer-2026.pdf"&gt;call for proposals&lt;/a&gt;
for more details about this contract opportunity.
We are looking forward to your application.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The full call for proposals has more details.&lt;/p&gt;&lt;/blockquote&gt;</description><author>KDE e.V. news</author></item><item><title>KDE Gear 26.04.1</title><link>https://kde.org/announcements/gear/26.04.1/</link><pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://kde.org/announcements/gear/26.04.1/</guid><description>&lt;p&gt;Over 180 individual programs plus dozens of programmer libraries and feature plugins are released simultaneously as part of KDE Gear.&lt;/p&gt;
&lt;p&gt;Today they all get new bugfix source releases with updated translations, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;akonadi: Fix crash in EntityTreeView when selecting multiple items (&lt;a target="_blank" href="https://commits.kde.org/akonadi/4d6da5120eb3c979fee55d5a25146431ff748d29"&gt;Commit&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;kcachegrind: Don't read out of bounds (&lt;a target="_blank" href="https://commits.kde.org/kcachegrind/33cd7c49d5eebe95208c7515cbefc036ac32ba84"&gt;Commit&lt;/a&gt;, fixes bug &lt;a target="_blank" href="https://bugs.kde.org/519280"&gt;#519280&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;konsole: Prevent QTabBar from closing tabs on middle mouse clicks (&lt;a target="_blank" href="https://commits.kde.org/konsole/6640d673343bcfda968954ac0dab65d237103add"&gt;Commit&lt;/a&gt;, fixes bug &lt;a target="_blank" href="https://bugs.kde.org/515014"&gt;#515014&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Distro and app store packagers should update their application packages.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a target="_blank" href="https://community.kde.org/KDE_Gear/26.04_Release_notes"&gt;26.04 release notes&lt;/a&gt; for information on tarballs and known issues.&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="https://community.kde.org/Get_KDE_Software_on_Your_Linux_Distro"&gt;Package download wiki page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="https://kde.org/info/releases-26.04.1/"&gt;26.04.1 source info page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" href="https://kde.org/announcements/changelogs/gear/26.04.1/"&gt;26.04.1 full changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><author>KDE Community</author></item><item><title>Installing Qt metatypes files</title><link>https://nicolasfella.de/posts/installing-qt-metatypes/?utm_source=atom_feed</link><pubDate>Wed, 06 May 2026 21:00:00 +0000</pubDate><guid isPermaLink="true">https://nicolasfella.de/posts/installing-qt-metatypes/</guid><description>&lt;p&gt;If you have been on invent.kde.org lately you might have seen some merge requests about &amp;ldquo;Install Qt metatypes&amp;rdquo; and wondered what that&amp;rsquo;s all about.&lt;/p&gt;
&lt;p&gt;When defining QML types in C++ the buildsytem tries to capture as much information about the type as possible, so that tools like qmllint, qmlls, and the QML compiler know about what API the type provides. If that information cannot be gathered the code will still work fine at runtime, but the development experience will be degraded.&lt;/p&gt;
&lt;p&gt;Normally, when all the types involved are from the local project (or Qt), and you are using the qt_add_qml_module CMake API as well as declarative type registration, things will work mostly out of the box. However, in some cases that&amp;rsquo;s not enough, and we need some extra steps.&lt;/p&gt;
&lt;p&gt;Imagine we have a library &lt;code&gt;MyLib&lt;/code&gt;, that exposes a class &lt;code&gt;MyModel&lt;/code&gt;. That model isn&amp;rsquo;t registered to QML at all. Now we have a program &lt;code&gt;MyProgram&lt;/code&gt;, that creates a subclass of &lt;code&gt;MyModel&lt;/code&gt;, and registers that to QML:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;#include &amp;lt;MyLib/MyModel&amp;gt;
class MySubModel : public MyModel &amp;#123;
Q_OBJECT
QML_ELEMENT
...
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This will work fine at runtime, but produces a suspicious build warning:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Warning: mysubmodel.h:3: MyModel is used as base type but cannot be found.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Opening any QML file using MySubModel in an qmlls-capable editor will show that type information for MySubModel is limited or nonexistant. So how do we fix this? Enter: metatypes files.&lt;/p&gt;
&lt;p&gt;During the build process moc processes your classes and extracts information about properties, signals, invokables, etc. That information is then processed by the QML tooling. For Qt&amp;rsquo;s own types that&amp;rsquo;s done out of the box, and for custom QML module&amp;rsquo;s types too, but if your custom module is using types from another library some extra steps are needed.&lt;/p&gt;
&lt;p&gt;First, the library needs to extract its metatypes into a consumable file. This is done using the &lt;code&gt;qt_extract_metatypes&lt;/code&gt; CMake API:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;add_library(MyLib)
qt_extract_metatypes(MyLib)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This will produce a JSON file that contains information about the types in MyLib. If the QML module needing this is in the same buildsystem that&amp;rsquo;s enough to make things work. However, quite often it will be used by something in another project, so we need to install the file alongside the library:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;add_library(MyLib)
# the path of the generated file will be stored in $&amp;#123;METATYPES_FILE}
qt_extract_metatypes(MyLib OUTPUT_FILES METATYPES_FILE)
install(TARGETS MyLib)
install(FILES $&amp;#123;METATYPES_FILE} DESTINATION $&amp;#123;KDE_INSTALL_QTMETATYPESDIR})
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This will install the file, but that&amp;rsquo;s not enough for the consuming project to pick it up, we need to associate the metatypes file with the library. To make that happen we add the (public) sources for that library:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;add_library(MyLib)
# the path of the generated file will be stored in $&amp;#123;METATYPES_FILE}
qt_extract_metatypes(MyLib OUTPUT_FILES METATYPES_FILE)
# extract the filename from the path
get_filename_component(METATYPES_FILE_NAME $&amp;#123;METATYPES_FILE} NAME)
# add metatypes file to the interface sources set
target_sources(MyLib INTERFACE $&amp;lt;INSTALL_INTERFACE:$&amp;#123;KDE_INSTALL_QTMETATYPESDIR}/$&amp;#123;METATYPES_FILE_NAME}&amp;gt;)
install(TARGETS MyLib)
install(FILES $&amp;#123;METATYPES_FILE} DESTINATION $&amp;#123;KDE_INSTALL_QTMETATYPESDIR})
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This scary looking line of CMake basically boils down to &amp;ldquo;Everything that links against MyLib will get the installed metatypes file added to its sources&amp;rdquo;. This makes the QML machinery in the application pick it up.&lt;/p&gt;
&lt;p&gt;With that, no changes to the application are necessary. The build warning disappears, and type information in the editor starts working.&lt;/p&gt;
&lt;p&gt;Since it&amp;rsquo;s hard to know in advance whether a library&amp;rsquo;s types are going to be used that way it&amp;rsquo;s probably a good idea to do this for any library, especially since there&amp;rsquo;s effectively no cost to this, other than some CMake code. It would be great if Qt would take care of most of that code though, see &lt;a target="_blank" href="https://qt-project.atlassian.net/browse/QTBUG-123052"&gt;https://qt-project.atlassian.net/browse/QTBUG-123052&lt;/a&gt; and related patches.&lt;/p&gt;
&lt;p&gt;A word on the install location: When installing Qt-related files there&amp;rsquo;s some subtleties involved when determining where to install things. Fortunatley ECM takes care of that for us, so it &lt;a target="_blank" href="https://invent.kde.org/frameworks/extra-cmake-modules/-/merge_requests/583"&gt;gained&lt;/a&gt; a new variable &lt;code&gt;KDE_INSTALL_QTMETATYPESDIR&lt;/code&gt; for this.&lt;/p&gt;
&lt;p&gt;This has been applied to a few KDE libraires already, but there&amp;rsquo;s likely more where it would be benefitial, to allow for better QML tooling and ultimately a better developer experience.&lt;/p&gt;</description><author>Nicolas Fella</author></item><item><title>Making wl_shm fast</title><link>https://zamundaaa.github.io/wayland/2026/05/06/making-wl-shm-fast.html</link><pubDate>Wed, 06 May 2026 13:25:00 +0000</pubDate><guid isPermaLink="true">https://zamundaaa.github.io/wayland/2026/05/06/making-wl-shm-fast</guid><description>&lt;p&gt;While most new applications use the GPU for rendering to achieve better performance and battery life, there
are some new applications and a lot of older applications that still use CPU rendering.
More specifically relevant for KDE, while QtQuick is GPU accelerated, QtWidgets uses CPU rendering.&lt;/p&gt;
&lt;p&gt;With CPU rendering, instead of sharing GPU buffers with the compositor, wl_shm is used to present images.
“shm” stands for “shared memory”, and is literally just some system memory allocated by
the app and shared with the compositor.&lt;/p&gt;
&lt;h1 id="why-is-it-slow"&gt;Why is it slow?&lt;/h1&gt;
&lt;p&gt;The rendering speed of an application using CPU rendering depends a lot on what the application
is doing exactly, but a very large factor is simply the sheer number of pixels and thus bytes it manipulates.
With high resolution screens, especially single threaded CPU rendering can get pretty slow.&lt;/p&gt;
&lt;p&gt;Optimizing the application side isn’t my area of expertise though, and not what I’m primarily interested in as a compositor developer.
My main goal is to let the application render at whatever speed it can, and to efficiently transfer the results onto the screen.&lt;/p&gt;
&lt;p&gt;On the compositor side we can’t normally use shm buffers directly. For the GPU to be able to access the data,
we first need to copy it to a different buffer that meets the requirements of the GPU. This copy is often done in two steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;copy the data to a GPU-accessible buffer on the CPU&lt;/li&gt;
&lt;li&gt;copy that GPU-accessible buffer to another buffer in GPU memory&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;With both OpenGL and Vulkan, that first copy is blocking the main thread until it’s complete. You &lt;em&gt;can&lt;/em&gt; offload the copy to a different thread with some additional code, but that would just move the CPU usage, rather than reduce it.&lt;/p&gt;
&lt;p&gt;The second copy is more acceptable, since the GPU does it asynchronously and more efficiently, but on integrated GPUs, this would still end up copying data from system memory to a different region of system memory, for no good reason.&lt;/p&gt;
&lt;p&gt;The result of these copies is that on high resolution screens with applications using shm buffers, performance noticeably suffers and CPU usage is much higher than it has any right to be.&lt;/p&gt;
&lt;p&gt;On my laptop with a still relatively new and high end Ryzen 7840U, I could see the cursor sometimes skip frames when quickly moving it over project files in KDevelop, since KWin’s main thread was being blocked by these texture uploads. Normally that’s not really noticeable, but with the power profile set to “power save”, it felt really sluggish.&lt;/p&gt;
&lt;h1 id="vulkan-will-fix-it-right"&gt;Vulkan will fix it… right?&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;When you hold a hammer, every problem starts to look like a nail.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Since we recently started using Vulkan in KWin to fix some other problems caused by OpenGL’s inadequacies&lt;sup id="fnref:5" role="doc-noteref"&gt;&lt;a href="#fn:5" class="footnote" rel="footnote"&gt;1&lt;/a&gt;&lt;/sup&gt;, I obviously looked for a Vulkan solution first. And lo and behold, &lt;code class="language-plaintext highlighter-rouge"&gt;VK_EXT_external_memory_host&lt;/code&gt; does exist, and it’s perfect for this! Or at least it looked like it would be…&lt;/p&gt;
&lt;p&gt;The extension allows wrapping a “host pointer” (aka a normal pointer to CPU memory) in a &lt;code class="language-plaintext highlighter-rouge"&gt;VkBuffer&lt;/code&gt; or even &lt;code class="language-plaintext highlighter-rouge"&gt;VkImage&lt;/code&gt;&lt;sup id="fnref:1" role="doc-noteref"&gt;&lt;a href="#fn:1" class="footnote" rel="footnote"&gt;2&lt;/a&gt;&lt;/sup&gt;. With a pretty low amount of new Vulkan code, the GPU could asynchronously copy the &lt;code class="language-plaintext highlighter-rouge"&gt;VkBuffer&lt;/code&gt; to a GPU-local buffer.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Unfortunately,&lt;/em&gt; the implementation at least on AMD comes with some limitations. Because of potential security issues, pointers to anything associated with a file descriptor (which shm buffers always are) can’t be imported this way by amdgpu.&lt;/p&gt;
&lt;p&gt;There is also the more recent &lt;code class="language-plaintext highlighter-rouge"&gt;VK_EXT_host_image_copy&lt;/code&gt; for optimizing image uploads, but it would only allow removing the second copy rather than the first, so it’s not exactly what I needed.&lt;/p&gt;
&lt;h1 id="udmabuf-to-the-rescue"&gt;udmabuf to the rescue&lt;/h1&gt;
&lt;p&gt;udmabuf is a Linux driver that can wrap memfd-allocated memory in a dmabuf. A dmabuf is a handle to GPU memory, and memfd is how shm buffers are usually allocated by Wayland clients… so it’s a perfect fit for what I wanted to do.&lt;/p&gt;
&lt;p&gt;There’s one caveat to this: In order to be able to create a udmabuf from it, the allocated memory must be a range of memory pages&lt;sup id="fnref:2" role="doc-noteref"&gt;&lt;a href="#fn:2" class="footnote" rel="footnote"&gt;3&lt;/a&gt;&lt;/sup&gt;, so location and size have to be a multiple of the page size. Applications didn’t allocate their buffers with that in mind so far, since there was no benefit to it. Fixing that isn’t difficult though! Assuming one memfd per shm buffer (which at least Qt does), fulfilling the page size requirement should even be free&lt;sup id="fnref:4" role="doc-noteref"&gt;&lt;a href="#fn:4" class="footnote" rel="footnote"&gt;4&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;With the udmabuf successfully created, we can wrap it into a &lt;code class="language-plaintext highlighter-rouge"&gt;VkBuffer&lt;/code&gt; and do an asynchronous copy to a GPU-local buffer with Vulkan. However, we can do even better: If the stride&lt;sup id="fnref:3" role="doc-noteref"&gt;&lt;a href="#fn:3" class="footnote" rel="footnote"&gt;5&lt;/a&gt;&lt;/sup&gt; of the buffer matches the requirements of the driver, we can directly use the udmabuf with the GPU.&lt;/p&gt;
&lt;p&gt;This stride requirement is a bit more of a tradeoff than the page size one, since some additional memory may need to be allocated as padding at the end of each row in the image. Since most GPUs seem to be fine with a multiple of 256, the amount of “wasted” memory is still pretty low however - for example with a 3841x2160 image, it would be 0.55MB or 1.6% more memory used per buffer.&lt;/p&gt;
&lt;p&gt;So I added code to KWin to attempt to create a udmabuf for each shm buffer, and then import that into the GPU driver. If it fails, we just fall back to the old upload code, but if it succeeds, we don’t need to do any copies at all.&lt;/p&gt;
&lt;p&gt;The compositor side didn’t take a lot of code, but the application side was much simpler still. Including a comment explaining the reasoning, it merely took a grand total of 18 changed lines of code.&lt;/p&gt;
&lt;h1 id="the-result"&gt;The result&lt;/h1&gt;
&lt;p&gt;With the same example of KDevelop I mentioned before, the cursor is now always completely smooth. In terms of concrete numbers, KWin’s CPU usage while scrolling in KDevelop went from 80-90% on one core down to 20%!&lt;/p&gt;
&lt;p&gt;These improvements will be in Plasma 6.7 and Qt 6.11.2. I would recommend other toolkits and applications that use shm buffers to make the same changes as I did in Qt, it can make a really noticeable difference.&lt;/p&gt;
&lt;hr /&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;ol&gt;
&lt;li id="fn:5" role="doc-endnote"&gt;
&lt;p&gt;I’ll write a blog post about it once there’s more to talk about &lt;a href="#fnref:5" class="reversefootnote" role="doc-backlink"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:1" role="doc-endnote"&gt;
&lt;p&gt;With a Vulkan renderer, the &lt;code class="language-plaintext highlighter-rouge"&gt;VkImage&lt;/code&gt; would mean the second copy could be skipped as well &lt;a href="#fnref:1" class="reversefootnote" role="doc-backlink"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2" role="doc-endnote"&gt;
&lt;p&gt;A page is the smallest chunk of contiguous memory managed by the OS &lt;a href="#fnref:2" class="reversefootnote" role="doc-backlink"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4" role="doc-endnote"&gt;
&lt;p&gt;The kernel allocates in pages, so the amount of memory used should be the same either way &lt;a href="#fnref:4" class="reversefootnote" role="doc-backlink"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3" role="doc-endnote"&gt;
&lt;p&gt;Stride is how many bytes are used by each row of pixels in an image. There can be unused padding after each row, which is included in the stride. &lt;a href="#fnref:3" class="reversefootnote" role="doc-backlink"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description><author>Xaver’s blog</author></item><item><title>Introductory Post</title><link>https://ojasmaheshwari.bearblog.dev/introductory-post/</link><pubDate>Tue, 05 May 2026 17:00:43 +0000</pubDate><guid isPermaLink="true">https://ojasmaheshwari.bearblog.dev/introductory-post/</guid><description>&lt;p&gt;Hello, I am Ojas Maheshwari.&lt;/p&gt;
&lt;p&gt;I got selected for contributing to the project "Implement Font Subsetting when saving PDF files" for GSoC 2026 at KDE community.&lt;/p&gt;
&lt;p&gt;This site will have all the official documentation and progress updates on what I did through the whole journey including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;My approach and plan.&lt;/li&gt;
&lt;li&gt;The problems I faced and how I solved them.&lt;/li&gt;
&lt;li&gt;My thinking process wherever possible.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is an introductory page to see if the site works correctly.&lt;/p&gt;
&lt;p&gt;Thanks :D&lt;/p&gt;</description><author>Ojas Maheshwari</author></item><item><title>KeepSecret 1.1</title><link>https://notmart.org/blog/2026/05/keepsecret-1-1/</link><pubDate>Tue, 05 May 2026 11:37:00 +0000</pubDate><guid isPermaLink="true">https://notmart.org/blog/?p=6859</guid><description>&lt;p&gt;KeepSecret is our new password management application, based on &lt;a target="_blank" href="https://specifications.freedesktop.org/secret-service/latest/"&gt;SecretService&lt;/a&gt;, which works both with our old KWallet infrastructure as well as more modern services such as &lt;a target="_blank" href="https://github.com/linux-credentials/oo7"&gt;oo7&lt;/a&gt;, &lt;a target="_blank" href="https://keepassxc.org/"&gt;KeepassXC&lt;/a&gt; and many others.&lt;/p&gt;
&lt;p&gt;Version 1.1 has now been &lt;a target="_blank" href="https://apps.kde.org/keepsecret/"&gt;released&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This release Has been focused mainly on small usability papercuts and improved messaging to the user.&lt;/p&gt;
&lt;figure class="wp-block-image size-large"&gt;&lt;a target="_blank" href="https://notmart.org/blog/wp-content/uploads/2026/04/image.png"&gt;&lt;img fetchpriority="high" decoding="async" width="1024" height="700" src="https://notmart.org/blog/wp-content/uploads/2026/04/image-1024x700.png" alt="" class="wp-image-6860" srcset="https://notmart.org/blog/wp-content/uploads/2026/04/image-1024x700.png 1024w, https://notmart.org/blog/wp-content/uploads/2026/04/image-300x205.png 300w, https://notmart.org/blog/wp-content/uploads/2026/04/image-768x525.png 768w, https://notmart.org/blog/wp-content/uploads/2026/04/image-624x426.png 624w, https://notmart.org/blog/wp-content/uploads/2026/04/image.png 1074w" sizes="(max-width: 1024px) 100vw, 1024px" /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;An important aspect of this release is that is the first one that&amp;#8217;s &lt;a target="_blank" href="https://flathub.org/en/apps/org.kde.keepsecret"&gt;available on flathub&lt;/a&gt;, so it&amp;#8217;s very easy to install and test now, just hop on Discover to find it.&lt;/p&gt;
&lt;figure class="wp-block-image size-large"&gt;&lt;a target="_blank" href="https://notmart.org/blog/wp-content/uploads/2026/05/image.png"&gt;&lt;img decoding="async" width="1024" height="810" src="https://notmart.org/blog/wp-content/uploads/2026/05/image-1024x810.png" alt="" class="wp-image-6877" srcset="https://notmart.org/blog/wp-content/uploads/2026/05/image-1024x810.png 1024w, https://notmart.org/blog/wp-content/uploads/2026/05/image-300x237.png 300w, https://notmart.org/blog/wp-content/uploads/2026/05/image-768x608.png 768w, https://notmart.org/blog/wp-content/uploads/2026/05/image-624x494.png 624w, https://notmart.org/blog/wp-content/uploads/2026/05/image.png 1087w" sizes="(max-width: 1024px) 100vw, 1024px" /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;/p&gt;</description><author>Marco Martin</author></item><item><title>Introducing the QML Profiler Skill for Agentic Development</title><link>https://www.qt.io/blog/introducing-the-qml-profiler-skill-for-agentic-development</link><pubDate>Tue, 05 May 2026 07:02:18 +0000</pubDate><guid isPermaLink="true">https://www.qt.io/blog/introducing-the-qml-profiler-skill-for-agentic-development</guid><description>&lt;div class="hs-featured-image-wrapper"&gt;
&lt;a target="_blank" href="https://www.qt.io/blog/introducing-the-qml-profiler-skill-for-agentic-development?hsLang=en" title="" class="hs-featured-image-link"&gt; &lt;img src="https://www.qt.io/hubfs/QMLCodeProfilingBlogTitle.png" alt="Introducing the QML Profiler Skill for Agentic Development" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Instead of a painstaking row-by-row or slow flame graph reviews, the QML profiler skill for agentic development allows developers to delegate code performance profiling to AI agents.&lt;/span&gt;&lt;br&gt;&lt;br&gt;The skill guides the developer through the workflow, triggers the QML profiler, crunches through the resulting raw data, presents the performance bottlenecks in a concise report, and suggests improvements.&lt;br&gt;&lt;br&gt;The skill targets 2D Qt Quick applications and supports four profiling modes — rendering, logic, memory, and full. It can also analyze an existing trace file directly, without re-running the application, for example, if the performance trace has been run on the target hardware.&lt;/p&gt;
&lt;div class="hs-video-widget"&gt;
&lt;div class="hs-video-container" style="max-width: 1920px; margin: 0 auto;"&gt;
&lt;div class="hs-video-wrapper" style="position: relative; height: 0; padding-bottom: 56.25%"&gt;
&lt;iframe sandbox="allow-forms allow-scripts allow-same-origin allow-popups" style="position: absolute !important; width: 100% !important; height: 100% !important; left: 0; top: 0; border: 0 none; pointer-events: initial"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;em&gt;Video: QML profiling of shopping list app in Claude Code CLI &amp;nbsp;(Some sequences are shortened or accelerated)&lt;/em&gt;
&lt;img src="https://track-eu1.hubspot.com/__ptq.gif?a=149513&amp;amp;k=14&amp;amp;r=https%3A%2F%2Fwww.qt.io%2Fblog%2Fintroducing-the-qml-profiler-skill-for-agentic-development&amp;amp;bu=https%253A%252F%252Fwww.qt.io%252Fblog&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</description><author>Qt Dev Loop</author></item><item><title>Union: Spring 2026 Update</title><link>https://quantumproductions.info/articles/2026-05/union-spring-2026-update</link><pubDate>Mon, 04 May 2026 20:10:58 +0000</pubDate><guid isPermaLink="true">10 at https://quantumproductions.info</guid><description>&lt;span&gt;Union: Spring 2026 Update&lt;/span&gt;
&lt;div class="text-content clearfix field field--name-body field--type-text-with-summary field--label-hidden field__item"&gt;&lt;p&gt;It has been a long time since I wrote anything about &lt;a target="_blank" href="https://quantumproductions.info/articles/2025-02/moving-kdes-styling-future"&gt;Union&lt;/a&gt;, the new style engine
being developed for KDE. However, that does not mean nothing has happened in that
time. Quite the opposite, in fact (spoiler alert); we plan to do a first release of
Union with Plasma 6.7! So let us go over some of the things that happened with
Union.&lt;/p&gt;
&lt;h2&gt;CSS as Input Format&lt;/h2&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure role="group" class="align-right caption"&gt;
&lt;div class="media media--type-image media--view-mode-preview"&gt;
&lt;div class="field field--name-field-media-image field--type-image field--label-visually_hidden"&gt;
&lt;div class="field__label visually-hidden"&gt;Image&lt;/div&gt;
&lt;div class="field__item"&gt;
&lt;a target="_blank" href="https://quantumproductions.info/sites/default/files/2026-05/Screenshot_20260501_174408.png" aria-label="&amp;#123;&amp;quot;alt&amp;quot;:&amp;quot;A screenshot of some CSS code that Union uses for styling buttons and several other controls.&amp;quot;}" role="button" title="A screenshot of some CSS code that Union uses for styling buttons and several other controls." data-colorbox-gallery="taxonomy-zsb_RU0BQVo" class="colorbox" aria-controls="colorbox-iD568ioR1q0" data-cbox-img-attrs="&amp;#123;&amp;quot;alt&amp;quot;:&amp;quot;A screenshot of some CSS code that Union uses for styling buttons and several other controls.&amp;quot;}"&gt;&lt;img id="colorbox-iD568ioR1q0" src="https://quantumproductions.info/sites/default/files/styles/large/public/2026-05/Screenshot_20260501_174408.png?itok=UFwOtFxj" width="307" height="480" alt="A screenshot of some CSS code that Union uses for styling buttons and several other controls." loading="lazy"&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;figcaption&gt;CSS as used by Union for styling buttons and several other controls&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;One of the biggest changes that happened last year is that we switched the default
input format from SVG (as used by Plasma) to CSS. Somewhere during spring last year
I realised that, while using Plasma's SVG served us well to get the initial data
model sorted out, it was now holding things back. Additionally, and maybe even more
importantly, it was not something that I felt comfortable with shipping and recommend
people build styles with.&lt;/p&gt;
&lt;p&gt;Plasma's SVG styling, at first glance, looks pretty close to what we would want
as an input format: something that would allow designers to easily create and
modify styles. The feedback from designers who worked with Plasma's SVG styling
was the opposite; getting everything right in the SVG for things to work correctly
is a lot harder than it seems, with a number of quirks specific to Plasma that
need to be considered, as well as limitations with regards to what features
are supported. Additionally, there are several technical issues that made me
uncomfortable relying too much on SVGs as an input format.&lt;/p&gt;
&lt;p&gt;So we wanted to switch to CSS, which has always been the input format I wanted
to use. It is well known, has a fairly reasonable syntax and is already being
used for the task we want to use it for.&lt;/p&gt;
&lt;p&gt;However, there is not really a good library available that parses CSS. The best
I could find is the Rust &lt;a target="_blank" href="https://github.com/servo/rust-cssparser"&gt;cssparser&lt;/a&gt; crate from the Servo project. Unfortunately,
this is Rust and Union is a C++ project. Additionally, it is slightly too low level
for Union to use directly, it is more of a parser-building toolkit than a real
parser. So I created the &lt;a target="_blank" href="https://invent.kde.org/libraries/cxx-rust-cssparser"&gt;cxx-rust-cssparser&lt;/a&gt; library that makes use of the
&lt;code&gt;cssparser&lt;/code&gt; crate and provides a C++ interface to parse CSS files. Then I hooked
that up as a new input format for Union to use and we could start styling things
with CSS.&lt;/p&gt;
&lt;h2&gt;Breeze in CSS&lt;/h2&gt;
&lt;p&gt;So we set out to build yet-another implementation of Breeze, this time using
Union's CSS. We needed an initial default style for Union, and while there's quite
some work happening on a design system and a new style, we wanted a known baseline
to work against, similar to what we did with the Plasma SVG input in the first place.
This does not mean Breeze will be the only style supported by Union, but rather it
limits the scope of the initial work to what is needed for Breeze to work.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure role="group" class="align-center caption"&gt;
&lt;div class="media media--type-image media--view-mode-preview"&gt;
&lt;div class="field field--name-field-media-image field--type-image field--label-visually_hidden"&gt;
&lt;div class="field__label visually-hidden"&gt;Image&lt;/div&gt;
&lt;div class="field__item"&gt;
&lt;a target="_blank" href="https://quantumproductions.info/sites/default/files/2026-05/Screenshot_20260501_173702.png" aria-label="&amp;#123;&amp;quot;alt&amp;quot;:&amp;quot;A screenshot of the union-gallery application showing different button controls&amp;quot;}" role="button" title="A screenshot of the union-gallery application showing different button controls" data-colorbox-gallery="taxonomy-zsb_RU0BQVo" class="colorbox" aria-controls="colorbox--yx6gWNC7Ig" data-cbox-img-attrs="&amp;#123;&amp;quot;alt&amp;quot;:&amp;quot;A screenshot of the union-gallery application showing different button controls&amp;quot;}"&gt;&lt;img id="colorbox--yx6gWNC7Ig" src="https://quantumproductions.info/sites/default/files/styles/large/public/2026-05/Screenshot_20260501_173702.png?itok=vmPRxi4m" width="480" height="288" alt="A screenshot of the union-gallery application showing different button controls" loading="lazy"&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;figcaption&gt;A comparison of four different implementations of Breeze-styled buttons.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;As it turns out, because we have multiple implementations of the same thing, there
are slight differences between those implementations. Some of them have been
intentional, such as &lt;a target="_blank" href="https://invent.kde.org/plasma/qqc2-breeze-style"&gt;qqc2-breeze-style&lt;/a&gt; using a different spin box style from the
Breeze widgets style; others less so. To make it easy to compare what Union's
implementation looked like compared to the other styles, I created a simple
application that displays pages with controls side-by-side, each page using a
different implementation of Breeze.&lt;/p&gt;
&lt;p&gt;Union's implementation of Breeze is not a one-to-one copy of the Qt Widgets
implementation as exposed by &lt;a target="_blank" href="https://invent.kde.org/frameworks/qqc2-desktop-style"&gt;qqc2-desktop-style&lt;/a&gt;, though it comes quite close.
However, in certain cases, we intentionally deviate, either because the
different implementations disagree on how to do something, or because Union
allows things that we could not do before.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure role="group" class="align-center caption"&gt;
&lt;div class="media media--type-image media--view-mode-preview"&gt;
&lt;div class="field field--name-field-media-image field--type-image field--label-visually_hidden"&gt;
&lt;div class="field__label visually-hidden"&gt;Image&lt;/div&gt;
&lt;div class="field__item"&gt;
&lt;a target="_blank" href="https://quantumproductions.info/sites/default/files/2026-05/Screenshot_20260501_175438.png" aria-label="&amp;#123;&amp;quot;alt&amp;quot;:&amp;quot;A screenshot comparing different implementations of spin boxes and how they handle certain corner cases&amp;quot;}" role="button" title="A screenshot comparing different implementations of spin boxes and how they handle certain corner cases" data-colorbox-gallery="taxonomy-zsb_RU0BQVo" class="colorbox" aria-controls="colorbox-Na3xsOE6gbk" data-cbox-img-attrs="&amp;#123;&amp;quot;alt&amp;quot;:&amp;quot;A screenshot comparing different implementations of spin boxes and how they handle certain corner cases&amp;quot;}"&gt;&lt;img id="colorbox-Na3xsOE6gbk" src="https://quantumproductions.info/sites/default/files/styles/large/public/2026-05/Screenshot_20260501_175438.png?itok=c6h3iSlH" width="480" height="64" alt="A screenshot comparing different implementations of spin boxes and how they handle certain corner cases" loading="lazy"&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;figcaption&gt;Comparing different implementations of spin boxes; Union is on the far left.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;For example, consider the spin boxes above. We have long wanted to use a style
where the "increase" and "decrease" buttons are bigger and to the left and right of
the value. Both &lt;code&gt;qqc2-breeze-style&lt;/code&gt; and Plasma already use this style. However,
the QtWidgets style uses a version with small up and down arrows stacked on the
right, because a lot of widgets applications expect a spinbox to be fairly small.
For Union, we actually implement both: If the spinbox has enough space, we use
the preferred style with buttons left and right, but if the spinbox is constrained
somehow we switch to the style with smaller buttons stacked to the right. This
gives us the best of both worlds, where we can use the preferred style but have
a decent fallback for cases where that does not fit.&lt;/p&gt;
&lt;h2&gt;Union's First Release?!&lt;/h2&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure role="group" class="align-right caption"&gt;
&lt;div class="media media--type-image media--view-mode-preview"&gt;
&lt;div class="field field--name-field-media-image field--type-image field--label-visually_hidden"&gt;
&lt;div class="field__label visually-hidden"&gt;Image&lt;/div&gt;
&lt;div class="field__item"&gt;
&lt;a target="_blank" href="https://quantumproductions.info/sites/default/files/2026-05/Screenshot_20260501_181135.png" aria-label="&amp;#123;&amp;quot;alt&amp;quot;:&amp;quot;System Settings showing the Keyboard settings page with Union&amp;quot;}" role="button" title="System Settings showing the Keyboard settings page with Union" data-colorbox-gallery="taxonomy-zsb_RU0BQVo" class="colorbox" aria-controls="colorbox-_FNdOl14X1s" data-cbox-img-attrs="&amp;#123;&amp;quot;alt&amp;quot;:&amp;quot;System Settings showing the Keyboard settings page with Union&amp;quot;}"&gt;&lt;img id="colorbox-_FNdOl14X1s" src="https://quantumproductions.info/sites/default/files/styles/large/public/2026-05/Screenshot_20260501_181135.png?itok=H6pbhot0" width="480" height="420" alt="System Settings showing the Keyboard settings page with Union" loading="lazy"&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;figcaption&gt;System Settings' Keyboard page as styled by Union&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The work on Union's Breeze implementation has progressed to the point where it
is very hard to distinguish whether or not you are running the Union version.
We have also tested with a bunch of applications and made sure that any differences
were fixed. So we are at a stage where we need to get Union into the hands of more
people, both to get extra people testing whether there are any major issues, but
also to have interested people creating new styles.&lt;/p&gt;
&lt;p&gt;This means that with the upcoming Plasma 6.7 release, we plan to include Union.
Discussion is currently ongoing whether we will enable it by default, but even
if not there will be a way to try it out.&lt;/p&gt;
&lt;h2&gt;Looking to the Future&lt;/h2&gt;
&lt;p&gt;I have so far mostly talked about the Qt Quick side of things, but what about Qt
Widgets? We so far have focused on the Qt Quick output to have something that we
could ship in a good working state. With that work nearing completetion, we can
look forward to what to do next.&lt;/p&gt;
&lt;p&gt;We already have a prototype implementation of a Qt Widgets output for Union. One
of the next goals will be to flesh this out further into a complete QStyle
implementation that is as usable as the Qt Quick output.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;figure role="group" class="align-left caption"&gt;
&lt;div class="media media--type-image media--view-mode-preview"&gt;
&lt;div class="field field--name-field-media-image field--type-image field--label-visually_hidden"&gt;
&lt;div class="field__label visually-hidden"&gt;Image&lt;/div&gt;
&lt;div class="field__item"&gt;
&lt;a target="_blank" href="https://quantumproductions.info/sites/default/files/2026-05/Screenshot_20260504_183837.png" aria-label="&amp;#123;&amp;quot;alt&amp;quot;:&amp;quot;A screenshot of KDE Plasma showing the Wallpaper selection dialog&amp;quot;}" role="button" title="A screenshot of KDE Plasma showing the Wallpaper selection dialog" data-colorbox-gallery="taxonomy-zsb_RU0BQVo" class="colorbox" aria-controls="colorbox-VDryPyAnPH0" data-cbox-img-attrs="&amp;#123;&amp;quot;alt&amp;quot;:&amp;quot;A screenshot of KDE Plasma showing the Wallpaper selection dialog&amp;quot;}"&gt;&lt;img id="colorbox-VDryPyAnPH0" src="https://quantumproductions.info/sites/default/files/styles/large/public/2026-05/Screenshot_20260504_183837.png?itok=RzvzH8Ht" width="480" height="410" alt="A screenshot of KDE Plasma showing the Wallpaper selection dialog" loading="lazy"&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;figcaption&gt;KDE Plasma using Union for the configuration window. Panel and applet styling is one thing we will add in the future.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Another item we will be looking at is to use Union's CSS input for styling
Plasma, making it possible for Union styles to provide styling for things like
panels and widget popups. Note that we will not drop support for SVG styling
in Plasma, but we do hope we can make Union's CSS-based styling the primary way
to style Plasma in the future.&lt;/p&gt;
&lt;p&gt;We also want to expand the things Union can do, so that designers are not
limited in what kind of styles they can create using Union. This includes things
like expanding the support for specific CSS features, adding support for more
rendering options and reconsidering how we handle colours.&lt;/p&gt;
&lt;h2&gt;In Closing&lt;/h2&gt;
&lt;p&gt;As you can see, there is still a lot of work to be done for Union to unionize
all of KDE's styling. For that, we would love to hear your experience with it!
If you test out Union, please report every problem you find with any existing
Qt Quick-based application. See &lt;a target="_blank" href="https://invent.kde.org/plasma/union/-/blob/master/README.md?ref_type=heads"&gt;the README&lt;/a&gt; for instructions on how to test.
You can report issues &lt;a target="_blank" href="https://bugs.kde.org/enter_bug.cgi?product=Union"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you are a style designer interested in creating new styles, we are working on
&lt;a target="_blank" href="https://api.kde.org/css-index.html"&gt;documentation&lt;/a&gt; that explains how to do so, in the meantime, feel free to
experinent with the &lt;a target="_blank" href="https://invent.kde.org/plasma/union/-/tree/master/src/input/css/styles/breeze?ref_type=heads"&gt;CSS files&lt;/a&gt; used by the Breeze style.&lt;/p&gt;
&lt;p&gt;If you are interested in working on Union itself, or otherwise would like to discuss
something relating to Union, feel free to drop by on &lt;a target="_blank" href="https://matrix.to/#/#union:kde.org"&gt;Matrix&lt;/a&gt;. If you want to get a
closer look at what is currently in development, we make heavy use of &lt;a target="_blank" href="https://invent.kde.org/plasma/union/-/work_items"&gt;Gitlab's issues&lt;/a&gt;
for development tracking,&lt;/p&gt;
&lt;p&gt;Discuss this post at &lt;a target="_blank" href="https://discuss.kde.org/t/union-spring-2026-update/46756"&gt;KDE Discuss&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
&lt;span&gt;&lt;span&gt;ahiemstra&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;time datetime="2026-05-04T22:10:58+02:00" title="Monday, May 4, 2026 - 22:10"&gt;Mon, 05/04/2026 - 22:10&lt;/time&gt;
&lt;/span&gt;</description><author>Arjen Hiemstra</author></item><item><title>Introducing the Qt Code Review Skills for Agentic Code Review</title><link>https://www.qt.io/blog/introducing-the-qt-code-review-skills-for-agentic-development</link><pubDate>Mon, 04 May 2026 15:12:07 +0000</pubDate><guid isPermaLink="true">https://www.qt.io/blog/introducing-the-qt-code-review-skills-for-agentic-development</guid><description>&lt;div class="hs-featured-image-wrapper"&gt;
&lt;a target="_blank" href="https://www.qt.io/blog/introducing-the-qt-code-review-skills-for-agentic-development?hsLang=en" title="" class="hs-featured-image-link"&gt; &lt;img src="https://www.qt.io/hubfs/Agentic%20Code%20Review%20Skill.png" alt="Introducing the Qt Code Review Skills for Agentic Code Review" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"&gt; &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;Reviewing, auditing, or sanity-checking code usually means running separate linters, reading through checklists, and manually verifying Qt-specific patterns across dozens of files. The Qt code review skills help developers to automate part of this code review phase. Developers avoid a laborious manual walkthrough of every file, with the AI agent running a deterministic linter followed by six parallel deep-analysis agents and surfacing real issues with mitigations in a few minutes.&lt;/p&gt;
&lt;h2&gt;AI-Powered Code Reviews with Reliable Results&lt;/h2&gt;
&lt;img src="https://track-eu1.hubspot.com/__ptq.gif?a=149513&amp;amp;k=14&amp;amp;r=https%3A%2F%2Fwww.qt.io%2Fblog%2Fintroducing-the-qt-code-review-skills-for-agentic-development&amp;amp;bu=https%253A%252F%252Fwww.qt.io%252Fblog&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</description><author>Qt Dev Loop</author></item><item><title>Goals for GSoC 2026 - Improving Kdenlive Effect Widgets</title><link>https://yashbavadiya.bearblog.dev/goals-for-gsoc-2026-improving-kdenlive-effect-widgets/</link><pubDate>Mon, 04 May 2026 11:34:00 +0000</pubDate><guid isPermaLink="true">https://yashbavadiya.bearblog.dev/goals-for-gsoc-2026-improving-kdenlive-effect-widgets/</guid><description>&lt;p&gt;Thank you to the KDE community and Jean-Baptiste for selecting my proposal. Congratulations to all other accepted contributors!&lt;/p&gt;
&lt;p&gt;I'll be working on improving the effect widget system in Kdenlive this summer. As someone who uses Kdenlive daily for my own videos, these are problems I've personally hit, which makes this project feel very personal.&lt;/p&gt;
&lt;p&gt;Here are my three main goals:&lt;/p&gt;
&lt;h2 id=curves-widget&gt;Curves Widget&lt;/h2&gt;&lt;p&gt;Replace the channel dropdown with a tab-based interface so each color channel (RGB, Red, Green, Blue, Alpha, Luma) has its own independent curve. Currently you need to apply the effect three times to get per-channel control, this fixes that with a single effect instance.&lt;/p&gt;
&lt;h2 id=gradient-editor&gt;Gradient Editor&lt;/h2&gt;&lt;p&gt;Build a standalone gradient widget with support for arbitrary draggable color stops, replacing the current hardcoded two-stop system in the effects panel.&lt;/p&gt;
&lt;h2 id=speed-ramp&gt;Speed Ramp&lt;/h2&gt;&lt;p&gt;Add bezier curve handles to the time remapping panel so speed transitions can ease in and out smoothly, with presets like Ease In, Ease Out, Ease In/Out, and Linear.&lt;/p&gt;
&lt;p&gt;Coding begins May 25. I'll be posting weekly updates here throughout the summer. Looking forward to a productive GSoC!&lt;/p&gt;</description><author>Yash Bavadiya</author></item><item><title>Using the WebView module with C++ and Qt Widgets</title><link>https://www.qt.io/blog/using-the-webview-module-with-c-and-qt-widgets</link><pubDate>Mon, 04 May 2026 10:46:19 +0000</pubDate><guid isPermaLink="true">https://www.qt.io/blog/using-the-webview-module-with-c-and-qt-widgets</guid><description>&lt;p&gt;&lt;span&gt;For a long time, developers of Qt-based C++ applications have only had one option for embedding web content: Qt WebEngine. And while it offers a large API with many useful features, the module has its downsides, since it can consume a lot of system resources and increase binary size. For QML users, we’ve had an alternative in the Qt WebView module, but that API had never been exposed to C++ until now.&lt;/span&gt;&lt;/p&gt;
&lt;img src="https://track-eu1.hubspot.com/__ptq.gif?a=149513&amp;amp;k=14&amp;amp;r=https%3A%2F%2Fwww.qt.io%2Fblog%2Fusing-the-webview-module-with-c-and-qt-widgets&amp;amp;bu=https%253A%252F%252Fwww.qt.io%252Fblog&amp;amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "&gt;</description><author>Qt Dev Loop</author></item></channel></rss>