All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Revert bumps to hls.js and eventemitter3
- BREAKING Revert webpack -> vite migration and keep player event updates
- Bump node minor version to 20.18.0
- Re-added
playerId
to player events
- Update dependencies:
- Bump axios to 1.1.7
- Bump hls.js to 1.5.15
- Bump iso8601-duration to 2.1.2
- Bump sass to 1.79.3
- Bump sass-loader to 16.0.2
- Bump uuid to 8.3.2
- Bump webpack-bundle-analyzer to 4.10.2
- Update dev dependencies:
- Bump webpack-cli/serve to 2.0.5
- Bump audit-ci to 7.1.0
- Bump axios-mock-adapter to 2.0.0
- Bump boclips-js-security to 13.0.1
- Bump copy-webpack-plugin to 12.0.2
- Bump css-loader to 7.1.2
- Bump html-webpack-plugin to 5.6.0
- Bump jest to 29.7.0
- Bump mini-css-extract-plugin to 2.9.1
- Bump prettier to 3.3.3
- Bump prettier-package-json to 2.8.0
- Bump source-map-loader to 5.0.0
- Bump ts-jest to 29.2.5
- Bump typescript to 5.6.2
- Bump typescript-tslint-plugin to 1.0.2
- Bump webpack to 5.95.0
- Bump webpack-cli to 5.1.4
- Bump webpack-dev-server to 5.1.0
- Bump webpack-merge to 6.0.1
- Adding dependencies:
- Added jest-mock 29.7.0
- Adding dev dependencies:
- Added jest/globals 29.7.0
- Remove unused dependencies:
- Removed boclips-ui/styles
- Removed normalize.css
- Remove unused dev dependencies:
- Removed chai
- Removed less
- Removed less-loader
- Removed @types/chai
- Removed @types/jest
- Update vulnerable dependencies:
- Bump follow-redirects to 1.15.6
- Bump webpack-dev-middleware to 5.3.4
- Bump express to 4.19.2
- Add styling to indicate when segment is set
- Update boclips-js-security to 12.0.4
- Update @babel/traverse to 7.23.9
- Update postcss to 8.4.35
- Update follow-redirects to 1.15.5
- Do not set poster attribute if thumbnail link is null
- Get rid of inifinite loop in timeUpdate event
- Expose timeUpdate, seek, and progress events
- Upgrade plyr to 3.7.8
- Update demos
- Improve not displaying auto generated captions
- Do not display auto generated captions
- Expose plyr and video through onReady callback
- Add onReady callback to player. This is fired when the video has loaded from Boclips' API and the plyr instance is stable
- Show player controls when player is focused
- Accessibility improvements
- Ensure duration styling is correctly rendered
- Fix duration styling on small player
- Display current time and total duration rather than a countdown
- Add title overlay addon
- Update terser to address security vulnerability
- Update Plyr to latest
- Update axios package to use
>=0.21.1 < 1.0.0
- Update axios package to use
>=0.21.1
- Revert focus state change - it's unnecessary
- Restore focus state to player
- Export defaultAnalyticsOptions
- Security upgrades
- Bump boclips-security to latest
- Fix position of volume button
- Remove aria-labelledby from title and description
- Further style and a11y improvements
- Change spacing between progress bar and buttons
- Bug fix for volume control
- Move video progress slider above buttons
- Change video and volume slider background
- update styling of volume
- update docs
- Split css from js bundle
- Emit only types when building player
-
a11y update
-
use sass in a project instead of less
-
Patch vulnerabilities
- Fix analytics for youtube videos
- Rename library output back to Boclips
- Fix issues of nested iframe playback
- Use the correct plyr way of showing Youtube player
- Fix vulnerabilities
- Update docs and demos
- Build changes
- Fix bug affecting videos with multiple captions
-
Add aria labelledby and describedby to plyr container
-
[6.9.0] - 2021-08-24
-
Prevent playback outside of segment when provided
- Add an onError call back to the player
const player = PlayerFactory.get(playerContainer);
player.onError((error: BoclipsError) => {
// do something with error
// remove the error element from the player
player.getErrorHandler().clearError()
// to show a new one error message, you'll have to manipulate the DOM
});
- Add tooltips to seek and buttons
- Bump boclips-js-security
- Hide video-length-preview when in fullscreen
- Bump boclips-js-security
- Make plyr's configuration resolving null-safe
- Bump axios to fix security vulnerabilities
- Match boolean with the name of displayAutogeneratedCaptions
- autogenerated captions not to display
- Add optional
videoLengthPreview
feature
- Remove some dependencies to reduce bundle size
- Send
Boclips-Referer
for analytics
AnalyticsOptions.metadata
can contain function values which produce the needed metadata
- Use latest boclips-js-security version
- Add information about proper values for 'start' and 'end' fields of playback segment
- Document how to use playback segments
- Fix broken link in documentation
- Use youtube logo from cloud storage to fix unpkg issues
- Use official YouTube controls for YouTube videos
- End of video overlay overflow set to scroll.
- Fix bug where only one endOfVideoOverlay can be rendered at a time
- Update EndOverlay to create overlay in PlyrContainer
- Removed rewatch button.
- Fix general buttons css to work in fullscreen.
- We no longer deep require uuid/v1, as this has been deprecated in UUID package
- Youtube play svg copied to
dist/
- Fix release configuration
- Remove
playerType
and display the Youtube play icon without using it for Youtube videos
- New player option
playerType
to allow clients to request a youtube player by default
- YouTube videos now display the YouTube play icon
- The play icon next to the seekbar
- Centering the rewatch button text and changing text to 'watch again'
- Fixing the loop when overlay container is destroyed.
- An optional feature to enable a rewatch button that appears at the end of a video.
- Fix the issue of not being able to create a new player in the same container after destroying the previous player
- HoverPreview errors when the animation is running post destruction
- SeekPreview & HoverPreview can now handle changing player widths, and different aspect ratios
- Ratio option for interface
- Upgrade dependencies
- Added ability to send User ID in Boclips-User-Id header.
- Removed
playerId
parameter from events.
- Playing a video with multiple captions defined would not load the first caption entry. We've fixed this as best we can, however it seems there is an ongoing issue with HLS. There may still be times where a caption fails to load due to timing.
- Adjust padding of controls to stop them covering the play button at small sizes.
- Hide default Firefox captions otherwise double captions show to the user when they enable them.
- Ability to auto upgrade/downgrade stream quality using the new
hlsStream
which now contains a range of qualities that may be consumed.
- Be even more careful, plyr does not guard against removing listeners after destruction.
- Be careful during destruction of Addons on SPAs where the parent elements have disappeared.
- Auto pause of playback when a second player begins playing on the same page. Can be disabled by
options.interface.addons.singlePlayback = false
- Clicking the HoverPreview will now play the video
- Set bounds on options for HoverPreview and SeekPreview
- A feature to show a preview of a video on hover over
options.interface.addons.hoverPreview
Hover Preview option.default: false
- Backward compatibility break introduced in 2.3.0 for Typescript typed usage of this library
- A feature to allow thumbnail seeking on the progress bar for Stream playback only
options.interface.addons.seekPreview
Seek Preview on hover on progress bar for Stream videos- Higher resolution posters for Stream playbacks
- Use new PlaybackResource.links.thumbnail to generate thumbnail image URI
- Unused
convertPlaybackToSource
functionality
- Demo URIs for videos on staging-boclips.com
- Set
withCredentials
attribute in Axios to support cookies when talking to the Boclips API.
- Remove a bad mutation of the streamUrl in Hls
CONTRIBUTING.md
anddemo/README.md
- Attempted recovery of manifest file loading in HLS
options.interface.controls
was previously being appended to the default controls- Non-fatal HLS errors threw exceptions, preventing automatic recovery
- Render an error when the stream manifest is missing
- TypeError when handling plyr events post destruction
- Internal representation of
Wrapper
to a better namedMediaPlayer
- Internal refactor to separate concerns of Hls & Plyr
- Recursive destruction of HLS/Plyr on error destroying HLS/Plyr
- Segment start now works on Safari for stream videos
options.debug: boolean
for control over debug output
- Non-fatal playback Errors
- Bump
lodash
for https://www.npmjs.com/advisories/1065 - onlypackage-lock.json
- Bump
mixin-deep
for https://www.npmjs.com/advisories/1013 - onlypackage-lock.json
- Bump
set-value
for https://www.npmjs.com/advisories/1012 - onlypackage-lock.json
- Non-fatal
fragParseErrors
in HLS cause the player to render the error splash.
- Allow the
options.api.tokenFactory
to return null, and not affect the Authorization header.
- Segmented playback for videos, auto starting and pausing at the time specified
loadVideo: (videoUri: string, segment: PlaybackSegment) => Promise<void>;
- User interaction event emitted for internal analytics when:
- Fullscreen enabled/disabled
- Speed change
- Fast forward
- Mute / Unmute
- Added an option to pass an authenticated bearer token to the API
options.api.tokenFactory: () => Promise<string>;
- Added an option to replace now removed
options.analytics.handleOnPlayback
options.analytics.handleOnSegmentPlayback: (video: Video, startSeconds: number, endSeconds: number) => void;
- Added destroy function to public Player API
destroy: () => void;
- Significant refactor of several internal modules
- BREAKING:
options.player
renamed tooptions.interface
- BREAKING: Internal Axios Instance - API calls will use an internal axios instance. Any external interceptors will have no affect on API calls made by the player.
- BREAKING: Removed
options.analytics.handleOnPlayback
- replaced withoptions.analytics.handleOnSegmentPlayback
- Minor documentation fixes
options.analytics.handleOnPlayback
callback signature will be replaced with in the a subsequent release with:options.analytics.handleOnSegmentPlayback: (video: Video, startSeconds: number, endSeconds: number) => void;
- Support for the rest of the controls supported by Plyr
- Enhanced error handling to display a friendly error message
- Catch exceptions caused when destroying a YouTube Plyr instance after the elements are removed from the DOM.
- BoclipsPlayer state reset before loading a new video
- Plyr control positioning when only using mute, and not volume
- Changelog
- Multiple demo harnesses for verifying features manually
- Concourse pipeline configuration
- Plyr video player enhancement
- Event tracking for segment playback analytics
- Documentation for https://docs.boclips.com
- Closed Captions scale for large screens
- HLS support where possible
- Controls can be customised
- Multiple boclips-players can be instantiated on a single page
- Boclips branding
- Destruction cleans up resources