Changelog
All notable, user-facing changes to @hopecloud/jetstream-player are documented here. The format follows Keep a Changelog, and the project adheres to Semantic Versioning.
Unreleased
[1.3.0] - 2026-06-17
Added
on()andoff()methods — subscribe to player events after the instance is created, the dynamic counterpart to theeventsconstructor option. Multiple listeners per event are supported;on()returns an unsubscribe function, andoff(event)(no handler) clears every listener for that event:tsconst off = player.on('timeupdate', (seconds) => console.log(seconds)); off(); // or: player.off('timeupdate')
[1.2.0] - 2026-06-17
Breaking
- Removed the internal wire-codec exports
normalizeEventData,denormalizeEventData, andisValidEventData. They were never meant to be public; the package now exports onlyJetstreamPlayerand the player types. - Replaced the
IFrameBuilderSrcOptandIFrameBuilderOpttypes with a singleEmbedFrameOptions.
Added
originoption — point the iframe at a specific embed host (a staging host, or the production host directly) to skip the redirect:tsnew JetstreamPlayer('#player', { mediaId: 'jsv:xxxxxxxxxx', origin: 'https://embed.jetstream.studio', });Optional
playerIdand relaxed ids —playerIdmay be omitted, and id formats are no longer enforced, so live stream (jsl:) ids and custom player ids work.
Fixed
- Commands and events no longer silently fail after a redirect. The embed URL
302-redirects to its real host; the SDK now learns that host from the iframe's own messages instead of trusting the pre-redirect origin, soplay(), events, and getters keep working. - Getters no longer hang forever.
isMuted(),isPaused(),getVideoCurrentTime(), andgetDuration()reject after 5 seconds if the player never replies.