<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Anthias 2026.09.0 | Screenly</title><description>Large uploads work behind proxies such as Cloudflare, files dropped anywhere on Schedule Overview upload, upgrades clear out old versions to free space, and players recover on their own when memory runs out. With sign-in turned on, scripts that listen for live updates have to sign in.</description><link>https://www.screenly.io/releases/anthias/2026.09.0/</link><language>en</language><atom:link href="https://www.screenly.io/releases/anthias/2026.09.0/rss.xml" rel="self" type="application/rss+xml"/><lastBuildDate>Tue, 22 Sep 2026 00:00:00 +0000</lastBuildDate><item><title>Anthias 2026.09.0: Large uploads work behind a proxy, and a failed upload says why</title><link>https://www.screenly.io/releases/anthias/2026.09.0/large-uploads-behind-a-proxy/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.09.0/large-uploads-behind-a-proxy/</guid><pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate><category>improvement</category><description>&lt;p&gt;Put Anthias behind a reverse proxy or a tunnel and large videos used to fail to upload, even though
everything else worked. Anthias puts no limit on how big an upload can be, but the proxy usually
does: Cloudflare&amp;#39;s Free and Pro plans, for example, cap a request at 100 MB, which a few minutes of
video clears easily. From Anthias 2026.09.0, Add asset &amp;gt; Upload file sends a file larger than
16 MiB in 16 MiB pieces, one after another, and the device puts them back together. Each piece
clears the proxy on its own. Smaller files upload in one request, as before.&lt;/p&gt;
&lt;p&gt;A piece that fails on a dropped connection or a server error is sent again, up to 2 more times, so
one hiccup doesn&amp;#39;t throw away an upload you&amp;#39;ve been waiting on. A file Anthias won&amp;#39;t accept, such
as an unsupported type, is refused on the first piece rather than after the whole file has gone
up. An upload you abandon halfway is cleaned up once it has sat for an hour without a new piece.&lt;/p&gt;
&lt;h2 id="changing-the-piece-size"&gt;Changing the piece size&lt;/h2&gt;
&lt;p&gt;If your proxy&amp;#39;s limit is lower than 16 MiB, ask for smaller pieces. Add &lt;code&gt;upload_chunk_size_mb&lt;/code&gt;
under &lt;code&gt;[main]&lt;/code&gt; in &lt;code&gt;~/.anthias/anthias.conf&lt;/code&gt;, which survives upgrades, and restart Anthias. On
balena, set the &lt;code&gt;ANTHIAS_UPLOAD_CHUNK_SIZE_MB&lt;/code&gt; device variable in the dashboard instead. If both
are set, &lt;code&gt;anthias.conf&lt;/code&gt; wins.&lt;/p&gt;
&lt;p&gt;The value is in MiB (1 MiB is 1,048,576 bytes), from 1 to 24. A value outside that range is moved
to the nearest limit, a decimal is rounded down, so 8.5 becomes 8, and anything that isn&amp;#39;t a number
is ignored in favor of the default of 16. Each request carries a little more than the piece itself,
so leave some room under your proxy&amp;#39;s limit.&lt;/p&gt;
&lt;h2 id="a-failed-upload-says-why"&gt;A failed upload says why&lt;/h2&gt;
&lt;p&gt;Before, almost every upload failure showed the same generic message, asking you to check the file
and try again. Now the message points at the cause:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A file the server or a proxy refuses as too large says it exceeds the upload size limit of the
server or a proxy in front of it, so you know to look at the proxy rather than the file.&lt;/li&gt;
&lt;li&gt;If a proxy refuses even a single piece, the message tells you to lower the upload chunk size.&lt;/li&gt;
&lt;li&gt;A connection that drops mid-transfer says so, and suggests a smaller file too, because some
browsers report a proxy&amp;#39;s size refusal as a dropped connection.&lt;/li&gt;
&lt;li&gt;If the last piece went up and no reply came back, the message says the upload may have finished
and to check the asset list before uploading again, since a second attempt would make a
duplicate.&lt;/li&gt;
&lt;li&gt;A page that has gone stale asks you to reload it and try again.&lt;/li&gt;
&lt;li&gt;A server error points you to the device logs.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="for-developers"&gt;For developers&lt;/h2&gt;
&lt;p&gt;Uploads through the API, &lt;code&gt;POST /api/v1/file_asset&lt;/code&gt; and &lt;code&gt;POST /api/v2/file_asset&lt;/code&gt;, are written to
disk as they arrive instead of being read into memory first. The content endpoints in API v1 and v2
(&lt;code&gt;assets/&amp;lt;id&amp;gt;/content&lt;/code&gt;) stream their response too, where they used to hold several copies of the
file in memory. In the project&amp;#39;s testing on a Raspberry Pi 3 B+, fetching a 150 MB asset through
the content endpoint ran the server out of memory, and the API stayed down for about 40 seconds
while it restarted. After the change, the same request added about 12 MB to the server&amp;#39;s memory.&lt;/p&gt;
&lt;p&gt;The content endpoints return the same JSON as before, with the file as base64 in &lt;code&gt;content&lt;/code&gt;. For
file assets the response is now always &lt;code&gt;application/json&lt;/code&gt;, so the browsable API page no longer
renders them.&lt;/p&gt;</description></item><item><title>Anthias 2026.09.0: Files dropped anywhere on Schedule Overview upload</title><link>https://www.screenly.io/releases/anthias/2026.09.0/drop-files-anywhere-on-schedule-overview/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.09.0/drop-files-anywhere-on-schedule-overview/</guid><pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate><category>improvement</category><description>&lt;p&gt;From Anthias 2026.09.0, you can drag images and videos from your desktop and drop them anywhere on
Schedule Overview, including the asset list, the navigation bar and the margins, and they upload.
Until now only the upload area inside Add asset took a drop. A file dropped anywhere else made the
browser open the file itself and leave the page.&lt;/p&gt;
&lt;p&gt;While you drag, the page shows &amp;quot;Drop to upload&amp;quot;. When you let go, Add asset opens on Upload file
and shows the progress there, &amp;quot;File 2 of 5&amp;quot; for example, then closes when the last file is in. If
a batch is already uploading, the page says &amp;quot;Upload already in progress&amp;quot; instead, and you can drop
the new files once it finishes. While another dialog is open, such as Edit asset or a preview, a
drop doesn&amp;#39;t upload, and a message asks you to close the dialog first.&lt;/p&gt;</description></item><item><title>Anthias 2026.09.0: Live updates in the web interface need a signed-in session</title><link>https://www.screenly.io/releases/anthias/2026.09.0/live-updates-need-a-signed-in-session/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.09.0/live-updates-need-a-signed-in-session/</guid><pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate><category>security</category><description>&lt;p&gt;If you only use the web interface in a browser, nothing changes for you. This only matters if you
turned on authentication and run a script or dashboard of your own that listens for the web
interface&amp;#39;s live updates: from Anthias 2026.09.0, it has to sign in first.&lt;/p&gt;
&lt;p&gt;The web interface keeps the asset list current through a WebSocket connection at &lt;code&gt;/ws&lt;/code&gt;. When
authentication is turned on, Anthias 2026.09.0 accepts that connection only from a browser with a
signed-in session, the same rule every page of the web interface already follows. A browser you
use the web interface in is already signed in, so nothing changes there. If you run Anthias without
authentication, which is the default, &lt;code&gt;/ws&lt;/code&gt; stays open as before.&lt;/p&gt;
&lt;p&gt;Turning authentication on or off, or changing the username or password, closes the open
connections. The web interface reconnects by itself and has to pass the new settings to get back
in.&lt;/p&gt;
&lt;p&gt;If you run Anthias with authentication on, upgrade to get this.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;If this affects you:&lt;/strong&gt; with authentication on, a script, dashboard or other client that opens
&lt;code&gt;/ws&lt;/code&gt; without signing in is refused from 2026.09.0, with a 403 at the handshake. Username and
password sent as HTTP Basic credentials aren&amp;#39;t accepted on &lt;code&gt;/ws&lt;/code&gt; either, even though the API
still takes them. Sign in through the web interface&amp;#39;s login page and send the session cookie you
get with the handshake.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Anthias 2026.09.0: Backups carry only what Anthias needs, and restores check the version</title><link>https://www.screenly.io/releases/anthias/2026.09.0/backups-and-restores/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.09.0/backups-and-restores/</guid><pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate><category>improvement</category><description>&lt;p&gt;A backup you download from the Settings page now holds your settings and content and leaves out
half-finished uploads, and a restore stops before changing anything if the backup&amp;#39;s database is
newer than the player can read. If you turned on HTTPS, keep your own copy of its certificate,
because backups no longer include it.&lt;/p&gt;
&lt;p&gt;From Anthias 2026.09.0, &amp;quot;Get backup&amp;quot; and &amp;quot;Upload &amp;amp; recover&amp;quot;, under Backup &amp;amp; restore on the Settings
page, work only with what Anthias runs on: the settings file &lt;code&gt;anthias.conf&lt;/code&gt;, the database, the
&lt;code&gt;backups&lt;/code&gt; folder of database dumps, the default assets list and your content. Before, a backup took
everything in &lt;code&gt;~/.anthias&lt;/code&gt; and &lt;code&gt;~/anthias_assets&lt;/code&gt;. Other files that sit in &lt;code&gt;~/.anthias&lt;/code&gt;, such as
the certificate and key that &lt;code&gt;bin/enable_ssl.sh&lt;/code&gt; installs in &lt;code&gt;~/.anthias/ssl&lt;/code&gt;, are no longer put in
a backup, and a restore won&amp;#39;t write them back. If you rely on those, keep your own copy.&lt;/p&gt;
&lt;p&gt;Half-finished uploads and downloads in the content folder are left out too. They can be gigabytes
of something nobody finished sending, and they only made the archive bigger.&lt;/p&gt;
&lt;h2 id="restores-check-the-version"&gt;Restores check the version&lt;/h2&gt;
&lt;p&gt;Each backup now records the Anthias release and the version of the database it came from. A backup
whose database is newer than the restoring Anthias understands is refused before anything is
written, with a message to upgrade Anthias to at least the release that made it. A backup from an
older version restores, and its database is brought up to date right after. Backups made before
2026.09.0 carry no version, so they count as older and still restore.&lt;/p&gt;</description></item><item><title>Anthias 2026.09.0: Upgrades remove the old Anthias images they replace</title><link>https://www.screenly.io/releases/anthias/2026.09.0/upgrades-remove-old-images/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.09.0/upgrades-remove-old-images/</guid><pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate><category>improvement</category><description>&lt;p&gt;Every upgrade pulls a fresh image for each Anthias service, and until now it left the previous ones
on the card. The installer&amp;#39;s cleanup only removed untagged layers, so the old tagged images stayed,
and a device that had upgraded a handful of times carried several full copies of Anthias. One
person who asked for a fix found the last 6 releases taking about 16 GB on their devices. Removing
them took the cards from 76% full to 26%.&lt;/p&gt;
&lt;p&gt;From Anthias 2026.09.0, the installer and &lt;code&gt;bin/upgrade_containers.sh&lt;/code&gt; remove the old images as their
last step, once the new containers are running. If the pull or the start fails, the old images stay
in place to fall back on.&lt;/p&gt;
&lt;p&gt;Only Anthias images are removed (&lt;code&gt;ghcr.io/screenly/anthias-*&lt;/code&gt;, plus the older &lt;code&gt;screenly/anthias-*&lt;/code&gt;
and &lt;code&gt;screenly/srly-ose-*&lt;/code&gt; names), and only those no container uses, running or stopped. Tagged
images for other containers you run on the same machine are left alone. Untagged leftovers, which
nothing can use, are pruned as the installer already did. Each removal is printed as &amp;quot;Reclaimed
superseded image&amp;quot; followed by the image name, and a device with nothing to clean prints nothing.&lt;/p&gt;
&lt;p&gt;To clear the leftovers from earlier releases without waiting for the next upgrade, run
&lt;code&gt;~/anthias/bin/purge_stale_images.sh&lt;/code&gt;. It&amp;#39;s safe to run at any time.&lt;/p&gt;</description></item><item><title>Anthias 2026.09.0: Boards recover on their own when memory runs out or the system hangs</title><link>https://www.screenly.io/releases/anthias/2026.09.0/recovery-from-memory-exhaustion/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.09.0/recovery-from-memory-exhaustion/</guid><pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate><category>improvement</category><description>&lt;p&gt;On a board short of memory, the screen could freeze, or the whole board could stop responding
until someone power cycled it. Anthias 2026.09.0 changes how both cases end.&lt;/p&gt;
&lt;h2 id="running-out-of-memory"&gt;Running out of memory&lt;/h2&gt;
&lt;p&gt;When memory runs out, the viewer container is meant to be what the system stops, because Docker
then restarts it clean. Before, only the small script that starts the viewer was marked to go
first, and stopping it freed almost nothing. In the project&amp;#39;s testing on a 2 GB board with an
RK3566 chip, the system stopped that script twice in a row, got back less than 200 KB each time,
and still had to stop something else. Every process in the viewer container is now marked, so the first thing
stopped is the viewer itself, and in the same test that freed about 100 MB at once.&lt;/p&gt;
&lt;h2 id="a-board-that-stops-responding"&gt;A board that stops responding&lt;/h2&gt;
&lt;p&gt;When you install or upgrade with the installer, it now sets up systemd&amp;#39;s watchdog with a 30 second
timeout, so a board whose system hangs reboots by itself. Which watchdog it uses depends on the
board:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Raspberry Pi boards use the Pi&amp;#39;s hardware watchdog. Raspberry Pi OS already had it switched on
with a 1 minute timeout, and Armbian and Debian ship it off.&lt;/li&gt;
&lt;li&gt;On x86, any hardware watchdog the machine exposes is used, and the kernel&amp;#39;s software watchdog
otherwise.&lt;/li&gt;
&lt;li&gt;Other boards, such as the Rock Pi 4 and the NanoPi R3S, use the software watchdog. In the
project&amp;#39;s testing, the hardware watchdog on both of those boards halted the board instead of
restarting it, and it stayed dark until someone power cycled it. The software watchdog
restarted the Rock Pi 4 within about 30 seconds.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A board with no watchdog that can restart it gets the watchdog switched off explicitly, rather than
left to the system default. A reboot that hangs while shutting down is forced through after 5
minutes.&lt;/p&gt;</description></item><item><title>Anthias 2026.09.0: Less black screen when a video gives way to an image, and other fixes</title><link>https://www.screenly.io/releases/anthias/2026.09.0/fixes-and-improvements/</link><guid isPermaLink="true">https://www.screenly.io/releases/anthias/2026.09.0/fixes-and-improvements/</guid><pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate><category>roundup</category><description>&lt;h2 id="fixes"&gt;Fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Add asset opens with an empty form every time. The URL of the last web asset you added no longer
sits in the box, one press of Enter away from a duplicate, and the Apps tab starts from the list
of apps instead of the last app&amp;#39;s form.&lt;/li&gt;
&lt;li&gt;The Actions column in the asset table fits its buttons, so the icons no longer spill past the
edge of the table.&lt;/li&gt;
&lt;li&gt;Going from a video or a web page to an image shows less black screen. While the image loads, the
screen holds the last image Anthias showed instead of going black.&lt;/li&gt;
&lt;li&gt;On Docker Compose installs of boards other than the Raspberry Pi, System info shows the board&amp;#39;s
name, such as FriendlyElec NanoPi R3S LTS, instead of &amp;quot;Generic aarch64 Device&amp;quot;. The
&lt;code&gt;device_model&lt;/code&gt; field of &lt;code&gt;/api/v2/info&lt;/code&gt;, which was empty on these boards, now has the name too.&lt;/li&gt;
&lt;li&gt;When Anthias can&amp;#39;t identify the board and so can&amp;#39;t check a video&amp;#39;s codec, the upload message
says what to check: on Docker Compose installs, that &lt;code&gt;anthias-host-agent&lt;/code&gt; and Redis are running.
It used to tell you to re-flash with a board-specific image that doesn&amp;#39;t exist.&lt;/li&gt;
&lt;li&gt;Installing on Raspberry Pi OS Trixie no longer fills the output with Ansible deprecation
warnings.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="for-contributors"&gt;For contributors&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The Ansible playbook reads gathered facts through &lt;code&gt;ansible_facts&lt;/code&gt;, and the new
&lt;code&gt;ansible/ansible.cfg&lt;/code&gt; sets &lt;code&gt;inject_facts_as_vars = False&lt;/code&gt;, so a bare fact reference fails
instead of slipping back in. That file takes precedence over &lt;code&gt;/etc/ansible/ansible.cfg&lt;/code&gt; when the
installer runs the playbook.&lt;/li&gt;
&lt;li&gt;New tests cover chunked uploads and their error messages, page-wide drag and drop, and the Add
asset reset. A fake &lt;code&gt;docker&lt;/code&gt; command tests the image cleanup, and an Ansible test runs the
watchdog selection against made-up sysfs trees, which is how the x86 case is covered.&lt;/li&gt;
&lt;li&gt;The repository has an MJML newsletter template in &lt;code&gt;emails/&lt;/code&gt;, with a CI job that validates it and
checks the compiled size against Gmail&amp;#39;s clipping limit.&lt;/li&gt;
&lt;li&gt;The Anthias website adds pages on free digital signage software and on Yodeck and piSignage,
expands the Raspberry Pi pages, and links to the Screenly shop for buying a player.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Django moves from 5.2.14 to 5.2.17, which brings its upstream security fixes, along with the usual
Python, JavaScript and GitHub Actions dependency updates.&lt;/p&gt;</description></item></channel></rss>