App 2.28.0: Overview style Mascot, an anime co-pilot who reacts to the drive

MascotView draws her head and shoulders beside speed, gear, battery,
power, usage and trip. MascotMood picks her expression from the reading
(waiting, reverse, worried, asleep, cheering, determined, fast, content)
and holds a new mood for 1.5 s so values at a threshold do not make her
flicker. A speech bubble carries a line per mood.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LhzAVaUyqcw5PkGjz4mWW6
This commit is contained in:
2026-10-24 23:07:50 +02:00
co-authored by Claude Opus 5.5
parent 965a20cfb2
commit 57cabfa0e1
11 changed files with 704 additions and 8 deletions
+14
View File
@@ -131,6 +131,20 @@ tyre pressures, GPS (lat, lon, elevation, heading) and the is_* flags. It does *
confirmed car facts, app structure, UI conventions, build/test/ship, documents. It replaces
upstream's EVABRPUploader text. The test emulator is now in the flake: `nix run .#car-emulator`
(Android 9 AOSP at 1920×720, 160 dpi; the car build installs as the system user — checked).
- 2026-10-24 — App 2.28.0 (branch `styles-retro-future`): Overview style **Mascot**
(`MascotView` on `ClusterCanvasView`): an anime co-pilot, head and shoulders, drawn on a
100 × 100 grid — an adult woman, fully dressed, with a headset and a racing jacket in the
accent colour (so the style takes the accent). Her face follows `MascotMood`, chosen from the
reading in this order: waiting (nothing read), reverse (glances back), worried under 20 %
(sweat drop), asleep in P (drifting Zs), cheering while regenerating more than 5 kW
(sparkles), determined over 60 kW, enjoying 100 km/h and more (wind lines), else content. A
new mood shows after it lasts 1.5 s (`MascotMood.Holder`), so values hovering at a threshold
do not make her flicker; R and "waiting" show at once. Unread values are never a reason for a
mood. She says a line per mood in a speech bubble (`mascot_*` string arrays, one picked every
30 s, shrunk to fit). Beside her: speed, the gear in a ring, battery bar with percent and
range, power, 5-minute usage, trip, and the clock. She blinks and the Zs, sparkles and wind
move with the 0.2 s readings; no animation loop of its own. Emulator: all eight moods checked
with sample values in a throwaway build, and "waiting" with no data. Not tried on the car.
- 2026-10-24 — App 2.27.3 (branch `styles-retro-future`): first step to the cruise control (ACC)
set speed. The head unit's `CarAdvancedAssistedDrivingManager` names a vendor float
`AAD_EPTCCTRGTSPD` = `0x2160A15B`, by its name the powertrain's cruise control target speed;