diff --git a/CHANGELOG.md b/CHANGELOG.md index 42e3367..448009f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,36 +6,36 @@ All notable changes to this project will be documented in this file. ### Added -- Added secure administrator invitations that create accounts only after the recipient accepts the invitation. -- Added configurable API progress-bar placeholders with AdminLTE and announcement palette colors, custom colors, striped and animated variants, and quoted numeric literals. -- Added an optional `textless` progress-bar modifier to hide the visible percentage while retaining progress accessibility metadata. -- Added configurable progress-bar radius options including `square`, `pill`, `rounded`, and validated `radius(...)` values. -- Added arithmetic API placeholder transforms for adding, subtracting, multiplying, and dividing numeric values. -- Added time-based progress bars using start and end date/time fields to show elapsed timetable-item progress. -- Added audit events for invitation sending and acceptance, email verification, password-reset requests, and account email changes. -- Added a pending invitations page with invitation-specific Read, Create, Delete, and Allow permissions. -- Added invitation deletion and resend actions with confirmation prompts. -- Added an opt-in Weather audit category for weather-location changes and manually queued refreshes. -- Added opt-in per-command Screen Controls auditing, with forward and back navigation grouped together and disabled by default. +- Secure administrator invitations that create accounts only after the recipient accepts the invitation. +- Configurable API progress-bar placeholders with AdminLTE and announcement palette colors, custom colors, striped and animated variants, and quoted numeric literals. +- An optional `textless` progress-bar modifier to hide the visible percentage while retaining progress accessibility metadata. +- Configurable progress-bar radius options including `square`, `pill`, `rounded`, and validated `radius(...)` values. +- Arithmetic API placeholder transforms for adding, subtracting, multiplying, and dividing numeric values. +- Time-based progress bars using start and end date/time fields to show elapsed timetable-item progress. +- Audit events for invitation sending and acceptance, email verification, password-reset requests, and account email changes. +- A pending invitations page with invitation-specific Read, Create, Delete, and Allow permissions. +- Invitation deletion and resend actions with confirmation prompts. +- An opt-in Weather audit category for weather-location changes and manually queued refreshes. +- Opt-in per-command Screen Controls auditing, with forward and back navigation grouped together and disabled by default. +- The pending invitations list now supports pagination, search, and sorting, with Users, Roles, and Invitations grouped under expandable User management navigation. +- API progress calculations now support object-wrapped amounts. ### Changed - Updated the invitation registration page to show fields only for valid tokens, use the themed failure state for invalid links, and pre-fill the invited email and display name. - Made the invited email visibly disabled, kept the display name editable and required, and aligned invitation actions with the existing user forms. -- Added shared pagination, search, and sorting to the pending invitations list and grouped Users, Roles, and Invitations under expandable User management navigation. - Updated API progress bars to inherit the surrounding WYSIWYG text size and text color, preserve rounded corners, and render consistently in the editor preview, player, and thumbnails. -- Added support for object-wrapped API amounts in player-side progress calculations. ## 2.11.0 - 2026-09-02 ### Added -- Added optional account emails with administrator verification bypass, email verification, password recovery, and confirmed email changes. -- Added SMTP configuration and mail delivery for account notifications. +- Optional account emails with administrator verification bypass, email verification, password recovery, and confirmed email changes. +- SMTP configuration and mail delivery for account notifications. +- Autofill restrictions for Bitwarden, LastPass, and 1Password on account profile and new-password fields while preserving current-password autofill. ### Changed -- Added autofill restrictions for Bitwarden, LastPass, and 1Password on account profile and new-password fields while preserving current-password autofill. - Updated account email templates and previews to support both line breaks and paragraph spacing. ## 2.10.7 - 2026-09-02 @@ -44,6 +44,7 @@ All notable changes to this project will be documented in this file. - API token authentication now reuses access tokens until their expiry and can renew them with a refresh token, including refresh-token rotation. - API sources can configure a refresh URL, JSON request body, and refresh-token response path. +- Client status badges now show Live, Paused, and Blackout states in the responsive Connected clients view. ### Changed @@ -53,16 +54,18 @@ All notable changes to this project will be documented in this file. ### Fixed - Fixed client screen moves from mobile cards so the next move disables the client’s current screen group rather than its previous one. -- Added Live, Paused, and Blackout client status badges to the responsive Connected clients view. - Removed unused Bootstrap Icons font preloads that triggered browser warnings on pages where icons were not rendered. ## 2.10.6 - 2026-08-29 +### Added + +- Playlist recovery now uses cached browser and server snapshots, reports offline status, and recovers after cached responses. + ### Changed - Refactored the player runtime into focused animation, media, transition, command, playback, and rendering modules. - Improved player slide transitions and video playback by preloading media, preserving precise durations, pausing outgoing videos during crossfades, and deferring expensive post-render setup. -- Added resilient playlist recovery through cached browser and server snapshots, offline status reporting, and refresh handling that recovers after cached responses. ### Fixed @@ -88,6 +91,11 @@ All notable changes to this project will be documented in this file. ## 2.10.3 - 2026-08-28 +### Added + +- Remote screens now poll periodically to recover from missed refresh commands after bridge reconnects. +- Screens now use cached playlist snapshots while the bridge or web service is temporarily unavailable. + ### Fixed - Fixed the weather edit preview so the daily forecast is shown initially, the 24-hour forecast is hidden until selected, and the redundant hourly heading is removed. @@ -98,8 +106,6 @@ All notable changes to this project will be documented in this file. - Fixed remote player heartbeats to update the central onboarding bindings for active browser clients without treating the physical player registry ID as a client binding. - Fixed targeted commands after browser reconnects by falling back to the stable client ID when a transient connection ID is stale. - Fixed stale browser command connections remaining active indefinitely when the physical player heartbeat was still healthy. -- Added periodic playlist polling so remote screens recover from missed refresh commands after bridge reconnects. -- Added cached playlist snapshots so screens can continue displaying their last known playlist while the bridge or web service is temporarily unavailable. - Fixed media synchronization so generated player caches are excluded while remote image caches remain available to players. - Fixed weather screen notifications so changes in the fetched data or the current forecast hour trigger a refresh. - Fixed player runtime script loading and slide rendering so region modules, transitions, and cached playlists initialize consistently. @@ -108,39 +114,42 @@ All notable changes to this project will be documented in this file. ## 2.10.2 - 2026-08-28 +### Added + +- Onboarding client heartbeats are now persisted so records inactive for 24 hours can be pruned without relying on player connectivity after the fact. + ### Fixed - Fixed the weather forecast preview to show only its first-fetch message until a successful forecast is available. -- Added persisted onboarding client heartbeats so records inactive for 24 hours can be pruned without relying on player connectivity after the fact. ## 2.10.1 - 2026-08-28 ### Added -- Added linear gradient backgrounds to templates, including multiple colours and angle control. -- Added a visual gradient stop editor with draggable stops, click-to-add support, and stop reordering. +- Linear gradient backgrounds to templates, including multiple colours and angle control. +- A visual gradient stop editor with draggable stops, click-to-add support, and stop reordering. ## 2.10.0 - 2026-08-28 ### Added -- Added secure kiosk onboarding with QR-first and manual pairing flows. -- Added browser-specific pairing sessions with expiring pairing codes. -- Added circular QR presentation and a compatible QR scanner with decoder fallbacks. -- Added responsive player onboarding and a post-pair option to connect another player. -- Added stable player identity bindings for paired players and moved-client aliases. -- Added per-tab client identities backed by browser session storage for commands, pairing, and screen moves. -- Added RBAC protection for player pairing through the `pairing.allow` permission. -- Added a dedicated web onboarding workflow for pairing and managing player setup. +- Secure kiosk onboarding with QR-first and manual pairing flows. +- Browser-specific pairing sessions with expiring pairing codes. +- Circular QR presentation and a compatible QR scanner with decoder fallbacks. +- Responsive player onboarding and a post-pair option to connect another player. +- Stable player identity bindings for paired players and moved-client aliases. +- Per-tab client identities backed by browser session storage for commands, pairing, and screen moves. +- RBAC protection for player pairing through the `pairing.allow` permission. +- A dedicated web onboarding workflow for pairing and managing player setup. +- Pairing entry points now appear in the dashboard and connected clients workflows. +- A mobile-friendly connected clients link is now shown after successful pairing. +- Player keyboard feedback now includes slide navigation, plus `P` pause/unpause and `B` blackout toggles. ### Changed - Restricted direct screen URLs to the player configured for the requested screen. -- Added pairing entry points to the dashboard and connected clients workflows. - Made pairing QR codes easier to scan by encoding only the short pairing code. -- Added a mobile-friendly connected clients link after successful pairing. - Made connected-client controls and player pairing UI render independently according to their permissions. -- Added player keyboard feedback for slide navigation, plus `P` pause/unpause and `B` blackout toggles. - Removed client identities from onboarding and screen-move URLs; authorized player data now loads after the tab identity handshake. - Updated connected-client commands and screen moves to resolve tab and registered-player identities reliably. @@ -149,9 +158,10 @@ All notable changes to this project will be documented in this file. ### Added - API sources, RSS feeds, and weather locations can be enabled or disabled without deleting their cached data. -- Added Weather slide regions with current, daily, and hourly placeholders, date/time transforms, and Bootstrap weather icon transforms. -- Added multiple saved weather locations with provider, coordinate, unit, and refresh settings. -- Added separate Allow permissions for manually refreshing API sources, RSS feeds, and weather locations. +- Weather slide regions with current, daily, and hourly placeholders, date/time transforms, and Bootstrap weather icon transforms. +- Multiple saved weather locations with provider, coordinate, unit, and refresh settings. +- Separate Allow permissions for manually refreshing API sources, RSS feeds, and weather locations. +- Announcement colour choices and player rendering now include the AdminLTE extended palette colours. ### Changed @@ -164,7 +174,6 @@ All notable changes to this project will be documented in this file. - Startup data-source refreshes now respect each API, RSS, and weather source's configured repull interval. - RSS feeds now persist their last collection timestamp. - Refreshed the vendored AdminLTE assets to 4.8.5. -- Added AdminLTE extended palette colours to announcement colour choices and player rendering. - Removed Digital Signage Subheading and top padding. - API and RSS source saves now preserve cached data without pulling; added explicit manual refresh actions. @@ -172,13 +181,16 @@ All notable changes to this project will be documented in this file. ### Added -- Added configurable JSON POST requests and two-step login-then-token authentication for API sources. +- Configurable JSON POST requests and two-step login-then-token authentication for API sources. ## 2.8.6 - 2026-08-18 +### Added + +- URL fields now provide live validation with inline feedback and explicit HTTP or HTTPS scheme enforcement. + ### Fixed -- Added live URL validation with inline feedback and explicit HTTP or HTTPS scheme enforcement for URL fields. - Prevented Enter in slide editor inputs from implicitly saving the slide. - Collapsed nested API response JSON sections by default while keeping the root response visible. @@ -193,8 +205,8 @@ All notable changes to this project will be documented in this file. ### Added -- Added local caching for API and RSS image placeholders under `player-cache/remote-images` for offline player playback. -- Added reconciliation of cached remote images so files no longer referenced by slides are removed. +- Local caching for API and RSS image placeholders under `player-cache/remote-images` for offline player playback. +- Reconciliation of cached remote images so files no longer referenced by slides are removed. ### Fixed @@ -206,8 +218,8 @@ All notable changes to this project will be documented in this file. ### Added -- Added API, RSS, Timetable, and Time / Date placeholder help panels with shared transform and date-token documentation. -- Added render-time API and RSS image placeholders with proportional sizing and preview-only bounding boxes. +- API, RSS, Timetable, and Time / Date placeholder help panels with shared transform and date-token documentation. +- Render-time API and RSS image placeholders with proportional sizing and preview-only bounding boxes. ### Changed @@ -252,6 +264,7 @@ All notable changes to this project will be documented in this file. - A permissions-gated System Settings page for announcement icon suggestions, media upload limits and MIME types, session lifetime, and password-change policies. - Configurable forced password changes for newly created users and administrator password resets. - The database foundation for key-based application settings, including typed defaults and validation. +- All tables now use numeric auto-increment identifiers while retaining natural or relationship keys as unique constraints. ### Changed @@ -266,7 +279,6 @@ All notable changes to this project will be documented in this file. - Replaced password strength presets with customizable length, category, and character requirements. - Session expiration now uses the configured system setting, and user and role administration is grouped under the Settings area. - Renamed the system settings permissions to the `system-settings.*` namespace and migrated existing role assignments. -- Added numeric auto-increment identifiers to every table and retained natural or relationship keys as unique constraints. ## 2.7.6 - 2026-08-15 @@ -564,7 +576,7 @@ All notable changes to this project will be documented in this file. ### Added -- Added branded Windows and Linux kiosk launcher downloads on the dashboard, with updated copy that explains the launcher behavior more clearly. +- Branded Windows and Linux kiosk launcher downloads on the dashboard, with updated copy that explains the launcher behavior more clearly. - Kiosk launchers now start the browser in kiosk mode, suppress notifications for Chromium-based browsers, and use the correct Firefox kiosk flag. @@ -862,13 +874,13 @@ All notable changes to this project will be documented in this file. ### Added - Screen and dashboard player links now render the full player URL instead of only the player base host. +- Notes near the singleton-player code paths to make the future multi-player migration work easier to revisit. ### 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. @@ -1141,9 +1153,12 @@ All notable changes to this project will be documented in this file. ## 1.3.3 - 2026-07-21 +### Added + +- The first round of modular admin-page work, including a shared admin route layer and refreshed dashboard/list rendering. + ### Changed -- Added the first round of modular admin-page work, including a shared admin route layer and refreshed dashboard/list rendering. - Updated the admin shell styling and layout handling for the newer page structure. - Adjusted package metadata and lockfile state to match the release. @@ -1229,4 +1244,4 @@ All notable changes to this project will be documented in this file. ### Fixed -- Initial release. \ No newline at end of file +- Initial release.