Bug Fixes:
- Fixed pathless file loading so drag/drop and fallback file-input lyrics are routed through the Electron parser with raw text, preserving user parser grouping preferences.
- Fixed LRC parsing so blank timestamped lines are preserved without visible placeholder characters.
- Fixed OSC /setlist/load so zero-based setlist indexes correctly load setlist items as called by @hdml
- Fixed timer/stage/clock visibility so completed terminal countdowns no longer block idle clock display.
- Fixed legacy timer display scale migration while preserving user-customized timer scale settings.
- Improved lyric section/search navigation so jumps center more reliably in normal and virtualized lists.
- Improved socket reconnect handling after transport-level disconnects.
- Fixed backend startup handling for slower launches with soft and hard startup timeouts.
- Improved NDI companion install-path resolution, legacy folder migration, stale artifact cleanup, and uninstall cleanup.
- Fixed modal timeout behavior for critical renderer modals and tightened modal scrolling/visual behavior.
- Updated donation/support links to https://lyricdisplay.app/donate.
Added Features:
- Added bundled template images to the user media modal for fullscreen backgrounds and elements.
- Added parser option passthrough for worker/local parsing, including grouping configuration>
- Added filePath alias support for Electron IPC lyric parsing.
- Added timer visibility utility with coverage for active/idle timer behavior.
- Updated dependency stack, including Electron, Vite, Tailwind/PostCSS, Zustand, React ecosystem packages, and server packages.
NDI Companion Update:
- Dependencies maintenance and updates.
Bug Fixes:
- Improved production recovery for backend startup, socket failures, chunk-load errors and updater fallback paths.
- Hardened controller authentication, admin validation, localhost access checks and release audit coverage.
- Tightened file and setlist validation to handle invalid files, unsafe paths, oversized setlists and moved/deleted files more reliably.
- Fixed fullscreen projection bug on same laptop screen on Linux/MacOS by adding Esc key closure for opened outputs as called by @leirbag28.
- Fixed intelligent autoplay timestamp drift as called by @hdml, section-title keyboard navigation and timer progress sync, as called by user Chuck McGuire.
Added Features:
- Added live safety mode and production readiness checks for service-critical output, connection, NDI, media and safety state.
- Added the operator action log modal for reviewing and exporting recent live-control actions.
Added OSC commands for intelligent autoplay control as called by @hdml.
- Reorganized the desktop top menu with clearer Output and Tools categories, while keeping import actions under File.
- Added focused static checks and unit coverage for auth, security, setlists, output state, parsing, autoplay, timer and lyric navigation.
- Centralized output-route and setlist-limit definitions so desktop, server and validation paths use the same rules.
Bug Fixes:
- Fixed OOM Crash due to memory ballooning from main app process when timer is running with control module open. A soild and final enhancement to previous fixes.
- Legacy user data folder migration and cleanup tightened to remove old, unused folders.
- Fixed user preferences modal and quick parser settings sync bug.
Added Features:
- New, focused output settings templates for diverse use cases.
Bug Fixes:
- Refactored routing and lazy loading in main App entry point to address high memory usage when timer control module is opened.
- Fixed main app window crashing when timer control window is open; added production logging feature to catch future window crashes.
- Fixed project output modal's visibly overflowing footer.
- Fixed preview outputs modal display points not showing lyrics until global toggle.
- Fixed structure tags parsing bug for some songs by expanding tag list regex for various forms and standards.
Bug Fixes:
- Fixed timer control module settings and values to persist on app restarts
- Fixed minor bugs on projection output modal
Added Features:
- OBS Source Creator Window: Uses OBS WebSocket protocol to remotely connect to OBS if running on same computer to create a LyricDisplay output browser source from within the app interface. For network setups, users would be required to enter provided network URL on the OBS system's browser and create the browser source from there.
- Restructured projection output modal to be more compact and user friendly
Dev:
- Major refactors on large components into smaller presentational pieces and hooks.
Bug Fixes:
- Smart deduplication of global modals especially Project Output modal. Max number of global modals openable at same time capped at 3.
- Removed unresponsive lyrics providers (Vagalume and Hymnary.org) due to bad gateway, no proper support, etc.
- Fixed window layout for Timer control module plus other fixes to improve overall usability.
Added Features:
- New User Media modal that allows users to select and re-use videos/images from their computers for use in various parts of the app.
- Added new "Add Element/Image" feature to fullscreen mode in output settings panel for use cases such as needing to include a custom logo into lyrics background.
- Added popover tutorials for some functions and features of the app. Will be updated in further releases.
For Devs:
- Refactored server index and events monoliths into smaller consumable modules.
New Features:
- Added dedicated timer module with new /time routing and page for dedicated timer display with custom, robust control panel for all timer related functions and customization
- Added Security key management in advanced preferences
- Minor UI enhancements and tweaks to improve your LyricDisplay experience
Bug Fixes:
- Fixed label issues in dark mode for some modals
- Fixed projected outputs cleanup and active list refresh
- Numerous minor bug fixes
Added Features:
- Added a new Project Output modal for assigning and managing projections for Output 1/2, custom outputs, and Stage.
- Added a new stageMessages utility for normalizing and managing custom stage messages.
- Added enhanced stage display controls for custom messages and related stage configuration behavior.
Bug Fixes:
- Fixed repeated chorus/refrain marker parsing bug.
- Fixed stage settings and stage output sync/UX issues tied to custom display controls.
- Fixed lyrics list chips layout behavior by switching from wrapping to horizontal scrolling for better usability.
Bug Fixes:
- Fixed custom output automatic teardown upon deletion from control panel
Features:
- Added configurable line spacing in output and stage settings panel
- Expanded fullscreen mode store to include font size and font colour with their related settings, letter and line spacing, and margins
Added Features:
- Added expanded multi-output workflow with support for more output creation (Output 3–6) and better output management flow.
- Added NDI output registry sync so newly created/removed outputs are automatically reflected in NDI settings and companion resync.
- Added new parser controls:
Quick parser controls
Configurable line-grouping behavior
Smarter refrain/chorus expansion from previously defined sections
Stage-only line parsing support
- Added new user preferences:
Disable automatic app updates
Disable hardware acceleration
- Added global Escape key handling for closing modals across the app.
- Enhanced output preview modal to include Stage and custom outputs.
- Performed general cleanup and UI polish across modals, auth status indicators and layout spacing.
Bug Fixes:
- Fixed lyric filename-clearing issues after sync/output actions.
- Fixed additional output toggle state bugs (individual toggle state now behaves correctly).
- Fixed multiple socket-event regressions affecting additional outputs and Stage timer behavior.
- Fixed issues introduced during the first custom output creation rollout and stabilized the flow.
- Fixed auth-status modal issues and resolved Vite dynamic import warnings.
- Fixed jsconfig.json path alias/deprecated baseUrl configuration issues.
- Multiple minor bug fixes
Stability and Internal Improvements (For developers):
- Refactored lyric parsing into modular components for maintainability and safer future parser updates.
- Refactored NDI internals (installer, IPC client, output settings modules) to improve reliability and lifecycle handling.