Releases: Screenly/Anthias
WebView-v2026.04.1
This release completes the Debian Trixie + Python 3.13 migration across the entire WebView stack — the Qt 5 toolchains for pi2/pi3 are rebuilt on trixie, and the Qt 6 webviews for pi4-64, pi5, and x86 are rebuilt against trixie's qt6-webengine-dev.
Supersedes
WebView-v2026.04.0(the first CalVer-tagged WebView release, which carried the Anthias rebrand of D-Bus / install paths / on-disk resources, the new pi4-64 Qt 6 path, and thewebview-<calver>-<debian>-<board>.tar.gzartifact naming on bookworm). Use 2026.04.1 — 2026.04.0's bookworm tarballs are obsolete.
Build pipeline
- Qt 5 cross-build Dockerfile end-to-end fixes for trixie
python2.7from bullseye archive (trixie main dropped py2; pyenv was effectively broken because its PATH only loaded via~/.bashrc, never reacheddocker run)- sysroot now ships
harfbuzz/lcms2/re2/xml2dev libs (chromium pdfium needed them on host and sysroot) bzip2.pccopied from/usr/share/pkgconfig— was silently missing, made fontconfig probe fail and QtWebEngine quietly skipped-webengine-proprietary-codecsenabled — H.264, AAC, MP3 in the resulting QtWebEngineMAKE_COREScapped at min(nproc, 8) so chromium under qemu-arm doesn't OOM on >8-core hosts- trixie apt renames in
webview/Dockerfile:libpng16-16→libpng16-16t64(time64 transition),libgst-dev→libgstreamer1.0-dev,libsqlite0-dev→libsqlite3-dev,libsrtp0-dev→libsrtp2-dev
- Trixie + Python 3.13 across all containers (server, celery, viewer, webview) — drops Balena base images, which never published a trixie tag and last refreshed in May 2025
- Pi keyring fetch hardened: HTTPS-only + SHA256 pinning on
raspberrypi-archive-keyringandraspbian-archive-keyring.debs(the.debis the trust anchor for everything fetched after it, so TLS alone wouldn't catch an upstream archive-side swap) bin/rebuild_qt5_toolchain.sh— out-of-band toolchain rebuild helper for pi2/pi3- pi1 + 32-bit pi4 retired — surviving build matrix is pi2, pi3, pi4-64, pi5, x86; Qt 5 path is pi2/pi3 only
CI / release infrastructure
- Qt 5 builder image moved off Docker Hub onto GHCR:
screenly/ose-qt-builder→ghcr.io/screenly/anthias-webview-qt5-builder(image +:buildcachetag), aligning with the rest of theanthias-*packages - Qt 5 builder built inline in
compile-webview-part-1(no separate publish job) - Registry-cache backend for the Qt 5 builder, mirroring
docker-build.yaml USER rootdeclared explicitly inwebview/Dockerfilebuilder stage (sonar finding)
Viewer / pi4-64
- pi4-64 routes to mpv with HW decode via
v4l2m2m-copy(notdrm-copy) - 64-bit balena base for pi4-64 viewer image
libraspberrypi0skipped on arm64 (it's armhf-only)audio_outputsetting honored in mpv
Webview UX (forum Tier-A bundle, #2778)
- No more white flash on dark URL assets —
setBackgroundColor(Qt::black)onQWebEnginePageso the gap between load start and first paint is no longer white (forum t/6610) - URL assets refresh every loop —
QWebEngineProfileswitched to memory HTTP cache +clearHttpCacheon startup, instead of lingering stale for days from the on-disk cache (forum t/983) - Auto Qt scaling on 4K+ screens —
bin/start_viewer.shnow reads the active mode from/sys/class/drm/card*-*/modesand exportsQT_SCALE_FACTOR(3840→2x, 5120→3x, 7680→4x); manual overrides win (forum t/6538)
Install / deps
bin/install.shaccepts Python>=3.11(was pinned to 3.11)- Resolves release tags via
refs/tags/inclone_repo - Django 4.2.30 → 5.2.13 (LTS)
Release artifacts
| Board | Qt | Tarball(s) |
|---|---|---|
| pi2 | 5.15.14 + WebEngine (this release's trixie toolchain) | qt5-5.15.14-trixie-pi2.tar.gz, webview-2026.04.1-trixie-pi2.tar.gz |
| pi3 | 5.15.14 + WebEngine (this release's trixie toolchain) | qt5-5.15.14-trixie-pi3.tar.gz, webview-2026.04.1-trixie-pi3.tar.gz |
| pi4-64 | Qt 6 + WebEngine (trixie apt) | webview-2026.04.1-trixie-pi4-64.tar.gz |
| pi5 | Qt 6 + WebEngine (trixie apt) | webview-2026.04.1-trixie-pi5.tar.gz |
| x86 | Qt 6 + WebEngine (trixie apt) | webview-2026.04.1-trixie-x86.tar.gz |
Bookworm tarballs (pi1, pi2, pi3, pi4 32-bit) remain on WebView-v0.3.5 for legacy installs.
WebView-v2026.04.0
WebView v2026.04.0 First CalVer-tagged WebView release. Cut from the webview-fix PR branch (PR #2767) ahead of merge so the viewer image build can fetch the published artifacts on first try. Highlights vs. the previous WebView-v0.3.12 release: * Pi 4 64-bit (pi4-64) now produces a Qt 6 build alongside pi5 and x86, instead of being lumped with the legacy Qt 5 cross-compile. * WebView binary, D-Bus service / object path, install dirs, and on-disk resources renamed from Screenly* to Anthias* (the parent Screenly Inc. attribution and ~/.screenly/ legacy paths are unchanged). * Several latent correctness bugs fixed: stale image-reply race, animated GIF buffer ownership, page-load signal handler races, authenticationRequired signal-slot signature mismatch. * Server host/port are now LISTEN/PORT env-overridable instead of hardcoded to anthias-server:8080. * Artifact filenames switch to webview-<calver>-<debian>-<board>.tar.gz (Qt version and git short hash dropped); the Qt 5 toolchain archive (qt5-5.15.14-bookworm-<board>.tar.gz) keeps its Qt version.
uv-test
What's Changed
Other Changes 🔧
- chore(deps-dev): bump handlebars from 4.7.8 to 4.7.9 by @dependabot[bot] in #2716
- chore(deps): replace eslint-plugin-react with @eslint-react/eslint-plugin by @nicomiguelino in #2725
- chore(deps-dev): bump picomatch from 2.3.1 to 2.3.2 by @dependabot[bot] in #2729
- feat: add support for Raspberry Pi OS Trixie by @nicomiguelino in #2732
- fix(viewer): pre-parse media to reduce VLC playback startup gap by @nicomiguelino in #2736
- chore(deps): bump the github-actions group with 2 updates by @dependabot[bot] in #2737
- chore(deps): remove unused Mako dependency by @dependabot[bot] in #2740
Full Changelog: v0.20.5...uv-test
v0.20.5
What's Changed
Raspberry Pi 1 Image 📦
- The Raspberry Pi 1 image exceeded 2 GiB, so it’s not included in this release.
- You can still download the image from balenaHub.
Bug Fixes 🐞
- fix: add
enoin the list of supported network interface prefixes by @nicomiguelino in #2639 - feat: replace ffplay with mpv for Pi 5 and x86 devices by @nicomiguelino in #2708
Features ✨
- refactor: migrate to Bootstrap 5 placeholder and extract Skeleton component by @nicomiguelino in #2557
- feat: use Bootstrap 5's built-in switches by @nicomiguelino in #2559
Other Changes 🔧
- chore(deps): bump the npm group across 1 directory with 11 updates by @dependabot[bot] in #2545
- chore(deps): bump kombu from 5.2.4 to 5.5.4 by @dependabot[bot] in #2456
- chore(deps): bump future from 0.18.3 to 1.0.0 by @dependabot[bot] in #2460
- chore(deps-dev): bump selenium from 4.18.1 to 4.36.0 by @dependabot[bot] in #2528
- chore(deps): bump psutil from 5.7.3 to 7.1.2 by @dependabot[bot] in #2549
- chore(deps): bump idna from 3.10 to 3.11 by @dependabot[bot] in #2548
- chore(deps): bump requests from 2.32.4 to 2.32.5 by @dependabot[bot] in #2552
- chore(deps): bump the npm group across 1 directory with 4 updates by @dependabot[bot] in #2555
- chore(deps): bump requests from 2.32.4 to 2.32.5 by @dependabot[bot] in #2554
- chore(deps-dev): bump ruff from 0.8.6 to 0.14.3 by @dependabot[bot] in #2556
- chore(deps): bump drf-spectacular from 0.28.0 to 0.29.0 by @dependabot[bot] in #2560
- chore(deps): bump django from 4.2.25 to 4.2.26 in /requirements by @dependabot[bot] in #2561
- chore(deps): bump the npm group across 1 directory with 5 updates by @dependabot[bot] in #2564
- chore(deps-dev): bump python-on-whales from 0.73.0 to 0.79.0 by @dependabot[bot] in #2562
- chore(deps-dev): bump msw from 2.12.0 to 2.12.1 in the npm group by @dependabot[bot] in #2566
- chore(deps-dev): bump the npm group with 3 updates by @dependabot[bot] in #2567
- chore(deps-dev): bump the npm group with 2 updates by @dependabot[bot] in #2569
- chore(deps-dev): bump @types/react from 19.2.3 to 19.2.4 in the npm group by @dependabot[bot] in #2571
- chore(deps): bump the npm group with 3 updates by @dependabot[bot] in #2573
- chore(deps-dev): bump js-yaml from 3.14.1 to 3.14.2 by @dependabot[bot] in #2576
- chore(deps): bump docker from 6.0.0 to 7.1.0 by @dependabot[bot] in #2553
- chore(deps-dev): bump mock from 3.0.5 to 5.2.0 by @dependabot[bot] in #2580
- chore(deps-dev): bump the npm group across 1 directory with 6 updates by @dependabot[bot] in #2579
- chore(deps): bump the npm group with 2 updates by @dependabot[bot] in #2585
- chore(deps): bump glob from 10.4.5 to 10.5.0 by @dependabot[bot] in #2578
- chore(deps-dev): bump the npm group with 3 updates by @dependabot[bot] in #2586
- chore(deps): bump gevent from 25.8.2 to 25.9.1 by @dependabot[bot] in #2584
- chore(deps-dev): bump prettier from 3.6.2 to 3.7.1 in the npm group by @dependabot[bot] in #2589
- chore(deps-dev): bump prettier from 3.7.1 to 3.7.3 in the npm group by @dependabot[bot] in #2590
- chore(deps-dev): bump ts-jest from 29.4.5 to 29.4.6 in the npm group by @dependabot[bot] in #2593
- chore(deps): bump the npm group with 5 updates by @dependabot[bot] in #2594
- chore(deps): bump django from 4.2.26 to 4.2.27 in /requirements by @dependabot[bot] in #2595
- chore(deps): bump the npm group with 3 updates by @dependabot[bot] in #2596
- chore(deps): bump the npm group with 2 updates by @dependabot[bot] in #2597
- chore(deps): bump the npm group with 2 updates by @dependabot[bot] in #2600
- chore(deps): bump pytz from 2022.2.1 to 2025.2 by @dependabot[bot] in #2591
- fix: WebP images render as gray instead of the expected image by @nicomiguelino in #2601
- chore(deps-dev): bump the npm group with 3 updates by @dependabot[bot] in #2602
- chore(deps-dev): bump sass from 1.95.0 to 1.95.1 in the npm group by @dependabot[bot] in #2603
- chore(deps-dev): bump sass from 1.95.1 to 1.96.0 in the npm group by @dependabot[bot] in #2604
- chore(deps): bump urllib3 from 2.5.0 to 2.6.0 in /requirements by @dependabot[bot] in #2599
- chore(deps): bump the npm group with 2 updates by @dependabot[bot] in #2605
- chore(deps): bump the npm group with 3 updates by @dependabot[bot] in #2608
- chore(deps): bump cython from 3.1.4 to 3.2.3 by @dependabot[bot] in #2607
- chore(deps): bump jsonschema from 4.17.3 to 4.25.1 by @dependabot[bot] in #2606
- chore(deps-dev): bump the npm group across 1 directory with 5 updates by @dependabot[bot] in #2616
- chore(deps): bump the npm group across 1 directory with 3 updates by @dependabot[bot] in #2618
- chore(deps): bump the npm group with 2 updates by @dependabot[bot] in #2619
- chore(deps): bump the npm group with 3 updates by @dependabot[bot] in #2621
- chore(deps): bump tenacity from 8.4.1 to 9.1.2 by @dependabot[bot] in #2614
- chore(deps): bump redis from 3.5.3 to 7.0.1 by @dependabot[bot] in #2613
- chore(deps-dev): bump msw from 2.12.4 to 2.12.7 in the npm group by @dependabot[bot] in #2624
- chore(deps-dev): bump the npm group with 2 updates by @dependabot[bot] in #2626
- chore(deps): bump urllib3 from 2.6.0 to 2.6.2 by @dependabot[bot] in #2622
- chore(deps-dev): bump pygit2 from 1.15.1 to 1.19.1 by @dependabot[bot] in #2627
- chore(deps-dev): bump ruff from 0.14.3 to 0.14.10 by @dependabot[bot] in #2629
- chore(deps): bump psutil from 7.1.2 to 7.2.1 by @dependabot[bot] in #2628
- chore(deps): bump the npm group across 1 directory with 6 updates by @dependabot[bot] in #2638
- chore(deps-dev): bump the npm group with 4 updates by @dependabot[bot] in #2641
- chore(deps): bump the npm group across 1 directory with 3 updates by @dependabot[bot] in #2644
- chore(deps): bump the npm group across 1 directory with 11 updates by @dependabot[bot] in #2654
- chore(deps-dev): bump the npm group with 2 updates by @dependabot[bot] in #2655
- chore(deps): bump django from 4.2.27 to 4.2.28 in /requirements by @dependabot[bot] in #2658
- test: skip test_add_asset_url in test_app.py by @nicomiguelino in #2674
- chore(deps): bump urllib3 from 2.6.2 to 2.6.3 by @dependabot[bot] in #2645
- chore(docker): use APT nodejs for all Raspberry Pi boards by @nicomiguelino in #2678
- chore(deps-dev): bump unittest-parametrize from 1.7.0 to 1.8.0 by @dependabot[bot] in #2632
- chore(deps): bump urllib3 from 2.6.2 to 2.6.3 in /requirements by @dependabot[bot] in #2636
- chore(deps): bump pyasn1 from 0.6.1 to 0.6.2 in /requirements by @dependabot[bot] in #2643
- chore(deps): bump yt-dlp from 2025.10.22 to 2026.2.21 in /requirements by @dependabot[bot] in #2675
- chore(deps): bump minimatch by @dependabot[bot] in #2679
- chore(deps): bump django from 4.2.28 to 4.2.29 in /requirements by @dependabot[bot] in https://gith...
v0.20.4
What's Changed
Bug Fixes 🐞
- fix: adding a YouTube asset fails by @nicomiguelino in #2405
- fix: make the web UI more responsive by @nicomiguelino in #2463
- fix(viewer): make asset navigation instantaneous by @nicomiguelino in #2539
Features ✨
- feat: forces WebView to display full screen by @nicomiguelino in #2420
Docs 📚
- docs: add note that Trixie is not yet supported by @nicomiguelino in #2531
Other Changes 🔧
- chore(deps): bump requests from 2.32.3 to 2.32.4 by @dependabot[bot] in #2414
- Create dependabot.yml by @renatgalimov in #2421
- chore(deps-dev): bump prettier from 3.5.3 to 3.6.2 by @dependabot[bot] in #2426
- chore(deps-dev): bump typescript from 5.8.3 to 5.9.2 by @dependabot[bot] in #2424
- chore(deps-dev): bump @babel/preset-react from 7.26.3 to 7.27.1 by @dependabot[bot] in #2427
- chore(deps): bump sweetalert2 from 11.18.0 to 11.22.2 by @dependabot[bot] in #2428
- chore(deps): bump react-router from 7.6.2 to 7.7.1 by @dependabot[bot] in #2425
- chore(deps): bump @dnd-kit/sortable from 8.0.0 to 10.0.0 by @dependabot[bot] in #2439
- chore(deps-dev): bump babel-loader from 9.2.1 to 10.0.0 by @dependabot[bot] in #2441
- chore(deps-dev): bump @testing-library/dom from 10.4.0 to 10.4.1 by @dependabot[bot] in #2440
- chore(deps-dev): bump jest-environment-jsdom from 30.0.2 to 30.0.5 by @dependabot[bot] in #2438
- chore(deps): bump getmac from 0.9.4 to 0.9.5 by @dependabot[bot] in #2436
- chore(deps-dev): bump @testing-library/jest-dom from 6.6.3 to 6.6.4 by @dependabot[bot] in #2437
- chore(deps): bump python-dateutil from 2.8.1 to 2.9.0.post0 by @dependabot[bot] in #2435
- chore(deps): bump djangorestframework from 3.15.2 to 3.16.1 by @dependabot[bot] in #2434
- chore(deps): bump sweetalert2 from 11.22.2 to 11.22.4 by @dependabot[bot] in #2447
- chore(deps): bump the npm group across 1 directory with 24 updates by @dependabot[bot] in #2448
- chore(deps): bump the npm group across 1 directory with 5 updates by @dependabot[bot] in #2452
- chore(deps): bump the github-actions group with 4 updates by @dependabot[bot] in #2444
- chore(deps): bump six from 1.15.0 to 1.17.0 by @dependabot[bot] in #2458
- chore(deps): bump pyzmq from 23.2.1 to 27.0.2 by @dependabot[bot] in #2461
- chore(deps-dev): bump @testing-library/jest-dom from 6.7.0 to 6.8.0 in the npm group by @dependabot[bot] in #2462
- chore(deps): revert pyzmq from 27.0.2 back to 23.2.1 by @nicomiguelino in #2466
- chore(deps): bump actions/upload-pages-artifact from 3 to 4 in the github-actions group by @dependabot[bot] in #2470
- chore(deps): bump pyasn1 from 0.4.8 to 0.6.1 by @dependabot[bot] in #2464
- chore(deps): bump the npm group across 1 directory with 6 updates by @dependabot[bot] in #2469
- chore(deps): bump idna from 3.7 to 3.10 by @dependabot[bot] in #2457
- chore(deps): bump the npm group across 1 directory with 8 updates by @dependabot[bot] in #2476
- chore(deps): bump drf-spectacular from 0.27.2 to 0.28.0 by @dependabot[bot] in #2474
- chore(deps-dev): bump unittest-parametrize from 1.4.0 to 1.7.0 by @dependabot[bot] in #2480
- chore(deps-dev): bump the npm group with 6 updates by @dependabot[bot] in #2487
- chore(deps): bump the github-actions group across 1 directory with 2 updates by @dependabot[bot] in #2486
- chore(deps): bump the github-actions group with 2 updates by @dependabot[bot] in #2490
- chore(deps): bump the npm group across 1 directory with 5 updates by @dependabot[bot] in #2489
- docs: fix the Debian iso download link by @romainreignier in #2494
- chore(deps): bump sweetalert2 from 11.22.5 to 11.23.0 in the npm group by @dependabot[bot] in #2492
- chore(deps-dev): bump the npm group across 1 directory with 5 updates by @dependabot[bot] in #2497
- chore(deps): bump cffi from 1.14.4 to 2.0.0 by @dependabot[bot] in #2496
- chore(deps): bump gevent from 25.4.2 to 25.8.2 by @dependabot[bot] in #2500
- chore(deps-dev): bump msw from 2.11.1 to 2.11.2 in the npm group by @dependabot[bot] in #2502
- chore(deps): bump django from 4.2.22 to 4.2.24 in /requirements by @dependabot[bot] in #2499
- chore(deps): bump the npm group across 1 directory with 6 updates by @dependabot[bot] in #2507
- chore(deps): bump yt-dlp from 2025.06.30 to 2025.9.5 by @dependabot[bot] in #2503
- chore(deps): bump pyyaml from 6.0.1 to 6.0.2 by @dependabot[bot] in #2511
- chore(deps): bump sh from 1.8 to 2.2.2 by @dependabot[bot] in #2516
- fix: downgrade
shfrom 2.2.2 to 1.8 by @nicomiguelino in #2521 - chore(deps): bump netifaces from 0.10.9 to 0.11.0 by @dependabot[bot] in #2517
- chore(deps): bump certifi from 2024.7.4 to 2025.10.5 by @dependabot[bot] in #2526
- chore(deps): bump django from 4.2.24 to 4.2.25 in /requirements by @dependabot[bot] in #2524
- chore(deps): bump configparser from 4.0.2 to 7.2.0 by @dependabot[bot] in #2530
- chore(deps): bump the npm group across 1 directory with 18 updates by @dependabot[bot] in #2527
- chore(deps-dev): bump the npm group with 3 updates by @dependabot[bot] in #2535
- chore(deps): bump cython from 3.0.6 to 3.1.4 by @dependabot[bot] in #2534
- chore(deps): bump @reduxjs/toolkit from 2.9.0 to 2.9.1 in the npm group by @dependabot[bot] in #2538
- fix: Ignore files in subdirectories (.dockerignore) by @tomokinakamaru in #2542
New Contributors
- @romainreignier made their first contribution in #2494
- @tomokinakamaru made their first contribution in #2542
Full Changelog: v0.20.3...v0.20.4
WebView-v0.3.12
- Forces full screen in WebView (#2411)
v0.20.3
What's Changed
Bug Fixes 🐞
- fix: disable editing of duration for video assets by @nicomiguelino in #2355
- fix: adjust the width of date and time fileds in Edit Asset form by @nicomiguelino in #2363
- fix: adjust vertical alignment of the Asset Location field by @nicomiguelino in #2364
- fix: include player name in page titles by @nicomiguelino in #2367
- fix: restore "Upgrade Anthias" section in Settings page by @nicomiguelino in #2374
- fix: GIFs are not moving by @nicomiguelino in #2391
- fix: redirect
/adminto/admin/by @nicomiguelino in #2393 - fix: handling of YouTube URLs by @nicomiguelino in #2395
- fix: raise an error when duration is non-zero for video assets by @nicomiguelino in #2399
Features ✨
- feat: re-style the tooltips by @nicomiguelino in #2352
- feat: restyle alerts by @nicomiguelino in #2353
- feat: restyle active and inactive assets components by @nicomiguelino in #2356
- feat: remove Cancel button from Settings page by @nicomiguelino in #2377
- feat: support for preloading web pages before they get shown on the screen by @nicomiguelino in #2397
Docs 📚
- docs: add docs for creating a new WebView release by @nicomiguelino in #2379
- docs: include using the
testslabel inCONTRIBUTING.mdby @nicomiguelino in #2383
API 🧩
- feat: include IP addresses in system info endpoint by @nicomiguelino in #2375
- feat: include host username in info API endpoint by @nicomiguelino in #2376
Other Changes 🔧
- chore(deps): bump urllib3 from 1.26.19 to 2.5.0 in /requirements by @dependabot[bot] in #2351
Full Changelog: v0.20.2...v0.20.3
WebView-v0.3.11
WebView-v0.3.10
WebView-v0.3.9
- Reverts changes in WebView-v0.3.8
- Handling of zoom levels for web assets in WebView-v0.3.8 is flaky.