Stream Probe Changelog

Feature

Segment Track-Type Badges and iOS XCFramework Build Automation

Stream Probe now classifies each HLS segment as Video, Audio, or Text using a new SegmentTrackType enum wired through the shared KMP layer. The overlay on both Android and iOS shows a color-coded badge and file extension per segment row. iOS local dev is faster too, with the Kotlin XCFramework rebuilding automatically before each run.

FeatureMajor

Segment Track-Type Badges and File Extensions in the Overlay

Stream Probe introduces segment track-type classification and file extension display in the overlay timeline. Each segment is now labeled Video, Audio, or Text with its file extension, so interleaved chunks in HLS streams are immediately identifiable without guesswork.

Feature

Color-coded segment type badges and file extensions in the debug overlay

The Stream Probe debug overlay now shows color-coded badges for Video, Audio, and Text segments alongside the file extension from each segment URI. A new `SegmentTrackType` field is attached to every `SegmentMetric`, populated automatically on both Android and iOS. Also includes a fix for iOS segment URI accuracy and a formatter refactor.

Feature

Per-Segment Network Timing and CDN Metrics on iOS 18

iOS 18's AVMetrics API is now wired into Stream Probe's diagnostics pipeline. Per-segment network timing and CDN info are extracted in Swift, mapped to the shared SegmentMetric model in Kotlin, and delivered through the same diagnostics sink used on Android. The iOS and Android SDKs now capture identical segment-level data.

Feature

HLS Live Stream Support with DVR Controls (iOS)

The Stream Probe iOS player now supports live HLS streams with full DVR controls. A LIVE badge tracks playback state, and users can pause, rewind, and scrub within the live window. No API changes needed for existing VOD integrations.

Feature

iOS 18 AVMetrics: Per-Segment Playback Tracking

Stream Probe now tracks per-segment video playback metrics on iOS 18 using Apple's AVMetrics API. A new Swift adapter captures raw AVMetrics objects and a Kotlin mapper converts them into the shared SegmentMetric model. AVPlayerProbe ingests everything automatically on iOS 18+.

Feature

Phase 4: Native Swift/UIKit Overlay, SKIE Interop, and iOS Demo App

Phase 4 of the Stream Probe iOS SDK ships a native UIKit overlay window and panel renderer, wired up through SKIE for clean Kotlin-to-Swift interoperability. A new public presenter API gives Swift apps straightforward show/hide control over the overlay. An iOS demo app in the repo shows the full setup in a working Xcode project.

Feature

iOS SDK Phase 4: Native UIKit Overlay, SKIE Integration, and Demo App

Phase 4 of the Stream Probe iOS SDK ships SKIE integration for clean Swift interoperability, a native UIKit overlay window and panel renderer, and public show/hide presenter APIs. A complete iOS demo app is included, along with a fix for AutoLayout constraint conflicts that caused jerky panel collapse animations.

Feature

Stream Probe 0.5.0: Per-Segment TTFB Tracking

Stream Probe 0.5.0 adds TTFB (Time To First Byte) tracking for HLS and DASH segments. A new TimingDataSourceFactory wrapper records open() duration per segment and surfaces the results in the debug overlay. Enable it with a single StreamProbe.wrapDataSourceFactory() call.

FeatureMajor

Stream Probe 0.5.0: TTFB Measurement in the Segments Overlay

Stream Probe 0.5.0 adds TTFB tracking for media segments by wrapping the host DataSource.Factory with a new TimingDataSourceFactory. A thread-safe NetworkTimingRegistry handles cross-thread metric delivery, and the Segments overlay now shows first-byte latency alongside size and throughput.

Feature

Stream Probe 0.5.0: TTFB and Network Timing Metrics

Stream Probe 0.5.0 adds TTFB tracking to the Segments overlay. A new TimingDataSourceFactory measures how long each segment's open() call takes, and a thread-safe NetworkTimingRegistry pipes that data through to PlayerInterceptor so you can see network timing right next to your segment data.

Feature

Track Selection UI Added to Video Player

Stream Probe now includes a track selection UI so you can switch between audio languages, video quality levels, and subtitle tracks from inside the player. A new TrackSelectionSheet component and TrackOption data model handle the display and state. No extra setup required if your stream already exposes multiple tracks.

Feature

Audio and Subtitle Track Inspection in Debug Overlay

Stream Probe now captures audio and subtitle track data through the PlayerInterceptor and surfaces it in the debug overlay. Two new models, AudioTrackInfo and SubtitleTrackInfo, handle the data layer. No setup changes needed if you already use the overlay.

Feature

CDN Provider Detection + STALE/BYPASS Cache Status in Debug Overlay

Stream Probe can now automatically identify which CDN is serving your video stream by reading HTTP response headers, and displays the provider name in the debug overlay. Two new cache states, STALE (orange) and BYPASS (purple), are also tracked to give deeper visibility into caching behavior during playback debugging.

Feature

DASH Streaming Support

Stream Probe adds DASH streaming support with a new DashManifestInfo model and MPD manifest parsing. Both HLS and DASH streams are now handled through the same PlayerInterceptor and SessionStore pipeline. No changes needed for existing HLS integrations.

Feature

Debug Overlay with HLS Variant Tracking and Manifest Display

StreamProbe now has a debug overlay that shows active HLS stream variants, parsed manifest data, and analytics events live on the player screen. PlayerInterceptor was enhanced to handle analytics tracking and active track management, and a bug in VariantListAdapter's DiffUtil comparison was fixed.

Feature

Debug Overlay for HLS Manifest and Variant Tracking

StreamProbe now has a built-in debug overlay that shows HLS manifest details and the active video variant in real-time. It's powered by a new OverlayManager, updated PlayerInterceptor, and dedicated data models for stream tracking. Unit tests are included for the new logic.