Skip to content

fix(otter): read Developer ID profiles that grant Associated Domains as a string - #41

Merged
Laurin-Notemann merged 1 commit into
mainfrom
fix/macos-profile-string-domains
Oct 12, 2026
Merged

Laurin-Notemann merged 1 commit into
mainfrom
fix/macos-profile-string-domains

Conversation

@Laurin-Notemann

Copy link
Copy Markdown

Nightly 0.0.46-nightly.20261012.383 embedded the provisioning profile but claimed no passkey entitlement. Checking the signed app on a Mac showed no keychain-access-groups, and the build log listed only the hardened-runtime entitlements.

Cause: Apple's Developer ID (Mac) profile grants com.apple.developer.associated-domains as the bare string "*". The profile schema only accepted a list, so the profile was rejected as a whole and granted nothing.

Fix: accept a string or a list. The test fixture now matches the profile Apple issued (string wildcard, push, app groups). Checked against the real profile: it yields YNJ5WLH965.dev.otterware.code.webauthn. 81 tests and the scripts typecheck pass.

🤖 Generated with Claude Code

…as a string

Apple's Developer ID (Mac) profile grants com.apple.developer.associated-domains
as the bare string "*". The profile schema only accepted a list, so the whole
profile was rejected and no passkey entitlement was claimed: nightly .383 shipped
without the WebAuthn keychain group. Accept both forms, and make the fixture
match the profile Apple issued.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Laurin-Notemann
Laurin-Notemann force-pushed the fix/macos-profile-string-domains branch from bba611c to a87c94c Compare October 12, 2026 13:44
@Laurin-Notemann
Laurin-Notemann merged commit 253ccda into main Oct 12, 2026
18 checks passed
@Laurin-Notemann
Laurin-Notemann deleted the fix/macos-profile-string-domains branch October 12, 2026 13:51
Laurin-Notemann added a commit that referenced this pull request Oct 13, 2026
* fix(otter): mobile app no longer crashes on launch on iOS 27 betas (#37)

react-native-screens sets UINavigationItem.navigationBarMinimization
behind @available(iOS 27.0), but early iOS 27 betas lack the setter.
Builds made with the iOS 27.1 SDK compile the call in, so the app aborts
with an unrecognized selector when the first header attaches. Check
respondsToSelector: before using it.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* docs(otter): stop keeping backup branches on sync (#36)

Syncs pushed backup/otter-before-<date> on every run. The squash commits
already record the fork's changes, so the backups are dropped.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): defer SSH launches to the background service (#38)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): iPhone app no longer stays blank on iOS 27.1+ (#39)

T3LayoutMetricsView withheld layout metrics on iOS 27.1+ until
UIHingeInteraction reported, but phones without a hinge never get an
update. The workspace navigator waits for those metrics before attaching
any screen, so the app stayed black or white. Publish as hinge-less right
away and switch when a hinge reports.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): provision macOS browser passkey releases (#40)

Restore the signing hunks from upstream 3e01c4b, 2f7616e, and 454b94a, which are already in the branch ancestry. Keep Otter account policy in scripts/otter and regenerate workflow adaptations through the fork adapter.

Make the profile optional, select only used profile grants, preserve hardened-runtime entitlements, and publish matching WebAuthn runtime metadata. Add profile fixtures and document the separate Otterware secret and pending Apple capability.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): read Developer ID profiles that grant Associated Domains as a string (#41)

Apple's Developer ID (Mac) profile grants com.apple.developer.associated-domains
as the bare string "*". The profile schema only accepted a list, so the whole
profile was rejected and no passkey entitlement was claimed: nightly .383 shipped
without the WebAuthn keychain group. Accept both forms, and make the fixture
match the profile Apple issued.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(ci): fingerprint base after filtered install rewrites

* fix(deps): keep micromark parser extension types aligned

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Laurin-Notemann added a commit that referenced this pull request Oct 14, 2026
* fix(otter): mobile app no longer crashes on launch on iOS 27 betas (#37)

react-native-screens sets UINavigationItem.navigationBarMinimization
behind @available(iOS 27.0), but early iOS 27 betas lack the setter.
Builds made with the iOS 27.1 SDK compile the call in, so the app aborts
with an unrecognized selector when the first header attaches. Check
respondsToSelector: before using it.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* docs(otter): stop keeping backup branches on sync (#36)

Syncs pushed backup/otter-before-<date> on every run. The squash commits
already record the fork's changes, so the backups are dropped.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): defer SSH launches to the background service (#38)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): iPhone app no longer stays blank on iOS 27.1+ (#39)

T3LayoutMetricsView withheld layout metrics on iOS 27.1+ until
UIHingeInteraction reported, but phones without a hinge never get an
update. The workspace navigator waits for those metrics before attaching
any screen, so the app stayed black or white. Publish as hinge-less right
away and switch when a hinge reports.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): provision macOS browser passkey releases (#40)

Restore the signing hunks from upstream 3e01c4b, 2f7616e, and 454b94a, which are already in the branch ancestry. Keep Otter account policy in scripts/otter and regenerate workflow adaptations through the fork adapter.

Make the profile optional, select only used profile grants, preserve hardened-runtime entitlements, and publish matching WebAuthn runtime metadata. Add profile fixtures and document the separate Otterware secret and pending Apple capability.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): read Developer ID profiles that grant Associated Domains as a string (#41)

Apple's Developer ID (Mac) profile grants com.apple.developer.associated-domains
as the bare string "*". The profile schema only accepted a list, so the whole
profile was rejected and no passkey entitlement was claimed: nightly .383 shipped
without the WebAuthn keychain group. Accept both forms, and make the fixture
match the profile Apple issued.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(ci): fingerprint base after filtered install rewrites

* fix(deps): keep micromark parser extension types aligned

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
ckafrouni pushed a commit that referenced this pull request Oct 16, 2026
* fix(otter): mobile app no longer crashes on launch on iOS 27 betas (#37)

react-native-screens sets UINavigationItem.navigationBarMinimization
behind @available(iOS 27.0), but early iOS 27 betas lack the setter.
Builds made with the iOS 27.1 SDK compile the call in, so the app aborts
with an unrecognized selector when the first header attaches. Check
respondsToSelector: before using it.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* docs(otter): stop keeping backup branches on sync (#36)

Syncs pushed backup/otter-before-<date> on every run. The squash commits
already record the fork's changes, so the backups are dropped.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): defer SSH launches to the background service (#38)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): iPhone app no longer stays blank on iOS 27.1+ (#39)

T3LayoutMetricsView withheld layout metrics on iOS 27.1+ until
UIHingeInteraction reported, but phones without a hinge never get an
update. The workspace navigator waits for those metrics before attaching
any screen, so the app stayed black or white. Publish as hinge-less right
away and switch when a hinge reports.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): provision macOS browser passkey releases (#40)

Restore the signing hunks from upstream 3e01c4b, 2f7616e, and 454b94a, which are already in the branch ancestry. Keep Otter account policy in scripts/otter and regenerate workflow adaptations through the fork adapter.

Make the profile optional, select only used profile grants, preserve hardened-runtime entitlements, and publish matching WebAuthn runtime metadata. Add profile fixtures and document the separate Otterware secret and pending Apple capability.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): read Developer ID profiles that grant Associated Domains as a string (#41)

Apple's Developer ID (Mac) profile grants com.apple.developer.associated-domains
as the bare string "*". The profile schema only accepted a list, so the whole
profile was rejected and no passkey entitlement was claimed: nightly .383 shipped
without the WebAuthn keychain group. Accept both forms, and make the fixture
match the profile Apple issued.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(ci): fingerprint base after filtered install rewrites

* fix(deps): keep micromark parser extension types aligned

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
ckafrouni pushed a commit that referenced this pull request Oct 16, 2026
* fix(otter): mobile app no longer crashes on launch on iOS 27 betas (#37)

react-native-screens sets UINavigationItem.navigationBarMinimization
behind @available(iOS 27.0), but early iOS 27 betas lack the setter.
Builds made with the iOS 27.1 SDK compile the call in, so the app aborts
with an unrecognized selector when the first header attaches. Check
respondsToSelector: before using it.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* docs(otter): stop keeping backup branches on sync (#36)

Syncs pushed backup/otter-before-<date> on every run. The squash commits
already record the fork's changes, so the backups are dropped.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): defer SSH launches to the background service (#38)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): iPhone app no longer stays blank on iOS 27.1+ (#39)

T3LayoutMetricsView withheld layout metrics on iOS 27.1+ until
UIHingeInteraction reported, but phones without a hinge never get an
update. The workspace navigator waits for those metrics before attaching
any screen, so the app stayed black or white. Publish as hinge-less right
away and switch when a hinge reports.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): provision macOS browser passkey releases (#40)

Restore the signing hunks from upstream 3e01c4b, 2f7616e, and 454b94a, which are already in the branch ancestry. Keep Otter account policy in scripts/otter and regenerate workflow adaptations through the fork adapter.

Make the profile optional, select only used profile grants, preserve hardened-runtime entitlements, and publish matching WebAuthn runtime metadata. Add profile fixtures and document the separate Otterware secret and pending Apple capability.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): read Developer ID profiles that grant Associated Domains as a string (#41)

Apple's Developer ID (Mac) profile grants com.apple.developer.associated-domains
as the bare string "*". The profile schema only accepted a list, so the whole
profile was rejected and no passkey entitlement was claimed: nightly .383 shipped
without the WebAuthn keychain group. Accept both forms, and make the fixture
match the profile Apple issued.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(ci): fingerprint base after filtered install rewrites

* fix(deps): keep micromark parser extension types aligned

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
ckafrouni pushed a commit that referenced this pull request Oct 16, 2026
* fix(otter): mobile app no longer crashes on launch on iOS 27 betas (#37)

react-native-screens sets UINavigationItem.navigationBarMinimization
behind @available(iOS 27.0), but early iOS 27 betas lack the setter.
Builds made with the iOS 27.1 SDK compile the call in, so the app aborts
with an unrecognized selector when the first header attaches. Check
respondsToSelector: before using it.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* docs(otter): stop keeping backup branches on sync (#36)

Syncs pushed backup/otter-before-<date> on every run. The squash commits
already record the fork's changes, so the backups are dropped.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): defer SSH launches to the background service (#38)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): iPhone app no longer stays blank on iOS 27.1+ (#39)

T3LayoutMetricsView withheld layout metrics on iOS 27.1+ until
UIHingeInteraction reported, but phones without a hinge never get an
update. The workspace navigator waits for those metrics before attaching
any screen, so the app stayed black or white. Publish as hinge-less right
away and switch when a hinge reports.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): provision macOS browser passkey releases (#40)

Restore the signing hunks from upstream 3e01c4b, 2f7616e, and 454b94a, which are already in the branch ancestry. Keep Otter account policy in scripts/otter and regenerate workflow adaptations through the fork adapter.

Make the profile optional, select only used profile grants, preserve hardened-runtime entitlements, and publish matching WebAuthn runtime metadata. Add profile fixtures and document the separate Otterware secret and pending Apple capability.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(otter): read Developer ID profiles that grant Associated Domains as a string (#41)

Apple's Developer ID (Mac) profile grants com.apple.developer.associated-domains
as the bare string "*". The profile schema only accepted a list, so the whole
profile was rejected and no passkey entitlement was claimed: nightly .383 shipped
without the WebAuthn keychain group. Accept both forms, and make the fixture
match the profile Apple issued.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(ci): fingerprint base after filtered install rewrites

* fix(deps): keep micromark parser extension types aligned

---------

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant