Release v2.2.0

This commit is contained in:
2026-08-01 21:41:44 +01:00
parent c643d2fb07
commit d6417b667c
673 changed files with 146752 additions and 7389 deletions
+60
View File
@@ -2,6 +2,66 @@
All notable changes to this project will be documented in this file.
## 2.2.0 - 2026-08-01
### Added
- Announcement management is now wired for the admin UI and player overlay, with color, template, and expiry controls.
- Time / Date regions now render live in the editor and player.
### Changed
- Announcement lists now default-sort by Description and show the affected screens for each announcement.
- Role add and edit pages now include a Cancel action alongside the save buttons.
- Announcement publishing now only targets explicitly assigned screens; unassigned announcements no longer publish globally.
### Fixed
- Announcement screen labels now correctly distinguish No Screens, partial assignments, and All Screens.
- Role duplicate-name validation on edit now checks the correct RBAC table.
## 2.1.1 - 2026-08-01
### Added
- API source latest-response viewing now supports collapsing and expanding all JSON sections from the edit page.
- Placeholder transforms now support basic string helpers like `.upper()`, `.title()`, and `.lower()`.
### Changed
- The API source add page now matches the edit pages section titles and layout more closely.
- API source placeholder suggestions now stay leaf-only, so container paths and arrays are no longer suggested as placeholders.
- Slide editor and player placeholder resolution now share the same parsing and transform logic.
- API source and RSS editor helper text now shows the new placeholder transform syntax.
- API sources, RSS feeds, slides, users, and roles now render their delete actions in a disabled outlined-danger state when deletion is blocked, matching the rest of the admin tables.
- The users edit page no longer wraps all sections in one outer card, so the profile, password, and roles cards render as separate sections.
### Fixed
- API source item-path overrides continue to treat the final path as an array source, while nested object fields remain available for placeholders.
- The API source latest-response panel now opens as a tree view by default instead of a flat JSON blob.
## 2.1.0 - 2026-07-30
### Added
- Screen and dashboard player links now render the full player URL instead of only the player base host.
### Changed
- The player registry now uses a singleton `d_players` row and `d_screens.player_id` points at that shared player record.
- Player startup is now responsible for creating the shared player record, while onboarding and state polling no longer create extra player rows.
- The screen/player binding path was simplified so opening a screen binds it to the shared player record without trying to re-register the player.
- Added notes near the singleton-player code paths to make the future multi-player migration work easier to revisit.
- Managed fonts now have dedicated editor/player sync handling, including a scheduled font sweep, sorted font-family lists, the TinyMCE fullscreen button, and shared font stylesheet loading in the WYSIWYG editor.
- Text and RSS region types now own their own default style and fallback behavior instead of relying on shared slide helper fallbacks.
- Image and video region handling was also pushed further into modular per-type modules, keeping their editor, preview, and player logic closer to the region itself instead of the shared slide helper layer.
### Fixed
- Removed several onboarding and runtime code paths that were still inserting or refreshing `d_players` rows during normal player playback.
- Fixed the screen-binding flow so it no longer writes a device UUID into `d_screens.player_id`, which avoided foreign key errors under the shared-player model.
## 2.0.0 - 2026-07-28
### Breaking Changes