- 1The phone account menu is still a full-height panelFix before merge
- 2A failed request shows two error messagesFix before merge
- 3An error from one transfer stays on the nextFix before merge
- 4The same-currency transfer page can still spin foreverWorth fixing
- 5Changing the chart range covers the whole pageSmall
- 6The Unallocated funds box jumps when payments loadSmall
- 7The recipient edit error can just say "OK"Not new
The phone account menu is still a full-height panel
Tapping your name on a phone opens a white panel the full height of the screen: your account and Settings at the top, Logout at the very bottom, and about 485px of empty space in between. The update moved the panel to the right edge but kept it full height.
Why
On phones, .ct-account-list gets height: calc(100dvh - 60px) and Logout gets margin-top: auto, which pushes it to the bottom (account-switcher.component.scss).
Fix
// phone block, account-switcher.component.scss
.ct-account-list { height: auto; }
.ct-account-option.logout-option { margin-top: 0; }
height: auto replaces the two full-height lines. The existing max-height still caps a long account list at the screen. Tried in the browser: the menu becomes 155px tall, as in the picture.
A failed request shows two error messages
When a page's data fails to load with a server error, the app shows its usual "Sorry, something went wrong" message, and the PR adds its own "Unable to load ..." message underneath. That's two red boxes for one problem, on every page where the PR added its own error message.
Why
The app-wide message comes from the HTTP interceptor, for any 5xx response (http-request.interceptor.ts). The PR's pages then show their own message as well.
Fix
Show one. The interceptor already skips its message for requests sent with the X-Hide-Generic-Error header (recipient.service.ts:106 does this). Send it on the requests whose page now shows its own message.
An error from one transfer stays on the next
If a transfer fails to load and the user then opens another one, from a notification for example, the second transfer loads fine but keeps "Unable to load this content" above it.
Why
The page reuses its component when only the transfer id changes. loadTrade() sets loadingFailed = true on a failure (trade-confirmation.component.ts:73) and nothing clears it for the next load. Recipient overview, rate alert overview, market order allocate and recipient approval follow the same pattern.
Fix
loadTrade(id) {
this.loadingFailed = false;
this.trade = undefined;
...
The same reset at the start of each load on the other four pages.
The same-currency transfer page can still spin forever
For an account without a balance that supports same-currency transfers, the page never finishes loading. The update fixed the case where delivery dates fail to load, but not this one.
Why
The update leaves selectedBalance undefined when there's no balance. isSelectedBalancePositive() then reads selectedBalance.balance (new-transfer.component.ts:192) and throws while the page renders.
Fix
Guard it (this.selectedBalance?.balance), and show a short message when there's no balance to transfer from, instead of the empty form.
Changing the chart range covers the whole page
On a currency's page, picking a range such as 1Y draws the loader over the whole page while the chart reloads. The range buttons, Create a Rate Alert and Make a Transfer can't be clicked until it clears.
The Unallocated funds box jumps when payments load
On a transfer's confirmation page, the payments loader sits above the Unallocated funds box. The box starts lower, then jumps up when the payments arrive.
The recipient edit error can just say "OK"
When the recipient edit page fails to load, the error shows the HTTP status text. Production runs over HTTP/2, which has no status text, and Angular then reports it as "OK", so the error reads "OK". This happens today too; the PR's fallback text never shows.
Why
error.statusText || 'Unable to load recipient...' (recipient-form-page.component.ts:174 and delete-recipient-invite-page.component.ts:57). Angular fills an empty status text with "OK", so the fallback is never used.
Fix
Use the fixed message on its own, without statusText.



