Skip to content

CarPlay iOS 26 UI Improvements#4465

Merged
bgoncal merged 9 commits intomainfrom
carplay-ui-improvements
Apr 1, 2026
Merged

CarPlay iOS 26 UI Improvements#4465
bgoncal merged 9 commits intomainfrom
carplay-ui-improvements

Conversation

@bgoncal
Copy link
Copy Markdown
Member

@bgoncal bgoncal commented Mar 31, 2026

Summary

Screenshots

Simulator Screenshot - Daily tester 2 - 2026-03-31 at 16 45 28

Link to pull request in Documentation repository

Documentation: home-assistant/companion.home-assistant#

Any other notes

@bgoncal bgoncal self-assigned this Mar 31, 2026
Copilot AI review requested due to automatic review settings March 31, 2026 14:46
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Updates the CarPlay experience to take advantage of iOS 26’s condensed list UI while improving icon rendering/coloring so entity tiles better match live server state (including dynamic light colors).

Changes:

  • Add iOS 26 condensed-element image rendering for CarPlay icons (including background styling).
  • Update CarPlay templates (Quick Access, Domains, Areas, Entities) to use condensed image-row items on iOS 26 with consistent grouping.
  • Adjust entity icon coloring to use a centralized color provider + add/extend tests for CarPlay icon coloring behavior.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
Tests/Shared/HAEntityCarPlay.test.swift Updates/extends tests for CarPlay icon tinting, including server-provided RGB color.
Sources/Shared/MaterialDesignIcons+CarPlay.swift Adds iOS 26 condensed-element icon rendering helpers for MaterialDesignIcons and UIImage.
Sources/Shared/HAEntity+CarPlay.swift Routes CarPlay icon tint selection through EntityIconColorProvider and parses color attributes.
Sources/Shared/EntityIconColorProvider.swift Tweaks default inactive-state icon color selection logic.
Sources/CarPlay/Templates/QuickAccess/CarPlayQuickAccessTemplate.swift Uses iOS 26 condensed rows for grid layout and updated condensed icon rendering.
Sources/CarPlay/Templates/Entities/CarPlayEntityListItem.swift Refactors display-content computation and adopts live server-provided icon coloring for dynamic entities.
Sources/CarPlay/Templates/Entities/CarPlayEntitiesListViewModel.swift Updates state-refresh behavior to optionally re-render template items after entity updates.
Sources/CarPlay/Templates/Entities/CarPlayEntitiesListTemplate.swift Adds condensed entity rows on iOS 26 and centralizes group sizing.
Sources/CarPlay/Templates/Domains/CarPlayDomainsListViewModel.swift Adopts iOS 26 condensed domain rows and updated icon rendering.
Sources/CarPlay/Templates/Areas/CarPlayAreasViewModel.swift Adopts iOS 26 condensed area rows and updated icon rendering.
Sources/App/Settings/CarPlay/CarPlayConfigurationViewModel.swift Changes the default Quick Access layout when unset.
Sources/App/Settings/CarPlay/CarPlayConfigurationView.swift Switches to an asset-catalog image reference for the CarPlay logo.

bgoncal added 2 commits March 31, 2026 17:08
Keep a per-server cache of the latest quick-access HACachedStates and replay them when the quick access template is (re)built or appears. Adds latestQuickAccessStatesPerServer, updates it on state subscription callbacks, filters out entries for removed servers, and replays cached states via replayQuickAccessStates() to avoid empty/incorrect UI when templates are recreated or brought back on screen.
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 15 out of 15 changed files in this pull request and generated 3 comments.

Comments suppressed due to low confidence (1)

Sources/CarPlay/Templates/Areas/CarPlayAreasViewModel.swift:84

  • accessorySymbolName is passed as the raw string "chevron.right" here, while other CarPlay condensed lists use SFSymbol.chevronRight.rawValue. Using the typed SF Symbol constant avoids typos and keeps symbol usage consistent across templates.
                CPListImageRowItemCondensedElement(
                    image: MaterialDesignIcons(
                        serversideValueNamed: area.icon ?? "mdi:circle"
                    ).carPlayCondensedElementImage(color: .haPrimary),
                    imageShape: .circular,
                    title: area.name,
                    subtitle: nil,
                    accessorySymbolName: "chevron.right"
                )

@codecov
Copy link
Copy Markdown

codecov bot commented Mar 31, 2026

Codecov Report

❌ Patch coverage is 0.68027% with 146 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (main@8a0f5b9). Learn more about missing BASE report.

Files with missing lines Patch % Lines
Sources/Shared/MaterialDesignIcons+CarPlay.swift 0.00% 59 Missing ⚠️
Sources/Shared/EntityColorAttributesParser.swift 0.00% 36 Missing ⚠️
Sources/Shared/HAEntity+CarPlay.swift 0.00% 27 Missing ⚠️
Sources/Shared/Environment/AppArea+Queries.swift 0.00% 12 Missing ⚠️
Sources/App/Settings/CarPlay/CarPlayConfig.swift 0.00% 4 Missing ⚠️
Sources/Shared/Environment/AppArea.swift 0.00% 3 Missing ⚠️
...ources/Shared/Environment/AppDatabaseUpdater.swift 0.00% 3 Missing ⚠️
Sources/Shared/ControlEntityProvider.swift 0.00% 1 Missing ⚠️
Sources/Shared/EntityIconColorProvider.swift 0.00% 1 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##             main    #4465   +/-   ##
=======================================
  Coverage        ?   42.24%           
=======================================
  Files           ?      268           
  Lines           ?    15759           
  Branches        ?        0           
=======================================
  Hits            ?     6657           
  Misses          ?     9102           
  Partials        ?        0           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@bgoncal bgoncal merged commit 3613bb8 into main Apr 1, 2026
21 of 22 checks passed
@bgoncal bgoncal deleted the carplay-ui-improvements branch April 1, 2026 07:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants