Skip to content

Latest commit

 

History

History
253 lines (201 loc) · 26.6 KB

File metadata and controls

253 lines (201 loc) · 26.6 KB

Changelog

Unreleased

No changes yet.

0.6.0-beta.21 notification recipient cutover candidate

  • Migrates recipient discovery toward modern Home Assistant notify.* entities while retaining legacy notify.<service> actions as a compatibility fallback.
  • Sends modern notification entities through the canonical notify.send_message action, allowing mobile-app and Telegram notify entities to coexist in one explicit recipient fan-out.
  • Keeps recipient consent explicit: configuring one or more recipients still creates package-owned recipient switches that default off until the owner enables them.
  • Allows the package Test notification to bypass only the global notification master so routing can be accepted before production notifications are enabled; selected recipient switches remain mandatory.
  • Reuses one shared recipient-discovery contract in options flow and runtime delivery instead of maintaining service-only discovery in two places.
  • Adds regression coverage for entity-first delivery, legacy fallback and pre-cutover test-notification behavior.
  • Retains privacy-sanitized per-probe error class, HTTP status when exposed by the upstream exception, and short error text in Vehicle API Audit alert evidence so failed /alerts probes remain diagnosable.
  • Package version 0.6.0-beta.21; frontend resource version remains beta.20 because this candidate changes backend/config-flow behavior only.

0.6.0-beta.20 notification and wake-up migration candidate

  • Hardens vehicle reachability around the newest trustworthy Stellantis createdAt / updatedAt timestamp already present in the loaded upstream coordinator payload, so fresh telemetry can be proven even when a value such as ambient temperature remains numerically unchanged.
  • Explicitly excludes command/action lifecycle timestamps from heartbeat recovery; accepted / forwarded remote-command states remain insufficient proof that the vehicle returned fresh data.
  • Keeps mapped Home Assistant vehicle entities as a startup/reload fallback and chooses the freshest available mapped-data timestamp rather than trusting one temperature entity.
  • Replaces the fixed hourly wake-up cadence with a conservative package-owned periodic interval setting: default 60 minutes, configurable from 30 to 360 minutes. Charging wake-up and the one-probe-per-outage path remain separate explicit opt-ins.
  • Adds portable Home-zone selection from existing Home Assistant zone.* entities, defaulting to zone.home, without household-specific helpers.
  • Expands the Wake-up view with last wake-up, wake-ups today, selected Home zones, bounded 24-hour wake-up activity, last proven vehicle heartbeat, outage state and last availability probe.
  • Sends a truthful charge-start report even when no defensible ETA exists, while omitting the finish time instead of inventing one or dropping the whole notification.
  • Adds restart-safe logical de-duplication for completed trip/charge notifications.
  • Preserves the first observed charging-OFF boundary through the debounce window and uses that boundary for charge duration/power/reporting instead of extending the charge by the debounce delay.
  • Adds a Restore notification defaults action that resets only package-owned Number/Time settings and never enables notification topics, recipients or wake-up switches.
  • Extends the read-only Vehicle API Audit with structural Stellantis Alerts endpoint evidence. This does not introduce background alert polling, a second authentication/session stack or a Monitor callback.
  • Adds/updates focused regression coverage and the complete 18-language backend/frontend control text for the new notification/wake-up behavior.
  • Bumps package and consolidated frontend resource to 0.6.0-beta.20; only changed Strategy/i18n/audit resources receive beta.20 cache keys while unchanged internal cards retain their previous content keys.
  • Runtime acceptance should exercise the normal notification/wake-up contract without adding vehicle-specific special cases; unavailable vehicles are handled by the same generic stale/outage logic.

0.6.0-beta.19 server-history retry recovery candidate

  • Fixes a live runtime defect where one transient historical /trips failure such as Request timeout changed server history to sync_failed and permanently stopped the only bounded reacquisition worker for the rest of that Home Assistant uptime.
  • Classifies retryable read-only transport failures conservatively: timeouts, connection lifecycle failures, HTTP 408/425/429/5xx and the known upstream shutdown handoff may retry; auth/permission and malformed-data failures remain fail-closed.
  • Persists the retryability decision alongside server-history state so the existing single bounded-backoff worker can continue after retryable sync_failed states without creating duplicate workers.
  • Preserves exact VIN binding, local/archive fallback, upstream ownership of authentication/session state and clean unload cancellation.
  • Adds transport contract tests for retryable vs permanent failures and the retry-state decision.
  • Bumps only the backend package version to 0.6.0-beta.19; frontend resources remain on their unchanged beta.18 content keys.
  • Runtime acceptance must prove Request timeout → automatic retry → sync_succeeded without a manual sync button press.

0.6.0-beta.18 canonical mileage statistics candidate

  • Adds a package-owned Canonical mileage distance sensor with Home Assistant total_increasing semantics.
  • Advances the canonical counter from valid upstream odometer observations while ignoring numeric rollbacks and unavailable/unknown samples; implausibly large live forward jumps are deferred to server-history reconciliation.
  • Reconciles the counter against the highest trustworthy canonical server-trip odometer anchor, so missed upstream updates and proven odometer gaps can move the counter forward without inventing trip timestamps, energy or consumption.
  • Keeps the raw Stellantis mileage entity untouched for current-state diagnostics/provenance.
  • Changes the Statistics view to use Canonical mileage for mileage history and monthly driven-distance change bars; the raw upstream odometer is no longer used for driven-distance aggregation.
  • Fixes the existing label/config mismatch where “Distance driven per month” was actually rendered with period: "week".
  • Adds regression coverage for rollback, unavailable values, positive odometer gaps, invalid server rows and the dashboard source contract.
  • Adds the Canonical mileage entity name across the full 18-language Home Assistant translation matrix.
  • Bumps the package/frontend resource to 0.6.0-beta.18. Existing malformed Recorder/LTS history is intentionally not rewritten by the integration and requires the one-time supported repair workflow tracked in issue #71.
  • Remains a prerelease on develop; exact-SHA Home Assistant runtime/LTS acceptance is required before promotion.

All notable user-facing changes to SV Dashboard are recorded here.

0.6.0-beta.17 vehicle capability audit candidate

  • Adds an opt-in Vehicle API audit to the generated System view for onboarding and comparing real Stellantis vehicles without asking testers for ad-hoc raw logs.
  • Reuses the already-loaded Stellantis Vehicles authenticated transport in read-only mode; the audit creates no second OAuth/session stack and sends no wake-up, MQTT or vehicle-control command.
  • Probes current vehicle/account data, status, maintenance, vehicle extensions such as onboardCapabilities, bounded Trips pagination/detail behavior and advertised read-only HAL resources such as telemetry/alerts/collisions/alarms where accessible.
  • Generates a flattened current-status path inventory with observed types/counts/enums/freshness plus a comparison against fields already mapped by the loaded upstream integration.
  • Sanitizes VIN/vehicle/account identifiers, tokens/secrets, exact GPS coordinates, HAL/picture URLs and known identifiers embedded in strings; samples are bounded before export.
  • Adds browser-local Download JSON and Copy Markdown actions. No public /config/www report or persistent audit file is created.
  • Keeps the audit card internal to the generated dashboard so the normal Add Card picker still exposes only the two intended public Hero cards.
  • Adds the new audit UI to the full 18-language frontend catalog and documents the API/reference/evidence contract.
  • Bumps the package and consolidated frontend resource to 0.6.0-beta.17.
  • Remains a prerelease on develop; real Home Assistant runtime/API/privacy acceptance is required before promotion.

0.6.0-beta.16 browser picker and Dual-Energy label minifix

  • Fixes the real Home Assistant Add Card picker regression found during beta.15 owner browser QA: internal Trip, Charge, Charge Curve, GPS and Fuel History components remain registered as custom elements for the generated dashboard but no longer publish window.customCards picker metadata.
  • Keeps the beta.15 top-level picker cleanup as defense-in-depth for an in-session upgrade from an older frontend that already registered internal cards.
  • Shortens the two Dual-Energy Hero range captions to the shared localized Range label because the adjacent Battery and Fuel headings already provide the energy-domain context; this also reduces long-label pressure in languages such as French.
  • Adds regression coverage that internal component modules must never publish picker metadata themselves.
  • Bumps package and consolidated frontend resource to 0.6.0-beta.16 and cache-busts only the frontend modules changed by this minifix.
  • Remains a prerelease on develop; main stays unchanged until exact-candidate owner browser acceptance is complete.

0.6.0-beta.15 DS4 tester-feedback hardening candidate

  • Unifies the Dual-Energy Hero into one stacked Battery/Fuel layout at all card widths and keeps both electric and fuel ranges permanently visible.
  • Extends the Hero climate control into a guarded, upstream-confirmed START/STOP state machine: START cannot be immediately toggled back, active climate enables STOP only after confirmation, and STOP uses a distinct pending state until the vehicle reports inactive.
  • Removes redundant Charging · Plugged in wording, keeps live EV efficiency estimates out of the Hero, and only shows live fuel consumption when a fresh upstream fuel_consumption_instant value exists.
  • Uses the temperature badge as a recent-vehicle-data freshness indicator rather than claiming a persistent Stellantis connection state.
  • Applies SOH to the configured nominal traction-battery fallback when no trustworthy upstream capacity exists and adds an optional per-vehicle nominal fuel-tank fallback for fuel-capable vehicles.
  • Reworks Hybrid Trip History to the compact six-column primary table, removes redundant motorization details, groups start/end mileage, SOC, electric range, fuel level and fuel range, and keeps absolute kWh/l in expanded details without repeating normalized consumption.
  • Adds restart-safe canonical fuel/refuel history with semantic deduplication, stable source timestamps, odometer-at-refuel, direct-or-estimated refill liters with provenance, and a since-last-refuel summary for distance, driving time, average speed and guarded average fuel consumption.
  • Hardens charging reconstruction against transient out-of-sequence SOC drops such as 67 → 0 → 68 so rejected samples cannot poison canonical session SOC/energy.
  • Keeps only the compact and Dual-Energy Hero cards visible in Home Assistant's Add Card picker while internal Trip/Charge/GPS/Fuel cards remain available to the generated dashboard.
  • Completes the tank-capacity translation additions across the full 18-language Home Assistant catalog and fixes the Italian catalog JSON structure.
  • Adds and updates regression coverage for the DS4 Hybrid fixture, electric/fuel endpoint detail data, refuel summaries, Hero behavior, capability-driven configuration and beta.15 frontend cache/version contracts.
  • Bumps package and consolidated frontend resources to 0.6.0-beta.15; all changed frontend modules and shared localization dependencies use beta.15 cache keys.
  • Remains a prerelease on develop; main stays unchanged until exact-candidate runtime acceptance is complete.

SV Dashboard uses semantic package versions. develop is the integration/acceptance branch; main represents the last explicitly accepted publishable state.

0.6.0-beta.14 server-history lifecycle candidate

  • Adds the SV-owned historical /trips transport on top of the already loaded Stellantis Vehicles authenticated client/session instead of relying on a missing upstream history method or introducing a second auth stack.
  • Makes upstream vehicle resolution resilient to Home Assistant startup ordering with strict VIN matching, loaded-runtime preference and bounded background reacquisition while local history remains available as fallback.
  • Rejects upstream runtime objects already marked _shutting_down so SV Dashboard does not bind to stale clients during Stellantis Vehicles reload/unload.
  • Adds a temporary, narrowly scoped compatibility recovery for stranded closed upstream HTTP sessions/connectors: an already-dead session reference can be cleared so upstream recreates its own session, connector-only closure uses upstream cleanup, and explicit closed-session/connector failures get at most one request retry.
  • Preserves upstream ownership of OAuth, credentials and the long-lived HTTP session; SV Dashboard does not create a parallel Stellantis authentication/session stack.
  • Adds focused Python transport/runtime-resolution contract tests and executes the history transport contract suite in the normal Validate workflow.
  • Keeps the frontend module content keys from beta.13/beta.12/beta.10/beta.7 because this candidate changes backend/history lifecycle code only; the package version itself advances to 0.6.0-beta.14 for an immutable HACS/runtime candidate.
  • Remains a prerelease on develop; main stays unchanged until exact beta.14 runtime acceptance is complete.

0.6.0-beta.13 trip-history EV cleanup and energy recovery

  • Hides the redundant Powertrain / Antrieb column for single-energy vehicles; pure EV and thermic trip tables no longer repeat the already-known vehicle powertrain on every row.
  • Keeps per-trip EV / Hybrid / ICE classification in the Dual-Energy/Hybrid trip table, where the distinction is meaningful.
  • Restores missing electric kWh and kWh/100 km in canonical trip history when Stellantis server history omits electric energy but SV Dashboard has a strongly matched, positive locally observed SOC/capacity-derived trip result.
  • Never overwrites real server electric telemetry and never invents energy from missing, unchanged or zero local SOC-derived values.
  • Recomputes kWh/100 km from the canonical server distance after a successful local-energy enrichment and records the local provenance.
  • Adds regression coverage for both capability-gated powertrain display and conservative electric-energy enrichment.
  • Cache-busts the changed Trip History card and bumps the package/frontend resource to 0.6.0-beta.13; unchanged beta.12/beta.10/beta.7 frontend modules retain their existing content keys.
  • Remains a prerelease on develop; main stays unchanged pending explicit acceptance.

0.6.0-beta.12 Hybrid dashboard integration and tester-feedback minifix

  • Makes the generated Vehicle/LIVE Hero capability-driven: vehicles exposing both electric and fuel data now use the native Dual-Energy Hero automatically, while EV/thermic-only vehicles retain the compact universal Hero.
  • Keeps the Dual-Energy Hero independently addable to any Home Assistant dashboard; clicking its vehicle picture continues to open the generated SV vehicle dashboard.
  • Clarifies Hero preconditioning as a guarded START-only convenience action. The inactive icon is neutral, a pending START is visualized, duplicate START presses are blocked for 90 seconds while upstream state catches up, and the actual mapped preconditioning state drives the active styling. Explicit START/STOP controls remain in the generated dashboard Quick Actions.
  • Simplifies the main Hybrid trip-history table to Date | Duration | Distance | Avg. km/h | kWh/100 km | l/100 km; absolute kWh, trip type, SOC, mileage, fuel level/range/litres and maximum speed remain in expandable details.
  • Adds canonical charge-session mileage to expanded Charging History details where available and removes redundant empty reconstructed charge-duration/type rows already explained by the reconstruction hint.
  • Applies the reviewed French package-entity wording for current-trip energy and SV-recorded trip/charge results while retaining the semantically correct Puissance de recharge actuelle for current charge power.
  • Adds an anonymized real DS4 Hybrid two-trip fixture to regression coverage, including a fuel-using trip with unchanged electric SOC so the parser/UI cannot silently invent electric energy.
  • Bumps package and top-level frontend resources to 0.6.0-beta.12 for clean external HACS validation in issue #2.
  • Remains a prerelease on develop; main stays unchanged until the DS4 Hybrid/French beta acceptance is complete.

0.6.0-beta.11 HACS update-channel verification minifix

  • Bumps the package and top-level Home Assistant frontend resource version to 0.6.0-beta.11 to create a clean beta update event for external validation in #2/#41.
  • Documents that HACS beta testers must enable the per-repository Pre-release switch so HACS resolves the semantic v0.6.0-beta.N prerelease tag instead of falling back to a develop commit SHA.
  • Records the HACS 2.0.x external release-link 404 as an upstream URL-construction limitation (/releases/<tag> instead of GitHub's /releases/tag/<tag>); SV Dashboard does not publish a fake stable release or malformed tag as a workaround.
  • Keeps all beta.10 Hybrid, Hero, entity and translation behavior unchanged; unchanged internal frontend modules deliberately retain their validated beta.10/beta.7 cache keys.
  • Remains a prerelease on develop; main stays unchanged until the DS4 Hybrid/French beta acceptance is complete.

0.6.0-beta.10 Hybrid/i18n external validation candidate

  • Localized the package-owned Dashboard status entity through the normal Home Assistant 18-language translation contract.
  • Applied the DS4 tester's reviewed French entity wording, including clarified current-trip energy and SV-local trip/charge result semantics.
  • Moved the owner-approved German Dual-Energy wording (Kraftstoff, Kraftstoffreichweite, Verbraucht) into the canonical frontend source catalog rather than another runtime patch layer.
  • Carries the public compact-vs-Dual-Energy card-picker naming cleanup already merged on develop.
  • Refreshed README, dashboard/features, localisation, capability and vehicle-card documentation and added DE/EN/FR Dual-Energy Hero examples.
  • Documents native More Info/history interactions and the Hybrid Idle/Driving/Charging data contract.
  • Explicitly distinguishes battery-side SOC/time estimates from EVSE/grid meter readings.
  • Documents how testers/users can share alternative Lovelace/YAML layouts plus screenshots as concrete feature-design input.
  • Cache-busts the changed shared i18n runtime and every consuming frontend module so beta upgrades cannot retain stale beta.7/beta.9 translation code.
  • Remains a prerelease on develop; promotion to main waits for the real DS4 Hybrid/French external test in issue #2.

0.6.0-beta.9 native Hero interactions and i18n audit

  • Replaced the temporary YAML/button-card interaction prototype with native Lit controls inside the package-owned Dual-Energy Hero; no nested custom cards are introduced by the Hero itself.
  • Made vehicle temperature, battery/fuel percentages, and the currently displayed range/trip-energy/charge-power/fuel-consumption metric open Home Assistant's native More Info/history dialog.
  • Made the vehicle image navigate to the generated vehicle dashboard via the published dashboard_url_path while preserving the large owner-approved Hero presentation.
  • Kept Battery and Fuel on the native symmetric two-column grid rather than carrying prototype pixel-offset workarounds into product code.
  • Audited the card localisation path: automatic HA locale and optional explicit card language share the same context, the editor fallback no longer hard-codes English Vehicle N, and the climate control reuses the existing translated dashboard climate label instead of hard-coded AC accessibility text.
  • Strengthened frontend localisation regression coverage across the existing 18-language catalog contract and applied the two reviewed French terminology corrections from external tester PR #20.
  • Bumped the package/frontend resource to beta.9 and cache-busted only the changed Dual-Energy Hero module; unchanged package modules remain pinned to their existing beta.7 content URLs.

0.6.0-beta.8 owner Hero polish

  • Removed the redundant visible AC caption below the climate icon while keeping the existing mapped preconditioning control and accessibility label intact.
  • Enlarged the vehicle image another step across the responsive Hero layouts without changing the Battery/Fuel grid or state logic.
  • Preserved the beta.7 Idle / Driving / Charging data contract unchanged; functional runtime acceptance of those states remains pending.
  • Bumped the package frontend resource to beta.8 and cache-busted the changed Dual-Energy Hero asset while leaving unchanged beta.7 modules/dependencies pinned to their existing content URLs.

0.6.0-beta.7 dynamic Dual-Energy hero

  • Enlarged the vehicle hero and reduced unused whitespace in the wide Battery/Fuel overview.
  • Added mapped preconditioning/AC control at the top-left and live vehicle temperature at the top-right.
  • Battery presentation is state-driven: green EV range while idle, blue current-trip energy in kWh while driving, and a blue pulsing charge-power view while charging.
  • The driving hero deliberately uses current-trip energy, not a synthesized kWh/100 km value.
  • Hybrid Fuel can show current upstream l/100 km while driving only when that value was refreshed during the current drive; otherwise Fuel range remains visible.
  • Preserved neutral missing-Fuel values for EV owner QA and extended all 18 frontend languages for the new hero labels.

0.6.0-beta.6 owner visual QA

  • Fixed dual-energy hero clipping when Home Assistant placed the card in a narrow grid cell.
  • The card now requests the native 12-column wide grid size and responds to its own container width instead of the browser viewport.
  • EV owner acceptance keeps the fuel side visible with neutral missing values rather than hiding or fabricating telemetry.
  • Enlarged the vehicle presentation and added neutral battery/fuel percentage fill bars.

0.6.0-beta.5 candidate hardening

  • Removed the browser-time unpkg.com dependency; Lit is pinned and bundled locally with its license notice.
  • Added stable VIN-backed ConfigEntry identity/recovery and a powertrain fallback override that is available only when automatic detection remains unknown.
  • Added live kWh/100 km trip consumption, Hybrid/Fuel-aware local fallback history and fuel telemetry in trip notifications.
  • Centralized the new Hybrid/Fuel card strings into the shared 18-language frontend catalogs.
  • Hardened refuelling detection against single-sample fuel-level spikes and made charge-power formatting locale-aware.
  • Renamed remaining internal Ec3... implementation classes to neutral Sv... names without changing public entity identity.

Unreleased — 0.6.0-beta.1 migration line

Migration

  • Created SV Dashboard as the successor to the former e-C3 Dashboard project.
  • Introduced the new Home Assistant domain sv_dashboard and component path custom_components/sv_dashboard/.
  • Migrated the validated predecessor develop source baseline from exact SHA 0a2873611d92a36eca4c41d165ea1fc1462caa50.
  • Replaced active product/runtime identifiers with SV Dashboard naming rather than carrying the old integration domain forward.
  • Moved active migration, DS4 beta, notification QA, LTS and backlog tracking into the new SV Dashboard repository.

Added / expanded

  • Multi-brand vehicle naming and multi-vehicle behavior.
  • Capability-based handling for electric, hybrid and combustion vehicles, with defensive hydrogen/unknown handling.
  • Vehicle-specific battery-capacity/residual resolver with no generic fixed e-C3 capacity.
  • 18-language Home Assistant, frontend and backend message matrix: de, en, fr, it, es, pt, nl, da, nb, sv, fi, pl, cs, sk, hu, ro, sl, hr.
  • Structural CI checks for Home Assistant translation keys/placeholders, frontend catalogs, backend messages and locale fallbacks.
  • New repository description/topics and HACS metadata required for repository validation.
  • GPL-3.0-or-later licensing and explicit trademark/affiliation notice.
  • Generalized vehicle capability documentation and explicit tested/beta/expected compatibility status.

Documentation

  • Rebuilt README for SV Dashboard, the new sv_dashboard domain and the migration/beta state.
  • Updated installation, architecture, entity catalog, dashboard features, localisation, notification/wake-up, vehicle-card, release and branch workflow documentation.
  • Retained anonymized screenshots as UI examples.
  • Kept predecessor e-C3 observations only where they are useful as clearly labelled historical/reference vehicle evidence.

Validation status

  • Source/frontend test suite migrated and passing on the SV code line.
  • 97 predecessor regression tests migrated; additional HA translation-structure coverage added during migration.
  • Hassfest passing on validated migration commits.
  • HACS repository validation passing after repository metadata/license setup.
  • Owner live e-C3 regression on the new SV integration is still pending.
  • DS4 Hybrid/French external beta is still pending in issue #2.
  • Notification real-event QA continues in issue #3.
  • Mileage/LTS investigation continues in issue #4.

No stable SV Dashboard release has been promoted to main yet.

Historical predecessor baseline — e-C3 Dashboard 0.5.53 (2026-08-30)

The migration source inherited the predecessor project's mature feature set, including:

  • generated Vehicle, Charging, Statistics, Trips, GPS, Wake-up, Notifications and System views;
  • reusable vehicle overview/LIVE hero card;
  • canonical Stellantis trip/charge/GPS history and data-quality handling;
  • package-owned notification thresholds, quiet hours and recipient controls;
  • manual history synchronization, wake-up and notification-test actions;
  • long-term-statistics presentation and trailing consumption metrics;
  • a single package-owned frontend resource model;
  • restart-safe local history/notification state;
  • multi-entry config-entry mapping without household-specific VIN/entity IDs.

Historical development detail remains available in the predecessor repository/Git history. New work is tracked only in CaneTLOTW/sv_dashboard.