You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat(onboarding): first-launch profile setup sheet
Replace the in-conversation "Add your name and pic" prompt with a
"Hello / My name is" sheet (Figma 5694-27769) shown once on first
launch. The sheet only presents when the pairable-device check finds no
other identity in the iCloud-synced keychain backup and no pairing UI
is on screen, so it can never race the found-device pairing sheet. The
in-conversation flow stays as a fallback for users who dismiss the
sheet without saving.
The same sheet (no terms row, "Save" CTA — Figma 5694-28789) replaces
the MyInfoView form in Settings > My info and the my-profile sheet
shown when tapping your own avatar/member row in a conversation;
MyInfoView is removed. The sheet keeps a local draft of the edit and
writes to ProfileSettingsViewModel only on save — binding the fields
directly loses in-flight edits when the global-profile observation
re-emits during first-launch inbox churn.
QA: rewrote tests 01 (first-launch sheet + no in-conversation
re-prompt) and 14 part 5 (own-profile edit from a conversation is now
global), updated 40 to name devices via the sheet, and noted the
fallback status of the quick-edit path in 07/19.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(onboarding): profile sheet design pass + empty state
Spacing/type corrections against the Figma dev measurements: 36pt gap
between the lava band and the name row (not 64 - the band overhangs its
text by 28), 132pt band (40 above / 28 below the text), 56pt CTA with a
16pt horizontal inset inside the card padding, and medium-weight
photo/camera glyphs. Dropped an experimental presentationCornerRadius
override that made the system inset the sheet content, leaving a white
cap above the lava band.
Empty state per design: placeholder is "Name" (not "Somebody"), the
avatar shows person.crop.circle.fill on an inverted circle until a name
is typed (monogram) or a photo is chosen, the terms toggle starts OFF,
and the CTA renders gray while disabled.
QA: test 01 and 40 now enable the terms toggle before saving; empty
state assertions added to 01.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(onboarding): paint profile sheet presentation background to match card
The self-sizing detent can settle taller than the measured content, and
rubber-banding exposes the area beyond it - both showed the ultra-thin
material as a white cap above the lava band. Paint the presentation
background lava on top / card gray below so any exposed region reads as
the card continuing.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(onboarding): profile sheet owns its presentation; empty-state polish
The selfSizingSheet approach presents at .medium and swaps to a
.height() detent after measuring, but iOS never re-snaps a presented
sheet down from medium - content shorter than medium (this sheet, 398pt
vs medium's ~425pt) floats centered with dead space, which showed as a
white cap above the lava band. ProfileSetupSheet now presents via plain
.sheet and supplies its own detent, seeded per mode and corrected by
measurement, so the detent only receives same-kind .height updates.
Also: camera.fill glyph per design.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(onboarding): terms toggle defaults on
Come in is gated only on entering a name; turning the toggle off still
disables it. QA tests 01/40 updated (no toggle tap needed before save).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(onboarding): address PR review findings on ProfileSetupSheet
- Drop the ConversationView onDismiss handler (and the now-unused
onProfileSettingsDismissed): it re-saved from the stale
myProfileViewModel, clobbering the just-saved profile photo. Also
fixes the SwiftLint multiple_closures_with_trailing_closure failure.
- Roll the shared view model back to its pre-save values when
saveAndAwait throws, so a failed save doesn't present never-persisted
edits as stored.
- Reseed a pristine draft when the global profile load resolves, so a
sheet opened during cold launch can't save a stale empty draft over
the stored avatar.
- Allow photo-only saves in edit mode (empty name falls back to the
stored one in saveAndAwait).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* feat(settings): My info row shows avatar, name, and pencil affordance
Mirrors the profile sheet's name row (Figma 5694-28455): 36pt avatar
(person.crop.circle.fill placeholder until a name or photo exists),
display name ("Name" placeholder in tertiary when unset), and a
trailing pencil glyph instead of the old lanyard icon + trailing
name/avatar. A "Your name and pic" footer sits under the row. Tapping
still opens the profile sheet. Accessibility: label stays "My info"
(id my-info-row) with the name exposed as the value; QA test 14
annotated accordingly.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
0 commit comments