github f-koehler/KTailctl v0.22.0

5 hours ago

KTailctl v0.22.0

This is a major release built on top of a near-complete rewrite of the codebase.
The backend was reimplemented from scratch around a generic property-based list model, the C++/QML integration was modernized, and the build, testing and CI infrastructure were overhauled.
On the surface, the peer list, exit node page, settings page and tray menu were redesigned, multi-account switching was reimplemented and many smaller features and bugfixes were added.

Features & Enhancements

Peer list & peer details:

  • Redesign the peer list and make it load noticeably faster
  • Filter peers by DNS name (case-insensitive) and by online/Mullvad status
  • Sort peers by DNS name and highlight the current node
  • Show tags on the peer list (optional) and on the peer info page
  • Show peer details in a separate column when enough space is available
  • Show location and country flag, primary routes, public key, and "last seen"/"created" timestamps
  • Add descriptions and copy buttons for the individual peer details
  • Add links to the Tailscale admin panel

Exit nodes:

  • Redesign the exit node page to match the new peer list
  • Set and unset exit nodes from the UI and the tray menu
  • Group Mullvad exit nodes by country with flags and use the location for descriptions/tooltips
  • Manage self-hosted exit nodes
  • Toggle exit node "allow LAN access" from the exit node and settings pages
  • Suggest an exit node and allow switching back to the last used one
  • Filter exit nodes by DNS name, country and city

Tray menu & icon:

  • Reworked tray menu with dedicated submenus for self, peers, exit nodes and accounts
  • Indicate exit node usage in the tray icon
  • Add a tooltip showing Tailscale status, IP and current exit node
  • Add node icons (smartphone or computer) and a Mullvad icon for submenus
  • Toggle Tailscale on/off and switch the tray icon theme
  • Show country flags for Mullvad exit nodes grouped by country

Accounts:

  • Reimplement multi-account support including switching
  • Edit and refresh account names

Settings & configuration:

  • New settings page wired up to Tailscale preferences (SSH server, operator, exit node LAN access, ...)
  • Integrate KConfig and automatically save the application configuration
  • Add a login profiles page showing detailed information about each profile

Status & error handling:

  • Show an inline message when Tailscale needs to be authenticated
  • Show an inline message when the user is not the Tailscale operator
  • Show an inline message when tailscaled is not running

Fixes

  • Fix refreshing of the Tailscale status while the window is hidden
  • Fix self-hosted exit node integration
  • Work around a Qt 6.10 double free with a custom string filter model
  • Force the Breeze/Breeze-dark icon theme and make sure Breeze icons are used (Flatpak)
  • Give the Flatpak network access so user avatars can be fetched
  • Fix and homogenize the exit node list entries
  • Fix the tray icon not updating on theme or backend state changes
  • Many smaller UI fixes (copy buttons, filter icon, page highlighting, settings toggles, ...)

Chores

This release rewrites large parts of the project. The most relevant internal changes:

C++/QML:

  • Reimplement the backend around a generic PropertyListModel and regenerated Tailscale status objects
  • Use modern QML registration macros and bump the C++ standard to 23
  • Enable KDE compiler settings and make the codebase comply with them

Go:

  • Update tailscale.com, golang.org/x/net and the rest of the Go dependency chain
  • Bump Go to the latest version supported by the Flatpak SDK extension (incl. several security fixes)
  • Make golang.org/x/net an indirect dependency

Build system:

  • Add infrastructure for and a large number of unit tests
  • Optionally fetch and vendor the required Go version via CMake
  • Dynamically discover and register country flag icons and generate themed tray icon variants

CI & tooling:

  • Modularize the CI using scripts and add a native build
  • Integrate clang-tidy, clazy, cppcheck, include-what-you-use, CodeQL, govulncheck, Google's OSV scanner, shellcheck and actionlint
  • Run pre-commit hooks via prek and add hooks for Go, Python, QML, CMake, YAML and shell
  • Switch dependency updates from Renovate to Dependabot and remove the Nix flake/devshell
  • Support creating beta releases

Documentation

  • Add a new README with updated screenshots
  • Update the Fedora dependency scripts (including debug dependencies)

Don't miss a new KTailctl release

NewReleases is sending notifications on new releases.