fix: Sign in with Apple shows the real name instead of "there"#9919
Merged
Conversation
…field and persist it as Firebase display_name
…g 'there' Desktop uses backend OAuth (not native ASAuthorization), so the name arrives asynchronously from the backend profile after sign-in. Onboarding rendered 'there' from a frozen snapshot before it landed. Add an authNameDidUpdate signal (posted on Apple first-auth capture and on backend-profile name load) and have OnboardingPagedIntroCoordinator adopt the name when it arrives (only replacing the 'there' placeholder, never a user edit). Also persist a captured Apple first-auth name to Firebase/backend so it survives reinstalls.
…he Apple name fix
…stt mock Inherited from main (red at HEAD): runtime.py calls get_stt_service_for_language(prefer_parakeet=...) but this test's local mock had the old signature. Same fix as #9847. Repairs main.
The metadata-preflight job runs the full scripts/pr-preflight, which selects uv-backed manifest checks (backend-route-policy-baseline runs the OpenAPI runner) whenever a PR touches backend routes. The job only set up Python, so those PRs failed with 'uv is required for the OpenAPI runner'. Add setup-uv to match the Hygiene job. Surfaced by this PR's auth.py change.
…-capture # Conflicts: # .github/scripts/product_file_line_count_ratchet_baseline.json
Git-on-my-level
added a commit
that referenced
this pull request
Jul 22, 2026
…n redesign (#10340) ## Summary Restores onboarding functionality that the Second Brain redesign (#10218) dropped, re-implemented on top of the new conversational design (no old UI brought back). Each fix is its own commit: - **Auto-detect user name** (#9919) — seed the name field from the known `givenName`, kick a backend name fetch, and adopt an async name arrival (Apple sends the name only on first auth), so onboarding greets by name instead of a generic placeholder. Also re-hydrates name/language/role drafts on resume. - **Clear onboarding state on sign-out** (#10108) — `sbOnboardingResumeStep` + `onboardingRole` were added by the redesign but left out of the shared clearing list, leaking the prior user's resume step + role to the next account on the same Mac. Added both, plus a regression test. - **Drag-to-grant Full Disk Access** (#9742) — the drag-to-grant helper was wired for Screen Recording but not FDA; now both use it. - **Connector brand marks + Claude Code restart** (#10210 / #10205) — connect rows show each connector's brand icon, and Claude Code shows a restart prompt once connected so running sessions reload the new MCP config. - **Remove post-onboarding walkthrough** — the coach-mark tour that ran after onboarding (spotlighting each nav pill) is deleted; a just-onboarded user lands straight on Home. - **Pin the drag-to-grant card under System Settings** — the permission drag card was pinned to the screen's bottom quarter; it now anchors directly beneath the live Settings window (flipping above it when there's no room below) so it follows the window and never covers the drop target. ## Verification Build/manual verification pending — depends on #10334 (restores the `Package.swift`/`Package.resolved` that a stray "fixture" commit gutted on `main`, which currently breaks the desktop Swift build). This PR carries no Package changes; once #10334 lands and this rebases, it builds on the repaired manifest. ## Product invariants affected - INV-INT-1 ## Failure class (fixes) Failure-Class: none <!-- This is an auto-generated description by cubic. --> <a href="https://cubic.dev/pr/BasedHardware/omi/pull/10340?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="Review in cubic" src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a> <!-- End of auto-generated description by cubic. -->
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes the onboarding name showing "there" for Sign in with Apple. Split out of #9847 so it can land directly.
Root cause: the backend's Apple OAuth callback (
POST /v1/auth/callback/apple) silently dropped Apple'suserform field, which is the only place Apple sends the name — and only on the first authorization. So the name was never captured server-side, and the desktop (which uses backend OAuth, not nativeASAuthorization) had nothing to show.Backend (
routers/auth.py): parse Apple's first-authuserfield (_parse_apple_user_name), inject it into the credential, and persist it as the Firebasedisplay_name. Regression test:tests/unit/test_apple_signin_name.py.Desktop: the name arrives asynchronously from the backend profile after sign-in, so onboarding rendered
"there"from a frozen snapshot. Add anauthNameDidUpdatesignal (posted on Apple first-auth capture and on backend-profile name load);OnboardingPagedIntroCoordinatoradopts the name when it lands — only replacing the"there"placeholder, never a user edit. A captured Apple first-auth name is also persisted to Firebase/backend so it survives reinstalls (Apple won't resend it).Product invariants affected
AuthServicesession surfaces; no change to session-death ownership — only name signaling)Verification
backend:test_apple_signin_name.py— 10 passed.desktop:xcrun swift build -c debuggreen with-warnings-as-errors; full build + tests verified on a macOS runner.Failure-Class: none
Also includes two main-inherited CI repairs surfaced by this branch:
test(backend): parakeetselect_sttmock kwarg (main is red on this test).ci: give the PR-metadata-preflight jobuv(it runs uv-backed checks on backend-route PRs).