Skip to content

v1.1.6

Choose a tag to compare

@github-actions github-actions released this 25 Aug 13:50
· 56 commits to master since this release
13e7521

Ubuntu Hello v1.1.6 - Session-Idle Self-Abort (Best-Effort) + Dependency Updates

This release adds a best-effort self-abort for a running face scan when the session genuinely goes idle, plus packaging/CI dependency updates. It does not fully resolve face recognition continuing to run after Esc at a GNOME/GDM lock screen — read the "Known limitation" bullet below before relying on it for that.


🐛 What's in this release

  • New: session-idle self-abort: with the shipped default core.workaround = off, nothing in the PAM module was ever told to cancel a running compare process — the only existing cancel path only fires when a concurrent password-watch thread wins the race, and that only exists when a workaround is enabled.
  • Deliberately did not widen PAM-side password watching to add this. AGENTS.md carries an explicit HARD RULE over that exact code, guarding against a worse prior incident: doing so previously broke GDM login outright (selecting a user immediately bounced back to the account list).
  • Added a same-process signal instead: compare.py now runs a daemon thread that polls its own login1 session's IdleHint via busctl (absolute path, since this runs as root during PAM auth) roughly twice a second. On an observed false → true transition (edge-triggered — an already-idle session at scan start, the normal case when waking a lock screen, does not trigger this) it sends the process SIGTERM so the existing main-thread handler does cleanup, rather than touching the camera directly from the watcher thread. Fails open if busctl/logind are unavailable or return anything other than exactly b true/b false. New config: core.abort_on_session_idle (default true).
  • ⚠️ Known limitation, confirmed by live testing: after building this, live D-Bus capture across a real Esc-at-lock-screen repro (system bus + user session bus, multiple rounds) showed IdleHint never transitions on GNOME/GDM for that scenario — Esc only toggles GNOME Shell's internal password-prompt-vs-idle-clock view, with no external signal we could find (logind IdleHint, xdg-desktop-portal Inhibit, org.gnome.ScreenSaver.ActiveChanged all stayed unchanged; WakeUpScreen/Mutter.IdleMonitor fire but also on ordinary interaction, so using them risks aborting legitimate scans). On GNOME/GDM this is currently a dormant safety net, not a fix for Esc. Kept because it's harmless and may help elsewhere.
  • Also this release: bumped the Flatpak runtime/SDK to 25.08 and several pinned GitHub Actions (upload-artifact, download-artifact, setup-buildx-action, setup-qemu-action) to their current latest releases, plus CI hardening (explicit least-privilege permissions: on the lint/coverage/compat jobs, and exposing the GitHub Actions cache runtime variables that buildx's type=gha cache backend needs) and two thread-safety fixes in the idle watcher found in PR review — including a race where a late busctl reading arriving after a concurrent successful/failed exit could override the decided exit code with abort code 12.
  • Verified: confirmed busctl's output format directly against a real login1 session on real hardware, matching the parser exactly. Full unit test coverage for the idle-state probe (including malformed-output and absolute-path cases) and the edge-triggered watcher thread; full test suite passes.

📥 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 remains available:

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.1.6 tag, review it, then run locally — do not pipe a moving branch URL directly to bash.

Full Changelog: v1.1.5...v1.1.6