<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Anthias 2026.06.3 | Screenly</title><description>A 64-bit image for the Raspberry Pi 3, a balena fleet for the Rock Pi 4, sound for video on the Pi 4, Pi 5 and PCs, and players that recover from crashes and stalled pages. Anthias now sends error reports to its maintainers by default, and you can turn that off.</description><link>https://www.screenly.io/releases/anthias/2026.06.3/</link><language>en</language><atom:link href="https://www.screenly.io/releases/anthias/2026.06.3/rss.xml" rel="self" type="application/rss+xml"/><lastBuildDate>Tue, 09 Jun 2026 00:00:00 +0000</lastBuildDate><item><title>Anthias 2026.06.3: A 64-bit image for the Raspberry Pi 3, and a balena fleet for the Rock Pi 4</title><link>https://www.screenly.io/releases/anthias/2026.06.3/pi3-64-and-rock-pi-4/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.06.3/pi3-64-and-rock-pi-4/</guid><pubDate>Tue, 09 Jun 2026 00:00:00 +0000</pubDate><category>release</category><description>&lt;p&gt;If you have a Raspberry Pi 3 running a 64-bit operating system, or a Radxa Rock Pi 4, there&amp;#39;s now an Anthias disk image and a balena fleet made for your board. On a Pi 3 with Raspberry Pi OS, the installer picks the wrong image in this release; that&amp;#39;s fixed in Anthias 2026.07.0.&lt;/p&gt;
&lt;p&gt;Anthias 2026.06.3 adds a 64-bit Raspberry Pi 3 image, called &lt;code&gt;pi3-64&lt;/code&gt;, and a balena fleet and disk image for the Radxa Rock Pi 4 Model B.&lt;/p&gt;
&lt;h2 id="raspberry-pi-3-on-a-64-bit-os"&gt;Raspberry Pi 3 on a 64-bit OS&lt;/h2&gt;
&lt;p&gt;A Raspberry Pi 3 can run a 32-bit or a 64-bit operating system. Until now Anthias installed the 32-bit &lt;code&gt;pi3&lt;/code&gt; image on both, with its Qt 5 viewer. From Anthias 2026.06.3, a Pi 3 running a 64-bit OS gets &lt;code&gt;pi3-64&lt;/code&gt; instead, with the Qt 6 viewer the Raspberry Pi 4 uses.&lt;/p&gt;
&lt;p&gt;On balena and from the disk image, a 64-bit Pi 3 works from this release. On Raspberry Pi OS, the installer and the upgrade script were meant to choose for you, but in 2026.06.3 they got it wrong in 2 ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;They chose by the kernel, and 32-bit Raspberry Pi OS starts a 64-bit kernel on a Pi 3 by default. So a Pi 3 on 32-bit Raspberry Pi OS was given &lt;code&gt;pi3-64&lt;/code&gt;, and the download failed with &lt;code&gt;no matching manifest for linux/arm/v8&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;A new install on a 64-bit OS stopped with &lt;code&gt;Required environment variables missing or invalid&lt;/code&gt;, because the install playbook didn&amp;#39;t accept &lt;code&gt;pi3-64&lt;/code&gt; yet.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both are fixed in &lt;a href="https://www.screenly.io/releases/anthias/2026.07.0/fixes-and-improvements/"&gt;Anthias 2026.07.0&lt;/a&gt;, which chooses by the operating system instead. From then on, a Pi 3 on a 64-bit OS moves to &lt;code&gt;pi3-64&lt;/code&gt; when it upgrades, and a Pi 3 on a 32-bit OS stays on &lt;code&gt;pi3&lt;/code&gt;, which is in maintenance mode. To move one to the 64-bit image, flash a 64-bit OS and install Anthias again.&lt;/p&gt;
&lt;p&gt;The 64-bit Pi 3 image is in the same places as the others:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a disk image on the release page, &lt;code&gt;anthias-pi3-64&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;an entry in Raspberry Pi Imager, without the maintenance mode note the 32-bit Pi 2 and Pi 3 entries carry&lt;/li&gt;
&lt;li&gt;a balena fleet, &lt;code&gt;screenly_ose/anthias-pi3-64&lt;/code&gt;, for the balenaOS device type &lt;code&gt;raspberrypi3-64&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As on the 32-bit image, video uploads have to be H.264. HEVC uploads are rejected with a way to convert them. Video on &lt;code&gt;pi3-64&lt;/code&gt; could still show a black screen in this release; &lt;a href="https://www.screenly.io/releases/anthias/2026.07.2/raspberry-pi-3-64-bit-video/"&gt;Anthias 2026.07.2&lt;/a&gt; fixes that.&lt;/p&gt;
&lt;h2 id="rock-pi-4"&gt;Rock Pi 4&lt;/h2&gt;
&lt;p&gt;The Rock Pi 4 has its own balena fleet, &lt;code&gt;screenly_ose/anthias-rockpi4&lt;/code&gt;, and a disk image on the release page, &lt;code&gt;anthias-rockpi4&lt;/code&gt;. It runs the generic arm64 containers, so there is no separate Rock Pi 4 build.&lt;/p&gt;
&lt;p&gt;Anthias recognizes the board by the model name in its device tree and accepts H.264 and HEVC video uploads on it. On a docker-compose install, a host service reported that model name to the server, but balena installs don&amp;#39;t run that service, so a Rock Pi 4 on balena would have had every video upload rejected. The server now reads the device tree itself when nothing has been reported. That also covers a docker-compose install whose host service isn&amp;#39;t running. An arm64 board Anthias doesn&amp;#39;t recognize still has its video uploads rejected.&lt;/p&gt;</description></item><item><title>Anthias 2026.06.3: Anthias sends error reports to Sentry, and you can turn them off</title><link>https://www.screenly.io/releases/anthias/2026.06.3/error-reporting-sentry/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.06.3/error-reporting-sentry/</guid><pubDate>Tue, 09 Jun 2026 00:00:00 +0000</pubDate><category>release</category><description>&lt;p&gt;From Anthias 2026.06.3, the web interface, the background worker and the viewer report errors to Sentry. Reporting is on by default, and the reports go to a Sentry project whose address is built into Anthias, so the maintainers can see which boards and builds fail in the field. Several fixes in this release came from those reports.&lt;/p&gt;
&lt;h2 id="what-a-report-contains"&gt;What a report contains&lt;/h2&gt;
&lt;p&gt;A report is sent when one of these services hits an error it doesn&amp;#39;t handle, or logs a message at error level. Each one carries:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the error and its stack trace, including the values of the variables in the code where it happened&lt;/li&gt;
&lt;li&gt;recent log lines from the same service&lt;/li&gt;
&lt;li&gt;for an error in the web interface, the request that caused it: its address, its headers, and the form data it carried, with fields named like passwords or tokens removed&lt;/li&gt;
&lt;li&gt;the Anthias version and the build it came from&lt;/li&gt;
&lt;li&gt;the device type, such as &lt;code&gt;pi4-64&lt;/code&gt; or &lt;code&gt;x86&lt;/code&gt;, the kernel version and architecture, the board model on boards that have a device tree, and whether the device runs on balena&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By default a report from the web interface also includes the client&amp;#39;s IP address, the signed-in user, and the cookies and other headers that can identify someone. Set &lt;code&gt;analytics_opt_out&lt;/code&gt; to &lt;code&gt;True&lt;/code&gt; in &lt;code&gt;anthias.conf&lt;/code&gt;, the setting that also turns off the usage telemetry, and those are left out. The reports themselves are still sent.&lt;/p&gt;
&lt;p&gt;Errors that fix themselves aren&amp;#39;t reported, such as Redis restarting or a browser closing a request early.&lt;/p&gt;
&lt;h2 id="turn-it-off-or-send-it-elsewhere"&gt;Turn it off or send it elsewhere&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;SENTRY_DSN&lt;/code&gt; environment variable on the &lt;code&gt;anthias-server&lt;/code&gt;, &lt;code&gt;anthias-celery&lt;/code&gt; and &lt;code&gt;anthias-viewer&lt;/code&gt; containers decides where reports go. An empty value turns reporting off. The address (DSN) of your own Sentry project sends the reports there instead.&lt;/p&gt;
&lt;p&gt;On a docker-compose install, add &lt;code&gt;SENTRY_DSN=&lt;/code&gt; to the &lt;code&gt;environment&lt;/code&gt; list of those 3 services in &lt;code&gt;~/anthias/docker-compose.yml&lt;/code&gt; and recreate the containers. The upgrade script writes that file again from &lt;code&gt;docker-compose.yml.tmpl&lt;/code&gt; on every upgrade, so add the line again after you upgrade. On balena, set &lt;code&gt;SENTRY_DSN&lt;/code&gt; as a device variable in balenaCloud.&lt;/p&gt;</description></item><item><title>Anthias 2026.06.3: The web interface and background worker keep running, and tasks no longer fail after upgrades</title><link>https://www.screenly.io/releases/anthias/2026.06.3/server-startup-resilience/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.06.3/server-startup-resilience/</guid><pubDate>Tue, 09 Jun 2026 00:00:00 +0000</pubDate><category>fix</category><description>&lt;p&gt;Several things could stop the web interface or the background worker on a running device, or make tasks fail after every upgrade. Anthias 2026.06.3 fixes each of them.&lt;/p&gt;
&lt;h2 id="legacy-time-zone-names"&gt;Legacy time zone names&lt;/h2&gt;
&lt;p&gt;A device whose &lt;code&gt;/etc/timezone&lt;/code&gt; holds an older name such as &lt;code&gt;US/Central&lt;/code&gt; crash-looped the web interface and the worker at startup. These names work now, and the device keeps its local time: the images include the legacy time zone data. A name that still can&amp;#39;t be found falls back to UTC.&lt;/p&gt;
&lt;h2 id="unreadable-files-on-the-sd-card"&gt;Unreadable files on the SD card&lt;/h2&gt;
&lt;p&gt;If some of the web interface&amp;#39;s own files on the storage couldn&amp;#39;t be read, for example after file system damage, the web interface stopped at startup and restarted over and over. It now skips the files it can&amp;#39;t read, starts, and logs one error per boot so the fault stays visible.&lt;/p&gt;
&lt;h2 id="database-is-locked"&gt;&amp;quot;Database is locked&amp;quot;&lt;/h2&gt;
&lt;p&gt;The web interface, the background worker and the viewer share one SQLite database. A write from one of them could make another fail at once with a &lt;code&gt;database is locked&lt;/code&gt; error, for example when the viewer read its content list while the worker updated an item. They now wait up to 20 seconds for each other instead of failing, and reads no longer block writes. Databases from older installs switch over the first time they are opened. In this release the change also kept the viewer from noticing content you added or changed until it restarted. &lt;a href="https://www.screenly.io/releases/anthias/2026.07.0/fixes-and-improvements/"&gt;Anthias 2026.07.0&lt;/a&gt; fixes that.&lt;/p&gt;
&lt;h2 id="errors-after-an-upgrade-or-first-boot"&gt;Errors after an upgrade or first boot&lt;/h2&gt;
&lt;p&gt;The worker starts alongside the web interface, which may still be updating the database after an upgrade or on first boot. Tasks that ran in that window failed with &lt;code&gt;no such table: assets&lt;/code&gt;. The worker now waits until the database is ready, and logs a warning every 30 seconds while it does. Queued tasks stay queued and run once it starts.&lt;/p&gt;
&lt;p&gt;On docker-compose installs, the web interface, worker and viewer also wait for Redis to answer before they start.&lt;/p&gt;
&lt;h2 id="reachability-checks"&gt;Reachability checks&lt;/h2&gt;
&lt;p&gt;The worker checks whether content that lives at a web address can still be reached. A check that ran past 30 seconds, for example on a slow DNS lookup, was killed along with the worker process running it. A check now gets 60 seconds, and one that runs out of time marks the content as unreachable. Content on your local network, such as an intranet page or another container on the same player, was still marked unreachable and skipped until &lt;a href="https://www.screenly.io/releases/anthias/2026.07.0/fixes-and-improvements/"&gt;Anthias 2026.07.0&lt;/a&gt;; until then, &lt;code&gt;ANTHIAS_ALLOW_PRIVATE_FETCH=1&lt;/code&gt; on the server and worker lets it through.&lt;/p&gt;</description></item><item><title>Anthias 2026.06.3: The screen recovers when a web page stalls or the webview crashes</title><link>https://www.screenly.io/releases/anthias/2026.06.3/webview-recovery/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.06.3/webview-recovery/</guid><pubDate>Tue, 09 Jun 2026 00:00:00 +0000</pubDate><category>fix</category><description>&lt;p&gt;The viewer shows images, web pages and video through a separate webview process. When that process stalled or died, a screen could freeze, go dark, or restart the whole viewer container. Anthias 2026.06.3 fixes several ways that happened.&lt;/p&gt;
&lt;h2 id="a-page-that-stops-loading"&gt;A page that stops loading&lt;/h2&gt;
&lt;p&gt;If a web page&amp;#39;s connection stalled halfway, for example when Wi-Fi dropped without closing the connection, the screen stayed frozen on the previous content until the viewer container restarted. The webview now gives each page 30 seconds to finish loading. If it doesn&amp;#39;t, the load is canceled and the same page is requested again. A page that fails right away, such as when the network is down, is retried every 30 seconds too, so a playlist with a single web page recovers once the network is back.&lt;/p&gt;
&lt;p&gt;To change the 30 seconds, set &lt;code&gt;ANTHIAS_WEBPAGE_TIMEOUT_S&lt;/code&gt; in the viewer container&amp;#39;s environment. Values are held between 5 and 3600.&lt;/p&gt;
&lt;h2 id="a-webview-that-crashes"&gt;A webview that crashes&lt;/h2&gt;
&lt;p&gt;On the 32-bit Raspberry Pi 2 and Pi 3 image, the webview can crash while it starts. &lt;a href="https://www.screenly.io/releases/anthias/2026.06.1/fixes-and-improvements/"&gt;Anthias 2026.06.1&lt;/a&gt; retries the start, but a crash just after the start, or while the viewer was sending the webview an image or a web page, still restarted the viewer container. On the Raspberry Pi 4 and 5, x86 and arm64, where video plays inside the webview, a webview that died while starting or stopping a video left the screen dark until the next item.&lt;/p&gt;
&lt;p&gt;In all these cases the viewer now starts a new webview and sends the same item again. The new webview shows the current item straight away, including when the playlist has only one item, which before stayed blank.&lt;/p&gt;
&lt;h2 id="raspberry-pi-5-and-x86"&gt;Raspberry Pi 5 and x86&lt;/h2&gt;
&lt;p&gt;On the boards whose webview runs inside the &lt;code&gt;cage&lt;/code&gt; display server (Raspberry Pi 5, x86 and generic arm64 boards), the viewer could start the webview before the display server was ready, for example after the webview restarted. The webview then failed with &lt;code&gt;Failed to create wl_display&lt;/code&gt; on every attempt and the viewer container restarted. The viewer now waits for the display server first.&lt;/p&gt;</description></item><item><title>Anthias 2026.06.3: Fixes to video playback on Raspberry Pi 2 and Pi 3</title><link>https://www.screenly.io/releases/anthias/2026.06.3/pi-video-fit-and-looping/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.06.3/pi-video-fit-and-looping/</guid><pubDate>Tue, 09 Jun 2026 00:00:00 +0000</pubDate><category>fix</category><description>&lt;p&gt;&lt;a href="https://www.screenly.io/releases/anthias/2026.06.1/pi-2-and-pi-3-play-video/"&gt;Anthias 2026.06.1&lt;/a&gt; brought video back to the 32-bit Raspberry Pi 2 and Pi 3 image, and it played worse than it should in several ways. Anthias 2026.06.3 fixes them.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A portrait or 4:3 clip was stretched to fill the screen. It is now scaled to fit and centered, with black bars around it.&lt;/li&gt;
&lt;li&gt;A clip shorter than its time in the playlist restarts each time it ends, and every restart froze on the last frame for up to several seconds on a Pi 3, so the clip looked cut off or late. It now loops without a gap.&lt;/li&gt;
&lt;li&gt;Video at 50 or 60 frames per second stuttered, because these boards draw about 40 frames per second at 1080p. Such clips now play at an even 30 fps. Clips at 30 fps or lower play as they are.&lt;/li&gt;
&lt;li&gt;A clip whose sound couldn&amp;#39;t play, for example with HDMI audio turned off or an AC3 soundtrack, failed to play at all. It now plays without sound.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The 64-bit boards use a different video player and aren&amp;#39;t affected.&lt;/p&gt;</description></item><item><title>Anthias 2026.06.3: Video plays with sound on Raspberry Pi 4 and 5, x86 and arm64</title><link>https://www.screenly.io/releases/anthias/2026.06.3/video-audio-qt6/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.06.3/video-audio-qt6/</guid><pubDate>Tue, 09 Jun 2026 00:00:00 +0000</pubDate><category>fix</category><description>&lt;p&gt;If videos played with no sound on a Raspberry Pi 4 or 5, an x86 PC or another 64-bit ARM board, they have sound from Anthias 2026.06.3, including over HDMI on x86 PCs with common Intel, AMD and Nvidia audio hardware.&lt;/p&gt;
&lt;p&gt;The video player on these boards only plays sound through a PulseAudio sound server, and the viewer container didn&amp;#39;t run one. Now the viewer container starts its own PulseAudio server at boot, with one output for each sound card the container can see, named after the card, such as &lt;code&gt;alsa_output.vc4hdmi0.hdmi-stereo&lt;/code&gt;. On a Raspberry Pi 4, the &amp;quot;Audio output&amp;quot; setting still chooses between &amp;quot;HDMI&amp;quot; and &amp;quot;3.5mm jack&amp;quot;. On x86 and generic arm64 boards it has no effect until &lt;a href="https://www.screenly.io/releases/anthias/2026.07.4/audio-output-on-pcs-and-arm-boards/"&gt;Anthias 2026.07.4&lt;/a&gt;. After a reboot, sound could still go missing until &lt;a href="https://www.screenly.io/releases/anthias/2026.07.1/fixes-and-improvements/"&gt;Anthias 2026.07.1&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If a video is still silent, run &lt;code&gt;pactl list short sinks&lt;/code&gt; inside the viewer container to see which outputs PulseAudio found.&lt;/p&gt;
&lt;h2 id="x86-with-hdmi-audio"&gt;x86 with HDMI audio&lt;/h2&gt;
&lt;p&gt;On x86 with &amp;quot;Audio output&amp;quot; set to &amp;quot;HDMI&amp;quot;, the viewer asked for a sound device called &lt;code&gt;sysdefault:CARD=HID&lt;/code&gt;, which matches no card on common Intel, AMD and Nvidia audio hardware. It now uses &lt;code&gt;default&lt;/code&gt;, which is the PulseAudio default output. Generic arm64 boards already worked this way.&lt;/p&gt;</description></item><item><title>Anthias 2026.06.3: Play from and Play until accept 12-hour times, and other fixes</title><link>https://www.screenly.io/releases/anthias/2026.06.3/fixes-and-improvements/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.06.3/fixes-and-improvements/</guid><pubDate>Tue, 09 Jun 2026 00:00:00 +0000</pubDate><category>roundup</category><description>&lt;p&gt;There was no Anthias 2026.06.2 release. Its version number was set in the code but never released, so a device running a build made between 2026.06.1 and this release can report its version as 2026.06.2. This release includes everything since 2026.06.1.&lt;/p&gt;
&lt;h2 id="fixes"&gt;Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Saving an item&amp;#39;s &amp;quot;Play from&amp;quot; and &amp;quot;Play until&amp;quot; times in the &amp;quot;Edit asset&amp;quot; window failed with the default 12-hour clock, when &amp;quot;Use 24-hour clock&amp;quot; is off. Times like &amp;quot;02:30 PM&amp;quot; save now. A time that can&amp;#39;t be read shows an error message instead of failing, and filling in only one of the 2 times shows a message and saves nothing. Before, it cleared the item&amp;#39;s existing time window.&lt;/li&gt;
&lt;li&gt;On the 32-bit Raspberry Pi 2 and Pi 3 image, HEIC, HEIF, TIFF, BMP, ICO and TGA image uploads failed to convert, with &lt;code&gt;KeyError: 'WEBP'&lt;/code&gt; in the log. They convert now.&lt;/li&gt;
&lt;li&gt;A 60 fps video on a Raspberry Pi 4 played slower than real time, at about 0.6 times normal speed in the project&amp;#39;s testing, so the end of a clip could be cut off. The viewer now drops frames evenly when the screen can&amp;#39;t keep up, which plays a 60 fps clip at about 30 fps. This applies to every board with the Qt 6 viewer. Each line of &lt;code&gt;playback-stats.log&lt;/code&gt; gains a &lt;code&gt;frames-forwarded&lt;/code&gt; field between &lt;code&gt;frames-delivered&lt;/code&gt; and &lt;code&gt;frames-rendered&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The &amp;quot;Display Power (CEC)&amp;quot; card on the System Info page showed None even when the display answered the power query. It now shows &lt;code&gt;True&lt;/code&gt; or &lt;code&gt;False&lt;/code&gt; where the CEC adapter can be reached. On a Raspberry Pi 2, 3 or 4 the card still showed &amp;quot;CEC error&amp;quot; until &lt;a href="https://www.screenly.io/releases/anthias/2026.08.1/hdmi-cec-rewrite/"&gt;Anthias 2026.08.1&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Redis now keeps its data when its container is recreated, as it is on every upgrade. Before, it started empty each time, and the ID the usage telemetry uses for the device was lost, so an upgraded device was counted as a new one.&lt;/li&gt;
&lt;li&gt;A device that can&amp;#39;t reach GitHub to check for a new Anthias release logs a warning instead of an error, and the warning gives the reason, such as a read timeout, instead of &amp;quot;no data&amp;quot;.&lt;/li&gt;
&lt;li&gt;When the webview exits, including when the viewer stops it, the viewer no longer logs a crash report for it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="improvements"&gt;Improvements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;When Anthias rejects a video upload, the &amp;quot;Edit asset&amp;quot; window now also lists steps for converting it in HandBrake, a free app for Windows, macOS and Linux, next to the &lt;code&gt;ffmpeg&lt;/code&gt; command. The steps use HandBrake&amp;#39;s &amp;quot;Fast 1080p30&amp;quot; preset, and on a Raspberry Pi 5, which only plays HEVC, they add a switch to the H.265 encoder.&lt;/li&gt;
&lt;li&gt;Backups from Settings &amp;gt; Backup &amp;amp; restore &amp;gt; &amp;quot;Get backup&amp;quot; and from the API use a faster gzip setting. Most of a backup is video and images that are already compressed, so the archive is about the same size. On a large library the download still doesn&amp;#39;t start until the archive is built and can time out. &lt;a href="https://www.screenly.io/releases/anthias/2026.07.0/fixes-and-improvements/"&gt;Anthias 2026.07.0&lt;/a&gt; fixes that.&lt;/li&gt;
&lt;li&gt;Devices on the official balena fleets that were flashed from an old disk image stayed pinned to the release inside it and never received updates. An hourly job now removes that pin, except on devices tagged &lt;code&gt;anthias_keep_pinned&lt;/code&gt;. The same job updates balenaOS on up to 5 percent of each fleet&amp;#39;s online devices per run, and moves devices already on the latest balenaOS to the newest balena supervisor.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="for-contributors"&gt;For contributors&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Docker image builds pull the BuildKit frontend through &lt;code&gt;mirror.gcr.io&lt;/code&gt; instead of Docker Hub, so builds no longer fail on Docker Hub timeouts.&lt;/li&gt;
&lt;li&gt;The Docker build matrix, the image builder and the balena workflows include &lt;code&gt;pi3-64&lt;/code&gt;, and the balena workflows include &lt;code&gt;rockpi4&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The SBOM workflow works again, and the README&amp;#39;s SBOM badge links to the Anthias page on trust.screenly.io.&lt;/li&gt;
&lt;li&gt;The development and test compose files wait for Redis to answer before starting the other services. The test stack&amp;#39;s worker runs with the test environment, so it uses the test database and doesn&amp;#39;t send error reports.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;uv.lock&lt;/code&gt; matches the &lt;code&gt;pyproject.toml&lt;/code&gt; pins again, so &lt;code&gt;uv lock --check&lt;/code&gt; passes on a clean checkout.&lt;/li&gt;
&lt;li&gt;New tests cover the error report filtering, the database settings, time zone handling, static files, the backup download, webview recovery and the Pi 2 and Pi 3 video player.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dependency updates also went in, among them uvicorn, the web server, from 0.32.1 to 0.49.0, plus GitHub Actions and Python development tools.&lt;/p&gt;</description></item></channel></rss>