{"product":"anthias","releases":[{"date":"2026-08-05","entries":[{"areas":[],"breaking":false,"content_html":"\u003cp\u003eIf your network only lets a player out through an HTTP proxy, Anthias 2026.08.0 can now be installed and run there. The installer asks for the proxy and sets it up for you. If your player reaches the internet directly, leave that question blank and nothing changes.\u003c/p\u003e\n\u003cp\u003eBefore, someone running Anthias on a PC behind a proxy had to set it by hand for the installer, apt, Docker, the host agent and the containers, one at a time, and a hand-written bypass list could cut the viewer off from the server and blank the screen.\u003c/p\u003e\n\u003ch2 id=\"setting-a-proxy\"\u003eSetting a proxy\u003c/h2\u003e\n\u003cp\u003eRun the installer as usual. It now asks for a proxy URL, for example \u003ccode\u003ehttp://proxy.example.com:3128\u003c/code\u003e, and then for any hosts on your network that should skip the proxy. The one URL is used for both HTTP and HTTPS. Leave the first question blank if the player has direct internet access.\u003c/p\u003e\n\u003cp\u003eIf you export \u003ccode\u003eHTTP_PROXY\u003c/code\u003e, \u003ccode\u003eHTTPS_PROXY\u003c/code\u003e and \u003ccode\u003eNO_PROXY\u003c/code\u003e (upper or lower case) before you run the installer, the questions start with those values. On a host that doesn\u0026#39;t have \u003ccode\u003ewhiptail\u003c/code\u003e yet, the questions can\u0026#39;t appear, so export the variables first.\u003c/p\u003e\n\u003cp\u003eThe installer asks every time it runs, and it doesn\u0026#39;t fill in the proxy you gave it last time. When you run it again to upgrade, enter the proxy again or export it first. If you leave the question blank, the installer takes the proxy back out.\u003c/p\u003e\n\u003ch2 id=\"where-the-proxy-applies\"\u003eWhere the proxy applies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe installer\u0026#39;s own downloads and the Ansible steps it runs.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eapt\u003c/code\u003e, through \u003ccode\u003e/etc/apt/apt.conf.d/00anthias-proxy\u003c/code\u003e, so your own \u003ccode\u003eapt\u003c/code\u003e runs on the player stay proxied afterward.\u003c/li\u003e\n\u003cli\u003eThe Docker daemon, so it can pull the Anthias images. This adds a systemd drop-in at \u003ccode\u003e/etc/systemd/system/docker.service.d/http-proxy.conf\u003c/code\u003e and restarts Docker.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eanthias-host-agent\u003c/code\u003e service.\u003c/li\u003e\n\u003cli\u003eThe server, viewer and Celery containers, including the web pages the viewer shows on screen.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAnthias keeps the values in \u003ccode\u003e/etc/anthias/proxy.env\u003c/code\u003e. A proxy URL can carry a username and password, so the file is readable only by root and the Anthias user\u0026#39;s group. The installer rewrites it on every run, and it always adds \u003ccode\u003elocalhost\u003c/code\u003e, \u003ccode\u003e127.0.0.1\u003c/code\u003e, \u003ccode\u003e::1\u003c/code\u003e, \u003ccode\u003eanthias-server\u003c/code\u003e and \u003ccode\u003eredis\u003c/code\u003e to the bypass list, so traffic between the Anthias containers never goes through your proxy.\u003c/p\u003e\n\u003cp\u003eTo change the proxy, run the installer again with the new value. To remove it, run the installer with the question left blank and nothing exported: it deletes \u003ccode\u003eproxy.env\u003c/code\u003e, the apt setting and the Docker drop-in.\u003c/p\u003e\n\u003cp\u003eThe balena images don\u0026#39;t use the installer, and this release doesn\u0026#39;t cover them.\u003c/p\u003e\n","description":"A player whose only way out is an HTTP proxy can now be installed and kept running. The installer asks for the proxy and sets it up everywhere Anthias needs it, so you no longer configure apt, Docker and each container by hand.","title":"Anthias installs and runs behind an HTTP proxy","type":"release","url":"https://www.screenly.io/releases/anthias/2026.08.0/http-proxy-support/"},{"areas":[],"breaking":false,"content_html":"\u003cp\u003eIf your TV switches on after the player has started, for example on a power timer, the screen could stay on \u0026quot;No Signal\u0026quot; until someone rebooted the player. From Anthias 2026.08.0 the picture comes up on its own after a short wait. It affects a Raspberry Pi 5, an x86 PC or a board running the generic arm64 image, and there\u0026#39;s nothing to set.\u003c/p\u003e\n\u003cp\u003eOn those boards, a player that booted while its TV was off stayed on \u0026quot;No Signal\u0026quot; after the TV came on. The only way out was to restart the viewer container or reboot the player. Anthias 2026.07.2 \u003ca href=\"/releases/anthias/2026.07.2/fixes-and-improvements/\"\u003eadded a check\u003c/a\u003e that restarts the viewer when a display turns up after boot, but it only acted once the display had reported its resolutions to the player. A TV that was plugged in but off at boot never got that far, so the check never fired. From Anthias 2026.08.0 it acts on any connected display that has no picture: after 60 seconds, the viewer container restarts so the display is detected again. In the project\u0026#39;s testing on a Pi 5, the first restart brought the picture back, about 70 seconds after the display was connected.\u003c/p\u003e\n\u003cp\u003eThe restarts are capped at 3 per boot. A display that never answers, such as one on a faulty cable, gets 3 attempts. Then the viewer logs that it gave up and stops restarting, so a failed screen can\u0026#39;t keep the viewer cycling all night. The count starts over when the display comes up, when it\u0026#39;s unplugged, or when the player reboots.\u003c/p\u003e\n\u003cp\u003eThe Raspberry Pi 2, 3 and 4 images use a different display path, and this change doesn\u0026#39;t affect them.\u003c/p\u003e\n","description":"A Raspberry Pi 5, x86 or generic arm64 player that booted while its TV was off now brings the picture up on its own once the TV comes on, instead of staying on No Signal.","title":"A TV switched on after the player boots gets a picture on Raspberry Pi 5 and x86","type":"fix","url":"https://www.screenly.io/releases/anthias/2026.08.0/display-recovers-after-late-power-on/"},{"areas":[],"breaking":false,"content_html":"\u003cp\u003eA phone or camera usually saves a portrait photo as a landscape image, with a tag that says to turn it 90 degrees when it\u0026#39;s shown. Anthias ignored that tag on JPEG and AVIF files, so those photos appeared sideways on the screen.\u003c/p\u003e\n\u003cp\u003eFrom Anthias 2026.08.0 they display upright:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA JPEG is turned by the viewer as it draws the photo, so JPEGs you uploaded before the upgrade come out upright too.\u003c/li\u003e\n\u003cli\u003eAn AVIF photo is turned while Anthias converts it to WebP on upload. An AVIF you uploaded before the upgrade was converted sideways and stays that way, so upload it again.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eHEIC photos, the format an iPhone saves, and TIFF files already displayed upright.\u003c/p\u003e\n","description":"Portrait JPEG and AVIF photos no longer show up sideways on the screen, and JPEGs you uploaded before the upgrade are fixed too.","title":"Portrait photos from a phone or camera display upright","type":"fix","url":"https://www.screenly.io/releases/anthias/2026.08.0/portrait-photos-display-upright/"},{"areas":[],"breaking":false,"content_html":"\u003cp\u003eIf your Anthias player is a PC rather than a Raspberry Pi, web pages could go missing from its playlist after it was switched on, while images and videos kept playing. Upgrading to Anthias 2026.08.0 with the installer fixes it. On a Debian 13 PC installed from the netinst image, read the known problem below before you run the installer.\u003c/p\u003e\n\u003cp\u003eOn some x86 players, web pages and other URL content were skipped after a cold boot, while images and videos stored on the player played fine. The viewer log showed \u003ccode\u003eAsset ... is not available, skipping\u003c/code\u003e, and only restarting Docker or the Anthias containers brought the content back, until the next reboot.\u003c/p\u003e\n\u003cp\u003eThe containers could start before the player had its DNS servers, and they kept that empty DNS setup until they were recreated. The project reproduced it on Debian 13, on a PC whose network card is set up by Debian\u0026#39;s own network configuration rather than NetworkManager.\u003c/p\u003e\n\u003cp\u003eFrom Anthias 2026.08.0, the installer sets up \u003ccode\u003esystemd-resolved\u003c/code\u003e on x86 and makes \u003ccode\u003e/etc/resolv.conf\u003c/code\u003e a link to \u003ccode\u003e/run/systemd/resolve/stub-resolv.conf\u003c/code\u003e, a local resolver at \u003ccode\u003e127.0.0.53\u003c/code\u003e that the containers can always reach. Run the installer to upgrade and the change is made. Raspberry Pi and arm64 installs don\u0026#39;t get it.\u003c/p\u003e\n\u003cp\u003eThe installer makes this change even if you chose not to let Anthias manage the network, and it replaces an \u003ccode\u003e/etc/resolv.conf\u003c/code\u003e you manage yourself.\u003c/p\u003e\n\u003ch2 id=\"known-problem-dns-can-stop-while-the-installer-runs\"\u003eKnown problem: DNS can stop while the installer runs\u003c/h2\u003e\n\u003cp\u003eOn a Debian 13 PC installed from the netinst image, where \u003ccode\u003edhcpcd\u003c/code\u003e sets up the network, the switch to \u003ccode\u003esystemd-resolved\u003c/code\u003e can leave the player with no working DNS. The installer then stops at its next download with \u003ccode\u003eTemporary failure in name resolution\u003c/code\u003e. In the project\u0026#39;s testing, name lookups on such a PC also stopped again some minutes after a reboot. The installer still does this as of Anthias 2026.10.0.\u003c/p\u003e\n\u003cp\u003eBefore you run the installer on such a PC, give \u003ccode\u003esystemd-resolved\u003c/code\u003e a fallback DNS server, such as your router\u0026#39;s address:\u003c/p\u003e\n\u003cdiv class=\"code-block\"\u003e\n  \u003cbutton type=\"button\" class=\"code-copy\" aria-label=\"Copy code\" data-copy-code\u003e\n    \u003csvg data-copy viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"\u003e\n      \u003crect x=\"9\" y=\"9\" width=\"11\" height=\"11\" rx=\"2\"\u003e\u003c/rect\u003e\n      \u003cpath d=\"M5 15V5a2 2 0 0 1 2-2h10\"\u003e\u003c/path\u003e\n    \u003c/svg\u003e\n    \u003csvg data-check viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"\u003e\n      \u003cpath d=\"M20 6 9 17l-5-5\"\u003e\u003c/path\u003e\n    \u003c/svg\u003e\n  \u003c/button\u003e\n  \u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#d0d0d0;background-color:#202020;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo mkdir -p /etc/systemd/resolved.conf.d\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#24909d\"\u003eprintf\u003c/span\u003e \u003cspan style=\"color:#ed9d13\"\u003e\u0026#39;[Resolve]\\nFallbackDNS=\u0026lt;your router IP\u0026gt;\\n\u0026#39;\u003c/span\u003e | sudo tee /etc/systemd/resolved.conf.d/99-fallback.conf\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003c/div\u003e\n\u003cp\u003eIf the installer already stopped, do the same, run \u003ccode\u003esudo systemctl restart systemd-resolved\u003c/code\u003e, and run the installer again.\u003c/p\u003e\n","description":"On x86 players, web pages and other URL content no longer get skipped after a cold boot until Docker is restarted. On some Debian 13 PCs the change can break DNS while the installer runs, so read the known problem first.","title":"URL and web page content loads after a cold boot on x86","type":"fix","url":"https://www.screenly.io/releases/anthias/2026.08.0/url-content-after-cold-boot-on-x86/"},{"areas":[],"breaking":false,"content_html":"\u003ch2 id=\"fixes\"\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOn boards with less than 1.5 GB of RAM, such as the Raspberry Pi 2 and 3, a HEIC, TIFF, AVIF or other photo that Anthias converts to WebP on upload is first shrunk to fit within the pixel count of 1920x1080, keeping its shape. In the project\u0026#39;s testing, a 24 megapixel photo used more memory than the board could give the conversion, and the board rebooted. JPEG and PNG uploads \u003ca href=\"/releases/anthias/2026.08.1/large-jpeg-png-low-ram-boards/\"\u003egot the same treatment in Anthias 2026.08.1\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eOn a Raspberry Pi, running the installer from the player\u0026#39;s own screen and keyboard blanked the screen partway through and removed the login prompt, which left you locked out if SSH was off. This happened since Anthias 2026.05.1. The install now finishes on screen, and the login prompt is still gone after the reboot at the end, as intended.\u003c/li\u003e\n\u003cli\u003eWhile the web interface was open, the server logged a Redis timeout and an \u003ccode\u003eException in ASGI application\u003c/code\u003e error about every 5 seconds. It no longer does.\u003c/li\u003e\n\u003cli\u003eThe API\u0026#39;s \u003ccode\u003efile_asset\u003c/code\u003e, \u003ccode\u003erecover\u003c/code\u003e and \u003ccode\u003eassets/order\u003c/code\u003e endpoints answer a request body that\u0026#39;s a JSON list instead of an object with a \u003ccode\u003e400\u003c/code\u003e response, instead of a \u003ccode\u003e500\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRunning the Ansible playbook yourself on a PC or other board that isn\u0026#39;t a Raspberry Pi no longer fails at the step that writes the Raspberry Pi boot settings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"improvements\"\u003eImprovements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen the installer is about to discard your edits to files tracked in the Anthias checkout, it prints a warning first. It still discards them. Untracked files are left alone.\u003c/li\u003e\n\u003cli\u003eWhen the Docker repository key is already on the player, the installer no longer downloads it again, so a machine prepared ahead of time doesn\u0026#39;t need network access for that step.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"for-contributors\"\u003eFor contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe Ruff linter now runs its expanded default rule set (about 413 rules, up from 59), and the findings across the codebase were fixed. \u003ccode\u003eBLE001\u003c/code\u003e (blind \u003ccode\u003eexcept\u003c/code\u003e) stays off on purpose, because the player is meant to degrade rather than crash.\u003c/li\u003e\n\u003cli\u003eTests cover the entry point of the GStreamer framebuffer video player used on the Raspberry Pi 2 and 3.\u003c/li\u003e\n\u003cli\u003eThe Anthias website\u0026#39;s API page has an overview of the base URL, versioning, authentication and errors, the guide to migrating to Screenly covers what gets migrated and how to troubleshoot it, and broken links across the site are fixed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePython and front-end dependencies and GitHub Actions were updated.\u003c/p\u003e\n","description":"Installing from a Raspberry Pi's own screen no longer locks you out, the server stops logging a Redis timeout every few seconds while the web interface is open, and the installer warns you before it discards your edits to the Anthias checkout.","title":"Large HEIC, TIFF and AVIF photos no longer reboot boards with little memory, and other fixes","type":"roundup","url":"https://www.screenly.io/releases/anthias/2026.08.0/fixes-and-improvements/"}],"json":"https://www.screenly.io/releases/anthias/2026.08.0/v1.json","product":"anthias","product_label":"Anthias","url":"https://www.screenly.io/releases/anthias/2026.08.0/","version":"2026.08.0"}],"title":"Anthias 2026.08.0","url":"https://www.screenly.io/releases/anthias/2026.08.0/","version":1}