You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
No active overlapping Device-UI implementation claim was found. Remaining historical Device-named branches are associated with already-closed earlier work and do not own this scope.
Implementation ownership for this Task is the StickS3 Device UI/countdown/status-color surface defined below. Start from the current main at implementation bootstrap and re-run the normal Issue/PR/branch collision check before mutation.
There is no remaining dependency blocker at this handoff.
Objective
Improve the M5StickS3 OTP screen and status readability by showing the remaining validity of the currently displayed TOTP and by applying semantic text colors to Device State and Time values.
Scope
1. TOTP validity countdown
While an OTP is revealed, show how much validity remains in the current RFC 6238 30-second TOTP period.
Preferred presentation:
a compact circular countdown/progress animation similar in concept to common authenticator apps;
optionally include remaining seconds when legible on the 240x135 display.
Fallback:
if a circular indicator cannot be rendered without materially reducing OTP readability or causing flicker, a clear numeric remaining-seconds indicator is acceptable.
The countdown represents TOTP validity, not the existing 10-second reveal timeout.
2. TOTP rollover while revealed
The UI must never present a countdown for a new TOTP period while leaving the old OTP code visible.
If the 30-second TOTP boundary is crossed while reveal remains active:
regenerate the selected credential's TOTP for the new period;
replace the displayed OTP atomically with the new code;
reset the validity indicator for the new 30-second period;
do not extend the original 10-second reveal deadline.
If trusted time becomes non-ready or generation fails, follow the existing fail-closed reveal behavior rather than showing a stale OTP.
3. Semantic colors for State / Time
Color only the status value (or an equivalently clear status region); retain the State: / Time: labels and textual value so color is never the sole carrier of meaning.
State color mapping
UNLOCKED -> green
LOCKED -> amber/yellow (normal but not currently usable for OTP)
UNPROVISIONED -> amber/yellow (setup required)
REPROVISION -> red
SECURITY ERROR / unknown error -> red
Time color mapping
READY -> green
NOT SYNCED -> amber/yellow
TIME STALE -> red
TIME ERROR / unknown error -> red
Use display-native RGB565 or equivalent constants with enough contrast against the current black background. Exact hue may be adjusted for M5StickS3 readability, but semantic categories above must remain stable.
Acceptance criteria
OTP reveal still has the existing maximum 10-second visibility window.
While OTP is visible, the UI presents remaining validity for the current 30-second TOTP period.
Preferred implementation uses a compact circular countdown/progress indicator if physical readability/performance permit; otherwise a numeric seconds fallback is clearly implemented and documented.
The indicator progresses smoothly enough to be understandable without introducing whole-screen flicker.
The visual indicator must be computed from the same trusted time basis used for TOTP generation; do not introduce a second independent wall-clock truth.
OTP rollover must use existing bounded/transient generation paths and zeroization expectations.
Parent spec
#137
Owner
implementationdeviceState
READY_FOR_IMPLEMENTATIONDependency / collision boundary — re-evaluated 2026-09-17
The original blocker on #139 / PR #143 is resolved.
Current baseline at this re-evaluation:
main:5a0242d7723e5d264edc7544eb1398cd661cf7f5mainand its physical Human Gate passed 16/16.mainat the current head.Implementation ownership for this Task is the StickS3 Device UI/countdown/status-color surface defined below. Start from the current
mainat implementation bootstrap and re-run the normal Issue/PR/branch collision check before mutation.Known integrated-file considerations:
firmware/components/m5auth_device_sticks3/...UI/layout/scroll baseline and related UI tests; [Task][Device] Add TOTP validity countdown and semantic status colors #148 extends that integrated baseline rather than reopening [Task][Device] Refine StickS3 OTP screen readability and interactions #139.tests/sticks3_runtime_contract_test.py; [Task][Device] Add TOTP validity countdown and semantic status colors #148 may extend shared tests where necessary but must preserve the integrated automatic-LOCK contract and must not change its semantics.There is no remaining dependency blocker at this handoff.
Objective
Improve the M5StickS3 OTP screen and status readability by showing the remaining validity of the currently displayed TOTP and by applying semantic text colors to Device
StateandTimevalues.Scope
1. TOTP validity countdown
While an OTP is revealed, show how much validity remains in the current RFC 6238 30-second TOTP period.
Preferred presentation:
Fallback:
The countdown represents TOTP validity, not the existing 10-second reveal timeout.
2. TOTP rollover while revealed
The UI must never present a countdown for a new TOTP period while leaving the old OTP code visible.
If the 30-second TOTP boundary is crossed while reveal remains active:
If trusted time becomes non-ready or generation fails, follow the existing fail-closed reveal behavior rather than showing a stale OTP.
3. Semantic colors for State / Time
Color only the status value (or an equivalently clear status region); retain the
State:/Time:labels and textual value so color is never the sole carrier of meaning.State color mapping
UNLOCKED-> greenLOCKED-> amber/yellow (normal but not currently usable for OTP)UNPROVISIONED-> amber/yellow (setup required)REPROVISION-> redSECURITY ERROR/ unknown error -> redTime color mapping
READY-> greenNOT SYNCED-> amber/yellowTIME STALE-> redTIME ERROR/ unknown error -> redUse display-native RGB565 or equivalent constants with enough contrast against the current black background. Exact hue may be adjusted for M5StickS3 readability, but semantic categories above must remain stable.
Acceptance criteria
NOT SYNCED/TIME STALEor generation otherwise becomes unavailable, stale OTP is not retained on screen.StateandTimetextual values remain visible and readable; color supplements rather than replaces text.UNLOCKEDandREADYare visually green.LOCKED,UNPROVISIONED,NOT SYNCED) use amber/yellow rather than being presented as fatal errors.REPROVISION,SECURITY ERROR,TIME STALE, andTIME ERRORare visually red.Security / timing constraints
Out of scope
References
docs/V1_REQUIREMENTS.mdSECURITY.md