Skip to content

v0.10.0

Choose a tag to compare

@joszz joszz released this 13 Oct 11:27
· 239 commits to main since this release
Immutable release. Only release title and notes can be modified.
8e27eac

Upgrade Notes

  • Four database migrations run automatically at API startup: AddPushSubscriptionExcludedCategories, AddChargingDetails, AddCommutePlaces and AddTripSpeedFigures. No action needed. Every trip that already has a purpose is marked as chosen by hand, so the automatic commute marking never changes it (#451, #452, #455, #459)
  • Update the API, the Worker and the web interface together. Statistics read a new /stats/daily endpoint that replaces /history, and the API's readiness check listens for a heartbeat from the Worker. The all-in-one image always runs all of them from the same build (#454, #459)
  • Open Settings > Notifications once on each device that gets push. Switching a notification type off now stops its push (#451), but the server learns which types a device switched off only when that device opens its notification settings. Until then it keeps getting every type, as it did before.
  • Five new notification types are on by default: Low 12V battery, Low fuel, No data from the car, MG sign-in failed and Charging interrupted. Untick them per device under Settings > Notifications, or set AUX_BATTERY_LOW_VOLT, LOW_FUEL_PERCENT or STALE_DATA_HOURS to 0 to switch that alert off for everyone (#451, #452)
  • The API asks GitHub for the latest release once a day, to show the update notice in the footer. Only the release number is fetched, and nothing about your car or account is sent. Set UPDATE_CHECK_ENABLED=false to stop it (#454)
  • Two API endpoints are removed: GET /api/vehicles/{vin}/trips/last, which nothing used, and GET /api/vehicles/{vin}/history, replaced by /stats/daily. This only matters to your own scripts that call the API directly (#453, #459)
  • About 10 minutes after the Worker starts, it works out the top and average speeds of the trips saved before this release, so a year of statistics no longer has to read each trip's GPS fixes. It runs once, in the background (#459)
  • The Unraid template has seven new fields: AUX_BATTERY_LOW_VOLT, LOW_FUEL_PERCENT, LOW_EV_PERCENT, STALE_DATA_HOURS, UPDATE_CHECK_ENABLED, RATE_LIMIT_GLOBAL_PER_MINUTE and DEBUG_LOGS. They are all optional, so an existing container keeps running; update the template to see them (#451, #452, #454)

Features

  • Statistics beyond 90 days. Statistics have their own period, apart from the map's: the last 7, 30 or 90 days, this or last month, this or last year, or custom dates up to ten years. Charts show a point per day up to 92 days, per week up to a year and per month beyond that, and periods longer than a month get a table of trips, distance and energy (or fuel) per month, with a total. Each day is counted from every reading in your own time zone, so a day's energy peak is no longer missed. A stored choice of 7, 30 or 90 days carries over (#459)
  • Commutes are marked in the trip log automatically. Set home and one or more work places under Home and work, and every trip between home and a work place becomes a commute: the trips already in the log, and each new one as it is saved. Pick a place on a map or click a trip's start or end address, and set its radius from 50 to 1000 m (250 m by default). A car has one home. A purpose you chose yourself is never overridden, and the positions stay in your own database (#455, #460)
  • New alerts: Low 12V battery (below AUX_BATTERY_LOW_VOLT, 12.0 V, on several polls in a row while parked), Low fuel (below LOW_FUEL_PERCENT, 15%, on hybrids and plug-in hybrids), No data from the car (nothing for STALE_DATA_HOURS, 48 hours) and MG sign-in failed (once per outage). The low EV battery level is now LOW_EV_PERCENT (20%) (#451)
  • Charging interrupted: a charge that stops on a named fault (charger fault, port too hot, plug not fully in, voltage mismatch) sends its own notification with the reason, instead of "Charging complete" (#452)
  • A push switch per device: Settings > Notifications (was Notification types) has "Push notifications on this device". Ticking a type no longer subscribes or unsubscribes, so it never brings up a permission prompt (#451)
  • The HV battery card shows the charge target and which charge current limit is in use, and the charging session card shows when the last charge started. The BMS status, schedule mode and battery heating schedule are worded instead of shown as gateway codes (#452)
  • Readiness check at /api/health for uptime monitors: it reports the database, the MQTT broker and the Worker, answers 200 while all are up and 503 when one is down, and needs no sign-in. The Worker image's health check now reads a heartbeat, so a Worker that lost the broker or the database shows unhealthy instead of merely running, and the all-in-one image checks /api/health with a 120 s start period (#454)
  • Update notice: the footer links to the release page when a newer GarageStack is out (#454)

Bug Fixes

  • Switching a notification type off now stops its push. It used to hide the type in the panel only: every device still got every alert pushed (#451)
  • Turning push on works on a fresh device. It used to subscribe only when the number of unticked types changed, so turning push on meant unticking and re-ticking a type (#451)
  • No more hourly repeats of tyre and low EV alerts on a sleeping car. They now go out once per report from the car, and a message the broker replays on reconnect cannot set them off again (#451)
  • Scheduled climate retries when the car is busy. After a night's sleep the car could refuse the climate command with "Other remote command in progress". The schedule now sends it again after 30 seconds, up to three times, so a run starts at most about three minutes late (#460)
  • A BEV gets the daily energy chart. It was only offered to cars that burn fuel; every known drivetrain now has it, in kWh on a plug-in and litres on a plain hybrid (#452)
  • The Worker no longer warns on every message for the gateway's charging stop reason, charge target, charge current limit and last charge start (now stored), or for topics it leaves out on purpose (#452)
  • A language set on your account on another device now applies on first load, instead of after a reload (#456)
  • The notification buttons name the unread count for screen readers ("Notifications, 2 unread") (#456)
  • The web manifest is served as application/manifest+json instead of application/octet-stream (#456)
  • The install prompt no longer promises offline use, which the app does not offer; it now says "Opens in a tap from your home screen" (#458)
  • The API notices a broker that came back before the next command is sent, and Docker's 10-second /health probe no longer writes an Information line to the log every time (#454)

Performance

  • The first load is smaller: the app's entry script goes from 92.0 to 83.5 kB gzipped and its stylesheet from 20.0 to 17.4 kB. Dutch loads only when it is the chosen language, and the map filters' dropdown styles load with the map filters (#456)
  • The dashboard opens a connection to the map tile server while it loads, when you are already signed in (#456)
  • Each trip keeps its top and average speeds, so trip summaries over a long period no longer read every trip's GPS fixes. A year of daily statistics at one reading per minute takes about 420 ms (#459)

Documentation

  • The README gains a Monitoring section and a note on the update notice, updating a Compose install reads git pull, docker compose pull, docker compose up -d --build, and the dashboard cards and alert lists are current (#452, #454)
  • CONFIGURATION.md explains that settings set by their .NET key need a docker-compose.override.yml, with an example, and covers the new alert levels and UPDATE_CHECK_ENABLED (#451, #452, #454)
  • DEMO.md has the right trip count and history span, and the docs say the 90-day floor on TELEMETRY_FULL_DETAIL_DAYS is now there for the map alone (#452, #459)
  • RELEASING.md syncs the Community Apps template through a pull request in that repository (#461)

Internal

  • The demo covers 400 days and reports a daily energy counter, so the demo site shows last year, the month table and the energy chart (#459)
  • One guarded reconnect in the MQTT publisher, shared by publishing and the health check (#454)
  • Remove unused translation keys (#452)

Dependencies

  • Development tools: vue-tsc 3.3.12 (#457)

Full Changelog

v0.9.2...v0.10.0: v0.9.2...v0.10.0