Chase-cam playback from the 2D map card
- Date / time / sun chips show the actual tour timestamps instead of the current time (the full activity object is now passed to
openActivity). - Overlay layout uses the 3D card's flex chain unconditionally - the map fills the overlay edge-to-edge whether browser fullscreen is engaged or not, and the play controls sit at the bottom of the screen.
- The spawned 3D card inherits
playback_speedand the other playback / display options from any existing 3D card on the same dashboard, so a custom chase-cam speed in one place is honored everywhere.
Shared card settings (single source of truth)
- New HA-storage slot (
/config/.storage/ha_bosch_ebike_card_settings) holds the playback + display options. - Both 2D and 3D card editors read and write to it; both cards render via the cascade: shared store > card YAML > hardcoded default.
- New WebSocket commands
bosch_ebike/get_card_settingsandbosch_ebike/set_card_settingswith an allow-listed key set. - An in-process event bus pushes changes to all open cards live - edit playback_speed in one editor, the other card reflects it within ~1 s.
Maintenance management
- Dashboard auto-discovers the bike when
bike_idis unset; single-bike users no longer need to configure anything. - Editor lists items across ALL bikes, each row shows the bike label (if multi-bike), a name dropdown, type switch (km / days), interval, last done input (km for km-based, date picker for day-based), green ✓ done button and red × remove button.
- Backend recomputes
remaining_km/remaining_dayson the fly inws_list_maintenance, so the dashboard sees the new state immediately after add / update / done. - New WS field
last_done_at+last_done_odometeronupdate_maintenanceso the editor can record 'I did this last week at km X'. - Fixed several
Number(null) === 0bugs that hid the day-based path and rendered date items as 'overdue: 0 km'. - Visible error reporting via
alert()when a WS call fails, plus full traceback in the HA log.