Skip to content

feat(carplay): wire Car Tabs setting to the browse-grid category list#610

Open
mvanhorn wants to merge 1 commit into
music-assistant:devfrom
mvanhorn:feat/576-carplay-car-settings-wiring
Open

feat(carplay): wire Car Tabs setting to the browse-grid category list#610
mvanhorn wants to merge 1 commit into
music-assistant:devfrom
mvanhorn:feat/576-carplay-car-settings-wiring

Conversation

@mvanhorn

Copy link
Copy Markdown

Summary

CarPlay now honors the Car Settings tab/action preferences configured in Settings → Car.

  • Browse grid tabs: The Browse grid now reads SettingsRepository.carTabsConfig (the same store Android Auto uses) via a new carBrowseCategories() bridge method in KmpHelper. Categories are shown in the user-configured order; disabled categories are hidden; unconfigured categories appear in the default order.
  • Item tap actions: Already wired in a prior PR via KmpHelper.playCarDefaultTap. No change needed.
  • Bulk actions: Already wired via KmpHelper.carBulkActionNames / playCarAction. No change needed.

Note: a full iOS/CarPlay build requires Xcode and the KMP toolchain; CI is the verification gate for compilation.

Why this matters

Issue #576 reported that changing the Car Settings tabs and item action preferences had no effect on the CarPlay UI. The settings were persisted but the CarPlay layer did not read them. Maintainer seadowg confirmed 2025-06-11 the issue is purely about the settings not affecting the CarPlay UI.

Fixes #576

CarPlay's Browse grid was hardcoded to show all 7 categories regardless
of the Settings → Car → Tabs preference. This adds `carBrowseCategories()`
to KmpHelper (reads `SettingsRepository.carTabsConfig`, same source Android
Auto uses) and threads it through CarPlayContentManager to pushBrowseGrid,
which now builds the grid from the user-configured order/visibility instead
of a fixed list.

Item tap actions and bulk actions (Settings → Car → Item Actions) were
already wired in a prior PR and remain unchanged.

Fixes music-assistant#576
@formatBCE formatBCE requested a review from teancom June 13, 2026 18:46
@formatBCE

Copy link
Copy Markdown
Collaborator

LGTM, but I'm not iOS dev. :)
@teancom check this please?

@teancom

teancom commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

Everything works great except that if a category is disabled (in Settings -> Car -> Tabs) it still shows up because disabled categories are removed before present is calculated, so they are treated as missing and appended back as visible/default categories.

?.takeIf { it in carTabCategories }
}
val present = parsed.toSet()
val missing = carTabCategories.filter { it !in present }

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably around here to track all valid stored categories as present, while only returning enabled ones

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mvanhorn will you address comments, or should we close this and start from scratch?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update CarPlay to make use of Car Settings (Tabs and Item actions)

3 participants