# Lappy v0.5.0

Adds an optional **Lappy Race** instrument theme based on the owner-supplied Claude Design candidate, plus a simple **Clock** companion face. **Lappy Classic remains the default.** Existing pairing, units, brightness, rotation, courses, recordings, PBs and results keep their schemas and behavior.

- **Settings → Display → Theme** selects Lappy Classic or Lappy Race. Selection applies immediately and is saved by the existing background preference writer. Missing or invalid theme values select Classic. Changing a theme preserves mode/page memory, selected tests/course, active timing and recording.
- Race covers Street Drive/Trip/GPS, Drag Live/selector/both Results banks/Details, and Track Timing/Map/Session. It uses the candidate's rectangular cells, bold numerals, state tags, progress/delta segments and green/red delta floods. It displays live firmware state, never the candidate's sample readings.
- A single retained Race status header uses fixed connection/GPS/SD positions on all driving and shared setup pages. It remains 28 pixels high to align with the existing setup bodies. Page names, bank names and status colors change without moving status fields. RTC save failures remain explicit. Long course breadcrumbs use an ellipsis; numeric readings do not.
- Race primary numerals are 104 pixels, with 76/64-pixel numeric fallbacks for wide values. New Race text never falls below 18 pixels. Full GPS/attempt metadata remain available; long validity messages use two lines. Session columns handle four-hour P2P values, sectors and signed deltas. Deltas of a minute or more use signed m:ss in the compact history column; Timing retains hundredths. Shared Settings, course editing/recording, boot and shutdown retain their established layouts and actions.
- **Settings → Display → Clock in PWR cycle** is off by default. Enabled: Instrument → Exterior → Cabin → Clock → Instrument. The default three-view sequence is unchanged. Clock has an analog hour/minute dial, large HH:MM, a date line and AM/PM when selected. It uses the existing manual clock/RTC, with no GPS sync or timezone change. Unset shows --:-- and Set time in Settings. BOOT, input isolation, background timing/capture and PWR save/shutdown priority retain existing behavior.

The V2 Rev1.1 target and partition table remain unchanged. The .lappy updater writes the application only after its existing backup/identity checks. Historical releases and the protected v0.4.3 build remain intact. No device has been flashed as part of this implementation.

Software validation passes the full core/storage/radio-worker regression suite, three native UI tests and ASan/UBSan UI tests. There are 208 Classic/Clock captures and 215 Race captures. The Race acceptance test checks text widths, parent/screen bounds, sibling overlaps, an 18-pixel minimum, fixed status pixels across ten instrument pages, all Drag/Track fault categories, wide values, pointer/held actions, theme changes during timing, retained updates, shared Track workflows, Clock and shutdown. Of the 199 protected v0.4.3 captures, 197 are byte-identical; Settings changes only its version context, and Display adds the new controls. See [validation and implementation](IMPLEMENTATION_v0.5.0.md).

Physical sunlight readability, touch/display performance and BLE/SD coexistence with the new UI still need device acceptance. Host captures and sanitizer checks do not establish physical frame rate or measurement accuracy.
