Releases: FastPix/web-player-component
Releases · FastPix/web-player-component
v1.0.19
Version - [1.0.19]
Domain migration: fastpix.io → fastpix.com
All first-party endpoints baked into the player have moved from the .io TLD to .com. No attribute changes are required — existing integrations that rely on the built-in defaults will start hitting the new hosts on upgrade.
- HLS playback host – default stream base changed from
https://stream.fastpix.iotohttps://stream.fastpix.comfor both on-demand and live streams, and for episode switching in the playlist flow. - DRM endpoints – Widevine license, FairPlay license, and FairPlay certificate URLs now resolve under
https://api.fastpix.com/v1/on-demand/drm/...(previouslyapi.fastpix.io). - Spritesheet / poster host –
spritesheet-srcdefault updated fromimages.fastpix.iotoimages.fastpix.com. Consumers that explicitly setspritesheet-srcare unaffected. - Shoppable cart fallback – when
cart-goto-linkis not provided, the cart CTA now links tohttps://www.fastpix.cominstead ofhttps://www.fastpix.io.
Note: the
.iohosts continue to serve traffic for now and existing integrations will keep working, but they are slated for deprecation — please migrate to.com. Theimages.fastpix.iodefault referenced in the 1.0.18 entry below is nowimages.fastpix.com.
v1.0.18
Version - [1.0.18]
Spritesheet hover previews
spritesheet-src– overrides the host that serves the hover-preview spritesheet and posterthumbnail.jpg. Defaults toimages.fastpix.io. Accepts a bare host (e.g.images.fastpix.co) or a full URL; trailing slashes are stripped andhttps://is added when no scheme is supplied. Previously a bare host was concatenated as a relative path against the page origin, producing 404s likehttp://<your-site>/images.fastpix.co/<id>/thumbnail.jpg.enable-advanced-spritesheet– boolean. Switches hover previews from the default sheet to the higher-density advanced sheet (advanced-spritesheet.json/.jpg). More frame-accurate scrubbing at the cost of a larger image download.advanced-spritesheet-interval– integer1–10. Seconds between consecutive tiles on the advanced spritesheet (passed as?interval=Non the JSON and JPG requests). Out-of-range or non-numeric values are ignored and the API default of10is used. Has no effect unlessenable-advanced-spritesheetis also present.
Hover preview reliability
- Instant interactivity – the seekbar's hover/scrub listeners now attach as soon as the spritesheet JSON arrives, instead of waiting for the entire spritesheet image (which can be several megabytes for the advanced variant) to finish downloading. The timestamp pill follows the cursor immediately; the frame fills in as the image streams.
- Tile dimensions derived from JSON –
backgroundSizeis now computed from the sheet's declared dimensions rather thanimage.naturalWidth, so previews render correctly the first time, not only after the image fully decodes. - Two JSON schemas supported –
fetchThumbnailJsonnow normalizes both the legacytiles[]response and the newer grid response (columns,rows,interval,tileWidth,tileHeight) into a single shape. The grid variant was previously rejected as malformed and fell back to timestamp-only previews. - Deterministic image URL – the spritesheet image URL is reconstructed from the playback ID and variant rather than trusted from the JSON's
urlfield, working around upstream responses that occasionally return a mis-cased filename (advanced-Spritesheet.jpg) that 404s on the CDN. - Cache key includes variant and interval – switching between normal and advanced spritesheets, or between intervals, no longer serves a stale cached JSON.
- Safer tile lookup –
findCurrentTileguards against missing or emptytilesso an unexpected response shape can no longer throwCannot read properties of undefined (reading 'length')during hover.
v1.0.17
Version - [1.0.17]
Custom quality API
getQualityLevels()– returns all available renditions (id,label,height,width,bitrate,frameRate).setQualityLevel(id)– locks playback to a specific rendition (manual mode).setQualityAuto()– re-enables ABR; clears any manual lock.getPlaybackQuality()– snapshot of current state:{ mode, lockedLevel, loadedLevel }.--resolution-selector: none– CSS variable to hide the built-in quality button when using a custom menu.
Quality events
fastpixqualitylevelsready– fires after manifest parse;detail.levelsis the full rendition ladder. Build your quality menu here.fastpixqualitychange– fires on every ABR or manual switch;detailincludesmode,lockedLevel,loadedLevel, andpreviousLoadedLevel.fastpixqualityfailed– fires on invalidlevelIdor rendition load error;detail.reasondescribes the failure.
Named overlay slots
- Eight slot regions (
top-left,top-center,top-right,center-left,center-right,bottom-left,bottom-center,bottom-right) let you place any HTML over the video as light-DOM children of<fastpix-player>. --user-slot-z– controls stacking order of the slot layer (default6).--user-slot-bottom-clearance– space between bottom-row slots and the seek bar (default64px).- Shadow part
part="user-slots"exposed for page-level::partstyling.
v1.0.16
Version - [1.0.16]
Updated
- Analytics / Video Data –
@fastpix/video-data-coredependency range updated to^1.0.7.
Live playback
- Cleaner live UI – For
stream-type="live-stream", the duration-style time readout stays hidden so the experience matches open-ended live viewing.
On-demand playback
- Smarter background loading on VOD – On-demand streams use settings tuned for typical recorded playback; live streams use a lighter profile suited to the live edge.
Performance & stability
- Smoother day-to-day use – Less chance of the browser reporting long scripting tasks during normal actions (timeline updates, audio track changes, subtitle changes, and Chromecast handoff).
- Programmatic audio – When you switch tracks via
setAudioTrack(...), the built-in audio menu stays aligned with fewer redundant updates.
v1.0.15
Version - [1.0.15]
Audio & Subtitle UX (tracks + subtitles)
-
New attribute:
hide-native-subtitles- When present, the internal subtitle container never paints text, so the built‑in overlay stays visually hidden even when a track is enabled.
- All subtitle APIs still work as usual:
fastpixsubtitlecuecontinues to fire with{ text, language, startTime, endTime }and the nativeTextTrackstate is unchanged. - Recommended when you render subtitles in your own UI (React overlay, custom HTML) and want to guarantee there is no duplicate text from the built‑in overlay.
-
Clarified behavior:
disable-hidden-captions- Now applied as an initial state only: on load, the player disables all subtitles/captions without emitting
fastpixsubtitlechange. - After load, users (or your code) can still turn subtitles on via the built‑in menu or
setSubtitleTrack(...); the internal overlay is allowed to show again unlesshide-native-subtitlesis also set.
- Now applied as an initial state only: on load, the player disables all subtitles/captions without emitting
Programmatic seek
seekForward(seconds)andseekBackward(seconds)– New methods on the<fastpix-player>element to jump the playhead forward or back by a given number of seconds (clamped to the media range). Use them for custom “+10s” / “−10s” buttons or app shortcuts; the built-in skip buttons still followforward-seek-offset/backward-seek-offsetwhen set. Documented in README (Programmatic playback control and section 1.3 custom-controls example).
v1.0.14
Version - [1.0.14]
Audio & Subtitle Tracks
- Switch by name (label) –
setAudioTrack(languageName)/setSubtitleTrack(languageName | null)switch tracks by label/name (no numeric ids required). - Set defaults by name – New attributes:
default-audio-track="French"default-subtitle-track="English"
- Cleaner track lists –
getAudioTracks()/getSubtitleTracks()now avoid duplicate entries when multiple tracks share the same label. - Better events for integrations
fastpixtracksreadyincludes the full current track objects (currentAudioTrackLoaded,currentSubtitleLoaded) in addition to the track lists.- `fastpixa
v1.0.13
Version - [v1.0.13] :
_ Updated README.md
v1.0.12
Version - [1.0.12]
Changed
- Build & package – ESM build is now a single bundled file (
dist/player.esm.js), soimport '@fastpix/fp-player'works in React, Vite, and other bundlers without "Could not resolve ./utils/..." errors. CDN build stays atdist/player.jsfor backward compatibility with existing script-tag and CDN URLs. - Exports –
"import"resolves toplayer.esm.js;"require"andmainresolve toplayer.js(IIFE). - Build size – Stripped legal comments and debugger statements in both builds for slightly smaller output.
v1.0.11
Verison -[1.0.11]
Features you can use
- Programmatic playback control – JavaScript API:
play(),pause(),mute(), andunmute()for controlling playback and volume from your code (e.g. custom controls, Shorts-style UI, or framework integrations).mute()/unmute()sync with Chromecast when casting. - Seekbar position – Use CSS variable
--seekbar-bottom(e.g.0px) to move the progress bar to the very bottom. Thumbnail preview stays above it. - Invisible bar, keep preview & seek – Set
--progress-bar-invisible: 1to hide the bar visually while keeping hover thumbnail/timestamp preview and click-to-seek. Use your own progress bar on top. - Style the bar – Use
--progress-bar-track-unfilledto style the track. - Thumbnail hover on seekbar – Hover or drag on the seekbar to see a frame preview (spritesheet) or timestamp pill when no thumbnails are available.
- Shorts mode – Attribute
autoplay-shortsfor muted autoplay, loop, and feed-friendly behavior. - Free keyboard keys – Attribute
disable-keyboard-controlsso your app can use Arrow Up/Down (e.g. next/prev) without the player capturing them. - Accent color – Attribute
accent-coloror CSS--accent-colorfor theming; your app can read it to match a custom progress bar.
v1.0.10
Version - [1.0.10]
Changed
- Updated npm authentication from Classic token to Granular token for improved security and fine-grained permissions.