Fix passkey cancellation, concurrent challenges and native app association - #641
Conversation
鈴笍 Develop S3 preview skippedThis PR or triggering actor is not currently eligible for the credentialed develop preview. The ordinary generated Vercel Preview remains available on the shared development runtime. |
|
馃 Promotion conflict resolution was queued automatically for Conflicted source paths: The trusted worker will reconstruct, verify, publish, and attest the review branch; no manual branch update is needed. |
|
Branch: No newer branch work was overwritten or deleted. The same immutable snapshot will not spend AI again; a changed source/base snapshot retries automatically. Review the run. |
|
馃 Promotion conflict resolution was queued automatically for Conflicted source paths: The trusted worker will reconstruct, verify, publish, and attest the review branch; no manual branch update is needed. |
|
馃 Promotion conflict resolution was queued automatically for Conflicted source paths: The trusted worker will reconstruct, verify, publish, and attest the review branch; no manual branch update is needed. |
|
馃 Promotion conflict resolution was queued automatically for Conflicted source paths: The trusted worker will reconstruct, verify, publish, and attest the review branch; no manual branch update is needed.
|
Passkey prompts could compete with autofill, overwrite another tab鈥檚 challenge, or leave the UI waiting indefinitely when 1Password ignored cancellation. This gives each ceremony ownership and cancellation across options/browser/verification, restores cancelled or timed-out UI, isolates signed origin-bound challenges, and atomically rejects saved-cookie replay.
It also isolates settings caches by account, improves errors and mobile layout, and adds the missing iOS webcredentials entitlement plus Apple association routing. Passkey contracts are versioned in both manifests and checked by the client.
Validation: 54 live API checks with a software P-256 authenticator, 13 focused unit tests, 10 manifest tests, all 445 documentation endpoint checks, production Vite/Nitro build and built-handler smoke, Chrome/1Password cancellation and desktop/mobile settings checks, and an iOS Simulator build. Full TypeScript still reports 109 repository errors; none name changed passkey code.
Rollout: the public Apple application identifier is configured in Vercel for production/preview/custom develop, and a signed iOS Release IPA passes signature and entitlement checks. Production code deployment, native distribution, and physical-device biometric/provider acceptance remain required. Apple Developer permissions were not changed. Graphify outputs are refreshed; two semantic chunks exceeded the proxy request-size limit, so semantic coverage is partial.
The first CI API run exposed missing routing for Apple association documentation; GET/POST now pass locally and in the built server. Chrome also verified Cancel on the deployed HTTPS preview. Final Web CI (build, typecheck ratchet, unit tests and API suite) passed for 39fbbe8. The preview at 39fbbe8 was verified. A fresh preview is rebuilding to include the Apple association environment setting.
Preview: https://pr-641.previews.dev.thingtime.com
Detailed validation and deployment steps:
PRs/641-passkey-reliability-fix-passkey-cancellation-concurrent-challenges-and-native-app-association.md.