react-native-audio-browser 0.2.0-next.13 → 0.2.0-next.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/android/src/main/java/com/audiobrowser/AudioBrowser.kt +3 -0
  2. package/android/src/main/java/com/audiobrowser/browser/BrowserManager.kt +44 -0
  3. package/android/src/main/java/com/audiobrowser/browser/JsonModels.kt +0 -2
  4. package/android/src/main/java/com/audiobrowser/browser/SectionScope.kt +1 -1
  5. package/android/src/main/java/com/audiobrowser/player/MediaSessionCallback.kt +21 -22
  6. package/android/src/main/java/com/audiobrowser/util/TrackFactory.kt +8 -5
  7. package/android/src/main/res/values/strings.xml +37 -2
  8. package/android/src/test/java/com/audiobrowser/TestFixtures.kt +1 -2
  9. package/android/src/test/java/com/audiobrowser/browser/BrowserManagerLayerResolutionTest.kt +9 -0
  10. package/android/src/test/java/com/audiobrowser/util/MediaExtrasBuilderTest.kt +2 -1
  11. package/ios/Browser/JsonModels.swift +0 -5
  12. package/ios/Extension/Section+Copying.swift +1 -3
  13. package/ios/HybridAudioBrowser.swift +2 -1
  14. package/ios/Model/NitroTypeStubs.swift +0 -1
  15. package/ios/Tests/ResolvedTrackCopyingTests.swift +2 -2
  16. package/lib/commonjs/features/browser-config.js +1 -0
  17. package/lib/commonjs/features/browser-config.js.map +1 -1
  18. package/lib/module/features/browser-config.js +1 -0
  19. package/lib/module/features/browser-config.js.map +1 -1
  20. package/lib/typescript/src/features/browser-config.d.ts.map +1 -1
  21. package/lib/typescript/src/types/browser-native.d.ts +2 -1
  22. package/lib/typescript/src/types/browser-native.d.ts.map +1 -1
  23. package/lib/typescript/src/types/browser-nodes.d.ts +14 -9
  24. package/lib/typescript/src/types/browser-nodes.d.ts.map +1 -1
  25. package/lib/typescript/src/types/browser.d.ts +36 -0
  26. package/lib/typescript/src/types/browser.d.ts.map +1 -1
  27. package/nitrogen/generated/android/AudioBrowserOnLoad.cpp +2 -0
  28. package/nitrogen/generated/android/c++/JFunc_std__shared_ptr_Promise_std__string__.hpp +102 -0
  29. package/nitrogen/generated/android/c++/JHybridAudioBrowserSpec.cpp +1 -0
  30. package/nitrogen/generated/android/c++/JNativeBrowserConfiguration.hpp +14 -1
  31. package/nitrogen/generated/android/c++/JSection.hpp +1 -5
  32. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Func_std__shared_ptr_Promise_std__string__.kt +80 -0
  33. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/NativeBrowserConfiguration.kt +7 -4
  34. package/nitrogen/generated/android/kotlin/com/margelo/nitro/audiobrowser/Section.kt +2 -5
  35. package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.cpp +9 -0
  36. package/nitrogen/generated/ios/AudioBrowser-Swift-Cxx-Bridge.hpp +50 -0
  37. package/nitrogen/generated/ios/swift/Func_std__shared_ptr_Promise_std__string__.swift +54 -0
  38. package/nitrogen/generated/ios/swift/NativeBrowserConfiguration.swift +48 -1
  39. package/nitrogen/generated/ios/swift/Section.swift +1 -19
  40. package/nitrogen/generated/shared/c++/NativeBrowserConfiguration.hpp +6 -2
  41. package/nitrogen/generated/shared/c++/Section.hpp +1 -5
  42. package/package.json +1 -1
  43. package/src/features/browser-config.ts +1 -0
  44. package/src/types/browser-native.ts +5 -1
  45. package/src/types/browser-nodes.ts +14 -9
  46. package/src/types/browser.ts +38 -0
  47. package/website/guide/android-auto.md +1 -1
  48. package/website/guide/browser.md +19 -19
@@ -203,6 +203,7 @@ class AudioBrowser : HybridAudioBrowserSpec(), ServiceConnection {
203
203
  singleTrack = null,
204
204
  handleTrackLoad = null,
205
205
  androidControllerOfflineError = null,
206
+ viewMoreTitle = null,
206
207
  carPlayLoadingTitle = null,
207
208
  resolveAlbumPath = null,
208
209
  formatNavigationError = null,
@@ -369,6 +370,7 @@ class AudioBrowser : HybridAudioBrowserSpec(), ServiceConnection {
369
370
  routes = _configuration.routes,
370
371
  singleTrack = _configuration.singleTrack ?: false,
371
372
  androidControllerOfflineError = _configuration.androidControllerOfflineError ?: true,
373
+ viewMoreTitle = _configuration.viewMoreTitle,
372
374
  )
373
375
  }
374
376
 
@@ -1571,6 +1573,7 @@ private fun NativeBrowserConfiguration.strippingJSCallbacks() =
1571
1573
  requestResolver = null,
1572
1574
  browseResolver = null,
1573
1575
  handleTrackLoad = null,
1576
+ viewMoreTitle = null,
1574
1577
  resolveAlbumPath = null,
1575
1578
  formatNavigationError = null,
1576
1579
  request = request?.strippingJSCallbacks(),
@@ -24,6 +24,7 @@ import com.margelo.nitro.audiobrowser.Section
24
24
  import com.margelo.nitro.audiobrowser.StyleDisplay
25
25
  import com.margelo.nitro.audiobrowser.Track
26
26
  import com.margelo.nitro.audiobrowser.TransformableRequestConfig
27
+ import com.margelo.nitro.core.Promise
27
28
  import kotlinx.coroutines.Dispatchers
28
29
  import kotlinx.coroutines.async
29
30
  import kotlinx.coroutines.awaitAll
@@ -133,6 +134,12 @@ class BrowserManager {
133
134
  private var resolvedRequestLayer: TransformableRequestConfig? = null
134
135
  private var resolvedBrowseLayer: TransformableRequestConfig? = null
135
136
 
137
+ // The "view more" row title, cached on the same generation as the layers above — see
138
+ // viewMoreTitle(). Kept separate from them because it is resolved lazily (only a browse that
139
+ // actually appends a row asks for it), not eagerly alongside every request.
140
+ private var resolvedViewMoreTitleGeneration = -1
141
+ private var resolvedViewMoreTitle = DEFAULT_VIEW_MORE_TITLE
142
+
136
143
  /** Test-only accessors for the resolver-layer cache state (see ensureLayersResolved). */
137
144
  internal val layerGenerationForTest: Int
138
145
  get() = layerGeneration
@@ -1129,6 +1136,14 @@ class BrowserManager {
1129
1136
 
1130
1137
  /** Internal path used for search */
1131
1138
  internal const val SEARCH_ROUTE_PATH = "__search__"
1139
+
1140
+ /**
1141
+ * Title of the appended "view more" row when the consumer sets no
1142
+ * [BrowserConfig.viewMoreTitle]. English in code, like [defaultFormattedError]'s error copy — a
1143
+ * default that renders beats a section whose `path` is unreachable, and it still resolves when
1144
+ * the JS runtime is gone.
1145
+ */
1146
+ internal const val DEFAULT_VIEW_MORE_TITLE = "View more"
1132
1147
  }
1133
1148
 
1134
1149
  /**
@@ -1304,6 +1319,33 @@ class BrowserManager {
1304
1319
  return resolvedRequestLayer
1305
1320
  }
1306
1321
 
1322
+ /**
1323
+ * The title for the "view more" row appended to a pathed section on a surface whose header cannot
1324
+ * be tapped (Android Auto).
1325
+ *
1326
+ * Resolved from [BrowserConfig.viewMoreTitle] once per content generation — the same generation
1327
+ * the resolver layers use, so `invalidateAllContent()` re-reads it and an app that switched
1328
+ * language mid-drive gets the new copy without reconfiguring. Falls back to
1329
+ * [DEFAULT_VIEW_MORE_TITLE] when unset, blank, or throwing: a row with the default copy still
1330
+ * reaches the section's page, an untitled one does not.
1331
+ */
1332
+ internal suspend fun viewMoreTitle(): String {
1333
+ val generation = layerGeneration
1334
+ if (resolvedViewMoreTitleGeneration == generation) return resolvedViewMoreTitle
1335
+ val title =
1336
+ try {
1337
+ config.viewMoreTitle?.invoke()?.await()?.takeIf { it.isNotBlank() }
1338
+ } catch (e: Exception) {
1339
+ Timber.e(e, "viewMoreTitle callback failed; falling back to the default")
1340
+ null
1341
+ } ?: DEFAULT_VIEW_MORE_TITLE
1342
+ // A newer generation started while awaiting — use this result, but don't cache it as current.
1343
+ if (generation != layerGeneration) return title
1344
+ resolvedViewMoreTitle = title
1345
+ resolvedViewMoreTitleGeneration = generation
1346
+ return title
1347
+ }
1348
+
1307
1349
  /**
1308
1350
  * Builds the HTTP request for an API-backed path by layering request (shared) → kind
1309
1351
  * (browse/search) → route configs. Each layer's transform receives the previous layer's output; a
@@ -1502,6 +1544,8 @@ data class BrowserConfig(
1502
1544
  // Behavior
1503
1545
  val singleTrack: Boolean = false,
1504
1546
  val androidControllerOfflineError: Boolean = true,
1547
+ // Titles the "view more" row appended to a pathed section. See BrowserManager.viewMoreTitle.
1548
+ val viewMoreTitle: (() -> Promise<String>)? = null,
1505
1549
  ) {
1506
1550
  /** Returns true if search functionality is configured (either callback or config). */
1507
1551
  val hasSearch: Boolean
@@ -40,7 +40,6 @@ data class JsonTrackRequest(
40
40
  @Serializable
41
41
  data class JsonSection(
42
42
  val title: String? = null,
43
- val subtitle: String? = null,
44
43
  val style: JsonElement? = null,
45
44
  val path: String? = null,
46
45
  val children: List<JsonTrack>,
@@ -150,7 +149,6 @@ private fun String?.toCarPlaySiriListButtonPosition(): CarPlaySiriListButtonPosi
150
149
  fun JsonSection.toNitro(): Section {
151
150
  return Section(
152
151
  title = title,
153
- subtitle = subtitle,
154
152
  style = style.toSectionStyle(),
155
153
  path = path,
156
154
  children = children.map { it.toNitro() }.toTypedArray(),
@@ -59,7 +59,7 @@ object SectionScope {
59
59
  * search results — ADR 0010).
60
60
  */
61
61
  fun untitledSection(children: Array<Track>): Section =
62
- Section(title = null, subtitle = null, style = null, path = null, children = children)
62
+ Section(title = null, style = null, path = null, children = children)
63
63
 
64
64
  /**
65
65
  * The canonical sectioned shape: `sections` wins when present; plain `children` is authoring sugar
@@ -32,7 +32,6 @@ import com.margelo.nitro.audiobrowser.PlayerCapabilities
32
32
  import com.margelo.nitro.audiobrowser.RemoteButtonLayout
33
33
  import com.margelo.nitro.audiobrowser.SearchParams
34
34
  import com.margelo.nitro.audiobrowser.Section
35
- import com.margelo.nitro.audiobrowser.StyleDisplay
36
35
  import com.margelo.nitro.audiobrowser.Track
37
36
  import kotlinx.coroutines.CancellationException
38
37
  import kotlinx.coroutines.CoroutineScope
@@ -419,33 +418,33 @@ class MediaSessionCallback(private val player: Player) :
419
418
  /**
420
419
  * Flattens a page's sections to MediaItems for browse delivery — the Media3 boundary where
421
420
  * sections die (ADR 0010): the MediaBrowser protocol has no section node, so each child is
422
- * stamped with its owning section's title/style hints. A grid-displayed section with a `path`
423
- * gains a browsable "view all" link under the same header. Http(s) artwork routes through the
424
- * content:// provider so Android Auto can load it via the ArtworkContentProvider.
421
+ * stamped with its owning section's title/style hints. A section with a `path` gains a browsable
422
+ * "view more" row under the same header — at every `display`, because no Android Auto header is
423
+ * tappable at any of them, so the row is the section's only "view all" affordance here. Http(s)
424
+ * artwork routes through the content:// provider so Android Auto can load it via the
425
+ * ArtworkContentProvider.
425
426
  */
426
- private fun toMediaItems(sections: List<Section>): List<MediaItem> {
427
+ private suspend fun toMediaItems(sections: List<Section>): List<MediaItem> {
427
428
  val registry = player.browseArtworkRegistry
428
429
  val authority = com.audiobrowser.util.ArtworkUris.authorityFor(player.context.packageName)
429
430
  return sections.flatMap { section ->
430
431
  // Android Auto has no disabled affordance, so an unavailable track hides
431
432
  // — never a normal-looking dead row (Track.disabled's rendering ladder).
432
- val visibleChildren = section.children.filter { it.disabled != true }
433
- val items =
434
- visibleChildren.map { TrackFactory.toBrowseMediaItem(it, registry, authority, section) }
435
- val isTileSection = section.style?.display == StyleDisplay.GRID
436
- // No "view all" under an empty section — CarPlay skips empty sections
433
+ val children = section.children.filter { it.disabled != true }
434
+ val items = children.map { TrackFactory.toBrowseMediaItem(it, registry, authority, section) }
435
+ // No "view more" under an empty section — CarPlay skips empty sections
437
436
  // outright, and a lone navigation tile under a header is a dead end.
438
- if (isTileSection && section.path != null && visibleChildren.isNotEmpty()) {
439
- items +
440
- TrackFactory.toBrowseMediaItem(
441
- TrackFactory.navigationTrack(section),
442
- registry,
443
- authority,
444
- section,
445
- )
446
- } else {
447
- items
448
- }
437
+ if (section.path == null || children.isEmpty()) return@flatMap items
438
+ // The browser is already up at every call site, so awaiting it here is a field read, and
439
+ // viewMoreTitle is memoized per content generation — both are free after the first row.
440
+ val title = player.awaitBrowser().browserManager.viewMoreTitle()
441
+ items +
442
+ TrackFactory.toBrowseMediaItem(
443
+ TrackFactory.navigationTrack(section, title),
444
+ registry,
445
+ authority,
446
+ section,
447
+ )
449
448
  }
450
449
  }
451
450
 
@@ -453,7 +452,7 @@ class MediaSessionCallback(private val player: Player) :
453
452
  * Flat lists (tabs, search results) convert as one untitled list section — which contributes no
454
453
  * group or style hints — so exactly one Track→MediaItem path exists at the Media3 boundary.
455
454
  */
456
- private fun toFlatMediaItems(tracks: List<Track>): List<MediaItem> =
455
+ private suspend fun toFlatMediaItems(tracks: List<Track>): List<MediaItem> =
457
456
  toMediaItems(listOf(untitledSection(tracks.toTypedArray())))
458
457
 
459
458
  override fun onGetItem(
@@ -25,13 +25,16 @@ object TrackFactory {
25
25
  }
26
26
 
27
27
  /**
28
- * A synthetic browsable Track for a section's "view all" surface — the section has a path, title,
29
- * and label, but no Track (ADR 0010). It carries the section's declared item block as its own,
28
+ * A synthetic browsable Track for a section's "view more" row — the section has a path but no
29
+ * Track to hang it on (ADR 0010). It carries the section's declared item block as its own,
30
30
  * `display` included: the section's declaration about this content's layout is the only declared
31
31
  * promise the "view all" page can ever have (there is no consumer-authored handle to declare one
32
32
  * on), and without it Android Auto would always render that page as a list.
33
+ *
34
+ * [title] is the consumer's `viewMoreTitle`, one string for every section — not the section's own
35
+ * title, which the group header above the row already shows.
33
36
  */
34
- fun navigationTrack(section: Section): Track =
37
+ fun navigationTrack(section: Section, title: String): Track =
35
38
  Track(
36
39
  id = null,
37
40
  path = section.path,
@@ -39,8 +42,8 @@ object TrackFactory {
39
42
  artwork = null,
40
43
  artworkSource = null,
41
44
  request = null,
42
- title = section.title ?: "",
43
- subtitle = section.subtitle,
45
+ title = title,
46
+ subtitle = null,
44
47
  artist = null,
45
48
  albumPath = null,
46
49
  album = null,
@@ -1,10 +1,45 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
+ <!--
3
+ Default copy for the two error tiles the library invents in the Android Auto
4
+ browse list. These rows have no consumer-authored Track behind them, so there
5
+ is nothing in the browse tree to read a title from; English here because a
6
+ default that renders beats a blank row.
7
+
8
+ Resources rather than a browser-config option — the route the library's
9
+ cross-platform copy takes (`formatNavigationError`, `carPlayLoadingTitle`,
10
+ `viewMoreTitle`) — because these two are not cross-platform. They exist only
11
+ because Media3 drops the message from `LibraryResult.ofError` on the legacy
12
+ browse bridge, so a row is the sole signal available; CarPlay has no
13
+ counterpart, stating failures in the list's centered empty view instead
14
+ (CarPlayController.showMessage). Android-only copy in the Android-idiomatic
15
+ place: an app re-skins either by declaring the same name in its own
16
+ strings.xml, and a `values-<locale>/` file can add translations later without
17
+ touching the API.
18
+ -->
2
19
  <resources>
3
- <!-- Error message shown in Android Auto when network is offline -->
20
+ <!--
21
+ The offline tile: shown in place of a page's contents when the device is
22
+ offline and the consumer left `androidControllerOfflineError` on. Distinct
23
+ from the browse-error tile below — this one is used only when the network
24
+ monitor says we are actually offline, so it may name the cause. The
25
+ subtitle is the tile's second line.
26
+ -->
4
27
  <string name="audio_browser_offline_error">No internet connection</string>
5
28
  <string name="audio_browser_offline_error_subtitle">Check your connection and try again</string>
6
29
 
7
- <!-- Generic error message shown in Android Auto when browsing fails -->
30
+ <!--
31
+ The browse-error tile: shown when a browse fails while ONLINE — a server
32
+ error, a bad status, a timeout waiting for the JS browser. Deliberately
33
+ vague, and deliberately not "no internet connection": the genuinely-offline
34
+ case is caught earlier and gets the tile above, so anything reaching this
35
+ one has a working connection and would be misdiagnosed by that wording.
36
+
37
+ A tile rather than an error dialog because Media3 drops the message from
38
+ `LibraryResult.ofError` on the legacy browse bridge, which would leave a
39
+ bare "No items" screen. Verified on a head unit (2026-06): the Android Auto
40
+ browse list never renders error text by any other route, so tiles are the
41
+ only in-browse signal the library controls.
42
+ -->
8
43
  <string name="audio_browser_browse_error">Something went wrong</string>
9
44
  <string name="audio_browser_browse_error_subtitle">Please try again later</string>
10
45
  </resources>
@@ -61,10 +61,9 @@ object TestFixtures {
61
61
  fun section(
62
62
  children: Array<Track> = emptyArray(),
63
63
  title: String? = null,
64
- subtitle: String? = null,
65
64
  style: SectionStyle? = null,
66
65
  path: String? = null,
67
- ) = Section(title = title, subtitle = subtitle, style = style, path = path, children = children)
66
+ ) = Section(title = title, style = style, path = path, children = children)
68
67
 
69
68
  fun transformableConfig(
70
69
  baseUrl: String? = null,
@@ -144,4 +144,13 @@ class BrowserManagerLayerResolutionTest {
144
144
  assertSame(request, browserManager.resolvedRequestLayerForTest)
145
145
  assertNull(browserManager.resolvedBrowseLayerForTest)
146
146
  }
147
+
148
+ @Test
149
+ fun `viewMoreTitle falls back to the in-code default when unconfigured`() = runTest {
150
+ // The only viewMoreTitle path a JVM test can reach — a configured callback returns a Nitro
151
+ // Promise, see the resolver-thunk gap noted above.
152
+ browserManager.config = BrowserConfig()
153
+
154
+ assertEquals(BrowserManager.DEFAULT_VIEW_MORE_TITLE, browserManager.viewMoreTitle())
155
+ }
147
156
  }
@@ -130,8 +130,9 @@ class MediaExtrasBuilderTest {
130
130
  path = "/popular",
131
131
  style = sectionStyle(display = StyleDisplay.GRID, artworkRendering = null, gridWrap = false),
132
132
  )
133
- val navigation = TrackFactory.navigationTrack(section)
133
+ val navigation = TrackFactory.navigationTrack(section, "View more")
134
134
  assertEquals(StyleDisplay.GRID, navigation.style?.display)
135
+ assertEquals("View more", navigation.title)
135
136
 
136
137
  val extras = MediaExtrasBuilder.build(navigation)
137
138
  assertEquals(
@@ -235,20 +235,17 @@ extension JsonStyle {
235
235
  /// ignored dead weight.
236
236
  struct JsonSection: Codable {
237
237
  let title: String?
238
- let subtitle: String?
239
238
  let style: JsonStyle?
240
239
  let path: String?
241
240
  let children: [JsonTrack]
242
241
 
243
242
  init(
244
243
  title: String? = nil,
245
- subtitle: String? = nil,
246
244
  style: JsonStyle? = nil,
247
245
  path: String? = nil,
248
246
  children: [JsonTrack],
249
247
  ) {
250
248
  self.title = title
251
- self.subtitle = subtitle
252
249
  self.style = style
253
250
  self.path = path
254
251
  self.children = children
@@ -464,7 +461,6 @@ struct JsonTrack: Codable {
464
461
  func toNitro() -> Section {
465
462
  Section(
466
463
  title: title,
467
- subtitle: subtitle,
468
464
  style: style?.toSectionStyle(),
469
465
  path: path,
470
466
  children: children.map { $0.toNitro() },
@@ -550,7 +546,6 @@ struct JsonTrack: Codable {
550
546
  func toNitro() -> Section {
551
547
  Section(
552
548
  title: title,
553
- subtitle: subtitle,
554
549
  style: style?.toSectionStyle(),
555
550
  path: path,
556
551
  children: children.map { $0.toNitro() },
@@ -9,14 +9,12 @@ extension Section {
9
9
  /// `children` is single-optional since it is non-optional on Section.
10
10
  func copying(
11
11
  title: String?? = nil,
12
- subtitle: String?? = nil,
13
12
  style: SectionStyle?? = nil,
14
13
  path: String?? = nil,
15
14
  children: [Track]? = nil,
16
15
  ) -> Section {
17
16
  Section(
18
17
  title: title ?? self.title,
19
- subtitle: subtitle ?? self.subtitle,
20
18
  style: style ?? self.style,
21
19
  path: path ?? self.path,
22
20
  children: children ?? self.children,
@@ -26,6 +24,6 @@ extension Section {
26
24
  /// One untitled section — the canonical wrap of a flat track list
27
25
  /// (`children` authoring sugar, search results — ADR 0010).
28
26
  static func untitled(_ children: [Track]) -> Section {
29
- Section(title: nil, subtitle: nil, style: nil, path: nil, children: children)
27
+ Section(title: nil, style: nil, path: nil, children: children)
30
28
  }
31
29
  }
@@ -186,7 +186,8 @@ public class HybridAudioBrowser: HybridAudioBrowserSpec, @unchecked Sendable {
186
186
  public var configuration: NativeBrowserConfiguration = .init(
187
187
  path: nil, request: nil, requestResolver: nil, browse: nil, browseResolver: nil, media: nil, artwork: nil, nowPlayingArtwork: nil, routes: nil,
188
188
  singleTrack: nil, handleTrackLoad: nil,
189
- androidControllerOfflineError: nil, carPlayLoadingTitle: nil, resolveAlbumPath: nil, formatNavigationError: nil,
189
+ androidControllerOfflineError: nil, viewMoreTitle: nil, carPlayLoadingTitle: nil, resolveAlbumPath: nil,
190
+ formatNavigationError: nil,
190
191
  ) {
191
192
  didSet {
192
193
  // Copied here, on the setter's thread: the Task below outlives this call,
@@ -189,7 +189,6 @@
189
189
 
190
190
  struct Section: Equatable {
191
191
  var title: String?
192
- var subtitle: String?
193
192
  var style: SectionStyle?
194
193
  var path: String?
195
194
  var children: [Track]
@@ -32,7 +32,7 @@ private func makeFullResolvedTrack() -> ResolvedTrack {
32
32
  ResolvedTrack(
33
33
  path: "/original",
34
34
  style: SectionStyle(gridWrap: false, display: .grid, artworkRendering: .stencil),
35
- sections: [Section(title: "Group A", subtitle: nil, style: nil, path: nil, children: [])],
35
+ sections: [Section(title: "Group A", style: nil, path: nil, children: [])],
36
36
  children: [Track(id: "t1", path: "/t1")],
37
37
  carPlaySiriListButton: .top,
38
38
  id: "original-id",
@@ -162,7 +162,7 @@ private func makeFullResolvedTrack() -> ResolvedTrack {
162
162
  @Test func copyingOverridesSections() {
163
163
  let original = makeResolvedTrack()
164
164
  let sections = [
165
- Section(title: "A", subtitle: nil, style: nil, path: nil, children: [Track(id: "c1", src: "c1")]),
165
+ Section(title: "A", style: nil, path: nil, children: [Track(id: "c1", src: "c1")]),
166
166
  ]
167
167
  let copy = original.copying(sections: sections)
168
168
  #expect(copy.sections == sections)
@@ -222,6 +222,7 @@ function toNativeConfig(config) {
222
222
  singleTrack: config.singleTrack,
223
223
  handleTrackLoad: config.handleTrackLoad,
224
224
  androidControllerOfflineError: config.androidControllerOfflineError,
225
+ viewMoreTitle: config.viewMoreTitle,
225
226
  carPlayLoadingTitle: config.carPlayLoadingTitle,
226
227
  resolveAlbumPath: config.resolveAlbumPath,
227
228
  formatNavigationError: config.formatNavigationError
@@ -1 +1 @@
1
- {"version":3,"names":["isCallback","source","isObjectValue","value","isTransformableRequestConfig","isRouteConfig","artwork","splitLayer","layer","resolve","resolver","Promise","config","flattenBrowseSource","browseCallback","browseConfig","browseStatic","searchSourceToRouteEntry","path","SEARCH_ROUTE_PATH","searchCallback","searchConfig","wrapTracksAsResolvedTrack","tracks","TABS_ROUTE_PATH","title","children","tabsSourceToRouteEntry","Array","isArray","wrappedCallback","flattenRouteEntry","browse","media","DEFAULT_ROUTE_PATH","exports","flattenRoutes","routes","tabs","search","entries","Object","push","length","undefined","MAX_TABS","validateBrowserConfiguration","warn","message","console","startsWith","page","toNativeConfig","request","requestResolver","browseResolver","nowPlayingArtwork","singleTrack","handleTrackLoad","androidControllerOfflineError","carPlayLoadingTitle","resolveAlbumPath","formatNavigationError"],"sourceRoot":"../../../src","sources":["features/browser-config.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isCallback","source","isObjectValue","value","isTransformableRequestConfig","isRouteConfig","artwork","splitLayer","layer","resolve","resolver","Promise","config","flattenBrowseSource","browseCallback","browseConfig","browseStatic","searchSourceToRouteEntry","path","SEARCH_ROUTE_PATH","searchCallback","searchConfig","wrapTracksAsResolvedTrack","tracks","TABS_ROUTE_PATH","title","children","tabsSourceToRouteEntry","Array","isArray","wrappedCallback","flattenRouteEntry","browse","media","DEFAULT_ROUTE_PATH","exports","flattenRoutes","routes","tabs","search","entries","Object","push","length","undefined","MAX_TABS","validateBrowserConfiguration","warn","message","console","startsWith","page","toNativeConfig","request","requestResolver","browseResolver","nowPlayingArtwork","singleTrack","handleTrackLoad","androidControllerOfflineError","viewMoreTitle","carPlayLoadingTitle","resolveAlbumPath","formatNavigationError"],"sourceRoot":"../../../src","sources":["features/browser-config.ts"],"mappings":"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","ignoreList":[]}
@@ -216,6 +216,7 @@ export function toNativeConfig(config) {
216
216
  singleTrack: config.singleTrack,
217
217
  handleTrackLoad: config.handleTrackLoad,
218
218
  androidControllerOfflineError: config.androidControllerOfflineError,
219
+ viewMoreTitle: config.viewMoreTitle,
219
220
  carPlayLoadingTitle: config.carPlayLoadingTitle,
220
221
  resolveAlbumPath: config.resolveAlbumPath,
221
222
  formatNavigationError: config.formatNavigationError
@@ -1 +1 @@
1
- {"version":3,"names":["isCallback","source","isObjectValue","value","isTransformableRequestConfig","isRouteConfig","artwork","splitLayer","layer","resolve","resolver","Promise","config","flattenBrowseSource","browseCallback","browseConfig","browseStatic","searchSourceToRouteEntry","path","SEARCH_ROUTE_PATH","searchCallback","searchConfig","wrapTracksAsResolvedTrack","tracks","TABS_ROUTE_PATH","title","children","tabsSourceToRouteEntry","Array","isArray","wrappedCallback","flattenRouteEntry","browse","media","DEFAULT_ROUTE_PATH","flattenRoutes","routes","tabs","search","entries","Object","push","length","undefined","MAX_TABS","validateBrowserConfiguration","warn","message","console","startsWith","page","toNativeConfig","request","requestResolver","browseResolver","nowPlayingArtwork","singleTrack","handleTrackLoad","androidControllerOfflineError","carPlayLoadingTitle","resolveAlbumPath","formatNavigationError"],"sourceRoot":"../../../src","sources":["features/browser-config.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isCallback","source","isObjectValue","value","isTransformableRequestConfig","isRouteConfig","artwork","splitLayer","layer","resolve","resolver","Promise","config","flattenBrowseSource","browseCallback","browseConfig","browseStatic","searchSourceToRouteEntry","path","SEARCH_ROUTE_PATH","searchCallback","searchConfig","wrapTracksAsResolvedTrack","tracks","TABS_ROUTE_PATH","title","children","tabsSourceToRouteEntry","Array","isArray","wrappedCallback","flattenRouteEntry","browse","media","DEFAULT_ROUTE_PATH","flattenRoutes","routes","tabs","search","entries","Object","push","length","undefined","MAX_TABS","validateBrowserConfiguration","warn","message","console","startsWith","page","toNativeConfig","request","requestResolver","browseResolver","nowPlayingArtwork","singleTrack","handleTrackLoad","androidControllerOfflineError","viewMoreTitle","carPlayLoadingTitle","resolveAlbumPath","formatNavigationError"],"sourceRoot":"../../../src","sources":["features/browser-config.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"browser-config.d.ts","sourceRoot":"","sources":["../../../../src/features/browser-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAWrB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EACV,0BAA0B,EAE3B,MAAM,yBAAyB,CAAA;AA2KhC,eAAO,MAAM,iBAAiB,eAAe,CAAA;AAqC7C;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,oBAAoB,GAC3B,IAAI,CAuCN;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,oBAAoB,GAC3B,0BAA0B,CAoB5B"}
1
+ {"version":3,"file":"browser-config.d.ts","sourceRoot":"","sources":["../../../../src/features/browser-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAWrB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EACV,0BAA0B,EAE3B,MAAM,yBAAyB,CAAA;AA2KhC,eAAO,MAAM,iBAAiB,eAAe,CAAA;AAqC7C;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,oBAAoB,GAC3B,IAAI,CAuCN;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,oBAAoB,GAC3B,0BAA0B,CAqB5B"}
@@ -5,7 +5,7 @@
5
5
  * into separate optional properties to reduce generated code complexity.
6
6
  * Users should use BrowserConfiguration, not these types directly.
7
7
  */
8
- import type { ArtworkRequestConfig, BrowserSourceCallback, ResolveAlbumPathCallback, FormatNavigationErrorCallback, HandleTrackLoadCallback, MediaRequestConfig, SearchSourceCallback, TransformableRequestConfig } from './browser';
8
+ import type { ArtworkRequestConfig, BrowserSourceCallback, ResolveAlbumPathCallback, FormatNavigationErrorCallback, HandleTrackLoadCallback, MediaRequestConfig, SearchSourceCallback, TransformableRequestConfig, ViewMoreTitleCallback } from './browser';
9
9
  import type { ResolvedTrack } from './browser-nodes';
10
10
  type NativeRequestConfigResolver = () => Promise<TransformableRequestConfig>;
11
11
  /**
@@ -38,6 +38,7 @@ export interface NativeBrowserConfiguration {
38
38
  singleTrack?: boolean;
39
39
  handleTrackLoad?: HandleTrackLoadCallback;
40
40
  androidControllerOfflineError?: boolean;
41
+ viewMoreTitle?: ViewMoreTitleCallback;
41
42
  carPlayLoadingTitle?: string;
42
43
  resolveAlbumPath?: ResolveAlbumPathCallback;
43
44
  formatNavigationError?: FormatNavigationErrorCallback;
@@ -1 +1 @@
1
- {"version":3,"file":"browser-native.d.ts","sourceRoot":"","sources":["../../../../src/types/browser-native.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,6BAA6B,EAC7B,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAMpD,KAAK,2BAA2B,GAAG,MAAM,OAAO,CAAC,0BAA0B,CAAC,CAAA;AAE5E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IAEZ,cAAc,CAAC,EAAE,qBAAqB,CAAA;IACtC,YAAY,CAAC,EAAE,0BAA0B,CAAA;IACzC,YAAY,CAAC,EAAE,aAAa,CAAA;IAE5B,cAAc,CAAC,EAAE,oBAAoB,CAAA;IACrC,YAAY,CAAC,EAAE,0BAA0B,CAAA;IAEzC,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAC1B,OAAO,CAAC,EAAE,oBAAoB,CAAA;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,MAAM,CAAA;IAKb,OAAO,CAAC,EAAE,0BAA0B,CAAA;IACpC,eAAe,CAAC,EAAE,2BAA2B,CAAA;IAG7C,MAAM,CAAC,EAAE,0BAA0B,CAAA;IACnC,cAAc,CAAC,EAAE,2BAA2B,CAAA;IAC5C,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAC1B,OAAO,CAAC,EAAE,oBAAoB,CAAA;IAC9B,iBAAiB,CAAC,EAAE,oBAAoB,CAAA;IAQxC,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAG3B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,eAAe,CAAC,EAAE,uBAAuB,CAAA;IACzC,6BAA6B,CAAC,EAAE,OAAO,CAAA;IAGvC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,gBAAgB,CAAC,EAAE,wBAAwB,CAAA;IAC3C,qBAAqB,CAAC,EAAE,6BAA6B,CAAA;CACtD"}
1
+ {"version":3,"file":"browser-native.d.ts","sourceRoot":"","sources":["../../../../src/types/browser-native.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,6BAA6B,EAC7B,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAMpD,KAAK,2BAA2B,GAAG,MAAM,OAAO,CAAC,0BAA0B,CAAC,CAAA;AAE5E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IAEZ,cAAc,CAAC,EAAE,qBAAqB,CAAA;IACtC,YAAY,CAAC,EAAE,0BAA0B,CAAA;IACzC,YAAY,CAAC,EAAE,aAAa,CAAA;IAE5B,cAAc,CAAC,EAAE,oBAAoB,CAAA;IACrC,YAAY,CAAC,EAAE,0BAA0B,CAAA;IAEzC,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAC1B,OAAO,CAAC,EAAE,oBAAoB,CAAA;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,MAAM,CAAA;IAKb,OAAO,CAAC,EAAE,0BAA0B,CAAA;IACpC,eAAe,CAAC,EAAE,2BAA2B,CAAA;IAG7C,MAAM,CAAC,EAAE,0BAA0B,CAAA;IACnC,cAAc,CAAC,EAAE,2BAA2B,CAAA;IAC5C,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAC1B,OAAO,CAAC,EAAE,oBAAoB,CAAA;IAC9B,iBAAiB,CAAC,EAAE,oBAAoB,CAAA;IAQxC,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAG3B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,eAAe,CAAC,EAAE,uBAAuB,CAAA;IACzC,6BAA6B,CAAC,EAAE,OAAO,CAAA;IAGvC,aAAa,CAAC,EAAE,qBAAqB,CAAA;IAGrC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,gBAAgB,CAAC,EAAE,wBAAwB,CAAA;IAC3C,qBAAqB,CAAC,EAAE,6BAA6B,CAAA;CACtD"}
@@ -270,11 +270,6 @@ export type TrackArtwork = string | ArtworkVariants;
270
270
  export interface Section {
271
271
  /** Header text. Absent = headerless group. */
272
272
  title?: string;
273
- /**
274
- * Secondary line for the section's navigation surface — e.g. the label
275
- * of the "view all" link a tile section gets on Android Auto.
276
- */
277
- subtitle?: string;
278
273
  /**
279
274
  * Presentation, separated from content. Each surface renders the
280
275
  * declared layout's nearest supported form; on CarPlay
@@ -285,10 +280,20 @@ export interface Section {
285
280
  */
286
281
  style?: SectionStyle;
287
282
  /**
288
- * Navigation target for the section header / "view all" surface. A
289
- * tile section's header tap (CarPlay) and appended "view all" link
290
- * (Android Auto) navigate here. Absent = a self-contained section:
291
- * the header is a plain label, not a link.
283
+ * Navigation target for the section's "view all" affordance — the
284
+ * fuller page this section is a teaser for. Absent = a self-contained
285
+ * section: the header is a plain label, not a link.
286
+ *
287
+ * The surface picks the form (ADR 0010), and each carries the copy
288
+ * itself — a `path` never adds words to the section:
289
+ *
290
+ * - **CarPlay** — a tile section's row draws a disclosure chevron and
291
+ * the whole row navigates. A list section renders no affordance:
292
+ * CarPlay has no "see all" idiom for one, and an invented row would
293
+ * spend an item from the template's cap.
294
+ * - **Android Auto** — no header is tappable at any display, so the
295
+ * section gets an appended browsable row, titled by the global
296
+ * `viewMoreTitle` browser option ("View more" by default).
292
297
  */
293
298
  path?: string;
294
299
  /** The section's tracks. */
@@ -1 +1 @@
1
- {"version":3,"file":"browser-nodes.d.ts","sourceRoot":"","sources":["../../../../src/types/browser-nodes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-nodes.d.ts","sourceRoot":"","sources":["../../../../src/types/browser-nodes.ts"],"names":[],"mappings":"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"}