Skip to content

Releases: b0bbywan/odio-framebuffer-ui

v2.0.1

Choose a tag to compare

@github-actions github-actions released this 24 Oct 13:06

v2.0.1

A security release: the kiosk stops trusting eMudhra's compromised CAs
(CVE-2026-111943), which Debian's own fix does not reach, along with the CAs
Chrome has distrusted since Chromium 122. Update with apt upgrade; nothing
to configure.

🔒 Security

  • eMudhra's compromised CAs are distrusted: QtWebEngine carries Chromium's
    own list of trusted roots and ignores the system store, so Debian's
    ca-certificates fix (DSA-6572-1)
    left the kiosk trusting them. On every start, before the engine loads, the
    kiosk now marks them as distrusted in the user's certificate database,
    ~/.pki/nssdb, which Chromium honors over its own list:

    • the six compromised TLS intermediates and their six Sectigo
      cross-signatures;
    • AAA Certificate Services and emSign ECC Root CA - G3, the two roots
      Debian removed.

    If it cannot write them, it refuses to start rather than run unprotected.
    Details in odios#104.

  • The CAs Chrome dropped for cause are distrusted too: Chrome has stopped
    trusting Entrust (with AffirmTrust), Chunghwa Telecom and NetLock since the
    Chromium that QtWebEngine 6.8 is built on, and the kiosk still trusted
    whatever they issued. Their 12 roots join the list. The certificates they
    issued before Chrome's cut-off dates have all expired, so no site Chrome
    still accepts should break.

QtWebEngine itself still gets no security updates from Debian: this fixes
which certificates the kiosk trusts, not the engine's own flaws. Keep the kiosk
on pages you trust.

🐛 Fixes

  • Quitting with Ctrl+Q no longer crashes: the window outlived the
    application, so the web profile was torn down under a live page and the
    kiosk died with a segmentation fault on its way out. Stopping the unit was
    not affected.

⬆️ Upgrading from 2.0.0

sudo apt update && sudo apt upgrade
systemctl --user daemon-reload
systemctl --user restart 'odio-kiosk@*.service'

The distrust records are written on the first start of 2.0.1. To check them
(certutil is in libnss3-tools):

certutil -L -d sql:$HOME/.pki/nssdb | grep -c 'odio-kiosk distrust'   # 26

What's Changed

  • Distrust eMudhra's compromised CAs and roots Chrome dropped, fix crash on exit by @b0bbywan in #3

Full Changelog: v2.0.0...v2.0.1

v2.0.1-beta.1

v2.0.1-beta.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 24 Oct 12:44

Full Changelog: v2.0.0...v2.0.1-beta.1

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 12:51
8a75fb9

v2.0.0

The kiosk is odio-kiosk now, built on Qt 6 / Chromium 122, and runs one
instance per screen
. An installed node migrates on apt upgrade, but the unit
changed name and shape — see Upgrading below.

✨ Features

  • Qt 6 instead of Qt 5.15: the engine is Chromium 122, not Chromium 87 from
    late 2020. :where(), accent-color, container queries, unprefixed mask-*
    and Object.hasOwn all work, so the odio UI stops losing whole stylesheet
    rules to an unknown pseudo-class and library code stops tripping on missing
    built-ins.

  • One kiosk per screen: the unit is a template, odio-kiosk@.service. Each
    instance names the page it shows, and its framebuffer if it is not the first,
    in ~/.config/odio-kiosk/<instance>.conf:

    URL=http://localhost:8018/ui
    FB=/dev/fb1
    
  • The node's Qt environment is a conffile: /etc/default/odio-kiosk holds
    the default framebuffer, the QT_QPA_FB_* settings and the Chromium flags —
    editable in place, with no drop-in and no quoting, and preserved on upgrade.

  • The unit names no server: which one to wait for, and be restarted with, is
    deployment configuration, so it goes in a drop-in:

    # ~/.config/systemd/user/odio-kiosk@main.service.d/wait-for.conf
    [Unit]
    After=default.target my-server.service
    PartOf=my-server.service

    The health check waits on ${URL} regardless, so a kiosk with no drop-in
    still comes up once its server answers.

🐛 Fixes

  • An instance with no URL says which file to write, instead of dying on a
    missing environment file that names neither the file nor the instance.
  • A stopped kiosk is inactive, not failed: SuccessExitStatus=1 is gone —
    this binary exits 143 on SIGTERM, which systemd already counts as a clean
    stop. It also no longer turned a browser that cannot open its framebuffer into
    a unit going quietly inactive behind a blank screen.
  • The current URL is no longer written on close: it went through a
    QSettings pointer that was never allocated.
  • The user agent is honest: Qt's own, naming QtWebEngine and its Chromium
    with an odio-kiosk suffix. It used to claim to be Firefox 89, which made
    every server log line about this browser misleading.

⬆️ Upgrading from fbrowser-kiosk

The package Provides/Replaces/Breaks fbrowser-kiosk, so apt upgrade
migrates the node by itself. The unit does not come along: odio-screen.service
is gone, and no instance of the template is enabled on install.

systemctl --user disable --now odio-screen.service
mkdir -p ~/.config/odio-kiosk
printf 'URL=http://localhost:8018/ui\n' > ~/.config/odio-kiosk/main.conf
systemctl --user enable --now odio-kiosk@main.service

📦 Install

curl -fsSL https://apt.odio.love/key.gpg \
  | sudo gpg --dearmor -o /usr/share/keyrings/odio.gpg
echo "deb [signed-by=/usr/share/keyrings/odio.gpg] https://apt.odio.love stable main" \
  | sudo tee /etc/apt/sources.list.d/odio.list
sudo apt update && sudo apt install odio-kiosk

First run, on a node that has never shown a screen:

sudo usermod -aG tty,video,input $USER     # then log in again
sudo loginctl enable-linger $USER

amd64 and arm64, Debian trixie / Raspberry Pi OS trixie. No armhf: Pi OS
armhf is Raspbian, which publishes no qt6-webengine binary for it, exactly as
it published no Qt 5 one.

What's Changed

Full Changelog: v1.0.0+git20260210.4213a69...v2.0.0

v2.0.0-beta.1

v2.0.0-beta.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Sep 17:46

v1.0.0+git20260210.4213a69

Choose a tag to compare

@github-actions github-actions released this 13 Sep 22:57
02df648

What's Changed

  • Package Framebuffer-browser as fbrowser-kiosk by @b0bbywan in #1

New Contributors

Full Changelog: https://github.com/b0bbywan/odio-framebuffer-ui/commits/v1.0.0+git20260210.4213a69

v1.0.0+git20260210.4213a69-rc3

Pre-release

Choose a tag to compare

v1.0.0+git20260210.4213a69-rc2

Pre-release

Choose a tag to compare

v1.0.0+git20260210.4213a69-rc1

Pre-release

Choose a tag to compare