Transactions page at phone width - #224
Merged
Merged
Conversation
Quick task. Mobile pass over /transactions, plus the frame values it shares with every other page header. Desktop is unchanged throughout. Everything gates on `!GeniusBreakpoints.useDesktopLayout(context)` -- read from the WINDOW, never the row's own constraints. TransactionRow's existing `wide` bool is the wrong signal: the dashboard's transactions panel is ~376px while sitting on a 2560px desktop, so gating on row width silently restyles desktop. A bool satisfies the freeze rule (37639d5), which bans a dimension derived continuously from constraints, not a breakpoint. Shared frame values, applied to all seven pages that mount a GWPageHeader: navbar->title 64->24 and page gutter 12->6 via GeniusBreakpoints.pageTitleGap /pageGutter, plus card padding 12->6 through DashboardScrollContainer (all 11 call sites). The gutter never reaches 0 -- content on the window bezel is the defect the 06-01 walk found. The page's narrow branch used to `return _panel(...)`, which put TWO "Transactions" on a phone: the route supplies GWPageHeader and _panel carries its own GWSectionTitle. It now has its own presentation -- filter bar, then the list on a card. _panel is untouched; the dashboard still needs its title. Removing that duplicate is what made a real touch target affordable: the filter bar moved onto its own row, so the chips reach 44 (44pt iOS; 48dp Android is still unmet), pinned by a test at 320. The earlier audit had ruled 44 out against ~11px of shared-row headroom. Row density: time column dropped and the icon leads; padding, gaps, icon and type all reduced; the name+tag block takes 2 parts against the amount's 1 where it was 1:1. Background is GWMeshBackground. A terminus closes the list. Phase 15's suspected title-row overflow is confirmed a harness-font artifact: measured on the running build at 320/360/390/414, there is none. Its deferred item 1 closes with no fix, because none was needed. Costs recorded in the task SUMMARY rather than glossed: the mesh never settles (so widget tests below 768 must use pump(), not pumpAndSettle), the minute is gone from the phone row, long amounts truncate sooner, and the desktop dashboard panel still truncates its tags. isMobileApp() is false on Windows, so this is the width branch only -- never a real device. Safe areas and actual touch behaviour are unverified. Also corrects two stale planning claims: the ROADMAP progress table (12, 13 and 15 are passed, not partial) and Phase 18, whose VERIFICATION body still reads gaps_found although cccd20c deleted the orphaned webTabCanClose() on 2026-07-25. Phase 14 is the only genuinely open phase. Suite 1000 -> 1002; analyze clean; brace and raw-colour gates clean.
A commit cannot contain its own hash, so the Quick Tasks Completed row is filled in here.
- W017: pruned the orphan worktree GNUS-compare/GeniusWallet-3514, whose path no longer exists on disk. - W004: model_profile was "adaptive", which is not a valid value (quality, balanced, budget, inherit) -> "balanced". Practical effect is nil either way: dynamic_routing is enabled and overrides model_profile. Also gave four files the date prefix the other eleven HANDOFFs carry, so the directory reads consistently: three HANDOFF-swap-* and .continue-here.md, the last renamed to HANDOFF-260729-jakub-paused-work-since-landed.md. Its work is merged (8ed02e7 is an ancestor of HEAD), so it is a record, not a pointer. This is cosmetic ONLY -- it clears no warning. GSD flags all 15 HANDOFF files as non-canonical regardless of naming, and that cannot be fixed without moving them, which AGENTS.md:106 forbids ("Every session writes its own .planning/HANDOFF-<topic>.md"). Project convention wins; the W019s are permanent and expected. Health: 22 -> 20 warnings, 0 errors. Remaining: 15x W019 (above), 4x W009 (phases 08/13/14/22 have Validation Architecture in RESEARCH.md but no VALIDATION.md), 1x W006 (Phase 1 in ROADMAP.md, never started, no directory).
EduMenges
approved these changes
Aug 6, 2026
EduMenges
pushed a commit
that referenced
this pull request
Aug 10, 2026
Both were live in the app and neither was in ROADMAP.md. Phase 24 is the mobile nav shell (centre dock, wallet header, two-section accounts sheet); phase 25 is the capped dashboard sections and the Assets page they forced into existence. Added with their locked decisions, the files they landed and their test coverage. Both carry an artifact-gap note, because the metadata lies: phase 24 has no SUMMARY and its PLAN still reads status: in-progress, and phase 25's BRIEF still reads ready-to-plan with no SUMMARY for 25-01. Jakub executed them outside GSD. The roadmap now says to trust git over the phase files rather than leaving the next reader to work that out. STATE.md contradicted itself and the repo — current_phase 14 in frontmatter, 23 in one body line, 22 in another, and a stopped_at claiming the 260806-hfe task was never pushed when it merged as #224. Counters and dates corrected, and a dated block now marks where the current position ends and the dual-track history begins. That history is kept, not rewritten.
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.
/transactionswas a desktop screen squeezed into a narrow window. This makes it read as a phone screen. Desktop is unchanged.What you'll see on a phone
The title spacing and edge gutters are shared, so Markets, News, Swap, Feedback, Token detail and Buy GNUS get the same tightening on a phone. Their content is untouched — that's the next pass.
Known limits
For reviewers
Everything is gated on
!GeniusBreakpoints.useDesktopLayout(context)— read from the window, not the row's constraints. The dashboard's transactions panel is ~376px wide while sitting on a desktop, so gating on row width would have restyled desktop by accident.flutter analyzeclean, both style gates clean, 1002/1002 tests (up from 1000: the never-transacted empty state and the 44px chip at 320px are now covered).