Commit Graph

3767 Commits

Author SHA1 Message Date
Bruno Pantaleão Gonçalves
f6ace8fb49 Merge branch 'main' into copilot/modify-app-launch-behavior 2026-02-19 12:55:48 +01:00
Bruno Pantaleão Gonçalves
bb273efca4 Only use config defined icon for CarPlay if user explicit set (#4371)
<!-- 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-02-19 10:56:39 +00:00
Bruno Pantaleão Gonçalves
9a1942c3f4 Merge branch 'main' into copilot/modify-app-launch-behavior 2026-02-19 11:40:56 +01:00
Bruno Pantaleão
15f27f4b10 Update Strings.swift 2026-02-19 11:37:57 +01:00
Bruno Pantaleão
68fee36abd Lint 2026-02-19 11:37:57 +01:00
copilot-swe-agent[bot]
c56f077b90 Disable Launch in Background toggle when Launch on Login is off
Co-authored-by: bgoncal <5808343+bgoncal@users.noreply.github.com>
2026-02-19 10:36:29 +00:00
copilot-swe-agent[bot]
a7d9ad06da Remove non-English localization strings as requested
Co-authored-by: bgoncal <5808343+bgoncal@users.noreply.github.com>
2026-02-19 10:21:23 +00:00
Copilot
82bed24650 Fix widget builder dismissal on macOS Catalyst (#4370)
## Summary

macOS users cannot dismiss "Add to Widget" flows, requiring force quit.
`NavigationView`/`NavigationStack` missing
`.navigationViewStyle(.stack)` - required for Catalyst dismissal
controls (iOS uses gestures).

**Changed files:**
- `WidgetCreationView.swift` - Added `.stack` style to both
`NavigationStack` (iOS 16+) and `NavigationView` branches
- `WidgetSelectionView.swift` - Added `.stack` style to `NavigationView`

```swift
NavigationView {
    content
}
.navigationViewStyle(.stack)  // ← Enables dismissal controls on macOS
```

Pattern already established in `MagicItemAddView`, `AssistView`,
`SettingsView`, and 20+ other views.

## Screenshots

N/A - Fixes dismissal behavior only, no visual changes

## Link to pull request in Documentation repository

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

## Any other notes

Agent instructions specified this exact fix. 3 lines added across 2
files.

<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

> 
> ----
> 
> *This section details on the original issue you should resolve*
> 
> <issue_title>Unable to Dismiss `Add to Widget` window</issue_title>
> <issue_description><!-- Please READ THIS FIRST
> If your issue relates to something not looking right on Home Assistant
within the Companion App, please check if the error is present in Safari
on macOS too. If the issue is also seen in Safari, please open an issue
on the frontend repo
(https://github.com/home-assistant/frontend/issues/new?labels=bug&template=BUG_REPORT.md)
instead -->
> 
> **Device model, version and app version**
> <!-- Please include your mac's model and version as listed in 'About
This Mac'. Please also give the app version listed in the Home
Assistant>About Home Assistant, please include the number in brackets.
Safari can be found by launching it in Safari > About Safari. -->
> 
> Model Name: MacBook M1
> macOS Version: 26.3
> App Version: 2026.2 (2026.2.1758)
> Safari Version: 26.3 (21623.2.7.11.6)
> 
> **Home Assistant Core Version**
> 2026.2.2
> 
> **Describe the bug**
> There doesn’t appear to be a way to dismiss the “Add to Widget” for
both windows using the macOS app. I have to force close the app to close
the window. This seems like an oversight as on iOS it uses gestures
which isn't supported here.
> 
> **To Reproduce**
> - Select Entity more-info
> - Click Add to Widget
> - See result
> 
> **Expected behavior**
> There should be a close button to get out of the window.
> **Screenshots**
> 
> <img width="732" height="934" alt="Image"
src="https://github.com/user-attachments/assets/12f28cc5-02c9-43ed-88c5-f96d386c17e3"
/>
> <img width="732" height="934" alt="Image"
src="https://github.com/user-attachments/assets/1c0b9b0e-600e-46db-94cf-15c1fbbec6d5"
/>
> 
> **Additional context**
> <!--Add any other context about the problem here.-->
> Unrelated, but I can't seem to be to delete the widgets on this screen
either.</issue_description>
> 
> <agent_instructions>When adding widget from mac catalyst webview, we
are opening the widget screen in a NavigationStack/NavigationView
without navigationViewStyle .stack defined, update
that</agent_instructions>
> 
> ## Comments on the Issue (you are @copilot in this section)
> 
> <comments>
> </comments>
> 


</details>



<!-- START COPILOT CODING AGENT SUFFIX -->

- Fixes home-assistant/iOS#4369

<!-- START COPILOT CODING AGENT TIPS -->
---

💡 You can make Copilot smarter by setting up custom instructions,
customizing its development environment and configuring Model Context
Protocol (MCP) servers. Learn more [Copilot coding agent
tips](https://gh.io/copilot-coding-agent-tips) in the docs.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: bgoncal <5808343+bgoncal@users.noreply.github.com>
2026-02-19 10:03:55 +00:00
copilot-swe-agent[bot]
74b4e85f24 Add launch in background localized strings for all locales
Co-authored-by: bgoncal <5808343+bgoncal@users.noreply.github.com>
2026-02-18 21:25:35 +00:00
copilot-swe-agent[bot]
f81a3e0e03 Add launch in background preference and window activation logic
Co-authored-by: bgoncal <5808343+bgoncal@users.noreply.github.com>
2026-02-18 21:25:11 +00:00
copilot-swe-agent[bot]
a9005bf0ce Initial plan 2026-02-18 21:21:27 +00:00
Copilot
9b2156e4fe Fix CI workflow git fetch failures in PR check jobs (#4372) 2026-02-18 18:38:57 +01:00
Copilot
ab3d3c34a9 Add Common Controls widget (#4365)
## Summary

Adds a new widget called "Common Controls" that displays commonly used
entities based on usage patterns from the
`usage_prediction/common_control` endpoint.

**New Files:**
- `WidgetCommonlyUsedEntities.swift` - Widget definition using
`WidgetBasicContainerView` (same UI as WidgetCustom)
- `WidgetCommonlyUsedEntitiesTimelineProvider.swift` - Timeline provider
with state fetching and caching

**Key Changes:**
- Filters entities to supported domains: `light`, `switch`, `cover`,
`fan`, `climate`, `lock`
- Added `climate` domain to `Domain` enum with thermostat icon
- Added climate interaction in `MagicItem` (opens more info dialog)
- Registered in iOS 17/18 widget bundles
- Added `commonlyUsedEntities` to `WidgetsKind` and `DataWidgetsUpdater`
- Updated `WidgetsKindTests` to include the new widget kind

**Widget Behavior:**
- Fetches entities from the configured server (or first available) via
`usagePredictionCommonControl()`
- Entity info from app database via `MagicItemProvider`
- Entity states via `ControlEntityProvider` (same as WidgetCustom)
- 15-minute refresh policy with 1-second state cache (iOS reload bug
workaround)
- Supports systemSmall/Medium/Large families

## Screenshots

<img
src="https://github.com/user-attachments/assets/ad37542d-b3b4-4476-81b4-8be7425b5f31">

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

## Any other notes

<!-- START COPILOT CODING AGENT TIPS -->
---

 Let Copilot coding agent [set things up for
you](https://github.com/home-assistant/iOS/issues/new?title=+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: bgoncal <5808343+bgoncal@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-18 13:45:03 +01:00
github-actions[bot]
1a7ed9fc17 Update Localized Strings (#4366)
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-02-18 11:25:17 +00:00
Bruno Pantaleão Gonçalves
65316f2602 Check connection state before auto reload webview (#4364)
<!-- 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 -->
Recently it was introduced a feature to reload webview when app has been
backgrounded for more than 5 minutes, this PR adds a layer on top of it
that only reloads if the webview frontend connection state is not
connected.


## 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>
2026-02-18 11:13:20 +01:00
Bruno Pantaleão Gonçalves
9c2a40075c Improve to-do list widget UI, row heights and alignment. (#4367)
<!-- 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="1366" height="918" alt="CleanShot 2026-02-18 at 10 09 36@2x"
src="https://github.com/user-attachments/assets/993eb9af-1762-414d-96bc-8e85a1691fed"
/>

## 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-02-18 09:42:46 +00:00
github-actions[bot]
7c458599e8 Update Localized Strings (#4361)
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-02-17 15:56:49 +00:00
Copilot
ca986f1e8e Fix widget todo list time display for sub-hour due dates (#4359)
## Summary

Widget todo items due within 1 hour displayed as "in 1 hour" due to
`RelativeDateTimeFormatter` rounding. Now shows minute precision ("in 15
minutes", "in 30 minutes") for better time awareness with full
localization support.

**Implementation:**
- Added `DateComponentsFormatter` for minute-level formatting
- Enhanced `dueDisplay` to detect `abs(timeInterval) < 3600`
- Checks `abs(timeInterval) < 60` directly for "Now" threshold before
calculating minutes
- Uses `ceil()` for future times and `floor()` for past times to avoid
rounding boundary issues
- Displays localized strings via `L10n.Widgets.TodoList.DueDate.now`,
`.inFormat()`, and `.agoFormat()`
- Preserves existing formatter for ≥1 hour durations

**Localization:**
- Added 3 new localization strings to all 34 locale files (English
placeholders for translation team)
- Updated `Strings.swift` with corresponding L10n accessor functions
- All time displays now properly localized via `L10n` infrastructure

**Code Quality:**
- Made `dueDisplay` internal (not private) for testability via
`@testable import`
- Restored family-based widget row spacing logic that was accidentally
removed
- Fixed accessibility issues by replacing `.hidden()` and `.overlay()`
patterns with proper conditional rendering
- Tests made locale-agnostic using helper methods that generate expected
strings with same formatter

**Testing:**
- Added `WidgetTodoListViewTests.swift` with comprehensive coverage for
all time ranges
- Tests validate behavior for items due in 15, 30, 45 minutes, 1 minute,
<1 minute, overdue items, and >1 hour items
- Tests use same `DateComponentsFormatter` and L10n functions as
implementation for locale independence

## Screenshots
N/A - Text-only change

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

## Any other notes
Uses `DateComponentsFormatter.allowedUnits = [.minute]` for proper
localization. English placeholder strings have been added to all 34
locale files for the translation team to localize. The implementation
ensures consistent formatting across all supported languages using the
iOS localization system.

<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

> The widget To-Do List shows items with due dates less than 1 hour as
"in 1 hour" where it should display the time in minutes (e.g., "in x
minutes"). The issue lies in the `dueDisplay` method in the
`WidgetTodoListView` struct (file path:
`Sources/Extensions/Widgets/TodoList/WidgetTodoListView.swift`).
Specifically, this function uses the `numericRelativeFormatter` but does
not account for cases where the remaining due time is less than 1 hour.
> 
> The `numericRelativeFormatter` is currently used in the following
block:
> ```swift
> if item.hasDueTime {
> let text = Self.numericRelativeFormatter.localizedString(for: due,
relativeTo: now)
> return DueDisplay(text: capitalizeLeadingCharacter(in: text),
isPastDateOnly: false)
> }
> ```
> This produces a generic "in 1 hour" string for times under an hour. To
fix this, we need to enhance the logic to check if the remaining time is
less than 1 hour. If so, explicitly calculate and display the remaining
minutes using custom logic.
> 
> ### Proposed Fix:
> 1. Modify the `dueDisplay` method to check if the due time difference
is less than 1 hour.
> 2. If the remaining time is below one hour, calculate the difference
in minutes and format it as "in x minutes."
> 3. Otherwise, use the `numericRelativeFormatter` as before.
> 
> ### Resources for the Fix:
> - `DateComponentsFormatter` for better control over minute formatting.
> - Update the logic in the `dueDisplay` method to handle the special
case explicitly.
> 
> ### Testing
> - Add unit tests or predefined timelines with entries for due dates at
15, 30, and 45 minutes to confirm the enhanced functionality is applied
correctly.


</details>



<!-- START COPILOT CODING AGENT SUFFIX -->

*This pull request was created from Copilot chat.*
>

<!-- START COPILOT CODING AGENT TIPS -->
---

 Let Copilot coding agent [set things up for
you](https://github.com/home-assistant/iOS/issues/new?title=+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: bgoncal <5808343+bgoncal@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-17 16:16:13 +01:00
Copilot
e88a9f7cea Fix fork PR comment failures by adding repository check conditions (#4363)
## Summary

CI jobs `check-swiftlint-disables` and `check-unused-strings` fail with
"Resource not accessible by integration" when attempting to comment on
fork PRs. `GITHUB_TOKEN` lacks permissions to comment on fork PRs by
design.

**Changes:**
- Added `github.event.pull_request.head.repo.full_name ==
github.repository` condition to both
`marocchino/sticky-pull-request-comment` steps
- Matches existing pattern from `size` job (lines 196-198)

```yaml
# Before
if: steps.scan.outputs.disable_lines != ''

# After  
if: steps.scan.outputs.disable_lines != '' && github.event.pull_request.head.repo.full_name == github.repository
```

Comments now skip on fork PRs, succeed on base repo PRs.

## Screenshots
N/A - CI workflow change only

## Link to pull request in Documentation repository
N/A

## Any other notes
Multi-line format used for `check-unused-strings` condition to satisfy
120 char yamllint limit.

<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

> ## Problem
> 
> The CI workflow is failing with the error "Resource not accessible by
integration" when trying to create PR comments on pull requests from
forks. This is happening because the `GITHUB_TOKEN` does not have
permission to comment on PRs from forks due to security restrictions.
> 
> The error occurs in jobs that use
`marocchino/sticky-pull-request-comment` action:
> - `check-swiftlint-disables` job (line 66-74)
> - `check-unused-strings` job (line 107-127)
> 
> ## Solution
> 
> Add a condition to both comment steps to only run when the PR
originates from the same repository (not from a fork). This follows the
same pattern already used in the `size` job (line 196-198).
> 
> ## Required Changes
> 
> Update `.github/workflows/ci.yml`:
> 
> 1. **For the `check-swiftlint-disables` job** (line 66), add a
repository check condition:
> ```yaml
>       - name: Comment on PR if `swiftlint:disable` is found
> if: steps.scan.outputs.disable_lines != '' &&
github.event.pull_request.head.repo.full_name == github.repository
> uses:
marocchino/sticky-pull-request-comment@773744901b
# v2.9.4
>         with:
>           header: swiftlint-disable-check
>           message: |
>             ⚠️ **SwiftLint disabled in this PR**
> 
> The following added lines contain `// swiftlint:disable`. Please
verify this is necessary.
> ```
> 
> 2. **For the `check-unused-strings` job** (line 107), add a repository
check condition:
> ```yaml
>       - name: Comment on PR if unused strings are found
> if: steps.detect.outputs.has_unused == 'true' &&
github.event.pull_request.head.repo.full_name == github.repository
> uses:
marocchino/sticky-pull-request-comment@773744901b
# v2.9.4
>         with:
>           header: unused-strings-check
>           message: |
>             ⚠️ **Unused L10n strings detected**
> 
> Found **${{ steps.detect.outputs.count }}** unused localization
strings in the codebase.
> 
>             <details>
>             <summary>Click to see details</summary>
> 
>             ```
>             ${{ steps.detect.outputs.output }}
>             ```
> 
>             </details>
> 
> To clean up these strings, manually remove them from the
`Localizable.strings` files
>             and regenerate `Strings.swift` using SwiftGen.
> ```
> 
> This ensures that the comment steps only run for PRs from the base
repository where the `GITHUB_TOKEN` has sufficient permissions,
preventing the "Resource not accessible by integration" error on fork
PRs.


</details>



<!-- START COPILOT CODING AGENT SUFFIX -->

*This pull request was created from Copilot chat.*
>

<!-- START COPILOT CODING AGENT TIPS -->
---

💡 You can make Copilot smarter by setting up custom instructions,
customizing its development environment and configuring Model Context
Protocol (MCP) servers. Learn more [Copilot coding agent
tips](https://gh.io/copilot-coding-agent-tips) in the docs.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: bgoncal <5808343+bgoncal@users.noreply.github.com>
2026-02-17 14:10:19 +01:00
Bruno Pantaleão Gonçalves
af1967b282 Add due date to todo list widget + haptics (#4357)
<!-- 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="2058" height="1342" alt="CleanShot 2026-02-16 at 10 48
03@2x"
src="https://github.com/user-attachments/assets/49cf17c8-219d-46f6-aa82-eed163f5d03b"
/>

## 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-02-16 10:18:27 +00:00
dependabot[bot]
a739efe161 GitHub Actions: Bump docker/build-push-action from 6.18.0 to 6.19.2 in the dependencies group (#4358)
Bumps the dependencies group with 1 update:
[docker/build-push-action](https://github.com/docker/build-push-action).

Updates `docker/build-push-action` from 6.18.0 to 6.19.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/docker/build-push-action/releases">docker/build-push-action's
releases</a>.</em></p>
<blockquote>
<h2>v6.19.2</h2>
<ul>
<li>Preserve port in <code>GIT_AUTH_TOKEN</code> host by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1458">docker/build-push-action#1458</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/build-push-action/compare/v6.19.1...v6.19.2">https://github.com/docker/build-push-action/compare/v6.19.1...v6.19.2</a></p>
<h2>v6.19.1</h2>
<ul>
<li>Derive <code>GIT_AUTH_TOKEN</code> host from GitHub server URL by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1456">docker/build-push-action#1456</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/build-push-action/compare/v6.19.0...v6.19.1">https://github.com/docker/build-push-action/compare/v6.19.0...v6.19.1</a></p>
<h2>v6.19.0</h2>
<ul>
<li>Scope default git auth token to <code>github.com</code> by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1451">docker/build-push-action#1451</a></li>
<li>Bump brace-expansion from 1.1.11 to 1.1.12 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1396">docker/build-push-action#1396</a></li>
<li>Bump form-data from 2.5.1 to 2.5.5 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1391">docker/build-push-action#1391</a></li>
<li>Bump js-yaml from 3.14.1 to 3.14.2 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1429">docker/build-push-action#1429</a></li>
<li>Bump lodash from 4.17.21 to 4.17.23 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1446">docker/build-push-action#1446</a></li>
<li>Bump tmp from 0.2.3 to 0.2.4 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1398">docker/build-push-action#1398</a></li>
<li>Bump undici from 5.28.4 to 5.29.0 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1397">docker/build-push-action#1397</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/build-push-action/compare/v6.18.0...v6.19.0">https://github.com/docker/build-push-action/compare/v6.18.0...v6.19.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="10e90e3645"><code>10e90e3</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1458">#1458</a>
from crazy-max/git-auth-port</li>
<li><a
href="5262538458"><code>5262538</code></a>
chore: update generated content</li>
<li><a
href="cd130e45cb"><code>cd130e4</code></a>
preserve port in GIT_AUTH_TOKEN host</li>
<li><a
href="806c75105a"><code>806c751</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1452">#1452</a>
from crazy-max/update-yarn</li>
<li><a
href="601a80b39c"><code>601a80b</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1456">#1456</a>
from crazy-max/auth-token-dyn-host</li>
<li><a
href="8f7fd7c8c7"><code>8f7fd7c</code></a>
chore: update generated content</li>
<li><a
href="710e335474"><code>710e335</code></a>
derive GIT_AUTH_TOKEN host from GitHub server URL</li>
<li><a
href="c4ca8486a6"><code>c4ca848</code></a>
update yarn to 4.9.2</li>
<li><a
href="ee4ca427a2"><code>ee4ca42</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1398">#1398</a>
from docker/dependabot/npm_and_yarn/tmp-0.2.4</li>
<li><a
href="f1b3bb51af"><code>f1b3bb5</code></a>
chore: update generated content</li>
<li>Additional commits viewable in <a
href="263435318d...10e90e3645">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=docker/build-push-action&package-manager=github_actions&previous-version=6.18.0&new-version=6.19.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-16 09:34:59 +01:00
github-actions[bot]
dc375b70da Update Localized Strings (#4353)
Automatically created by zacwest.

Co-authored-by: Home Assistant Bot <hello@home-assistant.io>
2026-02-16 09:33:03 +01:00
Copilot
61e4905e96 Add haptic feedback to todo list widget buttons (#4355) 2026-02-14 18:39:47 +00:00
Copilot
76238c3a95 Update AppIntents to use system sound 1520 (Peek) (#4354) 2026-02-14 16:06:50 +00:00
Bruno Pantaleão Gonçalves
8851c538cb Bump CocoaPods and add arm64-darwin-25 (#4351)
Add arm64-darwin-25 to Gemfile.lock PLATFORMS and update Podfile.lock to
COCOAPODS 1.16.2. This updates lockfiles to recognize the newer Apple
Silicon/macOS platform and upgrade the CocoaPods tooling version.

<!-- 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-02-13 14:44:39 +01:00
github-actions[bot]
1687181617 Update Localized Strings (#4345)
Automatically created by zacwest.

Co-authored-by: Home Assistant Bot <hello@home-assistant.io>
2026-02-13 14:19:50 +01:00
Bruno Pantaleão Gonçalves
e47b6a2662 Update todo list on app background + fix copy (#4350)
<!-- 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-02-13 12:05:36 +01:00
Bruno Pantaleão Gonçalves
fdb0e2bc03 Todo list widget (#4347) 2026-02-12 23:40:14 +01:00
github-actions[bot]
3e9480ed88 Update Localized Strings (#4339)
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-02-11 21:30:44 +01:00
Bruno Pantaleão Gonçalves
24a8cd74a7 Delete release.yml (#4343)
<!-- 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-02-11 14:44:45 +00:00
Bruno Pantaleão Gonçalves
fbbd957738 Update release tag pattern to 'release/*/*' (#4342)
<!-- 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-02-11 13:54:47 +00:00
Copilot
a4bcb20858 Fix release workflow tag pattern to match build numbers with dots (#4341)
## Summary

The release workflow tag pattern `release/*.*.*/*` fails to match tags
like `release/2026.2.1/2026.1766` because glob `*` doesn't match dots.
Changed to `release/*/*/*` for broader matching.

**Before:**
```yaml
tags:
  - 'release/*.*.*/*'  # Won't match: release/2026.2.1/2026.1766
```

**After:**
```yaml
tags:
  - 'release/*/*/*'    # Matches: release/X/Y/Z (any chars including dots)
```

Backward compatible with existing tag formats (`release/2026.2.2/beta1`,
`release/2026.2.2/rc1`, etc.).

## Screenshots

N/A - workflow configuration change

## Link to pull request in Documentation repository

N/A - internal workflow change

## Any other notes

Single line change in `.github/workflows/release.yml`. All existing
workflow validation (branch checks, release creation) unchanged.

<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

> ## Problem
> 
> The release workflow at `.github/workflows/release.yml` currently uses
the tag pattern `release/*.*.*/*` which doesn't match tags like
`release/2026.2.1/2026.1766` because the glob pattern `*` doesn't match
dots.
> 
> ## Solution
> 
> Update the workflow trigger to be more permissive and accept tags with
dots in the final segment.
> 
> Change the trigger from:
> ```yaml
> on:
>   push:
>     tags:
>       - 'release/*.*.*/*'
> ```
> 
> To:
> ```yaml
> on:
>   push:
>     tags:
>       - 'release/*/*/*'
> ```
> 
> This pattern will match:
> - `release/2026.2.1/2026.1766` (with dots in build number)
> - `release/2026.2.2/beta1` (existing format)
> - `release/2026.2.2/rc1` (existing format)
> - Any other `release/X/Y` format
> 
> ## File to modify
> 
> `.github/workflows/release.yml` - Update the `on.push.tags` trigger
pattern
> 
> ## Validation
> 
> The workflow should keep all existing validation (branch check) and
functionality. Only the trigger pattern needs to change.


</details>



<!-- START COPILOT CODING AGENT SUFFIX -->

*This pull request was created from Copilot chat.*
>

<!-- START COPILOT CODING AGENT TIPS -->
---

💡 You can make Copilot smarter by setting up custom instructions,
customizing its development environment and configuring Model Context
Protocol (MCP) servers. Learn more [Copilot coding agent
tips](https://gh.io/copilot-coding-agent-tips) in the docs.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: bgoncal <5808343+bgoncal@users.noreply.github.com>
2026-02-11 13:19:16 +00:00
Copilot
0b235e5d74 Add release workflow for release/YYYY.M.D/* tags (#4340)
## Summary

Adds a GitHub Actions workflow that creates a GitHub release when tags
matching `release/[0-9]+.[0-9]+.[0-9]+/*` are pushed.

- Triggers on tags like `release/2026.2.2/beta1`, `release/2026.2.2/rc1`
- Validates tag is on `main` branch via `git merge-base --is-ancestor`
- Creates release with auto-generated notes
- No builds or deployments—release creation only

```yaml
on:
  push:
    tags:
      - 'release/[0-9]+.[0-9]+.[0-9]+/*'
```

## Screenshots

N/A — CI workflow change

## Link to pull request in Documentation repository

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

## Any other notes

Uses `softprops/action-gh-release@v2.2.2` with pinned SHA per repo
conventions.

<!-- START COPILOT CODING AGENT TIPS -->
---

 Let Copilot coding agent [set things up for
you](https://github.com/home-assistant/iOS/issues/new?title=+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: bgoncal <5808343+bgoncal@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-11 11:31:55 +01:00
Bruno Pantaleão Gonçalves
34e2a9fa40 Bump 2026.2.2 (#4338) 2026-02-10 22:31:49 +00:00
github-actions[bot]
a6c224e251 Update Localized Strings (#4335)
Automatically created by zacwest.

Co-authored-by: Home Assistant Bot <hello@home-assistant.io>
2026-02-10 21:13:10 +00:00
Bruno Pantaleão Gonçalves
2120ef8b79 Add extra padding to DownloadManagerView (#4337) 2026-02-10 21:39:09 +01:00
github-actions[bot]
3c10e9c5aa Update Localized Strings (#4329)
Automatically created by zacwest.

Co-authored-by: Home Assistant Bot <hello@home-assistant.io>
2026-02-10 02:11:23 +00:00
Bruno Pantaleão Gonçalves
5c7a624d2e Bump 2026.2.1 (#4332)
<!-- 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. -->
release/2026.2.1/2026.1766
2026-02-10 01:19:39 +01:00
Bruno Pantaleão Gonçalves
c29e9409f3 Fix crash on iOS 15/16 due to @Observable in PassThroughWindow (#4334)
Replace @Observable macro with ObservableObject pattern to fix crash
during app launch on iOS 15-16 devices.

Root cause:
- PassThroughWindow used @Observable macro (iOS 17+ API)
- Despite @available(iOS 18, *), Swift compiled metadata into binary
- During app launch, Realm's objc_copyClassList() triggered metadata
loading for all classes
- @Observable generated code referenced symbols unavailable on iOS 15/16
- Result: null pointer dereference crash at startup

The fix:
- Replace @Observable with ObservableObject + @Published properties
- These patterns work on iOS 13+, safe for iOS 15/16
- No behavioral changes, same observation mechanism
- Maintains @available(iOS 18, *) for class usage

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-09 23:34:35 +00:00
Bruno Pantaleão Gonçalves
82e1ce3daa Use NavigationStack for settings starting on iOS 16 (#4330)
<!-- 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 <198982749+Copilot@users.noreply.github.com>
2026-02-09 15:40:17 +01:00
dependabot[bot]
44cc90a7ba GitHub Actions: Bump ruby/setup-ruby from 1.287.0 to 1.288.0 in the dependencies group (#4328)
Bumps the dependencies group with 1 update:
[ruby/setup-ruby](https://github.com/ruby/setup-ruby).

Updates `ruby/setup-ruby` from 1.287.0 to 1.288.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ruby/setup-ruby/releases">ruby/setup-ruby's
releases</a>.</em></p>
<blockquote>
<h2>v1.288.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Move check-new-windows-versions.yml workflow from ruby/ruby-builder
to ruby/setup-ruby by <a
href="https://github.com/eregon"><code>@​eregon</code></a> in <a
href="https://redirect.github.com/ruby/setup-ruby/pull/870">ruby/setup-ruby#870</a></li>
<li>Add jruby-10.0.3.0 by <a
href="https://github.com/ruby-builder-bot"><code>@​ruby-builder-bot</code></a>
in <a
href="https://redirect.github.com/ruby/setup-ruby/pull/875">ruby/setup-ruby#875</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/ruby/setup-ruby/compare/v1.287.0...v1.288.0">https://github.com/ruby/setup-ruby/compare/v1.287.0...v1.288.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="09a7688d3b"><code>09a7688</code></a>
Add jruby-10.0.3.0</li>
<li><a
href="67178a2693"><code>67178a2</code></a>
Improve the automated PR description</li>
<li><a
href="ede5b7227f"><code>ede5b72</code></a>
Shorten workflow name</li>
<li><a
href="aaddd6855e"><code>aaddd68</code></a>
new-versions.rb is no longer used for RubyInstaller releases</li>
<li><a
href="c7aa9f4008"><code>c7aa9f4</code></a>
Move check-new-windows-versions.yml workflow from ruby/ruby-builder to
ruby/s...</li>
<li>See full diff in <a
href="8d27f39a5e...09a7688d3b">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ruby/setup-ruby&package-manager=github_actions&previous-version=1.287.0&new-version=1.288.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-09 13:56:51 +01:00
Bruno Pantaleão Gonçalves
120df2a204 Skip sync on Catalyst for load/refresh (#4325)
<!-- 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 -->
Extracted load/refresh blocks and conditionally invoke
Current.connectivity.syncNetworkInformation only on non-Catalyst
targets. On Catalyst the closures are executed immediately to avoid
unnecessary async network syncs and ensure immediate UI behavior.
Applied to WebViewController and its protocol conformance refresh
handling.

## 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-02-08 15:07:54 +00:00
Bruno Pantaleão Gonçalves
1ce8b7c4c3 Move firebase messaging and swift messages to SPM (#4326)
<!-- 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-02-08 14:58:30 +00:00
Bruno Pantaleão Gonçalves
e17f81f64b Organize webview folder (#4324)
<!-- 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-02-08 15:18:43 +01:00
Bruno Pantaleão Gonçalves
37eeabe567 Extract WebViewController delegates & protocol (#4323)
Move WKNavigation/UI delegate logic and WebViewControllerProtocol
conformance into two new files (WebViewController+WebKitDelegates.swift
and WebViewController+ProtocolConformance.swift) for better separation
of concerns. Update WebViewController.swift to make several members
(webView, refreshControl, initialURL, lastNavigationWasServerError,
emptyStateTimer, isConnected) and helper methods non-private so the
split extensions can access them. Add file references to the Xcode
project (project.pbxproj). This reorganizes the code for readability and
easier maintenance without changing runtime behavior.

<!-- 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>
2026-02-08 14:34:17 +01:00
github-actions[bot]
eeb8b25003 Update Localized Strings (#4321)
Automatically created by zacwest.

Co-authored-by: Home Assistant Bot <hello@home-assistant.io>
2026-02-07 14:54:02 +01:00
Copilot
1245601cec Present downloads view as bottom sheet with medium detent (#4319) 2026-02-06 09:30:21 +01:00
Bruno Pantaleão Gonçalves
a6e31428bf Display entity picker in large sheet due to keyboard auto focus (#4317) 2026-02-05 17:30:28 +00:00
Bruno Pantaleão Gonçalves
9b015f2a76 Show dynamic island toasts only when debugging (#4318) 2026-02-05 17:54:55 +01:00
github-actions[bot]
53c3424461 Update Localized Strings (#4313)
Automatically created by zacwest.

Co-authored-by: Home Assistant Bot <hello@home-assistant.io>
2026-02-05 11:14:44 +01:00