Repository navigation
v1.1.6
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 runningcompareprocess — 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.mdcarries 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.pynow runs a daemon thread that polls its own login1 session'sIdleHintviabusctl(absolute path, since this runs as root during PAM auth) roughly twice a second. On an observedfalse → truetransition (edge-triggered — an already-idle session at scan start, the normal case when waking a lock screen, does not trigger this) it sends the processSIGTERMso the existing main-thread handler does cleanup, rather than touching the camera directly from the watcher thread. Fails open ifbusctl/logind are unavailable or return anything other than exactlyb true/b false. New config:core.abort_on_session_idle(defaulttrue). ⚠️ 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) showedIdleHintnever 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.ActiveChangedall stayed unchanged;WakeUpScreen/Mutter.IdleMonitorfire 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.08and several pinned GitHub Actions (upload-artifact,download-artifact,setup-buildx-action,setup-qemu-action) to their current latest releases, plus CI hardening (explicit least-privilegepermissions:on the lint/coverage/compat jobs, and exposing the GitHub Actions cache runtime variables thatbuildx'stype=ghacache backend needs) and two thread-safety fixes in the idle watcher found in PR review — including a race where a latebusctlreading arriving after a concurrent successful/failed exit could override the decided exit code with abort code12. - 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-helloOptional 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