Skip to content

Consolidate 12 small GUI tasks (4.51) - #6105

Merged
j0ntz merged 17 commits into
developfrom
jon/consolidate-small-gui-tasks-451
Jul 27, 2026
Merged

Consolidate 12 small GUI tasks (4.51)#6105
j0ntz merged 17 commits into
developfrom
jon/consolidate-small-gui-tasks-451

Conversation

@j0ntz

@j0ntz j0ntz commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

CHANGELOG

Does this branch warrant an entry to the CHANGELOG?

  • Yes
  • No

Dependencies

none

Requirements

If you have made any visual changes to the GUI. Make sure you have:

  • Tested on iOS device
  • Tested on Android device
  • Tested on small-screen device (iPod Touch)
  • Tested on large-screen device (tablet)

Description

Asana (umbrella): https://app.asana.com/1/9976422036640/project/1213880789473005/task/1216833234330851

Consolidates 12 small independent GUI fixes from 12 separate subtask branches/PRs into one branch, per the umbrella task's instructions. Each subtask's commits were cherry-picked in; two subtasks got an additional squashed-in fix for a new operator comment posted after the subtask's own agent run completed. The individual PRs listed below are being closed in favor of this one (see closing note on each).

  1. Add "-m" (Maestro) tag to version number in "Help" scene (was #6084) — tags the version number with -m on Maestro test builds.
  2. XRP - Minimum Balance Copy (was #6086) — clarifies the XRP minimum-balance warning so it reads correctly relative to the reserve.
  3. Limit fiat amounts to 2 decimals in Wallets list (was #6087) — rounds dust fiat balances to cents in the Wallets list, matching the wallet detail scene.
  4. Fix Notification text shrinkage from Side Menu (was #6088) — notification center cards no longer auto-shrink; long text truncates with an ellipsis so every card renders at a uniform size.
  5. USPs - Signin UI clarification (was #6089) — styles the entire "Already have an account? Sign in" line as a tertiary link, not just "Sign in".
  6. Privacy Settings - List Sorting Order (was #6090) — sorts the Privacy Settings Nym Mix Net asset list alphabetically.
  7. Create Wallet - Button Overlap (was #6091) — fixes the Next button overlapping the wallet list on Choose Wallets to Add, and switches it to a solo (non-full-width) layout.
  8. Add new custom icons (was #6092) — refreshes the buy/sell/sort/scan-QR/FIO names icons and the side menu Markets icon.
  9. Put fiat value inside round brackets in Stake scene (was #6093) — wraps the fiat value in parentheses on the Stake/Unstake/Claim amount row. New operator comment addressed in this branch: removed the space between the fiat symbol and the amount so it matches the network fee tile's formatting.
  10. Staked Funds - Text cutoff (was #6094) — the staked "locked" balance no longer gets cut off; the crypto amount truncates to an appropriate decimal count instead of clamping to a fraction of the card width.
  11. UI4 - Warning Cards (was #6095) — migrates the Reveal Raw Keys and Reveal Master Private Key warnings to the UI4 warning card.
  12. Earn (TRX) - Rewards Language and UI (was #6096) — Tron resource staking now describes its claim action as reclaiming your own TRX instead of claiming a reward.
  13. Earn - Improve Unstake Error (was #6098) — replaces the popup alert and generic "unknown error occurred" on unstake with the real error in the scene's error field, including a clear insufficient-funds-for-fee message.

Not included: Change Username - Add warning copy (Asana) lives in edge-login-ui-rn (#296), a different repo with no other subtask PRs to consolidate with, so it stays as its own PR. Its new operator comment ("wrap this warning message in a UI4 warning card") was addressed directly on that PR.

Testing

  • tsc --noEmit, eslint (--quiet on all changed files), and the full jest suite pass on every cherry-picked commit.
  • Screenshots below are reused as-is from each subtask's own PR (not re-driven), except for the two items with new operator comments (Show loading text on incomplete exchange rate #9 and the separate edge-login-ui-rn PR), which were re-verified on the iOS sim after the fix.

Screenshots

Reused from each subtask's own PR (not re-driven), grouped by subtask.

Add "-m" (Maestro) tag to version number in "Help" scene help modal normal build help modal maestro tag
XRP - Minimum Balance Copy xrp minimum balance modal
Limit fiat amounts to 2 decimals in Wallets list wallets list dust fiat
Fix Notification text shrinkage from Side Menu notification center uniform before fix reverted baseline
USPs - Signin UI clarification 🩹

🩹 Some screenshots below are HACK-FORCED. The marked frames show a state forced by a temporary uncommitted local edit (the natural trigger could not be reproduced on the sim). The hack is not in this PR's diff; the pixels prove the rendering, not the trigger.

HACK-FORCED: signin line green HACK-FORCED: tap navigates signin
Privacy Settings - List Sorting Order privacy settings sorted
Create Wallet - Button Overlap list top fixed list bottom fixed button narrow top (width follow-up) button narrow bottom (width follow-up)
Add new custom icons assets tabbar and sort side menu fio names scan qr markets
Put fiat value inside round brackets in Stake scene (re-verified in this branch)

Original:
unstake fiat brackets (original, with space)

After the no-space fix (this branch), verified via a hack-fabricated quote since the staking RPC is unreachable in this environment (also covered by an updated snapshot test — € 0.23(€0.23)):
stake fiat no space (after fix)

Staked Funds - Text cutoff 🩹

🩹 Some screenshots below are HACK-FORCED. The marked frames show a state forced by a temporary uncommitted local edit (the natural trigger could not be reproduced on the sim). The hack is not in this PR's diff; the pixels prove the rendering, not the trigger.

HACK-FORCED: before fix cutoff HACK-FORCED: after fix readable
UI4 - Warning Cards master private key warning raw keys warning
Earn (TRX) - Rewards Language and UI stake overview reclaim button reclaim claim scene quote reclaim success flash post reclaim position cleared
Earn - Improve Unstake Error 🩹

🩹 HACK-FORCED. The marked frame shows a state forced by a temporary uncommitted local edit (the staking-provider RPC is unreachable in this environment, so the organic trigger could not be reproduced). The hack is not in this PR's diff; the pixels prove the rendering, not the trigger. Covered additionally by a unit test.

HACK-FORCED: unstake insufficient funds

Note

Low Risk
Changes are mostly visual, copy, and localized staking UX; staking approve/error paths still use the same core wallet APIs with clearer on-screen messaging.

Overview
Bundles a dozen independent GUI polish items into one release branch.

Help & onboarding: Maestro builds show a -m suffix on the version in Help. The getting-started carousel tints the full “Already have an account? Sign in” line with the tertiary link color.

Lists & layout: Wallet list fiat values round to cents like wallet detail (autoPrecision: false). Notification center cards use fixed text size with ellipsis instead of shrinking. Privacy Settings Nym asset list is sorted by display name. Choose Wallets to Add drops extra list bottom padding and uses a solo Next EdgeButton so it no longer overlaps the list.

Icons: Refreshed buy, sell, sort, scan-QR, and FIO names vector glyphs; side menu Markets uses a new custom chart icon instead of Font Awesome.

Staking / earn: Fiat on stake amount rows is shown as (€0.23) (parentheses, no space after symbol). Locked staked balance on the wallet view truncates crypto decimals sensibly and drops width clamps that cut off text. Tron resource staking adds StakeClaimLanguage so claim UI says reclaim TRX instead of rewards. Unstake/approve errors surface in the scene via getDisplayErrorMessage, with a specific message when native balance cannot cover the unstake network fee (no popup + generic unknown error).

Copy & modals: XRP minimum-balance notification text clarifies the 1 XRP reserve. Password confirmation for Reveal Raw Keys / Master Private Key uses AlertCardUi4 instead of the legacy alert.

Tests / tooling: New unit tests for getDisplayErrorMessage; snapshot updates for modals, create-wallet list padding, and send/stake fiat formatting. ESLint allowlist trims a few files.

Reviewed by Cursor Bugbot for commit 28fb216. Bugbot is set up for automated code reviews on this repo. Configure here.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@j0ntz

j0ntz commented Jul 24, 2026

Copy link
Copy Markdown
Contributor Author

📸 Test evidence (fiat spacing re-verification)

stake fiat no space

stake fiat no space

Captured by the agent's in-app test run (build-and-test).

j0ntz added 15 commits July 27, 2026 11:31
Appends a -m suffix to the version string shown in the Help modal
when the app is a Maestro test build, so QA/devs can tell at a
glance that a Maestro build is installed.
Replace the XRP reserve warning body text so it no longer implies a
user must deposit 1 XRP in addition to their balance. The reserve is
met once the address balance itself reaches 1 XRP.
The Wallets list row balance used the auto-expanding fiat precision
meant for unit prices, showing up to 6 decimals for sub-$1 balances.
Cap it at 2 decimals to match the wallet detail scene's rounding.
Add explicit React.FC return types and use the shared themed CloseIcon
instead of importing react-native-vector-icons directly.
Give the alert drop-down's close button a testID so UI tests can dismiss it
instead of tapping coordinates. Committing the file graduates it off the lint
suppression list, so AlertDropdown also picks up its explicit React.FC type.
Previously only "Sign in" was colored as a tappable link; "Already
have an account?" was dimmed even though the whole line is already
one tap target.
The Nym Mix Net Assets list order followed plugin registration order,
which differs between iOS and Android, producing inconsistent and
non-alphabetical ordering on both platforms.
The Next button on CreateWalletSelectCryptoScene (shared by both the
onboarding and logged-in "+" add-wallet flows) was double-absolutely
positioned: SceneWrapper already renders dockProps.children inside its
own absolutely-positioned, keyboard-aware dock, but the button itself
was also given position:absolute via SceneButtons' absolute prop. That
took the button out of the dock's layout flow, so the dock's measured
height collapsed and the scene under-reserved scroll clearance for it,
letting the button cover the last row(s) when scrolled to the end.

The absolute prop was only forced on outside of Maestro, so automated
UI tests exercised a different, correctly-docked layout and never
caught the regression.

Switch to KavButtons, the same primitive every other scene uses inside
dockProps.children, and drop the now-unneeded manual paddingBottom
compensation since the dock's real height is now measured correctly.
Switches from KavButtons (fullWidth) to EdgeButton with layout="solo",
matching the button's original non-full-width appearance and letting
EdgeButton's built-in usePendingPress hook manage the pending/error
state instead of a hand-rolled scene state.
Regenerated the fontello 'custom' font from the designer SVGs attached to
the task. The buy, sell, sort and control-panel-scan-qr glyphs are replaced
with the updated artwork, and two new glyphs (list, chart) are added.

The font is rebuilt through the fontello session API, which reproduces the
existing custom.ttf byte for byte from the checked-in config, so the only
outline changes are the six intended glyphs.
Also remove the space between the fiat symbol and the amount so it
matches the network fee tile's formatting (useFiatText's default), and
add the explicit React.FC return type.
Truncate the locked crypto amount with the shared getCryptoText helper so it
uses the same exchange-rate-adjusted precision as the rest of the app, and drop
the nested maxWidth clamps that limited the status text to roughly half the
card width.
Replace the ad-hoc warning-color Paragraph on the Reveal Raw Keys and
Reveal Master Private Key password confirmation modals with the
AlertCardUi4 warning card. Also fold in the follow-up lint fixes:
explicit return types, safe catch callback typing, and replacing the
styled() inner view with a plain View + StyleSheet.
j0ntz added 2 commits July 27, 2026 11:31
Freezing TRX buys bandwidth and energy rather than yield, and the claim
action only returns the user's own unfrozen TRX to their spendable
balance. Let a stake policy replace the default reward wording so the
Tron policies read as reclaiming instead of earning.
Replace the popup error alert and generic "unknown error occurred" on the
StakeModify scene with the real error surfaced in the existing on-scene error
field. When the failure is insufficient funds during an unstake, show a clear
message that the wallet needs a native-asset balance to cover the network fee.
@j0ntz
j0ntz force-pushed the jon/consolidate-small-gui-tasks-451 branch from ad61c36 to 28fb216 Compare July 27, 2026 18:37
@j0ntz
j0ntz enabled auto-merge July 27, 2026 18:37

@cursor cursor Bot 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.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want higher recall? High effort reviews run extra passes and find more bugs. A team admin can switch effort levels in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 28fb216. Configure here.

Comment thread src/assets/vector/config.json
@j0ntz
j0ntz merged commit 7d19d49 into develop Jul 27, 2026
7 checks passed
@j0ntz
j0ntz deleted the jon/consolidate-small-gui-tasks-451 branch July 27, 2026 19:15
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