From 22decbab975592859eeaca87fb20297e83931523 Mon Sep 17 00:00:00 2001 From: Mikkeli Date: Thu, 15 Oct 2026 21:31:00 +0900 Subject: [PATCH] Plan: Dash and app next (status banner, layouts and navigation, media controls, floating window, auto dark/bright) Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01DDwfd6Ki8UfG4hK6W5YpJz --- docs/impl/plans/DASH-NEXT.md | 79 ++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 docs/impl/plans/DASH-NEXT.md diff --git a/docs/impl/plans/DASH-NEXT.md b/docs/impl/plans/DASH-NEXT.md new file mode 100644 index 0000000..d3cfdaf --- /dev/null +++ b/docs/impl/plans/DASH-NEXT.md @@ -0,0 +1,79 @@ +--- +type: plan +status: draft +updated: 2026-10-15 +--- +# Dash and app: what comes next + +Ideas collected on 2026-10-15, before building anything. Each needs a short discussion first; +specifics are open where marked. Where the app stands now: `lib/README.md` (the shell with its +swipe-in menu, the Dash, the seven-role palette, `hudFont`), and contracts `signals.json` for +what the Orin publishes. + +## 1. Orin status in a top banner, like a phone's + +A thin strip across the top of the app (the Dash's own top line included) showing the Orin +the way a phone's status bar shows the phone: its network links and its power. + +- **Already on the bus, no Orin work needed:** `net_wifi_up` and `net_wifi_ssid`, + `net_wifi_signal_dbm`; `net_lte_state`, `net_lte_tech`, `net_lte_signal_pct`; `net_tablet_up`; + `ups_battery_pct`, `ups_state` (charging / discharging / idle), `ups_battery_v`; `can_up`, + `can_bus_state`; `elm_connected`; temperatures (`orin_tj_temp_c`). GNSS: `gnss_fix`, + `gnss_satellites` (which undercounts: gpsd drops GPS from its sky view, see below). +- **To discuss:** which of these earn a place in the strip, and in what form (icons with + palette roles, a number, or both); what tapping the strip does (the menu's link header + already goes to Settings). +- Note for the satellite count: the receiver's own GGA count (e.g. 9) is right where gpsd's + SKY (e.g. 5) is not; svc-core `gnss` would take it from there. + +## 2. Dash layouts, and whether navigation is in them + +Revamp the Dash's layout(s), and decide whether navigation (svc-nav: Valhalla routing, a +MapLibre map, turn-by-turn on `yukart/nav/guidance`) lives on the Dash, beside it, or not at +all. Inputs to the decision: + +- Screen room: the tablet is 1340 × 800 dp in landscape; the boxed pattern already fills it. +- Several layouts are possible (a driving one, a navigating one), chosen in the menu or by + state (a route active). +- New signals worth placing since the first Dash: `vehicle_speed_kph` (CAN), `coolant_temp_c` + (CAN), `steering_angle_deg`, `main_beam`, `front_fogs`, `front_wiper`, `imu_yaw_rate_dps`. + +## 3. Media controls for the Android player + +A play/pause/next strip for whatever plays on the tablet. Google Maps' built-in media controls +stopped working with Symphonium (the music app in use). + +- Android's way in: `MediaSessionManager.getActiveSessions()` with a + `NotificationListenerService` the user grants once in settings. That reaches any app that + publishes a media session (Symphonium should: check what it exposes). Needs a small Kotlin + part in the app's Android side (the app already has one: `net.dart`'s method channel). +- To discuss: where it sits (the Dash, the top banner, a menu page), and how much (track + title, artwork, seek). + +## 4. Long shot: a floating window + +The app as a small, movable overlay over other apps (Maps, the music player), showing a few +chosen readouts. + +- Android's way: `SYSTEM_ALERT_WINDOW` ("display over other apps", granted in settings) plus a + foreground service drawing the overlay; Flutter can render into it with a second engine. + Picture-in-picture is the lighter alternative, but PiP windows are not interactive. +- "Customisable (kind of)": which readouts it shows, chosen from the same widgets the Dash + uses (the boxed pattern is already sized from its box, which suits a small window). + +## 5. Dark/bright: automatic or fixed, the Android way + +Today the variant is a switch (the Dash's top-right button, and Settings). Wanted: + +- **Auto or fixed**, chosen in Settings. Auto could follow Android's own dark mode + (`MediaQuery.platformBrightness`, which follows the system schedule or sunset), or the + tablet's ambient light sensor directly (smart-serow switched its theme from a light reading). +- **Fully Android:** when fixed, the switch should feel like a system control. +- **Linked with the quick selector at the top right:** the Dash's top-right control should + become part of the top banner (item 1), next to the network indicators. To confirm what + "the WiFi quick selector top right" refers to when this is discussed. + +## Order + +Not decided. 1 and 5 share the banner and are small; 2 decides the shape of everything else; +3 and 4 need Android-side work and permissions.