<!-- 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
Adds a GITHUB_TOKEN-only macOS release tagging workflow.
The tag-triggered macOS release workflow could not reliably list
Distribute workflow runs with the default `GITHUB_TOKEN`, which left tag
push releases stuck while waiting for the matching Distribute run.
Instead of adding a personal token, this follows the Android release
pattern:
- add a `Tag macOS Release` workflow that is manually dispatched with a
release tag and target commit
- resolve or validate the matching Distribute run before creating the
tag
- create or move the annotated release tag with `GITHUB_TOKEN`
- explicitly dispatch `release_macos.yml` with the release tag and
Distribute run ID
- make `release_macos.yml` dispatch-only so direct tag pushes do not
enter the broken discovery path
<!-- 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
Fixes the macOS release workflow lookup for the matching Distribute run.
The release workflow previously queried Distribute runs using both
`branch: main` and the server-side `head_sha` filter. During the
`release/2026.5.0/2026.1985` release, the matching successful Distribute
run was visible by ID and in unfiltered workflow listings, but the
release job kept polling as if it could not find it.
This updates the workflow to:
- add a manual `workflow_dispatch` path with `release_tag` and optional
`distribute_run_id`
- list recent Distribute runs on `main` and validate `run_number` plus
`head_sha` client-side
- validate an explicitly provided Distribute run ID before using it
- group manual release concurrency by release tag
- add useful logging for checked Distribute run numbers
## Screenshots
Not applicable, GitHub Actions workflow change only.
## Link to pull request in Documentation repository
Documentation: home-assistant/companion.home-assistant#
<!-- 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. -->
Bumps the dependencies group with 2 updates:
[ruby/setup-ruby](https://github.com/ruby/setup-ruby) and
[actions/cache](https://github.com/actions/cache).
Updates `ruby/setup-ruby` from 1.301.0 to 1.302.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.302.0</h2>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/ruby/setup-ruby/compare/v1.301.0...v1.302.0">https://github.com/ruby/setup-ruby/compare/v1.301.0...v1.302.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7372622e62"><code>7372622</code></a>
Give a better error for TruffleRuby 34+ on macOS Intel</li>
<li>See full diff in <a
href="4c56a21280...7372622e62">compare
view</a></li>
</ul>
</details>
<br />
Updates `actions/cache` from 5.0.4 to 5.0.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/cache/releases">actions/cache's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.5</h2>
<h2>What's Changed</h2>
<ul>
<li>Update ts-http-runtime dependency by <a
href="https://github.com/yacaovsnc"><code>@yacaovsnc</code></a> in <a
href="https://redirect.github.com/actions/cache/pull/1747">actions/cache#1747</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/cache/compare/v5...v5.0.5">https://github.com/actions/cache/compare/v5...v5.0.5</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/cache/blob/main/RELEASES.md">actions/cache's
changelog</a>.</em></p>
<blockquote>
<h1>Releases</h1>
<h2>How to prepare a release</h2>
<blockquote>
<p>[!NOTE]<br />
Relevant for maintainers with write access only.</p>
</blockquote>
<ol>
<li>Switch to a new branch from <code>main</code>.</li>
<li>Run <code>npm test</code> to ensure all tests are passing.</li>
<li>Update the version in <a
href="https://github.com/actions/cache/blob/main/package.json"><code>https://github.com/actions/cache/blob/main/package.json</code></a>.</li>
<li>Run <code>npm run build</code> to update the compiled files.</li>
<li>Update this <a
href="https://github.com/actions/cache/blob/main/RELEASES.md"><code>https://github.com/actions/cache/blob/main/RELEASES.md</code></a>
with the new version and changes in the <code>## Changelog</code>
section.</li>
<li>Run <code>licensed cache</code> to update the license report.</li>
<li>Run <code>licensed status</code> and resolve any warnings by
updating the <a
href="https://github.com/actions/cache/blob/main/.licensed.yml"><code>https://github.com/actions/cache/blob/main/.licensed.yml</code></a>
file with the exceptions.</li>
<li>Commit your changes and push your branch upstream.</li>
<li>Open a pull request against <code>main</code> and get it reviewed
and merged.</li>
<li>Draft a new release <a
href="https://github.com/actions/cache/releases">https://github.com/actions/cache/releases</a>
use the same version number used in <code>package.json</code>
<ol>
<li>Create a new tag with the version number.</li>
<li>Auto generate release notes and update them to match the changes you
made in <code>RELEASES.md</code>.</li>
<li>Toggle the set as the latest release option.</li>
<li>Publish the release.</li>
</ol>
</li>
<li>Navigate to <a
href="https://github.com/actions/cache/actions/workflows/release-new-action-version.yml">https://github.com/actions/cache/actions/workflows/release-new-action-version.yml</a>
<ol>
<li>There should be a workflow run queued with the same version
number.</li>
<li>Approve the run to publish the new version and update the major tags
for this action.</li>
</ol>
</li>
</ol>
<h2>Changelog</h2>
<h3>5.0.4</h3>
<ul>
<li>Bump <code>minimatch</code> to v3.1.5 (fixes ReDoS via globstar
patterns)</li>
<li>Bump <code>undici</code> to v6.24.1 (WebSocket decompression bomb
protection, header validation fixes)</li>
<li>Bump <code>fast-xml-parser</code> to v5.5.6</li>
</ul>
<h3>5.0.3</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v5.0.5 (Resolves: <a
href="https://github.com/actions/cache/security/dependabot/33">https://github.com/actions/cache/security/dependabot/33</a>)</li>
<li>Bump <code>@actions/core</code> to v2.0.3</li>
</ul>
<h3>5.0.2</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v5.0.3 <a
href="https://redirect.github.com/actions/cache/pull/1692">#1692</a></li>
</ul>
<h3>5.0.1</h3>
<ul>
<li>Update <code>@azure/storage-blob</code> to <code>^12.29.1</code> via
<code>@actions/cache@5.0.1</code> <a
href="https://redirect.github.com/actions/cache/pull/1685">#1685</a></li>
</ul>
<h3>5.0.0</h3>
<blockquote>
<p>[!IMPORTANT]
<code>actions/cache@v5</code> runs on the Node.js 24 runtime and
requires a minimum Actions Runner version of <code>2.327.1</code>.</p>
</blockquote>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="27d5ce7f10"><code>27d5ce7</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/cache/issues/1747">#1747</a>
from actions/yacaovsnc/update-dependency</li>
<li><a
href="f280785d7b"><code>f280785</code></a>
licensed changes</li>
<li><a
href="619aeb1606"><code>619aeb1</code></a>
npm run build generated dist files</li>
<li><a
href="bcf16c2893"><code>bcf16c2</code></a>
Update ts-http-runtime to 0.3.5</li>
<li>See full diff in <a
href="668228422a...27d5ce7f10">compare
view</a></li>
</ul>
</details>
<br />
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>
<!-- 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. -->
Bumps the dependencies group with 1 update:
[actions/upload-artifact](https://github.com/actions/upload-artifact).
Updates `actions/upload-artifact` from 6.0.0 to 7.0.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/upload-artifact/releases">actions/upload-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v7.0.0</h2>
<h2>v7 What's new</h2>
<h3>Direct Uploads</h3>
<p>Adds support for uploading single files directly (unzipped). Callers
can set the new <code>archive</code> parameter to <code>false</code> to
skip zipping the file during upload. Right now, we only support single
files. The action will fail if the glob passed resolves to multiple
files. The <code>name</code> parameter is also ignored with this
setting. Instead, the name of the artifact will be the name of the
uploaded file.</p>
<h3>ESM</h3>
<p>To support new versions of the <code>@actions/*</code> packages,
we've upgraded the package to ESM.</p>
<h2>What's Changed</h2>
<ul>
<li>Add proxy integration test by <a
href="https://github.com/Link"><code>@Link</code></a>- in <a
href="https://redirect.github.com/actions/upload-artifact/pull/754">actions/upload-artifact#754</a></li>
<li>Upgrade the module to ESM and bump dependencies by <a
href="https://github.com/danwkennedy"><code>@danwkennedy</code></a> in
<a
href="https://redirect.github.com/actions/upload-artifact/pull/762">actions/upload-artifact#762</a></li>
<li>Support direct file uploads by <a
href="https://github.com/danwkennedy"><code>@danwkennedy</code></a> in
<a
href="https://redirect.github.com/actions/upload-artifact/pull/764">actions/upload-artifact#764</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Link"><code>@Link</code></a>- made
their first contribution in <a
href="https://redirect.github.com/actions/upload-artifact/pull/754">actions/upload-artifact#754</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/upload-artifact/compare/v6...v7.0.0">https://github.com/actions/upload-artifact/compare/v6...v7.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="bbbca2ddaa"><code>bbbca2d</code></a>
Support direct file uploads (<a
href="https://redirect.github.com/actions/upload-artifact/issues/764">#764</a>)</li>
<li><a
href="589182c5a4"><code>589182c</code></a>
Upgrade the module to ESM and bump dependencies (<a
href="https://redirect.github.com/actions/upload-artifact/issues/762">#762</a>)</li>
<li><a
href="47309c993a"><code>47309c9</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-artifact/issues/754">#754</a>
from actions/Link-/add-proxy-integration-tests</li>
<li><a
href="02a8460834"><code>02a8460</code></a>
Add proxy integration test</li>
<li>See full diff in <a
href="b7c566a772...bbbca2ddaa">compare
view</a></li>
</ul>
</details>
<br />
[](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>
## 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>
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
## Summary
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>
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 />
[](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>
The brew bundle command was failing with 'No available formula with the
name lokalise2' because the third-party tap wasn't being added reliably.
This fix explicitly runs:
1. brew update - to refresh formulae
2. brew tap lokalise/cli-2 - to add the third-party tap
3. brew bundle - to install dependencies
Fixes the Download Localized Strings workflow failure.
<!-- 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. -->
Bumps the dependencies group with 3 updates:
[ruby/setup-ruby](https://github.com/ruby/setup-ruby),
[actions/cache](https://github.com/actions/cache) and
[docker/login-action](https://github.com/docker/login-action).
Updates `ruby/setup-ruby` from 1.286.0 to 1.287.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.287.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Improve the mise.toml parser to conform to the TOML specification by
<a href="https://github.com/pan93412"><code>@pan93412</code></a> in <a
href="https://redirect.github.com/ruby/setup-ruby/pull/868">ruby/setup-ruby#868</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/pan93412"><code>@pan93412</code></a>
made their first contribution in <a
href="https://redirect.github.com/ruby/setup-ruby/pull/868">ruby/setup-ruby#868</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/ruby/setup-ruby/compare/v1.286.0...v1.287.0">https://github.com/ruby/setup-ruby/compare/v1.286.0...v1.287.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8d27f39a5e"><code>8d27f39</code></a>
Improve the mise.toml parser to conform to the TOML specification</li>
<li>See full diff in <a
href="90be1154f9...8d27f39a5e">compare
view</a></li>
</ul>
</details>
<br />
Updates `actions/cache` from 5.0.2 to 5.0.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/cache/releases">actions/cache's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.3</h2>
<h2>What's Changed</h2>
<ul>
<li>Bump <code>@actions/cache</code> to v5.0.5 (Resolves: <a
href="https://github.com/actions/cache/security/dependabot/33">https://github.com/actions/cache/security/dependabot/33</a>)</li>
<li>Bump <code>@actions/core</code> to v2.0.3</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/cache/compare/v5...v5.0.3">https://github.com/actions/cache/compare/v5...v5.0.3</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/cache/blob/main/RELEASES.md">actions/cache's
changelog</a>.</em></p>
<blockquote>
<h1>Releases</h1>
<h2>How to prepare a release</h2>
<blockquote>
<p>[!NOTE]<br />
Relevant for maintainers with write access only.</p>
</blockquote>
<ol>
<li>Switch to a new branch from <code>main</code>.</li>
<li>Run <code>npm test</code> to ensure all tests are passing.</li>
<li>Update the version in <a
href="https://github.com/actions/cache/blob/main/package.json"><code>https://github.com/actions/cache/blob/main/package.json</code></a>.</li>
<li>Run <code>npm run build</code> to update the compiled files.</li>
<li>Update this <a
href="https://github.com/actions/cache/blob/main/RELEASES.md"><code>https://github.com/actions/cache/blob/main/RELEASES.md</code></a>
with the new version and changes in the <code>## Changelog</code>
section.</li>
<li>Run <code>licensed cache</code> to update the license report.</li>
<li>Run <code>licensed status</code> and resolve any warnings by
updating the <a
href="https://github.com/actions/cache/blob/main/.licensed.yml"><code>https://github.com/actions/cache/blob/main/.licensed.yml</code></a>
file with the exceptions.</li>
<li>Commit your changes and push your branch upstream.</li>
<li>Open a pull request against <code>main</code> and get it reviewed
and merged.</li>
<li>Draft a new release <a
href="https://github.com/actions/cache/releases">https://github.com/actions/cache/releases</a>
use the same version number used in <code>package.json</code>
<ol>
<li>Create a new tag with the version number.</li>
<li>Auto generate release notes and update them to match the changes you
made in <code>RELEASES.md</code>.</li>
<li>Toggle the set as the latest release option.</li>
<li>Publish the release.</li>
</ol>
</li>
<li>Navigate to <a
href="https://github.com/actions/cache/actions/workflows/release-new-action-version.yml">https://github.com/actions/cache/actions/workflows/release-new-action-version.yml</a>
<ol>
<li>There should be a workflow run queued with the same version
number.</li>
<li>Approve the run to publish the new version and update the major tags
for this action.</li>
</ol>
</li>
</ol>
<h2>Changelog</h2>
<h3>5.0.3</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v5.0.5 (Resolves: <a
href="https://github.com/actions/cache/security/dependabot/33">https://github.com/actions/cache/security/dependabot/33</a>)</li>
<li>Bump <code>@actions/core</code> to v2.0.3</li>
</ul>
<h3>5.0.2</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v5.0.3 <a
href="https://redirect.github.com/actions/cache/pull/1692">#1692</a></li>
</ul>
<h3>5.0.1</h3>
<ul>
<li>Update <code>@azure/storage-blob</code> to <code>^12.29.1</code> via
<code>@actions/cache@5.0.1</code> <a
href="https://redirect.github.com/actions/cache/pull/1685">#1685</a></li>
</ul>
<h3>5.0.0</h3>
<blockquote>
<p>[!IMPORTANT]
<code>actions/cache@v5</code> runs on the Node.js 24 runtime and
requires a minimum Actions Runner version of <code>2.327.1</code>.
If you are using self-hosted runners, ensure they are updated before
upgrading.</p>
</blockquote>
<h3>4.3.0</h3>
<ul>
<li>Bump <code>@actions/cache</code> to <a
href="https://redirect.github.com/actions/toolkit/pull/2132">v4.1.0</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="cdf6c1fa76"><code>cdf6c1f</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/cache/issues/1695">#1695</a>
from actions/Link-/prepare-5.0.3</li>
<li><a
href="a1bee22673"><code>a1bee22</code></a>
Add review for the <code>@actions/http-client</code> license</li>
<li><a
href="46957638dc"><code>4695763</code></a>
Add licensed output</li>
<li><a
href="dc73bb9f7b"><code>dc73bb9</code></a>
Upgrade dependencies and address security warnings</li>
<li><a
href="345d5c2f76"><code>345d5c2</code></a>
Add 5.0.3 builds</li>
<li>See full diff in <a
href="8b402f58fb...cdf6c1fa76">compare
view</a></li>
</ul>
</details>
<br />
Updates `docker/login-action` from 3.6.0 to 3.7.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/docker/login-action/releases">docker/login-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.7.0</h2>
<ul>
<li>Add <code>scope</code> input to set scopes for the authentication
token by <a
href="https://github.com/crazy-max"><code>@crazy-max</code></a> in <a
href="https://redirect.github.com/docker/login-action/pull/912">docker/login-action#912</a></li>
<li>Add support for AWS European Sovereign Cloud ECR by <a
href="https://github.com/dphi"><code>@dphi</code></a> in <a
href="https://redirect.github.com/docker/login-action/pull/914">docker/login-action#914</a></li>
<li>Ensure passwords are redacted with <code>registry-auth</code> input
by <a href="https://github.com/crazy-max"><code>@crazy-max</code></a>
in <a
href="https://redirect.github.com/docker/login-action/pull/911">docker/login-action#911</a></li>
<li>build(deps): bump lodash from 4.17.21 to 4.17.23 in <a
href="https://redirect.github.com/docker/login-action/pull/915">docker/login-action#915</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/login-action/compare/v3.6.0...v3.7.0">https://github.com/docker/login-action/compare/v3.6.0...v3.7.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c94ce9fb46"><code>c94ce9f</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/915">#915</a>
from docker/dependabot/npm_and_yarn/lodash-4.17.23</li>
<li><a
href="8339c958ce"><code>8339c95</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/912">#912</a>
from docker/scope</li>
<li><a
href="c83e9320c8"><code>c83e932</code></a>
build(deps): bump lodash from 4.17.21 to 4.17.23</li>
<li><a
href="b268aa57e3"><code>b268aa5</code></a>
chore: update generated content</li>
<li><a
href="a603229278"><code>a603229</code></a>
documentation for scope input</li>
<li><a
href="7567f92a74"><code>7567f92</code></a>
Add scope input to set scopes for the authentication token</li>
<li><a
href="0567fa5ae8"><code>0567fa5</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/914">#914</a>
from dphi/add-support-for-amazonaws.eu</li>
<li><a
href="f6ef577545"><code>f6ef577</code></a>
feat: add support for AWS European Sovereign Cloud ECR registries</li>
<li><a
href="916386b000"><code>916386b</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/911">#911</a>
from crazy-max/ensure-redact</li>
<li><a
href="5b3f94a294"><code>5b3f94a</code></a>
chore: update generated content</li>
<li>Additional commits viewable in <a
href="5e57cd1181...c94ce9fb46">compare
view</a></li>
</ul>
</details>
<br />
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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
## Summary
Updates `DEVELOPER_DIR` environment variable from Xcode 26.0 to 26.2 in
CI and distribution workflows. Aligns pipeline configuration with the
Xcode 26.2 requirement already documented in README.md.
**Modified workflows:**
- `.github/workflows/ci.yml` - Affects size pipeline job (app size
measurement), tests, and lint jobs
- `.github/workflows/distribute.yml` - Affects iOS and macOS
build/deployment jobs
Cache keys that reference `env.DEVELOPER_DIR` will automatically
invalidate, ensuring clean builds with the new Xcode version.
## Screenshots
N/A - Infrastructure change only
## Link to pull request in Documentation repository
Documentation: N/A
## Any other notes
None
<!-- START COPILOT ORIGINAL PROMPT -->
<details>
<summary>Original prompt</summary>
> Update the size pipeline job to include iOS 26.2 version. If
necessary, make the needed adjustments to the distribution pipeline to
support this version.
</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>
Bumps the dependencies group with 2 updates:
[ruby/setup-ruby](https://github.com/ruby/setup-ruby) and
[actions/cache](https://github.com/actions/cache).
Updates `ruby/setup-ruby` from 1.281.0 to 1.284.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.284.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix compatibility to ruby-3.2 by <a
href="https://github.com/larskanis"><code>@larskanis</code></a> in <a
href="https://redirect.github.com/ruby/setup-ruby/pull/861">ruby/setup-ruby#861</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/ruby/setup-ruby/compare/v1.283.0...v1.284.0">https://github.com/ruby/setup-ruby/compare/v1.283.0...v1.284.0</a></p>
<h2>v1.283.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Add restriction and validation for download urls by <a
href="https://github.com/ntkme"><code>@ntkme</code></a> in <a
href="https://redirect.github.com/ruby/setup-ruby/pull/856">ruby/setup-ruby#856</a></li>
<li>Add ruby-3.2.10 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/860">ruby/setup-ruby#860</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/ruby/setup-ruby/compare/v1.282.0...v1.283.0">https://github.com/ruby/setup-ruby/compare/v1.282.0...v1.283.0</a></p>
<h2>v1.282.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Add ruby-4.0.1 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/859">ruby/setup-ruby#859</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/ruby/setup-ruby/compare/v1.281.0...v1.282.0">https://github.com/ruby/setup-ruby/compare/v1.281.0...v1.282.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="80740b3b13"><code>80740b3</code></a>
Add new RubyInstaller releases 4.0.1-1 and 3.2.10-1</li>
<li><a
href="5fcbc91943"><code>5fcbc91</code></a>
Fix compatibility to ruby-3.2</li>
<li><a
href="708024e6c9"><code>708024e</code></a>
Add ruby-3.2.10</li>
<li><a
href="757ecf59ea"><code>757ecf5</code></a>
Give a proper name to CI jobs checking generated files</li>
<li><a
href="6963d48fc7"><code>6963d48</code></a>
Use Regexp.escape to not need to manually escape (error-prone)</li>
<li><a
href="3fc6249beb"><code>3fc6249</code></a>
Match more strictly with \A and \z</li>
<li><a
href="b939495830"><code>b939495</code></a>
Add restriction and validation for download urls</li>
<li><a
href="4fc31e1c82"><code>4fc31e1</code></a>
Add ruby-4.0.1</li>
<li>See full diff in <a
href="675dd7ba1b...80740b3b13">compare
view</a></li>
</ul>
</details>
<br />
Updates `actions/cache` from 5.0.1 to 5.0.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/cache/releases">actions/cache's
releases</a>.</em></p>
<blockquote>
<h2>v.5.0.2</h2>
<h1>v5.0.2</h1>
<h2>What's Changed</h2>
<p>When creating cache entries, 429s returned from the cache service
will not be retried.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/cache/blob/main/RELEASES.md">actions/cache's
changelog</a>.</em></p>
<blockquote>
<h1>Releases</h1>
<h2>Changelog</h2>
<h3>5.0.2</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v5.0.3 <a
href="https://redirect.github.com/actions/cache/pull/1692">#1692</a></li>
</ul>
<h3>5.0.1</h3>
<ul>
<li>Update <code>@azure/storage-blob</code> to <code>^12.29.1</code> via
<code>@actions/cache@5.0.1</code> <a
href="https://redirect.github.com/actions/cache/pull/1685">#1685</a></li>
</ul>
<h3>5.0.0</h3>
<blockquote>
<p>[!IMPORTANT]
<code>actions/cache@v5</code> runs on the Node.js 24 runtime and
requires a minimum Actions Runner version of <code>2.327.1</code>.
If you are using self-hosted runners, ensure they are updated before
upgrading.</p>
</blockquote>
<h3>4.3.0</h3>
<ul>
<li>Bump <code>@actions/cache</code> to <a
href="https://redirect.github.com/actions/toolkit/pull/2132">v4.1.0</a></li>
</ul>
<h3>4.2.4</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v4.0.5</li>
</ul>
<h3>4.2.3</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v4.0.3 (obfuscates SAS token in
debug logs for cache entries)</li>
</ul>
<h3>4.2.2</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v4.0.2</li>
</ul>
<h3>4.2.1</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v4.0.1</li>
</ul>
<h3>4.2.0</h3>
<p>TLDR; The cache backend service has been rewritten from the ground up
for improved performance and reliability. <a
href="https://github.com/actions/cache">actions/cache</a> now integrates
with the new cache service (v2) APIs.</p>
<p>The new service will gradually roll out as of <strong>February 1st,
2025</strong>. The legacy service will also be sunset on the same date.
Changes in these release are <strong>fully backward
compatible</strong>.</p>
<p><strong>We are deprecating some versions of this action</strong>. We
recommend upgrading to version <code>v4</code> or <code>v3</code> as
soon as possible before <strong>February 1st, 2025.</strong> (Upgrade
instructions below).</p>
<p>If you are using pinned SHAs, please use the SHAs of versions
<code>v4.2.0</code> or <code>v3.4.0</code></p>
<p>If you do not upgrade, all workflow runs using any of the deprecated
<a href="https://github.com/actions/cache">actions/cache</a> will
fail.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8b402f58fb"><code>8b402f5</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/cache/issues/1692">#1692</a>
from GhadimiR/main</li>
<li><a
href="304ab5a070"><code>304ab5a</code></a>
license for httpclient</li>
<li><a
href="609fc19e67"><code>609fc19</code></a>
Update licensed record for cache</li>
<li><a
href="b22231e43d"><code>b22231e</code></a>
Build</li>
<li><a
href="93150cdfb3"><code>93150cd</code></a>
Add PR link to releases</li>
<li><a
href="9b8ca9f07e"><code>9b8ca9f</code></a>
Bump actions/cache to 5.0.3</li>
<li>See full diff in <a
href="9255dc7a25...8b402f58fb">compare
view</a></li>
</ul>
</details>
<br />
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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
Bumps the dependencies group with 1 update:
[ruby/setup-ruby](https://github.com/ruby/setup-ruby).
Updates `ruby/setup-ruby` from 1.278.0 to 1.281.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.281.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Generate test matrix dynamically by <a
href="https://github.com/ntkme"><code>@ntkme</code></a> in <a
href="https://redirect.github.com/ruby/setup-ruby/pull/854">ruby/setup-ruby#854</a></li>
<li>Add truffleruby-33.0.0,truffleruby+graalvm-33.0.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/857">ruby/setup-ruby#857</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/ruby/setup-ruby/compare/v1.280.0...v1.281.0">https://github.com/ruby/setup-ruby/compare/v1.280.0...v1.281.0</a></p>
<h2>v1.280.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Test ruby 4.0 on windows by <a
href="https://github.com/ntkme"><code>@ntkme</code></a> in <a
href="https://redirect.github.com/ruby/setup-ruby/pull/853">ruby/setup-ruby#853</a></li>
<li>Add token input for downloading release assets by <a
href="https://github.com/TingluoHuang"><code>@TingluoHuang</code></a>
in <a
href="https://redirect.github.com/ruby/setup-ruby/pull/851">ruby/setup-ruby#851</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/TingluoHuang"><code>@TingluoHuang</code></a>
made their first contribution in <a
href="https://redirect.github.com/ruby/setup-ruby/pull/851">ruby/setup-ruby#851</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/ruby/setup-ruby/compare/v1.279.0...v1.280.0">https://github.com/ruby/setup-ruby/compare/v1.279.0...v1.280.0</a></p>
<h2>v1.279.0</h2>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/ruby/setup-ruby/compare/v1.278.0...v1.279.0">https://github.com/ruby/setup-ruby/compare/v1.278.0...v1.279.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="675dd7ba1b"><code>675dd7b</code></a>
Add truffleruby-33.0.0,truffleruby+graalvm-33.0.0</li>
<li><a
href="5dd816ae01"><code>5dd816a</code></a>
Tweaks for the generated CI matrix</li>
<li><a
href="c2f29a7833"><code>c2f29a7</code></a>
Generate test matrix dynamically</li>
<li><a
href="d5f787ce33"><code>d5f787c</code></a>
Define a helper to download to avoid duplication</li>
<li><a
href="1010da45f3"><code>1010da4</code></a>
Tweaks</li>
<li><a
href="7f50f6e3b3"><code>7f50f6e</code></a>
Add token input and pass it to release assets download.</li>
<li><a
href="be19563477"><code>be19563</code></a>
Test ruby 4.0 on windows</li>
<li><a
href="b90be12699"><code>b90be12</code></a>
Rename 3.4-asan to asan-release</li>
<li>See full diff in <a
href="4c24fa5ec0...675dd7ba1b">compare
view</a></li>
</ul>
</details>
<br />
[](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
Removed the step to install Homebrew packages.
<!-- 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. -->
Bumps the dependencies group with 1 update:
[ruby/setup-ruby](https://github.com/ruby/setup-ruby).
Updates `ruby/setup-ruby` from 1.276.0 to 1.278.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.278.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Set BUNDLER_VERSION whenever we know which version to use by <a
href="https://github.com/eregon"><code>@eregon</code></a> in <a
href="https://redirect.github.com/ruby/setup-ruby/pull/849">ruby/setup-ruby#849</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/ruby/setup-ruby/compare/v1.277.0...v1.278.0">https://github.com/ruby/setup-ruby/compare/v1.277.0...v1.278.0</a></p>
<h2>v1.277.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update CRuby releases on Windows 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/847">ruby/setup-ruby#847</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/ruby/setup-ruby/compare/v1.276.0...v1.277.0">https://github.com/ruby/setup-ruby/compare/v1.276.0...v1.277.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4c24fa5ec0"><code>4c24fa5</code></a>
Set BUNDLER_VERSION whenever we know which version to use</li>
<li><a
href="8a836efbce"><code>8a836ef</code></a>
Update CRuby releases on Windows</li>
<li>See full diff in <a
href="ae195bbe74...4c24fa5ec0">compare
view</a></li>
</ul>
</details>
<br />
[](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
Bumps the dependencies group with 1 update:
[ruby/setup-ruby](https://github.com/ruby/setup-ruby).
Updates `ruby/setup-ruby` from 1.275.0 to 1.276.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.276.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Add ruby-4.0.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/844">ruby/setup-ruby#844</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/ruby/setup-ruby/compare/v1.275.0...v1.276.0">https://github.com/ruby/setup-ruby/compare/v1.275.0...v1.276.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ae195bbe74"><code>ae195bb</code></a>
Add ruby-4.0.0</li>
<li>See full diff in <a
href="d354de180d...ae195bbe74">compare
view</a></li>
</ul>
</details>
<br />
[](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
## Summary
Removes the automated cleanup tooling for unused localization strings.
The detection script and CI checks remain to identify unused strings,
but removal is now a manual process.
**Deleted:**
- `Tools/remove_unused_strings.py` - Script that removed unused strings
from all `Localizable.strings` files
- `.github/workflows/clean_unused_strings.yml` - Monthly workflow that
created automated cleanup PRs
**Updated:**
- `Tools/README.md` - Removed `remove_unused_strings.py` documentation
- `UNUSED_STRINGS.md` - Removed removal script and workflow
documentation; renamed to focus on detection only
- `.github/workflows/ci.yml` - Updated PR comment to suggest manual
cleanup instead of referencing removed script
The `detect_unused_strings.py` script and CI integration continue to
function unchanged.
## Screenshots
N/A - No user-facing changes
## Link to pull request in Documentation repository
Documentation: home-assistant/companion.home-assistant#
## Any other notes
Detection of unused strings remains automated via CI checks on pull
requests. Only the removal automation has been eliminated.
<!-- START COPILOT CODING AGENT SUFFIX -->
<!-- START COPILOT ORIGINAL PROMPT -->
<details>
<summary>Original prompt</summary>
> Delete remove_unused_strings.py and workflow
</details>
<!-- START COPILOT CODING AGENT TIPS -->
---
💬 We'd love your input! Share your thoughts on Copilot coding agent in
our [2 minute survey](https://gh.io/copilot-coding-agent-survey).
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: bgoncal <5808343+bgoncal@users.noreply.github.com>
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#
## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->
## Summary
Implements automated detection and removal of unused localization
strings. Currently identifies 37 unused L10n properties across the
codebase (onboarding flows, settings, thread credentials, widgets,
etc.).
**Components:**
- **Detection script** (`Tools/detect_unused_strings.py`): Parses
`Strings.swift`, searches all Swift source for L10n property usage and
direct key references, reports unused strings grouped by category
- **Removal script** (`Tools/remove_unused_strings.py`): Deletes unused
keys from all `*.lproj/Localizable.strings` files, regenerates
`Strings.swift` via SwiftGen
- **CI check** (`check-unused-strings` job): Runs on PRs, posts sticky
comment with unused string count and details
- **Automated workflow** (`clean_unused_strings.yml`): Monthly scheduled
run + manual trigger, creates PR with cleanup changes
**Usage:**
```bash
# Detect unused strings
python3 Tools/detect_unused_strings.py
# Remove unused strings and regenerate code
python3 Tools/remove_unused_strings.py
```
## Screenshots
N/A - No UI changes
## Link to pull request in Documentation repository
Documentation: home-assistant/companion.home-assistant#
## Any other notes
The detection algorithm checks three patterns to minimize false
positives:
1. Full L10n path usage (`L10n.About.title`)
2. Leaf property usage (`.title`)
3. Direct Localizable key usage (`"about.title"`)
Modified `.gitignore` to allow Python scripts in Tools directory. All
changes pass yamllint and CodeQL security checks.
<!-- START COPILOT CODING AGENT SUFFIX -->
<!-- START COPILOT ORIGINAL PROMPT -->
<details>
<summary>Original prompt</summary>
> Tasks: 1 - Create a script that detects L10n (Strings.swift) unused
strings in the codebase 2 - From this list, extract the Localizable
string and double check if they are not used directly in the codebase 3
- If both are true, the script should delete these strings from all
localizable languages and L10n (Strings.swift)
> 4 - Add to the CI workflow a step which checks if that PR has unused
strings, if so, comment on the PR 5 - Create a workflow dedicated to
delete unused strings
</details>
<!-- 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>
## Summary
The distribute workflow fails intermittently when `pod install`
encounters transient 503 errors downloading SwiftGen from GitHub
releases. CocoaPods' internal curl retry limit (2 attempts) is
insufficient for temporary service outages.
Added retry logic with exponential backoff to the "Install Pods" step:
- Retries up to 5 times on failure
- 10 second delay between attempts
- Clear logging of attempt progress
- Fails workflow only after all attempts exhausted
```yaml
- name: Install Pods
run: |
max_attempts=5
attempt=1
until bundle exec pod install --repo-update; do
if [ $attempt -eq $max_attempts ]; then
echo "Pod install failed after $max_attempts attempts"
exit 1
fi
echo "Pod install failed (attempt $attempt/$max_attempts). Retrying in 10 seconds..."
sleep 10
attempt=$((attempt + 1))
done
```
## Screenshots
N/A - CI/CD workflow change only
## Link to pull request in Documentation repository
N/A - no user-facing changes
## Any other notes
This pattern could be applied to other workflows (ci.yml,
download_localized_strings.yml) if they experience similar transient
failures.
<!-- START COPILOT ORIGINAL PROMPT -->
<details>
<summary>Original prompt</summary>
> ## Problem
> The workflow is failing during `pod install` when downloading SwiftGen
from GitHub releases due to transient 503 errors. The curl command
inside CocoaPods only retries twice, which isn't sufficient for
temporary service unavailability issues.
>
> Error from logs:
> ```
> curl: (56) The requested URL returned error: 503
> ```
>
> ## Solution
> Wrap the `bundle exec pod install --repo-update` command in step
"Install Pods" (line 34 of `.github/workflows/distribute.yml`) with a
retry mechanism that will attempt the installation multiple times with a
delay between attempts.
>
> ## Implementation
> Update the "Install Pods" step in `.github/workflows/distribute.yml`
from:
> ```yaml
> - name: Install Pods
> run: bundle exec pod install --repo-update
> ```
>
> To:
> ```yaml
> - name: Install Pods
> run: |
> max_attempts=5
> attempt=1
> until bundle exec pod install --repo-update; do
> if [ $attempt -eq $max_attempts ]; then
> echo "Pod install failed after $max_attempts attempts"
> exit 1
> fi
> echo "Pod install failed (attempt $attempt/$max_attempts). Retrying in
10 seconds..."
> sleep 10
> attempt=$((attempt + 1))
> done
> ```
>
> This will:
> - Retry up to 5 times if pod install fails
> - Wait 10 seconds between retry attempts
> - Provide clear logging about which attempt is being made
> - Exit with failure only after all attempts are exhausted
>
> ## Files to modify
> - `.github/workflows/distribute.yml` - Update line 33-34 in the
"Install Pods" step
</details>
<!-- START COPILOT CODING AGENT SUFFIX -->
*This pull request was created as a result of the following prompt from
Copilot chat.*
> ## Problem
> The workflow is failing during `pod install` when downloading SwiftGen
from GitHub releases due to transient 503 errors. The curl command
inside CocoaPods only retries twice, which isn't sufficient for
temporary service unavailability issues.
>
> Error from logs:
> ```
> curl: (56) The requested URL returned error: 503
> ```
>
> ## Solution
> Wrap the `bundle exec pod install --repo-update` command in step
"Install Pods" (line 34 of `.github/workflows/distribute.yml`) with a
retry mechanism that will attempt the installation multiple times with a
delay between attempts.
>
> ## Implementation
> Update the "Install Pods" step in `.github/workflows/distribute.yml`
from:
> ```yaml
> - name: Install Pods
> run: bundle exec pod install --repo-update
> ```
>
> To:
> ```yaml
> - name: Install Pods
> run: |
> max_attempts=5
> attempt=1
> until bundle exec pod install --repo-update; do
> if [ $attempt -eq $max_attempts ]; then
> echo "Pod install failed after $max_attempts attempts"
> exit 1
> fi
> echo "Pod install failed (attempt $attempt/$max_attempts). Retrying in
10 seconds..."
> sleep 10
> attempt=$((attempt + 1))
> done
> ```
>
> This will:
> - Retry up to 5 times if pod install fails
> - Wait 10 seconds between retry attempts
> - Provide clear logging about which attempt is being made
> - Exit with failure only after all attempts are exhausted
>
> ## Files to modify
> - `.github/workflows/distribute.yml` - Update line 33-34 in the
"Install Pods" step
<!-- START COPILOT CODING AGENT TIPS -->
---
💬 We'd love your input! Share your thoughts on Copilot coding agent in
our [2 minute survey](https://gh.io/copilot-coding-agent-survey).
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: bgoncal <5808343+bgoncal@users.noreply.github.com>
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->
## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->
## 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. -->
Bumps the dependencies group with 1 update:
[fwal/setup-swift](https://github.com/fwal/setup-swift).
Updates `fwal/setup-swift` from 2.4.0 to 3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/fwal/setup-swift/releases">fwal/setup-swift's
releases</a>.</em></p>
<blockquote>
<h2>3.0.0 Beta 1</h2>
<h2>Beta 1 of using Swiftly to setup Swift</h2>
<ul>
<li>Now uses Swiftly to set up Swift</li>
<li>Added flag <code>skip-verify-signature</code> to disable GPG
verification checks</li>
</ul>
<h2>Features</h2>
<ul>
<li>Setup Swift more Swiftly 🚀 (setup-swift 3.0) (<a
href="https://redirect.github.com/fwal/setup-swift/issues/710">#710</a>)
<a href="https://github.com/fwal"><code>@fwal</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="364295d9c2"><code>364295d</code></a>
Bump build</li>
<li><a
href="7ef546c485"><code>7ef546c</code></a>
Update readme</li>
<li><a
href="3273319f0f"><code>3273319</code></a>
Bump swiftly</li>
<li><a
href="a90d2583fe"><code>a90d258</code></a>
Pass skip flag</li>
<li><a
href="ded451bd85"><code>ded451b</code></a>
Update workflows</li>
<li><a
href="0dad4e4b3a"><code>0dad4e4</code></a>
Merge pull request <a
href="https://redirect.github.com/fwal/setup-swift/issues/710">#710</a>
from swift-actions/next</li>
<li><a
href="4abecca1bb"><code>4abecca</code></a>
Build</li>
<li><a
href="0c751509fe"><code>0c75150</code></a>
Formatting</li>
<li><a
href="7849873cbf"><code>7849873</code></a>
Update gpg handling</li>
<li><a
href="9005990785"><code>9005990</code></a>
Merge branch 'main' into next</li>
<li>Additional commits viewable in <a
href="7ca6abe6b3...364295d9c2">compare
view</a></li>
</ul>
</details>
<br />
[](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
<!-- 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. -->
Bumps the dependencies group with 1 update:
[ruby/setup-ruby](https://github.com/ruby/setup-ruby).
Updates `ruby/setup-ruby` from 1.266.0 to 1.267.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.267.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Scale bundler install jobs with CPU count up to 8 by <a
href="https://github.com/thomasbreland"><code>@thomasbreland</code></a>
in <a
href="https://redirect.github.com/ruby/setup-ruby/pull/822">ruby/setup-ruby#822</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/thomasbreland"><code>@thomasbreland</code></a>
made their first contribution in <a
href="https://redirect.github.com/ruby/setup-ruby/pull/822">ruby/setup-ruby#822</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/ruby/setup-ruby/compare/v1.266.0...v1.267.0">https://github.com/ruby/setup-ruby/compare/v1.266.0...v1.267.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d5126b9b35"><code>d5126b9</code></a>
exec.exec() only accepts strings</li>
<li><a
href="274049f8cf"><code>274049f</code></a>
Use os.availableParallelism() instead of os.cpus().length</li>
<li><a
href="a96ff531da"><code>a96ff53</code></a>
Scale bundler install jobs with CPU count up to 8</li>
<li>See full diff in <a
href="4ff6f3611a...d5126b9b35">compare
view</a></li>
</ul>
</details>
<br />
[](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
Co-authored-by: Bruno Pantaleão Gonçalves <5808343+bgoncal@users.noreply.github.com>