{"product":"anthias","releases":[{"date":"2026-07-13","entries":[{"areas":[],"breaking":false,"content_html":"\u003cp\u003eIf your Raspberry Pi 2 or Raspberry Pi 3 player sat on a blank screen and played nothing, or went blank now and then, upgrading to Anthias 2026.07.2 fixes it. It affects the 32-bit images only.\u003c/p\u003e\n\u003cp\u003eOn a Raspberry Pi 2, or a Raspberry Pi 3 running the 32-bit image (\u003ccode\u003epi2\u003c/code\u003e and \u003ccode\u003epi3\u003c/code\u003e), the viewer could crash as it started, restart, and crash again. On some players that happened on every start, so the screen stayed blank and nothing played. On others it happened now and then, and the viewer came back on the next try.\u003c/p\u003e\n\u003cp\u003eFrom Anthias 2026.07.2 the viewer runs steadily on these boards. In the project\u0026#39;s testing on a Pi 2 and a 32-bit Pi 3, it showed web pages, images and video for hours without a single crash.\u003c/p\u003e\n\u003cp\u003eThe 64-bit images, including the 64-bit Raspberry Pi 3 image (\u003ccode\u003epi3-64\u003c/code\u003e), build their web view a different way and don\u0026#39;t need this fix.\u003c/p\u003e\n\u003cp\u003eAfter the upgrade, System Info still shows 2026.07.1, because \u003ca href=\"/releases/anthias/2026.07.2/fixes-and-improvements/\"\u003ethis release reports the previous version number\u003c/a\u003e.\u003c/p\u003e\n\u003ch2 id=\"for-contributors\"\u003eFor contributors\u003c/h2\u003e\n\u003cp\u003eThe \u003ccode\u003epi2\u003c/code\u003e and \u003ccode\u003epi3\u003c/code\u003e images don\u0026#39;t compile Qt. The image builder downloads a prebuilt Qt 5.15.19 toolchain, QtWebEngine included, from a \u003ccode\u003eWebView-v*\u003c/code\u003e GitHub release and builds the \u003ccode\u003eAnthiasViewer\u003c/code\u003e app against it. At this tag, \u003ccode\u003eqt5_toolchain_url\u003c/code\u003e in \u003ccode\u003etools/image_builder/utils.py\u003c/code\u003e points at \u003ccode\u003eWebView-v2026.07.1\u003c/code\u003e, whose tarballs carry the fix, so a viewer image you build from 2026.07.2 gets it with no other change.\u003c/p\u003e\n\u003cp\u003eThe crash came from the compiler. Debian\u0026#39;s armhf gcc turns some struct copies into 64-bit NEON stores that require 8-byte alignment, and QtWebEngine sometimes passes them memory aligned to only 4 bytes. The Cortex-A7 and Cortex-A53 fault on that, and the kernel can\u0026#39;t fix up a NEON access, so the viewer dies with \u003ccode\u003eUnhandled fault: alignment exception (0x801)\u003c/code\u003e in \u003ccode\u003edmesg\u003c/code\u003e. \u003ccode\u003esrc/anthias_webview/build_qt5.sh\u003c/code\u003e now builds QtWebEngine\u0026#39;s Chromium with \u003ccode\u003earm_use_neon=false\u003c/code\u003e and wraps the armhf \u003ccode\u003egcc\u003c/code\u003e and \u003ccode\u003eg++\u003c/code\u003e with \u003ccode\u003e-mno-unaligned-access\u003c/code\u003e, so the toolchain no longer contains those stores. The script also runs on Debian Trixie\u0026#39;s Python 3.13 now, with shims for the \u003ccode\u003eimp\u003c/code\u003e, \u003ccode\u003epipes\u003c/code\u003e and \u003ccode\u003ecgi\u003c/code\u003e modules that Chromium 87\u0026#39;s build scripts still import.\u003c/p\u003e\n","description":"On a Raspberry Pi 2, or a Raspberry Pi 3 on the 32-bit image, the viewer could crash every time it started and leave the screen blank. From Anthias 2026.07.2 it runs steadily on those boards.","title":"Raspberry Pi 2 and 32-bit Pi 3 players stop crashing to a blank screen","type":"fix","url":"https://www.screenly.io/releases/anthias/2026.07.2/pi-2-and-pi-3-blank-screen/"},{"areas":[],"breaking":false,"content_html":"\u003cp\u003eIf you\u0026#39;re moving screens to Anthias from another signage platform, Anthias 2026.07.2 can copy your content across for you. Settings has a new Import content section with 4 platforms: Yodeck, ScreenCloud, piSignage, and Xibo (Xibo Cloud or a self-hosted CMS).\u003c/p\u003e\n\u003cp\u003eSelect the button for the platform you\u0026#39;re leaving, such as \u0026quot;Import from Yodeck\u0026quot;, and paste your credentials for it. Anthias lists the media it finds there. Pick what you want, and Anthias downloads each item onto the player and adds it as an asset, showing the progress of each one. If some fail, you can retry just those.\u003c/p\u003e\n\u003cp\u003eWhat you paste depends on the platform. Anthias uses it for this import only and doesn\u0026#39;t store it.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eYodeck: an API token, from Account Settings \u0026gt; Advanced Settings \u0026gt; API Tokens.\u003c/li\u003e\n\u003cli\u003eScreenCloud: an API token, from Studio \u0026gt; Account Settings \u0026gt; Developer. Anthias works out your region on its own.\u003c/li\u003e\n\u003cli\u003epiSignage: your account\u0026#39;s subdomain, email and password, joined with colons as \u003ccode\u003esubdomain:email:password\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eXibo: the CMS address, an API application\u0026#39;s client ID and its client secret, separated by spaces.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImages and videos come across from all 4 platforms, up to 5 GiB per file. Web pages come across from Yodeck and ScreenCloud. Anything Anthias can\u0026#39;t play stays behind and is listed with the reason: audio, documents, and the built-in widgets some platforms draw themselves (weather, clocks, RSS feeds), since a widget\u0026#39;s address only works inside the platform it came from.\u003c/p\u003e\n\u003cp\u003eImported assets start playing straight away unless you untick \u0026quot;Enable imported assets so they play immediately\u0026quot;. Your existing assets aren\u0026#39;t touched, and running an import again skips items that came across the first time.\u003c/p\u003e\n\u003cp\u003eThe piSignage and Xibo imports follow those platforms\u0026#39; API documentation and hadn\u0026#39;t been tried against a live account when this release shipped.\u003c/p\u003e\n\u003ch2 id=\"from-the-command-line\"\u003eFrom the command line\u003c/h2\u003e\n\u003cp\u003eThe same import runs over SSH. \u003ccode\u003e--dry-run\u003c/code\u003e lists what would be imported without copying anything:\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\u003e\u003cspan style=\"color:#24909d\"\u003ecd\u003c/span\u003e ~/anthias\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo docker compose \u003cspan style=\"color:#24909d\"\u003eexec\u003c/span\u003e anthias-server \u003cspan style=\"color:#ed9d13\"\u003e\\\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    python -m anthias_server.manage import_content --provider yodeck --token \u003cspan style=\"color:#ed9d13\"\u003e\u0026#39;\u0026lt;credentials\u0026gt;\u0026#39;\u003c/span\u003e --dry-run\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003c/div\u003e\n\u003cp\u003e\u003ccode\u003e--provider\u003c/code\u003e takes \u003ccode\u003eyodeck\u003c/code\u003e, \u003ccode\u003escreencloud\u003c/code\u003e, \u003ccode\u003episignage\u003c/code\u003e or \u003ccode\u003exibo\u003c/code\u003e, and \u003ccode\u003e--token\u003c/code\u003e takes the same credentials the web interface asks for. Leave out \u003ccode\u003e--dry-run\u003c/code\u003e to run the import.\u003c/p\u003e\n","description":"Moving to Anthias from another signage platform no longer means downloading and re-uploading everything yourself. Settings \u003e Import content copies your images, videos, and web pages onto the player.","title":"Anthias imports content from Yodeck, ScreenCloud, piSignage, and Xibo","type":"release","url":"https://www.screenly.io/releases/anthias/2026.07.2/import-content-from-other-platforms/"},{"areas":[],"breaking":false,"content_html":"\u003cp\u003ePeople have asked since 2023 for a way to see and set the time from the web interface. Anthias 2026.07.2 adds a Timezone setting under Settings \u0026gt; Display \u0026amp; playback. The timezone you pick decides when content with a play window or chosen weekdays plays, and how times are shown across the web interface. A change applies as soon as you save, with no restart.\u003c/p\u003e\n\u003cp\u003eThis matters most on balena installs, where the host runs on UTC and Anthias had no way to follow your local time. It works the same on every install. Leave it on \u0026quot;System default\u0026quot; and Anthias follows the \u003ccode\u003eTZ\u003c/code\u003e environment variable if the container has one, then the host\u0026#39;s timezone, then UTC.\u003c/p\u003e\n\u003cp\u003eSystem Info has a new Device time card. It shows the player\u0026#39;s date and time in the timezone Anthias is using, with its offset from UTC, and keeps ticking while the page is open. The time comes from the player, not your browser, so a player with a wrong clock shows up straight away instead of looking right on your laptop.\u003c/p\u003e\n\u003cp\u003eSetting the clock itself, or choosing an NTP server, still happens outside Anthias.\u003c/p\u003e\n\u003ch2 id=\"for-developers\"\u003eFor developers\u003c/h2\u003e\n\u003cp\u003eThe choice is stored as \u003ccode\u003etimezone\u003c/code\u003e in the \u003ccode\u003e[main]\u003c/code\u003e section of \u003ccode\u003eanthias.conf\u003c/code\u003e, as an IANA name such as \u003ccode\u003eEurope/London\u003c/code\u003e. An empty value means \u0026quot;System default\u0026quot;. It\u0026#39;s also the \u003ccode\u003etimezone\u003c/code\u003e field of \u003ccode\u003e/api/v2/device_settings\u003c/code\u003e, and \u003ccode\u003e/api/v2/info\u003c/code\u003e has a new \u003ccode\u003etime\u003c/code\u003e object with the player\u0026#39;s \u003ccode\u003eiso\u003c/code\u003e time, \u003ccode\u003etimezone\u003c/code\u003e and \u003ccode\u003eoffset\u003c/code\u003e. Anthias refuses a name the player\u0026#39;s \u003ccode\u003etzdata\u003c/code\u003e doesn\u0026#39;t have, and a bad value written to the file by hand is ignored rather than stopping the web interface from starting.\u003c/p\u003e\n","description":"Pick the timezone Anthias uses for schedules and times in Settings, and see on System Info what time the player itself thinks it is. On balena, where the host always runs on UTC, this is the first way to schedule in local time.","title":"A new Timezone setting, and a Device time card on System Info","type":"release","url":"https://www.screenly.io/releases/anthias/2026.07.2/timezone-setting-and-device-clock/"},{"areas":[],"breaking":false,"content_html":"\u003cp\u003eImages and web pages on an internal server often use a self-signed certificate. Anthias couldn\u0026#39;t verify it, so it marked the asset unreachable and skipped it, or the screen stayed blank where the content should be. From Anthias 2026.07.2 you can let them through, for one asset or for the whole player.\u003c/p\u003e\n\u003cp\u003eFor one asset, open it with \u0026quot;Edit\u0026quot; and turn on \u0026quot;Skip SSL verification\u0026quot;. The switch shows up when the asset\u0026#39;s address starts with \u003ccode\u003ehttps://\u003c/code\u003e. For the whole player, go to Settings \u0026gt; Display \u0026amp; playback and turn off \u0026quot;Verify SSL certificates\u0026quot;. That switches off certificate checks for every asset, so leave it on unless you need it.\u003c/p\u003e\n\u003cp\u003eBoth cover images and web pages, and the check Anthias runs to see whether an asset is reachable. A video file added by its address is downloaded to the player first, and that download still checks the certificate.\u003c/p\u003e\n\u003ch2 id=\"for-developers\"\u003eFor developers\u003c/h2\u003e\n\u003cp\u003eThe v2 asset endpoints have a \u003ccode\u003eskip_ssl_verify\u003c/code\u003e field. The player-wide setting is \u003ccode\u003everify_ssl\u003c/code\u003e in the \u003ccode\u003e[viewer]\u003c/code\u003e section of \u003ccode\u003eanthias.conf\u003c/code\u003e, \u003ccode\u003eTrue\u003c/code\u003e by default, and \u003ccode\u003everify_ssl\u003c/code\u003e in \u003ccode\u003e/api/v2/device_settings\u003c/code\u003e. Setting it to \u003ccode\u003eFalse\u003c/code\u003e in the file used to change nothing, because the check stayed on regardless. It takes effect from this release.\u003c/p\u003e\n","description":"Content on an intranet server with its own HTTPS certificate no longer gets skipped or shows a blank screen. Turn certificate checks off for one asset, or for the whole player.","title":"Images and web pages on servers with self-signed certificates can play","type":"release","url":"https://www.screenly.io/releases/anthias/2026.07.2/self-signed-https-content/"},{"areas":[],"breaking":false,"content_html":"\u003cp\u003eIf a dashboard you\u0026#39;d like on a screen needs a token to open, such as a private Grafana board, you can show it from Anthias 2026.07.2 without making it public. You add the token to the web page asset, and web pages that don\u0026#39;t need one work as they did.\u003c/p\u003e\n\u003cp\u003ePages like that expect the token in an HTTP header, like a Grafana dashboard that expects an \u003ccode\u003eAuthorization\u003c/code\u003e header. A web page asset can now carry its own HTTP headers, so the page loads on the screen. It was asked for on GitHub in 2025.\u003c/p\u003e\n\u003cp\u003eOpen a web page asset with \u0026quot;Edit\u0026quot; and fill in \u0026quot;Custom HTTP headers\u0026quot;, one \u003ccode\u003eName: Value\u003c/code\u003e per line, for example \u003ccode\u003eAuthorization: Bearer \u0026lt;token\u0026gt;\u003c/code\u003e. Leave it empty for none.\u003c/p\u003e\n\u003cp\u003eThe headers go only to the asset\u0026#39;s own origin: the same scheme, host and port as the address you entered. The page\u0026#39;s requests to anywhere else, including a redirect to another site or from \u003ccode\u003ehttps\u003c/code\u003e to \u003ccode\u003ehttp\u003c/code\u003e, go out without them, so a token can\u0026#39;t leak to an ad or analytics server the page loads. An asset can have up to 20 headers. Lines that aren\u0026#39;t a valid \u003ccode\u003eName: Value\u003c/code\u003e pair are dropped when you save.\u003c/p\u003e\n\u003ch2 id=\"for-developers\"\u003eFor developers\u003c/h2\u003e\n\u003cp\u003ev2 asset responses include \u003ccode\u003ecustom_headers\u003c/code\u003e, an object of header names to values, and you can write it on create and update. Writes are validated strictly: a bad name or value, or more than 20 headers, returns an error instead of being dropped. Only web page assets use it.\u003c/p\u003e\n","description":"A private dashboard that needs an Authorization header, such as a Grafana board behind a token, can now go on a screen without being made public.","title":"Web page assets can send custom HTTP headers","type":"release","url":"https://www.screenly.io/releases/anthias/2026.07.2/custom-http-headers-for-web-pages/"},{"areas":[],"breaking":false,"content_html":"\u003cp\u003eIf videos on your Raspberry Pi 3 showed a black screen while images and web pages played fine, upgrading to Anthias 2026.07.2 fixes it. It affects a Pi 3 running the 64-bit image.\u003c/p\u003e\n\u003cp\u003eOn that image (\u003ccode\u003epi3-64\u003c/code\u003e), video assets could show a black screen. People reported it on Anthias 2026.06.3 and kept seeing it after upgrading.\u003c/p\u003e\n\u003cp\u003eFrom Anthias 2026.07.2, video on this board goes through the Pi\u0026#39;s own hardware decoder straight to the display, with sound on a separate path so a problem with the audio can\u0026#39;t stop the picture. In the project\u0026#39;s testing, a 1080p, 30 frames per second H.264 clip played at its full frame rate, with no frames dropped once it was running. H.264 is the only video format Anthias accepts on this board.\u003c/p\u003e\n\u003cp\u003eWhen a video\u0026#39;s time on screen is longer than the clip, it loops. On this board the pause where it starts over is shorter now, about half what it was in the project\u0026#39;s testing, though not gone.\u003c/p\u003e\n\u003cp\u003eIn this release, video on this board ignores the Screen rotation setting and plays landscape. \u003ca href=\"/releases/anthias/2026.07.3/screen-rotation-the-same-on-every-board/\"\u003eAnthias 2026.07.3\u003c/a\u003e fixes that.\u003c/p\u003e\n","description":"On a Raspberry Pi 3 running the 64-bit image, video assets could play as a black screen. From Anthias 2026.07.2 they play through the Pi's hardware decoder, with sound, at 30 frames per second in the project's testing.","title":"Video shows on a 64-bit Raspberry Pi 3 instead of a black screen","type":"fix","url":"https://www.screenly.io/releases/anthias/2026.07.2/raspberry-pi-3-64-bit-video/"},{"areas":[],"breaking":true,"content_html":"\u003cp\u003eAnthias used to keep a file that was still uploading under a name based on its file name. Two uploads of files with the same name, at the same time or after an earlier one was interrupted, could end up mixed into one corrupt file. From Anthias 2026.07.2, every upload gets its own temporary file, whatever it\u0026#39;s called.\u003c/p\u003e\n\u003cp\u003eUploads from the web interface need nothing from you. The change is for integrations that upload through \u003ccode\u003e/api/v1/file_asset\u003c/code\u003e or \u003ccode\u003e/api/v2/file_asset\u003c/code\u003e in chunks with a \u003ccode\u003eContent-Range\u003c/code\u003e header. Anthias can no longer tell from the file name which chunks belong together, so it gives each upload an ID instead:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe response to every upload now includes \u003ccode\u003eupload_id\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eSend that value as an \u003ccode\u003eX-Upload-Id\u003c/code\u003e header with every later chunk of the same file, and the chunks are put together as before.\u003c/li\u003e\n\u003cli\u003eA chunk without \u003ccode\u003eX-Upload-Id\u003c/code\u003e starts a new upload. A malformed \u003ccode\u003eX-Upload-Id\u003c/code\u003e gets a \u003ccode\u003e400\u003c/code\u003e response.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eIf you upload in chunks through the API:\u003c/strong\u003e read \u003ccode\u003eupload_id\u003c/code\u003e from the response to the first chunk and send it as \u003ccode\u003eX-Upload-Id\u003c/code\u003e with each chunk after it. Without it, each chunk is stored on its own and the asset you create from the last chunk\u0026#39;s \u003ccode\u003euri\u003c/code\u003e comes out broken.\u003c/p\u003e\n\u003c/blockquote\u003e\n","description":"Two uploads of files with the same name no longer end up mixed into one file. Integrations that upload in chunks with Content-Range need to send back the upload_id Anthias 2026.07.2 returns.","title":"Chunked uploads through the API now carry an upload ID","type":"improvement","url":"https://www.screenly.io/releases/anthias/2026.07.2/upload-id-for-chunked-uploads/"},{"areas":[],"breaking":false,"content_html":"\u003ch2 id=\"version-number\"\u003eVersion number\u003c/h2\u003e\n\u003cp\u003eAnthias 2026.07.2 reports itself as 2026.07.1. System Info shows v2026.07.1, so does \u003ccode\u003eanthias_version\u003c/code\u003e in \u003ccode\u003e/api/v2/info\u003c/code\u003e, and outside balena the \u0026quot;Update available\u0026quot; badge on System Info stays on until you move to a newer release. You\u0026#39;re running 2026.07.2 all the same. Anthias 2026.07.3 reports its own version correctly.\u003c/p\u003e\n\u003ch2 id=\"fixes\"\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOn a Raspberry Pi 4 (64-bit), a Raspberry Pi 5, x86 and other boards with 2 GB of RAM or more, moving from one web page to the next could briefly show a different page from the rotation. Every transition now goes straight to the next page. These boards now run one web view instead of two, which frees about 100 MB of memory in the project\u0026#39;s testing.\u003c/li\u003e\n\u003cli\u003eA web page asset with \u0026quot;No cache\u0026quot; turned on could still come from the cache when it came around again. It\u0026#39;s now fetched fresh every time it\u0026#39;s shown.\u003c/li\u003e\n\u003cli\u003eOn a Raspberry Pi 5, x86 or a generic arm64 board such as the Rock Pi 4, a player that booted with no display plugged in could stay black after you plugged one in. The viewer now restarts itself about a minute after the display appears, and the picture comes up. A display that was plugged in but switched off at boot still stayed black until \u003ca href=\"/releases/anthias/2026.08.0/display-recovers-after-late-power-on/\"\u003eAnthias 2026.08.0\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eThe viewer no longer keeps everything the video player prints in memory, only the last 64 KB. Some MP4 files make the video decoder print a warning for every frame, and on a 2 GB Raspberry Pi 4 with large files that output filled the memory and blanked the screen for minutes between assets. A report after this fix says long blank gaps can still happen on such a board.\u003c/li\u003e\n\u003cli\u003eOn boards with less than 1.5 GB of RAM, such as a 1 GB Raspberry Pi 3B+, cycling through web pages could fill the memory until the screen went black. Web pages on those boards now run in Chromium\u0026#39;s low-memory mode, and the \u0026quot;Low-RAM mode\u0026quot; note on System Info says so.\u003c/li\u003e\n\u003cli\u003eAn upgrade could stop partway on a board short on memory, at the Ansible step that turns swap off. The upgrade now stops the Anthias containers first, skips turning swap off when memory is tight, and carries on if that step still fails.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"improvements\"\u003eImprovements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSelecting several assets and choosing \u0026quot;Edit\u0026quot; also lets you set \u0026quot;No cache\u0026quot; and \u0026quot;Skip asset check\u0026quot;, each to on or off, alongside the dates, duration, play times and weekdays it already covered.\u003c/li\u003e\n\u003cli\u003eThe API reference on the Anthias website shows endpoint paths, status codes and field names. It used to show them as 0, 1, 2 and so on.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"for-contributors\"\u003eFor contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ebin/start_viewer.sh\u003c/code\u003e is split into a shared script and one per display stack (Wayland, eglfs and linuxfb) under \u003ccode\u003ebin/lib/viewer/\u003c/code\u003e, with no change in behavior.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eANTHIAS_LOW_RAM\u003c/code\u003e variable for the viewer container is gone, since every board now runs a single web view.\u003c/li\u003e\n\u003cli\u003eError reports to Sentry leave out more expected events: requests with a Host header the player doesn\u0026#39;t answer to, a browser that disconnects while the web interface is being told about a change or while a file is still downloading, and the warnings about missing or outdated basic-auth credentials that a database upgrade can log. The background task that recovers assets stuck in processing now stops cleanly at its time limit instead of being killed.\u003c/li\u003e\n\u003cli\u003eThe Anthias website publishes \u003ccode\u003ellms.txt\u003c/code\u003e and \u003ccode\u003ellms-full.txt\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eMore test coverage for the import providers, the viewer and timezone handling.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDependency updates also went in, among them Pillow, uvicorn and TypeScript, which moved to version 7, plus GitHub Actions.\u003c/p\u003e\n","description":"\"No cache\" web pages are fetched fresh every time they show, a player that booted with no display shows a picture once one is plugged in, and upgrades no longer stop partway on boards short on memory. This release shows itself as 2026.07.1 in System Info.","title":"Web page transitions stop flashing another page, and other fixes","type":"roundup","url":"https://www.screenly.io/releases/anthias/2026.07.2/fixes-and-improvements/"}],"json":"https://www.screenly.io/releases/anthias/2026.07.2/v1.json","product":"anthias","product_label":"Anthias","url":"https://www.screenly.io/releases/anthias/2026.07.2/","version":"2026.07.2"}],"title":"Anthias 2026.07.2","url":"https://www.screenly.io/releases/anthias/2026.07.2/","version":1}