422 lines
15 KiB
Markdown
422 lines
15 KiB
Markdown
# Changelog
|
||
|
||
All notable changes to this project will be documented in this file.
|
||
|
||
## 2.2.1 - 2026-08-01
|
||
|
||
### Fixed
|
||
|
||
- Managed-font source files are now tracked correctly so packaged releases include the `src/web/lib/media` module instead of shipping a broken build.
|
||
|
||
## 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 page’s 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
|
||
|
||
- Breaking database schema changes were introduced in this release; existing databases may require migration or recreation before upgrading.
|
||
|
||
### Added
|
||
|
||
- Broader player and admin release coverage across onboarding, playlist playback, background task handling, and media-region support.
|
||
|
||
### Changed
|
||
|
||
- The database bootstrap and migration flow were reorganized, with shared DB helpers split out to support the newer schema layout.
|
||
- Admin and signage views were updated around the newer list, playlist, and RBAC behavior, including playlist scheduling and screen/client actions.
|
||
- Player runtime, onboarding, and region rendering were tightened so HTML, image, RSS, RTMP, text, video, and webpage regions follow the newer playback flow.
|
||
- Background task, upload sync, and data-source refresh handling were refined across the web app and startup paths.
|
||
- Docker, environment, README, and websocket/api documentation were refreshed to match the current release structure.
|
||
|
||
### Fixed
|
||
|
||
- Client name checks, playlist editing, and slide/media synchronization paths were adjusted to better preserve existing references during admin and player updates.
|
||
|
||
## 1.5.16 - 2026-07-26
|
||
|
||
### Added
|
||
|
||
- Background task handling was split into dedicated handler and scheduling modules, with startup data-source refreshes and unused-upload cleanup wired through the shared setup flow.
|
||
|
||
### Changed
|
||
|
||
- The admin shell, shared theme, and toast presentation were refreshed to match the newer layout and notification styling.
|
||
- Playlist scheduling now handles video-duration toggles and already-assigned slides more clearly in the picker and editor UI.
|
||
- RBAC and settings views were updated to align with the revised admin layout and shared table behavior.
|
||
|
||
### Fixed
|
||
|
||
- Template and slide thumbnail refreshes now run through the background task queue so template-wide thumbnail regeneration stays consistent.
|
||
|
||
## 1.5.15 - 2026-07-26
|
||
|
||
### Changed
|
||
|
||
- Player slide transitions now start and pause video playback around the fade window so video regions stay aligned with the slide boundary.
|
||
- Dashboard action cards now use a three-column grid on wider layouts.
|
||
|
||
### Fixed
|
||
|
||
- Slide video duration probes now preserve sub-second precision instead of rounding to whole seconds.
|
||
|
||
## 1.5.14 - 2026-07-26
|
||
|
||
### Fixed
|
||
|
||
- Dashboard client action icons now render valid Bootstrap Icon classes without duplicating the `bi-` prefix.
|
||
|
||
## 1.5.13 - 2026-07-26
|
||
|
||
### Added
|
||
|
||
- Shared table helpers for pagination, search, and sorting across the admin and signage views.
|
||
|
||
### Changed
|
||
|
||
- Refreshed the shared admin shell and moved common UI behavior into shared layout and helper modules.
|
||
- Reworked dashboard, background tasks, RBAC, and signage list pages to use the newer shared table and state flow.
|
||
- Updated the admin and player branding assets and tightened the page scripts around the new layout structure.
|
||
|
||
## 1.5.12 - 2026-07-26
|
||
|
||
### Changed
|
||
|
||
- Shared web UI helpers are now loaded once in the admin shell and reused across the dashboard, admin, and template editor.
|
||
- Template lists now show slide counts, and the template editor tracks which regions are already in use.
|
||
|
||
### Fixed
|
||
|
||
- Template editing now blocks removal of regions that are still referenced by slides.
|
||
|
||
## 1.5.11 - 2026-07-26
|
||
|
||
### Added
|
||
|
||
- Video regions are now supported end to end, including player rendering, admin editing, playlist scheduling, and player sync.
|
||
|
||
### Changed
|
||
|
||
- The slide, template, and playlist flows were updated so video content can be created, configured, and scheduled alongside existing region types.
|
||
- Player rendering and related media handling now recognize the new video region implementation.
|
||
|
||
### Fixed
|
||
|
||
- Region and upload handling were adjusted so video media syncs cleanly through the player and web admin paths.
|
||
|
||
## 1.5.10 - 2026-07-26
|
||
|
||
### Added
|
||
|
||
- Scheduled background tasks now have their own settings page, separate permission gate, and manual run action alongside the main queue view.
|
||
- The slide editor now includes a refreshed preview/sidebar layout and a cropper-based image upload flow.
|
||
|
||
### Changed
|
||
|
||
- Background task and admin list views now use richer pagination and filtering so queue state, task sources, and recurring jobs stay easier to navigate.
|
||
- The admin shell and shared styling were refreshed to support the updated settings pages, slide editor layout, and task table presentation.
|
||
|
||
### Fixed
|
||
|
||
- Upload sync and slide thumbnail refresh handling were tightened so slide changes queue follow-up work more reliably.
|
||
|
||
## 1.5.9 - 2026-07-26
|
||
|
||
### Fixed
|
||
|
||
- User creation now keeps the role checkboxes inside the add-user form so selected roles are submitted correctly.
|
||
|
||
## 1.5.8 - 2026-07-25
|
||
|
||
### Fixed
|
||
|
||
- Upload removal requests now authenticate correctly when a deployed player parses a bodyless `DELETE` request as an empty object, which could cause 401s for newly uploaded images.
|
||
|
||
## 1.5.6 - 2026-07-25
|
||
|
||
### Changed
|
||
|
||
- Playlist slide picker now uses a button to reveal already added slides, while still defaulting to showing only available slides.
|
||
- Already-added slides in the picker are now labeled and visually muted to make them easier to spot.
|
||
|
||
### Fixed
|
||
|
||
- Thumbnails in slide and playlist tables now follow the slide canvas ratio and cap at 5.5rem tall.
|
||
- Thumbnail-only table columns are no longer sortable.
|
||
|
||
## 1.5.5 - 2026-07-25
|
||
|
||
### Fixed
|
||
|
||
- Fixed a migration gap that could leave `slides.thumbnail_path` missing on upgraded databases.
|
||
|
||
## 1.5.4 - 2026-07-25
|
||
|
||
### Added
|
||
|
||
- Cropper.js has been added to aid with image uploading.
|
||
|
||
### Changed
|
||
|
||
- Upgraded Multer to 2.x to remove the deprecated 1.x dependency warning.
|
||
- Tightened a few admin UI details, including slide editor and RBAC list spacing/typography adjustments.
|
||
|
||
## 1.5.3 - 2026-07-25
|
||
|
||
### Added
|
||
|
||
- A modal-based slide picker for playlist editing with search, multi-select, and slide thumbnails.
|
||
- Reusable modal and table-pagination helpers for the admin UI.
|
||
- Slide thumbnail previews in playlist schedules, with image fallbacks when a thumbnail is missing.
|
||
|
||
### Changed
|
||
|
||
- RTMP playback now probes session readiness more aggressively and retries startup before surfacing failures.
|
||
- Playlist editing now includes richer scheduling controls, live slide counts, and support for skipping unavailable RTMP slides.
|
||
- Admin lists and background task pages now preserve filter and pagination state during AJAX navigation.
|
||
- Shared admin shell styling and helpers were refreshed to support the newer list, modal, and pagination UI.
|
||
|
||
### Fixed
|
||
|
||
- Player upload sync and route handling now degrade more gracefully when backend services are unavailable.
|
||
- RTMP and playlist playback now recover more cleanly when a stream fails to initialize or respond in time.
|
||
|
||
## 1.5.2 - 2026-07-25
|
||
|
||
### Fixed
|
||
|
||
- Fixed player media upload sync so signed upload requests are verified after the request body has been parsed.
|
||
|
||
## 1.5.1 - 2026-07-25
|
||
|
||
### Fixed
|
||
|
||
- Fixed the account page so it can save changes again.
|
||
|
||
## 1.5.0 - 2026-07-25
|
||
|
||
### Added
|
||
|
||
- RTMP slide regions with ffmpeg-to-HLS playback support in the player.
|
||
- Service-worker-backed player caching and offline recovery paths for playlists and playback state.
|
||
- Broader slide, template, playlist, RSS, and API source support, including richer region handling and background refresh processing.
|
||
|
||
### Changed
|
||
|
||
- Reworked the web admin app around a newer modular route and view layout, with shared helpers moving into `src/web/lib`, `src/web/pages`, and `src/web/views`.
|
||
- Refreshed the admin shell styling and theme bootstrapping, including local AdminLTE assets, vendored Bootstrap Icons, and earlier theme initialization on first paint.
|
||
- Rebuilt RBAC around CRUD permissions and updated the admin screens for roles, users, and action gating.
|
||
- Refactored the player onboarding flow, client-name handling, and runtime storage so screen identities persist more reliably across refreshes.
|
||
- Tightened duplicate-name checks and other admin-side validation paths.
|
||
|
||
### Fixed
|
||
|
||
- Improved player fallback behavior when the database is unavailable.
|
||
- Cleaned up player runtime and routing paths so screen lookups and live updates degrade more gracefully.
|
||
|
||
### Docs and Ops
|
||
|
||
- Updated Docker, environment, and documentation files to match the current release structure and player/web APIs.
|
||
|
||
## 1.4.6 - 2026-07-22
|
||
|
||
### Changed
|
||
|
||
- Refined RBAC enforcement across the admin UI and route layer, especially for list actions and edit screens.
|
||
- Updated the dashboard and admin styling to match the revised permission model and page layout.
|
||
- Adjusted database helpers and admin data views to support the newer RBAC and list rendering behavior.
|
||
|
||
## 1.4.5 - 2026-07-21
|
||
|
||
### Changed
|
||
|
||
- Renamed the admin screen commands route to client commands and aligned the dashboard copy with client-focused terminology.
|
||
- Updated the RBAC and database helpers to support the revised client command flow.
|
||
- Refined the client list view and dashboard interactions around the new client command behavior.
|
||
|
||
## 1.4.4 - 2026-07-21
|
||
|
||
### Fixed
|
||
|
||
- Rendered 404 pages for unmatched routes.
|
||
|
||
## 1.4.3 - 2026-07-21
|
||
|
||
### Fixed
|
||
|
||
- Fixed RBAC client action visibility.
|
||
|
||
## 1.4.2 - 2026-07-21
|
||
|
||
### Fixed
|
||
|
||
- Fixed duplicate permissions cleanup.
|
||
|
||
## 1.4.1 - 2026-07-21
|
||
|
||
### Added
|
||
|
||
- RBAC roles system support.
|
||
|
||
### Changed
|
||
|
||
- Version bump to 1.4.1.
|
||
|
||
### Fixed
|
||
|
||
- Schema migration audit columns.
|
||
|
||
## 1.3.4 - 2026-07-21
|
||
|
||
### Fixed
|
||
|
||
- Fixed duplicate onboarding client names.
|
||
|
||
## 1.3.3 - 2026-07-21
|
||
|
||
### 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.
|
||
|
||
## 1.3.2 - 2026-07-21
|
||
|
||
### Changed
|
||
|
||
- Version bump to 1.3.2.
|
||
|
||
## 1.3.0 - 2026-07-20
|
||
|
||
### Added
|
||
|
||
- Split shared helpers, bootstrap logic, route groups, and upload-sync behavior out of `web.js`.
|
||
- Split websocket and runtime handling into `runtime.js`.
|
||
- Split playlist assembly and revision hashing into `playlist.js`.
|
||
- Split onboarding and player HTTP routes into dedicated modules.
|
||
- Split render utilities and template loading into `render-helpers.js`.
|
||
|
||
### Changed
|
||
|
||
- Kept `web.js` focused on wiring and server startup.
|
||
- Kept `player.js` mostly as startup and orchestration.
|
||
|
||
### Fixed
|
||
|
||
- Fixed screen playlist reassignment so changing a screen's playlist now triggers a refresh.
|
||
- Fixed single-slide playlist refresh behavior so updates do not get stuck behind the current slide.
|
||
|
||
## 1.1.5 - 2026-07-15
|
||
|
||
### Fixed
|
||
|
||
- Fixed text pasting in the admin UI.
|
||
|
||
## 1.1.4 - 2026-07-15
|
||
|
||
### Fixed
|
||
|
||
- Fixed the admin table and playlist reorder UI.
|
||
|
||
## 1.1.3 - 2026-07-15
|
||
|
||
### Added
|
||
|
||
- Playlist drag sorting.
|
||
- Local SortableJS.
|
||
- Playlist UI updates.
|
||
|
||
## 1.1.2 - 2026-07-14
|
||
|
||
### Changed
|
||
|
||
- Updated the admin layout and frame shell styling.
|
||
- Refined `src/web/view.js` so view rendering handles the revised shell structure.
|
||
- Adjusted package metadata for the release.
|
||
|
||
## 1.1.1 - 2026-07-14
|
||
|
||
### Changed
|
||
|
||
- Refreshed favicon and layout assets.
|
||
|
||
## 1.1.0 - 2026-07-14
|
||
|
||
### Changed
|
||
|
||
- Refactored the web server and release workflow.
|
||
|
||
## 1.0.2 - 2026-07-14
|
||
|
||
### Fixed
|
||
|
||
- Handled player redirects on screen slug change.
|
||
|
||
## 1.0.1 - 2026-07-14
|
||
|
||
### Changed
|
||
|
||
- Made screen slugs editable.
|
||
|
||
## 1.0.0 - 2026-07-14
|
||
|
||
### Fixed
|
||
|
||
- Initial release. |