# Lappy v0.3.0 — E30 companion views

V2 Rev1.1 firmware now includes the approved red BMW E30 M3 exterior animation and cabin driving POV. A short PWR press cycles **Instrument → Exterior → Cabin → Instrument** on release. Instrument returns to the same Street, Drag, Track or Settings view and page. Startup always opens the instrument; companion selection is temporary.

Both clocks display Lappy's manual system time: upper right in the exterior, and in the cabin's centre console. Settings → Time & Date controls date/time and 12/24-hour format. An unset clock displays `--:--`. RTC restoration, calendar saving and GPS-independent elapsed timing retain their existing behavior. There is no computer/GPS/network time synchronization.

The approved 28-second loops retain all 448 frames at a target 16 fps, including the exterior's idle/cruise/drift transitions and cabin steering/road movement. Pixel artwork is doubled with nearest-neighbor scaling to 640×172. Frames are embedded in firmware; no SD artwork installation is needed. The cat animation is absent.

Telemetry, recording, trip calculations and Drag/Track timing continue while either companion view is displayed. Companion touch/swipe input is consumed. BOOT still changes instrument mode or opens Settings and returns to the instrument when used from a companion view.

Hold PWR for one second from any view to use the existing save/shutdown flow. Saving and failures take visual priority; the long-press release never also cycles views. A startup-held PWR is ignored until release. Failed saves retain battery hold for retry; a successful save waits for release before switching off. USB-powered restart still uses a fresh long PWR hold.

## Verification and delivery

- ESP32-S3 V2 build passes; application size 3,047,408 bytes, with 1,146,896 bytes remaining in the existing 4 MiB app partition. Partition layout is unchanged.
- Host tests with AddressSanitizer/UndefinedBehaviorSanitizer verify all 896 decoded frames against approved-source hashes, random/keyframe seeks, corrupt/truncated data, clock rollover, unset/12/24-hour clocks and clock-only pixel changes. Existing core, BLE, storage and shutdown suites pass.
- Native simulator tests verify three-way PWR cycling, debounce/startup guard, background GPS/timing, BOOT/Settings and shutdown priority. Native rendering produces 157 screens. Of the 148 existing artboards, 147 are pixel-identical to v0.2.3; only the Settings version caption changes.
- Linked ATT dispatch and BLE stack audits pass, including historical negative controls. BLE, timing engines, storage and board/startup sources are unchanged.

Use [the implementation notes](IMPLEMENTATION_v0.3.0.md) for asset regeneration, memory and scheduling details. The package contains firmware, matching debug ELFs, checksums, source and test reports. The native simulator is also available separately as `Lappy-Simulator-v0.3.0-macOS.zip`.

This release has not been flashed or physically tested. Actual frame pacing, BLE/SD coexistence under animation, touch isolation, battery PWR/RTC behavior and orientation need the device checks in [the bench checklist](HARDWARE_BENCH_v0.3.0.md). The brief initial battery PWR flash remains. No pairing, PB or course migration is required.
