Skip to content

fix: Sign in with Apple shows the real name instead of "there"#9919

Merged
Git-on-my-level merged 7 commits into
mainfrom
fix/apple-signin-name-capture
Jul 17, 2026
Merged

fix: Sign in with Apple shows the real name instead of "there"#9919
Git-on-my-level merged 7 commits into
mainfrom
fix/apple-signin-name-capture

Conversation

@skanderkaroui

@skanderkaroui skanderkaroui commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

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's user form 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 native ASAuthorization) had nothing to show.

Backend (routers/auth.py): parse Apple's first-auth user field (_parse_apple_user_name), inject it into the credential, and persist it as the Firebase display_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 an authNameDidUpdate signal (posted on Apple first-auth capture and on backend-profile name load); OnboardingPagedIntroCoordinator adopts 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

  • INV-AUTH-1 (touches AuthService session surfaces; no change to session-death ownership — only name signaling)

Verification

  • backend: test_apple_signin_name.py — 10 passed.
  • desktop: xcrun swift build -c debug green with -warnings-as-errors; full build + tests verified on a macOS runner.
  • End-to-end Apple name capture requires this backend deployed and a first-auth (revoke Omi in Apple ID settings to force Apple to resend the name).

Failure-Class: none


Also includes two main-inherited CI repairs surfaced by this branch:

  • test(backend): parakeet select_stt mock kwarg (main is red on this test).
  • ci: give the PR-metadata-preflight job uv (it runs uv-backed checks on backend-route PRs).

…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.
…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
Git-on-my-level merged commit 17d9b65 into main Jul 17, 2026
34 of 35 checks passed
@Git-on-my-level
Git-on-my-level deleted the fix/apple-signin-name-capture branch July 17, 2026 15:43
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. -->
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.

2 participants