Port responsive mobile/tablet layout to design/App#771
Merged
dangershony merged 5 commits intomainfrom Apr 20, 2026
Merged
Conversation
…mobile branch Adds responsive breakpoint system (mobile <768px, tablet <1024px, desktop >=1024px) with bottom tab bar navigation, floating sub-tabs, back bars, and layout mode switching. Preserves main's SDK integration (ICurrencyService, IWalletContext, PrototypeSettings, Serilog logging, etc.) while porting only the mobile UI changes. New files: LayoutMode.cs, ShellService.cs, TabBar.axaml, RangeObservableCollection.cs, SendFundsModalViewModel.cs, PrivateKeysPasswordModalViewModel.cs Based on work from Zazawowow/angor:responsive-mobile (Avalonia2 namespace -> App) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Restore AXAML files that referenced properties/types from Zaza's ViewModels (WalletItem, WalletSwitcherItem, SubmitOpacity, IsEmpty, etc.) that don't exist in main's ViewModels. Remove InvestorCtaEnabled binding. All 19 integration tests now pass (0 failures). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
dangershony
reviewed
Apr 20, 2026
| /// Request testnet coins for a single wallet via its WalletCard. | ||
| /// Awaits the result and shows a toast notification on success or failure. | ||
| /// </summary> | ||
| private async Task RequestTestCoinsAsync(Button btn) |
Member
There was a problem hiding this comment.
looks like this got deleted?
dangershony
reviewed
Apr 20, 2026
| /// Refresh balance for a single wallet via its WalletCard. | ||
| /// Sets IsRefreshing on the card to show a spinning icon during the operation. | ||
| /// </summary> | ||
| private async void RefreshWalletBalance(Button btn) |
Member
There was a problem hiding this comment.
also this or maybe it was moved
dangershony
reviewed
Apr 20, 2026
| } | ||
| } | ||
|
|
||
| private async void OnRefreshClick(object? sender, RoutedEventArgs e) |
Member
|
there might be some missing methods but otherwise looks good, I will test this locally |
…e test coverage The responsive layout commit accidentally stripped event handlers, AutomationIds, DataContext bindings, toast forwarding, and data-loading calls from many code-behind files. This restores all dropped functional code while keeping the layout changes, and updates InvestAndRecoverTest to use UI-level button clicks instead of direct VM method calls for better integration coverage.
…e mismatch
Debug prefill used DateTime.Now.Day for payout day while StartDate used
DateTime.UtcNow, causing a one-day offset in BST/UTC+N timezones that
made stages appear locked ('spend in 1 days'). Standardize all date
logic in the App project to DateTime.UtcNow for consistency.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
src/design/AppstructureLayoutModeServiceWhat changed
New files (6):
LayoutMode.cs— responsive breakpoint enum + reactive singleton serviceTabBar.axaml— MD3 bottom tab bar + sub-tab stylesShellService.cs— static singleton for decoupled shell access (toast, modal)RangeObservableCollection.cs— batch-update observable collection helperSendFundsModalViewModel.cs— extracted VM with reactive validationPrivateKeysPasswordModalViewModel.cs— extracted VM with reactive validationModified files (40):
LayoutModeService.IsCompactsubscriptions for responsive paddingApproach
Zaza's branch worked in
src/Angor/Avalonia/Avalonia2(namespaceAvalonia2). Main usessrc/design/App(namespaceApp). This PR:Avalonia2→App)Desktop build: 0 errors, 0 warnings ✓
(Android build requires Android SDK not available on build machine)
Test plan
🤖 Generated with Claude Code