Skip to content

Sunday, 21 June 2026

This week, the import/export feature for KeepSecret was completed and merged in !33.

The implementation went through several changes before reaching its final form. My initial approach was to use a KWalletManager-compatible XML format so that data could be exchanged directly between the two applications. To match KWalletManager's structure exactly, I referenced kwalleteditor.cpp from the KWalletManager repository and implemented support for elements.

The final format now preserves all item information:

-Secrets are Base64-encoded and decoded from raw bytes, avoiding UTF-8 conversions.

-ContentType is preserved per the Secret Service specification.

-Attributes are exported exactly as stored.

-Files use the .keepsecret extension instead of .xml.

My first version queried libsecret directly during export. After review, I changed it to use the data already stored in m_items when a wallet is opened, making the code simpler, cleaner, and consistent with the rest of the model.

There was also a small but important UI change. Initially, the Import and Export actions were placed in the application's global drawer. During review, Marco Martin noted that these operations belong to a specific wallet rather than the application as a whole. Following that feedback, the actions were moved to the wallet page itself and integrated into the ActionCollection system, alongside actions such as Lock and Delete Wallet.

The next step is a follow-up merge request that adds support for importing the legacy KWalletManager XML format. This will make migration from KWallet to KeepSecret much smoother for existing users. The merge request!34 is open and under review.

It's been quite a while since I last wrote an entry in this blog. It's also been some time in which my invent gitlab graph has been feeling a bit emptier and I've also been more absent from the KDE work and community in general.

Several causes have been lining up to cause this lack of time and energy (or, in modern terms, bandwidth) I've had lately to dedicate to this amazing community and projects. But one could also summarize this to a lack of motivation.

In order to improve the situation, I've had to resort to a last desperate meassure: LEARNING VI!.

I know most people reading this might want to discourage me from such a painful path, more even at my 40+ age. But I've found myself again piked by the spark of curiosity, and wanting to learn and try new thigs. Even writing this paragraphs feel a bit easier as I'm punching characters in INSERT MODE.

Of course, I've not jumped into a vim/neovim terminal editor, but the very same Kate editor I'm used and love to work with. Just activated the integrated VI-mode and started getting comfortable with it.

On this process I've also discoverd several small issues that were not fully working, not implemented, or differ from the regular VIM experience. And as a KDE developer/enthusiast what's more enticing than pull up my sleeves and try to fix those. As we usually advice newcomers: better stratch one's own itch.

And what's best, I'm enjoying the experience of simultaneously learning some new VI magic, seeing how it is implemented in Kate, and using it to potentially fix bugs or implement new functionallity. I'm aware that the VI-mode is not supposed to be a full replacement or mimick of the traditional terminal VIM experience, and it shouldn't be. But I think there is still enough room for improvement within that limit.

For now, my first junior jobs on the matter have been implementing counted undos/redos (ex. 3u to undo the last 3 actions), and save some space in the always crowded status bar. Also trying to fix how 3rd-level symbols on my keyboard (those accessed with AltGr) are processed on Windows.

But since I've discovered VI registers, I'm having the most fun fixing some usecases, adding new tests and implementing some of the missing ones. And I have also some new exciting (but more involved) ideas in mind.

Still not sure if many users and members of the community will benefit from these. Are you a happy VIM (or VI adjacent) user? Did you know Kate had this mode completely integrated with its UI at a keystroke's distance? (try Ctrl-Alt-V)? Moreover, since the VI-mode code is implemented in the KTextEditor framework, any application that uses it, such as KWrite or KDevelop (or even your own app) can use this mode too!

This is fun!

Saturday, 20 June 2026

Hello everyone, i am uploading this blog nearly after a month. I got the wifi security QML working and one of my MR got merged in production. Here is my detailed work done during that phase

  • Refactored the Security 8021x. I have detailed explanation in my MR description. MR - https://invent.kde.org/plasma/plasma-nm/-/merge_requests/566

  • Similarly, I refactored the cpp code for the wifisecurity part (WPA2, WPA3 Personal networks), MR - https://invent.kde.org/plasma/plasma-nm/-/merge_requests/582

  • New QML designs and QML classes (which are still in review) for Wifi Security Tab and its combo box. MR - https://invent.kde.org/plasma/plasma-nm/-/merge_requests/583

  • I have refactored almost 50% of the main KCM editor (the left side pane is completed) MR - https://invent.kde.org/plasma/plasma-nm/-/merge_requests/584

What's Next?

I'm currently working on the remaining Network Connection tabs, such as General, Status, and others. There's still a lot of work ahead, but the progress so far has been encouraging.

I'll continue sharing updates as development progresses.

This is a weekly update from my Google Summer of Code 2026 project with KDE, improving effect widgets in Kdenlive, a free and open source video editor.

This week JB reviewed the per-channel tabs work on MR !887 and asked for four usability improvements. All four are now in the MR.

Per-channel curve colors

With four tabs (All/R/G/B) it wasn't obvious at a glance which channel you were editing. JB suggested passing a color through the XML:

<parameter type="av_curve" name="av.g" default="" color="#44CC44">
    <name>G</name>
</parameter>

The color attribute is now read in AssetParameterModel and passed down to KisCurveWidget, which uses it to draw that channel's curve line instead of the default neutral color. All/R/G/B use #CCCCCC/#FF4444/#44CC44/#4488FF.

Red Channel Green Channel Blue Channel

Reset button for the active channel

A small button next to the point spinboxes resets only the currently active tab's curve back to identity, going through KisCurveWidget::reset(); the same model update path as a normal edit, so it persists correctly on save.

Input/Output value display

JB asked for the selected point's X/Y to be shown numerically, like GIMP's curve editor, for finer adjustments and reproducibility. The underlying DragValue spinboxes for this already existed in the curve widget's .ui file but had never actually rendered, for either frei0r.curves or avfilter.curves; a layout ordering bug going back years. Rather than untangle that legacy code, I added two new QDoubleSpinBox widgets directly, wired to the existing currentPoint signal that fires on point selection/drag.

Input/Output values

Ghost overlay of edited channels

JB also suggested copying GIMP's behavior of showing all non-null curves at once, so you can see how channels relate while editing one. When a channel's curve is active for editing, the other channels are now drawn faintly, in their own colors, if they've been edited away from identity. The active channel stays fully opaque on top.

Ghost Overlays

All four changes are in MR !887. 48 unit test assertions pass; also fixed a test-environment issue where avcurvetest wasn't loading the Kdenlive XML effect definitions, which had been masking proper av_curve parameter typing.

JB's m_widgets null-placeholder feedback from last week is still unresolved, waiting on his direction before touching it.

A new Craft cache has been published about a week ago. The update has already been rolled out to KDE's CD and Windows CI with the update to Qt 6.11 beeing the most important change.

Changes (highlights)

General

We added updated our base image to build the Linux cache from AlmaLinux 8.10 to AlmaLinux 9.8. This implies a newer minimum required GLIBC.

We did inital work on MSVC 2026 support, but given that it is not supported by Qt 6.11, we did not complete it yet.

Blueprints

  • OpenSSL 3.6.2
  • Qt 6.11.1
  • New Qt modules QtGraphs and QtQuick3D
  • FFmpeg 8.1.1
  • FFmpeg is build with libass and x264 on MSVC now
  • tiff 4.7.1
  • libffi 3.5.2

About KDE Craft

KDE Craft is an open source meta-build system and package manager. It manages dependencies and builds libraries and applications from source on Windows, macOS, Linux, FreeBSD and Android.

Learn more on https://community.kde.org/Craft or join the Matrix room #kde-craft:kde.org

Call for submissions header

In 2015, some members of the KDE community began a conversation about where KDE was heading and how it would get there. That conversation became the seed of what is now KDE Goals - a community initiative to help guide KDE's efforts around shared objectives.

KDE Goals reaches its fifth cycle at a special milestone: KDE turns thirty this year. Thirty years of building software that puts people in control of their digital lives and enjoy freedom and privacy. The fourth cycle brought three goals that built toward this vision. Streamlined Application Development Experience focused on making KDE development smoother and more joyful. We Care About Your Input aimed to deliver a seamless out-of-the-box experience for input devices used by artists, gamers, and people with accessibility needs. KDE Needs You! worked on building a sustainable community growth targeting individuals and institutions alike. Checkout the one-year recap at Akademy last year.

Now, as that cycle draws to a close and launches us into the next upward spiral, it is time once again to ask: what matters most to KDE right now? What should the community rally behind for the next two years?

The floor is open. Dream big. The fifth cycle begins!

Join in

Anyone passionate about KDE and has a vision to share is welcome to submit a proposal. You do not have to be a developer to participate.

Read the selection process carefully before you send your proposal. Got any doubts? Join our Matrix room or leave a comment at the KDE forum.

Timeline

  • Call for submissions - June 20 to August 8
  • Refinement of proposals - August 9 to August 27
  • Voting period - August 28 to September 11
  • Tallying and preparation - September 12 to September 18
  • Announcement at Akademy - September 19

Welcome to a new issue of This Week in Plasma!

This week we released Plasma 6.7, and the reviews are overwhelmingly positive so far!

But the team didn’t sit on its laurels; instead we spent the week fixing a few issues that snuck past our beta testers or that developers didn’t manage to fix in time for the final release. So far it’s looking like this was a pretty smooth release.

And in addition, features and UI improvements started to merge for Plasma 6.8! Check it all out:

Notable new features

Plasma 6.8

Monitors are now identified with color-coded number badges in all the places they’re configured, making it easier to identify which one is which especially when using two monitors from the same product line. (Ramil Nurmanov, kscreen MR #456 and kwin MR #9090)

Multiple screens showing a colored number badge for each screen, making them easy to identify

Frameworks 6.28

KRunner-powered search fields can now convert between watt-hours, kilowatt-hours, and other similar energy units. (Levin Lhoest, kunitconversion MR #88)

Notable UI improvements

Plasma 6.7.1

There’s now a smooth blend effect when switching between global themes, just like there already was when switching between color schemes. (Kai Uwe Broulik, plasma-workspace MR #6199)

Plasma 6.8

Switched to the KDE-style color picker throughout QML-based KDE apps, instead of the one provided by Qt which doesn’t respect KDE color schemes. A few apps had already hardcoded the KDE one, but now it happens universally so all benefit from it. (Tobias Fella, KDE Bugzilla #520987)

When moving a window by dragging it while the Meta key is held down, it is now brought in front of all other windows. (Vlad Zahorodnii, KDE Bugzilla #520339)

Trying to delete a file on the desktop that you don’t have permission to delete now at least shows you an error message explaining what the problem is, instead of doing… nothing. (Tobias Fella, KDE Bugzilla #515869)

Made the “Connect” button in the VPN connection dialog a lot more visually obvious. (Kai Uwe Broulik, plasma-nm MR #600)

Added more symbols to the “press and hold a key to see related characters” feature of the Plasma virtual keyboard. (Jonas Harer, plasma-keyboard MR #133)

Frameworks 6.28

Fixed multiple sources of icons and thumbnails being blurry throughout Kirigami-based KDE software when using a fractional scale factor. (Marco Martin, kirigami MR #2116)

Improved the way the Kicker/Kickoff/etc. menus handle the case of multiple applications with the same name being installed. (Christoph Wolk, KDE Bugzilla #516802)

Notable bug fixes

Plasma 6.6.6

Fixed an issue that could make KWin fail to start at login with some older GPUs and GPU drivers in certain circumstances. (Xaver Hugl, KDE Bugzilla #521333)

Fixed a case where Plasma could crash while switching wallpapers in a slideshow. (Fushan Wen, plasma-workspace MR #6753)

Fixed an issue in System Monitor that could make items get sorted the wrong way after changing the order or visibility of columns in the data table. (Arjen Hiemstra, KDE Bugzilla #518073)

Fixed a regression in the icon displayed by the Networks widget for VLAN networks. (Fabian Druschke, KDE Bugzilla #516709)

Plasma 6.7.1

Fixed one of the most common ways that Discover could crash on operating systems using the rpm-ostree packaging technology, such as Fedora Kinoite. (Timothée Ravier, KDE Bugzilla #519672)

Fixed a case where KWin could crash while logging into the system if an app asked for an invalid color format. (Shaun Ren, kwin MR #9382)

Fixed an issue that could break accented text entry for some keyboard layouts while the Plasma virtual keyboard was enabled. (Kristen McWilliam, KDE plasma-keyboard MR #126)

Fixed a regression that made some network details go missing from the Networks widget. (Tobias Fella, KDE Bugzilla #521415)

Fixed a regression that made Task Manager badges displaying very large numbers of unread items visually overflow on very thin panels. (Nate Graham, KDE Bugzilla #521562)

Fixed a regression that made the Kickoff Application Launcher widget resize itself inappropriately while showing search results right after being added to a panel. (Christoph Wolk, KDE Bugzilla #521383)

Fixed a regression that made the Kickoff Application Launcher widget lose its hover effect for category list items, but only when using the non-default “Switch sidebar categories when hovering over them” setting. (Christoph Wolk, KDE Bugzilla #https://bugs.kde.org/show_bug.cgi?id=521558)

Fixed two issues with clipboard syncing in remote desktop use cases. (David Redondo, xdg-desktop-portal-kde MR #588 and xdg-desktop-portal-kde MR #589)

Frameworks 6.28

Fixed a regression in Kirigami that made the header of the “Manage Panels and Desktops” window overlap with the content. (Marco Martin, KDE Bugzilla #521552)

Notable in performance & technical

Plasma 6.6.6

Fixed a significant memory leak that was found when using window rules to force window decorations on Firefox in CSD mode. (Xaver Hugl, KDE Bugzilla #518939)

Plasma 6.7.1

Turned off the game controller input plugin by default, as some issues were uncovered and it appears to need a bit more time in the metaphorical oven. (Xaver Hugl, kwin MR #9424)

How you can help

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

Would you like to help put together this weekly report? Introduce yourself in the Matrix room and join the team!

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

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

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

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

The past two weeks went by fast. The learnings I gained while building the toy project I experimented around with Qt during Contribution Period are quite useful now. In the second week of GSoC, I ported the TM Manager from a separate dialogbox to TM Tab. It was done mainly for ease and with the reasoning that everything related to TMs can be in a single place. I kept most of the things as is. A lot of thought went into the UI Design.

The TM Manager is currently a standalone window which is accesible from any tab.

TM Manager

The "Manage Translation Memories" option is already available in the Tools Menu and again in the ToolBar of TM Tab since it's specific to it.

Menu Options

After the changes, pressing F7 or "Translation Memory" option from Tools menu will directly lead to TM Manager too as it is set on the left of TM Tab with a QSplitter. I believe this takes away a little redundancy in the design. This change is also justified pertaing to the future changes regarding Multi-TM selection and quering.

TM Manager After

The buttons restrict resizing the splitter horizontally. Intially I put all the actions in a QToolButton as I thought putting them in a right-click context menu might render them undiscovered. But such menus were already being used in some other parts of the app( and obviously other KDE apps).

From coding perspective, all I had to do was instantiate it in TM Tab instead. Since, it was no longer being used as a window( which would also have worked), it no longer inherits from KMainWindow. It used Grid Layout which I think is not exactly needed and just used a VBoxLayout for simplicity.

The splitter state is saved and restored using existing methods.

The obsolete references and methods for TM Manager are cleaned up.

During Week 3, I added checkboxes to DBFilesModel for TM selection which will be used in querying later in TM View for suggestions, autofill etc. and TM Tab for search. In th beginning of the project, I proposed adding another proxy layer over DBFilesModel for the checkboxes to not to disturb other things. But for ease of work, consistent architecture( couldn't find multiple proxy layers being used in the codebase) and with the solace that it won't impact other methods using DBFilesModel for their specific purpose, I went ahead to add checkboxes directly to it.

Multi-TM Selection

This is a deviation from my GSoc Proposal wherein I proposed to replace Combo Box with a List Widget having entries with checkboxes for Multi-TM selection. Since there would be TM dbs on the left of the tab anyways, I thought of enabling selection there itself, than to have two places(TM Manager and the List Widget) listing all the TMs.

Setting new flag for checking, showing checked state with data() and storing selected TM names to a set is done. The checked state persistence is to be worked upon. This is where I got stuck. TM names were to be saved and loaded from global and local config based on user's selection but when my mentor reviewed that this complex setup probably is not the best, we reached back to translators who originally requested the feature.

Friday, 19 June 2026

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


Open Source vs the Invisible Hand

Tags: tech, foss, commons, economics

Or why modern economics mostly loose the plot when you try to factor Open Source in there simplistic theories.

https://nesbitt.io/2026/06/18/open-source-vs-the-invisible-hand.html


Recommendations When Using LLM-backed Generative AI Systems for FOSS Contributions

Tags: tech, foss, ethics, ai, machine-learning, gpt, copilot

A very balanced set of recommendations from the SFC around LLM uses. It’s just the beginning and still lacks a bit in details. It’s very welcome though and I look forward to their updates.

https://sfconservancy.org/llm-gen-ai/llm-backed-generative-ai-recommendations.html


Turn your site into a place people can bump into each other

Tags: tech, web, blog, community

I like this idea. It’d be nice if more websites felt like little town squares.

https://cauenapier.com/blog/townsquare_release/


The world’s first trillionaire is a killer

Tags: tech, business, politics

People excited by accumulating so much wealth (on paper) are clearly showing sociopathic traits…

https://www.theverge.com/tech/949259/the-worlds-first-trillionaire-is-a-killer


Extinction-level capitalism

Tags: tech, politics, ethics, economics, ai, machine-learning, gpt

Long, rich, and sourced piece. Or why the current gold rush aims at accelerating wealth accumulation of a few to the expense of everyone else. If the plans work as intended, the outcome won’t look good.

https://matthewbutterick.com/extinction-level-capitalism.html


Dangerous Technology For Americans Only

Tags: tech, europe, politics, ai, machine-learning, gpt, foss, commons

The latest move by the US government treating LLMs like dangerous weapons tells something about the geopolitical moment. Can we collectively raise to the challenge and build on cooperation instead? It’d be a much better position than assuming governments or big companies will make the right choices for everyone else in isolation.

https://lucumr.pocoo.org/2026/6/13/americans-only/


It Is Trivially Easy to Use Reddit to Manipulate AI Search, Research Suggests

Tags: tech, ai, machine-learning, gpt, fake-news, scam, attention-economy

What a surprise… It turns out it’s very easy to manipulate AI “search”. Something which operates of statistical similarity to queries, who knew it could be manipulated. 🙄

https://www.404media.co/it-is-trivially-easy-to-use-reddit-to-manipulate-ai-search-research-suggests/


Report: How Developers React to AI-Scented Blog Posts

Tags: tech, blog, ai, machine-learning, gpt

Badly apparently, looks like it makes for prose people avoid. Now the thing is… with the widespread suspicion, some people might be wrongfully flagged as using LLM to write their posts.

https://writethatblog.substack.com/p/dev-reaction-to-ai-blog-posts


The Future of the Con Is Already Here, It’s Just Not Evenly Distributed

Tags: tech, ai, machine-learning, gpt, scam, security

What happens when targeted scams become cheap to run? This covers it fairly well, and we need to change our heuristics and trust model.

https://manishearth.github.io/blog/2026/06/17/the-future-of-the-con-is-already-here/


xan: The CSV magician

Tags: tech, data, data-visualization, tools, command-line

Looks like a nice command line tool for exploring data.

https://github.com/medialab/xan


.gitignore Isn’t the Only Way To Ignore Files in Git

Tags: tech, tools, version-control, git

Neat little summary on the mechanisms to ignore files in Git.

https://nelson.cloud/.gitignore-isnt-the-only-way-to-ignore-files-in-git/


Boot Naked Linux

Tags: tech, linux, embedded

A good reminder that Linux based systems can be slimmed down quite a bit. Can come in handy for specific devices.

https://nick.zoic.org/art/boot-naked-linux/


Why stdx is not on crates.io

Tags: tech, rust, supply-chain, security

Indeed, skipping the centralized package manager might be better in the long run.

https://kerkour.com/stdx-cratesio


Async Task Locals From Scratch

Tags: tech, asynchronous, memory, rust

Wondering how those are implemented and the challenges behind them? This is a good exploration of the idea.

https://wolfgirl.dev/blog/2026-06-16-async-task-locals-from-scratch/


Learn Rust Concurrency By Building a Thread Pool

Tags: tech, rust, multithreading

This is an excellent exercise to understand a language and its ecosystem better. This time it is about Rust.

https://blog.sheerluck.dev/posts/learn-rust-concurrency-by-building-a-thread-pool/


Rust Prevents Data Races, Not Race Conditions

Tags: tech, rust, multithreading

Sounds obvious to me, but I guess it’s worth repeating. It illustrates well the type of issues you still have to deal with in multi-threaded Rust.

https://corrode.dev/blog/rust-prevents-data-races-not-race-conditions/


How memory safety CVEs differ between Rust and C/C++

Tags: tech, security, memory, rust, c++, c

Interesting take on why CVEs are reported differently for C/C++ and Rust libraries. The responsibility for API misuse is treated differently because the abilities to express contracts is treated differently.

https://kobzol.github.io/rust/2026/06/15/how-memory-safety-cves-differ-between-rust-and-c-cpp.html


Memory Management in C++ by Patrice Roy

Tags: tech, c++, memory, book

Looks like a good book. This review definitely tempts me.

https://www.sandordargo.com/blog/2026/06/17/memory-managenent-by-patrice-roy


Parsing JSON at compile time with C++26 static reflection

Tags: tech, c++, type-systems, compiler, reflection

This is really interesting stuff that C++26 brings.

https://lemire.me/blog/2026/06/14/parsing-json-at-compile-time-with-c26-static-reflection/


Every Frame Perfect

Tags: tech, ux, graphics, animation, gui

Indeed, the intermediate steps in an animation have to make sense too. Too often we think about the start and end point but miss the quality of the transition.

https://tonsky.me/blog/every-frame-perfect/


Getting Creative with Perlin Noise Fields

Tags: tech, graphics, mathematics

So many possibilities with Perlin noise! There are some really fascinating textures in the lot.

https://sighack.com/post/getting-creative-with-perlin-noise-fields


The case for real collaboration

Tags: tech, pairing

I still wish our craft would practice pair and ensemble programming more. Somehow it’s been years and it doesn’t really take off unfortunately.

https://blog.mikebowler.ca/2026/06/15/collaboration/


Nine Questions I Now Ask in Interviews That I Wish I’d Asked Five Years Ago

Tags: interviews

This is a good list of questions. Never forget you need to assess the company you’re applying at. To often candidates forget to do it.

https://louisedeason.substack.com/p/nine-questions-i-now-ask-in-interviews


When Overwhelmed, Slow Down

Tags: health

This is sound advice. Especially in this era of chasing productivity at all costs, we tend to not listen to ourselves enough.

https://nathanpeterson.net/overwhelmed-slow-down/



Bye for now!

Wednesday, 17 June 2026

Penpot WebGL and Bugfixes

  • Penpot and WebGL
    • Penpot released their WebGL rendered (beta) for all users to test. This brought speed gains in rendering content on page and less lag when navigating. Frame rate was worked on and the overall interface appears faster. Pages load much faster than before, though there are still some rough edges. Overall, this is a gain for Ocean given it is a large design system.
    • This change also brought a sleuth of new bug reports for Penpot, you can see them here: https://github.com/penpot/penpot/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22IOP%20render%22
    • We also experienced a few issues around speed, borders missing, and incomplete rendering. Those were reported promptly.
    • From what I can see in their development page, there is going to be a 16.1 release with a few fixes for the rendering engine that should address the most pressing issues around speed and rendering accuracy.
  • Issue with boolean shapes and Penpot crahes
    • It seemed for some time that the Penpot file for Ocean was crashing constantly. I wasn’t sure what the problem was but whenever there was an update to the tokens, the system would record the change and then crash.
    • After reviewing some of the error messages, it seemed that the problem was derived from shapes containing boolean operations. For example, the Date Picker component has a cutout circle (A difference boolean operation) to form the circular shape that highlights the current day. Those components appear left and right of the circular shape. Like half moons. These shapes were not flattened, they retained their boolean operation.
    • This is generally not an issue at all but it appears it was in Penpot. Once I identified the shapes with the boolean properties, I flattened them all to make sure they were no longer a problem, and then boom! The problem was gone.
    • However, one reason for keeping boolean operations in the components and not flattening is so that other designers can understand how some components are built and also have greater control over their design. When you flatten shapes, this makes it so that you loose the “how” a shape is built.
    • Even though crashing is resolved, it’s important to note that adding, editing, and removing tokens can take a long time.
  • Issue with Input Fields and Badges Set to Static
    • Whenever one changes the base component at the root of the component, it seems that propagation is not always clean and some aspects of the component do not update as they should. Some values tend to go back to being static when you mean for them to use the fill or hug property.
    • It appears that some recalculations do not always yield the right result on the components.
    • They are aware of these problems and are working to address them.
    • This issue happened in some components where the text fields inside a nested component were suppose to have the fill property, but in their wrapped component setup, the base component text field showed static. This made is so that input fields looked longer than they should have inside other bigger components.
    • It took me a minute to update them all but it seems that now the input fields and badges should behave properly.
  • After putting all these fixes in, I uploaded a new version of the Penpot file into gitlab so that others can update.

Figma Icon Flattening

  • We still have the issue that we can’t bring our icons to Penpot just yet. As we build more and more UI concepts for Ocean inside Penpot, we need to rely on our new Ocean icons to make sure they convey the right message in context.
  • I went back to the Figma file this week and created a copy of our monochrome icons and started the process of flattening them. This makes it so that it’s just a shape without layers or boolean operations. Just a raw flat svg file.
  • This type of operation is supported in Penpot, though we lose the fine control.
  • My desire is to bring some, if not all, of our monochrome icons into Penpot, even if they are flat, so that we can use them throughout our component UI more effectively.
  • I am still exploring whether this is a good idea overall but this should add a few more images to the Penpot file. Expect the Penpot library to grow. This is an experiment to see how Penpot will handle this influx.

App Icons Progress

  • Progress is moving slowly but surely. I went through a round of feedback review as I posted some of the icons into the VDG channel and also asked Nuno Pinheiro for feedback.
  • There are a few more things that need to be done. As shown previously, the work of building colorful icons goes in phases. The current phase is intended to build colorful, “try anything”, higher fidelity icons. In this stage, shapes, colors, radii and other elements are placed on screen to see how they come across.
  • From this stage, one would pick out the best icons and use them as design guidelines for other icons. You begin to restrict your color palette, harmonize shapes, shadows and other elements.
  • This process will continue. My personal goal is to have a robust set of app icons for Akademy in September (https://akademy.kde.org). Then work with maintainers to get buy-in and feedback for the new designs.

Tokens and Plasma System Variables

  • We follow the token naming convention used in Material Design 3. It’s expressed like this:
    • Raw value > Reference Token > System Token
  • Plasma has its own set of variables used for various purposes. For example:
    • SpacingSmall, SpacingMedium, etc.
    • We need to find the way to do Raw value > Reference Token > System Token > SmallSpacing
  • Even though the design system contains more tokens than there are variables in Plasma, we need to do the work of matching design tokens to Plasma. This should yield a workable set of UI changes even though it may not be complete.
  • For those tokens that don’t have an equivalent in Plasma, we need to create an integration and support plan.
  • For those design tokens that have approximations, we need to determine what is best, to accommodate to what we have in Ocean or to make Ocean accommodate to what the system already has.
  • The biggest risk here is that if we change values in the system carelessly or introduce unsupported tokens, the applications using those variables in Plasma could break or work in a strange way.
  • In this new age of Union work, we would parse design tokens via Union, this would produce the graphical interpretation of the token and apply it. Since Union is using CSS to interpret the values, token values and component values can more easily be replicated in Plasma.