Skip to content

fix: usdt amount keypad sits above continue - #1636

Merged
ovitrif merged 3 commits into
masterfrom
fix/amount-keypad-layout
Oct 21, 2026
Merged

ovitrif merged 3 commits into
masterfrom
fix/amount-keypad-layout

Conversation

@ovitrif

@ovitrif ovitrif commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator

Closes #1627
Twin: synonymdev/bitkit-ios#1061

This PR moves the USDT Amount step's keypad down so it sits right above Continue, as on the Bitcoin amount screen. The amount stays at the top, the free space sits between the amount and the controls bar, and the keypad keeps the Bitcoin screen's sizing and 16 dp side insets.

Description

  • Replaces the weighted box that centred the keypad in the free space with the Bitcoin screen's layout: the amount at the top, a flexible gap of at least 12 dp, the controls bar, the keypad and Continue directly below it.
  • Sizes the keypad keys from the step's height, as the Bitcoin screen does, and drops the 16 dp gap above Continue.
  • Keeps a scroll fallback for the USDT steps, so Continue stays reachable when the controls and keypad do not fit (a short screen with large text).
  • Applies this to both USDT amount screens: the USDT wallet's Send flow and the Paykit request Amount step when it pays in USDT.
  • Updates usdt-send-review-and-details.xml, which asserted the old 32-point gap.

Out of Scope

Design

Bitkit - Refactor v63 › Send (USDT) › Amount USDT. This PR follows the Bitcoin amount screen's layout rather than the frame's centred amount and edge-to-edge keypad, so the three amount screens stay consistent.

Preview

Before, 3.0.1, Paykit request Amount (balance, avatar and names masked) After, regtest, the USDT wallet's Amount

QA Notes

Journeys

  • updated usdt-send-review-and-details.xml — the amount sits at the top, the controls sit right above the keypad and Continue sits right below it, as on the Bitcoin Amount screen

Manual Tests

  • Open a Paykit request that pays in USDT and reach Amount → same layout as the USDT wallet's Amount — the fixture issuer in journeys/payment-requests/README.md publishes Bitcoin endpoints only; a request paid in USDT on Arbitrum needs an issuer that publishes a USDT endpoint
  • On a short screen with 1.3× font size, open USDT Send → Amount → the step scrolls so Continue stays reachable

Automated Checks

N/A

@ovitrif ovitrif changed the title fix: place the usdt amount keypad right above continue fix: usdt amount keypad sits above continue Oct 20, 2026
@ovitrif
ovitrif marked this pull request as ready for review October 20, 2026 23:52
@ovitrif
ovitrif requested review from a team, coreyphillips and pwltr and removed request for a team October 20, 2026 23:52
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-20T23:55:17.822926Z 33a0509 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@ovitrif

ovitrif commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator Author

Superseded: af98a0d changed the layout to match the Bitcoin amount screen (see the description's Preview); the checks below covered the earlier layout.

QA on an Android 16 emulator (1080×2400, 420 dpi), regtest debug build of this branch:

  • USDT wallet → Send → Amount: the ₿ line and the dollar amount sit centred in the free space above Available; the controls bar is right above the divider and keypad; the keypad spans x 0–1080 (key 1 at [0,1318][360,1515], key 3 at [720,1318][1080,1515]); Continue sits 42 px under the keypad.
  • 1080×1920 at 480 dpi (640 dp tall) with 1.3× font size: keys shrink, the amount stays visible, and the step scrolls to reach Continue. At default size the step fits and does not scroll.
  • testDevDebugUnitTest, lintDevDebug and detekt pass.

Not driven: the Paykit request Amount step paid in USDT (see Manual Tests); it uses the same layout code.

@greptile-apps

greptile-apps Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; no actionable defects were found.

Summary

Updates both USDT amount screens to place the controls above the keypad and Continue directly below it.

  • Both USDT amount screens center the amount above a full-width keypad.

No actionable issues were found. Android rendering and device tests were not run.

Reviews (1) · Last reviewed commit: "fix: keep continue reachable on compact ..." · Reviewed by Greptile

@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Regtest APK

Built from af98a0d (run).

Download bitkit-dev-debug universal APK (expires in 30 days).

@talosmachina talosmachina left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No findings. Puts the USDT amount keypad edge to edge directly above Continue, centres the amount in the free space above it, and lets the step scroll on short screens; moves bleedHorizontal to a shared modifier. Reviewed 33a0509, full tier.

What I checked, and 4 candidates I ruled out

Read in full: UsdtSendContent.kt (UsdtAmountContent, UsdtPaymentContent padding), SendAmountScreen.kt (SendAmountNodeRunning), NumberPad.kt (key height from availableHeight), BleedHorizontal.kt, WidgetSizeCarousel.kt
CI: lint, detekt, build, build-local green; e2e running
Build: Bitkit track: the branch was not built here (Android branches are not built on this box, iOS does not build on Linux), so this review is reasoned from the code and from CI.

Ruled out

  • Bitcoin amount step changed: the scroll and the two fills apply only when paykitUsesUsdt; the Bitcoin path keeps FillHeight(min = 12.dp) and the old keypad call.
  • Keypad loses its height source: NumberPad gets no fixed height inside the scroll, so it takes (maxHeight * 0.4 / 4) clamped to its min and ideal key heights, and the whole step scrolls when that still does not fit.
  • Bleed overshoots the sheet: both callers sit in a column with 16 dp horizontal padding, and the modifier reports the parent width while placing the wider content at -16 dp.
  • Widget carousel regression: the moved modifier body is byte-for-byte the old private one.

Merge confidence: 4/5, e2e had not finished; the change is layout covered by the updated journey, not a unit test.

@jvsena42 jvsena42 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code scan at 33a0509: no issues found.

  • Layout: the amount is centred between flexible spacers. The keypad's key height comes from the available height, clamped to 50–75, and Continue stays below it.
  • Bitcoin path unchanged: on Android the scroll fallback applies only when the Paykit amount step is paid in USDT.
  • Edge-to-edge keypad: the 16 dp bleed is not clipped, and the moved modifier body is unchanged.
  • Untouched: Back, insets and nav-bar padding.
  • Parity: Android adds a scroll fallback for short screens with large text. iOS keeps its fixed layout, which is 32 pt shorter than before, so the SE plus largest Dynamic Type case is no worse than master. I'll raise it only if the device run shows Continue clipped. See synonymdev/bitkit-ios#1061.
  • Journeys: usdt-send-review-and-details.xml updated, identical across both repos.

Device gate (partial): 33a0509 — not run yet. Pending:

  • keys 1 and 3 reach the screen edges, and the outer 16 dp of key 1 takes taps;
  • the gap from the keypad to Continue;
  • a short screen with large text, scrolled to Continue;
  • the same on the Paykit Amount step paid in USDT.

Device results will follow in a separate review.

@jvsena42 jvsena42 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Device gate (partial): 33a0509 — not run. The USDT fixture went down (Docker stopped on a full disk) before this PR's turn on the Android lane, and the pass is paused. Pending:

  • keypad edge to edge, edge taps and the gap to Continue;
  • font scale 1.3 on a short display;
  • the Paykit Amount step paid in USDT.

The iOS twin's layout checks passed on synonymdev/bitkit-ios#1061.

@pwltr

pwltr commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

I recommend matching the existing on-chain and Lightning send amount layout rather than introducing a separate layout for USDT.

Fixing the floating keypad makes sense, but this PR also changes the amount positioning, keypad width and key sizing, and adds a 16 dp gap above Continue. Those differences are not necessary to fix the original issue.

Please keep the same amount placement, keypad sizing, horizontal insets and spacing above Continue as the Bitcoin screens. USDT’s extra controls can wrap where needed, and the small-screen scrolling fallback can stay. If we want to redesign the amount layout, that should be a consistent change across all three flows rather than USDT alone.

@ovitrif

ovitrif commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator Author

Please keep the same amount placement, keypad sizing, horizontal insets and spacing above Continue as the Bitcoin screens. USDT's extra controls can wrap where needed, and the small-screen scrolling fallback can stay.

@pwltr done in af98a0d. Both USDT amount screens (the USDT wallet's Send and the Paykit request Amount paid in USDT) now use the Bitcoin screen's layout: the amount at the top, a flexible gap of at least 12 dp, the controls bar, the keypad sized from the step's height with the 16 dp insets, and Continue directly below the keypad. The centred amount, the edge-to-edge keypad, the 40% key sizing and the 16 dp gap above Continue are gone, and bleedHorizontal is back in the widget carousel. The scroll fallback stays. The description, journey line and changelog now describe this layout, with a fresh screenshot.

A redesign toward the Figma frame (the amount centred, an edge-to-edge keypad) is listed under Out of Scope as a change for all three amount flows. @jvsena42 your device results here covered the earlier layout.

@ovitrif
ovitrif merged commit fa294db into master Oct 21, 2026
21 checks passed
@ovitrif
ovitrif deleted the fix/amount-keypad-layout branch October 21, 2026 13:34
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.

bug: amount keypad is centred instead of sitting above continue

4 participants