Fixes the editor bugs from v1.16.5 (focus loss on every keystroke, items vanishing on re-edit) by moving the maintenance list out of the card config into the integration's HA storage.
What changed
- Maintenance items are now stored per bike in HA storage (
/config/.storage/) instead of the browser's localStorage. The list syncs across all devices, survives browser changes, and is the same data the integration's existingMaintenance Items Duesensor reads. - Editor: bike picker dropdown at the top, maintenance items load from the backend and save live (400ms debounce per field) via WebSocket. No more Lovelace round-trip per keystroke - the focus loss is gone, and re-opening the dashboard shows the items correctly.
- WebSocket API: new commands
bosch_ebike/add_maintenance,/update_maintenance,/complete_maintenance,/remove_maintenance, exposed alongside the existing/list_maintenance. - New service:
bosch_ebike.update_maintenance(in addition to the existing add/complete/remove services) so automations can edit existing items.
Migration
When the dashboard card first renders with a bike selected, it imports any legacy maintenance: entries from the card config into the backend (idempotent: only runs if the backend list for that bike is empty). LocalStorage 'done' markers from v1.16.5 get cleaned up at the same time.
i18n updated for EN / DE / NL, README sections rewritten.