fix: give the server version a row of its own instead of a figure tile #126
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/settings-version-row"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What's in
Follow-up to #125, from looking at the page against a real server.
The statistics grid sizes its tiles for row counts (150 px). A MinVer build version is not a count —
0.3.1-dev.0.12+9f8e7d6arendered as0.3.1-dev.0…, clipping the one value anyone copies into a bug report. My fault in #125: I put a free-form string in a numeric tile.SettingsRowunder SERVER, monospaced, laid out in full and wrapping rather than clipping.kStatTileWidth, so a test can state what "too narrow for this value" means instead of hardcoding 150.Before / after, same fixture:
Verification
scripts/verify.sh app— green, 859 tests. Settings suite 48/48.9.8.7+xyz, so the suite exercises the length that caused this._StatTilesmakesthe server version gets room to render in fullgo red — the renderedTextis then clipped tokStatTileWidth.Follow-ups
None. The two narrow-layout items from #125 remain in
docs/BACKLOG.mdand are untouched here.🤖 Generated with Claude Code
Flutter Coverage
Total: 82.2% (8389 of 10210)
🔮 fufu~ Jibril reviewed your code!
Oh? A PR that admits its own #125 mistake and fixes the abstraction — you noticed a free-form string sitting in a numeric tile and instead of just widening the tile, you asked what the tiles are for. Counts in LIBRARY, version in a row of its own. That's the kind of taxonomy thinking that makes my wings flutter~ ♪
Verdict: ✅ Looks good to me~
💡 Little ideas (non-blocking)~
LIBRARYgroup heading is the PR's semantic claim ("which is what they were describing all along") yet no test pins it — onlySTORAGEis asserted (expect(find.text('STORAGE'), findsOneWidget)). Delete thetitle: 'Library'line today and every test stays green. One line —expect(find.text('LIBRARY'), findsOneWidget);— pins the grouping the way its STORAGE sibling is pinned.✅ What I liked~
kStatTileWidthpromotion — the magic150became a documented public constant whose doc comment states the policy ("a value longer than that belongs in a SettingsRow instead"), letting the test assert meaning instead of a hardcoded pixel count. Matches thekSettingsControlMaxWidth/kSettingsPaneMaxWidthfamily exactly._StatTiles→the server version gets room to render in fullgoes red (the Text gets clipped tokStatTileWidth); restored → green. And the fixture swap to a real MinVer string (0.3.1-dev.0.12+9f8e7d6a) means the suite now exercises the exact length that caused the bug, not a cozy9.8.7+xyz.SettingsRowgives the value anExpandedcolumn capped atkSettingsControlMaxWidthwith nooverflowset, so "wrapping rather than clipping" is true by construction, wide and stacked layouts. Themonospacetreatment has its sibling inmodel_combo_field.dart:337. Clean~Automated review by Jibril · 2026-09-10
CI/CD: absent for head SHA
dcbbcd3(no bot comment) · Local checks: verify.sh app green — analyze 0 issues, settings suite 48/48, full suite 859/859, mutation probe RED→greenscarlet referenced this pull request2026-09-10 13:59:25 +02:00