Skip to content

Latest commit

 

History

History
523 lines (494 loc) · 82.5 KB

File metadata and controls

523 lines (494 loc) · 82.5 KB

0.2.0 (2026-08-12)

Features

  • docs: add DOCS_NOINDEX to keep non-canonical builds out of search (4ec28f2)

Bug Fixes

  • docs: escape generics in prose copied into api/_media (66b1320)

Code Refactors

  • docs: rename the docs workspace to website (5428667)

Documentation

  • declare a canonical URL (eaea018)
  • emit clean URLs without the .html suffix (10b6f1b)

0.1.1 (2026-08-11)

Bug Fixes

  • android: strip ICY metadata on radio livestreams to fix audio chirping (a6e5360)
  • ios: do not automaticaly play completed content (9c18944)

0.1.0 (2026-03-20)

⚠ BREAKING CHANGES

  • ios: isIosOutputExternal() replaced with getIosOutput(), useIosOutputExternal() replaced with useIosOutput()
  • metadata callback names and parameter types changed
  • capabilities API changed from array to object
  • ts: useDebug signature changed from (enabled: boolean) to (options: DebugOptions) and now returns { state, logs, clear }. useDebugMetadata is removed - use useDebug({ metadata: true }) instead.
  • play property renamed to singleTrack with inverted boolean semantics (play:'single' -> singleTrack:true)
  • android: android.notificationCapabilities replaced with android.notificationButtons
  • set-rating capability renamed to favorite
  • handleRemoteSetRating handler removed, use onRemoteSetRating listener instead
  • Removed the playable optional boolean field from Track and ResolvedTrack interfaces. Playability is now determined solely by the presence of the src field.

Changes:

  • Remove playable?: boolean from TypeScript Track and ResolvedTrack interfaces
  • Simplify playability logic: tracks are playable if and only if src != null
  • Update Media3 metadata flags to use src == null for browsability checks
  • Remove helper functions isBrowsable() and isPlayable() from TrackFactory
  • Update error messages to reflect new validation rules
  • Regenerate all Nitro bridge code (C++, Swift, Kotlin)

Migration: Replace playable: true with an actual src value pointing to the media resource.

  • implement navigatePath/navigateTrack split and ResolvedTrack model
  • RequestConfig query and headers now only accept string values, HttpMethod enum replaces method strings
  • acquireWakeLock() and abandonWakeLock() functions removed, NitroUpdateOptions renamed to NativeUpdateOptions

Features

  • add artwork configuration with SVG and size-aware support (a2fe9d9)
  • add artworkCarPlayTinted property for iOS CarPlay tinting (7837fe6)
  • add browser navigation API and separate player concerns (7d70e31)
  • add childrenStyle property for Android Auto folder content styling (93f0a4d)
  • add cross-platform retry support with configurable max duration (2d0082f)
  • add customizable navigation error formatting (ab1447d)
  • add favorites support with heart button in media controllers (91962cb)
  • add groupTitle property for Android Auto section headers (95dd516)
  • add HTTP client infrastructure and HttpMethod enum (1d4564c)
  • add imageRow support to Track for horizontal thumbnail rows (348bfcc)
  • add live stream indicator support (f65ba08)
  • add navigation error handling with retry support (6bd19a3)
  • add none option to RatingType (06e25c5)
  • add now playing metadata override API (a655de2)
  • add onPlaybackQueueChanged event and useQueue hook (f479051)
  • add route parameter support to browser callbacks (d11e551)
  • add setFavorites API for syncing app-managed favorites (213ce71)
  • add shuffle mode support (ef3b3d5)
  • add structured search parameters for voice commands (2dedf65)
  • add system volume monitoring and control (def8451)
  • add toggleActiveTrackFavorited and async callback delivery (9e1a0eb)
  • android, ios, web: add handleTrackLoad callback (03b6bcd)
  • android: add automatic buffer management for rebuffer threshold (d356781)
  • android: add browse-time artwork URL transformation (f6947cc)
  • android: add caching and contextual URLs for Media3 integration (44a1186)
  • android: add client-side route matching with parameter extraction (734cef5)
  • android: add Coil-based artwork loading with custom header support (3e9a8ef)
  • android: add configurable retry policy for load errors (ea840b3)
  • android: add debounced loading state for browser navigation (912b53c)
  • android: add equalizer with presets and custom band levels (4442caa)
  • android: add getTabs() method for tab navigation support (8a10afa)
  • android: add media URL transformation through request config integration (2384e8e)
  • android: add Media3 session service support (5a35dbc)
  • android: add notifyContentChanged API for external controllers (7e79946)
  • android: add offline error handling for external controllers (c6c84e9)
  • android: add playback resumption stub to prevent crashes (c4415f3)
  • android: add playback resumption via MediaButtonReceiver (59b9d3a)
  • android: add sleep timer with time and end-of-track modes (c0fecb2)
  • android: add slot-based notification button layout API (89a3a4a)
  • android: add startIndex and startPositionMs params to setQueue (913550f)
  • android: await browser registration for Android Auto cold starts (42208ee)
  • android: complete Nitro module integration with callback system (3a3643f)
  • android: enable queue expansion for JS track navigation (592584a)
  • android: implement Android Auto queue expansion (302ada5)
  • android: implement AudioBrowser module with TrackPlayer integration (1814aff)
  • android: implement HTTP API request execution for browser (214075c)
  • android: implement Media3 search integration with queue expansion (db3c9fc)
  • android: implement now playing metadata override (8a051ee)
  • android: implement null sentinel system for updateOptions API (f816dc5)
  • android: implement PlayConfigurationBehavior for queue expansion (b4bce8f)
  • android: implement voice search with intelligent result handling (f9c0774)
  • android: integrate BrowserManager into AudioBrowser navigation (064e60b)
  • android: move routing to browser package and add route parameter support (70ea312)
  • android: persist and restore playback settings on resumption (a63b4b6)
  • build: migrate to ESLint v9 flat config format (71817ad)
  • example: add Android Auto support configuration (788a997)
  • example: add Archive.org source, full-screen player, and extract modules (578ca53)
  • example: add DebugPanel component (be53e16)
  • example: add DebugPanel to BrowserScreen in dev mode (ea3f7a9)
  • example: add equalizer and sleep timer modals (a97edd7)
  • example: add radio icon drawable for Android (c727c40)
  • example: add repeat mode toggle and reorganize MiniPlayer controls (0c209f1)
  • example: add search screen and extract TrackListItem component (75c773c)
  • example: add SF Symbol artwork icons to radio station entries (935c794)
  • example: add SF Symbol artwork to iOS tabs (81c971f)
  • example: configure play behavior to queue mode (20dbb1d)
  • example: enable skip-to-next and skip-to-previous capabilities (e889d27)
  • example: enable updateOptions and improve player setup (3f3b531)
  • example: expand example app with favorites, metadata, and test server (54845fd)
  • example: mark radio stations as live streams (483eb67)
  • example: use useNowPlaying hook in MiniPlayer (fd2363f)
  • expose network connectivity state to JavaScript (95aa4b1)
  • implement navigatePath/navigateTrack split and ResolvedTrack model (b471d68)
  • ios: add artwork URL resolution for browsing (a20ab1b)
  • ios: add CarPlay playing indicators and playback state (796f831)
  • ios: add CarPlay Siri voice search and assistant cell support (43ed6e4)
  • ios: add CarPlay support (4854e5a)
  • ios: add CarPlay Up Next queue and respect template limits (657b3fe)
  • ios: add CarPlay/lock screen repeat, shuffle, and playback rate controls (65a163c)
  • ios: add configurable CarPlay playback rates (a996825)
  • ios: add CPActionSheetTemplate for CarPlay navigation errors (007b232)
  • ios: add custom CarPlay Now Playing buttons (0f9e2f2)
  • ios: add external audio output detection and picker (fe9bfeb)
  • ios: add image caching for CarPlay using Kingfisher (4910be5)
  • ios: add initialIndex parameter to TrackPlayer.add() (b289e84)
  • ios: add media URL resolution for playback (7bc7368)
  • ios: add MPNowPlayingSession for automatic Now Playing publishing on iOS 16+ (23126a9)
  • ios: add setQueue method for atomic queue replacement (433c511)
  • ios: add SFSymbolRenderer for sf: artwork with color support (95f0a6e), closes #fff
  • ios: expand output API with type and device name (0147811)
  • ios: implement browser navigation and route resolution (f3d0f87)
  • ios: implement network connectivity monitoring (4358cbb)
  • ios: implement now playing metadata override (88e617c)
  • ios: implement remote commands and player options (28aaf91)
  • ios: implement sleep timer functionality (3adc883)
  • ios: implement TrackPlayer and HybridAudioBrowser (81bb7e3)
  • ios: refresh CarPlay templates on notifyContentChanged (d5b38e3)
  • ios: support CarPlay cold start (3c84d94)
  • ios: update CarPlay Up Next list when queue changes (98ace3f)
  • move buffer options to platform namespaces and add iOS buffer support (7f901ef)
  • port TrackPlayer example app (ec83fb5)
  • support null for rebufferBuffer to enable automatic mode (8702b7d)
  • ts,android: add battery warning for foreground service restrictions (e40e747)
  • ts,android: add ImageSource type for artwork with headers support (b5fc817)
  • ts: add MediaRequestConfig and PlayConfigurationBehavior types (d7b69a5)
  • ts: add useDebug hook for logging state changes (78f235e)
  • ts: enhance useDebug and add useDebugMetadata hook (cc16c04)
  • ts: improve sleep timer hooks and fix cleanup bug (15f0e89)
  • web, example-nextjs: add an initial web implementation (bbad106)
  • web: add 30s request timeout to HttpClient (f163ad8)
  • web: defer seek events during load until after load has completed (b4ec7d1)

Bug Fixes

  • android, ios: prevent progress events from being emitted at startup (cd69a57)
  • android: add missing style parameter to Track models (1190a19)
  • android: add required LoadControl interface methods (cbc3330)
  • android: add timeout to awaitBrowser and use in playFromSearch (0546fc3)
  • android: always regenerate contextual URLs for playable tracks (4b1e039)
  • android: cancel pending navigation when new navigation starts (b44bd95)
  • android: correct return type for filtered search results (18c2970)
  • android: correct variable name in buffer calculation (2049633)
  • android: defer equalizer init until valid audio session ID (49ee514)
  • android: export MediaLibraryService for Android Auto support (3043a77)
  • android: filter non-playable tracks from search results (4bd0189)
  • android: fix ANR deadlock when calling seekTo immediately after load (e8a6cb4)
  • android: fix issues that can arise from useing multiple libraries that depend on media3 (6f7bb0d)
  • android: improve URL handling and media request transformation (40cd16d)
  • android: move HybridReactNativeAudioBrowser to correct Nitro package (592cfd9)
  • android: preserve URL structure in ContextualUrlHelper.stripTrackId (ed602b9)
  • android: prevent navigation race conditions (3aadb16)
  • android: recover from live window errors during streaming (a4060fc)
  • android: refresh browser content when notifyContentChanged matches current path (666dfa9)
  • android: remove exitProcess(0) from onTaskRemoved (2123f1d)
  • android: reserve skip button slots in media notification (501f284)
  • android: resolve multiple compilation errors (2dd2496)
  • android: resolve rating type mismatch with RatingFactory (2f5e52a)
  • android: return success result for handled custom commands (260a685)
  • android: run lifecycle observer registration on main thread (5844295)
  • android: skip queue re-expansion when selecting from same source (b04db4a)
  • android: unbind HeadlessTaskService on destroy to prevent leak (99ecb44)
  • android: update Track browsable/playable logic for Media3 (429077a)
  • android: use thread-safe cache for playWhenReady in retry policy (c949174)
  • build: add prepare script and apply Android package path fix (aa4b0ce)
  • ci: cap breaking changes to minor while pre-1.0 (d82b79c)
  • ci: enable corepack before setup-node in release workflow (6bf87bf)
  • ci: upgrade iOS build to macOS 26 with Xcode 26.2 (3c3fe3e)
  • ci: use generic iOS Simulator destination for Xcode builds (de89602)
  • ci: use generic simulator destination for macOS 26 runner (f752bb5)
  • correct function name reference in usePlayback hook (334ac4f)
  • default jumpForward and jumpBackward capabilities to false (8be64c2)
  • docs: add file extension to ESM import (b8edb0d)
  • example-native: allow for cold start from Android Auto (71fa3a6)
  • example: add copy button to DebugPanel logs tab (b1c4fbd)
  • example: add missing eslint dependency to enable yarn lint (8445927)
  • example: align repeat mode cycle order with now playing screen (ef1f263)
  • example: auto-configure NODE_BINARY for Gradle builds (2c70247)
  • example: correct Android package name in npm scripts (087df8c)
  • example: correct import path for configurePlayer (83df6b1)
  • example: force single resolution for react-native-nitro-modules (b056dfa)
  • example: handle multi-word queries in voice search script (6636d22)
  • example: hide equalizer button when unsupported (fff233d)
  • example: improve equalizer toggle UX and preset state visibility (7d41c10)
  • example: improve safe area handling and header layout (7c979ea)
  • ios: add @preconcurrency to Intents import for Swift 6 sendability (051895a)
  • ios: add @MainActor to PlayingStateManager (6996955)
  • ios: add generation counter to prevent stale retries after reset (37bff32)
  • ios: add missing artworkCarPlayTinted parameter to constructors (2a162ca)
  • ios: add missing thread safety assertions to TrackPlayer (c5dbf56)
  • ios: add query params and fix route config priority in BrowserManager (782e4b9)
  • ios: add Swift 6 Sendable conformance annotations (d9bfa8a)
  • ios: auto-play when selecting track from CarPlay Up Next list (31a72f6)
  • ios: deduplicate CarPlay item selection and prevent nowPlaying crash (1aa3689), closes #36
  • ios: defer play/pause during async track loading (3019680), closes #33
  • ios: disable BUILD_LIBRARY_FOR_DISTRIBUTION for Kingfisher (1efe7ed)
  • ios: disambiguate PlaybackState.none from Optional.none in state machine (c242e9b)
  • ios: dispatch Nitro bridge callbacks to MainActor to prevent noexcept crashes (6b4fe31)
  • ios: enable content cache on navigate to match Android behavior (2b746b4)
  • ios: ensure CarPlay tabs always display with images (eb4cb96)
  • ios: ensure CarPlay UI updates run on MainActor (b1e8de0)
  • ios: fire onPlaybackActiveTrackChanged when toggling favorite (60c436e)
  • ios: fix an issue preventing progress update events from being sent (b4095e9)
  • ios: fix an issue with iOS where playback rate wasn't persisted between play/pause (3e4ae37)
  • ios: fix seekTo race condition during track loading (8f594e8)
  • ios: fix Track.copying() compilation and expand to all fields (80e71d9)
  • ios: improve CarPlay Now Playing button state management (b0a7795)
  • ios: only increment attemptCount when retry actually fires (5a2c30d)
  • ios: present AVRoutePickerView on topmost view controller (f1cd396)
  • ios: prevent navigation race conditions and hydrate search favorites (84cdc56)
  • ios: prevent Nitro bridge memory corruption in URL transforms (8788e86)
  • ios: prevent out-of-order NetworkMonitor dispatch (5595ef1)
  • ios: prevent stale errors and deadlock when switching tracks (8670441)
  • ios: propagate skipTo errors in navigateTrack instead of swallowing them (37e6363)
  • ios: remove MainActor.run wrapper causing media transform deadlock (bfbc86b)
  • ios: replace withCheckedContinuation with cancellable polling in RetryManager (03c9911)
  • ios: resize CarPlay favorite button image to max allowed size (0936000)
  • ios: resolve MainActor isolation in SVGProcessor (108b4dd)
  • ios: resolve SF Symbol artwork before passing to JS and Kingfisher (456d710)
  • ios: resolve Swift 6 Sendable and MainActor concurrency warnings (d6466cc)
  • ios: send variant null instead of nil for sleep timer cleared state (3773c9d)
  • ios: skip queue re-expansion when selecting from same source (b1476e2)
  • ios: start playback when AVPlayerItem becomes ready (c96b5ab)
  • ios: stop old player on JS runtime reload to prevent dual audio (0710483)
  • ios: update isPlaying for CarPlay Up Next list items (40d9c5b)
  • ios: update track in player queue when favorite changes (e8da8a3)
  • ios: use initialIndex in CarPlay track selection (ea2baf2)
  • ios: use non-deprecated allowBluetoothHFP audio session option (a776fb6)
  • ios: use raw ID3 frame keys instead of non-existent AVMetadataIdentifier properties (ffd6ff2)
  • ios: widen playbackError setter access for extension files (10cd7ef)
  • sync nitrogen and nitro-modules to 0.34.1 (e7ddb89)
  • ts: correct event subscription API usage (64e5375)
  • ts: handle eventKey in useNativeUpdatedValue effect (7fd4882)
  • use updateSegmentCounts return value in tail wildcard branch (e985fe2), closes #27
  • web: adjust currentIndex when removing tracks from playlist (32e7282)
  • web: align PlayingState, progress updates, load(), and setQueue() with Android (d770860)
  • web: await response.json() so parse errors are caught by try/catch (2b4aa6d)
  • web: compare error state by code and message instead of reference (89aeaa7)
  • web: fix NullSentinel typo in OptionsManager error message (73a5b4f)
  • web: fix PlaylistPlayer index management and allow moving current track (3a43dc1)
  • web: include description, mediaId, and genre in now playing metadata (6cdff45)
  • web: keep current track on stop so play() can resume (eeb5b1b)
  • web: remove duplicate play() call when loading via goToIndex() (f6efa23)
  • web: report actual buffered progress instead of hardcoded zero (ccd0ae9)
  • web: route load errors through state setter for consistency (0439289)
  • web: use handleNavigationError in navigate() catch block (ccd4085)
  • web: use resolveSearchContent for search query expansion in playback (2770573)

Performance Improvements

  • android: cache resolved content for faster tab switching and back navigation (178ebd5)
  • ios: cancel in-flight artwork loads on track change (cdd123f)
  • ios: fix UI freeze when switching tracks (d62cf36)
  • ios: lazy load CarPlay tab content for faster UI display (8cf6cf1)
  • ios: remove hot-path debug logging from NowPlayingInfoController.performUpdate() (956ac95)
  • ios: use O(1) doubly-linked list for LRUCache (8fe496e)

Code Refactors

  • android: add default artwork size for notifications (7d231e4)
  • android: adopt PlayerCapabilities struct for capability checks (28bd8f6)
  • android: consolidate path utilities in BrowserPathHelper (50225a1)
  • android: eliminate custom Track model in favor of direct Nitro types (23c3585)
  • android: extract MediaSession callback and playing state logic (570126d)
  • android: improve callback clarity in AudioBrowser (8375821)
  • android: improve playback state persistence and caching (ffb56ef)
  • android: improve rating system with bidirectional conversion (136e208)
  • android: inline audio attributes setup and add clarity comment (cbe70b9)
  • android: inline audio offload configuration in setup method (21e9eea)
  • android: inline cache initialization into Player class (7e91ac8)
  • android: inline isBrowsable check in searchPlayable (9fae228)
  • android: inline SearchParams construction (6595491)
  • android: migrate from TrackPlayer to AudioBrowser package structure (1e308bb)
  • android: move Player class to dedicated player package (2bf6048)
  • android: remove intermediate AudioContentType enum wrapper (3b569bd)
  • android: remove NullSentinel in favor of Nitro's NullType (989ee87)
  • android: remove redundant AudioBrowser prefixes from class names (c365b6e)
  • android: remove SVG tinting from artwork loading (e16b1e7)
  • android: remove unused CacheConfig data class (b1c7db8)
  • android: remove unused HeadlessJsMediaService abstract class (1f94579)
  • android: remove unused toNitro method from AudioContentType enum (b5e5f68)
  • android: rename and move MediaSessionManager to player package (6f95b1a)
  • android: rename ContextualUrlHelper.normalize to stripTrackId (d1ecac8)
  • android: rename TrackFactory methods and clean up imports (2d97c4c)
  • android: replace custom events with direct Nitro types (dbbea41)
  • android: replace custom model classes with direct Nitro types (9d8e36d)
  • android: simplify DynamicLoadControl and reduce log noise (ad9d56d)
  • android: simplify MediaFactory to use automatic media source detection (0374c09)
  • android: simplify notification URI scheme to audiobrowser://notification (0a3b6eb)
  • android: unify content sources into route-based system (1ae5974)
  • android: update playback state API implementation (574487d)
  • android: update PlayerUpdateOptions to use NullSentinel types (b6a659e)
  • android: update TrackFactory to use browser track format (357833a)
  • android: use DefaultMediaSourceFactory for automatic format detection (03761f9)
  • android: use ExoPlayer listener for repeat mode change events (14cad8e)
  • bring back isLiveStream (70de21e)
  • consolidate ESLint config and disable annoying rules (c26edb5)
  • delete types (8a49c3e)
  • docs: extract shared base-name logic and convert plugin to TypeScript (9ac31c2)
  • docs: share prefix regex between sidebar scripts (55aaa36)
  • example: adapt to browser track types and clean up structure (f855aab)
  • example: clean up component code and simplify handlers (78ca34d)
  • example: extract browser history into useBrowserHistory hook (533bb4b)
  • example: extract MiniPlayer component from BrowserScreen (8633656)
  • example: improve TrackListItem conditional rendering (2be892f)
  • example: inline track data and remove external JSON file (35753fa)
  • example: move track artwork to left side with placeholder (4aef21b)
  • example: refactor structure of the example app to allow for more examples (6a67c16)
  • example: remove redundant capabilities from updateOptions (ef5f7ea)
  • example: remove unnecessary void operators from navigate calls (8dc38d2)
  • example: remove unused equalizer state and UI (2883ed0)
  • example: replace player example with browser-focused UI (8e04dd7)
  • example: simplify package identifiers to com.example.audiobrowser (157c640)
  • example: use artworkSource for track list images (a79b6ce)
  • example: use useFormattedNavigationError for error display (f5d5442)
  • improve playback state API naming clarity (51161c8)
  • improve repeat mode event callback typing and assignment (c629d02)
  • introduce NativeUpdatedValue and LazyNativeEmitter for event handling (2446e15)
  • ios: add Track.copying() to replace fragile 18-field copy pattern (3fe9c4e)
  • ios: adopt MainActor isolation for concurrency safety (3c20f61)
  • ios: change CarPlay playback rate button to cycle through rates (6472ddd)
  • ios: consolidate artwork image loading into ArtworkImageFetcher (514c7e3)
  • ios: derive Now Playing artwork size from screen dimensions (36ca833)
  • ios: extract CarPlayImageLoader, CarPlayNowPlayingManager, and CarPlayArtworkResolver from CarPlayController (4332d55)
  • ios: extract CarPlayListItemFactory and improve listener cleanup (76bd7ff)
  • ios: extract MediaLoader, NowPlayingUpdater, and LoadSeekCoordinator from TrackPlayer (8c597b0)
  • ios: extract PlaybackCoordinator from TrackPlayer (c37d870)
  • ios: extract QueueManager from TrackPlayer (d01ce51)
  • ios: extract TrackSelector with protocol-based testability (b69e695)
  • ios: extract URL resolution from BrowserManager and deduplicate (f828d7a)
  • ios: let Kingfisher handle local file artwork loading (41ecc78)
  • ios: make all four observers @MainActor and fix seekTo completion threading (a82214a)
  • ios: make BrowserManager @MainActor instead of @unchecked Sendable (79b5d14)
  • ios: make NowPlayingInfoController @MainActor (f2621fa)
  • ios: make SleepTimerManager and PlaybackProgressUpdateManager @MainActor (2bb187a)
  • ios: migrate observers to block-based KVO (356eb52)
  • ios: move MainActor dispatch from TrackPlayer into observers (1cfeaa7)
  • ios: remove debug logging for artwork size requests (b955b97)
  • ios: remove nonisolated(unsafe) from browserManager (d1955f8)
  • ios: remove unused icon field from JsonTrack models (4fc71ef)
  • ios: remove unused onExternalContentChanged callback (58900b5)
  • ios: rename setTrack to replace and remove silent guard (89d3d60)
  • ios: replace callback hijacking with multi-listener emitter system (7fd3d7b)
  • ios: replace debug prints with os.log in HybridAudioBrowser (e1b4227)
  • ios: replace didSet state management with explicit state machine (42bb2a7)
  • ios: simplify NowPlayingInfoController to serial dispatch queue (10e2dc1)
  • ios: switch from Kingfisher to SDWebImage for CarPlay images (26a5601)
  • ios: use Kingfisher for artwork loading with async/await (bc97e6a)
  • ios: use modern CMTime initializer syntax (a7f9307)
  • ios: use OnceValue async primitive for CarPlay initialization (2d7cc72)
  • merge AudioPlayer into AudioBrowser (e8697fe)
  • remove intermediate PlayerCapability enum wrapper and extend Nitro Capability (23f4307)
  • remove legacy Android Auto media provider (2531a1f)
  • remove metadata helpers and update functions (49dd1db)
  • remove playable field from Track types (e45756c)
  • remove unused dislike and bookmark remote commands (09e0f44)
  • remove unused PlaybackActiveTrackEvent interface (eda0622)
  • rename native module export to nativeAudioBrowser (d0ba4f3)
  • rename project from ReactNativeAudioBrowser to AudioBrowser (e42e1c0)
  • replace capabilities array with PlayerCapabilities struct (d573391)
  • replace play enum with singleTrack boolean (5985169)
  • simplify metadata event API with direct types (ca09728)
  • ts: extract exports to AudioBrowser module file (985bb12)
  • ts: move favorite event types to favorites feature (2c8a37e)
  • ts: move native types to internal module (697b0a7)
  • ts: remove NullSentinel workaround from updateOptions (44b70a5)
  • ts: remove unused Browser type (c2387c8)
  • ts: remove unused BrowserItem import (d05b89c)
  • ts: reorder Track interface fields (6691184)
  • ts: reorganize features into playback, player, and queue subdirectories (e7256a0)
  • ts: start moving to browser track types (398d570)
  • ts: unify useDebug and useDebugMetadata into single hook (621a1d5)
  • ts: update useDebug to use simplified metadata event API (72301fe)
  • use params object for formatNavigationError callback (5b29269)
  • web: remove as const assertions from State values (7f0b8df)
  • web: replace non-null assertions with runtime checks (050f39f)

Documentation

  • add alpha notice to README (3c62871)
  • add API reference landing page (af840cf)
  • add future ideas for animated artwork and extensible Now Playing buttons (a3738f2)
  • add future ideas for CarPlay and localization (3648a0b)
  • add mermaid diagrams and Basic Usage guide (07648a5)
  • add TODO file for future improvements (8ffccd4)
  • add TODO for Android Auto cold start issue (8e7c01c)
  • add TODO for MediaSession search implementation (a1265ea)
  • add TypeDoc API generation and new guide pages (69756d8)
  • add TypeDoc configuration file (5883b83)
  • add VitePress documentation site (74185e2)
  • ai: add Android build command (9bdb836)
  • ai: add breaking changes policy for alpha product (05ab655)
  • ai: add codegen build instructions (c5e2bdd)
  • ai: add comprehensive Nitro documentation for AI assistance (b027fcf)
  • ai: add Kotlin import style guidelines (baee46d)
  • ai: add todo commit type to commit command (a377d64)
  • ai: update android architecture documentation (f0c52a9)
  • ai: update iOS architecture diagram and documentation (5e09881)
  • android: add architecture overview and system diagram (18a719b)
  • android: add TODO for proper cache implementation (c09b8f7)
  • android: update architecture diagram to reflect current codebase (43d7e49)
  • android: update architecture diagram with caching system (e6f69e0)
  • example: add troubleshooting hint to android:dhu script (501ccc5)
  • ios: add iOS development guide with architecture diagram (645fb15)
  • ios: clarify equalizer methods are unsupported no-ops (e60d8bc)
  • ios: move architecture diagram to separate ARCHITECTURE.md file (d71c5c1)
  • ios: update architecture diagram and file tree (53cbcc9)
  • ios: update architecture diagram for QueueManager and state machine (8484788)
  • mark CarPlay as available (df7ba58)
  • remove dual browsable/playable item note (a56fa13)
  • remove implemented items from FUTURE.md (891e9cf)
  • remove outdated README content for alpha phase (43acec8)
  • simplify API landing page (bd76a15)
  • ts: add @see links to search and retry functions (3c40df5)
  • ts: add documentation for browser configuration types (0b3fe46)
  • ts: add JSDoc to RequestConfig.path property (62b5134)
  • ts: clarify CarPlay Now Playing buttons configuration (9a47539)
  • ts: document sf: artwork format for iOS SF Symbols (5490f5f)
  • ts: fix typo in Track.artworkSource example (0925afb)
  • ts: improve Track interface field documentation (1df59d7)
  • update TODO with completed search features and refactoring tasks (2012cff)

Other changes

  • add mise configuration for Node.js version management (77a342c)

  • add VS Code workspace settings for oxfmt (75dad59)

  • ai: add Claude Code configuration and commands (4a54eec)

  • ai: add slash command for idiomatic Kotlin refactoring (c2c9c92)

  • ai: add slash command for referencing staged changes (e9715ec)

  • ai: remove types over interfaces guideline (2ee38dc)

  • ai: reorganize slash commands with platform prefix naming (cb06162)

  • android: add TODOs for search support in MediaSession (00328e3)

  • build: add Nitro generated files for cross-platform bindings (9771c1d)

  • build: standardize development workflow and tooling (b4477b5)

  • ci: add nightly schedule for next prereleases (8aca0bc)

  • ci: upgrade to Node 24, fix corepack ordering, drop NPM_TOKEN (fc2afc7)

  • codegen: update Nitro generated code (89e777c)

  • codegen: update Nitro generated code for playback state API refactoring (72c2088)

  • configure oxfmt import sorting rules (6c3f291)

  • delegate iOS scripts to example workspace (eea55a1)

  • disable Dependabot (8d89812)

  • disable require-await eslint rule (90bdf26)

  • docs: add docs to yarn workspaces (191a1f1)

  • example: add Android development and testing scripts (6a35fff)

  • example: add slider dependency (4e66bfc)

  • example: consolidate format and lint scripts (e288e36)

  • example: consolidate prettier configuration (3b6b39f)

  • example: disable HLS track with Android TODO (5f1a825)

  • example: set default repeat mode to queue in example app (691a7ab)

  • example: update Podfile.lock checksums (5054914)

  • example: update yarn.lock after removing dependencies (f39ee93)

  • example: use wildcard for audio-browser peer dependency (7270418)

  • example: use yarn instead of bun in ios:rebuild script (d0c7e7d)

  • exclude next-env.d.ts and .next from oxlint (daaaa09)

  • extract prettier config to dedicated files (895e2be)

  • fix workspace references after monorepo restructuring (1b477ea)

  • ios: add debug logging to NowPlayingInfo and RemoteCommand controllers (9c28c82)

  • ios: exclude test files from podspec (eb47be5)

  • ios: remove verbose CarPlay headless mode log (99aa966)

  • ios: update Podfile.lock for nitro-modules 0.34.1 (b702f11)

  • migrate from yarn to bun (9a5e3a0)

  • package.json: add ios:test script for SPM unit tests (59079da)

  • remove completed TODO items for error handling and search (ccfdd6a)

  • remove emojis from release notes section titles (299d4d0)

  • remove research directory (f4e9e72)

  • remove unused common-app package (341ff4a)

  • remove unused resolveAssetSource utilities (a440e5c)

  • replace eslint with oxlint (a6ec3d7)

  • replace prettier with oxfmt (c9f1db7)

  • ts: remove commented legacy player types (9f52b4e)

  • ts: remove redundant tsconfig options (34086c5)

  • update dependencies and add bunfig.toml (98c725b)

  • update Nitro Modules to 0.31.6 and fix null type handling (fbd3289)

  • update npm scripts for monorepo structure (b67b4dd)

  • update react-native-nitro-modules to 0.34.1 (d528bc2)

  • update repo URLs to radio-garden org and bump release deps (bebee0a)

  • update TrackPlayer references to AudioBrowser throughout codebase (d769da5)

  • update vendored nitrogen codegen to fix/cyclic-struct-references (PR #1232) (48fa421)

  • upgrade nitro (6011e2d)

  • upgrade nitro to 0.35.0 and regenerate specs (7f9afbc)

  • upgrade react-native to 0.83.0 (65289b2)

  • yarn: add yarn.lock and update package manager configuration (672fb29)

  • refactor!: simplify player options API and remove manual wake lock management (4324578)