20 KiB
20 KiB
Changelog
All notable changes to this project will be documented in this file.
2.5.1 - 2026-08-03
Added
- Template regions now include a dedicated advanced animation modal for editing intro, outro, and Attention Seekers settings directly.
Changed
- Template region animation settings now store as a single JSON object with
intro,outro, andloopkeys. - The template editor advanced animation field now edits the JSON object directly instead of separate preset selects.
- Animate.css is now loaded from vendored assets so template previews and player rendering use the local copy.
Fixed
- Existing databases now migrate legacy animation columns into
animation_jsonand then drop the old columns.
2.5.0 - 2026-08-03
Added
- Template regions now support intro, exit, and Attention Seekers animation presets in the editor, with in-canvas preview controls.
Changed
- The template editor now locks editing while preview playback is running so animation changes are easier to inspect.
Fixed
- Existing databases now receive the template region animation columns through the versioned migration path.
2.4.2 - 2026-08-02
Added
- Screen-level controls are now shown on the dashboard for quicker access to screen actions.
- Connected clients can now be moved to another screen from the dashboard, and the player redirects to the new screen after the binding updates.
- Playlist slide config now includes a mute toggle for video and RTMP items, and the player honors the stored mute state during playback.
Changed
- Playlist canvas lock now stores
canvas_idonc_playlistsand links directly toc_canvas_sizes. - Playlist add and edit now keep the selected canvas size tied to the playlist form flow, so canvas changes stay consistent while editing.
- RBAC permission sections now follow the same order as the admin sidebar, with section spacing kept in 10-point increments.
- Admin add/edit pages now share form view-model helpers and common form shells across data sources, signage, RBAC, and user settings, reducing duplicated template markup.
- Playlist editing now goes through a shared form page helper with dedicated schedule-rule cards and drag sorting, keeping slide rows and rule state in sync.
- Data sources now use per-section route modules for API sources, RSS feeds, and timetables, while the shared controller only keeps the root
/data-sourcesredirect. - The consolidated admin shell also refreshed shared layout, toast, login, and error rendering to match the newer helper registration flow.
- Connected client row actions now use consistent icon-and-label buttons for pause and blackout across the server-rendered page and live dashboard updates.
Fixed
- Canvas filtering for playlist slides now follows the selected canvas size id instead of a derived signature.
- Saving API sources and RSS feeds no longer throws an internal server error after the route split, because the shared data-source refresh task service is wired through the web bootstrap again.
2.4.1 - 2026-08-02
Changed
- Playlist canvas size is now stored on
c_playlists.canvas_signatureand the migration backfills existing single-canvas playlists.
Fixed
- Playlist canvas sizing no longer relies on startup bootstrap logic.
2.4.0 - 2026-08-02
Added
- Playlist slide scheduling now supports multiple OR-ed rule blocks instead of a single date-or-time schedule.
Changed
- Playlist slide schedule data now stores rule sets in
schedule_rules_json, and the migration backfills legacy schedule columns before dropping them.
Fixed
- Legacy
schedule_mode, date, time, and day columns are removed fromc_playlist_slidesafter the new rule schema is installed.
2.3.0 - 2026-08-02
Added
- Shared add/edit form templates now cover API sources, RSS feeds, announcements, canvas sizes, screens, and templates, reducing duplicate page markup.
- Schedule data source CRUD was added for grouped events in the admin UI.
- The schedule region was added for rendering grouped events in slides and player playback.
- Schedule data now flows through
scheduleGroupsin the slide editor and player payloads, letting the schedule region show upcoming or current entries from a selected group.
Changed
- Admin save actions were standardized around the shared
saveActionButtonshelper, including save, save-and-close, save-and-new, cancel, and delete controls. - Admin routes and page renderers now route through the shared form/view helpers instead of separate add/edit templates for the refactored sections.
- Toast, error, login, and shared layout rendering were refreshed to line up with the consolidated admin shell and helper registration flow.
Fixed
- Canvas size defaults now seed only once during bootstrap when
c_canvas_sizesis empty, instead of running from the schema layout path on every startup. - The schema bootstrap file is now limited to table layout definitions, with one-time seed data handled by the bootstrap layer.
2.2.2 - 2026-08-01
Fixed
- The theme bootstrap now resolves saved
autoto an actual dark or light value on first paint, so explicit dark mode no longer flashes white while the page loads. - The shared app header is now sticky so the top navigation stays visible while scrolling.
2.2.1 - 2026-08-01
Fixed
- Managed-font source files are now tracked correctly so packaged releases include the
src/web/lib/mediamodule 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_playersrow andd_screens.player_idpoints 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_playersrows 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
DELETErequest 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_pathmissing 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, andsrc/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.jsfocused on wiring and server startup. - Kept
player.jsmostly 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.jsso 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.