{"product":"screenlyos","releases":[{"date":"2026-10-09","entries":[{"areas":["device-management","monitoring"],"breaking":false,"content_html":"\u003cp\u003eRemote device management is about doing from the dashboard what used to take someone standing at\nthe screen. A player takes commands from Screenly, like reboot and power off, and ScreenlyOS 26.9.0\nadds a new one: take a screenshot.\u003c/p\u003e\n\u003cp\u003eA player that gets the command captures what it\u0026rsquo;s showing at that moment and sends it straight\nback. Until now, the only screenshot to look at was the one sent with the player\u0026rsquo;s regular report,\nabout every 15 minutes, so checking whether a change reached the lobby screen could mean a\nquarter-hour wait.\u003c/p\u003e\n\u003cp\u003eThe dashboard sends the command from the \u0026ldquo;Take screenshot\u0026rdquo; button on a screen\u0026rsquo;s Overview, which\narrived in \u003ca href=\"/releases/screenly/26.10.6/take-screenshot-on-demand/\"\u003eScreenly 26.10.6\u003c/a\u003e. It works on\nplayers running ScreenlyOS 26.9.0 or newer.\u003c/p\u003e\n","description":"ScreenlyOS 26.9.0 adds a screenshot command, so a player takes a screenshot the moment the dashboard asks for one, alongside commands like reboot and power off.","title":"Players support a new screenshot command","type":"release","url":"https://www.screenly.io/releases/screenlyos/26.9.0/screenshots-on-request/"},{"areas":["apps","developers"],"breaking":false,"content_html":"\u003cp\u003eAn earthquake map on a quiet day, a flight tracker with no planes overhead, a meeting room app\nbetween bookings: some apps have nothing worth showing some of the time. Until now, they still\ntook their slot in the playlist, and the screen showed an empty app for its whole duration.\u003c/p\u003e\n\u003cp\u003eAn Edge App can now tell the player it has nothing to show. The player skips it and moves on to the\nnext item in the playlist, so the screen keeps showing something useful. The app gets its turn\nagain the next time the playlist comes round, and can decide again then.\u003c/p\u003e\n\u003cp\u003eAn app can only skip before it appears. Once it\u0026rsquo;s on screen, it plays for its full duration.\u003c/p\u003e\n\u003ch2 id=\"for-developers\"\u003eFor developers\u003c/h2\u003e\n\u003cp\u003eCall \u003ccode\u003escreenly.signalAbort()\u003c/code\u003e from your Edge App while it\u0026rsquo;s loading. If the app hasn\u0026rsquo;t been shown\nyet, the player cancels it and starts the next item. A call after the app is on screen is ignored.\nA skip isn\u0026rsquo;t counted as a failed play.\u003c/p\u003e\n","description":"An Edge App can now tell the player it has nothing to show, and the screen moves on to the next item in the playlist instead of showing an empty app.","title":"An Edge App with nothing to show can skip its turn","type":"release","url":"https://www.screenly.io/releases/screenlyos/26.9.0/edge-apps-can-skip-their-turn/"},{"areas":["monitoring","security"],"breaking":true,"content_html":"\u003cp\u003eSome customers have Prometheus metrics turned on for their players, so their own monitoring can\ntrack CPU, memory, disk, and network use across a fleet. From ScreenlyOS 26.9.0, a player serves those\nmetrics over HTTPS on port 9100, and identifies itself with its own device certificate. Your\nmonitoring system can check it\u0026rsquo;s talking to the player it expects.\u003c/p\u003e\n\u003cp\u003eMetrics collection is off unless it was turned on for your players, so most customers have nothing\nto change.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eIf this affects you:\u003c/strong\u003e a monitoring system that collects metrics from players over plain HTTP\nstops getting data once a player updates to 26.9.0. Change the scrape target to \u003ccode\u003ehttps\u003c/code\u003e on the\nsame port, verify the certificate against the Screenly certificate authority, and set the\nexpected server name to the player\u0026rsquo;s hostname (the \u003ccode\u003esrly-\u003c/code\u003e name). Our support team can send you\nthe Screenly CA certificate.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"for-developers\"\u003eFor developers\u003c/h2\u003e\n\u003cp\u003eFor a Prometheus scrape job, that means \u003ccode\u003escheme: https\u003c/code\u003e with a \u003ccode\u003etls_config\u003c/code\u003e whose \u003ccode\u003eca_file\u003c/code\u003e points\nat the Screenly CA certificate and whose \u003ccode\u003eserver_name\u003c/code\u003e is the player\u0026rsquo;s hostname. The port stays\n\u003ccode\u003e9100\u003c/code\u003e, and the metrics themselves are unchanged.\u003c/p\u003e\n","description":"Players with metrics collection turned on now serve their Prometheus metrics over HTTPS on port 9100, so monitoring systems that collect them need to switch to https.","title":"Screen metrics are served over HTTPS","type":"improvement","url":"https://www.screenly.io/releases/screenlyos/26.9.0/screen-metrics-over-https/"},{"areas":["security"],"breaking":false,"content_html":"\u003cp\u003eNothing on a Screenly player uses Bluetooth, so from ScreenlyOS 26.9.0, players switch it off when\nthey start. That covers a Raspberry Pi\u0026rsquo;s built-in Bluetooth and a USB Bluetooth adapter plugged\nin later. Wi-Fi isn\u0026rsquo;t affected.\u003c/p\u003e\n\u003cp\u003eEach player also reports whether its Bluetooth is on or off. The dashboard doesn\u0026rsquo;t show it yet.\u003c/p\u003e\n","description":"ScreenlyOS now switches Bluetooth off when a player starts, and every player reports whether its Bluetooth is on or off.","title":"Players keep Bluetooth off and report its state","type":"improvement","url":"https://www.screenly.io/releases/screenlyos/26.9.0/bluetooth-off/"},{"areas":[],"breaking":false,"content_html":"\u003ch2 id=\"fixes\"\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eA screen that had been removed from its workspace could sit on the pairing screen with no PIN.\nIt now gets a new PIN, so you can pair it again.\u003c/li\u003e\n\u003cli\u003eAn x86 player with a TPM now recovers on its own from a TPM fault that used to disrupt its\nconnection to Screenly until it was restarted.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"improvements\"\u003eImprovements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eA \u003ca href=\"/releases/screenlyos/26.8.0/screenlyos-on-scala-players/\"\u003eScala player running ScreenlyOS\u003c/a\u003e\nreports itself as a Scala Player, with the serial number from its hardware.\u003c/li\u003e\n\u003cli\u003eDependencies and system libraries updated.\u003c/li\u003e\n\u003c/ul\u003e\n","description":"A removed screen gets a new pairing PIN, x86 players recover from TPM faults on their own, and Scala players report themselves as Scala players.","title":"Removed screens get a new PIN to pair again, and other fixes","type":"roundup","url":"https://www.screenly.io/releases/screenlyos/26.9.0/fixes-and-improvements/"}],"json":"https://www.screenly.io/releases/screenlyos/26.9.0/v1.json","product":"screenlyos","product_label":"ScreenlyOS","url":"https://www.screenly.io/releases/screenlyos/26.9.0/","version":"26.9.0"}],"title":"ScreenlyOS 26.9.0","url":"https://www.screenly.io/releases/screenlyos/26.9.0/","version":1}