Skip to content

feat(you): add Change Display Name to My Account - #621

Merged
bmc08gt merged 1 commit into
feat/tip-card-exportfrom
feat/change-display-name
Aug 21, 2026
Merged

feat(you): add Change Display Name to My Account#621
bmc08gt merged 1 commit into
feat/tip-card-exportfrom
feat/change-display-name

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Node 9277:121893 opens My Account with a Change Display Name row; this adds it, above Blocked.

The row pushes a new .changeDisplayName destination that lands straight on the profile-setup name step — the same screen the tip-card flow uses, matching the Android row, which reuses the UpdateProfile flow's name step alone.

  • ProfileNameScreen now takes what a saved name leads to: .tipcard (setup carries on to the card, unchanged) or .back (a lone edit returns to the settings list).
  • The step reads its text from an environment-held ProfileCreationState, which setup owns at its sheet root so the photo step can read the name back. A lone edit has no following step, so ChangeDisplayNameScreen owns that state itself, seeded with the name already on the profile — the same prefill Android's name step does.

Based on #618; mirrors code-payments/code-android-app#1299.

Node 9277:121893 opens My Account with a Change Display Name row. It lands
straight on the profile-setup name step, which now takes what a saved name
leads to: setup carries on to the tip card, a lone edit returns to the
settings list. The step reads its text from an environment-held state that
setup owns at its sheet root so the photo step can read the name back; a lone
edit has no following step, so it owns that state itself, seeded with the name
already on the profile.

Mirrors the Android row (code-android-app#1299).
@bmc08gt
bmc08gt force-pushed the feat/change-display-name branch from 45c84fd to 3003813 Compare August 21, 2026 20:07
@bmc08gt
bmc08gt merged commit 62202da into feat/tip-card-export Aug 21, 2026
bmc08gt added a commit that referenced this pull request Aug 21, 2026
* feat(you): build out the You tab's tip card

The tab shipped as a card and two settings rows. This fills in the rest of the
page (node 9276:4634): the copyable public link, Share and Download, and a card
that expands in place — everything below it slides out, the tab bar goes with it,
and the card grows about its own centre into the middle of the screen. Expansion
lives on the page rather than the app-root bill overlay, so the card never leaves
the tab; `Session.presentOwnTipcard` and its test go with the overlay route.

Download exports the code as a real file. Both formats draw the same figure at
1024pt on the app's background: the SVG comes from the shared Kotlin renderer in
`SharedCoreKit` (`KikCode.svg`), the PNG from the `CodeView` the app already
draws, so exporting one and then the other gives you the same code twice. The
file goes to the share sheet, which is where iOS keeps "Save to Files".

Settings picked up the loose ends: Beta Features absorbed the developer-only
Beta Flags screen (one screen, two sections, gated on the version easter egg)
rather than keeping a second entry point that opened an empty list.

* fix(you): present the export share sheet after the picker closes

The download sheet handed the file to `ShareSheet` from its own tap
handler, while the picker was still on screen. `ShareSheet` presents on
the top-most view controller, which at that moment is the picker being
dismissed — so the share sheet had a fair chance of never appearing.

Holds the tapped format and exports on the sheet's `onDismiss` instead,
when there is a settled controller to present on.

* fix(settings): always offer the Beta Features row

The row was hidden when no flag was visible, on the reasoning that it
would open an empty screen. The screen has an empty state for exactly
that case, so the row stays put and `hasVisibleOptions` now only decides
which of the two the screen draws.

* test(you): add Maestro flows for the tip card export and Beta Features

Drives what the unit tests can't reach: the download picker's hand-off to
the system share sheet, which is a UIKit presentation the export path
gets wrong easily, and the Beta Features row's presence in Advanced.

Run one with:
  maestro --device <udid> test .maestro/you-tab-download.yaml

* test(settings): add a Maestro flow for the Beta Features empty state

* feat(you): add Change Display Name to My Account (#621)

Node 9277:121893 opens My Account with a Change Display Name row. It lands
straight on the profile-setup name step, which now takes what a saved name
leads to: setup carries on to the tip card, a lone edit returns to the
settings list. The step reads its text from an environment-held state that
setup owns at its sheet root so the photo step can read the name back; a lone
edit has no following step, so it owns that state itself, seeded with the name
already on the profile.

Mirrors the Android row (code-android-app#1299).

* refactor(bill): draw codes from the shared geometry

CodeView carried its own copy of the ring layout, the bit packing, and the
badge, all of which already exist in shared-core and now come back as
CGPaths through SharedCoreKit. Deleting the copy is what keeps a code on
screen, an exported PNG, an exported SVG, and Android drawing one figure
rather than four that happen to agree today.
@bmc08gt
bmc08gt deleted the feat/change-display-name branch August 27, 2026 15:43
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