Skip to content

Friday, 3 November 2023

Let’s go for my web review for the week 2023-44.


In 2023, the state of our digital privacy is very creepy | Mozilla Foundation

Tags: tech, privacy, surveillance

Clearly consumer products are going the wrong way in term of privacy…

https://foundation.mozilla.org/en/privacynotincluded/articles/annual-creep-o-meter/


Facebook owner Meta faces EU ban on targeted advertising | Reuters

Tags: tech, social-media, advertisement, attention-economy

Good news if this really gets enforced.

https://www.reuters.com/technology/facebook-owner-faces-eu-ban-targeted-advertising-norway-says-2023-11-01/


Last Chance to fix eIDAS

Tags: tech, security, privacy, politics

It’s really coming from everywhere these days. Let’s make sure this doesn’t get adopted.

https://last-chance-for-eidas.org/


Adobe is selling fake AI images of war in Israel-Palestine

Tags: tech, ai, gpt, fake, fake-news

There’s a blatant traceability problem with those generated images…

https://www.crikey.com.au/2023/11/01/israel-gaza-adobe-artificial-intelligence-images-fake/


Youtube’s Anti-adblock and uBlock Origin - And a Dinosaur

Tags: tech, google, attention-economy, advertisement, community

Some people lash out at the wrong group… they should be angry at YouTube not at the tiny team making the extension trying to help block the ads.

https://andadinosaur.com/youtube-s-anti-adblock-and-ublock-origin


Android Developers Blog: Increasing trust for embedded media

Tags: tech, android, google, DRM, copyright

After the backlash about WEI on Chrome, now they’re going for something similar but scoped only for medias. At least now things are clear that it was mainly about pushing for DRMs to serve media producers.

https://android-developers.googleblog.com/2023/11/increasing-trust-for-embedded-media.html?m=1


AI Godfather Warns Sam Altman, Demis Hassabis Want to Control AI

Tags: tech, ai, machine-learning, gpt, politics, lobbying, criticism

I fully agree with this. All those doomsayers about AI are there to sell something willingly or not. Let’s look at the current threats we’re seeing now, not the imaginary ones being the results of people taking SciFi a bit too literally.

https://www.businessinsider.com/sam-altman-and-demis-hassabis-just-want-to-control-ai-2023-10?r=US&IR=T


Welcome to the Offensive ML Framework - OffSecML Framework

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

Attacks on machine learning models are getting more accessible. This means even more care will have to be taken to deploy and use those.

https://wiki.offsecml.com/Welcome+to+the+Offensive+ML+Framework


Down and to the Right: Firefox Got Faster for Real Users in 2023

Tags: tech, mozilla, browser, performance

This is indeed a nice improvement. I hope they keep working in this direction.

https://hacks.mozilla.org/2023/10/down-and-to-the-right-firefox-got-faster-for-real-users-in-2023/


Help Everyone Do Better Security

Tags: tech, security, complexity

Things could indeed be more convenient… if this was the case we’d probably have less security breaches. Making super complex tools and then complaining that people are holding them wrong isn’t gonna help.

https://matduggan.com/security-feels-pointless/


How to (and how not to) design REST APIs · stickfigure/blog Wiki · GitHub

Tags: tech, web, services, rest, api, design

Interesting set of advices. There are a couple I tend to disagree or doubt they really matter though. Other than that probably worth keeping in mind.

https://github.com/stickfigure/blog/wiki/How-to-%28and-how-not-to%29-design-REST-APIs


Why Checked Exceptions Failed

Tags: tech, java, exceptions

Definitely this, it’s been tried in Java, now we know it was a bad design decision… but it had to be tried to realize it.

https://borretti.me/article/why-checked-exceptions-failed


Base64 Encoding, Explained

Tags: tech, encodings

Neat walk through the Base64 encoding. It’s very useful so it’s better if it’s well understood.

https://www.writesoftwarewell.com/base64-encoding-explained/


Analyzing Data 170,000x Faster with Python | sidsite

Tags: tech, python, optimization

Nice to see the same optimizations than in a previous article play out in Python. By leveraging Numpy and Numba it goes a long way already.

https://sidsite.com/posts/python-corrset-optimization/


Why you should probably be using SQLite | Epic Web Dev by Kent C. Dodds

Tags: tech, databases, sqlite

Some more deserved praises for Sqlite. It’s finding its way in more and more places.

https://www.epicweb.dev/why-you-should-probably-be-using-sqlite


Confusing git terminology

Tags: tech, git, tools

You still find git confusing? This article might help. Although I have doubts that it’s doing a good job regarding heads, HEAD and branches, the rest is full of good explanations.

https://jvns.ca/blog/2023/11/01/confusing-git-terminology/


CSS is fun again

Tags: tech, css, frontend, web

This obviously keeps progressing. I think a good resource summarizing the new ways to do things would be necessary.

https://pdx.su/blog/2023-10-25-css-is-fun-again


Physically Based Rendering: From Theory to Implementation

Tags: tech, 3d, graphics, physics

Nice to see the latest edition also available online. This is an excellent resource to get into PBR.

https://pbr-book.org/


Transform Matrices are Great and You Should Understand Them

Tags: tech, graphics, matrix, mathematics, geometry

Good introduction and advocacy for transform matrices. I often see people struggling with them but they’re definitely worth mastering.

https://probablydance.com/2023/10/29/transform-matrices-are-great-and-you-should-understand-them/


π in Other Universes | Azeem Bande-Ali | azeemba.com

Tags: mathematics, geometry

A nice reminder that the π value is not as set in stone as we tend to believe. It depends on the metrics we’re using.

https://azeemba.com/posts/pi-in-other-universes.html


TDD Prerequisites

Tags: tech, tdd, tests

What are the outcomes of TDD? Do you want them? If yes, is the context compatible?

https://tidyfirst.substack.com/p/tdd-prerequisites


Where DRY Applies — Sympolymathesy, by Chris Krycho

Tags: tech, craftsmanship, programming

The right nuanced way to see the DRY principle. As usual don’t overdo it that’s where problems will arise.

https://v5.chriskrycho.com/journal/where-dry-applies/


I’m Sorry I Bit You During My Job Interview - McSweeney’s Internet Tendency

Tags: interviews, funny

And now for something different… a very funny piece. I guess I’m glad I’m doing lots of interviews remotely nowadays.

https://www.mcsweeneys.net/articles/im-sorry-i-bit-you-during-my-job-interview


How to tell a great story

Tags: communication, storytelling

Interesting search for the right ingredients for great storytelling. Some are generally well known and somewhat accessible with some work. The secret sauce is more surprising and requires quite some work in my opinion.

https://www.julian.com/blog/storytelling



Bye for now!

Thursday, 2 November 2023

Two new releases are out in preparation of the first alpha release or the February Megarelease.

KQuickImageEditor 0.3.0

This is the new stable version of KQuickImageEditor. Only notable change it the support for Qt6 in addition of Qt5 support.

Kirigami Addons 0.11.75

This is an alpha release and depends on an unreleased KDE Frameworks. Please only package it if you also package the coming alpha megarelease.

Packager section

You can find the package on download.kde.org (kirigami addons) and download.kde.org (kquickimageeditor) and it has been signed with my GPG key.

KUserFeedback is a library for collecting user feedback for apps via telemetry and surveys.
Version 1.3.0 is now available for packaging.

This version adds the option to build it for Qt 6. It can also be built for Qt 5 and distros may want to package it twice, however this will mean handling some overlapping files and most apps which use it will be ported to Qt 6 as part of the KDE 6 MegaReleases in February so distros may prefer to drop Qt 5 builds then.

sha256 252308b822dd4690ea85ab1688c9b0da5512978ac6b435f77a5979fc1d2ffd13

URL https://download.kde.org/stable/kuserfeedback/

Signed by E0A3EB202F8E57528E13E72FD7574483BB57B18D Jonathan Esk-Riddell <jr@jriddell.org>
https://jriddell.org/esk-riddell.gpg

* new release 1.3
* Add CC0-1.0 license
* Do not look for QtHelp if docs are disabled
* Remove unneeded setting of CMake policies, implied by requiring 3.16
* Add flatpak CI
* Bump minimum cmake version to 3.16
* Add explicit moc includes to sources for moc-covered headers
* Remove Designer&#39;s &quot;.&quot; normaloff file data from icon properties in .ui files
* Use latest-kf6 branch for Qt6
* In qt6 plugin name is KUserFeedbackQmlQt6
* PHP 8 compatibility
* Fix Qt 6 build of PHP-dependent unit tests
* categoryaggregationmodel
* Fix include form (use &quot;&quot; instead of &lt;&gt;) for provider.h
* Remove forward declaration as include is already defined
* Fix debug message
* Autogenerate debug categories
* Create logging_p.cpp directly
* Fix show headers in qtc6
* Compatibility is not necessary now
* kuserfeedback_version.h was not installed
* Fix compatibility (install temporary include in KUserFeedBack too)
* Add warning about removing compatibility
* Show all headers in includes
* KUserFeedbackConsole is an internal static lib too
* Not necessary here as it&#39;s an internal static lib
* Fix install target file
* Allow to co-install
* Port to new syntax
* Add Qt 6 Android CI
* typos–
* Add Qt6 windows CI support
* Hide finding docs dependencies behind ENABLE_DOCS
* Install translations
* qtversionsource: fix Qt 6.5 build
* avoid invalid lastX times
* .gitlab-ci.yml: enable static builds
* add it to CI qt6 bsd
* Fix cmakename in metainfo.yaml
* Tell no data has been sent if no data has been sent
* Give the dialog an actual title
* Remove duplicate header between cpp/h files
* Add windows CI

libqaccessibilityclient 0.5.0 is out now. The release adds Qt 6 support. libqaccessibilityclient is used by KMag and KWin both of which have forthcoming releases that are ported to Qt 6 so there should be no need for distros to build two versions.

https://download.kde.org/stable/libqaccessibilityclient/libqaccessibilityclient-0.5.0.tar.xz

Signed by E0A3EB202F8E57528E13E72FD7574483BB57B18D Jonathan Esk-Riddell <jr@jriddell.org>
https://jriddell.org/esk-riddell.gpg

* new release: new version and new ECM URL
* Bump min required Qt6 to 6.5
* Port away from deprecated operator+(Qt::Modifier modifier, Qt::Key key
* Port away from deprecated QVariant::Type
* Add explicit moc includes to sources for moc-covered headers
* Use ECMDeprecationSettings
* Have export macros header include version header (Qt6-only)
* Use QAccessibilityClient6 as package name for Qt6 version
* Use variable to hold CMake config name, also targets file name
* Install headers into QAccessibilityClient/ visibility layer
* Move version setup into src/ subdir
* Use generic target name for generated library
* Move library target property setting next to declaration
* Move CMake config template file into src/ subdir
* Remove unimplemented methods
* Use ECM master when building for Qt6
* Use CamelCase includes
* Fix finding the unit test helper executable
* Add FreeBSD Qt6 CI support
* Add Gitlab CI
* Remove duplicate header between cpp/h files
* We depend against qt5.15
* Use -qt6 when we build against qt6
* Fix find_package
* Fix signals
* Adapt build system for building against qt6
* It&#39;s already define in ecm
* Make compile with strict compile flags
* Make building without deprecated methods
* Fix some compile error
* Add CI definitions information for seed job
* Use more target-centric cmake code
* Use GenerateExportHeader
* Remove module prefixe from Qt includes
* Do not use deprecate QFlatgs(nullptr) constructor
* Fix member init order to match definition order
* Clean up include dirs
* Convert license statements to SPDX expressions
* Add support for AccessibleId property
* Update README.md a bit
* Support API documentation generation with kapidox
* Remove the references to projects.kde.org
* Fix qstring minor optimization
* Port setMargins
* Use only undeprecated KDEInstallDirs variables
* KDECMakeSettings already cares for CMAKE_AUTOMOC and BUILD_TESTING
* Fix use in cross compilation
* Q_ENUMS -> Q_ENUM
* more complete release instructions

Phonon 4.12.0 and Phonon-VLC (phonon-backend-vlc) have new releases today which add Qt 6 support. These tars will by default build Qt 5 and 6 at the same time and we advise distros to ship both builds.

Phonon GStreamer (phonon-backend-gstreamer) is deprecated and we do not advise to use it.

https://community.kde.org/Phonon/Releases/Core/4.12.0

URLhttp://download.kde.org/stable/phonon/4.12.0/phonon-4.12.0.tar.xz.mirrorlist
SHA2563287ffe0fbcc2d4aa1363f9e15747302d0b080090fe76e5f211d809ecb43f39a

Changes

  • Future-proof build fix for clang > 16
  • Allow build against Qt6 when also built against Qt5
  • Mark Qt6Core5Compat as REQUIRED for Qt6 builds
  • let the user opt out of qt 5 or 6 builds
  • bring back includes dir
  • build qt5 and 6 at the same time
  • be explicit about default values
  • fix build for qt6
  • Omit legacy CMake variables when building with Qt 6
  • fix build with clang-16
  • Don’t install legacy includes when building against Qt 6
  • Allow to build against last kf6
  • Add Windows Qt 6 CI
  • Update the translations folder name
  • Don’t redefine CMAKE_MODULE_PATH
  • .gitlab-ci.yml: enable static builds
  • Port away from deprecated INSTALL_TARGETS_DEFAULT_ARGS
  • Add FreeBSD Qt6 CI support
  • We depend against qt5.15 now
  • Add Windows CI
  • Add Android Qt5 and Qt6 CI
  • Take out empty deprecated registerMetaTypes() method in Qt6 builds
  • We need const char * (make compile qt6 apps)
  • Qt::AA_UseHighDpiPixmaps is enabled by default in qt6
  • Add Qt5 and Qt6 Linux CI
  • Fix the Qt6 build
  • Fix phonon lib name
  • Fix coding style + increase ecm
  • Adapt build system for building against qt6
  • Adapt code for building against qt6
  • Make it compiles without deprecated methods
  • Add KDE CI configuration for Phonon
  • Fix typos found by codespell
  • Update IRC network name in Doxygen main page
  • Allow to compile with unity support
  • Port away from deprecated Qt methods
  • Remove module prefixes from Qt includes
  • Port away from deprecated QList::swap(i, j)
  • Port away from deprecated qVariantFromValue()
  • Use Q_DECLARE_OPERATORS_FOR_FLAGS in same namespace as flags definition
  • Use more nullptr
  • Improve metainfo.yaml
  • Use NO_POLICY_SCOPE with KDECompilerSettings
  • Remove explicit use of ECM_KDE_MODULE_DIR, is part of ECM_MODULE_PATH
  • Remove “virtual” where “override” is used; add missing virtual in destructors
  • Revert “Port deprecated qVariantFromValue method”
  • Port deprecated qVariantFromValue method
  • bump to 4.11.1 for release
  • Remove phonon from the include directory
  • throw out the qml demo
  • import gpl2 for new settings source code
  • Reorder cmake macro includes

https://community.kde.org/Phonon/Releases/VLC/0.12.0

URLhttps://download.kde.org/stable/phonon/phonon-backend-vlc/0.12.0/phonon-backend-vlc-0.12.0.tar.xz.mirrorlist
SHA256338479dc451e4b94b3ca5b578def741dcf82f5c626a2807d36235be2dce7c9a5

Changes

  • drop support for libvlc 2.x
  • support qt5/6 multibuild
  • mediaobject new can throw but does not return null
  • .gitignore ignore /compile_commands.json
  • Add Linux Qt 5 CI
  • Update the translations folder name
  • Remove explicit use of ECM_KDE_MODULE_DIR, is part of ECM_MODULE_PATH
  • Make compile against qt6
  • Add override keyword + use nullptr
  • Show all headers in qtc6
  • Adapt build system for building against qt6
  • Use Qt::end
  • Remove obsolete include
  • Use override keyword
  • Use QStringLiteral (QLAtin1String is deprecated)
  • Use Q_SIGNALS/Q_SLOTS
  • Fix typos found by codespell
  • debug vmem format setup
  • use picture_t to calculate pitch lines
  • Update the obsolete projects.kde.org URL
  • Revert “Port deprecated QLatin1Literal -> QLatin1String”
  • Port deprecated QLatin1Literal -> QLatin1String
  • preliminary vlc4 port
  • only set xwindow when the qt platform actually is xcb (on unix)

Signed by E0A3EB202F8E57528E13E72FD7574483BB57B18D Jonathan Esk-Riddell <jr@jriddell.org>
https://jriddell.org/esk-riddell.gpg

Wednesday, 1 November 2023

The other day I had to dive into the ksmserver code, the core of session management in KDE Plasma, but found it all a bit difficult to read. If only I could get a callgraph I thought…

Turns out it actually is possible!

In fact it is almost too easy with clang/llvm. There are already solutions that attach LLVM bitcode to existing binaries. e.g. gllvm. gllvm basically is a shim sitting between ninja and the actual compiler and injects some behavior for us. This enables the use without having to refit anything in our existing code. You might note that clazy, our most excellent code analyzer, works in a similar fashion.

Here is how to use it:

# install gllvm (NOTE: as a pre-requisite you should have Go properly set up)
go install -v github.com/SRI-CSL/gllvm/cmd/...@latest

# clone plasma-workspace
git clone https://invent.kde.org/plasma/plasma-workspace
# change directory
cd plasma-workspace
# export environment variables
export CXX=gclang++
export CC=gclang
# You may need to set some additional vars so gllvm can find your compilers
## export LLVM_CC_NAME=clang-16
## export LLVM_CXX_NAME=clazy
# Configure
cmake -S . -B build
# Build
cmake --build build/
# extract the bitcode (into build/bin/ksmserver.bc by default)
get-bc -m -v build/bin/ksmserver
# Run through llvm's opt program to generate a callgraph
opt --disable-output --passes=dot-callgraph build/bin/ksmserver.bc
# copy into working directory
cp build/bin/ksmserver.bc.callgraph.dot callgraph.dot
# prettify the c++ names (this may produce invalid labels, so I'm skipping it here)
## cat build/bin/ksmserver.bc.callgraph.dot | llvm-cxxfilt > callgraph.dot
# generate an SVG of the graph
dot -x -Tsvg -ocallgraph.svg callgraph.dot
# we now have a callgraph.svg \o/

Depending on the complexity of the software and how many libraries it uses this graph may be incredibly large and verbose though. We’ll need to apply some filtering to make it useful. Or at least I thought so when working with ksmserver.

To further filter the graph you can use the gvpr helper. It is a bit clunky but gets the job done. You can build a filter expression to only include interesting functions like so

N{
    if ($.label!="@(*_ZN9KSMServer*)" || $.label=="@(*metacall*)")
        delete($G, $);
}

and then filter the dot graph with

# Filter out uninteresting functions (filter.prog is the filter expression from above)
gvpr -c -f filter.prog build/bin/ksmserver.bc.callgraph.dot > intermediate.gv
# Filter out all empty nodes (they call nothing and are of no interest)
gvpr -c "N[$.degree==0]{delete(root, $)}" intermediate.gv > final.gv
# generate an SVG
cat final.gv | dot -x -Tsvg -ocallgraph.svg

Final result

Screenshot

Tuesday, 31 October 2023

For a project of mine I need gamepad support. In the past, I’ve happily used QtGamepad, but that has not been ported to Qt 6. It’s not dead, but Andy (QtGamepad’s maintainer) wants to do some re-architecting for a Qt 6 release.

I need QtGamepad now, however, so I’ve ported it myself. It’s not a whole lot of code and Qt’s pro2cmake.py made it a breeze. I’ve renamed the whole thing to QtGamepadLegacy and pushed it to GitHub. So whenever the official QtGamepad is released there should be no naming conflicts. I’ve tested with Qt 6.6.0 and the evdev plugin.

I don’t plan on adding any new features to the port. I’ll try to keep it compatible with upcoming Qt releases, though.

Monday, 30 October 2023

Embed Rive in your QtQuick applications

Learn how to use Rive within Qt and Qt Quick.

Rive is a tool (and file format) that enables you to create interactive vector animations. With the RiveQtQuickPlugin, you can effortlessly load and display Rive animations within your QtQuick projects.

In this article, we will demonstrate how to embed Rive files, use different rendering backends, load artboards and trigger animations.

Continue reading Embed Rive in your QtQuick applications at basysKom GmbH.

Saturday, 28 October 2023

Long Covid. If you are at all conversant with C20 twenties and thirties detective novels, you’ll know all about the invalids, the incapabables, the chronically ill. That was the flu. Though it never is the protagonist who is suffereing, it’s always someone else.


Well, this time it’s me. The protagonist of my own life.

I got covid when I got jabbed, early 2022. In the vaccination centre. Not because of the vaccine, but because, for some reason, everyone was expected to sit down, in a perspex cubicle for fifteen minutes, unmasked.

Of course, as you know, the covid virus remains infectuous for six hours and airborne, no droplets needed, in any area an infected person has been breathing for about ten minutes.

And no vaccine is immediately effective.

These were incubation incubators.

So I got sick. Really sick. For two weeks I had a horrible fever and was completely bed-ridden.

The aftermath is worse though.

I noticed my cognition was going down: I was (and am) getting dumber. Concentration powers going down. Getting pukey, and after that, shitty, regularly. Heart rates getting up into realms no blood pressure measurement machine could manage to measure. Having to lie down for days.

People wished me well. Wished me to get better soon.

Sorry people, that doesn’t work: this is like M.E., and you don’t get better from that. (In fact, Long Covid might, after all, have provided a pathology that explains M.E.)

Better soon? Bad days are getting increasingly frequent, and while I’l very good on good days, I cannot predict when good days will happen.

There you have it… Puke. Runny shit. Lying down all day in a darkened room. Brain Fog. Every little thing you manage to do is an achievement. Heart palpiations. Doctors telling you you’re malingering. Good days when you’re doubting you are actually sick getting outnumbered by days you cannot even eat, only drink water.

(And don’t ask me about how it’s when your nose if full of the smell of bin liner filled with the intestines of two-weeks dead animals.)

.

..

Hey… Masks are the one thing that work.

Happy October and other related holidays! The list of work is a bit smaller, as predicted I was busy this month. However, I have some really exciting work done in PlasmaTube - some of which you may have already seen if you follow me on Mastodon.

I also added a better way to discern bugfixes from features in these posts! It also details which branches and versions the change will appear in. I will be adding this slowly to older posts. I’m also really close to completing a whole year of this blog series, which I started back in January 2023! 🎉 I’ll be detailing more of 2024 plans in December.

Tokodon

[Feature] I added support for viewing server announcements! It doesn’t support emoji reactions yet, because I want to also implement emoji reactions in general (if your server supports it.) [24.02]

Announcements are now shown in the sidebar.

[Bugfix] Fixed more cases where media attachments wouldn’t load, if some of the metadata was invalid. [24.02] [23.08]

[Feature] The window geometry and position (if on X11) is now saved and restored. [24.02]

[Feature] A profile’s featured tags are now shown in the filter bar. You can select between them or reset it by tapping on “All”. [24.02]

An example of my featured tags, and you can select one of them!

[Feature] The selected post in a thread is now scrolled to initially, so you don’t have to scroll so much when viewing replies. [24.02]

[Feature] When scrolling to the very end of a timeline, a message is now shown that it’s really the end and you didn’t encounter some kind of bug. [24.02]

For example, when scrolling to the bottom of the home timeline.

[Feature] Tokodon now supports basic notification actions such as viewing the post or the user’s profile. More actions are planned in the future, but this is a good start. [24.02]

An example of a notification when you are mentioned.

[Feature] I cleaned up and merged the offline testing system that was originally pioneered by Rishi Kumar. This doesn’t affect users, but means that Tokodon can be tested more easily. Aka, more stable software! :-) [24.02]

[Bugfix] Add missing PulseAudio, FreeDesktop Secrets and notification permissions for the Tokodon Flatpak. [24.02] [23.08]

NeoChat

[Feature] NeoChat state (such as event cache) will now be stored in it’s own state file, called “neochatstaterc” in ~/.local/share/KDE/neochat. This matches the behavior of other KDE applications, instead of the weirdly named “data” file like before. [24.02]

[Feature] The event cache is now compacted so it’s a little bit smaller, and easier to read. [24.02]

[Feature] The recent emojis are now saved in the state file, instead of the regular config file. Less state in there, woohoo! [24.02]

Kirigami

[Feature] You can now control the isMask property of a Chip. Otherwise, this property is inaccessible, preventing you from changing the icon color. [6.0]

PlasmaTube

I did a ton of work improving PlasmaTube this month. If you haven’t been using PlasmaTube yet, or haven’t tried it in a while… 24.02 in February will be packed with new features and bugfixes!

[Feature] PlasmaTube is now Qt6, complete with the new declarative type registration system. For users, it means that it’s marginally faster and that it’s ready for the February mega-release. [24.02]

[Feature] Different video sources other than Invidious is now supported! The current plan plan is to support Invidious, Piped and PeerTube by 24.02. The feature set of the new video sources are currently limited compared to Invidious, but will be expanded. [24.02]

The new welcome page

[Feature] Selecting between video sources is now supported, for example if you have a Invidious instance but also want to watch PeerTube content. [24.02]

The new switcher

[Feature] Along with that, the overall login flow is overhauled to match other Kirigami applications. You can even select from a list of public instances. (Keep in mind that the UI is still a work in progress and will be improved before release.) [24.02]

A list of public Invidious instances

[Feature] The sidebar is no longer icon only, and matches the UX of other Kirigami applications such as NeoChat, Tokodon and Arianna. There are now several tabs such as “Popular”, “Trending”, “Subscriptions”, “Playlists” and “History”. Some of these are disabled depending on if you’re logged in and if the video source supports them. [24.02]

The new sidebar design

[Feature] The “Trending” page has been overhauled to use tabs instead of stuffing all of the different types into the page’s actions. [24.02]

The trending tabs

[Feature] Added a “Playlists” page! Right now you can only view playlists, but I plan on adding more advanced playlist management soon. [24.02]

[Feature] Added a “History” tab, which of shows you recently watched videos. [24.02]

[Feature] Added a new context menu, shown while long tapping or right-clicking on a video item. You can mark a video as watched or unwatched, add it to a playlist and more. [24.02]

The video context menu

[Feature] Added a picture in picture mode! It’s even possible to control the video using the normal controls in the main window. When closing the PiP window, it will also restore the position in the main player too. [24.02]

The picture in picture window

[Feature] It’s now possible to use a network proxy in PlasmaTube, but due to FFmpeg limitations you can only set a HTTP proxy unlike other KDE applications which support a SOCKS5 proxy. [24.02]

[Feature] You can now change the default homepage for Invidious sources, which also syncs to the Invidious web frontend and any other clients that support this key. More settings will be available in the future, such as autoplay (which currently does nothing.) [24.02]

The default homepage setting.

[Feature] You can now view comments on a video, which is supported in Invidious, PeerTube and Piped sources. They aren’t very detailed yet, and threading is not yet supported. [24.02]

Comments, although the encoding isn’t perfect yet.

[Feature] A channel’s avatar, banner and description is now shown on the channel page. Eventually other channel tabs like playlists will be available here too! [24.02]

The new channel design.

Merkuro

[Bugfix] Fixed a bug where certain locales would be unable to use the date picker. [24.02] [23.08]

KWallet

[Bugfix] Fixed the “Configure KWallet…” menu item not working. [23.08]

[Feature] Added a visible error message for conditions where KWalletManager could fail and display nothing, like the DBus service failing to activate. [24.02]

The KWallet DBus service is not activable for some reason. The only way to tell before is to look at the logs…

KWin

[Bugfix] Fixed the default keybinds for “Switch to Next/Previous Desktop” not being set properly by default, when they probably should. [6.0] [5.27]

Plasma

[Feature] A bunch of small improvements and fixes for the “Show Activity Manager” applet. This is mostly fixing stuff that was broken due to KF6 changes. [6.0]

Kirigami Addons

[Bugfix] Prevent a crash when calculating initials in names that only have parenthesis, such as “(gobble)”. This affects the new Avatar component. [0.12]

See you next month!