Changelog
[10.4.2] - 2026-03-03
- Bug fixes and internal improvements.
[10.4.1] - 2026-02-13
- Bug fixes and internal improvements.
[10.4.0] - 2026-02-11
- Bug fixes and internal improvements.
[10.3.1] - 2026-01-23
- Bug fixes and internal improvements.
[10.3.0] - 2026-01-15
- Bug fixes and internal improvements.
[10.2.14] - 2025-12-24
Added
- Added
getStatsFirstPlayWallClock()method toMaestroEventInterfaceprotocol. Returns the first play wall clock timestamp (String?) from the Stats response metadata, allowing host applications to retrieve the initial play time without parsing the stats response directly.
[10.2.12] - 2025-12-16
- Bug fixes and internal improvements.
[10.2.11] - 2025-12-04
Added
- Added panel data override API to
MaestroManagerInterfacefor overriding the data source URL of any configured panel at runtime.setDataToPanel(_:)accepts a singleMaestroPanelOverrideand returns a typedResult<Void, MaestroPanelOverrideError>.setDataToPanels(_:)accepts an array ofMaestroPanelOverrideand returns per-override results.setDataToPanel(panelName:interfaceName:overwriteUrl:)provides a backward-compatible string-based convenience method.
- Added
MaestroPanelOverridestruct withpanelIdentifier,interfaceName, andoverrideValueproperties. - Added
MaestroPanelOverrideErrorenum with casesnoActiveEvent,unsupportedPanelIdentifier,panelNotConfigured,emptyOverrideValue,interfaceUnsupported, andunknown.
[10.2.9] - 2025-11-21
- Bug fixes and internal improvements.
[10.2.8] - 2025-11-17
- Bug fixes and internal improvements.
[10.2.7] - 2025-10-27
- Bug fixes and internal improvements.
[10.2.6] - 2025-10-15
Added
- Added remote configuration support for session analytics parameters (enable/disable and beacon interval).
[10.2.5] - 2025-09-26
- Bug fixes and internal improvements.
[10.2.4] - 2025-09-19
Added
- Added session analytics support with
observeSessionAnalytics()view modifier. Apply this to your root view to enable automatic session beacon pause/resume when the app enters or leaves the foreground.
[10.2.2] - 2025-08-20
- Bug fixes and internal improvements.
[10.2.1] - 2025-08-20
- Bug fixes and internal improvements.
[10.2.0] - 2025-08-15
- Bug fixes and internal improvements.
[10.1.14] - 2025-08-15
- Bug fixes and internal improvements.
[10.1.12] - 2025-08-13
- Bug fixes and internal improvements.
[10.1.10] - 2025-08-13
- Bug fixes and internal improvements.
[10.1.9] - 2025-08-11
- Bug fixes and internal improvements.
[10.1.6] - 2025-08-10
Bug fixes
Changed
- Fixed Game Leaders panel not updating automatically
- Fixed fantasy overlay icon display issues
- Fixed fantasy network calls continuing after userDidStopWatchingEvent
- Fixed stats panel "Let's try that again" persistence and data flashing
- Fixed shop panel section header visibility on initial load
- Added debug flags for fantasy module debug statements
[10.1.5] - 2025-08-10
Bug fixes
Changed
- Fixed MyBets JSON parsing errors and API parameters
- Fixed shop panel section header overlap on scroll-to-top navigation
- Fixed tabbar menu/back button issues on each panel
- Fixed panel initialization race conditions and removed stats panel fallback
- Improved UI refresh when new data arrives
[10.1.4] - 2025-08-10
Major fantasy improvements and bug fixes
Changed
- Fantasy Panel Optimization: Comprehensive fantasy polling optimization with improved performance and architecture
- Fixed fantasy SDK scoring display (showing actual points instead of 0 PTS)
- Resolved focus stroke clipping on fantasy player matchup cards
- Fixed promo JSON cancellation issues (Error -999)
- Improved player image loading when expanding cards
- Enhanced image refresh handling for real-time updates
- Added smart image caching with ImageCacheManager for optimal performance
- Implemented individual league polling with separate Fan API (30s) and League Manager (10s) intervals
- Added comprehensive debugging infrastructure
- Shop Panel Fixes: Fixed shop panel scroll visibility and back navigation issues
- Resolved items becoming invisible after back navigation
- Improved back button focus behavior
- Fixed shop image loading with async approach to prevent cancellation
- Fantasy Panel Race Conditions: Fixed intermittent fantasy panel rendering issues during event transitions
- Added synchronous event transitions with proper cleanup timing
- Implemented comprehensive state clearing using clearAllData() method
- Enhanced polling synchronization to prevent conflicts
- Fixed authentication race conditions affecting data display after logout/login
- Stats Panel Improvements: Fixed stats team score card not updating properly
- Single Team Matchup: Fixed fantasy panel handling for single-team matchups
- Corrected logic for league scoring type determination
- Properly handle single-team scenarios by blanking out the other side
- Fixed fantasy expansion for single team matchups
- Panel Navigation: Updates to currentPanel now automatically update UI and focus
[10.1.2] - 2025-08-5
Bug fixes
Changed
- Fix fantasy Login Issue
[10.1.1] - 2025-08-9
Bug fixes and improvements
Changed
- Updated concurrency images for fantasy module
- Fixed pro game status lines display in matchups
- Fixed tvOS updates to only occur when moving focus for bets and stats panels
- Improved tabbar layout sizing and focus magnet alignment
- Enhanced fantasy polling interval with API-driven timing and minimum 1-second threshold
- Fixed threading issues for various module login processes
- Improved stats panel error handling when no active panel is available
- Fixed odds number display to prevent splitting across two lines
- Updated stats/timecode test harness
- Fixed layout display order issues
[10.0.1] - 2025-08-5
bug fixes
Changed
- Fix fantasy overlay timecode filtering
[10.0.0] - 2025-08-4
shouldShowPanelType intitialization fix with setDefaultPanel and await/async changes and some other changes .
Changed
- Added new param to configue to set the defaultPanel to any MaestroPanelType on initialization
- Changes for in the delegate, now require the async keyword. Calling these methods now require the await keyword
- Change eventId to proGameId in fan api
- The current Rive version is 6.11.0
- Update panels polling logic for fantasy using polling interval from api header
[9.1.0] - 2025-08-2
Assorted improvements.
Changed
- Fixed Key plays header fix
- Fixed Enter Exit Crash
- Fixed two six packs issue on refreshing
- Fixed for non-active league (i.e from the past) don't show it right now we are showing "draft date not set
- MyDisney login fix
- Spacing Issues
- Fixed Fantasy QR Code Routing Fix
- Fantasy Overlays
- Fixed memory leaks
- The current Rive version is 6.11.1
[9.0.0] - 2025-08-1
shouldShowPanelType jumping panels improvement.
Changed
- Bug fixes but also changes to shouldShowPanelType jumping panels
[8.2.3] - 2025-07-29
Assorted improvements and some new functions added.
Changed
- Added new func ShouldShowPanelType to change the panel by user on runtime which provide ability for client to set specific panel.
- Replaced the trackState, trackAction, trackImpressions to one unified func named trackAnalyticsEvent for all type of analytics panel.
- Fixed Multiple SDK Instances.
- Fixed improvements for stats carousel issue.
- Send platform query param to LM/Gambit API
- Home Away teams inverted on stats module
- Fixed fantasy error state
- Fixed empty states for all panels
- Remove Projected Points from Fantasy league card for non football
- Fixed truncated final score data on Recent Games
[8.2.0] - 2025-07-17
Assorted improvements.
Changed
- Updated stats panel to use timecode
- Fixed missing analytics impression calls
- Fixed auto-focusing on panel tab bar buttons when displaying panel - see
docs on
didShowPanel()call inMaestroEventInterface - Implemented empty state in bets panel
- Updated new implementation of win probability card in stats
- Fixed roster data not appearing in fantasy panel
- Fixed images not loading or loading after data in stats and fantasy panels
- Updated fan API node type to fantasyData
- The current Rive version is 6.11.0
[8.1.0] - 2025-07-15
Assorted bug fixes.
Changed
- Updated fantasy panel to use QR codes downloaded from network endpoint
- Shop panel should no longer show incorrect content
- Stats matchup predictor graphic should no longer appear squished
- Pre-game stats should no longer show during a live game
- The current Rive version is 6.11.0
[8.0.0] - 2025-07-09
Added pickems and timecode features.
Changed
- Aded pigskin pickems feature to Fantasy panel
- Added updatePlayerTimeCode function to MaestroEventInterface for updating timecode in SDK
- The current Rive version is 6.9.5.
[7.0.1] - 2025-07-03
Fixed working environment mismatch
Changed
- Fixed working environment switch for corresponding endpoints
- The current Rive version is 6.9.4.
[7.0.0] - 2025-07-02
Added user settings
Changed
- Fixed overlay position setting
- Added user settings
- The current Rive version is 6.9.4.
[6.2.0] - 2025-06-25
Added shop panel.
Changed
- Added shop panel.
- The current Rive version is 6.9.4.
[6.1.0] - 2025-06-13
Added analytics and fixed cosmetic issues for Stats panel.
Changed
- Added analytics for the stats panel.
- Fixed cosmetic issues in stats panel.
- The current Rive version is 6.9.4.
[6.0.0] - 2025-05-27
Added Stats panel, analytics, and a handful of API changes.
Changed
- The
MaestroManager.configure()function has been updated with a new parameter that takes a reference to an instance ofMaestroManagerDelegatefor supporting analytics callbacks, and aMaestroWorkingEnvironmentparameter for switching between qa and prod environments. - Added
trackState(name:attributes:)andtrackAction(name:attributes:)as part ofMaestroManagerDelegateto enable analytics callbacks from the SDK to the client app. - Implemented analytics callbacks for Key Plays, Bets and Fantasy modules. Analytics calls for the Stats module will be in a forthcoming release.
- Updated
MaestroOverlayAPI to eliminate id parameter. TheMaestroOverlaynow takes two additional parameters, overlayType and payload. These values should be regurgitated from the values received from theshouldShowOverlay(size:overlayType:payload:)call to theMaestroEventDelegate. This is likely to be simplified in a forthcoming release. - Added
userViewedPanel(panel:)callback toMaestroEventDelegateso the SDK can inform the client app when the user views a panel. This is being added specifically to support the new key plays data refresh logic, wherein new key plays data should be pushed to the SDK via the existingupdateKeyPlaysData(to:)whenever the user navigates to the Key Plays panel. - Fixed memory leak and memory retention issue with
MaestroEventDelegate. - The current Rive version is 6.8.2.
[5.0.0] - 2025-05-14
Added a variety of bug fixes and improvements.
Changed
- When the play/pause button on the Siri remote is pressed while the MaestroPanel is in focus, it triggers a new
playPauseButtonPressed()call toMaestroEventDelegate. - The need to make
MaestroEventDelegatea singleton should no longer be necessary. - The errant bets-polling-on-SDK-initialization should be fixed.
- The current Rive version is 6.8.1.
[4.1.2] - 2025-05-07
Fixed empty fantasy panel on qa server, tightened up back button behavior across all panels.
Changed
- The fantasy panel should show content now for the qa server.
- The back button should work consistently across all panels.
- The current Rive version is 6.8.1.
[4.1.1] - 2025-04-30
Fixed network polling bug.
Changed
- Fixed issue involving network polling w/o an open event.
- The current Rive version is 6.8.1.
[4.1.0] - 2025-04-28
Released Fantasy module, including new delegate API call userRequestedLogin()
Changed
- The Fantasy feature is now available in the Fantasy tab.
- Clicking the Fantasy login button triggers a new
MaestroEventDelegateAPI calluserRequestedLogin()which is intended to signal to the client app that the app's login screen should be shown.
[4.0.3] - 2025-04-23
Addressed key plays crash issue when navigating up and down.
Changed
- Addressed a bug where navigating up and down within key plays was crashing the app with a message in the console about the networking code in the SDK.
[4.0.2] - 2025-04-18
Addressed key plays loading issue and memory leak.
Changed
- Addressed bug involving key plays data not displaying newly-loaded data. Loading key plays data should now display in the panel.
- Addressed memory leak/allocation issue. Closing an event should now free up its memory allocation where before it was being retained, and any memory leaks should subside.
[4.0.1] - 2025-04-14
Updated userDidStopWatchingEvent(eventID:) to prevent crash .
Changed
- Added safeguard for userDidSTopWatchingEvent(eventID:)
[4.0.0] - 2025-04-07
Updated key plays API to receive data from client app and other changes.
Changed
- Updated key plays API to receive data from client app rather than polling the client app
- Updated bets views to handle expand/contract
- Updated sample client project for distribution
- Added bets error screen when there is no data available
- Added bets server polling every 5 seconds
[3.0.5] - 2025-03-27
Attempt to remedy authentication crash bug.
Changed
- Added fix for authentication crash bug
[3.0.4] - 2025-03-27
Attempt to remedy authentication crash bug.
Changed
- Added fix for authentication crash bug
[3.0.3] - 2025-03-27
Bugfix for intermittent crashes on SDK launch
Changed
- Addressed bug causing intermittent crashes when launching the SDK and immediately opening an event
[3.0.2] - 2025-03-27
Updated bets module to use live data.
Changed
- Updated bets module to use live data instead of mock data. Data is now fetched from the qa server using the current eventID. If there is a user logged in, the query also uses the user's swid and jwt.
- The Rive library is currently included as a transitive dependency at version 6.7.3. The MaestroOverlay component that displays the Rive animation upon winning a bet will be activated in an upcoming release of MaestroKit.
[3.0.1] - 2025-03-25
Updated Package.swift to include Rive dependency.
Changed
- Updated Package.swift to include Rive dependency
[3.0.0] - 2025-03-24
Added bets module, MaestroOverlay component and Rive framework.
Changed
- Added new bets module - currently displaying mock data
- Added new MaestroOverlay component and accompanying API calls
- Added Rive animation framework to the SDK, now required of client apps
- All tabs are active now- stats and fantasy say 'Coming Soon'
- Key plays panel now uses 'thumbnail' images rather than player headshots
- Added user authentication API calls to
MaestroManagerInterface - Added overlay management API calls to
MaestroEventInterfaceandMaestroEventDelegate
[2.0.12] - 2025-03-18
Added safeguards to prevent index out of range errors.
Changed
- Added safeguards to prevent index out of range errors
[2.0.11] - 2025-03-17
Added safeguards to prevent index out of range errors
Changed
- Added safeguards to prevent index out of range errors
[2.0.10] - 2025-03-11
Added safeguards to address crash bug.
Changed
- Added safeguards to allow opening the
MaestroPanelimmediately after opening an event
[2.0.9] - 2025-03-06
Fixed display bug.
Changed
- Fixed display bug related to key plays section headers
[2.0.8] - 2025-02-26
Update to MaestroKeyPlaysResponse.
Changed
- Made all data in
MaestroKeyPlaysResponseoptional except id's for teams, players and key plays
[2.0.7] - 2025-02-25
Update to MaestroKeyPlaysResponse.
Changed
- In
MaestroKeyPlaysResponseathlete headshots are now optional
[2.0.6] - 2025-02-25
Update to MaestroKeyPlaysResponse.
Changed
- In
MaestroKeyPlaysResponseathlete short names are now optional
[2.0.5] - 2025-02-24
Updates to key plays UI and MaestroEventInterface.
Changed
- Upgraded key plays UI to match interactive designs
- Renamed clipDidFailToPlay(atIndex:) to didFailToPlayClip(atIndex:) in MaestroEventInterface
[2.0.4] - 2025-02-24
Updates to key plays UI and error handling.
Changed
- Upgraded key plays UI to match interactive designs - still in progress
- renamed keyPlaysData() to getKeyPlaysData()
- Added tab failure condition when getKeyPlaysData() returns nil
- Added clipDidFailToPlay(atIndex:) to MaestroEventInterface to support single clip failures
- Added currentEventDoesNotSupportKeyPlays() to MaestroEventInterface to support notifying SDK that an event doesn't support key plays
- Added shouldShowPanel() and shouldHidePanel() to MaestroEventDelegate
[2.0.3] - 2025-02-19
Small API changes.
Changed
- Updated event ID handling
[2.0.2] - 2025-02-19
Change to MaestroPanel constructor and new error handling.
Changed
- Removed
viewModelargument fromMaestroPanelconstructor - Added error handling w/accompanying views
[2.0.1] - 2025-02-18
Small API changes.
Changed
- Removed
panelTypeargument fromMaestroPanelconstructor - Changed
keyPlaysData(forEventID:)to use async/await
[2.0.0] - 2025-02-14
Dev release for API integration testing.
Added
MaestroManagerInterface- API for core App->SDK callsMaestroEventInterface- API for event-related App->SDK callsMaestroEventDelegate- API for event-related SDK->App calls- Pre-release version of Key Plays UI
- Key plays data is retrieved once after opening event (no polling yet)
Changed
- Configuration function now requires real siteID but not a real jwt token
- MaestroPanel takes new arguments
[1.0.0] - 2025-01-21
Initial release.
Added
- Configuration function
- Basic panel implementation