160 Commits
Author SHA1 Message Date
dependabot[bot] 1a81e9c5f3 Bump the github-actions group across 1 directory with 3 updates
Bumps the github-actions group with 3 updates in the / directory: [Homebrew/actions/setup-homebrew](https://github.com/homebrew/actions), [github/codeql-action/upload-sarif](https://github.com/github/codeql-action) and [Homebrew/actions/cache-homebrew-prefix](https://github.com/homebrew/actions).


Updates `Homebrew/actions/setup-homebrew` from 2026.09.13.1 to 2026.09.21.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/1e34f2e2acaa766b7efacb8c26352e6abbb023f9...848c272c7bfe984a197bd4d16383f4c106ec61e6)

Updates `github/codeql-action/upload-sarif` from 4.38.0 to 4.38.1
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/b96794f015dfd88f77b49b1c93e0fa7110f94c63...1c5b675653bb5c22dbe9b12b556ec555138e09fd)

Updates `Homebrew/actions/cache-homebrew-prefix` from 2026.09.13.1 to 2026.09.21.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/1e34f2e2acaa766b7efacb8c26352e6abbb023f9...848c272c7bfe984a197bd4d16383f4c106ec61e6)

---
updated-dependencies:
- dependency-name: Homebrew/actions/setup-homebrew
  dependency-version: 2026.09.21.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.38.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: Homebrew/actions/cache-homebrew-prefix
  dependency-version: 2026.09.21.1
  dependency-type: direct:production
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-25 08:07:12 +00:00
Štefan Baebler 0a6d68a3b7 ci(swift_quality): Don't persist git credentials
Git credentials should not be needed in this Swift Quality check anymore after checkout.

Resolves https://docs.zizmor.sh/audits/#artipacked
2026-09-24 07:16:08 +02:00
Graeme ArthurandClaude Opus 5 07e0ce1570 Lint localised copy and enforce the UI-only layer
BrewUILint gains localized_copy (every literal is Text(bundle:comment:),
String(localized:bundle:comment:) or Text(verbatim:)) and
localization_layer (no localisation outside BrewUIComponents,
BrewFeature* and the app). The build workflow checks the catalogs
against the code after its Xcode build, the Swift Quality job runs
scripts/localize verify and writes the translation status to the step
summary. Also points the lint and build workflows at Homebrew/ — the
app folder was renamed from Brew/ and the workflows never followed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 23:24:46 +10:00
dependabot[bot] 9eedc8fd65 Bump the github-actions group across 1 directory with 2 updates
Bumps the github-actions group with 2 updates in the / directory: [Homebrew/actions/setup-homebrew](https://github.com/homebrew/actions) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action).


Updates `Homebrew/actions/setup-homebrew` from 2026.09.07.1 to 2026.09.13.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/f8d4222eb633e65c2a0157383cf80861fc7fae7f...1e34f2e2acaa766b7efacb8c26352e6abbb023f9)

Updates `github/codeql-action/upload-sarif` from 4.37.9 to 4.38.0
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/cdf488f595d80d6e07e03d4674febd5ab45fa938...b96794f015dfd88f77b49b1c93e0fa7110f94c63)

---
updated-dependencies:
- dependency-name: Homebrew/actions/setup-homebrew
  dependency-version: 2026.09.13.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.38.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-18 08:08:12 +00:00
BrewTestBot 3b06d1e341 licenses.yml: update to match main configuration 2026-09-17 20:21:23 +00:00
BrewTestBot 80a9018bd9 check-licenses.sh: update to match main configuration 2026-09-17 20:21:23 +00:00
BrewTestBot 82ba3223fa denied-licenses.txt: update to match main configuration 2026-09-17 20:21:23 +00:00
BrewTestBot f9ce513843 licenses.yml: update to match main configuration 2026-09-17 14:43:54 +00:00
BrewTestBot 5851c4e79f actionlint.yml: update to match main configuration 2026-09-17 14:43:54 +00:00
BrewTestBot 8b0bc05791 denied-licenses.txt: update to match main configuration 2026-09-17 14:43:54 +00:00
dependabot[bot] d20b391eef Bump the github-actions group across 1 directory with 3 updates
Bumps the github-actions group with 3 updates in the / directory: [Homebrew/actions/setup-homebrew](https://github.com/homebrew/actions), [github/codeql-action/upload-sarif](https://github.com/github/codeql-action) and [Homebrew/actions/cache-homebrew-prefix](https://github.com/homebrew/actions).


Updates `Homebrew/actions/setup-homebrew` from 2026.09.07.1 to 2026.09.13.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/f8d4222eb633e65c2a0157383cf80861fc7fae7f...1e34f2e2acaa766b7efacb8c26352e6abbb023f9)

Updates `github/codeql-action/upload-sarif` from 4.37.9 to 4.38.0
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/cdf488f595d80d6e07e03d4674febd5ab45fa938...b96794f015dfd88f77b49b1c93e0fa7110f94c63)

Updates `Homebrew/actions/cache-homebrew-prefix` from 2026.09.07.1 to 2026.09.13.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/f8d4222eb633e65c2a0157383cf80861fc7fae7f...1e34f2e2acaa766b7efacb8c26352e6abbb023f9)

---
updated-dependencies:
- dependency-name: Homebrew/actions/setup-homebrew
  dependency-version: 2026.09.13.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.38.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: Homebrew/actions/cache-homebrew-prefix
  dependency-version: 2026.09.13.1
  dependency-type: direct:production
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-17 09:58:59 +00:00
Mike McQuaid 08afc260de Consolidate documentation and agent guidance
- Keep the project overview and development setup in `README.md`.
- Put system design in `ARCHITECTURE.md` and detailed contributor and
  agent guidance in `AGENTS.md`; symlink `CLAUDE.md` to that source.
- Remove duplicate rules, memory files and unused Jekyll tooling.
2026-09-17 08:51:47 +01:00
SurefireStudios 57f862f83c Fix the remaining stale Brew paths in lint, CI and docs
`.swiftlint.yml` had `included: Brew`, so `swiftlint lint --strict` skipped
the app targets entirely; it now lists `Homebrew` and `HomebrewUpgradeHelper`.

`pr_build_test.yml` filtered on `Brew/**` and `Brew.entitlements`, so an
app-only change could skip Build and Test. No entitlements file exists
anywhere in the tree, so that entry is dropped rather than repointed.

BrewUILint's glob reached `Homebrew` but not `HomebrewUpgradeHelper`, leaving
2 files unlinted; CI, `scripts/pre-commit` and AGENTS.md now agree on
`find Homebrew HomebrewUpgradeHelper Sources`.

CONVENTIONS.md and two Cursor rules pointed at `Brew/Models/HomebrewPackageReference.swift`
and `Brew/PreviewSupport/AppPreviewSupport.swift`, neither of which exists under
any prefix; they now point at `Sources/BrewCore/Models/HomebrewPackageID.swift`
and `Sources/BrewRepositoryInterfaces/PreviewSupport/PreviewSupport.swift`.
2026-09-16 08:51:20 -07:00
SurefireStudios 45d2a0a7c9 Run Swift Quality when its own workflow changes
The paths filter did not list swift_quality.yml, so edits to the lint and
format job were never exercised by that job. Adding it means this change to
the BrewUILint glob is validated by the run it affects.
2026-09-15 23:06:11 -07:00
SurefireStudios 7233d4f0a8 Lint the app in CI, and fix stale Brew/ paths
`swift_quality.yml` ran BrewUILint over `find Brew Sources`. There is no
`Brew` directory, so `find` errored and matched only `Sources`, silently
skipping the 17 Swift files in `Homebrew/`. `scripts/pre-commit` already
uses `find Homebrew Sources`; CI now matches it.

The same rename left `Brew/` in the docs: two dead links in CONVENTIONS.md,
and a `Brew/**/*.swift` glob in design-system.mdc that never matches, so the
Cursor design-system rule never applied to any file.
2026-09-15 23:00:01 -07:00
BrewTestBot 44209b01f4 check-prs.yml: update to match main configuration 2026-09-15 18:46:22 +00:00
BrewTestBot eef3acb05b check-issues.yml: update to match main configuration 2026-09-15 18:46:22 +00:00
Mike McQuaid 0854aca577 Run Homebrew through isolated zsh
- Read user configuration from `brew.env`, independent of shell setup.
- Filter system startup banners while preserving startup diagnostics.
- Drain terminal output before closing its descriptors to prevent loss.
- Use the same restricted environment for app self-upgrades.
- Document the policy and configure live CI through `brew.env`.
2026-09-15 13:32:19 +01:00
Mike McQuaid 39a529cd8a Require before and after PR screenshots 2026-09-15 11:38:25 +01:00
Patrick Linnane 6f82c1899a Remove template warnings once resolved
Signed-off-by: Patrick Linnane <patrick@linnane.io>
2026-09-14 12:35:49 -07:00
Mike McQuaid ad26b713be Add and enforce issue and PR templates
- Ask for reproducible app bugs and concrete feature requests.
- Adapt Homebrew's checks while accepting existing crash reports.
- Check fork PRs using trusted code without a repository checkout.
2026-09-14 20:04:22 +01:00
dependabot[bot] 8e36e97668 Bump the github-actions group across 1 directory with 5 updates
Bumps the github-actions group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [Homebrew/actions/setup-homebrew](https://github.com/homebrew/actions) | `2026.08.31.1` | `2026.09.07.1` |
| [Homebrew/actions/setup-ruby](https://github.com/homebrew/actions) | `2026.08.31.1` | `2026.09.07.1` |
| [actions/deploy-pages](https://github.com/actions/deploy-pages) | `5.0.0` | `5.0.1` |
| [Homebrew/actions/create-or-update-issue](https://github.com/homebrew/actions) | `2026.08.31.1` | `2026.09.07.1` |
| [Homebrew/actions/cache-homebrew-prefix](https://github.com/homebrew/actions) | `2026.08.31.1` | `2026.09.07.1` |



Updates `Homebrew/actions/setup-homebrew` from 2026.08.31.1 to 2026.09.07.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/3cdb78d0f62ad29dd32de765782654f4eedea607...f8d4222eb633e65c2a0157383cf80861fc7fae7f)

Updates `Homebrew/actions/setup-ruby` from 2026.08.31.1 to 2026.09.07.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/3cdb78d0f62ad29dd32de765782654f4eedea607...f8d4222eb633e65c2a0157383cf80861fc7fae7f)

Updates `actions/deploy-pages` from 5.0.0 to 5.0.1
- [Release notes](https://github.com/actions/deploy-pages/releases)
- [Commits](https://github.com/actions/deploy-pages/compare/cd2ce8fcbc39b97be8ca5fce6e763baed58fa128...368f82528645a54fb793d4d04e342629a3f51346)

Updates `Homebrew/actions/create-or-update-issue` from 2026.08.31.1 to 2026.09.07.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/3cdb78d0f62ad29dd32de765782654f4eedea607...f8d4222eb633e65c2a0157383cf80861fc7fae7f)

Updates `Homebrew/actions/cache-homebrew-prefix` from 2026.08.31.1 to 2026.09.07.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/3cdb78d0f62ad29dd32de765782654f4eedea607...f8d4222eb633e65c2a0157383cf80861fc7fae7f)

---
updated-dependencies:
- dependency-name: Homebrew/actions/setup-homebrew
  dependency-version: 2026.09.07.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: Homebrew/actions/setup-ruby
  dependency-version: 2026.09.07.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: actions/deploy-pages
  dependency-version: 5.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: Homebrew/actions/create-or-update-issue
  dependency-version: 2026.09.07.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: Homebrew/actions/cache-homebrew-prefix
  dependency-version: 2026.09.07.1
  dependency-type: direct:production
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-11 08:08:55 +00:00
Graeme Arthur 363dd1c312 Run the live canaries on every pull request
Nightly cron only fires on the default branch, so the suite would have
gone unrun until after it merged, and the first real evidence it works
would have arrived on main. Moving it to pull_request means it is exercised
where it can still be fixed.

It stays a separate job rather than joining the deterministic suite's:
Brew-UI still skips these tests by name, so a live failure reads as a
live failure and never as a broken fixture-backed test. Concurrency now
keys on the pull request, since queueing every PR behind one run only made
sense while the group modelled a single shared machine.

The workflow file loses its `_nightly` name, and the docs that promised a
nightly schedule now say what actually happens.
2026-09-06 15:33:27 +10:00
Graeme Arthur 81bde36a2a Show what a flaky live canary looked like
Two gaps in a suite that retries. A failure's message says an element was
missing; it cannot say whether a dialog was covering the app, which is how
the last one actually failed. And a retry that turns red into green leaves
a run that reads as clean.

BrewUITestCase now attaches a screenshot of the whole screen to every
issue it records, so the picture lands in the result bundle CI uploads.
It goes in as PNG data rather than as the XCUIScreenshot, which cannot
cross out of the main actor into this nonisolated override. Both the
attachment and the plan keep screenshots always: the interesting one
belongs to a failed attempt of a test that ultimately passed, and
deleteOnSuccess prunes exactly that.

The plan now retries a failing test twice rather than once, and
annotate-flaky-tests reads the result bundle afterwards and names any test
that needed more than one run to pass — a ::warning:: annotation on GitHub,
plain text locally, never a failure by itself. It also tells the workflow
to keep the bundle for a green-but-retried run, so the evidence the
annotation points at still exists.
2026-09-06 15:33:27 +10:00
Graeme Arthur b74b540176 Trim comments to why-notes
The live suite's comments restated what the code says and argued its own
design at length. What survives is the part a reader cannot recover: that
a login shell keeps exported variables, that a real inventory virtualizes
so an installed row may never render, that cleanup runs after the app is
terminated to stay clear of Homebrew's lock, and why the runner must be
signed. The reasoning behind the rest is in the commits and in
E2E/README.md, which is where it belongs.
2026-09-06 15:33:27 +10:00
Graeme Arthur bf72375fa9 Run the live canaries nightly
A canary nobody runs is a canary that reports nothing, so the suite gets a
schedule rather than only a plan: nightly on an ephemeral GitHub runner,
which ships Homebrew and has egress to formulae.brew.sh and ghcr.io, and
by hand before cutting a release — the moment you most want to know brew
has not shifted under the app. The release workflow is deliberately not
wired to it; that stays a decision someone makes.

Concurrency is keyed on the workflow rather than the ref, because two runs
would fight over one machine's brew state.

scripts/test-e2e mirrors scripts/test-ui, including its refusal to pass
-derivedDataPath, and leads with what it does to the machine it runs on:
this one installs and uninstalls a formula, and the script is the last
place that fact can be read before it happens.
2026-09-06 15:31:51 +10:00
dependabot[bot] 4f4550919c Bump the github-actions group across 1 directory with 5 updates
Bumps the github-actions group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [Homebrew/actions/setup-homebrew](https://github.com/homebrew/actions) | `2026.08.24.1` | `2026.08.31.1` |
| [github/codeql-action/upload-sarif](https://github.com/github/codeql-action) | `4.37.8` | `4.37.9` |
| [Homebrew/actions/setup-ruby](https://github.com/homebrew/actions) | `2026.08.24.1` | `2026.08.31.1` |
| [Homebrew/actions/create-or-update-issue](https://github.com/homebrew/actions) | `2026.08.24.1` | `2026.08.31.1` |
| [Homebrew/actions/cache-homebrew-prefix](https://github.com/homebrew/actions) | `2026.08.24.1` | `2026.08.31.1` |



Updates `Homebrew/actions/setup-homebrew` from 2026.08.24.1 to 2026.08.31.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/a657b8b0cd35d0f65cce41fce9b24cf054b49869...3cdb78d0f62ad29dd32de765782654f4eedea607)

Updates `github/codeql-action/upload-sarif` from 4.37.8 to 4.37.9
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28...cdf488f595d80d6e07e03d4674febd5ab45fa938)

Updates `Homebrew/actions/setup-ruby` from 2026.08.24.1 to 2026.08.31.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/a657b8b0cd35d0f65cce41fce9b24cf054b49869...3cdb78d0f62ad29dd32de765782654f4eedea607)

Updates `Homebrew/actions/create-or-update-issue` from 2026.08.24.1 to 2026.08.31.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/a657b8b0cd35d0f65cce41fce9b24cf054b49869...3cdb78d0f62ad29dd32de765782654f4eedea607)

Updates `Homebrew/actions/cache-homebrew-prefix` from 2026.08.24.1 to 2026.08.31.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/a657b8b0cd35d0f65cce41fce9b24cf054b49869...3cdb78d0f62ad29dd32de765782654f4eedea607)

---
updated-dependencies:
- dependency-name: Homebrew/actions/setup-homebrew
  dependency-version: 2026.08.31.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.37.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: Homebrew/actions/setup-ruby
  dependency-version: 2026.08.31.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: Homebrew/actions/create-or-update-issue
  dependency-version: 2026.08.31.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: Homebrew/actions/cache-homebrew-prefix
  dependency-version: 2026.08.31.1
  dependency-type: direct:production
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-04 08:08:38 +00:00
BrewTestBot d6442a6a17 actionlint.yml: update to match main configuration 2026-09-02 17:34:46 +00:00
dependabot[bot] 88cc075d1c Bump the github-actions group across 1 directory with 5 updates
Bumps the github-actions group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [Homebrew/actions/setup-homebrew](https://github.com/homebrew/actions) | `2026.08.14.1` | `2026.08.24.1` |
| [Homebrew/actions/cache-homebrew-prefix](https://github.com/homebrew/actions) | `2026.08.14.1` | `2026.08.24.1` |
| [github/codeql-action/upload-sarif](https://github.com/github/codeql-action) | `4.37.7` | `4.37.8` |
| [Homebrew/actions/setup-ruby](https://github.com/homebrew/actions) | `2026.08.14.1` | `2026.08.24.1` |
| [Homebrew/actions/create-or-update-issue](https://github.com/homebrew/actions) | `2026.08.14.1` | `2026.08.24.1` |



Updates `Homebrew/actions/setup-homebrew` from 2026.08.14.1 to 2026.08.24.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/8f3d1ec8a696b3b9d9a6c3696b6c73033cab69e4...a657b8b0cd35d0f65cce41fce9b24cf054b49869)

Updates `Homebrew/actions/cache-homebrew-prefix` from 2026.08.14.1 to 2026.08.24.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/8f3d1ec8a696b3b9d9a6c3696b6c73033cab69e4...a657b8b0cd35d0f65cce41fce9b24cf054b49869)

Updates `github/codeql-action/upload-sarif` from 4.37.7 to 4.37.8
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd...db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28)

Updates `Homebrew/actions/setup-ruby` from 2026.08.14.1 to 2026.08.24.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/8f3d1ec8a696b3b9d9a6c3696b6c73033cab69e4...a657b8b0cd35d0f65cce41fce9b24cf054b49869)

Updates `Homebrew/actions/create-or-update-issue` from 2026.08.14.1 to 2026.08.24.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/8f3d1ec8a696b3b9d9a6c3696b6c73033cab69e4...a657b8b0cd35d0f65cce41fce9b24cf054b49869)

---
updated-dependencies:
- dependency-name: Homebrew/actions/setup-homebrew
  dependency-version: 2026.08.24.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: Homebrew/actions/cache-homebrew-prefix
  dependency-version: 2026.08.24.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.37.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: Homebrew/actions/setup-ruby
  dependency-version: 2026.08.24.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: Homebrew/actions/create-or-update-issue
  dependency-version: 2026.08.24.1
  dependency-type: direct:production
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-28 08:09:11 +00:00
dependabot[bot] 43a0c97f3d Bump the github-actions group across 1 directory with 5 updates
Bumps the github-actions group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [Homebrew/actions/setup-homebrew](https://github.com/homebrew/actions) | `2026.08.10.2` | `2026.08.14.1` |
| [Homebrew/actions/cache-homebrew-prefix](https://github.com/homebrew/actions) | `2026.08.10.2` | `2026.08.14.1` |
| [github/codeql-action/upload-sarif](https://github.com/github/codeql-action) | `4.37.6` | `4.37.7` |
| [Homebrew/actions/setup-ruby](https://github.com/homebrew/actions) | `2026.08.10.2` | `2026.08.14.1` |
| [Homebrew/actions/create-or-update-issue](https://github.com/homebrew/actions) | `2026.08.10.2` | `2026.08.14.1` |



Updates `Homebrew/actions/setup-homebrew` from 2026.08.10.2 to 2026.08.14.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/b35a29a0f83ee8b8ca07b219fc8db3d7bb88ab49...8f3d1ec8a696b3b9d9a6c3696b6c73033cab69e4)

Updates `Homebrew/actions/cache-homebrew-prefix` from 2026.08.10.2 to 2026.08.14.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/b35a29a0f83ee8b8ca07b219fc8db3d7bb88ab49...8f3d1ec8a696b3b9d9a6c3696b6c73033cab69e4)

Updates `github/codeql-action/upload-sarif` from 4.37.6 to 4.37.7
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/5595ccaf912efad79be6eef63a5619ff05969be3...ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd)

Updates `Homebrew/actions/setup-ruby` from 2026.08.10.2 to 2026.08.14.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/b35a29a0f83ee8b8ca07b219fc8db3d7bb88ab49...8f3d1ec8a696b3b9d9a6c3696b6c73033cab69e4)

Updates `Homebrew/actions/create-or-update-issue` from 2026.08.10.2 to 2026.08.14.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/b35a29a0f83ee8b8ca07b219fc8db3d7bb88ab49...8f3d1ec8a696b3b9d9a6c3696b6c73033cab69e4)

---
updated-dependencies:
- dependency-name: Homebrew/actions/setup-homebrew
  dependency-version: 2026.08.14.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: Homebrew/actions/cache-homebrew-prefix
  dependency-version: 2026.08.14.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.37.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: Homebrew/actions/setup-ruby
  dependency-version: 2026.08.14.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: Homebrew/actions/create-or-update-issue
  dependency-version: 2026.08.14.1
  dependency-type: direct:production
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-21 08:08:19 +00:00
dependabot[bot] becf0c6ee9 Bump the github-actions group across 1 directory with 6 updates
Bumps the github-actions group with 6 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [Homebrew/actions/setup-homebrew](https://github.com/homebrew/actions) | `2026.08.03.2` | `2026.08.10.2` |
| [Homebrew/actions/cache-homebrew-prefix](https://github.com/homebrew/actions) | `2026.08.03.2` | `2026.08.10.2` |
| [github/codeql-action/upload-sarif](https://github.com/github/codeql-action) | `4.37.4` | `4.37.6` |
| [Homebrew/actions/setup-ruby](https://github.com/homebrew/actions) | `2026.08.03.2` | `2026.08.10.2` |
| [Homebrew/actions/create-or-update-issue](https://github.com/homebrew/actions) | `2026.08.03.2` | `2026.08.10.2` |
| [actions/attest](https://github.com/actions/attest) | `4.2.1` | `4.2.2` |



Updates `Homebrew/actions/setup-homebrew` from 2026.08.03.2 to 2026.08.10.2
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/fd832223f9f99ebf0244dd20658680e5d4aca049...b35a29a0f83ee8b8ca07b219fc8db3d7bb88ab49)

Updates `Homebrew/actions/cache-homebrew-prefix` from 2026.08.03.2 to 2026.08.10.2
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/fd832223f9f99ebf0244dd20658680e5d4aca049...b35a29a0f83ee8b8ca07b219fc8db3d7bb88ab49)

Updates `github/codeql-action/upload-sarif` from 4.37.4 to 4.37.6
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/f205ea1c3313d32999d8d6a48b4f6530d4437b38...5595ccaf912efad79be6eef63a5619ff05969be3)

Updates `Homebrew/actions/setup-ruby` from 2026.08.03.2 to 2026.08.10.2
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/fd832223f9f99ebf0244dd20658680e5d4aca049...b35a29a0f83ee8b8ca07b219fc8db3d7bb88ab49)

Updates `Homebrew/actions/create-or-update-issue` from 2026.08.03.2 to 2026.08.10.2
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/fd832223f9f99ebf0244dd20658680e5d4aca049...b35a29a0f83ee8b8ca07b219fc8db3d7bb88ab49)

Updates `actions/attest` from 4.2.1 to 4.2.2
- [Release notes](https://github.com/actions/attest/releases)
- [Changelog](https://github.com/actions/attest/blob/main/RELEASE.md)
- [Commits](https://github.com/actions/attest/compare/508db95dd578ae2727ebd6217d5ba78e4fbda05d...1e69f48acb82d1966a394da916b4c1698aa569d6)

---
updated-dependencies:
- dependency-name: Homebrew/actions/setup-homebrew
  dependency-version: 2026.08.10.2
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: Homebrew/actions/cache-homebrew-prefix
  dependency-version: 2026.08.10.2
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.37.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: Homebrew/actions/setup-ruby
  dependency-version: 2026.08.10.2
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: Homebrew/actions/create-or-update-issue
  dependency-version: 2026.08.10.2
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: actions/attest
  dependency-version: 4.2.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-14 08:10:46 +00:00
Graeme Arthur 136624ce7c Merge pull request #122 from Homebrew/ui-tests-phase-2
UI testing - accessibility IDs, seams and suite
2026-08-09 23:14:47 +10:00
Graeme ArthurandClaude Opus 5 592ff07f83 Allow Build and Test to be dispatched manually
Lets the workflow be run against any branch from the Actions tab, and takes
an optional -only-testing filter so a single UI test can be re-run without
pushing a commit. The filter reaches the script through the environment
rather than being interpolated into the run block, so the input cannot
inject shell.

The concurrency group gains a ref fallback: a dispatched run has no pull
request number, so without it every manual run would share one group and
cancel whichever was already going.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-09 22:10:52 +10:00
Graeme ArthurandClaude Opus 5 d951d65227 Stop persisting checkout credentials in the build job
actions/checkout leaves a token in .git/config by default, and this job
uploads artifacts on failure, so the credential can ride along. Nothing
here pushes, so dropping it costs nothing. Flagged by zizmor; the rest of
the repository's workflows already set this.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-09 22:10:33 +10:00
Graeme ArthurandClaude Opus 5 7a42a5a529 Run the UI suite locally and in CI
scripts/test-ui mirrors what CI runs, so green locally means green on CI.
It deliberately does not override -derivedDataPath: a project-relative
DerivedData location reproducibly makes the test runner hang for around
five minutes before failing to establish a connection, where the identical
run against the default location passes in seconds.

The ui-test CI job runs alongside the unit job with no needs: dependency,
so UI coverage costs wall-clock time on a separate runner rather than
sitting on the critical path.

It replaces ui_smoke.yml, which triggered on the same pull_request event
and ran the same Brew-UI scheme, so keeping both would run every test
twice. Its inline signing block is gone with it: the default path was the
ad-hoc signing scripts/test-ui already does, and keeping the logic in the
script is what keeps a local run honest about CI.

TROUBLESHOOTING.md covers the things that make a local run fail for
reasons unrelated to the code, since the suite drives real windows and
real input.

Also ignores the artefacts a UI run leaves behind: coverage drops .profraw
wherever an instrumented binary runs, and the script writes a result bundle
at the repository root.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-09 22:10:22 +10:00
dependabot[bot] 2f2a8df7ae Bump github/codeql-action/upload-sarif
Bumps the github-actions group with 1 update in the / directory: [github/codeql-action/upload-sarif](https://github.com/github/codeql-action).


Updates `github/codeql-action/upload-sarif` from 4.37.3 to 4.37.4
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81...f205ea1c3313d32999d8d6a48b4f6530d4437b38)

---
updated-dependencies:
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.37.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-07 08:08:59 +00:00
dependabot[bot] 1f6ed2a635 Bump the github-actions group across 1 directory with 4 updates
Bumps the github-actions group with 4 updates in the / directory: [Homebrew/actions/setup-homebrew](https://github.com/homebrew/actions), [Homebrew/actions/cache-homebrew-prefix](https://github.com/homebrew/actions), [Homebrew/actions/setup-ruby](https://github.com/homebrew/actions) and [Homebrew/actions/create-or-update-issue](https://github.com/homebrew/actions).


Updates `Homebrew/actions/setup-homebrew` from 2026.07.20.1 to 2026.08.03.2
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/2026.07.20.1...fd832223f9f99ebf0244dd20658680e5d4aca049)

Updates `Homebrew/actions/cache-homebrew-prefix` from 2026.07.29.1 to 2026.08.03.2
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/2026.07.29.1...fd832223f9f99ebf0244dd20658680e5d4aca049)

Updates `Homebrew/actions/setup-ruby` from 2026.07.20.1 to 2026.08.03.2
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/df4b09108a1de9d6f995fe68f302b3f68bd6d2ef...fd832223f9f99ebf0244dd20658680e5d4aca049)

Updates `Homebrew/actions/create-or-update-issue` from 2026.07.20.1 to 2026.08.03.2
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/df4b09108a1de9d6f995fe68f302b3f68bd6d2ef...fd832223f9f99ebf0244dd20658680e5d4aca049)

---
updated-dependencies:
- dependency-name: Homebrew/actions/setup-homebrew
  dependency-version: 2026.08.03.2
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: Homebrew/actions/cache-homebrew-prefix
  dependency-version: 2026.08.03.2
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: Homebrew/actions/setup-ruby
  dependency-version: 2026.08.03.2
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: Homebrew/actions/create-or-update-issue
  dependency-version: 2026.08.03.2
  dependency-type: direct:production
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-05 02:47:44 +00:00
BrewTestBot 8357118493 licenses.yml: update to match main configuration 2026-08-05 02:09:37 +00:00
BrewTestBot 1f0965b477 docs.yml: update to match main configuration 2026-08-05 02:09:37 +00:00
BrewTestBot 5e24da895d actionlint.yml: update to match main configuration 2026-08-05 02:09:37 +00:00
BrewTestBot e8d8e53748 dependabot.yml: update to match main configuration 2026-08-05 02:09:37 +00:00
dependabot[bot] c62f60b639 Bump the github-actions group across 1 directory with 6 updates
Bumps the github-actions group with 6 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [Homebrew/actions/setup-homebrew](https://github.com/homebrew/actions) | `2026.07.20.1` | `2026.07.29.1` |
| [Homebrew/actions/cache-homebrew-prefix](https://github.com/homebrew/actions) | `2026.07.20.1` | `2026.07.29.1` |
| [Homebrew/actions/setup-ruby](https://github.com/homebrew/actions) | `2026.07.20.1` | `2026.07.29.1` |
| [Homebrew/actions/create-or-update-issue](https://github.com/homebrew/actions) | `2026.07.20.1` | `2026.07.29.1` |
| [actions/attest](https://github.com/actions/attest) | `4.2.0` | `4.2.1` |
| [actions/stale](https://github.com/actions/stale) | `10.4.0` | `11.0.0` |



Updates `Homebrew/actions/setup-homebrew` from 2026.07.20.1 to 2026.07.29.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/df4b09108a1de9d6f995fe68f302b3f68bd6d2ef...9af03b7ae3f9e2ae5c174f659d5c3909f7e7dbac)

Updates `Homebrew/actions/cache-homebrew-prefix` from 2026.07.20.1 to 2026.07.29.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/df4b09108a1de9d6f995fe68f302b3f68bd6d2ef...9af03b7ae3f9e2ae5c174f659d5c3909f7e7dbac)

Updates `Homebrew/actions/setup-ruby` from 2026.07.20.1 to 2026.07.29.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/df4b09108a1de9d6f995fe68f302b3f68bd6d2ef...9af03b7ae3f9e2ae5c174f659d5c3909f7e7dbac)

Updates `Homebrew/actions/create-or-update-issue` from 2026.07.20.1 to 2026.07.29.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/df4b09108a1de9d6f995fe68f302b3f68bd6d2ef...9af03b7ae3f9e2ae5c174f659d5c3909f7e7dbac)

Updates `actions/attest` from 4.2.0 to 4.2.1
- [Release notes](https://github.com/actions/attest/releases)
- [Changelog](https://github.com/actions/attest/blob/main/RELEASE.md)
- [Commits](https://github.com/actions/attest/compare/f7c74d28b9d84cb8768d0b8ca14a4bac6ef463e6...508db95dd578ae2727ebd6217d5ba78e4fbda05d)

Updates `actions/stale` from 10.4.0 to 11.0.0
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/1e223db275d687790206a7acac4d1a11bd6fe629...4391f3da665fdf50b6810c1a66712fb9ba21aa93)

---
updated-dependencies:
- dependency-name: Homebrew/actions/setup-homebrew
  dependency-version: 2026.07.29.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: Homebrew/actions/cache-homebrew-prefix
  dependency-version: 2026.07.29.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: Homebrew/actions/setup-ruby
  dependency-version: 2026.07.29.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: Homebrew/actions/create-or-update-issue
  dependency-version: 2026.07.29.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: actions/attest
  dependency-version: 4.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: actions/stale
  dependency-version: 11.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-05 01:45:05 +00:00
BrewTestBot f944ffc527 dependabot.yml: update to match main configuration 2026-08-05 01:33:51 +00:00
dependabot[bot] 1fa1510ca2 Bump the github-actions group across 1 directory with 2 updates
Bumps the github-actions group with 2 updates in the / directory: [Homebrew/actions/cache-homebrew-prefix](https://github.com/homebrew/actions) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action).


Updates `Homebrew/actions/cache-homebrew-prefix` from 2026.07.13.1 to 2026.07.20.1
- [Release notes](https://github.com/homebrew/actions/releases)
- [Changelog](https://github.com/Homebrew/actions/blob/main/release.test.mts)
- [Commits](https://github.com/homebrew/actions/compare/2026.07.13.1...df4b09108a1de9d6f995fe68f302b3f68bd6d2ef)

Updates `github/codeql-action/upload-sarif` from 4.37.1 to 4.37.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/7188fc363630916deb702c7fdcf4e481b751f97a...e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81)

---
updated-dependencies:
- dependency-name: Homebrew/actions/cache-homebrew-prefix
  dependency-version: 2026.07.20.1
  dependency-type: direct:production
  dependency-group: github-actions
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.37.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-31 08:08:41 +00:00
BrewTestBot 0d3ba6ae5f licenses.yml: update to match main configuration 2026-07-29 17:35:58 +00:00
BrewTestBot 601aa90242 licenses.yml: update to match main configuration 2026-07-29 13:44:10 +00:00
BrewTestBot 3307aaea28 denied-licenses.txt: update to match main configuration 2026-07-29 13:44:10 +00:00
Graeme Arthur 4e5095cc70 Merge pull request #97 from Homebrew/dependabot/github_actions/github-actions-990bca9593
Bump the github-actions group across 1 directory with 7 updates
2026-07-28 22:49:25 +10:00
Graeme Arthur f0a1d0b810 Don't run the signed build for Dependabot 2026-07-28 22:36:11 +10:00
Graeme ArthurandCopilot Autofix powered by AI 2a8867c954 Add Brewfile to paths
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-28 21:44:18 +10:00