From 411d9900a9ea4205904a60faf775080fb80b605d Mon Sep 17 00:00:00 2001 From: Mitchell R Date: Tue, 19 May 2026 04:21:14 +0200 Subject: [PATCH] =?UTF-8?q?chore:=20target=20latest-stable=20everywhere=20?= =?UTF-8?q?=E2=80=94=20Debian=20Trixie=20+=20gtk4=20v4=5F14?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CI workflow container: debian:trixie-slim (was bookworm-slim) - Server image base: node:23-trixie-slim (was bookworm-slim) - Kiosk Cargo.toml: gtk4 features v4_14 (was v4_8) — matches Trixie's stock gtk 4.14 without backports juggling - setup-pi-kiosk.sh header: Trixie+ target (was Bookworm+) Glibc matches across Pi OS Trixie, Coolify host (Trixie), CI build container — no symbol drift at runtime. --- .github/workflows/release-kiosk.yml | 17 ++++++++--------- deploy/docker/Dockerfile.server | 8 +++++--- deploy/scripts/setup-pi-kiosk.sh | 4 ++-- kiosk/Cargo.toml | 7 +++---- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/release-kiosk.yml b/.github/workflows/release-kiosk.yml index 9059846..ec3e3b6 100644 --- a/.github/workflows/release-kiosk.yml +++ b/.github/workflows/release-kiosk.yml @@ -2,10 +2,10 @@ # each as a GitHub Release asset, and optionally auto-import into a running # BetterFrame server via /api/admin/firmware/import. # -# Build environment is debian:bookworm-slim (matches Raspberry Pi OS Bookworm -# the kiosk deploys to). Building on Ubuntu would link against a newer glibc -# than the Pi ships → `GLIBC_2.38 not found` at runtime. Runner host distro -# doesn't matter; we run all steps inside the bookworm container. +# Build environment is debian:trixie-slim (matches Raspberry Pi OS Trixie +# the kiosk deploys to). Trixie ships gtk4 4.14 + libwebkitgtk-6.0 natively, +# no backports needed. glibc matches Pi OS Trixie → no runtime symbol drift. +# Runner host distro doesn't matter; everything runs inside the container. # # Required secrets: # BF_AUTOIMPORT_URL e.g. https://bf.example.com (optional) @@ -43,10 +43,10 @@ jobs: runs-on: ${{ matrix.runs-on }} - # Lock glibc + APT package set to Bookworm — matches RPi OS Bookworm - # (Debian 12) which kiosks run. Raspbian is Debian; same packages. + # Lock glibc + APT package set to Trixie — matches RPi OS Trixie + # (Debian 13) which kiosks run. Raspbian is Debian; same packages. container: - image: debian:bookworm-slim + image: debian:trixie-slim steps: - name: Bootstrap apt + git (container has none preinstalled) @@ -78,8 +78,7 @@ jobs: echo "version=$version" >> "$GITHUB_OUTPUT" - name: Install GTK/GStreamer/WebKit build deps - # gtk4-rs 0.9 with the v4_8 feature builds against bookworm's stock - # libgtk-4-dev 4.8.3 — same version that ships on Pi OS Bookworm. + # Trixie stock: gtk4 4.14 + libwebkitgtk-6.0 — no backports needed. run: | apt-get install -y --no-install-recommends \ libgtk-4-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \ diff --git a/deploy/docker/Dockerfile.server b/deploy/docker/Dockerfile.server index bf4ad7a..0bebcaf 100644 --- a/deploy/docker/Dockerfile.server +++ b/deploy/docker/Dockerfile.server @@ -1,5 +1,7 @@ -# BetterFrame server image — Node 23 + native deps for argon2/sqlite -FROM node:23-bookworm-slim AS builder +# BetterFrame server image — Node 23 + native deps for argon2/sqlite. +# Trixie base (Debian 13, latest stable) — matches the host distro we +# recommend in deploy/README.md. +FROM node:23-trixie-slim AS builder WORKDIR /app @@ -20,7 +22,7 @@ WORKDIR /app/server RUN npm run build # ---- Runtime image ---- -FROM node:23-bookworm-slim +FROM node:23-trixie-slim # ffmpeg for camera snapshot capture (optional but needed for /admin/entities/:id/snapshot) RUN apt-get update && apt-get install -y --no-install-recommends \ diff --git a/deploy/scripts/setup-pi-kiosk.sh b/deploy/scripts/setup-pi-kiosk.sh index 1058383..28a3b1a 100755 --- a/deploy/scripts/setup-pi-kiosk.sh +++ b/deploy/scripts/setup-pi-kiosk.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Single-host BetterFrame installer/updater for Raspberry Pi 5 (Bookworm+). +# Single-host BetterFrame installer/updater for Raspberry Pi 5 (Trixie+). # # What it does (every step idempotent — safe to re-run for updates): # 1. clone or `git pull` the BetterFrame repo into the invoking user's home @@ -260,7 +260,7 @@ EOF -o "${THEME_DIR}/logo.png" plymouth-set-default-theme -R betterframe - # Find the boot config / cmdline file. Bookworm uses /boot/firmware/, older + # Find the boot config / cmdline file. Bookworm/Trixie use /boot/firmware/, older # Pi images use /boot/. if [ -f /boot/firmware/cmdline.txt ]; then BOOT_DIR=/boot/firmware diff --git a/kiosk/Cargo.toml b/kiosk/Cargo.toml index a183be6..ffeaa84 100644 --- a/kiosk/Cargo.toml +++ b/kiosk/Cargo.toml @@ -6,10 +6,9 @@ description = "BetterFrame kiosk — multi-camera display with GTK4 + GStreamer" license = "AGPL-3.0-only OR Commercial" [dependencies] -# GTK4 for windowing/layout. v4_8 = Pi OS Bookworm's libgtk-4 version. We -# don't use any 4.12+ APIs; bumping the feature gate would force pulling -# from backports for no functional gain. -gtk4 = { version = "0.9", features = ["v4_8"] } +# GTK4 for windowing/layout. v4_14 = Debian Trixie / Pi OS Trixie stock +# libgtk-4-dev — keeps us on latest-stable without backports. +gtk4 = { version = "0.9", features = ["v4_14"] } # GStreamer for RTSP decode gstreamer = "0.23"