Navigation redesign, driven by testing against the actual target
hardware (Waveshare 5" resistive touchscreen) and the intended client
base (small factories — many users will not have a full set of
fingers/thumbs on either hand):
- Replace TabbedContent/TabPane with a VerticalScroll containing three
min-height:100vh sections (Dashboard, Request Assistance, Switch to
X), navigated via a fixed-width touch-bar sidebar rather than raw
swipe, since touch-swipe fidelity on this hardware was never verified
and button-triggered navigation removes the dependency entirely.
- Touch-bar zones are deliberately oversized (roughly thumb-width,
half-screen-height) with a forgiving click margin that extends past
the visible coloured bar — a touch landing near, but not precisely
on, the visible target still registers. Verified in testing that
this margin works correctly in the fully assembled app, not just in
isolation.
- Drop Screen subclassing for Dashboard/Request Assistance/Switch to X;
they're now plain Containers composed directly into the scroll stack.
Screen is reserved for BlankScreen, which is the only one that
actually uses the app's real push/pop screen stack.
- Navigation index is tracked explicitly rather than inferred from
scroll pixel offset — the offset-inference approach proved fragile
in testing.
Fixes from the v0.0.1 review:
- Remove unused `time` import (flake8 F401)
- Rename app class away from the BigBoy-specific name
- Apply UTIL_THRESHOLDS consistently to the GPU util bar, per-core CPU
bars, and memory bar (previously only the GPU temp digits were
colour-coded)
- Wire up the GPU-util sparkline (previously tracked but dead/unused)
Still a prototype: no test gates or cleanup trap yet (not CE OS
scripting style guide-compliant), and Request Assistance / Switch to X
remain stubs pending the outbound-email and VT-switch wrapper work.