Repository navigation
feat(ui): present the session record as a carousel - #166
Merged
Merged
Conversation
Review was the last screen still built the simulator way: six rows, four lap panels and six buttons on a 49 mm panel. It is also the one screen a driver reads while stopped and unhurried, where there is least excuse for cramming. It reuses CarouselScreen rather than imitating it, so Review is not a second visual language for the same interaction, and it inherits readable typography rather than repeating the mistake that made the previous version look empty. Swipe cycles the values, press moves to the next session - what the OLDER button did, and the only gesture left once swipe belongs to the values - and a long press leaves, as it does everywhere else in the menu. Which session is being read stays in the title on every card, so cycling through values never loses it. CarouselEntry gains a caption, because a record value needs two things said and the entry carried one label. The value is large with its name beneath, the arrangement the time roller already uses. The field is appended: the struct is aggregate-initialised at every call site, and a field in the middle silently reassigns positional initialisers. The card list is free of LVGL and built from the summary alone, so what a session is worth reading can be tested without a display; icons are mapped in the router, which is the only part that needs to know about symbols. The recording card appears only when there is something to report - a partial log or a degraded subsystem. A card that always reads "fine" teaches a driver to swipe past the one place a problem would ever be shown. The old dense screen is left in place because the frozen simulator still builds against it, and removing it would break a build kept as a regression guard. Closes #165 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Closes #165.
What changed
Review was the last screen still built the simulator way — six rows, four lap panels and six
buttons on a 49 mm panel. It is now a carousel: one value filling the screen, cycled with a
swipe.
once swipe belongs to the values
SESSION n OF mstays in the title on every card, so cycling never loses which sessionis being read
Reused, not imitated
It drives the same
CarouselScreenas MODE, TRACK and TRIGGER, so Review is not a secondvisual language for the same interaction — and it inherits the readable typography rather than
repeating the mistake that made the previous version look empty when it was not.
One extension:
CarouselEntrycarried a single label, and a record value needs two things said.It now has a caption under the label, so a card reads as a large value with its name
beneath — the arrangement the time roller already uses.
That extension has a second beneficiary.
device_mode_summary()andsession_trigger_summary()already exist, describe exactly what each choice does, and aredisplayed nowhere — there had been no place to put them. Noted on the issue rather than
widened into this change.
Testable without a display
The card list is built from the summary alone and carries no LVGL, so what a session is worth
reading is a question about the record rather than about how it is drawn. Icons are mapped in
the router, the only part that needs to know about symbols.
Five new tests: every recorded value gets a card, every card is named and coloured, a long
session still reads in minutes (
95:07), an empty session reads as coherent zeroes rather thanblanks, and the recording card appears only when it has something to report.
That last one is a judgement worth challenging: the
RECORDINGcard is hidden when the log iscomplete and nothing is degraded. A card that always reads "fine" teaches a driver to swipe
past the one place a problem would ever be shown. Today it will read
NO GPS, which is true.Left alone deliberately
SessionReviewScreen, the old dense layout, stays in the tree because the frozen simulatorstill builds against it. Removing it would break a build kept precisely as a regression guard.
Verification
39 host suites (one new) and 70 simulator tests. Firmware builds and is flashed.
The on-device interaction is not yet confirmed — swiping through the cards and changing
session with a press has not been exercised on the panel, only the build and the card model.
Worth a look before it is relied on.