<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
In case the mdns discovery starts the onboarding and suddenly the
onboarded url gets redirected to a different port or scheme, we are not
catching that and updating the onboarded URL to match that, more
information on the upper level task.
https://github.com/home-assistant/iOS/issues/4724
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
This PR deprecate intents from siri intents definition and migrates them
to App Intent.
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
There is an issue in the sign in flow in which forget password button is
not doing anything.
This PR fixes the issue.
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
Before:
https://github.com/user-attachments/assets/43e9f42c-780d-4ba7-9847-d10f2715d7f6
After:
https://github.com/user-attachments/assets/232d6c46-11f5-4ee8-863e-6abff1ed5191
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
---------
Co-authored-by: Bruno Pantaleão Gonçalves <5808343+bgoncal@users.noreply.github.com>
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
landingpage: https://github.com/home-assistant/landingpage/pull/195
android: https://github.com/home-assistant/android/pull/6970
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
<img width="1206" height="2622" alt="Simulator Screenshot - Daily tester
2 - 2026-06-08 at 11 49 31"
src="https://github.com/user-attachments/assets/f4e5e291-2377-46d5-8ac5-bc0c6279bba7"
/>
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
- Added button to retry local push reconnection
- Improves reconnection logic
- Added logs to debug in case of issues
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
- This PR adds a frontend bus command to communicate when matter
commissioning finishes and also provides the device name chosen by the
user during the Apple matter flow
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
## Summary
Follow-up fixes to two issues surfaced while testing #4671 end-to-end.
1. **`HALiveActivityAttributes.ContentState.countdownEnd` decoded via
Unix epoch.** ActivityKit decodes the `content-state` JSON arriving via
APNs with the default `JSONDecoder`, whose `Date` strategy is
`.deferredToDate` (seconds since the 2001 reference date). HA core sends
`countdown_end` as Unix epoch seconds, matching the documented
`data.when` / `data.when_relative` user contract and the in-app handler
that already does `Date(timeIntervalSince1970:)`. Without a manual
decode the APNs push path renders countdowns ~31 years in the future.
Adds explicit `init(from:)` and `encode(to:)` that map `countdownEnd`
via `timeIntervalSince1970`. All other fields use
`container.decodeIfPresent` so behavior is unchanged for them.
2. **`NotificationManagerLocalPushInterfaceDirect` assigns
`LocalPushManager.delegate`.** The Extension path assigns the delegate
at line 197; the Direct path (used on simulator and Mac Catalyst) never
did. On those platforms that meant silent commands such as
`clear_notification` (no alert title/body) were dropped: iOS doesn't
fire `willPresent` for content-less notifications, and the delegate is
the only fallback that routes into `commandManager`. One-line fix that
brings the Direct factory into line with the Extension's behavior.
Real-device verification (iPhone 13 Mini, iOS 26.5, paid Developer
account): chronometer countdown rendered correctly 60→0 with the Codable
fix in place. Without it the timer rendered as if `Date` were
seconds-since-2001.
## Screenshots
n/a — both fixes affect decode / message routing behavior, not UI
rendering.
## Link to pull request in Documentation repository
Documentation: home-assistant/companion.home-assistant#1303
## Any other notes
Part of the Live Activities effort tracked in home-assistant/epics#61.
Companion server PR: home-assistant/core#166072.
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
Stop reloading after matter commissioning flow finishes but it still
reloads when commissioning fails.
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
## Summary
- Observe ActivityKit activities that are started remotely via APNs
push-to-start notifications.
- Register the stored push-to-start token under `live_activity_token`,
matching Core's expected app data key.
- Send Live Activity token and dismissal webhooks using Core's strict
schema.
- Update Live Activity contract tests for the frozen webhook wire
format.
## Root Cause
APNs could start the Live Activity, but the app was not observing
`Activity<HALiveActivityAttributes>.activityUpdates`. That meant the app
did not attach its normal per-activity push-token and lifecycle
observers to remotely-started activities, so Core could not receive the
per-activity push token needed for subsequent updates.
---------
Co-authored-by: rwarner <kentoe@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
When the user chooses to not share location with Home Assistant + Less
secure connection security level, they never see the iOS native location
permission popup, which keeps their location permission state as
".notDetermined" entering in loop until selected "Most secure" and
choosing an option from the popup.
This PR triggers the popup for both connection security level options,
therefore avoiding the non determined state after the user makes its
decision.
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
This PR adds the foundation to set and display "What's new" screen
linked to app version.
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
<img width="5718" height="2966" alt="CleanShot 2026-05-26 at 14 04
20@2x"
src="https://github.com/user-attachments/assets/3b50e976-8166-4d68-9f03-5f312970fd7e"
/>
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
## Summary
Fixes#4608.
When kiosk mode is enabled and the Home Assistant app is then
force-quit, crashes, or the device reboots, kiosk mode does not
re-activate on the next launch. The persisted
`settings.isKioskModeEnabled = true` is loaded into memory by
`KioskModeManager.loadSettings()` but never acted on, so the user has to
manually re-toggle kiosk mode from settings each time. For the
wall-mounted iPad use case kiosk mode is designed for, this leaves an
unattended dashboard silently falling back to the normal UI after any
restart.
## What changed
In `KioskModeManager.setup(using:)` (called from
`WebViewController.viewDidLoad`), if `settings.isKioskModeEnabled` is
`true` and kiosk mode is not already active, call `enableKioskMode()` to
restore it.
`enableKioskMode()` is idempotent — it guards on `!isKioskModeActive` —
so this is safe to call from any path and existing flows are unaffected.
```swift
// Restore kiosk mode if it was enabled before the app was last closed
if settings.isKioskModeEnabled, !isKioskModeActive {
Current.Log.info("Restoring kiosk mode from persisted settings")
enableKioskMode()
return
}
```
## Test plan
- [ ] Enable kiosk mode in the app
- [ ] Force-quit the app from the app switcher
- [ ] Re-launch
- [ ] Verify the screen comes back up in kiosk mode (status bar hidden,
screensaver active, secret exit gesture working)
- [ ] Reboot the device — verify kiosk mode is still on after launch
- [ ] Disable kiosk mode, force-quit, re-launch — verify it stays
disabled
## Notes
- `KioskModeManager` is a singleton with UIKit dependencies and no
existing tests, so I haven't added a unit test here. Happy to add one if
there's a preferred pattern for managers like this.
- Out of scope (per the issue): a "panic recovery" guard so a crash loop
inside kiosk mode does not trap the user. Worth a follow-up.
- Local `xcodebuild` was blocked by an unrelated
`BuildMaterialDesignIconsFont` script failure in my environment, but
`swiftformat --lint` passes and the change uses existing APIs that
mirror the adjacent code path.
---------
Co-authored-by: Nick Stefanelli <nstefanelli@users.noreply.github.com>
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
On iOS 15, when a WebViewController is hosted in a
UINavigationController with the navigation bar hidden, adding a
full-screen child UIViewController whose subtree contains a
UIHostingController triggers a UIKit safe-area inflation bug:
view.safeAreaInsets.top becomes roughly twice the real status-bar
height, the native statusBarView (pinned to
view.safeAreaLayoutGuide.topAnchor) oversizes, and WKWebView caches a
hit-test region from the inflated value — so taps near the top of the
page (e.g. the dashboard hamburger menu) land at the wrong content
coordinates until the device is rotated. iOS 16+ is unaffected.
Two callsites on main triggered this independently:
1. KioskSecretExitGestureViewController was installed unconditionally
from KioskModeManager.setup(using:) — even when kiosk mode wasn't
active. Now installed in enableKioskMode() and torn down in
disableKioskMode(); setup() only re-anchors it for an already-active
kiosk session.
2. WebViewController+EmptyState.setupEmptyState() called
addChild(emptyState.hostingViewController) unconditionally (added in
#4572 for iOS-16 SwiftUI safe-area propagation). The addChild +
didMove(toParent:) calls are now guarded with #available(iOS 16.0, *).
The empty state still renders on iOS 15; it just skips the parenting
that iOS 15 doesn't honor the same way anyway.
Updated the related test to XCTSkip on iOS 15 with a comment pointing at
this commit.
Fixes#4499.
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
- Fix welcome view title multi line text
- Fix bottom safe are on onboarding base view
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
## Summary
- Add DebugSwift as a Swift Package dependency pinned through
`Package.resolved` at 1.15.0
- Link the DebugSwift product to the App target
- Initialize DebugSwift during app launch for Debug builds only
## Summary
- fix oversized native status-bar spacing on iOS 15 by sizing the spacer
from the window scene status bar frame
- provide app-owned CSS safe-area variables to the frontend on iOS
versions prior to 16
- refresh the legacy safe-area values after layout changes, settings
changes, view appearance, and page loads
## Root cause
Issues #4499 and #4631 point to iOS 15 devices reporting inflated
safe-area values after recent WebView/status-bar changes. The frontend
then consumes those values through safe-area CSS variables, and in the
iPad report the native WebView is also laid out below an oversized
status-bar spacer.
## Summary
- normalize manually entered server URLs by stripping path, query, and
fragment while preserving port and authority
- use the normalized base URL for onboarding auth and for the stored
manual server URL
- add tests covering auth URL construction, discovered manual URLs, and
the shared URL helper
## Root cause
Manual onboarding appended /auth/authorize to the full user-entered URL.
If the user entered a frontend route like /lovelace/0, the auth flow
loaded /lovelace/0/auth/authorize and never reached the expected
callback.
## Summary
Custom widget AppIntents
(`CustomWidgetToggle/Activate/PressButton/UpdateWidgetItemConfirmationStateAppIntent`)
used a single combined `guard` block with a silent `return .result()` on
failure. When a tap bailed out — wrong domain, missing parameters,
server lookup miss, no active URL — nothing was logged anywhere, which
made user reports like
[#4488](https://github.com/home-assistant/iOS/issues/4488) ("widget taps
do nothing on iOS 26.4+") impossible to triage.
Changes:
- Split each guard into separate checks with an `Current.Log.error(...)`
line per failure mode, so the widget-extension log now shows *which*
precondition failed.
- Extract the server/connection lookup into a small
`CustomWidgetIntentHelper.resolveConnection` so the three intents don't
duplicate the same boilerplate.
- When `Current.api(for: server)` returns nil (i.e. `activeURL()` is nil
— server unreachable from this network), dispatch a local notification
("Home Assistant could not be reached…") so the tap no longer silently
does nothing.
No behavior change for the success path. Failure paths still `return
.result()` — they just now leave evidence behind.
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
Before forwarding unknown tags to Home Assistant, present a confirmation
dialog.
Android implementation:
https://github.com/home-assistant/android/pull/6814
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
<img width="966" height="1004" alt="CleanShot 2026-05-07 at 15 56 54@2x"
src="https://github.com/user-attachments/assets/b7411e42-c2ec-473b-8241-c3280531737f"
/>
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
Fixes mTLS client certificate sharing across multiple servers when the
same .p12 / SecIdentity is assigned to more than one server.
- Store imported client certificate identities using a stable SHA-256
fingerprint of the leaf certificate instead of a server-specific
identifier.
- Update duplicate Keychain identity handling so re-importing the same
certificate migrates the existing item to the stable fingerprint-based
label.
- Avoid deleting a shared Keychain identity when removing or replacing a
certificate on one server if another configured server still references
it.
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->