{"product":"screenly","releases":[{"date":"2026-08-27","entries":[{"areas":[],"breaking":false,"content_html":"\u003cp\u003eSwitching workspaces has never been the hard part: the sidebar had a picker for that. Invitations\nwere. One arrived by email, and the link in that email was the only way to accept it, so an\ninvitation that went to spam or got deleted was effectively gone, and you had no way to check\nwhether you had been invited at all.\u003c/p\u003e\n\u003cp\u003eThere is now. Signing in lands on the Lobby, which has two tabs: the workspaces you belong to,\neach showing your role in it, and your pending invitations with a count on the tab. You can accept\nor decline an invitation right there, and a workspace you accept joins your list. It\u0026rsquo;s also where\nyou create a workspace, first or not, and it\u0026rsquo;s reachable any time from the workspace name in the\nsidebar.\u003c/p\u003e\n\u003cp\u003eMemberships that have been disabled appear in the list too, labeled as disabled rather than\nquietly missing, so you can tell the difference between having lost access and never having had\nit.\u003c/p\u003e\n\u003cp\u003eWorkspaces that sign in through your own identity provider send you there from the Lobby, so a\nmixed set of workspaces (some on SAML, some not) works from one list.\u003c/p\u003e\n","description":"The Lobby is where you land when you sign in. It lists every workspace you belong to with your role in it, and your pending invitations, which you can now accept or decline in Screenly.","title":"A new Lobby page for your workspaces and invitations","type":"release","url":"https://www.screenly.io/releases/screenly/26.8.8/lobby/"},{"areas":[],"breaking":false,"content_html":"\u003cp\u003eThe first time you signed in with Google without belonging to any workspace, Screenly created one\nfor you, named after your company\u0026rsquo;s mail domain, or your username on a personal address, rather\nthan anything you chose. Your free trial started right then, whether you were ready to set anything\nup or not.\u003c/p\u003e\n\u003cp\u003eNow a Google sign-up with no workspace lands in the \u003ca href=\"/releases/screenly/26.8.8/lobby/\"\u003eLobby\u003c/a\u003e, and\nyou create your first workspace there yourself, with the name you want. Your free trial starts when\nyou create it, so none of it goes by before you\u0026rsquo;re ready to start.\u003c/p\u003e\n\u003cp\u003eSigning up with an email address still creates your first workspace for you, named the same way.\u003c/p\u003e\n","description":"A new account made with Google no longer gets a workspace created automatically. You create your first workspace in the Lobby when you're ready, and your free trial starts then, not at sign-up.","title":"Signing up with Google no longer creates a workspace for you","type":"improvement","url":"https://www.screenly.io/releases/screenly/26.8.8/google-sign-up-first-workspace/"},{"areas":["apps"],"breaking":false,"content_html":"\u003cp\u003eAn app\u0026rsquo;s settings form used to show every option it had, all at once, in whatever order they\nhappened to arrive in. For an app with a handful of settings that is fine. For one where half the\noptions only matter if you picked a particular mode, it means reading past settings that do\nnothing for you and guessing which ones your choices have made irrelevant.\u003c/p\u003e\n\u003cp\u003eA setting can now depend on another, so the form shows it only when it applies, and an app can\nset the order its settings appear in, putting the decisions you make first at the top.\u003c/p\u003e\n\u003cp\u003eThis is something each app\u0026rsquo;s author adopts, so you will see it on apps as their authors take it\nup rather than everywhere at once. Nothing changes for an app that has not.\u003c/p\u003e\n\u003ch2 id=\"for-app-developers\"\u003eFor app developers\u003c/h2\u003e\n\u003cp\u003eBoth keys go in a setting\u0026rsquo;s \u003ccode\u003ehelp_text\u003c/code\u003e, as a JSON object instead of a plain string:\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-json\" data-lang=\"json\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e{\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  \u003cspan style=\"color:#6ab825;font-weight:bold\"\u003e\u0026#34;schema_version\u0026#34;\u003c/span\u003e: \u003cspan style=\"color:#3677a9\"\u003e1\u003c/span\u003e,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  \u003cspan style=\"color:#6ab825;font-weight:bold\"\u003e\u0026#34;properties\u0026#34;\u003c/span\u003e: {\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    \u003cspan style=\"color:#6ab825;font-weight:bold\"\u003e\u0026#34;help_text\u0026#34;\u003c/span\u003e: \u003cspan style=\"color:#ed9d13\"\u003e\u0026#34;Which symbol the widget follows, for example NASDAQ:AAPL.\u0026#34;\u003c/span\u003e,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    \u003cspan style=\"color:#6ab825;font-weight:bold\"\u003e\u0026#34;display_order\u0026#34;\u003c/span\u003e: \u003cspan style=\"color:#3677a9\"\u003e20\u003c/span\u003e,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    \u003cspan style=\"color:#6ab825;font-weight:bold\"\u003e\u0026#34;depends_on\u0026#34;\u003c/span\u003e: { \u003cspan style=\"color:#6ab825;font-weight:bold\"\u003e\u0026#34;setting\u0026#34;\u003c/span\u003e: \u003cspan style=\"color:#ed9d13\"\u003e\u0026#34;widget_type\u0026#34;\u003c/span\u003e, \u003cspan style=\"color:#6ab825;font-weight:bold\"\u003e\u0026#34;values\u0026#34;\u003c/span\u003e: [\u003cspan style=\"color:#ed9d13\"\u003e\u0026#34;chart\u0026#34;\u003c/span\u003e, \u003cspan style=\"color:#ed9d13\"\u003e\u0026#34;ticker\u0026#34;\u003c/span\u003e] }\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  }\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e}\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003c/div\u003e\n\u003cp\u003e\u003ccode\u003edepends_on\u003c/code\u003e names another setting and the values that make this one apply. Above, the symbol\nfield appears only while \u003ccode\u003ewidget_type\u003c/code\u003e is \u003ccode\u003echart\u003c/code\u003e or \u003ccode\u003eticker\u003c/code\u003e. A setting hidden this way is\ngenuinely absent rather than merely invisible: it is not validated and its value is not saved, so\na required setting that does not apply to the chosen mode cannot block an install.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003edisplay_order\u003c/code\u003e is a number, sorted ascending within the basic and advanced groups separately. A\nsetting without one keeps the order it arrived in and sorts after every setting that has one.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003ehelp_text\u003c/code\u003e inside \u003ccode\u003eproperties\u003c/code\u003e is the text shown under the field, since the outer \u003ccode\u003ehelp_text\u003c/code\u003e\nis now carrying the schema.\u003c/p\u003e\n\u003cp\u003eBoth keys fail open. A \u003ccode\u003ehelp_text\u003c/code\u003e that is not a JSON object with a \u003ccode\u003eschema_version\u003c/code\u003e is treated as\nplain help text exactly as before, and a malformed \u003ccode\u003edepends_on\u003c/code\u003e shows the setting rather than\nhiding it, so a mistake in a schema cannot make a setting unreachable.\u003c/p\u003e\n","description":"An app's settings form can reveal a setting only when it is relevant to your other choices, and present its settings in a deliberate order. App developers declare both in the setting's schema.","title":"App settings can hide options that do not apply","type":"release","url":"https://www.screenly.io/releases/screenly/26.8.8/app-settings-visibility-and-order/"},{"areas":[],"breaking":false,"content_html":"\u003ch2 id=\"fixes\"\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSearching Content no longer lists folders that hold nothing matching your search.\u003c/li\u003e\n\u003cli\u003eDeleting an installed app now updates the playlists and the Content page that referenced it\nright away, instead of after a manual reload.\u003c/li\u003e\n\u003cli\u003eChanging your account email now rejects an address you cannot use, your current one or one\nalready taken, on the field itself rather than after sending a confirmation code.\u003c/li\u003e\n\u003cli\u003eA screen you have revoked now resets cleanly instead of retrying against an error.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"improvements\"\u003eImprovements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eQuick actions on Home, Now playing links and links in notifications move you through the\ndashboard instantly rather than reloading it.\u003c/li\u003e\n\u003cli\u003eScreenly support accounts no longer count toward your plan\u0026rsquo;s member limit.\u003c/li\u003e\n\u003c/ul\u003e\n","description":"Fixes to Content search, deleting apps, changing your email, and revoking screens, plus faster links around the dashboard and support accounts off your member limit.","title":"Content search skips empty folders, and other fixes","type":"roundup","url":"https://www.screenly.io/releases/screenly/26.8.8/fixes-and-improvements/"}],"json":"https://www.screenly.io/releases/screenly/26.8.8/v1.json","product":"screenly","product_label":"Screenly","url":"https://www.screenly.io/releases/screenly/26.8.8/","version":"26.8.8"}],"title":"Screenly 26.8.8","url":"https://www.screenly.io/releases/screenly/26.8.8/","version":1}