Skip to content

Add Extensions-WatchWidgets App Store provisioning profile#5032

Merged
bgoncal merged 1 commit into
mainfrom
fix/watchwidgets-codesign
Jul 10, 2026
Merged

Add Extensions-WatchWidgets App Store provisioning profile#5032
bgoncal merged 1 commit into
mainfrom
fix/watchwidgets-codesign

Conversation

@bgoncal

@bgoncal bgoncal commented Jul 10, 2026

Copy link
Copy Markdown
Member

No description provided.

Copilot AI review requested due to automatic review settings July 10, 2026 09:01
The WatchWidgets extension added in #5027 has no App Store provisioning
profile for its bundle id io.robbie.HomeAssistant.watchkitapp.WatchWidgets,
so the App-Release archive in the Distribute workflow fails to sign it.

CI imports the profiles committed under Configuration/Provisioning
(setup_ha_ci -> import_provisioning_profiles), so the newly created
"iOS App Store - Extensions-WatchWidgets" profile is added there alongside
the rest.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@bgoncal bgoncal force-pushed the fix/watchwidgets-codesign branch from 7bf27d4 to 9fc18f2 Compare July 10, 2026 09:03
@bgoncal bgoncal changed the title Fix Extensions-WatchWidgets distribution signing Add Extensions-WatchWidgets App Store provisioning profile Jul 10, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review any files in this pull request.

@bgoncal bgoncal enabled auto-merge (squash) July 10, 2026 09:03
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Unused L10n strings detected

Found 3 unused localization strings in the codebase.

Click to see details
Parsing Strings.swift...
Found 1907 L10n strings

Reading all Swift source code...
Read 6428956 characters of Swift code

Checking for unused strings...
Checked 100/1907 strings...
Checked 200/1907 strings...
Checked 300/1907 strings...
Checked 400/1907 strings...
Checked 500/1907 strings...
Checked 600/1907 strings...
Checked 700/1907 strings...
Checked 800/1907 strings...
Checked 900/1907 strings...
Checked 1000/1907 strings...
Checked 1100/1907 strings...
Checked 1200/1907 strings...
Checked 1300/1907 strings...
Checked 1400/1907 strings...
Checked 1500/1907 strings...
Checked 1600/1907 strings...
Checked 1700/1907 strings...
Checked 1800/1907 strings...
Checked 1900/1907 strings...

================================================================================
UNUSED STRINGS REPORT
================================================================================

Found 3 unused strings:


CAMERAPLAYER:
  - L10n.CameraPlayer.Talkback.microphoneDenied
    Key: camera_player.talkback.microphone_denied
    Line: 820

CONNECTION:
  - L10n.Connection.Permission.InternalUrl.body1
    Key: connection.permission.internal_url.body1
    Line: 1370
  - L10n.Connection.Permission.InternalUrl.body2
    Key: connection.permission.internal_url.body2
    Line: 1372

================================================================================
Total unused: 3
================================================================================

================================================================================
Copy-paste these keys into the "Lokalise: Delete Keys" workflow (keys input):
================================================================================
camera_player.talkback.microphone_denied,connection.permission.internal_url.body1,connection.permission.internal_url.body2

To remove them, run the
Lokalise: Delete Keys
workflow — it deletes the keys from Lokalise and opens a PR removing them from
Localizable.strings and regenerating Strings.swift. Copy-paste these keys into the keys input:

camera_player.talkback.microphone_denied,connection.permission.internal_url.body1,connection.permission.internal_url.body2

@bgoncal bgoncal merged commit 61208a5 into main Jul 10, 2026
11 checks passed
@bgoncal bgoncal deleted the fix/watchwidgets-codesign branch July 10, 2026 09:44
bgoncal added a commit that referenced this pull request Jul 10, 2026
…5033)

## Summary

Follow-up to #5032. Committing the provisioning profile was necessary
but not sufficient: the **Distribute** workflow's `App-Release` archive
still fails with the same error ([latest failing
run](https://github.com/home-assistant/iOS/actions/runs/29084034712/job/86333386325)):

> `Extensions-WatchWidgets has conflicting provisioning settings.
Extensions-WatchWidgets is automatically signed, but provisioning
profile iOS App Store - Extensions-WatchWidgets has been manually
specified.`

`Extensions-WatchWidgets` (added in #5027) was created via the Xcode
new-target wizard, which hard-coded `CODE_SIGN_STYLE = Automatic` into
its Debug **and** Release build configs. Every other shipping target
(`App`, `WatchApp`, all `Extensions-*`) leaves `CODE_SIGN_STYLE` unset
at the target level and inherits it from the xcconfigs:

- `Configuration/HomeAssistant.xcconfig` → `Automatic` for Debug
- `Configuration/HomeAssistant.release.xcconfig` → `Manual` for the
archive, plus `PROVISIONING_PROFILE_SPECIFIER[sdk=watchos*] = iOS App
Store - $(TARGET_NAME)`

The target-level `Automatic` overrode the xcconfig's `Manual` while the
manual profile specifier was still inherited. xcodebuild rejects that
combination at signing-settings resolution — **before** the profile is
even used — which is why adding the profile in #5032 didn't clear it.

Removing the two lines lets WatchWidgets resolve signing exactly like
`WatchApp`: `Manual` + the `iOS App Store - Extensions-WatchWidgets`
profile for the release archive, `Automatic` for local Debug builds.

## Changes
- Remove target-level `CODE_SIGN_STYLE = Automatic` from
`Extensions-WatchWidgets` (Debug + Release).

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

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants