2.4.5


Released: 23.06.2026

Summary

  • Fix preferred audio and subtitles track

2.4.4


Released: 22.06.2026

Summary

  • Redesign playlist UI on mobile
  • fix audioOnly UI not applied
  • refactor public api of player UI viewmodel (deprecated)
  • fix beaconing edge cases

2.4.1


Released: 05.06.2026

Summary

  • Redesign playlist UI on mobile
  • fix audioOnly UI not applied
  • refactor public api of player UI viewmodel (deprecated)

2.3.12


Released: 14.05.2026

Summary

  • fix missing watermarks on tvOS
  • remove watermarks alpha pixels clipping

2.3.11


Released: 28.04.2026

Summary

  • fix minor issue with Premier VODs

2.3.8


Released: 21.04.2026

Summary

  • fix resources handling with SPM for Tuist support

2.3.7


Released: 20.04.2026

Summary

  • improve HTTP logging
  • fix HTTP decoding error regression from 2.3.5
  • add platform specific seekintervals from realm settings

2.3.5


Released: 17.04.2026

Summary

  • Add VesperSDKManager.setDebugEnabled method to toggle verbose logging
  • Add dedicated playback error message to tell that DRM content is not playable on simulators
  • Fix CSAI ads breaks playback if they do not contain prerolls

2.3.3


Released: 03.04.2026

Summary

  • fix smarter subtitles off selection incorrect logic
  • remove redundant unspecified kind from subtitles
  • minor tvOS labels fixes

2.3.1


Released: 20.03.2026

Summary

  • fix public inits of beacon context
  • fix chromecast audio selection from UI not working in some cases
  • fix unload during preloading does not cancel preload

2.3.0


Released: 20.03.2026

Summary

  • update tvOS ui
  • separate beacon watch context and content watch context in ResolvableSource
  • fix CSAI Ads keep pause after user close whyThisAd View
  • fix ad countdown on tvOS

2.2.9


Released: 05.03.2026

Summary

  • fix creating new playerManager breaks output of previous playerManager

2.2.5


Released: 10.02.2026

Summary

  • add tvOS support
  • fix countdown timer with premier vods not deallocating
  • force playback rate control text color in settings to be always white
  • support pause ads looping via new player config toggle

2.1.0


Released: 27.01.2026

Summary

  • Removed x86_64 simulator slice because of one of the dependencies does not support it anymore, so this SDK will only build on arm64 simulators/devices
  • Smart subtitle selection feature
  • New public types: SmartSubtitleMapping, AudioLanguage, SubtitleLanguage, SubtitleKind
  • New property: ResolvableSource.smartSubtitles: [SmartSubtitleMapping]?
  • New property: DorisMediaSelectionPluginProtocol.smartSubtitles: [SmartSubtitleMapping]?
  • Allows mapping specific subtitle languages to specific audio languages
  • Pause/Overlay Ad Support
  • New property: AdsConfig.isPauseAdsEnabled: Bool
  • New property: AdsConfig.treatAllOverlayAdsAsPauseAds: Bool
  • Supports pause ads for VOD and live content
  • Fixed ads being skipped after seek operation
  • Fixed tracks disappearing when switching to next playlist item
  • Fixed ads snapback behavior when subtitles are enabled
  • Fixed ad countdown view incorrectly showing when seeking backward before ad position
  • Fixed SKIP button not working for promo on Chromecast

2.0.2


Released: 25.11.2025

Summary

  • removed custom ads countdown for Google IMA SDK
  • switch to build-in IMA ads countdown UI
  • add localization support for Google IMA SDK

2.0.1


Released: 21.11.2025

Summary

  • Add spm support

2.0.0


Released: 20.11.2025

New Features

  • Display types (DisplayTypes): new naked, minibar, miniPlayer, regular, max. See the Getting Started guide and example app for usage.
  • UI management:
    • UIManagerConfig: switch display types via UiManager
    • UIManagerConfigToggles: toggle individual UI components via UiManagerConfig
  • Player configuration:
    • PlayerManagerConfig: update bandwidthPolicy and localizationConfig via PlayerManager
    • PlayerManagerConfigToggles: toggle isPipEnabled via PlayerManagerConfig
  • Added Google PAL SDK support.
  • Added countdown UI for Premiere VOD / future-scheduled streams. #### API Changes
  • ResolvableSource:
    • watchContext is now Array<WatchContext> (last element determines the collection; keep a single element to preserve 1.x behavior). List is forwarded to the Beacon API for continue-watching.
    • Added optional beaconContext (standard, heroPreview, bucketPreview; default standard) used as the Beacon API ctx.
    • Added optional allowClientSideAds (default true) to control CSAI playback.
    • Added optional LimitedSeekRange to restrict live-stream timelines.
  • ApiConfig:

    • Added contentLanguageCode (default en-US) for UI label language.
    • Added allowStorageForGooglePal (default false) to signal if the publisher manages Google PAL storage consent.
  • Some dependencies are pod spec dependencies instead of rebuilding them as vendored frameworks

    • GoogleAds-IMA-iOS-SDK
    • ConvivaAVFoundation
    • Mux-Stats-AVPlayer
  • some Player/View events/states are changed/removed/renamed/added

  • Other minor improvements and bug fixes

Events/States

  • DorisViewState drops the seekIdle and playingAds cases, introduces progressiveSeeking
  • DorisViewUniversalEvent now routes seek interactions through richer gesture cases (seekBarPanned, viewPanned), replaces quality selection with bandwidthPolicyModeSelected, and adds accessibility-driven hooks (voiceOverStatusChanged, voiceOverFocusChanged) plus layout change notifications.
public enum DorisViewUniversalEvent {
    case viewLoaded
    
    case bandwidthPolicyModeSelected(BandwidthPolicy.Mode?)
    case seekBarAnnotationTapped(value: Double)
    case seekBarPanned(state: UIGestureRecognizer.State, offsetPercent: Double, isRemote: Bool)
    case progressiveSeekDidUpdate(interval: Double)
    
    case viewPanned(state: UIGestureRecognizer.State, offsetPercent: Double, isRemote: Bool)
    
    case layoutTypeChanged(DorisUIDisplayType)
    case voiceOverStatusChanged(Bool)
    case voiceOverFocusChanged
}
  • DorisViewTapEvent has been refactored to separate specific tap locations (buttons vs. surface), adds remote/voice-over seek cases, removes generic ads/live tap cases, and expands skip marker data.
public enum DorisViewTapEvent {
    case playPauseButtonTap
    case seekBackButtonTap
    case seekForwardButtonTap
    case viewLeftTap
    case viewRightTap
    case seekBarLeftTap
    case seekBarRightTap
    case seekBarRemoteTap
    case seekBarVoiceOverDecrement
    case seekBarVoiceOverIncrement
    
    case castButtonTapped
    
    case longPressedLeftOnView
    case longPressedRightOnView
    
    case skipMarkerButtonTap(SkipMarkerType)
    case watchFromStartButtonButtonTap
    
}
  • DorisSystemEvent (PiP application observer) now emits willResignActive and didBecomeActive, and the observer subscribes to the corresponding UIApplication notifications.
public enum DorisSystemEvent {
    
    case willResignActive
    case didBecomeActive
}
  • DorisPlayerEvent adds loadInitiated, simplifies willLoadNow (drops delay), emits queueItemsChanged, replaces playbackQualityChanged with a more general bitrateChanged, and adds didUnload.
public enum DorisPlayerEvent {
    
    case didTimeControlStatusChange(status: AVPlayer.TimeControlStatus)
    case loadInitiated
    case willLoadAfterDelay(delay: Double, initialSeek: SeekType?)
    case willLoadNow(initialSeek: SeekType?)
    
    case queueItemsChanged(items: [QueueItem])
    case availableMediaTracksChanged(tracks: [MediaTrack])
    
    case bitrateChanged(bitrate: Double, policy: BandwidthPolicy)
    case volumeChanged(volume: Float)
    case didUnload
}

1.2.5


Released: 14.10.2025

Summary

  • add autoplay param to load method
  • fix multiple players with DRM issue

1.2.4


Released: 03.06.2025

Summary

  • Fix seekbar not seeking sometimes after iOS 18.4 upgrade

1.2.3


Released: 07.04.2025

Summary

  • fix watermark appearance

1.2.2


Released: 18.03.2025

Summary

  • Fix default mux key environment

1.2.1


Released: 07.02.2025

Summary

  • Hide playback rate option in settings for lives with short DVR window
  • fix content playing in background while CSAI ads are playingfix player deallocation issues
  • fix CSAI ads overlay transparent background in fullscreen
  • fix annotations markers incorrect layout
  • fix close button visibility issues when close button is disabled
  • fix play/pause visibility toggle while playing ads
  • other minor bug fixes

1.2.0


Released: 10.01.2025

Summary

  • support direct-manifest ads type
  • rename BaseView to avoid collisions
  • update audioOnly streams UI behaviour

1.1.5


Released: 19.12.2024

Summary

  • Remove SDWebImage dependency

1.1.4


Released: 16.12.2024

Summary

  • fix streams with server side ads forever loading
  • Other bug fixes

1.1.3


Released: 14.11.2024

Summary

  • Fix: strip bitcode from OMSDK framework

1.1.2


Released: 01.11.2024

Summary

  • update MUX player name and version

1.1.1


Released: 23.10.2024

Bug fixes

  • fix passing startAt to ResolvableSource had no effect

1.1.0


Released: 16.10.2024

General

  • VesperSDK built with Xcode 16, swift 6
  • upgrade Yospace SDK dependency to 3.8.1

Bug fixes

  • fix Xcode 16 related build issues
  • Ads seek with snapback is not triggered when seeking back now, only forward

1.0.3


Released: 04.10.2024

Bug fixes

  • fix UI updates not on main thread

1.0.2


Released: 02.10.2024

Features

  • added manual UI configurations
playerManager.uiManager?.viewModel.labels.playbackTimesViewModel.countDownType
playerManager.uiManager?.viewModel.toggles.isTitleOnFullscreenVisible
playerManager.uiManager?.viewModel.toggles.isCloseButtonVisible
playerManager.uiManager?.viewModel.toggles.isSettingsButtonVisible
playerManager.uiManager?.viewModel.toggles.isDefaultSettingsViewEnabled
  • added prefilled UI configurations from Realm settings
seekForwardIntervalInSecondsForLive
seekBackwardIntervalInSecondsForLive
seekForwardIntervalInSecondsForVod
seekBackwardIntervalInSecondsForVod

1.0.1


Released: 06.09.2024

Bug fixes

  • fixed missing chromecast button

1.0.0


Released: 23.08.2024