Lees weergave

Dopamine 3.0.5

Added

  • Added an Adwaita theme, because GNU/Linux deserves some love.
  • Added Windows taskbar media controls accessible by hovering over the app icon in the taskbar
  • Added a "Refresh now" button to the main menu
  • Added ReplayGain support
  • Added option to show album name on the now playing page
  • Added possibility to edit the album cover

Changed

  • Discord Rich Presence says "Listening to" instead of "Playing"
  • Improved scaling of different parts of the user interface
  • Updated the Czech translation
  • Updated the German translation
  • Updated the Hebrew translation
  • Updated the Russian translation
  • Updated the Vietnamese translation

Fixed

  • Saving a rating to an MP3 file could create an ID3v1 tag, causing genres to be stored and displayed as their numeric ID3v1 code (e.g. "Eurodance" becoming "54")
  • It is not possible to edit songs from the Songs screen
  • There is no scroll bar in the smart playlist editor
  • Loop one does not work correctly when using gapless or crossfading playback
  • When exiting Dopamine, the Discord status doesn't disappear.
  • It's not always clear when Dopamine is refreshing the collection

P.S.: If you enjoy Dopamine, please consider donating via PayPal or buying me a coffee. Your support keeps the music going!

  •  

Amin Bandali: Thinking about life - chat with Protesilaos

In the recent weeks I've been engaging Prot as a coach to help review my new ffs package for GNU Emacs as I worked on preparing it for inclusion in GNU ELPA, as well as discussing other Emacs- and life-related topics.

UPDATE 2026-05-23 22:39:15 -0400: Prot also published an article about our session on his website: https://protesilaos.com/commentary/2026-05-23-life-issues-and-philosophy-amin-bandali/

In our nearly 2-hour conversation, we discussed at length and in depth various aspects of life in the current times. For instance, feeling overwhelmed in the face of innumerable things happening at once, with technology changing our perception and making events feel proximate and imminent.

We talked about seasonality and rhythms in life, including in relation to burnout and knowing our own limitations, and descriptive vs prescriptive thinking when reflecting on the expectations we may place on our self when comparing our self to others through the lens of our necessarily-incomplete impressions and glimpses of their lives. We discussed absence or loss as a dual to presence or persistence in the process of life. How with our memories and through embodying the philosophy and teachings of departed loved ones their essence and legacy continues to live on within us. But also loss in the sense of us losing parts of our self in life-defining moments while preserving other parts and gaining new ones, being liberated of some of the burdens of our past self and in effect becoming someone else in the process.

In being true to our self, we talked about humans as multi-faceted beings and the importance of expressing and giving a voice to these different aspects of our self, and keeping alive that child-like sense of awe and wonder. To live a life where the pace and rhythms of our environment are in sync with our internal rhythms, and to not give others undue power over us or our happiness through trying to live according to their prescribed standards or expectations.

I also learned more about Prot's practical philosophy of situational awareness in life, not merely as a means for survival, but also as a way of appreciating all of the beauty that surrounds us, and a method for gaining the knowledge and skills to apply what we learn from patterns in one area of life to other areas.

We concluded our session with a mention to the concept of sanctity, to set aside a sacred time or place for our self wherein no distractions are allowed, where we can unwind, rest, and recharge for whatever comes next.

Here is the video recording of our session, which I share with Prot's permission:

You can view or download the full-resolution video from the Internet Archive.

Like Prot, I am invigorated and inspired to live a full, honest life. To do my best, do what I do in earnest, and make the best of what I have.

Take care, and so long for now.

  •  

Amin Bandali: ffs 0.2.2 released

ffs provides a minor mode for simple plain text presentations in Emacs, where the slides are separated using the page-delimiter, by default the form feed character (^L).

I wrote ffs in early 2022 for my LibrePlanet 2022 presentation the Net beyond the Web, and earlier this year decided to polish it towards being a proper package and submit it to GNU ELPA. The manual still needs some more work, but the overall package is in pretty good shape so I submitted for inclusion in GNU ELPA.

ffs and I owe a debt of gratitude to Protesilaos for rounds of code review and feedback for improving and polishing the package in preparation for submission to GNU ELPA. You can watch videos of these sessions posted earlier on my website:

Further, inspiration for parts of ffs's implementation was gratefully drawn from Protesilaos's Logos package for Emacs.

Dedicated to the loving memory of Farangis Yousefinia.

Below are the release notes.


Version 0.2.2 on 2026-05-21

First release of ffs on GNU ELPA.

The attempted build of ffs 0.2.1 within GNU ELPA build sandbox failed with an Error: void-function (org-texinfo-kbd-macro) due to use of #+macro: kbd (eval (org-texinfo-kbd-macro $1)) in ffs.org for better formatting of key sequences in the exported Texinfo copy. This seems to have happened for the specific case of generating a plain text README using ox-ascii where ELPA didn't load ox-texinfo. To try and mitigate this, a README.md has been added for use as the package README instead of ffs.org. If not sufficient, a Texinfo copy of the ffs manual will be shipped instead of the Org one in the next release.

ffs 0.2.2 also includes small fixes and improvements throughout ffs.el from Stefan Monnier, and additional feedback to be addressed in future releases.

Version 0.2.1 on 2026-05-20

The attempted build of ffs 0.2.0 within GNU ELPA build sandbox failed with a "Cannot include file" error on the "#+include: fdl.org" in the manual. So, as a workaround, we switch to using the official Texinfo copy of the GNU FDL license rather than an Org copy.

Version 0.2.0 on 2026-05-19

First release of ffs intended for GNU ELPA.

After a few years of inactivity, in early 2026 I decided to dust off ffs.el, polish and document it, and offer for inclusion in GNU ELPA as a proper package.

Default value of ffs-default-face-height changed to nil

To minimize unexpected and/or unnecessary changes out-of-the-box, the default value of ffs-default-face-height has been changed to nil.

ffs-edit-buffer-name demoted from user option to variable

This is not an important user-facing setting, so to help avoid overwhelming users with many options, this has been demoted from a user option to a variable.

Several new user options for customizing ffs's behaviour

As part of the effort to bring ffs more in line with the conventions of other existing Emacs packages, the mechanisms for toggling various parts of Emacs's interface to minimize visual clutter were changed from being minor modes to being customizable user options. These are the replacement new user options, with a default value of nil:

  • ffs-hide-cursor
  • ffs-hide-mode-line
  • ffs-hide-header-line

Their value is buffer-local, and may be set globally using setq-default. See the sample configuration in the manual for an example of how to customize them.

The new ffs-page-delimiter user option defines the page delimiter inserted by ffs-edit-done when inserting a new slide. Emacs's page-delimiter regexp should be able to match ffs-page-delimiter's value, so if you use a custom page-delimiter be sure to customize ffs-page-delimiter accordingly.

The new ffs-echo-progress user option controls whether to display in echo area the progress through the slides. When non-nil, changing slides will also display the progress through the slides in the echo area. The format of the displayed progress can be customized using the new ffs-echo-progress-format user option.

The new ffs-edit-display-buffer-alist user option may be used to control the Window configuration for the ffs-edit buffer. By default, it will display the ffs-edit buffer in the same window.

The new ffs-edit-done-hook user option may be used to define hooks to be run at the end of ffs-edit-done after returning to the main ffs presentation buffer.

Lastly, a new ffs-find-speaker-notes-function variable was added to allow customizing the find function used for opening the speaker's notes file, defaulting to find-file-other-frame.

Version 0.1.0 on 2022-05-19

Initial publication of ffs.el as part of my personal configurations for GNU Emacs.

My first attempt at this concept was a now-archived ffsanim.el, a major mode implementation that used Emacs's animate library to animate slide texts onto the screen. Shortly after realizing the shortcomings of that approach, I abandoned it in favour a minor mode implementation and published version 0.1.0 of what is now ffs in my personal configs repository.

I used this implementation for presenting my LibrePlanet 2022 talk, The Net beyond the Web.

I picked "ffs" as the package name, the acronym for form feed slides.

  •  

Amin Bandali: FFS code review and Emacs extensibility with Protesilaos

In the recent weeks I've been engaging Prot as an Emacs coach to help with doing review passes over my upcoming ffs package as I work on polishing and documenting it in preparation for offering it for inclusion in GNU ELPA.

UPDATE 2026-05-15 08:50:10 -0400: Prot also published an article about our session on his website: https://protesilaos.com/codelog/2026-05-15-emacs-amin-bandali-ffs-display-buffer-org-capture/

Today we had our third session where we started by reviewing and talking about my recent changes to ffs, then ventured to other Emacs-related topics with the overarching theme of the flexibility and extensibility of GNU Emacs, including display-buffer-alist, keyboard macros, defining a custom ox-bhtml Org export backend derived from Org's ox-html for ultimate flexibility when exporting my site's pages from Org to HTML, Org capture, plain text files and Emacs's diary and how it compares to org-agenda, and keeping a journal with the help of Emacs.

Here is the video recording of our session, which I share with Prot's permission:

You can view or download the full-resolution video from the Internet Archive.

Lastly, here is the snippet Prot shared for having Isearch treat space as a wildcard, helpful for more easily matching multiple parts of a line:

(setq search-whitespace-regexp ".*?")
(setq isearch-lax-whitespace t)
(setq isearch-regexp-lax-whitespace nil)

Take care, and so long for now.

  •  

Amin Bandali: FFS code review with Protesilaos

In the recent weeks I've been engaging Prot as an Emacs coach to help with doing review passes over my upcoming ffs package as I work on polishing and documenting it in preparation for offering it for inclusion in GNU ELPA.

Yesterday we had our second session focused on ffs, which I recorded and share publicly with everyone with Prot's permission, so that others can also benefit from Prot's insights and experience as we discuss various aspects of Emacs package development with the concrete example of ffs.

Here is the video recording of our session:

You can view or download the full-resolution video from the Internet Archive.

I addressed most of Prot's feedback about ffs from our first session, and I'll be working on the changes we discussed in this session in the next days.

In the last third of the video we switched topics to discuss a few Emacs-related tangents including adding a 'padding' effect for the mode line and its constructs, and distilling and separating the easily-reusable package-like parts of one's Emacs configuration from the actual configuration of those parts (e.g. the distinction of prot-lisp and prot-emacs-modules in Prot's Emacs configuration).

For mode line padding, here is the snippet I'm using with Prot's doric-themes:

(doric-themes-with-colors
  (custom-set-faces
   `(mode-line
     ((t :box (:line-width 6 :color ,bg-shadow-intense))))
   `(mode-line-inactive
     ((t :box (:line-width 6 :color ,bg-shadow-subtle))))
   `(mode-line-highlight
     ((t :box (:color ,bg-shadow-intense))))))

Take care, and so long for now.

  •  

Amin Bandali: Emacs Chat with Sacha Chua

Yesterday I joined Sacha Chua for a new episode of her Emacs Chat podcast, where we talked about Emacs and life. I gave a quick tour of my Emacs configuration, discussing at length my configurations for EXWM (Emacs X Window Manager) among other topics like Emacs's facility for visually indicating buffer boundaries in the fringe by setting indicate-buffer-boundaries and my convenience configuration macros.

The above video is provided with closed captions and the below transcript courtesy of Sacha with minor fixes and formatting by me. I've included some of Sacha's screenshots from our chat, you can see the rest on the episode's page on Sacha's blog.

A few links from our chat:

It was a lot of fun - thanks again for having me, Sacha!

Take care, and so long for now.

Transcript

  •  

Bitfocus Companion v4.3.4

📦 Downloads available at

💵 Donate to the project at

Companion v4.3.4 - Release Notes

🐞 BUG FIXES

  • excessive sorting of entities in add modal
  • References to local variables in module actions/feedbacks not being invalidated when control is moved #4192
  • use module manifest name field from newer modules #4121
  • respect isVisibleExpression for remote surface config fields #4188
  • grid size grow prompt for surfaces not dismissing
  • importing pagenum buttons show broken page number
  • update elgato-stream-deck surface module
  • run yarn build for dev modules in docker #4177

Full Changelog: v4.3.3...v4.3.4

  •  

Russell Coker: Links May 2026

Ron Garrett wrote an interesting blog post about the mathematical possibility of abiogenesis [1].

Cory Doctorow wrote an interesting blog post about the way the current antics of right wing extremists are forcing permanent changes in society away from the old systems [2].

William Angel wrote an insightful blog post comparing the costs of a Macbook and the Openrouter hosted service for LLMs [3].

The Register has an informative article about the threat that management systems built in to Intel and AMD CPUs pose to data sovereignty in EU owned cloud providers [4]. But this is just the first stage of building sovereign clouds, all significaant cloud services run at least 2 types of CPU and adding EU manufactured CPUs at a future time will be easy.

Benn Jordan made an interesting YouTube video about the infrasound problems caused by data centers, we need FOSS to measure infrasound [5].

amarok on the Purism forum made a great post about how to setup profiles in Firefox for different uses [6].

fralb5 wrote an informative post on the Purism forum about how to use a Librem 5 (or any other FOSS Linux phone) to firewall spyware on an Android phone [7].

Michael Prokop wrote an interesting blog post about debugging input event problems on Linux which turned out to be due to an analogue headphone connection [8]. This gave me some useful pointers to investigating an input device problem which is probably very different.

Patrick Boyle made an insightful youtube video about the ridiculous IPO of SpaceX, it seems like a scam from start to finish [9].

Anarcat wrote an insightful blog post about the LLM apocalypse comparing it to the horsemen of the apocalypse [10].

The Wikimedia Foundation (that runs wikipedia.org among other things) is sacking union organisers and trying to corporatise the organisation which means stealing the donations from the community [11].

Tianon Gravi wrote an informative blog post about containers, Debian, and Docker options [12]. We need a lot more work on these sorts of things in Debian.

Memory Tagging and how it improves C/C++ memory safety is an interesting paper from Google researchers giving an overview of the benefits of tagged memory hardware for pointer validation on SPARC and ARM64 [13].

In 2013 a faulty beer fridge motor acted as a spark gap transmitter and blocked mobile phone service for several Melbourne suburbs [14].

Related posts:

  1. Links April 2026 Charles Stross wrote an interesting blog post about the apparent...
  2. Links February 2026 Charles Stross has a good theory of why “AI” is...
  3. Links March 2026 Krebs has an interesting article about the Kimwolf botnet which...
  •  

Distribution Release: Armbian 26.5.1

The DistroWatch news feed is brought to you by TUXEDO COMPUTERS. Armbian, which is a set of Debian and Ubuntu-based Linux distributions designed primarily for ARM development boards, has been updated to version 26.5.1: "Armbian 26.5.1 delivers another strong round of improvements across the project, focusing on expanded hardware support, desktop and userland refinements, build framework modernization, and infrastructure....
  •  

Distribution Release: NixOS 26.05

The DistroWatch news feed is brought to you by TUXEDO COMPUTERS. The NixOS project has published a new snapshot of its distribution: NixOS 26.05. The new version updates initrd to be based on systemd, plans for the retirement of x86_64-darwin, and updates GNOME to version 50. "We are very proud to announce the public availability of NixOS 26.05 'Yarara.....
  •  

1.60 Update: Expanded Rest Mechanic

Today, we are happy to give you a glimpse at the upcoming 1.60 update for both Euro Truck Simulator 2 and American Truck Simulator with the Expanded Rest Mechanic feature, which will change how the fatigue system in our games works, so let's take a look!

We are implementing the Expanded Rest Mechanic into our games after a lot of requests from our #BestCommunityEver for this feature. This new feature gives players greater control over their rest periods by allowing them to choose how long they want to sleep and exactly when they want to wake up, instead of being limited to a predefined rest duration.


Alongside this change, the Fatigue system will now be split into two separate values: Rest State and Mandatory Break, each represented by its own icon in the UI.

The Rest State, symbolised by a bed icon, will now gradually deplete rather than recover over time. Extended periods of driving will steadily reduce the Rest State, while resting will restore it at a faster rate. Players will receive a warning notification when their Rest State becomes critically low, and microsleep events will begin occurring once it reaches exhaustion.


The Mandatory Break system, indicated by a "P" icon along with the remaining hours before a required stop, will function more strictly. Players will receive a notification two hours before a mandatory break is required, as well as another warning if they exceed the allowed driving time, which will also result in a traffic violation penalty.

In American Truck Simulator, drivers can stay on the road for up to 14 hours before they must take a mandatory break, requiring 10 consecutive hours of rest afterward. In Euro Truck Simulator 2, drivers may drive for up to 10 hours before taking a mandatory break, which requires 9 consecutive hours of rest.


We believe these additions coming to our games with the future 1.60 update will provide players with greater flexibility and customization while also enhancing realism. However, both systems can be enabled or disabled independently in the settings, allowing you to tailor the experience to your own preference.

Don't forget to stay tuned for more news from the upcoming 1.60 update by following us on our X/TwitterFacebookInstagramBluesky, and YouTubeWe would also really appreciate it if you could sign up for our newsletter. Until next time, safe travels!

  •  

Release 2026.05.30

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.05.30

GitHub Container Registry:

  • ghcr.io/alexta69/metube:latest
  • ghcr.io/alexta69/metube:2026.05.30

Changes

  •  

v24.10.7

Hi,

The OpenWrt community is proud to announce the newest stable release of the OpenWrt 24.10 stable series.

This release fixes several security issues, including security fixes in dnsmasq and the Linux kernel. We recommend everyone to upgrade.

The OpenWrt 24.10 series is in security maintenance (only security problems are fixed), with end of life (EoL) projected for September 2026. We recommend migrating to OpenWrt 25.12 before then.

Download firmware images using the OpenWrt Firmware Selector:

Download firmware images directly from our download servers:

Main changes between OpenWrt 24.10.6 and OpenWrt 24.10.7

Only the main changes are listed below. See changelog-24.10.7 for the full changelog.

Security fixes

Linux kernel:

  • CVE-2026-43284 ("Dirty Frag"): local privilege escalation through the IPsec ESP code path. This only affects devices that use IPsec, i.e. that have kmod-ipsec / the esp4 or esp6 kernel modules loaded. Fixed by the Linux kernel update to 6.6.138.
  • CVE-2026-31431 ("Copy Fail"): in earlier releases this only affected users of the starfive target and users who had installed kmod-crypto-user. Fixed by the Linux kernel update to 6.6.137.

dnsmasq:

TLS/crypto libraries:

  • openssl: update to 3.0.20, fixing multiple security vulnerabilities
  • mbedtls: update to 3.6.6, fixing multiple security vulnerabilities
  • wolfssl: update to 5.9.1, fixing multiple security vulnerabilities

Device support

  • airoha: an7581: enable USB support
  • airoha: EN7581: fix PCIe initialization and add x2 lane (x2 link) support
  • airoha: add U-Boot support for EN7581/AN7583 boards
  • bcm53xx: align image names with the device-tree compatible (affects image selection in the Firmware Selector)
  • qualcommax: ipq807x: Linksys MX5300: fix MAC address labelling
  • ramips: mt7621: Xiaomi Mi Router AC2100: fix MAC address labelling

Various fixes and improvements

  • airoha: an7581: fix kernel panic in the I2S audio driver
  • airoha: fix Ethernet hardware offload on EN7581 (backported upstream airoha_eth patches, offload with GDM2 present)
  • lantiq: fix refcount and memory leak in the MTD partition parser
  • wifi-scripts: fix MAC address check in the mac80211 setup script

Core components update

  • Linux kernel: update from 6.6.127 to 6.6.141
  • ca-certificates: update from 20250419 to 20260223
  • mbedtls: update from 3.6.5 to 3.6.6
  • openssl: update from 3.0.19 to 3.0.20
  • wireless-regdb: update from 2026.02.04 to 2026.03.18
  • wolfssl: update from 5.7.6 to 5.9.1

Upgrading to 24.10

Sysupgrade can be used to upgrade a device from 23.05 to 24.10, and configuration will be preserved in most cases.

For for upgrades inside the OpenWrt 24.10 stable series for example from a OpenWrt 24.10 release candidate Attended Sysupgrade is supported in addition which allows preserving the installed packages too.

  • Sysupgrade from 22.03 to 24.10 is not officially supported.

  • There is no configuration migration path for users of the ipq806x target for Qualcomm Atheros IPQ806X SoCs because it switched to DSA. You have to upgrade without saving the configuration.
    ''Image version mismatch. image 1.1 device 1.0 Please wipe config during upgrade (force required) or reinstall. Config cannot be migrated from swconfig to DSA Image check failed''

  • User of the Linksys E8450 aka. Belkin RT3200 running OpenWrt 23.05 or earlier will need to run installer version v1.1.3 or later in order to reorganize the UBI layout for the 24.10 release. A detailed description is in the OpenWrt wiki. Updating without using the installer will break the device. Sysupgrade will show a warning before doing an incompatible upgrade.

  • Users of the Xiaomi AX3200 aka. Redmi AX6S running OpenWrt 23.05 or earlier have to follow a special upgrade procedure described in the wiki. This will increase the flash memory available for OpenWrt. Updating without following the guide in the wiki break the device. Sysupgrade will show a warning before doing an incompatible upgrade.

  • Users of Zyxel GS1900 series switches running OpenWrt 23.05 or earlier have to perform a new factory install with the initramfs image due to a changed partition layout. Sysupgrade will show a warning before doing an incompatible upgrade and is not possible. After upgrading, the config file /etc/config/system should not be restored from a backup, as this will overwrite the new compat_version value.

Known issues

  • LEDs for Airoha AN8855 are not yet supported. Devices like the Xiaomi AX3000T with an Airoha switch will have their switch LEDs powered off. This issue will be addressed in an upcoming OpenWrt SNAPSHOT and the OpenWrt 24.10 minor release.
  • 5GHz WiFi is non-functional on certain devices with ath10k chipsets. Affected models include the Phicomm K2T, TP-Link Archer C60 v3 and possibly others. For details, see issue #14541.

Full release notes and upgrade instructions are available at
https://openwrt.org/releases/24.10/notes-24.10.7

In particular, make sure to read the regressions and known issues before upgrading:
https://openwrt.org/releases/24.10/notes-24.10.7#known_issues

For a detailed list of all changes since 24.10.6, refer to
https://openwrt.org/releases/24.10/changelog-24.10.7

To download the 24.10.7 images, navigate to:
https://downloads.openwrt.org/releases/24.10.7/targets/
Use OpenWrt Firmware Selector to download:
https://firmware-selector.openwrt.org?version=24.10.7

As always, a big thank you goes to all our active package maintainers, testers, documenters and supporters.

Have fun!

The OpenWrt Community


To stay informed of new OpenWrt releases and security advisories, there
are new channels available:

  •  

Distribution Release: Ubuntu Sway Remix 26.04

The DistroWatch news feed is brought to you by TUXEDO COMPUTERS. Aleksey Samoilov has announced the release of Ubuntu Sway Remix 26.04, a major update of the project's unofficial Ubuntu variant featuring the popular Sway tiling compositor. It is intended for Linux beginners who are interested in the keyboard-oriented interface of tiling window managers and also for advanced Linux....
  •  

Early Stable Update for Desktop

The Stable channel has been updated to 149.0.7827.53/.54 for Windows and Mac as part of our early stable release to a small percentage of users. A full list of changes in this build is available in the log.

You can find more details about early Stable releases here.

Interested in switching release channels?  Find out how here. If you find a new issue, please let us know by filing a bug. The community help forum is also a great place to reach out for help or learn about common issues.


Srinivas Sista

Google Chrome

  •  

Dirk Eddelbuettel: RcppArmadillo 15.2.7-1 on CRAN: Micro Upstream Update

armadillo image

Armadillo is a powerful and expressive C++ template library for linear algebra and scientific computing. It aims towards a good balance between speed and ease of use, has a syntax deliberately close to Matlab, and is useful for algorithm development directly in C++, or quick conversion of research code into production environments. RcppArmadillo integrates this library with the R environment and language–and is widely used by (currently) 1272 other packages on CRAN, downloaded 46.6 million times (per the partial logs from the cloud mirrors of CRAN), and the CSDA paper (preprint / vignette) by Conrad and myself has been cited 693 times according to Google Scholar.

This versions updates to the 15.2.7 upstream Armadillo release made today. The package has already been updated for Debian, and built for r2u. As the upstream was modest, we for once skipped reverse-dependency checks. That bet paid off as CRAN found no issues among the over 1270 reverse dependencies. However, one package referenced a package archived today, hence ‘invisible’ to CRAN and triggered a (false positive) NOTE of ‘reference to non-existing package’. We came close. Anyway, the package made it CRAN shortly thereafter following the standard brief email exchange explaining the false-positive nature of the NOTE.

All changes since the last CRAN release follow.

Changes in RcppArmadillo version 15.2.7-1 (2026-05-29)

  • Upgraded to Armadillo release 15.2.7 (Medium Roast Deluxe)

    • More efficient checks for aliasing

Courtesy of my CRANberries, there is a diffstat report relative to previous release. More detailed information is on the RcppArmadillo page. Questions, comments etc should go to the rcpp-devel mailing list off the Rcpp R-Forge page.

This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. If you like this or other open-source work I do, you can sponsor me at GitHub. You can also sponsor my Tour de Shore 2026 ride in support of the Maywood Fine Arts Center.

  •  

American Truck Simulator: Where Next?

It has been a few days since the last DLC was released, so it is time for us to begin looking ahead in American Truck Simulator. While today is not quite the official reveal, we do have a small teaser from a brand-new destination currently in development for ATS, and we think some of you may already be able to guess where our journey will lead next.

Development on this project is still in its early stages, so we are not ready to share all the details just yet, including any release timeline. However, we couldn’t resist giving the #BestCommunityEver a tiny glimpse of what our teams have been working on behind the scenes.


From iconic roadside landmarks to stretches of highway surrounded by lush countryside, this upcoming map expansion will offer truckers a brand-new region of the United States to explore, haul through, and discover. Whether you enjoy cruising through bustling urban areas, navigating industrial hubs, or taking in scenic rural drives, there will be plenty waiting for you down the road.

Still unsure? Don’t worry, we have a screenshot for you to examine closely. We know our community is filled with expert detectives, and we are excited to see your guesses rolling in across the comments and social media.

As development continues, our map, asset, and research teams are hard at work recreating the atmosphere, industries, road networks, and landmarks that make this part of the United States unique. There is still a road ahead before we are ready to fully unveil this DLC, but we are already looking forward to sharing more about this journey soon.

We cannot wait to show you more when the time is right. Until then, stay up to date with the latest news, don’t forget to follow our blog, subscribe to our newsletter, and follow us on X/TwitterFacebookBlueSky, and InstagramUntil next time, keep on truckin’! 

  •  

Ravi Dwivedi: Budapest Travel

In September 2025, I attended the annual LibreOffice conference in Budapest, Hungary. This gave me an opportunity to explore the city, which I will cover in this post.

Let’s start with the currency. Although Hungary is a part of the European Union (EU), it doesn’t use the euro as its currency. Instead, it uses Hungarian forints (denoted by “Ft”). During my time in Hungary, 1 Indian rupee was equal to 4 Hungarian forints.

After reaching the Budapest airport, I bought a 15-day public transport pass. The public transport counter is after you pass customs and immigration. The pass allows unlimited use of public transport in the city. I had to show my passport and pay 5950 Ft to get the pass. The pass had my passport number mentioned on it. The public transport passes can also be bought at any of the tram stations as well.

This is the counter from where I bought my public transport pass.

This is the counter from where I bought my public transport pass.

Budapest pass.

My unlimited public transport pass for Budapest. I have redacted my passport number from it.

An automatic ticket machine

An automatic ticket machine at a tram station in Budapest.

Budapest is a union of two cities—Buda and Pest—lying on opposite sides of the Danube River. My hotel—Corvin Hotel—was on the Pest side.

Budapest had good public transport. The buses, metros, and trams complemented each other. For example, the airport didn’t have metro or tram connectivity, but it was served by the bus. Most of the metro was on the Pest side, with only a couple of stations falling in Buda. However, both sides had an extensive network of trams.

Furthermore, the information about the public transport was easily accessible. For instance, the map of tram stops inside the trams also included the bus routes one could get after alighting at those stops.

From the airport, I took a bus followed by taking a metro on the M3 line to reach within walking distance of my hotel.

An M3 line metro in Budapest.

An M3 line metro in Budapest.

During the conference I would take the tram to the conference venue. The trams were modern and fast. They also had a smiley face at the front, which gave them a friendly look. It seemed like the trams were happily doing their job. The city also had a good pedestrian infrastructure along with separate cycling tracks.

A tram in Budapest.

A tram in Budapest having a smiley face at the front.

Budapest’s tap water is officially safe to drink, which was mentioned on a sticker posted on the wall of the bathroom of my hotel room. So, I did not need to buy any water bottles while I was there.

On the 6th of September, I went on a sightseeing tour of Budapest with my Dione. Our friend Attila, who was a local (from Hungary), joined us. We went to the central market from our hotel by metro.

If you read my post on Vienna, I mentioned that the metro stations don’t have AFC gates but ticket validators instead. Budapest’s metro also has the same system. If you buy individual tickets, you need to validate them using the validators on the station before boarding the metro. If you are using a public transport pass like I was, then you do not need to validate, and you can board the metro directly.

A ticket validator at a metro station in Budapest.

A ticket validator at a metro station in Budapest.

In 10-15 minutes, we reached the central market. Attila showed us around. I bought a fridge magnet and paprika powder as souvenirs. Paprika powder is a signature spice of Hungary. It is mainly available in two forms—one is sweet and the other being spicy. I wanted the spicy one, but I didn’t get that in that market. Therefore, I had to contend with buying the sweet version. The sweet version isn’t sweet though, it is just not spicy. After bringing that paprika powder home, it is mainly used for food coloring. I like it though and use it frequently in my omelets and other dishes.

Central Market.

Central market.

A building with a tram in front of it.

The building right behind the tram is the central market building.

At some point, Atilla had to join the The Document Foundation (TDF) sightseeing group, so we parted ways at the central market. Dione and I continued our sightseeing and decided to start with visiting the Hungarian parliament, which is a tourist attraction. It was because we were on the Pest side and the parliament was also on the same side, while other tourist attractions were on the Buda side.

So, Dione and I hopped on a tram and went to the parliament. We got off at a tram station just outside the parliament. The parliament is the icon of Budapest. The building has a gothic architecture and colored brown and white. One can buy tickets and take an inside tour. However, we didn’t have a lot of time, so we stayed outside the building.

Hungarian Parliament building.

Hungarian Parliament building.

After spending some time outside the parliament building, we took a tram to the Chain Bridge. As I mentioned earlier, Budapest has two parts—Buda and Pest—separated by the Danube River. To go from one of the sides to the other requires crossing a bridge. Although Budapest has many bridges linking the two sides, the main one is the Chain Bridge.

We walked on the chain bridge to get to the other side. The bridge gave a good view of the Danube River. It also had a statue of a lion. The Buda Castle (another major landmark of Budapest) was visible from the bridge.

Chain Bridge.

A shot of Chain Bridge.

A lion statue

The lion statue on the Chain Bridge.

After reaching the other side of the bridge (the Buda side), we sat on a bench for some time and then planned on where to go next. We decided to go to Fisherman’s Bastion, which is another tourist attraction.

We used the OSMAnd~ app to figure out which bus to take and hopped on one. Soon we reached Fisherman’s Bastion, where we found a flight of stairs that led upwards. Upon climbing the stairs, we got a panoramic view of the city. It also gave us a good view of the Hungarian parliament across the river. Going further upstairs, we found a statue of Stephen I of Hungary. He was the first king of Hungary, getting the crown in the year 1900.

A view of Hungarian parliament from Fisherman's bastion

A view of Hungarian parliament from Fisherman’s bastion.

I found Fisherman’s Bastion to be the best tourist attraction in the city. As mentioned earlier, it offers a panoramic view of the city, which I liked. I liked the arhitecture and open space there. If you find yourself in Budapest, I would highly recommend that you visit Fisherman’s Bastion.

Fisherman's Bastion.

Fisherman’s Bastion.

A green colored statue of King Stephen

Statue of Stephen I of Hungary at Fisherman’s Bastion.

Next, we went downstairs and returned to where the bus dropped us. From here on, we walked in random streets to see the residential and non-touristy side of Budapest. It was not so random as we walked towards Batthyány tér metro station. Upon reaching the metro station, we found a café where we stopped for a while for some coffee. After injecting some caffeine into our blood, we proceeded to find a place to have lunch.

A metro station

Batthyány tér metro station.

For lunch, we decided to go to Rákóczi tér metro station after reading on the internet about the food options there. Upon exiting the metro station, we found a market inside a building that had a lot of shops, but most of them were closed.

After roaming around inside a bit, we found an Italian place open and decided to eat there. The name of this place was Matteos. We ordered an eggplant parmigiana, a lasagna artichoke, and a classic tiramisu. It wasn’t very tasty but filled us up for the day.

The Italian place we had our lunch at.

A picture of Matteos, where we had our lunch.

Budapest has four metro lines, and we had been to three of them, so we decided to try the remaining line, which was the M1 line. It is the oldest line in the city and has a different vibe than the modern lines. This line was opened in 1896, one of the oldest subway systems in the world.

The coaches were much smaller than the other metro lines, and the seating arrangement was something you would expect from a bus than a typical metro train. We rode all the way to the last stop, Mexikói út. Upon going outside, we found out there wasn’t much to do here.

At this point, I checked the map and realized that Heroes’ Square is just a couple of metro stations away. Heroes’ Square is a tourist attraction in Budapest. It is located in Zuglóa and is a historically significant place in Budapest. It has a monument which features the Seven chieftains of the Magyars.

M1 line station and tracks.

M1 line station and tracks. It is the oldest metro transit of Budapest and one of the oldest in the world. It started operations in 1896.

Here, our unlimited public transport pass was handy because if it was paid per trip, we would think of the stop as a “wasted” one because we would have to buy a ticket again, but in this case we could just hop on again without any regrets.

A metro train entering a station.

An M1 line metro train entering the station.

So we took the M1 line again and deboarded at Hősök tere station, followed by walking to the square. After roaming around for a while, we saw a trolleybus and decided to ride on that.

Heroes' Square

Heroes’ Square.

A trolleybus

This is the trolleybus we took in Budapest.

A trolleybus is an electric bus that is powered by overhead electric cables. It is like a tram but runs on roads instead of tracks. We got down at Dózsa György út metro station. Then we took a metro to our hotel.

Before going to the hotel, we went to a place to eat something. We had coffee and lángos. Lángos is a deep-fried Hungarian dish, which looks exactly like the Indian flatbread bhatura. I found it tasty, but since it was deep-fried, that was almost a given.

A deep friend dish called Lángos.

Lángos — a dish which looks like the Indian flatbread bhatura.

The next day we went to Vienna—the capital of Austria—which I have already posted about. Check it out here.

I had a good time in Budapest, and it is a beautiful city with good public transport and some amazing sites to visit. That’s it for now, and see you next time!

Credits: Thanks Dione and Badri for proofreading.

  •  

Directus v12.0.0-rc.1

⚠️ Potential Breaking Changes

Introduced VERSION_KEY_ constants and renamed main to published @alvarosabu (#27397)*
Backward Compatibility: You can now use ?version=published to resolve versions of the main item(s) via the version query parameter. For backward compatibility, ?version=main will continue to work.

Replaced status field with archived boolean in collection settings @alvarosabu (#27397)
Backward Compatibility: Existing collections with string-based status fields continue to work unchanged; newly created collections now default to a boolean "Archived" field instead of the string "Status" field

Deprecated the VResizeable component @formfcw (#27437)

  • Deprecation for extensions: The globally registered VResizeable component has been deprecated. Extension authors using <v-resizeable> should migrate to @directus/vue-split-panel or their own implementation.

Updated type system, borders, and theme variables @formfcw (#27437)

  • Potential breaking change for theme extensions: headerShadow and sidebarShadow removed from LayoutConfig interface
  • Potential breaking change for theme extensions: boxShadow removed from header theme rules schema
  • Potential breaking change for theme extensions: sidebarShadow no longer exposed in layout wrapper state

Updated module navigation bar spacing and styling @HZooly (#27437)

  • Potential breaking change in theme extensions: Removed navigation.project.borderColor / navigation.project.borderWidth / navigation.project.background from theming. No action is required — these props will simply no longer have any effect.

Locked published items in versioned collections from editing and added a header action button to edit in the draft version @alvarosabu (#27397)

  • Breaking change — new behavior for versioned collections Published items in versioned collections are now locked. Edits must be made through the draft version.

Removed rounded buttons and adopted shared header action button across all views @formfcw (#27437)

  • Potential breaking change for extensions: The rounded prop has been removed from v-button. Extensions using rounded will still render correctly but buttons will appear as rounded rectangles instead of circles. No functional impact.

Changed license to MSCL-1.0-GPL (#27417)

  • Breaking Change: Relicensed from BUSL-1.1 to MSCL-1.0-GPL (Monospace Sustainable Core License, Version 1.0).

Updated header and navigation bar base design and merged their theme properties into a new shell scope @formfcw (#27437)

  • Potential breaking change for theme extensions: The theme properties navigation.background, navigation.backgroundAccent, navigation.borderWidth, navigation.borderColor, header.background, header.borderWidth, and header.borderColor have been removed and replaced by shell.background, shell.backgroundAccent, shell.borderWidth, and shell.borderColor.
  • Potential breaking change for theme extensions: Custom themes overriding any of these removed properties must migrate to the new shell scope. The corresponding CSS variables change from --theme--navigation--background, --theme--navigation--background-accent, --theme--navigation--border-*, --theme--header--background, and --theme--header--border-* to --theme--shell--background, --theme--shell--background-accent, and --theme--shell--border-*.

Removed the extra confirmation step from the publish flow @alvarosabu (#27487)

  • Breaking change — new publish flow: Publishing a version no longer shows an additional confirmation dialog after confirming changes in the comparison modal. The item is published directly once the changes are confirmed.

Updated sidebar styles @formfcw (#27437)

  • Potential breaking change for theme extensions: Removed section.toggle.borderWidth / section.toggle.borderColor in favor of section-level border tokens. No action is required — these props will simply no longer have any effect.
  • Potential breaking change for theme extensions: Removed sidebarShadow and headerShadow from defineLayout(). No action is required — these props will simply no longer have any effect.

Refactored focus ring from border/box-shadow to outline @formfcw (#27437)

  • Potential breaking change for theme extensions: borderColorFocus, boxShadowHover, and boxShadowFocus are removed from the theme schema — custom themes referencing these will lose their focus overrides silently
  • Potential breaking change for interface extensions that relied on --theme--form--field--input--border-color-focus or --theme--form--field--input--box-shadow-focus CSS variables will need to migrate to --theme--form--field--input--focus-ring-color

Updated header bar elements and deprecated the headline slot @formfcw (#27437)

  • Deprecation for extensions: The headline slot on the private view header bar has been deprecated. Existing content keeps rendering, but consumers using <template #headline> will now see a deprecation hint from Volar.

Changed the default of IP_TRUST_PROXY from true to false to harden the default deployment against IP spoofing. (#27607)
The IP_TRUST_PROXY default was changed from true to false. If you run Directus behind a reverse proxy and rely on X-Forwarded-For (or similar) headers for client IP resolution, you must now explicitly set IP_TRUST_PROXY to true or a more specific trust configuration.

  • @directus/app
  • @directus/api
  • @directus/themes
    • Updated module navigation bar spacing and styling @HZooly (#27437 by @formfcw)

    • Updated header and navigation bar base design and merged their theme properties into a new shell scope @formfcw (#27437 by @formfcw)

    • Updated sidebar styles @formfcw (#27437 by @formfcw)

    • Refactored drawer header layout and simplified v-drawer API @formfcw (#27437 by @formfcw)

      :::notice

      • Deprecation for extensions: The globally registered v-breadcrumb component has been deprecated. Extensions using <v-breadcrumb> keep rendering but will see a deprecation hint from Volar.
      • Deprecation for extensions: On v-drawer, the subtitle prop (use the title prop instead), the subtitle slot, the header:append slot, and the actions:append slot have been deprecated. Existing usage keeps rendering — actions:append content lands in the secondary-actions zone, and for primary CTAs in the drawer header use the new actions:primary slot. Consumers will see deprecation hints from Volar.
      • Potential Breaking change for theme extensions: The theme properties header.headline.foreground and header.headline.fontFamily have been removed. Custom themes overriding these properties should remove them. The corresponding CSS variables --theme--header--headline--foreground and --theme--header--headline--font-family no longer exist.

      :::

  • @directus/types
    • Updated module navigation bar spacing and styling @HZooly (#27437 by @formfcw)

    • Updated header and navigation bar base design and merged their theme properties into a new shell scope @formfcw (#27437 by @formfcw)

    • Updated sidebar styles @formfcw (#27437 by @formfcw)

    • Refactored drawer header layout and simplified v-drawer API @formfcw (#27437 by @formfcw)

      :::notice

      • Deprecation for extensions: The globally registered v-breadcrumb component has been deprecated. Extensions using <v-breadcrumb> keep rendering but will see a deprecation hint from Volar.
      • Deprecation for extensions: On v-drawer, the subtitle prop (use the title prop instead), the subtitle slot, the header:append slot, and the actions:append slot have been deprecated. Existing usage keeps rendering — actions:append content lands in the secondary-actions zone, and for primary CTAs in the drawer header use the new actions:primary slot. Consumers will see deprecation hints from Volar.
      • Potential Breaking change for theme extensions: The theme properties header.headline.foreground and header.headline.fontFamily have been removed. Custom themes overriding these properties should remove them. The corresponding CSS variables --theme--header--headline--foreground and --theme--header--headline--font-family no longer exist.

      :::

  • @directus/extensions
  • @directus/extensions-registry
  • @directus/extensions-sdk
  • @directus/format-title
  • @directus/memory
  • @directus/pressure
  • @directus/release-notes-generator
  • @directus/update-check
  • @directus/validation
  • @directus/schema
  • @directus/schema-builder
  • @directus/specs
  • @directus/storage
  • @directus/storage-driver-cloudinary
  • @directus/storage-driver-supabase
  • @directus/storage-driver-azure
  • @directus/storage-driver-gcs
  • @directus/storage-driver-local
  • @directus/storage-driver-s3
  • @directus/stores
  • create-directus-extension
  • create-directus-project
  • @directus/env
    • Changed the default of IP_TRUST_PROXY from true to false to harden the default deployment against IP spoofing. (#27607 by @br41nslug)
  • @directus/sdk
    • Refactor sdk error to use class over object (#27417 by @ComfortablyCoding)

      :::warning
      Requests that fail will now throw a RequestError instead of returning a response with an error property.
      :::

✨ New Features & Improvements

  • @directus/app
    • Introduced VERSION_KEY_* constants and renamed main to published @alvarosabu (#27397 by @formfcw)

    • Added auto-save for version editing @alvarosabu (#27449 by @alvarosabu)

    • Fixed Image Editor save button to use split button @HZooly (#27437 by @formfcw)

    • Added split-menu slot to v-button and migrate primary header actions @formfcw (#27437 by @formfcw)

    • Added AI-powered translations to the translations interface, including glossary, style guide, and configurable default model settings derived from the enabled providers and allowed models. (#26940 by @bryantgillespie)

    • Added version support to getItemRoute and update all callers to preserve version context when navigating to items from layouts and interfaces @alvarosabu (#27397 by @formfcw)

    • Added behavior to auto-switch to the draft version on the first edit of published item @alvarosabu (#27507 by @alvarosabu)

    • Added Publish without Review action to the publish split menu with shortcut @alvarosabu (#27501 by @alvarosabu)

    • Updated Visual Editor header bar buttons @formfcw (#27437 by @formfcw)

    • Updated content route middleware to handle singleton collections and draft flow via route guards @alvarosabu (#27397 by @formfcw)

    • Replaced status field with archived boolean in collection settings @alvarosabu (#27397 by @formfcw)

    • Updated module bar buttons style @HZooly (#27437 by @formfcw)

    • Deprecated the VResizeable component @formfcw (#27437 by @formfcw)

    • Updated VChip component to appear as a pill in form field label, group accordion, group tabs, kanban, deployment status, extension item, marketplace extension list item, marketplace extension banner, and user popover @formfcw (#27462 by @formfcw)

    • Updated type system, borders, and theme variables @formfcw (#27437 by @formfcw)

    • Rendered non-clickable version menu without directus_versions read access @alvarosabu (#27461 by @alvarosabu)

    • Added item-less draft creation flow for versioned collections @alvarosabu (#27397 by @formfcw)

    • Updated module navigation bar spacing and styling @HZooly (#27437 by @formfcw)

    • Updated Visual Editor popover/modal action buttons @formfcw (#27437 by @formfcw)

    • Updated UI for the Draft & Publish workflow @formfcw (#27437 by @formfcw)

    • Updated mobile appearance of drawer sidebar @formfcw (#27437 by @formfcw)

    • Moved Promote/Publish button to header actions @alvarosabu (#27397 by @formfcw)

    • Updated primary header actions to show label and replace outlined header action buttons @formfcw (#27437 by @formfcw)

    • Updated SearchInput component to match the new design @formfcw (#27437 by @formfcw)

    • Added MCP OAuth 2.1 authorization server. MCP clients (like Claude, Codex) can now authenticate via standard OAuth flow with PKCE instead of requiring a manually provisioned static token. Enable with MCP_OAUTH_ENABLED=true. Dynamic and client ID metadata registration were kept separately opt-in with MCP_OAUTH_DCR_ENABLED=true and MCP_OAUTH_CIMD_ENABLED=true. (#27069 by @hanneskuettner)

    • Refactored header bar action slots and reorganized CTAs @formfcw (#27437 by @formfcw)

      :::notice

      • Deprecation for extensions: The actions:append slot in the header bar has been deprecated in favor of the new actions:primary slot for primary CTAs. Existing actions:append usage keeps rendering in the secondary-actions zone, but consumers will now see a deprecation hint from Volar.

      :::

    • Added navigation logic on discarding item-less versions @alvarosabu (#27397 by @formfcw)

    • Put the sidebar into the content area @HZooly (#27437 by @formfcw)

    • Updated color system for VChip and VersionMenu components @formfcw (#27437 by @formfcw)

    • Updated content section spacing and drawer content spacing @HZooly (#27437 by @formfcw)

    • Extracted the card subheader into a reusable subheader component @HZooly (#27437 by @formfcw)

    • Added version select to collection page @alvarosabu (#27397 by @formfcw)

    • Updated sidebar styles @formfcw (#27437 by @formfcw)

    • Renamed "Promote" to "Publish" in version menu and disabled create version and published selection for item-less versions @alvarosabu (#27397 by @formfcw)

    • Added version query param guards on content-item route @alvarosabu (#27397 by @formfcw)

    • Improved bookmark flow @formfcw (#27450 by @formfcw)

    • Forwarded theme tokens and i18n strings from Studio to the visual-editing iframe @formfcw (#27469 by @formfcw)

    • Refactored focus ring from border/box-shadow to outline @formfcw (#27437 by @formfcw)

    • Introduced VersionChip component @formfcw (#27437 by @formfcw)

    • Updated theme preview component to match the new design @formfcw (#27437 by @formfcw)

    • Updated collab avatar indicator design @formfcw (#27437 by @formfcw)

    • Refactored drawer header layout and simplified v-drawer API @formfcw (#27437 by @formfcw)

      :::notice

      • Deprecation for extensions: The globally registered v-breadcrumb component has been deprecated. Extensions using <v-breadcrumb> keep rendering but will see a deprecation hint from Volar.
      • Deprecation for extensions: On v-drawer, the subtitle prop (use the title prop instead), the subtitle slot, the header:append slot, and the actions:append slot have been deprecated. Existing usage keeps rendering — actions:append content lands in the secondary-actions zone, and for primary CTAs in the drawer header use the new actions:primary slot. Consumers will see deprecation hints from Volar.
      • Potential Breaking change for theme extensions: The theme properties header.headline.foreground and header.headline.fontFamily have been removed. Custom themes overriding these properties should remove them. The corresponding CSS variables --theme--header--headline--foreground and --theme--header--headline--font-family no longer exist.

      :::

    • Updated header bar elements and deprecated the headline slot @formfcw (#27437 by @formfcw)

    • Ensured to switch to the draft version when visually editing an item of a versioned collection @formfcw (#27595 by @formfcw)

    • Extracted reusable ModuleBarButton component @formfcw (#27437 by @formfcw)

    • Moved client-validation to promote version workflow instead of save version @alvarosabu (#27397 by @formfcw)

    • Added Create New action to publish split menu with shortcut @alvarosabu (#27425 by @alvarosabu)

  • @directus/api
    • Introduced VERSION_KEY_* constants and renamed main to published @alvarosabu (#27397 by @formfcw)
    • Added auto-save for version editing @alvarosabu (#27449 by @alvarosabu)
    • Added AI-powered translations to the translations interface, including glossary, style guide, and configurable default model settings derived from the enabled providers and allowed models. (#26940 by @bryantgillespie)
    • Added Publish without Review action to the publish split menu with shortcut @alvarosabu (#27501 by @alvarosabu)
    • Added MCP OAuth 2.1 authorization server. MCP clients (like Claude, Codex) can now authenticate via standard OAuth flow with PKCE instead of requiring a manually provisioned static token. Enable with MCP_OAUTH_ENABLED=true. Dynamic and client ID metadata registration were kept separately opt-in with MCP_OAUTH_DCR_ENABLED=true and MCP_OAUTH_CIMD_ENABLED=true. (#27069 by @hanneskuettner)
    • Added JSON filtering, alias and sorting support (#26981 by @br41nslug)
    • Added support for item-less versions @Nitwel (#27397 by @formfcw)
    • Added support for the version query parameter in collections @Nitwel (#27397 by @formfcw)
  • @directus/constants
  • @directus/env
    • Added auto-save for version editing @alvarosabu (#27449 by @alvarosabu)
    • Added MCP OAuth 2.1 authorization server. MCP clients (like Claude, Codex) can now authenticate via standard OAuth flow with PKCE instead of requiring a manually provisioned static token. Enable with MCP_OAUTH_ENABLED=true. Dynamic and client ID metadata registration were kept separately opt-in with MCP_OAUTH_DCR_ENABLED=true and MCP_OAUTH_CIMD_ENABLED=true. (#27069 by @hanneskuettner)
  • @directus/system-data
    • Added auto-save for version editing @alvarosabu (#27449 by @alvarosabu)
    • Replaced status field with archived boolean in collection settings @alvarosabu (#27397 by @formfcw)
    • Added MCP OAuth 2.1 authorization server. MCP clients (like Claude, Codex) can now authenticate via standard OAuth flow with PKCE instead of requiring a manually provisioned static token. Enable with MCP_OAUTH_ENABLED=true. Dynamic and client ID metadata registration were kept separately opt-in with MCP_OAUTH_DCR_ENABLED=true and MCP_OAUTH_CIMD_ENABLED=true. (#27069 by @hanneskuettner)
  • @directus/types
    • Added auto-save for version editing @alvarosabu (#27449 by @alvarosabu)
    • Updated type system, borders, and theme variables @formfcw (#27437 by @formfcw)
    • Added MCP OAuth 2.1 authorization server. MCP clients (like Claude, Codex) can now authenticate via standard OAuth flow with PKCE instead of requiring a manually provisioned static token. Enable with MCP_OAUTH_ENABLED=true. Dynamic and client ID metadata registration were kept separately opt-in with MCP_OAUTH_DCR_ENABLED=true and MCP_OAUTH_CIMD_ENABLED=true. (#27069 by @hanneskuettner)
    • Refactored focus ring from border/box-shadow to outline @formfcw (#27437 by @formfcw)
    • Added support for item-less versions @Nitwel (#27397 by @formfcw)
    • Added support for the version query parameter in collections @Nitwel (#27397 by @formfcw)
  • @directus/errors
  • @directus/composables
  • @directus/themes
  • @directus/utils
    • Added MCP OAuth 2.1 authorization server. MCP clients (like Claude, Codex) can now authenticate via standard OAuth flow with PKCE instead of requiring a manually provisioned static token. Enable with MCP_OAUTH_ENABLED=true. Dynamic and client ID metadata registration were kept separately opt-in with MCP_OAUTH_DCR_ENABLED=true and MCP_OAUTH_CIMD_ENABLED=true. (#27069 by @hanneskuettner)
  • @directus/sdk
  • @directus/specs
  • @directus/visual-editing
    • Redesigned the editable-element overlay with theming, RTL support and improved a11y @formfcw (#27469 by @formfcw)

🐛 Bug Fixes & Optimizations

  • @directus/app
  • @directus/api
    • Fixed registration email verification tokens to use the configured secret fallback when SECRET is missing. (#27406 by @rijkvanzanten)
    • Bumped axios, js-cookie, samlify, systeminformation, simple-git, fast-uri dependencies (#27589 by @br41nslug)
    • Fixed MCP OAuth dynamic client registration defaults and metadata responses. (#27628 by @hanneskuettner)
    • Updated IP blocking (#27606 by @br41nslug)
    • Updated the built-in OpenAI and Anthropic AI model lists to use the latest available API models. (#27602 by @hanneskuettner)
  • @directus/constants
    • Added DIRECTUS_DOMAIN constant and replaced hardcoded directus.io to directus.com using the new constant (#27417 by @ComfortablyCoding)
  • @directus/system-data
    • Added AI-powered translations to the translations interface, including glossary, style guide, and configurable default model settings derived from the enabled providers and allowed models. (#26940 by @bryantgillespie)
    • Updated the built-in OpenAI and Anthropic AI model lists to use the latest available API models. (#27602 by @hanneskuettner)
  • @directus/types
    • Added AI-powered translations to the translations interface, including glossary, style guide, and configurable default model settings derived from the enabled providers and allowed models. (#26940 by @bryantgillespie)
    • Added JSON filtering, alias and sorting support (#26981 by @br41nslug)
  • @directus/utils
  • @directus/ai
    • Updated the built-in OpenAI and Anthropic AI model lists to use the latest available API models. (#27602 by @hanneskuettner)
  • @directus/release-notes-generator
    • Ignored private workspace packages when generating release notes (#27637 by @licitdev)

📦 Published Versions

  • @directus/app@16.0.0-rc.0
  • @directus/api@36.0.0-rc.0
  • @directus/ai@1.3.2-rc.0
  • @directus/composables@11.5.0-rc.0
  • @directus/constants@14.4.0-rc.0
  • create-directus-extension@12.0.0-rc.0
  • create-directus-project@13.0.0-rc.0
  • @directus/env@6.0.0-rc.0
  • @directus/errors@2.4.0-rc.0
  • @directus/extensions@4.0.0-rc.0
  • @directus/extensions-registry@4.0.0-rc.0
  • @directus/extensions-sdk@18.0.0-rc.0
  • @directus/format-title@13.0.0-rc.0
  • @directus/memory@4.0.0-rc.0
  • @directus/pressure@4.0.0-rc.0
  • @directus/release-notes-generator@3.0.0-rc.0
  • @directus/schema@14.0.0-rc.0
  • @directus/schema-builder@1.0.0-rc.0
  • @directus/specs@14.0.0-rc.0
  • @directus/storage@13.0.0-rc.0
  • @directus/storage-driver-azure@13.0.0-rc.0
  • @directus/storage-driver-cloudinary@13.0.0-rc.0
  • @directus/storage-driver-gcs@13.0.0-rc.0
  • @directus/storage-driver-local@13.0.0-rc.0
  • @directus/storage-driver-s3@13.0.0-rc.0
  • @directus/storage-driver-supabase@4.0.0-rc.0
  • @directus/stores@3.0.0-rc.0
  • @directus/system-data@4.5.0-rc.0
  • @directus/themes@2.0.0-rc.0
  • @directus/types@16.0.0-rc.0
  • @directus/update-check@14.0.0-rc.0
  • @directus/utils@13.5.0-rc.0
  • @directus/validation@3.0.0-rc.0
  • @directus/visual-editing@2.1.0-rc.0
  • @directus/sdk@22.0.0-rc.0

  •  

Release 2026.05.29

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.05.29

GitHub Container Registry:

  • ghcr.io/alexta69/metube:latest
  • ghcr.io/alexta69/metube:2026.05.29

Changes

  • fix pnpm upgrade to the correct package age limit (baa72c0)
  • review fixes (cf2d2dd)
  • fix catch (56c0ad3)
  • upgrade dependencies (4478d13)
  • fix(ui): drop redundant tooltip on share button (ad92607)
  • feat(ui): warn before share + surface failures for large files (6ff364a)
  • feat(ui): add iOS Web Share button next to download link (39a8948)
  • remove circle and make labels with help text have an underline (f034858)
  • make ui more mobile mobile-friendly (e2773db)

  •  

Russell Coker: Zswap

Zswap vs Zram

Last year I blogged about using Zram for VMs [1]. That setup is still working well for VMs and for phones and laptops with no swap device.

I have just read Chris Down’s insightful blog post about Zswap vs Zram [2] which convinced me to setup Zswap on some systems. I have had some of the problems that were described in his blog post when trying to run Zram on workstation and server systems.

One limitation of zswap is that it doesn’t allow specifying the compression level. For zram I can put the following in /etc/systemd/zram-generator.conf to set the zstd compression level (this works well on my Thinkpad X1 Carbon Gen6):

[zram0]
compression-algorithm=zstd(level=10)

For the BTRFS filesystem I can put “compress=zstd:13” in the mount options to specify the compression level. They really should support different compression levels in zswap. The ideal compression level depends on the speed of the CPU and new CPUs keep getting faster.

Setup

The documentation says to use something like the following on the kernel command-line to enable zswap:

zswap.enabled=1 zswap.compressor=zstd zswap.max_pool_percent=20 zswap.shrinker_enabled=1

The max_pool_percent=20 setting is the default which means to use up to 20% of system RAM for compressed data. I’ve seen documentation sugesting up to 50% which seems a little excessive.

Note that a lot of documentation says to use zswap.zpool=z3fold, but z3fold is going to be removed and zsmalloc (the default) is recommended [3].

There is documentation about changing the compression algorithm via command line parameters, on Debian only lzo is linked in to the kernel and zstd (my preferred option) is a module so the kernel command line can’t be used to set zstd, but the following command works:

echo zstd > /sys/module/zswap/parameters/compressor

The shrinker_enabled option is to allow the kernel to evict cold pages without waiting for memory pressure.

You can enable zswap without rebooting by running commands like the following. You could even put them in /etc/rc.local or something, but I think putting it in the kernel command line is a good idea as it makes it obvious to the next sysadmin what is happening.

echo 1 > /sys/module/zswap/parameters/enabled
echo zstd > /sys/module/zswap/parameters/compressor
echo 1 > /sys/module/zswap/parameters/shrinker_enabled

Monitoring

The following command is documented as a way of finding out what zswap is doing:

# grep -r . /sys/kernel/debug/zswap/
/sys/kernel/debug/zswap/stored_pages:262541
/sys/kernel/debug/zswap/pool_total_size:455266304
/sys/kernel/debug/zswap/written_back_pages:384
/sys/kernel/debug/zswap/reject_compress_poor:0
/sys/kernel/debug/zswap/reject_compress_fail:160911
/sys/kernel/debug/zswap/reject_kmemcache_fail:0
/sys/kernel/debug/zswap/reject_alloc_fail:0
/sys/kernel/debug/zswap/reject_reclaim_fail:0
/sys/kernel/debug/zswap/pool_limit_hit:0

The following command gives the zswap compression level which gives a result of 2.36 for this example:

echo "scale=2; " $(</sys/kernel/debug/zswap/stored_pages) " * $(getconf PAGESIZE) /" $(</sys/kernel/debug/zswap/pool_total_size) | bc

This table documents my current understanding of the debug values. The difference between reject_compress_fail and reject_compress_poor isn’t clear in a lot of the documentation, even reading the source didn’t make it easy to understand.

File Meaning (LC is lifetime count)
pool_limit_hit LC pool limit hit and pages are forced to the swap partition
pool_total_size RAM used for zswap data
reject_alloc_fail LC can’t allocate memory because max_pool_percent has been reached
reject_compress_fail LC of pages with a compression algorithm failure so go straight to swap partition
reject_compress_poor LC of pages that can’t compress so go straight to swap partition
reject_kmemcache_fail LC kernel malloc failure (serious problem?)
reject_reclaim_fail LC failure to move a page from compressed RAM to disk – serious problem!
stored_pages Swapped pages stored by zswap
written_back_pages LC of pages written back to swap partition from zswap

All of this is not nearly as easy to understand as the following command for zram:

# zramctl 
NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 zstd          7.7G  2.1G  375M  386M       4 [SWAP]

Debian Wiki

The Debian Wiki page about Zswap is very brief [4] and needs more description about this, I think a lot of Debian users will use zram instead of zswap because setting up zram is just a single apt command. I’m not planning to immediately add to that wiki page because I’m not an expert on this, I would appreciate comments on this blog post from others who have got zswap working. I will update the wiki if others report matching experiences to mine.

Conclusion

I’m now using zswap on a few systems including my main home workstation which had performed poorly with zram and a swap device in the past. If that goes well I’ll put it on other systems.

I wrote the following shell script to display zswap stats, consider it GPL if you want to use it:

#!/bin/bash

if [ ! -f /sys/kernel/debug/zswap/stored_pages ]; then
  echo "ZSwap not enabled"
  exit 0
fi
PAGES=$(</sys/kernel/debug/zswap/stored_pages)
PAGESIZE=$(getconf PAGESIZE)
RAM=$(echo "$PAGESIZE * " $(getconf _PHYS_PAGES) | bc)
POOL=$(</sys/kernel/debug/zswap/pool_total_size)
if [ "$POOL" == "0" ]; then
  echo "ZSwap not used yet"
  exit 0
fi
COMP=$(</sys/module/zswap/parameters/compressor)
echo -n "$COMP compression ratio: "
echo "scale=2; $PAGES * $PAGESIZE / $POOL" | bc
echo -n "RAM%: "
echo "100 * $POOL / $RAM" | bc

Related posts:

  1. ZRAM and VMs I’ve just started using zram for swap on VMs. The...
  2. Comparing Compression I just did a quick test of different compression options...
  3. ZFS 2.0.0 Released Version 2.0 of ZFS has been released, it’s now known...
  •  

Distribution Release: Gnoppix Linux 26_6

The DistroWatch news feed is brought to you by TUXEDO COMPUTERS. Andreas Mueller has announced the release of Gnoppix Linux 26_6, the latest version of the project's privacy-focused and AI-optimised Linux distribution. This version is based on Debian's "Testing" branch and showcases the latest Xfce desktop: "We are excited to announce the release of Gnoppix Linux 26.6. This release....
  •  

Counter-Strike 2 Update

[p]\[ COLOGNE 2026 ][/p]
  • [p]Added ability to bookmark stickers in Cologne 2026 Shop.[/p][/*]
[p]\[ MISC ][/p]
  • [p]Added convar r_spectator_flashbang_opacity to control flashbang opacity for remote spectators.[/p][/*]
  • [p]Flashbang effect for remote spectators now renders underneath the HUD.[/p][/*]
  • [p]Stability improvements[/p][/*]
[p]\[ MAPS ][/p][p]Ancient[/p]
  • [p]Updated clipping to prevent certain boost locations[/p][/*]
[p]Sanctum[/p]
  • [p]Updated to the latest version from Steam Workshop (Update Notes)[/p][/*]
  •  

Distribution Release: Rocky Linux 9.8

The DistroWatch news feed is brought to you by TUXEDO COMPUTERS. The Rocky Linux project has announced the release of Rocky Linux 9.8 which retains 1:1 compatibility with Red Hat Enterprise Linux. The release notes share highlights of the new version: "Major changes: This document highlights major changes between Rocky Linux (RL) 9.7 and RL 9.8. If this is....
  •  

v1.7.2 - Scheduled Send, .eml Drag-Out & Zip Import, and Per-Domain Branding

1.7.2 (2026-05-28)

Features

  • Mail: Scheduled send and send delay (#322)
  • Mail: Drag emails out to the file explorer as .eml
  • Mail: Import emails from .zip archives
  • Mail: "Move to Trash and mark as read" delete action (#323)
  • Mail: Include group inboxes in the unified mailbox view (#328)
  • Mail: Locale-aware date format in the email list with a preset picker (#331)
  • Mail: Allow drag-and-drop into shared mailboxes
  • Composer: Ctrl/Cmd+Enter sends the open draft
  • Settings: New Downloads tab with template editor for .eml and attachment filenames
  • Settings: Filename transform settings and an ASCII-only "date (from-to) subject" template
  • Settings: Post-export action (keep / archive / trash)
  • Settings: Template for multi-email .zip filenames
  • Admin: Per-domain branding editor with overrides on /api/config, manifest, and PWA icon (#332)
  • Admin: Policy-controlled push relay URL with optional user lock
  • i18n: NEXT_PUBLIC_DEFAULT_LOCALE for fallback UI locale (#243)

Fixes

  • Mail: Editable HTML signature in new mail; clean state on every compose entry (#329)
  • Mail: Report real upload progress with XHR progress events (#333)
  • Mail: Restore blob: in object-src and frame-src CSP for PDF/HTML previews
  • Mail: Match user-avatar treatment on quick reply
  • Email viewer: Stop shattering table cells with word-break: break-word
  • Composer: Scope Ctrl/Cmd+Enter send to the focused composer
  • Composer: Stop closing the form when editing any field
  • Pro: Keep the empty viewer pane visible in the split layout
  • Pro: Prevent an empty main pane when reordering tabs across panes
  • Mobile: Collapse focus mail layout to multi-line
  • Mobile: Keep a gutter on bare-HTML and plain-text emails
  • Calendar: Align continued multi-week events with the week's left edge
  • Calendar: Show the end date in the event popover for multi-day events (#318)
  • Calendar: Convert recurrenceRules to singular in batch create
  • Calendar: Handle malformed event dates (#316)
  • Files: Stop URL-encoding drag-out filenames and preserve Unicode letters
  • Routing: Prefix remaining <img>, favicon, and WebDAV URLs with basePath (#319)
  • Routing: Prefix hand-written URLs with basePath for subpath deployments
  • Auth: OAUTH_ALLOW_PRIVATE_ENDPOINTS for split-DNS setups

i18n

  • Add missing translation keys across 16 locales

  •  

v0.16.7

[0.16.7] - 2026-05-28

If you are upgrading from v0.16.x, replace the binary (or run docker pull). If you are upgrading from v0.15.x and below, please read the upgrading documentation for more information on how to upgrade from previous versions.

Added

Changed

Fixed

  • Log rejected messages to tracing store.
  • MTA:
    • Always update next DSN notify times.
    • Expand lists and resolve catch-all addresses when building autogenerated messages.
  • Sharing: Includes resource that themselves carry a direct ACL grant and are leaves.
  • Tasks cannot be deleted in OSS builds.
  • Directory: Per-domain external directory resolution fails.
  • DNS updater: Keep external TXT records when updating RRSet.
  • HTTP: Reject requests from blocked IPs when Keep-Alive is enabled.

Check binary attestation here

  •  
❌