Files
pulse-signage/CHANGELOG.md
T

20 KiB
Raw Permalink Blame History

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, and loop keys.
  • 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_json and 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_id on c_playlists and links directly to c_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-sources redirect.
  • 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_signature and 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 from c_playlist_slides after 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 scheduleGroups in 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 saveActionButtons helper, 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_sizes is 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 auto to 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/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 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

  • 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.