Skip to content

Major Update: multi-engine support, new providers: YouTube and Vimeo, better state preservation & system integration, new APIs and more.

Latest

Choose a tag to compare

@alphanull alphanull released this 19 Dec 14:45
f695b81

[1.3.0] - 2025-12-19

Added

  • Multi-Engine Architecture: New pluggable engine system with capability-based selection and runtime switching. Engines can be registered and dynamically selected based on media type and capabilities.
  • Engine API: New player methods addEngine(), removeEngine(), getEngine(), setEngine(), and canPlay() for managing media engines.
  • Engine Events: New events player/engine/set and player/engine/switched for tracking engine changes.
  • Engine Docs: New docs/guides/Engines.md covering multi-engine usage, capabilities, suspend/resume, events, and namespaced APIs.
  • YouTube Provider: Built-in engine for YouTube video playback with full player UI integration.
  • Vimeo Provider: Built-in engine for Vimeo video playback with full player UI integration.
  • Capability-aware Components: The following components now support the engine capability system, and update themselves on engine switches: Play, PlayOverlay, PlaybackRate, Loop, PictureInPicture, Time, Title, Keyboard, Scrubber, Subtitles, AudioChain, AudioControls, VideoControls and AnalyserVideo.
  • Data update-aware components: the following components are reacting to the new data/updateevent: Chapters, Title and the new SubtitlesUi
  • State Preservation: Player state (playback position, paused state, volume, muted state, picture-in-picture) is now preserved (if possible) when switching between media items in playlists.
  • Data API: New data.updateMediaData API allows for partial media data updates.
  • Media Session Component: This new component uses the Media Session API for better support for system media controls, including artwork and playlist support.
  • UI Wake Lock: Optional Screen Wake Lock integration to keep the display on while playing and release it on pause/end/errors or when the tab is hidden.
  • Orientation Lock: A new option for the Fullscreen Conmponent that controls the screen orientation when entering FS mode.
  • Script Loader Utility: New centralized scriptLoader utility for loading external JavaScript libraries (Dash.js, Hls.js, ChromeCast API) with deduplication, cancellation support, and improved error handling.
  • SubtitleUi: New component which provides subtitle settings independently from the Subtitles component.
  • Demo Page: New demo examples for YouTube and Vimeo providers.
  • Notifications: New "Warning" display state supported.
  • Automatic Workspace Folders: Direct source editing in chrome support via vite-plugin-devtools-json.

Changed

  • ChromeCast Refactoring: Completely refactored ChromeCast component to work as a media engine with improved state management, better error handling, and unified API integration. In addition, ChromeCCast now also works in secure mode.
  • Media Component: Refactored to work as the default video engine with capability-based registration.
  • Data Component: data.setMediaIndex now preserves current media state when options are omitted.
  • Subtitles Component: Simplified subtitles component by removing internal menu system.
  • Streaming Plugins: Dash.js and Hls.js plugins now use the centralized script loader utility for more reliable library loading with deduplication.
  • Playlist Navigation: Playlist now preserves player state (playback position, paused state, volume, muted) when switching between media items.
  • API Namespace: Engine-specific APIs now use namespace prefix format (e.g., video:media.load, chromecast:media.play) to support multiple engines.
  • Locale Error Messages: Updated error messages for library loading failures to use dynamic library names and improved messaging.
  • Enhanced Locale Messages: Changed locale strings for script loader errors and Picture-in-Picture browser restrictions in all supported languages.
  • CSS Library: Updated CSS with various improvements and fixes.
  • JSDoc Formatting: Cleaned up JSDoc formatting across the codebase.
  • JSDoc Configuration: Updated to version 1.3.0, added canonical URL and sitemap configuration for better SEO.
  • Know Issues Page: Moved the "Known Issues" Section in the readme to a dedicated page.
  • Dependencies: Updated development dependencies.

Fixed

  • Script Loading: Fixed duplicate script loading issues when multiple player instances or components request the same external library.
  • State Management: Fixed state not being preserved correctly when switching between different media types (native video, YouTube, Vimeo, etc.).
  • ChromeCast State: Fixed ChromeCast state synchronization issues and improved connection handling.
  • Picture-in-Picture: Improved Picture-in-Picture support detection and error handling, especially for iframe-embedded videos.
  • Playlist State: Fixed playlist not preserving playback state when navigating between items.
  • Subtitles Rendering: Improved subtitle rendering when switching between engines.
  • domSmithInputRange: Touch interactions now properly respect the disabled state.
  • Mobile UI: Fixed problem where media would play on first touch inadvertently.