Releases: benwiley4000/cassette
v2.0.0-alpha.28
Fixes the React prop type spec for the playlist track's duration
property (your code will work the same if you stick with v2.0.0-alpha.27 but you will get less helpful console messages). (#382)
v2.0.0-alpha.27
This release contains a bunch of stuff, almost all related to time and duration.
There are breaking changes, although the majority of users will likely be unaffected.
Breaking changes
- The
startingTime
prop, which was new for the v2 alpha, has been removed and replaced by the optionalstartingTime
property on the playlist track object (#369) - The new
isUnboundedStream
track property should be set totrue
for any track that is an unbounded live stream. Otherwise loading the source will take twice as long as before (nothing will break, though). Typical time-bound sources are unaffected. (#373) - If you were reading the internals of the Cassette state snapshot in your program, your program will break. If you were using the snapshot in a normal way, nothing will break. If this does break your program and you don't know what to do, please open an issue so we can find a good solution for your use case! 🙂
Changes that almost definitely won't break anything
currentTime
state set on media element afterloadeddata
event instead ofloadedmetadata
event, andtrackLoading
now remainstrue
until thecanplay
event has fired (#370)- The context
duration
property is now always a number even if a live stream is playing (#377) currentTime
from snapshot no longer respected for live streams (#378)
Features
- New
duration
playlist track property (which can be specified as a number in milliseconds, or amm:ss
/hh:mm:ss
formatted string) is used as a stand-in until the track's metadata has loaded. Specifying this will make track loads feel snappier. (#372) - The
startingTime
playlist track property can be used to restore previous timestamps of tracks that were skipped before being finished. It is the developer's responsibility to store and retrieve the timestamp as well as update it in the playlist at runtime if needed, as the track will begin at its definedstartingTime
each time it is played. For most applications this is not needed. (#369) - The
onTimeUpdate
prop toPlayerContextProvider
can be used to save track timestamps to be used for thestartingTime
property (#369) - New
durationOverride
prop is optional forMediaProgress
,MediaProgressDisplay
,MediaProgressBar
andMediaProgressBarDisplay
. Not needed for most cases but may be desirable for a live stream in order to display the maximum seekable range even while the playing/buffering section is offset in the past. (#379)
Fixes
- Prevent
crossOrigin
issues in Microsoft Edge (#368) currentTime
gets set correctly on iOS (#370)- Prevent bad display and seeking issues for unbounded live streams by using the maximum visited timestamp as the duration (#377)
- No more unresponsive hangs when restoring a non-zero
currentTime
from snapshot for a live stream source - the time will be reset to 0 (and new snapshots won't save the currentTime for live stream sources) (#378) - Prevent
Infinity
track duration for non-live stream sources on iOS (#373)
v2.0.0-alpha.26
v2.0.0-alpha.25 of @cassette/hooks
was unpublished and replaced with v2.0.0-alpha.26 - the build configuration was screwed up the first time it was published.
v2.0.0-alpha.25
New features
- React Hooks (if that's your thing).. new
useFullscreenContext
andusePlayerContext
exports from the@cassette/hooks
package.
Deprecated usage
PlayerContextConsumer
's usage does not break, but you will now receive a warning if you do not pass the newfilterList
prop listing which items from theplayerContext
are being consumed.
v2.0.0-alpha.24
The breaking changes are minor and most likely non-disruptive, although it's possible you will be affected if you were doing something weird with the paused
state.
Breaking changes
- The
paused
state inplayerContext
will now betrue
between the time a track load begins and the time the track starts playing. Previously it wasfalse
during this time - The
awaitingResumeOnSeekComplete
context state has been removed and replaced byawaitingPlayResume
, which is true either if seeking is in progress or if the track play is pending a track load. ThePlayPauseButton
uses this internally so the visual behavior has not changed (except in Firefox, where there was a bug before). (#360)
Features
- New
getDisplayText
prop forMediaProgress
andMediaProgressDisplay
(#358) - New
mediaCannotPlay
state inplayerContext
istrue
if a load error occurred for the current track.onTrackPlaybackFailure
callback prop toPlayerContextProvider
allows listening for track load errors. (#356) - New subscription optimization for
playerContext
(#350)
Fixes
- The media status bar for
MediaPlayer
now reflects thegetDisplayText
prop instead of the default implementation. (#358)
v2.0.0-alpha.22
This version allows specifying a custom media element implementation via the createMediaElement
function prop (#349).
v2.0.0-alpha.21
New prop on PlayerContextProvider
- getMediaTitleAttributeForTrack
. This function prop allows you to set a custom title
attribute on the media element which is used in the system media controls on iOS. If you don't specify, the value will be artist - trackname
.
v2.0.0-alpha.17
Two new exports from @cassette/components
: MediaProgressBar
and its non-interactive counterpart MediaProgressBarDisplay
.
v2.0.0-alpha.16
New feature: trackIndex
prop to PlayPauseButton
from @cassette/player
makes the button belong to a specific track instead of the playlist in general.
v2.0.0-alpha.14
Some more miscellaneous bug fixes (to be detailed in the upcoming changelog)