Settings redesign: flat list and pages (#148 step 1) #149
No reviewers
Labels
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
schaefera/utStudyBIble!149
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/redesign-settings"
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
Settings becomes the board E flat list with sub-pages: Text and layout, Light background, Language, Module sources. Text and layout has a fixed-height sample of two verses, and all three sliders take effect at each step. New controls (SectionLabel, ValueRow, LapisSwitch, Segmented), new e2e cases settings-pages and slider-steps. Refs #148.
Blast radius
Tier: trunk
Trunk paths touched: tools/e2e/, tools/mem-check/ (CI PSS baseline 176000 -> 185000 kB; docs/09 and docs/01 say why)
Testing tier: standard (also: UI, gate config)
Gate / rollback: revert this merge.
Proof
7799369: changes, rust, audit, app, e2e, click.FAIL: no 'utsb: line spacing 200' (x1) after 10 s.cargo make app-dockerpeak PSS 171658 kB normal, 177250 kB slow, budget 185000 kB. main itself measured 175827 kB in the slow profile, so the baseline moves to 185000 kB, 10% over the normal median again. This change adds no start-up work and loads no new module data. A slider drag now re-lays out the reading text at each step, as text size already did.feat/redesign-settings@779936938and replied "Works, go for it". An earlier round on the phone led to the two-verse sample, readable slider labels in dark, per-step sliders and the fixed height. Build left installed.Screenshots
Text and layout, light (final):
The two dark shots were taken before the sample changed; the rest of each page is the same.
Text and layout, dark (E9):
Settings list, dark:
Review
Reviewer: fresh-context
code-reviewat high onbc3c56d(2 low findings, 2 fixed in20de951), then medium delta reviews onfd2775fand7799369(no findings). 0 declined, 0 deferred, 0 left open.Review-Confidence: 85/100, trunk was reviewed at high with two medium deltas and CI is green, but no test drives the new About row or the Module sources switches.
Confidence by part
🤖 Generated with Claude Code
Fresh-context review. Level: high. Blast radius: trunk (tools/e2e/lib.sh, tools/e2e/cases/). Reviewed commit:
bc3c56d64a. Range: origin/main...HEAD.I found no high or medium defects, so this is a COMMENT. I read every hunk of tools/e2e/lib.sh and tools/e2e/cases/ in context. I followed each changed helper to its callers and to the log lines emitted by the new QML pages: display-settings, display-spacing, display-settings-kill, running-text, verse-text-tap, light-ground, language-switch, typed-reference, tap-retry, module-manager, the red-letters cases and tools/mem-check/run.sh. Nothing in those paths breaks:
Findings outside the diff: none.
Files reviewed: tools/e2e/lib.sh, tools/e2e/cases/settings-pages.sh, tools/e2e/cases/display-spacing.sh, tools/e2e/cases/language-switch.sh, tools/e2e/cases/light-ground.sh, tools/e2e/cases/running-text.sh, tools/e2e/cases/verse-text-tap.sh, tools/e2e/cases/typed-reference.sh, tools/e2e/cases/tap-retry.sh, tools/e2e/cases/module-manager.sh, tools/e2e/cases/display-settings.sh, tools/e2e/cases/display-settings-kill.sh, tools/e2e/cases/red-letters*.sh, tools/mem-check/run.sh, qml/pages/SettingsPage.qml, qml/pages/TextLayoutPage.qml, qml/pages/LanguagePage.qml, qml/pages/LightBackgroundPage.qml, qml/pages/ModuleSourcesPage.qml, qml/controls/LapisSwitch.qml, qml/controls/qmldir, qml/qml.qrc, CLAUDE.md, docs/09-quality-gates.md (log-line references).
Low findings are inline.
@ -0,0 +15,4 @@e2e_shot settings-text-layoute2e_tap_back_onee2e_in_sub=0e2e_wait 'utsb: settings typing ' 2low · The waits on lines 18, 24 and 30 use absolute counts (
settings typing2, 3, 4), where lib.sh's e2e_tap_back and line 39 count relative to a baseline. The Settings reporter restarts on contentY and column-height changes, so one extra fire while the list is first shown would already satisfy... 2. Then e2e_settings_page taps the next row while the Back transition is still running. StackView drops that tap, and e2e_settings_page has no retry, so it fails withno 'utsb: display ground ' (x1)after 10 s. This is a latent flake, not a deterministic failure. Fix: takee2e_seen=$(e2e_count ...)before each Back, as line 33 does.@ -0,0 +40,4 @@# The search field narrows the list to the rows that match.e2e_tap $((e2e_w / 2)) 100xdotool type --delay 40 "lang"low · The header says the typeface choice is saved and shown, and that the search field filters the rows. Nothing asserts either: the case only takes a shot after typing
lang. A regression where the search stops filtering, or the typeface does not persist, would pass this case. Fix: assert on a log line, for example asettings rowsreport after the filter, or read the app's text-scale or serif log.Round 1 answers (fix commit
20de951):settings typingreports first and waits for one more.settings rows ... serif trueafter Back. After typinglangit waits forsettings rows ... shown 1. For these, the settings rows report now carriesshown Nandserif, and Text and layout reportsdisplay typeface.settings-pages and display-settings pass locally.
Other comments:
All three comments are fixed in
fd2775f:Checked locally:
cargo make app-dockerand the e2e cases settings-pages, display-settings, display-spacing and running-text pass, and I looked at the Text and layout shot in dark. The Xvfb shot isn't the phone's Suru, so the label colour still needs a look on the phone.🤖 Generated with Claude Code
Review level: medium (delta review). Reviewed commit:
fd2775f16a. Range: bc3c56d..HEAD.Findings: none high, medium or low. I traced these changes and found no concrete failure:
Not run: I did not execute the e2e case or the gates; this was static review only.
Files reviewed:
docs/01-pathway.md
docs/09-quality-gates.md
po/de.po
po/lectern.aps.pot
qml/controls/LabelledSlider.qml
qml/pages/SettingsPage.qml
qml/pages/TextLayoutPage.qml
tools/e2e/cases/settings-pages.sh
tools/e2e/lib.sh (helpers only)
tools/mem-check/budget-kb
qml/pages/ReadingPane.qml (verseGap/runningText only)
qml/theme/Theme.qml (where, verseGap only)
Delta review, medium level, trunk (tools/e2e). Commit
7799369. Range fd2775f..HEAD (excluding CLAUDE.md).Files: qml/controls/LabelledSlider.qml, qml/pages/TextLayoutPage.qml, tools/e2e/lib.sh, tools/e2e/cases/slider-steps.sh, tools/e2e/cases/display-spacing.sh.
No defects with a concrete failure scenario found. Checked: onMoved commits per step and the value binding follows the model (same as the text size slider); the report timer now keys off reading.changed, so the fixed-height sample no longer shifts slider coordinates between the e2e reports; the sample's y offset for the cut-short case; e2e_hold_slider_to's press at x-40 then move to the end, and the log-count waits in slider-steps.sh.
WIP: Settings redesign: flat list and pages (#148 step 1)to Settings redesign: flat list and pages (#148 step 1)Merge gate: approved on
7799369.20de951.7799369, the last reviewed commit and the head.