Repository navigation
v1.2.3
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 updatefailed 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 thecli/,recorders/andrubberstamps/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'sGtkCenterBoxchildren use typed<child>elements instead of the 4.10*-widgetproperties. - 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
kreadconfig5where KF6 does not exist (libkf6config-bin | libkf5config-bin).
- The build no longer needs meson 0.64.
- ✅ 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 disablecould emptyconfig.ini. On a config without thedisabledkey, the in-place rewrite crashed halfway and left a 0-byte file. It also reported success without changing anything when the line was spelleddisabled=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: ") + statusadded the exit code to achar *, 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 underpam_sm_open_session. It now returns early. - 🐛 Smaller fixes.
ubuntu-hello testno longer crashes on a model whosedatalist is empty, and prints its resolution as width × height.compare.pyno 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/*.pymodules 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 newpam-maintest formain.cc's gates, error reporting, helper sanitising andpam_sm_*entry points. - The one duplicated block (
detect_desktop(), in both the theme probe and the wallet backend) is now shared.
- The Python gate now measures the same files Sonar does. The untested
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-helloOptional 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