Highlights
The device-facing changes worth knowing before you upgrade:
- Uploads — large assets now transfer in chunks so they clear a proxy body limit (#3310), uploads and asset content stream instead of buffering (#3346), you can drop a file anywhere on the schedule page (#3334), and a failed upload shows a real reason (#3302).
/wsnow requires a logged-in session when auth is enabled (#3324). This is the one change most likely to be felt: any client that connected to the websocket unauthenticated will stop working.- Backup/restore is scoped to a runtime whitelist behind a version guard (#3343).
- OOM handling marks the right victim and points systemd's watchdog at a device that actually resets (#3337).
- Upgrades purge superseded images (#3292); non-Pi SBCs are labelled by board name (#3330); black screen after a video is reduced (#3275).
- Django 5.2.17, plus the usual grouped dependency bumps.
Validated with a pre-release burn-in across the full hardware matrix (Pi 2/3/4/5, x86, Rock Pi 4, NanoPi R3S) on this exact commit before tagging.
What's Changed
Other Changes 🔧
- fix(upgrade): purge superseded Anthias images after an upgrade by @vpetersson-bot in #3292
- feat(website): add free-software and Yodeck pages, expand the Raspberry Pi landing pages by @vpetersson-bot in #3294
- chore(deps): bump sqlparse from 0.5.5 to 0.6.0 by @dependabot[bot] in #3295
- feat(website): add a piSignage comparison page by @vpetersson-bot in #3296
- feat(website): add updates and base-OS section to the Yodeck page by @vpetersson-bot in #3297
- feat(emails): add MJML newsletter template built on the design tokens by @vpetersson-bot in #3293
- fix(emails): stop the newsletter's design living in its own mj-head, and ship the MJML source by @vpetersson-bot in #3298
- fix(emails): stop the newsletter's design living in its own mj-head by @vpetersson-bot in #3299
- chore(deps): bump Django to 5.2.17 by @vpetersson-bot in #3301
- feat(website): link the Screenly shop so visitors can buy a player by @vpetersson-bot in #3300
- fix(upload): tell the operator why an asset upload failed by @mickzijdel in #3302
- chore(deps): bump the github-actions group with 5 updates by @dependabot[bot] in #3305
- chore(deps): bump alpinejs from 3.15.12 to 3.16.1 in the bun group by @dependabot[bot] in #3303
- chore(deps): bump the github-actions group with 3 updates by @dependabot[bot] in #3314
- chore(deps-dev): bump the python group across 1 directory with 13 updates by @dependabot[bot] in #3313
- chore(deps): bump the bun group with 4 updates by @dependabot[bot] in #3312
- chore(deps): bump the github-actions group with 4 updates by @dependabot[bot] in #3318
- chore(deps-dev): bump the python group with 7 updates by @dependabot[bot] in #3317
- chore(deps): bump the bun group with 3 updates by @dependabot[bot] in #3316
- chore(deps): bump the github-actions group with 2 updates by @dependabot[bot] in #3323
- chore(deps-dev): bump the python group with 2 updates by @dependabot[bot] in #3322
- chore(deps): bump the bun group with 4 updates by @dependabot[bot] in #3321
- feat(upload): send large assets in chunks so they clear a proxy body limit by @mickzijdel in #3310
- fix(ansible): read gathered facts via ansible_facts by @vpetersson-bot in #3327
- fix(ui): reset the Add asset modal on every open by @vpetersson-bot in #3329
- Size the asset table's actions column from its content by @vpetersson-bot in #3333
- feat(ws): require a logged-in session for /ws when auth is enabled by @vpetersson-bot in #3324
- fix(device): label non-Pi SBCs by board name instead of "Generic aarch64 Device" by @vpetersson-bot in #3330
- chore(deps): bump the bun group with 4 updates by @dependabot[bot] in #3338
- chore(deps): bump the github-actions group with 5 updates by @dependabot[bot] in #3340
- chore(deps): bump anyio from 4.13.0 to 4.14.2 by @dependabot[bot] in #3342
- fix(backup): scope backup/restore to a runtime whitelist with a version guard by @vpetersson-bot in #3343
- chore(deps-dev): bump the python group, keeping djangorestframework-stubs by @vpetersson-bot in #3341
- chore(deps-dev): bump the python group across 1 directory with 7 updates by @dependabot[bot] in #3344
- fix(oom): mark the right OOM victim, and point systemd's watchdog at a device that actually resets by @vpetersson-bot in #3337
- fix(api): stream file uploads and asset content instead of buffering them by @vpetersson-bot in #3346
- fix(webview): reduce black screen during image-fetch after video by @Glassto in #3275
- feat(upload): take a file dropped anywhere on the schedule page by @vpetersson-bot in #3334
- fix(processing): correct the board-identification message and the codec-map claims by @vpetersson-bot in #3335
- fix(upload): answer a refused file drop, and leave an open Add modal alone by @vpetersson-bot in #3347
- chore(release): bump version metadata to 2026.09.0 by @vpetersson-bot in #3348
New Contributors
- @mickzijdel made their first contribution in #3302
- @Glassto made their first contribution in #3275
Full Changelog: v2026.08.2...v2026.09.0