Skip to content

v1.2.3

Choose a tag to compare

@github-actions github-actions released this 28 Sep 09:59
· 33 commits to master since this release
5cbc882

Ubuntu Hello v1.2.3 - Ubuntu 22.04 Support, PAM and CLI Fixes, Full Coverage in Sonar

This release adds support for Ubuntu 22.04 LTS (jammy): the PPA now publishes a jammy build (#17), and a new CI cell and the booted-OS tier keep it working. Tests written for this port found and fixed three real bugs in the PAM module and the CLI, including ubuntu-hello disable emptying config.ini. SonarQube Cloud now sees the C++ PAM module's coverage too.


🔧 What's in this release

  • 🐧 New: Ubuntu 22.04 (jammy) support (#17). On 22.04, apt update failed with "does not have a Release file" because the PPA only built noble and resolute. It now builds jammy too. Jammy ships meson 0.61, GTK 4.6, PyGObject 3.42 and Python 3.10, so:
    • The build no longer needs meson 0.64. install_data(preserve_path:) became a per-file install that keeps the cli/, recorders/ and rubberstamps/ layout.
    • Settings and the setup wizard load on GTK 4.6. GtkPicture:content-fit (4.8) is dropped at load time, where GTK 4.6's default scaling already looks the same. The wizard's GtkCenterBox children use typed <child> elements instead of the 4.10 *-widget properties.
    • Confirmation dialogs fall back to a small modal window where GTK has no Gtk.AlertDialog (4.10).
    • On 22.04 the dropdowns in Settings have no type-ahead search. PyGObject 3.42 cannot pass GTK the search expression, so they are plain dropdowns there. Everything else works the same.
    • The KDE theme probe installs kreadconfig5 where KF6 does not exist (libkf6config-bin | libkf5config-bin).
  • ✅ Verified on a booted 22.04. The booted-OS tier passes on a clean 22.04 cloud image. It covers the package install, face-auth PAM through sudo, the greeter rule, reboot persistence and purge. On 22.04 the polkit agent helper is setuid (polkit 0.105), so there is no sandbox to relax and the drop-in has no effect. The tier checks that instead of simulating a sandbox. v1.2.2 and older were built for 26.04 only, so on 22.04 there is no previous release to upgrade from.
  • 🐛 Fix: ubuntu-hello disable could empty config.ini. On a config without the disabled key, the in-place rewrite crashed halfway and left a 0-byte file. It also reported success without changing anything when the line was spelled disabled=false. It now uses the same section-aware, atomic editor as Settings. It adds the key when missing, keeps comments, and a failed write leaves the old file intact.
  • 🐛 Fix: the PAM module's "Unknown error" message read past its string. S("Unknown error: ") + status added the exit code to a char *, which is pointer arithmetic, not string concatenation. An unexpected compare exit code showed the user bytes from past the end of the message. It now prints the code.
  • 🐛 Fix: a PAM password task that never started could abort the host process. optional_task::stop() joined or cancelled a thread that did not exist when the task was never activated, for example the password watcher under pam_sm_open_session. It now returns early.
  • 🐛 Smaller fixes.
    • ubuntu-hello test no longer crashes on a model whose data list is empty, and prints its resolution as width × height.
    • compare.py no longer divides by zero on an empty camera frame.
  • 🔎 Coverage and duplication (SonarQube Cloud).
    • The Python gate now measures the same files Sonar does. The untested cli/*.py modules were never counted locally. 150+ new tests take the combined Python coverage to 97%.
    • The C++ PAM module now uploads gcov coverage (gcovr --sonarqube), with a new pam-main test for main.cc's gates, error reporting, helper sanitising and pam_sm_* entry points.
    • The one duplicated block (detect_desktop(), in both the theme probe and the wallet backend) is now shared.

No new config keys and no new or changed translatable strings.


📥 Installation (from Release assets)

Verify downloads against SHA256SUMS on the Release page before installing. Download this release's assets into an empty/clean directory before running these commands — the wildcards below match by filename pattern, and leftover assets from another version in the same directory can make a package manager see multiple matches (or, for the AppImage command, pass a second matched file as a stray argument).

Format Command
Debian (amd64 + arm64) sudo apt install ./ubuntu-hello_*_$(dpkg --print-architecture).deb ./ubuntu-hello-gtk_*_$(dpkg --print-architecture).deb
Fedora (amd64 + arm64) sudo dnf install ./ubuntu-hello-[0-9]*fc44*.$(uname -m).rpm ./ubuntu-hello-gtk-*fc44*.$(uname -m).rpm
openSUSE (amd64 + arm64) sudo zypper install ./ubuntu-hello-[0-9]*lp160*.$(uname -m).rpm ./ubuntu-hello-gtk-*lp160*.$(uname -m).rpm
AppImage (amd64 + arm64) chmod +x Ubuntu-Hello-*-$(uname -m).AppImage && ./Ubuntu-Hello-*-$(uname -m).AppImage --install
Arch (amd64 only) sudo pacman -U ./ubuntu-hello-[0-9]*.pkg.tar.zst ./ubuntu-hello-gtk-*.pkg.tar.zst
Snap (amd64 only) sudo snap install --dangerous --classic ubuntu-hello_*_amd64.snap && sudo snap run ubuntu-hello.host-install
Flatpak (amd64 only) flatpak install --user ./com.github.ventura8.UbuntuHello-*.flatpak && flatpak run --command=ubuntu-hello-host-install com.github.ventura8.UbuntuHello

PPA (Ubuntu 22.04, 24.04 and 26.04). On 22.04 use the PPA: the .deb assets above are built on 26.04:

sudo add-apt-repository ppa:ventura8/ubuntu-hello && sudo apt update && sudo apt install ubuntu-hello

Optional source install: download install.sh from the v1.2.3 tag, review it, then run locally — do not pipe a moving branch URL directly to bash.

Full Changelog: v1.2.2...v1.2.3