Overview
Address five Medium UI bugs across Home, Hub, Login, Borrow, and Transfer to card. Four behavior fixes are verified. The misleading Transfer-to-card picker has been withdrawn until a per-card backend routing contract exists.
1. Home — Balance visibility eye affects the entire screen
- Lark: https://hola-tech.sg.larksuite.com/record/MmmjrLFHPehH7Ocnb8MlZHSbgng
- Module / Screen: Home
- Priority: Medium
- Actual: Tapping the eye toggles both the upper balance and the amounts below; hiding the upper balance also hides every amount on the screen. https://screenrec.com/share/FecyO1m6lM
- Expected: The eye only toggles the upper balance and does not affect the amounts below. https://prnt.sc/A3OuzBaArRkh
-
Fix: Stop passing
isBalanceHiddentoAssets; the eye now controls only the upper balance inHomeHeader. -
Commit:
bbfd60b9
2. Hub — Software keyboard covers the calendar
- Lark: https://hola-tech.sg.larksuite.com/record/UQXJrHCz5eRlVDcAfkHlNndPgZ0
- Module / Screen: Hub
- Priority: Medium
- Actual: With the software keyboard open, tapping a date field opens the calendar underneath the keyboard. https://screenrec.com/share/6d7N8Vri0s
- Expected: Tapping a date field dismisses the software keyboard and displays only the calendar.
-
Fix:
DatePickerModal.present()dismisses the software keyboard centrally before presenting the calendar; redundant caller-side dismissals were removed. -
Commit:
6544a138
3. Login — Black and empty screens flash during initial loading
- Lark: https://hola-tech.sg.larksuite.com/record/Josfr8JjMejIgEctZM4lXFJtgLc
- Module / Screen: Login
- Priority: Medium
- Actual: After login, the app shows a black screen, then an empty screen, before flashing and rendering the correct data. https://screenrec.com/share/wDP0NkuUGO
- Expected: Render the correct loading and data states from the start.
-
Fix: Render a themed loading indicator instead of
nullduring auth/profile bootstrap, userouter.replace('/')after login, and add an explicit loading state toAssetsto prevent an empty-state flash. -
Commit:
e86ad948
4. Borrow — Duplicate debt values
- Lark: https://hola-tech.sg.larksuite.com/record/XQEnroZRaeZOdlcc2KBlUI4tg3b
- Module / Screen: Borrow
- Priority: Medium
- Actual: The same debt value is displayed more than once. https://prnt.sc/a4LdlE2lXGRI
- Expected: Display the value only once to avoid ambiguity.
-
Fix: Keep one exact debt value in the hero using
formatAmount; remove the duplicateBorrowedrow and do not replace it with a rounded-only display. -
Commit:
663385fd
5. Transfer to card — Destination card cannot be selected
- Lark: https://hola-tech.sg.larksuite.com/record/AzSyrhDaSebEFbc0JMjlBMu9gzb
- Module / Screen: Transfer to card
- Priority: Medium
- Actual: With two cards available, the transfer automatically selects one card without letting the user choose. https://prnt.sc/TfkjAuSNbedf
- Expected: Display the available cards and let the user choose the destination card.
-
Review remediation: Removed
CardSelectSheet,cardIdrouting props, and all picker-only tests. The form retains the generic card-account destination and no longer claims that a selected card receives the funds. -
Open dependency: A complete Bug 5 fix requires a backend/provider contract that routes deposits by
cardId; the current API routes only bycardAccountId/cardholderNo.
Verification
-
pnpm lint: 0 errors. -
pnpm type-check: pass. - Targeted Jest: 109/109 tests pass across 9 suites.
- Maestro E2E passes the four behavior fixes and a guard proving the misleading picker is absent. Per-card deposit routing remains outside the flow.
- E2E flow and fixture:
fe/.maestro/medium-ui-batch/(2972362f).