Skip to content

fix(chat): match the composer's Send Cash morph to iOS - #1704

Merged
bmc08gt merged 1 commit into
code/cashfrom
fix/composer-send-cash-morph
Oct 7, 2026
Merged

bmc08gt merged 1 commit into
code/cashfrom
fix/composer-send-cash-morph

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Oct 7, 2026

Copy link
Copy Markdown
Collaborator

Follow-up to #1702, whose $ button animation still differed from iOS.

Typing. #1702 laid the send button out inside the field's clip at the field's current edge, so it appeared to the left of the $ and then slid right as the field widened. It now appears at the $'s centre and overhangs the field's edge until the field catches up. The field's clip is the field's shape joined with the send button's, so the overhang isn't cut off. Clearing is unchanged: the send button rides the field's edge in, as on iOS.

Timing follows code-payments/code-ios-app#1008 (still open):

  • The $ moves toward the field's trailing edge and scales to 0.4, from iOS cashGlyphTravel.
  • On clearing, the $ waits 0.1s (cashBudDelay) before the field gives it room, and its glyph fades in over 0.12s ease-in. It fades out over 0.1s ease-out with no delay.
  • The send button waits 0.16s for the $ to merge (cashJoinDelay), except while editing. Android hides the $ while editing, so the condition is the $ being present.

Field spring. iOS uses spring(duration: 0.42, bounce: 0.12), which is damping ratio 0.88, stiffness 224. Android keeps the damping ratio but uses stiffness 520. On iOS the field's glass flows into the $'s within about 70ms, so the edge reads as settled by about 200ms. Android has no glass merge, so the edge is the only motion and took the full ~300ms at 224. Measured from screen recordings, iOS #1008 runs 268ms typing and 387ms clearing on the simulator; this branch runs 249ms and 353ms on a Seeker.

Not ported from #1008: dropping the composer rim on iOS 26 (Android draws its own rim, and iOS drops it because its glass draws an edge) and the glass join distance (Android doesn't merge shapes).

#1702 put the send button inside the field's clip at the field's
current edge, so typing showed it left of the $ and then slid it right
as the field widened. It now appears at the $'s centre and overhangs
the field's edge until the field catches up; the clip takes the
overhang into account. Clearing still lets it ride the field's edge in.

Timing follows code-payments/code-ios-app#1008: the $ shrinks to 0.4
toward the field's trailing edge, waits 0.1s before coming back, and
fades on its own 0.12s ease-in and 0.1s ease-out. The send button
waits 0.16s for the $ to merge, except while editing.

The field spring keeps iOS's damping ratio (0.88) but uses stiffness
520 instead of 224. On iOS the glass merge makes the edge read as
settled by about 200ms; Android has no glass merge, so at 224 the
field visibly took the full ~300ms.
@bmc08gt bmc08gt self-assigned this Oct 7, 2026
@github-actions github-actions Bot added type: fix Bug fix area: ui Compose UI, theme, components, resources and removed type: fix Bug fix labels Oct 7, 2026
@bmc08gt
bmc08gt merged commit 84319a8 into code/cash Oct 7, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ui Compose UI, theme, components, resources

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant