780 Commits

Author SHA1 Message Date
Bruno Pantaleão
0008727ff3 WIP 2026-06-15 09:36:28 +02:00
Bruno Pantaleão Gonçalves
e71f746b87 Make app database updates non-blocking and skip redundant writes (#4731)
<!-- 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 -->
Improves `AppDatabaseUpdater` (the per-server fetch + persist pipeline
that runs on
view-appear, pull-to-refresh, and the Settings "refresh" action) so it
does less work
and stops touching the main thread.

## 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: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 14:28:01 +02:00
Bruno Pantaleão Gonçalves
5320df2813 Update URL port and scheme at the end of webview login (#4728)
<!-- 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. -->
2026-06-11 11:52:56 +02:00
github-actions[bot]
111fd5187c Update Localized Strings (#4723)
Automatically created by bgoncal.

Co-authored-by: Home Assistant Bot <hello@home-assistant.io>
Co-authored-by: Bruno Pantaleão Gonçalves <5808343+bgoncal@users.noreply.github.com>
2026-06-10 09:27:36 +00:00
Bruno Pantaleão Gonçalves
00d3852f22 Improve "Perform action" App Intent (#4720)
<!-- 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 capability of receive a response from the perform
action App Intent + some small improvements on actions list rendering

## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
<img width="1792" height="1550" alt="CleanShot 2026-06-09 at 21 06
09@2x"
src="https://github.com/user-attachments/assets/3036b9cd-0992-46d3-840f-275725a543ac"
/>

## 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: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 09:13:32 +02:00
Bruno Pantaleão Gonçalves
be35df497a Deprecate older intents and migrate to App Intent (#4718)
<!-- 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. -->
2026-06-09 16:35:30 +00:00
Bruno Pantaleão Gonçalves
89bad79a3d Remove left over from unreleased feature camera list native UI (#4717)
<!-- 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. -->
2026-06-09 13:07:43 +00:00
Bruno Pantaleão Gonçalves
07209ca052 Make version optional on mDNS discovery (#4713)
<!-- 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. -->
2026-06-08 17:22:20 +02:00
Bruno Pantaleão Gonçalves
62f1a86adf Add TestFlight communication screen when app opens (#4711)
<!-- 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. -->
2026-06-08 13:22:57 +02:00
github-actions[bot]
787d960455 Update Localized Strings (#4698)
Automatically created by zacwest.

Co-authored-by: Home Assistant Bot <hello@home-assistant.io>
2026-06-05 16:19:45 +02:00
Bruno Pantaleão Gonçalves
9faffde1cd Add test for firebase url (#4706)
<!-- 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. -->
2026-06-05 09:02:50 +00:00
Bruno Pantaleão Gonçalves
1bf28ec458 Improve local push reconnection and add logs (#4702)
<!-- 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. -->
2026-06-04 21:42:33 +00:00
Bruno Pantaleão Gonçalves
7cbdcb762f Remove legacy actions (#4584)
<!-- 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>
2026-06-04 15:20:24 +02:00
Bruno Pantaleão Gonçalves
a5e7514a52 Remove mirror entries when deleting servers (#4694)
<!-- 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 -->

Ensure mirrorStore is kept in sync when servers are removed.
ServerManagerImpl now removes per-server mirrorStore entries and updates
restoredMirroredServers when removing an identifier, and clears
mirrorStore and restoredMirroredServers when removeAll() is called. The
allKeys set is captured before mutating the cache so mirror keys are
included in deletedServers. Tests updated to assert mirrorStore is
cleared and that mirror-restore state behaves as expected.

## 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. -->
2026-06-03 15:29:30 +02:00
Bruno Pantaleão Gonçalves
fa628036f8 Communicate to frontend when matter commissioning finishes (#4684)
<!-- 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. -->
2026-06-03 09:19:26 +00:00
Bruno Pantaleão Gonçalves
918d3affec Add "in_zones" array when reporting zone-only location (#4665)
<!-- 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 -->
To fulfill the new requirements in core we need to send in_zones when we
send a location update using zone only. See
https://github.com/home-assistant/architecture/discussions/1387 for more
details. Implemented in core
https://github.com/home-assistant/core/pull/171814

Android PR: https://github.com/home-assistant/android/pull/6879
## 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>
2026-06-03 11:16:32 +02:00
Bruno Pantaleão Gonçalves
9603eed071 Remove unused string (#4690)
<!-- 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. -->
2026-06-03 08:17:47 +00:00
Bruno Pantaleão Gonçalves
62639ebcd0 Improve Home Assistant invitation UI (#4687) 2026-06-02 22:34:21 +02:00
Bruno Pantaleão Gonçalves
5c02410412 Add push commands to open or hide full screen camera view (#4688) 2026-06-02 22:32:08 +02:00
Ryan Warner
9779d0576a Fix Live Activity ContentState decoding and Direct push delegate (#4677)
## 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.
2026-06-01 11:36:33 +02:00
Bruno Pantaleão Gonçalves
d83529d4c4 Fix remote Live Activity token lifecycle (#4671)
## 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>
2026-05-28 10:48:05 +02:00
Bruno Pantaleão Gonçalves
4401f7ca14 Rename live activity tags (#4670)
<!-- 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. -->
2026-05-27 15:49:41 +02:00
Ryan Warner
c80602e643 Remove end_live_activity command (#4616)
## Summary

- Removes `HandlerEndLiveActivity` and its registration in
`NotificationCommandManager`
- `clear_notification` with a `tag` already ends Live Activities via
`HandlerClearNotification` — no separate command needed
- Aligns iOS with Android, which uses `clear_notification` exclusively

Companion docs PR: home-assistant/companion.home-assistant#1303

## Test plan

- [ ] Send a `live_update: true` notification to start a Live Activity
- [ ] Send `clear_notification` with the same `tag` — activity ends
correctly
- [ ] Confirm no regression on standard notification clearing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Part of epic: https://github.com/home-assistant/epics/issues/61
Fixes: https://github.com/home-assistant/iOS/issues/4623

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 15:03:57 +02:00
Ryan Warner
ce65c1e87e Rename live activity webhook types to drop mobile_app_ prefix (#4585)
## Summary

- Renames `webhookTypeToken` from `"mobile_app_live_activity_token"` →
`"live_activity_token"`
- Renames `webhookTypeDismissed` from
`"mobile_app_live_activity_dismissed"` → `"live_activity_dismissed"`

Requested in home-assistant/core#166072 — all other webhooks in the
mobile_app integration use short names without the `mobile_app_` prefix
(e.g. `scan_tag`, `update_location`). This aligns our new webhook types
with that convention.

## Related

- home-assistant/core#166072

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Part of epic: https://github.com/home-assistant/epics/issues/61
Fixes: https://github.com/home-assistant/iOS/issues/4623

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 15:03:14 +02:00
Ryan Warner
ea4c9bf55b Remove unused Live Activity registration fields (#4586)
## Summary

- Removes `supports_live_activities` and
`supports_live_activities_frequent_updates` from the app registration
payload sent to HA

These fields were removed from the HA core side in
home-assistant/core#166072 (the `SCHEMA_APP_DATA` schema no longer
accepts them). Sending data that the server doesn't read wastes
bandwidth on every registration.

## Related

- home-assistant/core#166072

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Part of epic: https://github.com/home-assistant/epics/issues/61
Fixes: https://github.com/home-assistant/iOS/issues/4623

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 15:02:24 +02:00
Bruno Pantaleão Gonçalves
59b87c9b80 Create "What's new" engine (#4664)
<!-- 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>
2026-05-27 10:07:36 +02:00
github-actions[bot]
6b95480659 Update Localized Strings (#4655)
Automatically created by zacwest.

Co-authored-by: Home Assistant Bot <hello@home-assistant.io>
2026-05-26 10:00:05 +02:00
Bruno Pantaleão Gonçalves
0b5880b31d Add "Assist prompt" option for CarPlay quick access (#4619) 2026-05-13 13:01:06 -03:00
github-actions[bot]
3ed4ddde32 Update Localized Strings (#4630)
Automatically created by zacwest.

Co-authored-by: Home Assistant Bot <hello@home-assistant.io>
Co-authored-by: Bruno Pantaleão Gonçalves <5808343+bgoncal@users.noreply.github.com>
2026-05-13 10:54:18 -03:00
Bruno Pantaleão Gonçalves
f1eac4aaf6 Normalize manual server URLs (#4627)
## 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.
2026-05-13 09:15:23 -03:00
Bruno Pantaleão Gonçalves
797e1018c5 Log silent guard exits in custom widget AppIntents (#4629)
## 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.
2026-05-13 08:59:21 -03:00
github-actions[bot]
d16aaf46f1 Update Localized Strings (#4620)
Automatically created by bgoncal.

Co-authored-by: Home Assistant Bot <hello@home-assistant.io>
2026-05-12 22:37:06 -03:00
Bruno Pantaleão Gonçalves
ef6ee8ff7f Add cloudhook connection check to server settings (#4626)
<!-- 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>
2026-05-12 21:42:17 -03:00
Bruno Pantaleão Gonçalves
45e05e6666 Add confirmation dialog before executing tag (#4617)
<!-- 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. -->
2026-05-08 10:55:40 +02:00
github-actions[bot]
a9c6d322f3 Update Localized Strings (#4614) 2026-05-08 09:02:52 +02:00
Bruno Pantaleão Gonçalves
b821f58d5e Improve ​Car​Play ​Assist feedback and playback troubleshooting (#4613) 2026-05-06 18:26:34 +02:00
Bruno Pantaleão Gonçalves
bbdcd09309 Allow same mTLS cert for multiple servers (#4603)
<!-- 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. -->
2026-05-04 11:58:19 +02:00
Bruno Pantaleão Gonçalves
f5f32ef40c Add app icon shortcuts configurator (#4588)
<!-- 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 -->
As part of removing legacy iOS actions from the app completely, this PR
adds a way for the user to choose what to display in app icon long press
menu.
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
<img width="3216" height="1890" alt="CleanShot 2026-04-30 at 11 35
28@2x"
src="https://github.com/user-attachments/assets/4680d7e4-4790-4f21-b4b4-b93f641ce769"
/>

## 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. -->
2026-04-30 17:26:44 +02:00
Bruno Pantaleão Gonçalves
1b1289794d Drop Eureka dependency and dead UIKit form code (#4575)
## Summary

Now that PRs #4560–#4564 have migrated every Eureka-based settings
screen to SwiftUI, every remaining Eureka file on `main` is dead code.
This PR removes them, the Eureka pod, and the two Eureka-community
add-on pods.

**Reachability check before deleting:**

- `SettingsRootDataSource.swift` (the legacy Eureka settings root) has
zero inbound references. The active settings root is
`SettingsItem.swift`, which already routes to SwiftUI views
(`NFCListView()`, `ComplicationListView()`, etc.).
- The legacy `*ViewController.swift` files (`NFCListViewController`,
`ComplicationListViewController`, `SettingsDetailViewController`, etc.)
are reachable only from `SettingsRootDataSource` and from each other.
- The Eureka helper-row library (`Sources/App/Settings/Eureka/`) is used
only by those legacy view controllers.
- A handful of doc-comment mentions in active SwiftUI code (e.g. `//
SwiftUI replacement for ButtonRowWithLoading`) are not real references.
- Tests don't import Eureka. `ColorPickerRow` and `ViewRow` (Eureka
community pods) aren't referenced anywhere.

## What's removed

- `Sources/App/Settings/Eureka/` — 14 files (`HAFormViewController`,
helper rows, `AccountInitialsImage`)
- `Sources/App/Settings/MaterialDesignIcons+Eureka.swift` — `SearchItem`
conformance for the now-deleted `SearchPushRow`
- `Sources/App/Settings/SettingsRootDataSource.swift`
- `Sources/App/Settings/Settings/SettingsDetailViewController.swift`
-
`Sources/App/Settings/AppleWatch/Complication{List,FamilySelect,Edit}ViewController.swift`
- `Sources/App/Settings/NFC/NFC{List,Tag}ViewController.swift`
- `Sources/App/Utilities/{SearchPushRow,WebSocketStatusRow}.swift`
- `Eureka`, `ColorPickerRow`, `ViewRow` pods (Podfile + Podfile.lock)
- `import Eureka` from `SettingsSceneDelegate.swift`
- `-framework "Eureka"` from inlined `OTHER_LDFLAGS` in
`project.pbxproj`

24 files deleted, 4 modified. Pure dead-code removal — no behavior
changes.

## Stacked on #4563

This PR targets `claude/eureka-notification-categories-swiftui` (PR
#4563). After #4563 merges, GitHub will auto-rebase the base to `main`.

## Test plan

- [ ] CI lint + test passes
- [ ] Build succeeds with the smaller pod set
- [ ] Manual smoke test: open Settings → NFC, Settings → Complications,
Notifications → Categories — all SwiftUI screens still functional

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-04-29 02:58:54 +02:00
Bruno Pantaleão Gonçalves
773c165e2c Migrate Actions settings + action editor to SwiftUI (#4561)
## Summary
Replace the Eureka actions list with `ActionsSettingsView` +
`ActionsSettingsViewModel` (value-type Realm snapshots, delete/reorder,
scene toggle + customize flow, server refresh). Replace
`ActionConfigurator` with `ActionConfiguratorView` using SwiftUI `Form`,
`IconPicker`, SwiftUI `ColorPicker`, the existing
`WidgetBasicButtonView` preview, and a new inline `ActionServerPicker`.
`SettingsItem.actions` is wired directly to the SwiftUI view and the
Eureka actions code is removed from `SettingsDetailViewController`.

## Screenshots
_Pending — to be added before merge._

## Link to pull request in Documentation repository
Documentation: home-assistant/companion.home-assistant#

## Any other notes
Part of a five-PR Eureka → SwiftUI migration tracked in
`UIKitToSwiftUIMigration.md` (siblings: #4560, #4562, #4563, #4564). The
`Eureka`, `ColorPickerRow`, and `ViewRow` pods stay until all slices
land.

`ServerSelectRow.swift` is intentionally kept in-tree because
`ComplicationEditViewController` still uses it — both come out once the
complications slice (#4564) merges.

Not build-verified locally yet; may surface access-level fixes (e.g.
internal synthesized initializers on Shared types) during build.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 18:55:45 +02:00
Ryan Warner
480dd6d298 Enable Live Activities on iPad (iPadOS 17+) (#4574)
## Summary

iPad has supported Live Activities since iPadOS 17 — the previous
`userInterfaceIdiom == .pad` guard in `LiveActivitySettingsView` was
incorrect. `areActivitiesEnabled` (the `ActivityAuthorizationInfo` API)
already returns the correct value on iPad, so no platform-specific gate
is needed.

Changes:

- Remove the `userInterfaceIdiom == .pad` branch from
`LiveActivitySettingsView` that showed a static "Not available on iPad"
label. iPad users now see the same enabled/open-settings states as
iPhone.
- Drop the `live_activity.status.not_supported` localisation key from
all 34 locale files and the generated `Strings.swift` accessor.
- Update a stale comment in `HAAPI.swift` that incorrectly stated iPads
report `false` for `areActivitiesEnabled`.

ActivityKit handles Dynamic Island availability transparently — the
island pill appears on iPhone 14 Pro/Pro Max and all iPhone 15 and later
models; on iPad and older iPhones it simply doesn't render, and the
activity shows on the Lock Screen only.

## References

- Apple docs confirming iPad support: [Displaying live data with Live
Activities](https://developer.apple.com/documentation/activitykit/displaying-live-data-with-live-activities)
- Companion docs PR: home-assistant/companion.home-assistant#1303

## Test plan

- [ ] On iPhone: Live Activities settings screen shows
enabled/open-settings as before
- [ ] On iPad (iPadOS 17+): settings screen no longer shows "Not
available on iPad"; shows enabled/open-settings
- [ ] On iPad (iPadOS 17+): Live Activities can be started and updated
from Home Assistant
- [ ] On iPad (iPadOS 16 or earlier): `areActivitiesEnabled` returns
`false`; open-settings button shown
- [ ] Verify `live_activity.status.not_supported` key is absent from all
`.lproj` files

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 16:38:17 +00:00
Bruno Pantaleão Gonçalves
3310bb6ada Fix mtls profile info request on macos (#4555)
<!-- 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. -->
2026-04-24 16:00:37 +02:00
David Bishop
80924fe00c Add barometer as an entity that iPhone/some iPads expose (#4491) 2026-04-23 11:12:22 +02:00
Bruno Pantaleão Gonçalves
8c90c3f1e0 Avoid reconnection loop when disconnected (#4547)
<!-- 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>
2026-04-22 16:48:21 +02:00
github-actions[bot]
09bfa37213 Update Localized Strings (#4542)
Automatically created by zacwest.

Co-authored-by: Home Assistant Bot <hello@home-assistant.io>
2026-04-22 15:10:46 +02:00
Bruno Pantaleão Gonçalves
7f03811c17 Omit empty PKCS#12 passphrase and add tests (#4544)
<!-- 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 -->
Avoid passing an explicit empty passphrase to SecPKCS12Import on macOS
by introducing ClientCertificateManager.pkcs12ImportOptions(password:).
importP12 now uses this helper so an empty password results in no
passphrase option being supplied. Added unit tests verifying both empty
and non-empty password behavior and imported Security in the test file.

## 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. -->
2026-04-22 15:10:23 +02:00
Bruno Pantaleão Gonçalves
1d2f446541 Prevent live activity to crash due to access to webhooks in Environment (#4543)
<!-- 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. -->
2026-04-22 12:34:05 +00:00
Bruno Pantaleão Gonçalves
8f26f9e7d5 Restore servers from GRDB when empty keychain (#4523)
<!-- 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. -->



https://github.com/user-attachments/assets/e6c5eecb-4399-4e44-94e8-dc0b5ed8d744



## 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. -->
2026-04-21 21:13:26 +02:00
Bruno Pantaleão Gonçalves
8297770ac7 Prevent security exceptions to be mirrored in local db (#4541)
<!-- 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 <175728472+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-04-21 13:38:19 +02:00
Bruno Pantaleão Gonçalves
abdda5ad0c Improve Assist in CarPlay (#4524) 2026-04-15 19:50:59 +02:00