Releases: teslamate-org/teslamate
Release list
v4.1.1
Sorry for the trouble. Days of testing, and then we squeeze in one more nice feature right before dinner and release it — yeah, I can hear it myself as I type this.
Hotfix for 4.1.0, which crashes in a startup loop on installations with MQTT enabled and no MQTT_NAMESPACE set. Upgrading is recommended for all MQTT users.
Improvements and bug fixes
- fix(mqtt): don't require the namespace option in VehicleSubscriber (#5611 - @JakobLichterfeld)
[4.1.0] - notes still valid
We've fixed small bugs that had been around for years, implemented several feature requests, integrated the latest version of Grafana, and completely overhauled numerous areas within TeslaMate. As we fixed the phase detection during AC charges, existing charging processes are recomputed once during the upgrade migration: previously empty or zero charge_energy_used values (short or mixed AC sessions) gain values.
The first start after the upgrade can take a few minutes longer on databases with years of history and slow hardware; charge costs are deliberately not changed retroactively (#5592).
And Home Assistant MQTT auto discovery landed (opt-in).
Note for manual Home Assistant configurations: The documented manual mqtt_sensors.yaml now uses state_class: total_increasing for the charge_energy_added sensor (#5543). If you re-sync your manual YAML, Home Assistant will treat the per-charge resets as meter cycles, which changes the long-term statistics behavior (e.g. in the Energy dashboard).
To make your TeslaMate experience even better, we have made 112 improvements.
Enjoy!
New features
- feat: add service mode to webview and reduce log when car is Unlocked at service mode (#5289 - @NirKli)
- feat(mqtt): add service_mode (#5289 - @NirKli)
- feat: add Sun roof and individual window status via MQTT (#5393 - @nebhale)
- feat: show and color the software update icon through the update lifecycle (#5487 - @NirKli)
- feat(mqtt): add download_perc and install_perc for pending sw install (#5487 - @NirKli)
- feat: link the software update icon to the notateslaapp release notes (#5490 - @NirKli)
- feat: add fullscreen mode to vehicle summary map (#5495 - @hakong)
- feat(web): expose VIN in car summary ( #5556 - @Helvio88, @magrathean-uk)
- feat(mqtt): add opt-in Home Assistant MQTT discovery (#5543 - @brianmay, @JakobLichterfeld)
Improvements and bug fixes
- fix(webview): show charging finish time in browser local time (#5436 - @Ashok28)
- fix(vehicle): use streaming-aware interval when a drive starts (#5417 - @evanclan)
- fix(mqtt): retry failed value publications (#5429 - @ciyahu)
- fix: redact Tesla API tokens from logs (#5475 - @magrathean-uk)
- fix(vehicle): back off for 15 minutes on Fleet API
EXCEEDED_LIMITresponses instead of retrying every 10-30s (#5476 - @hossamnagy) - refactor: send TOKEN as Bearer header via FleetAuth middleware (#5470 - @jlestel)
- fix: honor DATABASE_USER/DATABASE_PASS with DATABASE_SOCKET_DIR (#5503 - @mvanhorn)
- fix(import): accept fractional TeslaFi battery levels (#5513 - @magrathean-uk)
- fix(cars): enforce non-null VINs (#5512 - @magrathean-uk)
- fix(mqtt): return publish errors without crashing (#5514 - @magrathean-uk)
- fix(geofences): increase cost precision (#5508 - @magrathean-uk)
- fix: reconnect stream when a drive resumes after mid-drive offline phase to avoid missing elevation (#5535 - @JakobLichterfeld)
- refactor(nix,postgres): provision database declaratively, connect via socket (#5337 - @JakobLichterfeld)
- fix(nix,maintenance): read RELEASE_COOKIE without sourcing the env file (#5337 - @JakobLichterfeld)
- fix(nix,postgres): set role password safely for any value (#5337 - @JakobLichterfeld)
- fix(nix): drop schemas in the configured database during restore (#5337 - @JakobLichterfeld)
- fix(nix,grafana): disable the periodic plugin update check (#5337 - @JakobLichterfeld)
- feat(import): continue past malformed rows and resume completed TeslaFi files- (#5552 - @magrathean-uk)
- fix(vehicle): update geofence while driving with streaming API (#5515 - @magrathean-uk)
- fix(vehicle): identify base Model 3 from model year 2022 as RWD instead of SR+ (#5551 - @magrathean-uk)
- fix(mqtt): avoid blocking startup on retained cleanup (#5549 - @magrathean-uk)
- feat: use Grafana 13.1.1 (#5559 - @swiffer)
- fix(performance): use existing indexes for last-inserted / latest complete position lookups (#5438 - @swiffer)
- fix(geocoder): resolve state for Australian territories (#3868 - mattew124)
- refactor(vehicles): make the geofence name lookup in the charging log total (#5599 - @JakobLichterfeld)
- feat: use Grafana 13.1.3 (#5587 - @swiffer)
- fix(charging): fall back to charger_power when phase detection fails (#5592 - @JakobLichterfeld)
- fix(charges): enforce positive charger phases at the database (#5592 - @JakobLichterfeld)
- fix(charging): recalculate charge_energy_used for existing processes (#5592 - @JakobLichterfeld)
Build, CI, internal
- build(nix): update mixFodDeps hash in nix builds (954e8739 - @JakobLichterfeld)
- build(deps): bump launch-editor from 2.13.2 to 2.14.1 in /website (#5426)
- build(deps): update flake.lock (#5427)
- build(deps): bump webpack-dev-server from 5.2.4 to 5.2.5 in /website (#5445)
- chore: add .codegraph to .gitignore (#5440 - @JakobLichterfeld)
- ci: speed up check_linting by running treefmt in a lean app (#5440 - @JakobLichterfeld)
- sec(deps): add ws override to version 8.21.0 in /website (#5446 - @JakobLichterfeld)
- build(deps-dev): bump esbuild from 0.28.0 to 0.28.1 in /assets (#5444)
- sec(deps): add joi override to version 17.13.4 in /website (#5448 - @JakobLichterfeld)
- build(deps): update flake.lock (#5449)
- build(deps): bump the actions-deps group across 3 directories with 9 updates (#5469)
- build(deps): bump ex_cldr_plugs from 1.3.4 to 1.4.0 (#5465)
- build(deps): bump react and react-dom from 19.2.6 to 19.2.7 in /website (#5466)
- build(deps): bump @geoman-io/leaflet-geoman-free from 2.19.3 to 2.20.0 in /assets (#5464)
- build(deps-dev): bump sass from 1.100.0 to 1.101.0 in /assets (#5462)
- build(deps): bump plug_cowboy from 2.8.1 to 2.9.0 (#5463)
- build(deps): bump floki from 0.38.3 to 0.38.4 (#5461)
- test: harden async waits (#5456 - @magrathean-uk)
- build(deps): update flake.lock (#5477)
- ci: sign published images with SLSA provenance + SBOM attestations (#5380 - @oivindoh)
- fix(ci): add artifact-metadata permission for workflows as it is essential for generating attestations (#5484 - @JakobLichterfeld)
- build(deps): update flake.lock (#5498)
- test: reuse API snapshots across paired fetches (#5510 - @magrathean-uk)
- build(deps): bump tesla from 1.14.1 to 1.20.0, migrate to Tesla.client/2 and update mix nix hash (#5468 - @JakobLichterfeld)
- build(deps): bump websocket-driver from 0.7.4 to 0.7.5 in /website (#5516)
- build(deps): update flake.lock (#5522)
- build(deps): bump svgo from 3.3.3 to 3.3.4 in /website (#5536)
- build(deps): bump shell-quote from 1.8.4 to 1.10.0 in /website (#5537)
- build(deps): bump webpack-dev-server from 5.2.5 to 5.2.6 in /website (#5538)
- build(deps): bump body-parser from 1.20.5 to 1.20.6 in /website (#5539)
- build(deps): bump fast-uri from 3.1.2 to 3.1.4 in /website (#5540)
- build(deps): bump immutable from 5.1.5 to 5.1.9 in /assets (#5541)
- ci(treefmt): stop treefmt.toml from drifting out of sync with the flake (#5545 - @JakobLichterfeld)
- style(nix): format Nix code with nixfmt instead of the archived nixpkgs-fmt (#5545 - @JakobLichterfeld)
- build(deps): update flake.lock (#5544)
- build(deps): bump phoenix_live_view from 0.20.17 to 1.2.8 and migrate accordingly (#5580 - @JakobLichterfeld)
- build(deps): bump all @Docusaurus from 3.10.1 to 3.10.2 in /website (#5571)
- build(deps): bump react and react-dom from 19.2.7 to 19.2.8 in /website (#5574)
- build(deps): bump postcss from 8.5.15 to 8.5.25 in /website (#5582)
- build(deps): bump the actions-deps group across 4 directories with 11 updates (#5576)
- test(grafana): guard latest-position dashboard queries against missing partial-index predicate (#5581 - @magrathean-uk)
- build: use Elixir 1.20.2 OTP 29 (#5579 - @swiffer)
- ci: derive Elixir cache keys from the toolchain and MIX_ENV (#5595 - @JakobLichterfeld)
- fix(test): override meck to 1.2 for OTP 29 compatibility (#5598 - @swiffer)
- build(nix): reduce the manually pinned hashes to one and automate it (#5593 - @JakobLichterfeld)
- ci: let Dependabot pull requests refresh the Nix hashes (#5593 - @JakobLichterfeld)
- ci: verify Nix hashes on all dependency pull requests (#5593 - @JakobLichterfeld)
- ci: let maintainers run CI on pull requests touching .github (#5593 - @JakobLichterfeld)
- build(deps): bump postgrex from 0.22.2 to 0.22.3 (#5570)
- build(deps): bump js-yaml from 4.2.0 to 4.3.1 in /website (#5597)
- build(deps): bump brace-expansion from 1.1.14 to 1.1.18 in /website (#5596)
- build(deps): bump fast-uri from 3.1.4 to 3.1.5 in /website (#5589)
- build(deps): bump phoenix from 1.7.24 to 1.8.9 and migrate accordingly (#5572 - @JakobLichterfeld)
- build(deps): update flake.lock (#5560)
- build(deps-dev): bump sass from 1.101.0 to 1.102.0 in /assets (#5566)
- build(deps): bump leaflet-control-geocoder from 3.3.1 to 4.0.0 in /assets (#5565)
Dashboards
- feat(grafana): make data health summary actionable (#5526 - @magrathean-uk)
- fix(grafana): drop the Releases panel from the home dashboard to end the CORS proxy dependency (#5548 - @JakobLichterfeld)
- fix(dashboards): filter latest-value position panels on complete rows so they use the partial index (#5438 - @swiffer)
- fix(grafana): Battery Health latest SOC/kWh pa...
v4.1.0
Warning
This release crashes in a startup loop on installations with MQTT enabled and no MQTT_NAMESPACE set. Please use v4.1.1 instead.
We've fixed small bugs that had been around for years, implemented several feature requests, integrated the latest version of Grafana, and completely overhauled numerous areas within TeslaMate. As we fixed the phase detection during AC charges, existing charging processes are recomputed once during the upgrade migration: previously empty or zero charge_energy_used values (short or mixed AC sessions) gain values.
The first start after the upgrade can take a few minutes longer on databases with years of history and slow hardware; charge costs are deliberately not changed retroactively (#5592).
And Home Assistant MQTT auto discovery landed (opt-in).
Note for manual Home Assistant configurations: The documented manual mqtt_sensors.yaml now uses state_class: total_increasing for the charge_energy_added sensor (#5543). If you re-sync your manual YAML, Home Assistant will treat the per-charge resets as meter cycles, which changes the long-term statistics behavior (e.g. in the Energy dashboard).
To make your TeslaMate experience even better, we have made 112 improvements.
Enjoy!
New features
- feat: add service mode to webview and reduce log when car is Unlocked at service mode (#5289 - @NirKli)
- feat(mqtt): add service_mode (#5289 - @NirKli)
- feat: add Sun roof and individual window status via MQTT (#5393 - @nebhale)
- feat: show and color the software update icon through the update lifecycle (#5487 - @NirKli)
- feat(mqtt): add download_perc and install_perc for pending sw install (#5487 - @NirKli)
- feat: link the software update icon to the notateslaapp release notes (#5490 - @NirKli)
- feat: add fullscreen mode to vehicle summary map (#5495 - @hakong)
- feat(web): expose VIN in car summary ( #5556 - @Helvio88, @magrathean-uk)
- feat(mqtt): add opt-in Home Assistant MQTT discovery (#5543 - @brianmay, @JakobLichterfeld)
Improvements and bug fixes
- fix(webview): show charging finish time in browser local time (#5436 - @Ashok28)
- fix(vehicle): use streaming-aware interval when a drive starts (#5417 - @evanclan)
- fix(mqtt): retry failed value publications (#5429 - @ciyahu)
- fix: redact Tesla API tokens from logs (#5475 - @magrathean-uk)
- fix(vehicle): back off for 15 minutes on Fleet API
EXCEEDED_LIMITresponses instead of retrying every 10-30s (#5476 - @hossamnagy) - refactor: send TOKEN as Bearer header via FleetAuth middleware (#5470 - @jlestel)
- fix: honor DATABASE_USER/DATABASE_PASS with DATABASE_SOCKET_DIR (#5503 - @mvanhorn)
- fix(import): accept fractional TeslaFi battery levels (#5513 - @magrathean-uk)
- fix(cars): enforce non-null VINs (#5512 - @magrathean-uk)
- fix(mqtt): return publish errors without crashing (#5514 - @magrathean-uk)
- fix(geofences): increase cost precision (#5508 - @magrathean-uk)
- fix: reconnect stream when a drive resumes after mid-drive offline phase to avoid missing elevation (#5535 - @JakobLichterfeld)
- refactor(nix,postgres): provision database declaratively, connect via socket (#5337 - @JakobLichterfeld)
- fix(nix,maintenance): read RELEASE_COOKIE without sourcing the env file (#5337 - @JakobLichterfeld)
- fix(nix,postgres): set role password safely for any value (#5337 - @JakobLichterfeld)
- fix(nix): drop schemas in the configured database during restore (#5337 - @JakobLichterfeld)
- fix(nix,grafana): disable the periodic plugin update check (#5337 - @JakobLichterfeld)
- feat(import): continue past malformed rows and resume completed TeslaFi files- (#5552 - @magrathean-uk)
- fix(vehicle): update geofence while driving with streaming API (#5515 - @magrathean-uk)
- fix(vehicle): identify base Model 3 from model year 2022 as RWD instead of SR+ (#5551 - @magrathean-uk)
- fix(mqtt): avoid blocking startup on retained cleanup (#5549 - @magrathean-uk)
- feat: use Grafana 13.1.1 (#5559 - @swiffer)
- fix(performance): use existing indexes for last-inserted / latest complete position lookups (#5438 - @swiffer)
- fix(geocoder): resolve state for Australian territories (#3868 - mattew124)
- refactor(vehicles): make the geofence name lookup in the charging log total (#5599 - @JakobLichterfeld)
- feat: use Grafana 13.1.3 (#5587 - @swiffer)
- fix(charging): fall back to charger_power when phase detection fails (#5592 - @JakobLichterfeld)
- fix(charges): enforce positive charger phases at the database (#5592 - @JakobLichterfeld)
- fix(charging): recalculate charge_energy_used for existing processes (#5592 - @JakobLichterfeld)
Build, CI, internal
- build(nix): update mixFodDeps hash in nix builds (954e8739 - @JakobLichterfeld)
- build(deps): bump launch-editor from 2.13.2 to 2.14.1 in /website (#5426)
- build(deps): update flake.lock (#5427)
- build(deps): bump webpack-dev-server from 5.2.4 to 5.2.5 in /website (#5445)
- chore: add .codegraph to .gitignore (#5440 - @JakobLichterfeld)
- ci: speed up check_linting by running treefmt in a lean app (#5440 - @JakobLichterfeld)
- sec(deps): add ws override to version 8.21.0 in /website (#5446 - @JakobLichterfeld)
- build(deps-dev): bump esbuild from 0.28.0 to 0.28.1 in /assets (#5444)
- sec(deps): add joi override to version 17.13.4 in /website (#5448 - @JakobLichterfeld)
- build(deps): update flake.lock (#5449)
- build(deps): bump the actions-deps group across 3 directories with 9 updates (#5469)
- build(deps): bump ex_cldr_plugs from 1.3.4 to 1.4.0 (#5465)
- build(deps): bump react and react-dom from 19.2.6 to 19.2.7 in /website (#5466)
- build(deps): bump @geoman-io/leaflet-geoman-free from 2.19.3 to 2.20.0 in /assets (#5464)
- build(deps-dev): bump sass from 1.100.0 to 1.101.0 in /assets (#5462)
- build(deps): bump plug_cowboy from 2.8.1 to 2.9.0 (#5463)
- build(deps): bump floki from 0.38.3 to 0.38.4 (#5461)
- test: harden async waits (#5456 - @magrathean-uk)
- build(deps): update flake.lock (#5477)
- ci: sign published images with SLSA provenance + SBOM attestations (#5380 - @oivindoh)
- fix(ci): add artifact-metadata permission for workflows as it is essential for generating attestations (#5484 - @JakobLichterfeld)
- build(deps): update flake.lock (#5498)
- test: reuse API snapshots across paired fetches (#5510 - @magrathean-uk)
- build(deps): bump tesla from 1.14.1 to 1.20.0, migrate to Tesla.client/2 and update mix nix hash (#5468 - @JakobLichterfeld)
- build(deps): bump websocket-driver from 0.7.4 to 0.7.5 in /website (#5516)
- build(deps): update flake.lock (#5522)
- build(deps): bump svgo from 3.3.3 to 3.3.4 in /website (#5536)
- build(deps): bump shell-quote from 1.8.4 to 1.10.0 in /website (#5537)
- build(deps): bump webpack-dev-server from 5.2.5 to 5.2.6 in /website (#5538)
- build(deps): bump body-parser from 1.20.5 to 1.20.6 in /website (#5539)
- build(deps): bump fast-uri from 3.1.2 to 3.1.4 in /website (#5540)
- build(deps): bump immutable from 5.1.5 to 5.1.9 in /assets (#5541)
- ci(treefmt): stop treefmt.toml from drifting out of sync with the flake (#5545 - @JakobLichterfeld)
- style(nix): format Nix code with nixfmt instead of the archived nixpkgs-fmt (#5545 - @JakobLichterfeld)
- build(deps): update flake.lock (#5544)
- build(deps): bump phoenix_live_view from 0.20.17 to 1.2.8 and migrate accordingly (#5580 - @JakobLichterfeld)
- build(deps): bump all @Docusaurus from 3.10.1 to 3.10.2 in /website (#5571)
- build(deps): bump react and react-dom from 19.2.7 to 19.2.8 in /website (#5574)
- build(deps): bump postcss from 8.5.15 to 8.5.25 in /website (#5582)
- build(deps): bump the actions-deps group across 4 directories with 11 updates (#5576)
- test(grafana): guard latest-position dashboard queries against missing partial-index predicate (#5581 - @magrathean-uk)
- build: use Elixir 1.20.2 OTP 29 (#5579 - @swiffer)
- ci: derive Elixir cache keys from the toolchain and MIX_ENV (#5595 - @JakobLichterfeld)
- fix(test): override meck to 1.2 for OTP 29 compatibility (#5598 - @swiffer)
- build(nix): reduce the manually pinned hashes to one and automate it (#5593 - @JakobLichterfeld)
- ci: let Dependabot pull requests refresh the Nix hashes (#5593 - @JakobLichterfeld)
- ci: verify Nix hashes on all dependency pull requests (#5593 - @JakobLichterfeld)
- ci: let maintainers run CI on pull requests touching .github (#5593 - @JakobLichterfeld)
- build(deps): bump postgrex from 0.22.2 to 0.22.3 (#5570)
- build(deps): bump js-yaml from 4.2.0 to 4.3.1 in /website (#5597)
- build(deps): bump brace-expansion from 1.1.14 to 1.1.18 in /website (#5596)
- build(deps): bump fast-uri from 3.1.4 to 3.1.5 in /website (#5589)
- build(deps): bump phoenix from 1.7.24 to 1.8.9 and migrate accordingly (#5572 - @JakobLichterfeld)
- build(deps): update flake.lock (#5560)
- build(deps-dev): bump sass from 1.101.0 to 1.102.0 in /assets (#5566)
- build(deps): bump leaflet-control-geocoder from 3.3.1 to 4.0.0 in /assets (#5565)
Dashboards
- feat(grafana): make data health summary actionable (#5526 - @magrathean-uk)
- fix(grafana): drop the Releases panel from the home dashboard to end the CORS proxy dependency (#5548 - @JakobLichterfeld)
- fix(dashboards): filter latest-value position panels on complete rows so they use the partial index (#5438 - @swiffer)
- fix(grafana): Battery Health latest SOC/kWh panels pick the newest UNION row and use
usable_battery_levelon charges (#5438 - @swiffer) - fix(grafana): use local calendar for Statistics period end boundaries (#5562 - @wjsall)
- fix(charge-details): keep power panel in sync with the energy integration (#5592 - @jakobl...
v4.0.1
This release resolves the issue with refresh tokens. This was a community effort: the community conducted research, submitted pull requests, and the maintainers provided test images. We love to see, and we hope, we do not need another quick hotfix in the next days, weeks, ... .
To make your TeslaMate experience even better, we have also made more than 8 other improvements.
Enjoy!
New features
Improvements and bug fixes
- fix: enable HTTP/2 and set TLS to 1.3 for TESLA_AUTH_HOST (#5406 - @kenc420 and @longzheng)
- feat: log Erlang and OTP version (#5397 - @swiffer)
Build, CI, internal
- ci: remove now obsolete ARMv7 buildcache (#5397 - @swiffer)
- build: remove now unused zstd compression tool to reduce docker image size (#5397 - @swiffer)
- build(deps): bump floki from 0.38.1 to 0.38.3 (#5359)
- ci(osv-scanner): don't fail on main pushes and merge queue (#5410 - @JakobLichterfeld)
Dashboards
Translations
Documentation
v4.0.0
This is a breaking change release:
This release resolves the issue of 403 Forbidden errors with Owner API tokens. To accomplish this, we had to drop ARMv7 support, a plan that had been in place for a long time, as it held us back from recent updates. The need for this change in such a short time span was unforeseeable.
To make your TeslaMate experience even better, we have also made more than 4 other improvements.
Enjoy!
New features
Improvements and bug fixes
- fix: restore vehicle_unavailable fallback for streaming fetches to prevent unwanted vehicle online state (#5378 - @ciyahu)
- fix: properly clean up state and delete tokens on sign out (#5379 - @jlestel)
Build, CI, internal
- build: use Elixir 1.19.5 OTP 28 (#5391 - @NirKli and @JakobLichterfeld)
- build: drop ARMv7 support as announced in Changelog of v3.1.0 (#5391 - @JakobLichterfeld)
- build(deps): update flake.lock (#5386)
- build(deps): bump shell-quote from 1.8.3 to 1.8.4 in /website (#5381)
Dashboards
Translations
Documentation
v3.1.0
MCU2 upgraded cars are now fully supported in the main release (please switch from the now deprecated mcu2 branch aka pr-4453).
As always, there have been many improvements. We now use the latest version of Grafana (13.0.1+security-01). The dashboards have been improved in terms of performance, and all dashboards now function as expected even if no geofence exists. BRIN indexes are now maintained to prevent performance degradation over time.
To make your TeslaMate experience even better, we have also made more than 80 other improvements.
Enjoy!
ARMv7 deprecation
This is the last TeslaMate release to include ARMv7 Docker images. To keep up with current Elixir versions, ARMv7 support will be dropped going forward. Please migrate your OS to ARM64 or AMD64 before upgrading to the next release. If this is not possible, please inform us in #5304.
New features
- feat: handle sleep behavior of MCU2 upgraded cars (#4453 -> f58df80 - @micves, @JakobLichterfeld and @brianmay)
Improvements and bug fixes
- feat(webview): Sort vehicles by display_priority (#5188 - @olsoybakk and @swiffer)
- feat(webview): Make icons inherit text color for better contrast in dark mode (#5193 - @olsoybakk)
- feat(webview): Add dark mode support for background and buttons in the map (#5240 - @olsoybakk and @swiffer)
- fix(webview): Prevent rounding of map tiles via Bulma CSS (#5265 - @swiffer)
- perf: ensure BRIN indexes don't degrade over time (#5276 - @swiffer)
- fix: fix folder creation and bash 3.2 compatibility in dashboards.sh (#5233 - @svennergr)
- fix: handle nil tire pressure values in summary view (#5297 - @elemated)
- feat: use Grafana 13.0.1+security-01 (#5324 - @swiffer)
Build, CI, internal
- build(deps): bump ex_cldr from 2.46.0 to 2.47.1 to fix 100% CPU lock when accessing TeslaMate web (#5166)
- ci: migrate runners for arm from buildjet to gha native (#5206 - @adriankumpf)
- ci: limit DevOps workflow runs of type push to branch main to prevent duplicate runs on PR (#5211 - @swiffer)
- build(deps): update flake.lock (#5186)
- fix(nix): update mix dependency hash in nix builds (#5186 - @JakobLichterfeld)
- build(deps): bump actions/stale from 10.1.1 to 10.2.0 (#5162)
- build(deps): bump crate-ci/typos from 1.42.3 to 1.44.0 (#5163)
- build(deps): bump finch from 0.20.0 to 0.21.0 (#5165)
- build(deps): bump immutable from 5.1.4 to 5.1.5 in /assets (#5176)
- build(deps): bump svgo from 3.3.2 to 3.3.3 in /website (#5177)
- ci: bump actions to avoid warnings for node 20 (#5213 - @swiffer)
- ci: ensure fully purging PR related tags for images hosted on GHCR on PR close (#5212 - @swiffer)
- ci: build images for main branch and use buildcache of main as fallback for PR builds (#5212 - @swiffer)
- ci: run Purge PR images workflow only if PR is from our own repo (#5217 - @swiffer)
- ci: for check_paths ensure the job value is retrieved and set as workflow output correctly (#5219 - @swiffer)
- build(deps): bump castore from 1.0.17 to 1.0.18 (#5255)
- build(deps-dev): bump credo from 1.7.16 to 1.7.17 (#5254)
- build(deps): bump floki from 0.38.0 to 0.38.1 (#5249)
- build(deps): bump crate-ci/typos from 1.44.0 to 1.45.0 (#5251)
- build(deps): bump actions/cache from 5.0.3 to 5.0.4 (#5248)
- build(deps): bump dorny/paths-filter from 4.0.0 to 4.0.1 (#5247)
- build(deps): bump ecto_sql from 3.13.4 to 3.13.5 (#5260 - @swiffer)
- build(deps): bump ex_cldr from 2.47.1 to 2.47.2 (#5260 - @swiffer)
- build(deps-dev): bump esbuild from 0.27.3 to 0.27.7 in /assets (#5261 - @swiffer)
- build(deps-dev): bump esbuild-sass-plugin from 3.6.0 to 3.7.0 in /assets (#5261 - @swiffer)
- build(deps-dev): bump sass from 1.97.3 to 1.99.0 in /assets (#5261 - @swiffer)
- build(deps): update packages in /website and remove obsolete overrides (#5266 - @swiffer)
- build(deps): update flake.lock (#5275)
- build(deps): update flake.lock (#5288)
- build(deps): bump docusaurus from 3.9.2 to 3.10.0 in /website (#5302 - @swiffer)
- refactor: replace fake_online_state integer with typed mcu2_online_check atom (#5245 - @brianmay)
- fix: update GitHub Actions configuration for Dependabot to include action directories (#5316 - @swiffer)
- build(deps): bump docker/login-action from 4.0.0 to 4.1.0, docker/build-push-action from 7.0.0 to 7.1.0, actions/upload-artifact from 7.0.0 to 7.0.1, actions/upload-artifact/merge from 7.0.0 to 7.0.1, erlef/setup-beam from 1.18.1 to 1.24.0, actions/cache from 5.0.4 to 5.0.5, actions/cache/restore from 5.0.4 to 5.0.5, actions/cache/save from 5.0.4 to 5.0.5 and crate-ci/typos from 1.45.0 to 1.46.0 (#5317)
- build(deps): bump leaflet-geoman-free from 2.19.2 to 2.19.3 in /assets (#5301 - @swiffer)
- build(deps): bump plug_cowboy from 2.8.0 to 2.8.1 (#5314)
- build(deps-dev): bump esbuild from 0.27.7 to 0.28.0 in /assets (#5312)
- build(deps-dev): bump credo from 1.7.17 to 1.7.18 (#5315)
- sec(deps): add uuid override to version 14.0.0 in /website (#5320 - @JakobLichterfeld)
- build(deps): bump @babel/plugin-transform-modules-systemjs from 7.29.0 to 7.29.4 in /website (#5328)
- build(deps): bump fast-uri from 3.1.0 to 3.1.2 in /website (#5327)
- build(deps): update flake.lock (#5326)
- sec(deps): fix OSV vulnerabilities - update cowlib, decimal, and phoenix to patched versions (#5332 - @brianmay)
- ci: add osv scanner to scan for vulnerabilities (#5332 - @brianmay and @JakobLichterfeld)
- build(deps): update flake.lock (#5338)
- refactor: use frame key when specifying window to improve readability (#5339 - @swiffer)
- build(deps): bump cowlib from 2.16.0 to 2.16.1 (#5342 - @JakobLichterfeld)
- build(deps): bump cowboy from 2.14.2 to 2.15.0 (#5342 - @JakobLichterfeld)
- build(deps): bump plug from 1.19.1 to 1.19.2 (#5342 - @JakobLichterfeld)
- build(deps): bump postgrex from 0.22.0 to 0.22.2 and db_connection from 2.9.0 to 2.10.1 (#5342 - @JakobLichterfeld)
- build(deps): update flake.lock (#5342 - @JakobLichterfeld)
- build(deps): bump webpack-dev-server from 5.2.3 to 5.2.4 in /website (#5343)
- sec(deps): add ws override to version 8.20.1 in /website (#5344 - @JakobLichterfeld)
- feat(nix): update NixOS version to 26.05 (#5350 - @JakobLichterfeld)
- fix(nix): correct URL format for PostgreSQL connection in Grafana 13+ (#5351 - @JakobLichterfeld)
- fix(nix): make grafana.secretKeyFile optional with old insecure grafana default fallback (#5352 - @JakobLichterfeld)
- build(deps): bump ex_cldr from 2.47.2 to 2.47.4 (#5361)
- ci(deps): bump the actions-deps group across 4 directories with 11 updates (#5368)
- build(deps): update flake.lock (#5354)
- build(deps): bump finch from 0.21.0 to 0.22.0 (#5358)
- build(deps): bump react and react-dom from 19.2.5 to 19.2.6 in /website (#5366)
- build(deps-dev): bump sass from 1.99.0 to 1.100.0 in /assets (#5360)
- build(deps): bump @docusaurus/core, /faster and /preset-classic from 3.10.0 to 3.10.1 in /website (#5365)
Dashboards
- fix: use FLOOR/CEIL over ROUND for timestamps used in dashboard links to avoid timeranges becoming to narrow (#5187 - @swiffer)
- fix: ensure Charges / Drives dashboards load correctly if no Geofence exists (#5199, #5335 - @swiffer)
- fix: division by zero in SQL query for cost_mileage in Trips dashboard (#5198 - @DrMichael)
- fix: handle incomplete data correctly in Charging Stats / Statistics / Trips dashboards (#5229 - @swiffer)
- feat: enable timepicker in efficiency dashboard (#5257 - @swiffer)
- fix: ensure low precision mode is used for consumption gross for larger intervals (#5257 - @swiffer)
- feat: improve filters in Statistics dashboard (#5340 - @DrMichael)
- feat: add geofence filter to Charging Stats dashboard with default to all (#5355 - @faekz0r)
Translations
- i18n: updated Catalan default.po (#5180 - @pellix)
- i18n: Update Korean translations in default.po (#5218 - @dongbum)
Documentation
- docs: drop private schema before restore (#5190 - @brianmay)
- docs: remove references to mcu2-upgraded-cars branch (#5371- @brianmay)
- docs: update DROP SCHEMA commands to include IF EXISTS to avoid issues with old installations (@5372- @JakobLichterfeld)
v.3.0.0
Let's start with a quote: "Why do programmers like dark mode? Because light attracts bugs.". Yes, you read that right. TeslaMate Webview now has a dark mode.
As always, lots of improvements have been made. Memory usage has been reduced, while performance has been increased — it sounds too good to be true, but it's the reality.
Battery heating is now also shown on the overview dashboard, and the drives dashboard now always shows the consumption.
To make your TeslaMate experience even better, we have also made more than 52 other improvements.
Enjoy!
📄 License Change Notice
As of PR #5131, TeslaMate has transitioned from the MIT License to the GNU Affero General Public License v3.0 (AGPLv3).
What does this mean for you?
- For Private Users: Nothing changes. You can continue to use, host, and modify TeslaMate for your personal use for free, just as before.
- For the Community: This change ensures that TeslaMate remains open and free. It prevents companies from taking the community's hard work and turning it into a closed-source commercial service without giving back.
- For Developers: If you modify or use TeslaMate, you must now share your source code modifications under the same license.
We believe this step is necessary to protect the project from exploitation and to ensure its long-term sustainability.
Known issues
- We have received reports from users suffering with "No Data" errors when viewing dashboards in Grafana (#5157).
This issue is currently assumed to be instance specific and caused by changes in Grafana (v12.1.1 -> v12.4.0). If you are affected please try saving the TeslaMate datasource by clicking on "Save & test" in Grafana -> Connections -> Data sources -> TeslaMate. - Dashboards containing a Geofence filter fail to load if no Geofence is defined (#5191). While being a regression in Grafana v12.4.0 most likely it can be fixed by defining at least one Geofence. We will provide a workaround in TeslaMate v3.0.1 until it's fixed upstream.
New features
- feat: add optional dark mode feature (#5065 - @wooter)
- legal: relicense under AGPLv3 (#5131 - @JakobLichterfeld)
- legal: add Trademark notice (#5131 - @JakobLichterfeld)
- feat: use Bulma 1 for dark theme and revised it (#5112 - @swiffer)
Improvements and bug fixes
- feat: use Logger instead of IO.puts in DB check (#5050 - @swiffer)
- feat: Increase max_header_value_length to support oauth2-proxy (#5031 - @ultravail)
- perf: Replace positions indexes from BTREE to BRIN to reduce memory usage (#5075 - @ilya-y-synth)
- feat(grafana): disable update checks as version is handled via docker image (#5115 - @fatbasstard)
- perf: use static asset compression via brotli and zstandard to enhance HTTP Compression (#5113 - @swiffer)
- feat: use Grafana 12.4.0 (#4965 - @swiffer)
- fix(vehicle): update state transition to handle offline scenario after a drive end with no network (#5152 - @jlestel)
Build, CI, internal
- build(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /website (#5059)
- build(deps): bump js-yaml from 3.14.1 to 3.14.2 in /website (#5043)
- build(deps): bump crate-ci/typos from 1.39.0 to 1.40.0 (#5055)
- build(deps): bump DeterminateSystems/update-flake-lock from 27 to 28 (#5056)
- build(deps): bump express from 4.21.2 to 4.22.1 in /website (#5060)
- build(deps): update flake.lock (#5027)
- fix(website): Bump node-forge to 1.3.3 to resolve CVE-2025-12816, CVE-2025-66030 and CVE-2025-66031 (#5071 - @JakobLichterfeld)
- chore(website): bump qs to fix CVE-2025-15284 (#5091 - @JakobLichterfeld)
- build(deps): bump react and react-dom from 19.2.0 to 19.2.3 in /website (#5084)
- build(deps): bump nix-community/cache-nix-action from 6.1.3 to 7.0.0 (#5082)
- build(deps): bump actions/cache from 4.3.0 to 5.0.1 (#5077)
- build(deps): bump crate-ci/typos from 1.40.0 to 1.41.0 (#5079)
- build(deps): bump actions/stale from 10.1.0 to 10.1.1 (#5080)
- build(deps): bump lodash from 4.17.21 to 4.17.23 in /website (#5109)
- build(deps): bump lodash and @geoman-io/leaflet-geoman-free in /assets (#5126)
- build(deps): bump react and react-dom from 19.2.3 to 19.2.4 in /website (#5124)
- build(deps): bump crate-ci/typos from 1.41.0 to 1.42.3 (#5123)
- build(deps): bump docker/login-action from 3.6.0 to 3.7.0 (#5119)
- build(deps): bump nix-community/cache-nix-action from 7.0.0 to 7.0.2 (#5122)
- build(deps): bump actions/cache from 5.0.1 to 5.0.3 (#5120)
- build(deps): bump webpack from 5.102.0 to 5.105.0 in /website (#5135)
- feat(nix): use nixos-25.11 (#5062 - @JakobLichterfeld)
- chore(nix): update flake.lock with new dependency revisions (#5062 - @JakobLichterfeld)
- build(nix): use elixir 1.19 to align with dockerfile (#5062 - @JakobLichterfeld)
- chore: reorganize CLI definition to avoid elixir 1.19 warning (#5062 - @JakobLichterfeld)
- build: update db_connection to version 2.9.0 (#5062 - @JakobLichterfeld)
- build: use Elixir 1.19.5 OTP 26 (#5130 - @swiffer, @brianmay and @JakobLichterfeld)
- build(deps): bump qs from 6.14.1 to 6.14.2 in /website (#5140)
- build(deps): update & bump mix deps (#5139 - @swiffer)
- build(deps): bump ex_cldr from 2.42.0 to 2.46.0 (#5053 - @JakobLichterfeld)
- build(deps): bump floki & gettext, remove override on ranch, require elixir 1.19 (#5142 - @swiffer)
- feat(grafana-home-dashboard): change cors proxy (#5143 - @swiffer)
- build(deps): update flake.lock (#5141)
- build(deps): relax requirement for elixir to allow 1.17+ and clarify what is supported (#5145 - @swiffer)
- build(deps): update flake.lock (#5148)
- build(deps): update flake.lock (#5154)
- build(deps): bump ajv in /website (#5149)
- chore(website): bump mimimatch to version 3.1.5 to solve CVE-2026-26996, CVE-2026-27903 and CVE-2026-27904 (#5155 - @JakobLichterfeld)
- chore(website): bump serialize-javascript to version 7.0.3 to solve CWE-96 (#5156 - @JakobLichterfeld)
Dashboards
- feat(overview): show battery heating on overview dashboard as well (#5090 - @kaistian)
- feat: optimize reduced_range query and always show consumption kwh in drives dashboard (#5089 - @swiffer)
Translations
Documentation
- docs(traefik): update to v3.6 as 3.6.1 solves issues with docker 29.0 (#5034 - @JakobLichterfeld)
- docs: fix the formatting of the
DATABASE_SOCKET_DIRdescription (#5026 - @IngmarStein) - docs: fix external image rendering with Traefik SSL (#5074 - @swiffer)
- docs(home_assistant): default tesla_active_route_distance_to_arrival sensor to kilometers (#5086 - @kenni)
- docs: Remove hints to now deprecated Grafana VS Code Extension in contribution guide (#5110 - @swiffer)
- docs: Add reference to TeslaMate Achievements (#5134 - @crstian19)
v2.2.0
As always, there have been many improvements. We now support a proxy for the OpenStreetMap API. If you live in a geo-blocked location, this could simplify your setup. Your tokens are now more secure.
We use the latest dependencies and support PostgreSQL 18 (To update, back up your data and follow the guide. Please note: Volume mounts have changed in PostgreSQL18, see point 4 of the guide.).
We also avoid memory bloat on misconfigured Docker hosts. If your host has limited hardware, this will greatly improve your experience.
The dashboards have been improved in terms of performance, and all dashboards now function as expected when set to miles.
Enjoy it.
New features
- feat: support proxy for openstreet API (#4970 - @jaypark0006)
Improvements and bug fixes
- sec: set tokens to private schema (#4968 -@brianmay)
- build(deps): use elixir 1.18.4, node 22 & debian trixie (#4889 - @swiffer)
- fix: allow using different PostgreSQL port than default when using socket_dir connection (#4979 - @jaypark0006)
- perf: use anti join for short-circuit evaluation when getting non streamed drives (#4990 - @swiffer)
- feat: Add ulimit cap to prevent memory bloat in some misconfigured versions of Docker/containerd Hosts (e.g. on Debian 13) (#5025 - @JakobLichterfeld)
- feat: officially support PostgreSQL 18 (#4890 - @swiffer)
Build, CI, internal
- build(deps): update flake.lock (#4911)
- build(deps): bump @docusaurus/core from 3.8.1 to 3.9.1, @docusaurus/preset-classic from 3.8.1 to 3.9.1, bump dependencies in /website (#4977 - @JakobLichterfeld)
- build(deps): bump actions/checkout from 4.2.2 to 5.0.0 (#4933)
- build(deps): bump actions/cache from 4.2.3 to 4.3.0 (#4972)
- build(deps): bump nixbuild/nix-quick-install-action from 32 to 34 (#4974)
- build(deps): bump docker/login-action from 3.4.0 to 3.6.0 (#4975)
- build(deps): bump crate-ci/typos from 1.34.0 to 1.37.0 (#4976)
- build(deps): bump finch from 0.19.0 to 0.20.0 (#4929)
- build(deps): update flake.lock (#4991)
- build(deps): update flake.lock (#4997)
- build(deps): bump actions/stale from 9.1.0 to 10.1.0 (#5019)
- build(deps): bump @docusaurus/core from 3.9.1 to 3.9.2, @docusaurus/preset-classic from 3.9.1 to 3.9.2 and dependencies in /website (#5020)
Dashboards
- fix: charging stats now correctly calculate cost when set to miles (#4983 - @DrMichael)
- perf: Optimize Grafana query for trip view to leverage indexes more effectively (#4964 - @jaypark0006)
- feat: add shared buffers size to db info dashboard (#4989 - @swiffer)
- fix: cast to numeric instead of integer when converting from km to miles to avoid rounding issues in all dashboards (#4986 - @swiffer)
- fix: correctly determine charging phases in charge detail dashboard (#4988 - @swiffer)
Translations
- i18n: add spanish car location translation (#4892 - @jpizquierdo)
- i18n: add missing italian translations, correct the gender of some words and use more uniform translations (#4920 - @giovaorama)
- i18n: add thai car location translation (#4956 - @tomzt)
- i18n: update Traditional Chinese translations with missing translations and to avoid PRC terms and ensure consistency across UI strings (#4995 - @occultsound)
Documentation
- docs: for new installs, pin postgres container to debian trixie to avoid collation version mismatch (#4901 - @swiffer)
- docs: Update FreeBSD and Debian instructions to use GRAFANA_API_TOKEN for the dashboard writes (#4942 - @uqs)
- docs: rename Home Assistant object_id to default_entity_id to be compliant with latest HA (#4980 - @MrPaulAR)
- docs: explain MQTT in Readme via link to Wikipedia (#4985 - @DanCard)
- docs(dev): provide guidelines for checking dependency updates before merging (#4969 - @JakobLichterfeld)
- docs: add domain prefix to Home Assistant default_entity_id (#5014 - @gym22)
- docs: add star history (#5024 - @JakobLichterfeld)
- docs: bump Traefik to v3.5 and enable http3 in advanced guide (#5023 - @swiffer)
- docs: add docs for volume mount change with PostgreSQL 18 (#4890 - @swiffer)
v2.1.1
As always, there have been many improvements. We now use the latest version of Grafana (12.1.1) and have enhanced the database migration process to include the new ascent and descent values, allowing successful migration even when entries are faulty. Previously, this prevented the migration from succeeding for some users. This highlights the importance of user feedback. Such cases never occurred in our testing.
Enjoy it.
New features
- feat(nix): add idiomatic maintenance scripts (#4849 - @JakobLichterfeld)
Improvements and bug fixes
- feat(webview): show offline duration in extended view on mobile as well to improve UX (#4848 - @JakobLichterfeld)
- feat: use Grafana 12.1.0 (#4855 - @swiffer)
- feat(nix): use datasources.settings.datasources to allow merging Grafana sources from multiple modules (#4870 - @JakobLichterfeld)
- fix(nix): correctly set default Grafana dashboard path (#4870 - @JakobLichterfeld)
- feat(nix): allow disabling default Grafana dashboard with setDefaultDashboard option (#4870 - @JakobLichterfeld)
- fix: set descent and ascent to 0 when out of bounds (> 32767 meters) to ensure migration succeeds (#4882 - @swiffer)
- feat: use Grafana 12.1.1 (#4886 - @swiffer)
- feat(webview): update wording to View car location on Google Maps for clarity (#4875 - @JakobLichterfeld)
Build, CI, internal
- style(issue-template): typo fix in Unraid (#4842 - @JakobLichterfeld)
- build(deps): update flake.lock (#4858)
- build(deps): bump DeterminateSystems/update-flake-lock from 25 to 27 (#4864)
- build(deps): bump react and react-dom from 19.1.0 to 19.1.1 in /website (#4865 - @JakobLichterfeld)
- build(deps): bump ecto_sql from 3.12.1 to 3.13.2 (#4863)
- build(deps): update flake.lock (#4867)
- build(deps): bump phoenix_ecto from 4.6.4 to 4.6.5 (#4862)
- build(deps): update flake.lock (#4881)
- build(deps): update flake.lock (#4888)
Dashboards
Translations
- i18n: fix de translation for car location link (#4844 - @JakobLichterfeld)
Documentation
- docs: add reference to idiomatic nix backup and restore scripts (#4849 - @JakobLichterfeld)
- docs: add reference to idiomatic nix maintenance scripts (#4849 - @JakobLichterfeld)
v2.1.0
As always, there are many improvements. We have introduced new database fields to store the total ascent and descent of a drive, which can be used in the drives and efficiency dashboards. This is a valuable addition for users who wish to analyze their driving patterns and performance in hilly areas, and it enhances the efficiency metrics.
The database will be migrated automatically to include these new fields. Depending on your host and the size of your database, this process may take some time. Please be patient and wait for the process to finish (depending on your host, it takes a few seconds to about a minute on a Raspberry Pi 3B+ with a 1 GB database).
We now use the latest Grafana 12.0.1, and you can now open a Google Maps link for the car's current location by clicking on the location marker icon in the webview to quickly navigate to your car's location, without having to open the Tesla app.
Additionally, we have fixed some issues with the consumption for drives with a positive SOC difference, and we have aligned the usage of time-range filters to resolve consumption gross issues in some edge cases.
The charging stats are now even more consistent. We now detect consecutive charges and exclude them from the charge / discharge stats (PV surplus charging: we've got you covered).
Enjoy it.
New features
- feat(webview): add map marker icon to open Google Maps link with car's current location (#4838 - @JakobLichterfeld)
- feat: add total ascent & descent to the drive table to use in the drives dashboards (#4798 - @swiffer)
- feat(nix): add idiomatic backup and restore scripts (#4835 - @JakobLichterfeld)
Improvements and bug fixes
- fix(nix): update cldr hash (#4723 - @brianmay)
- feat: use Grafana 12.0.0 (#4721 - @swiffer)
- feat: use Grafana 12.0.1 (#4756 - @swiffer)
- feat: preserve the folders when restoring dashboards (#4715 - @IngmarStein)
- feat: use Grafana 12.0.1+security-01 (#4799 - @swiffer)
- feat: use Grafana 12.0.2 (#4805 - @swiffer)
- feat(mqtt): always publish healthy status and disable retain to prevent stale healthy status via mqtt (#4817 - @allivshits)
- feat: use the k8s-style API introduced in Grafana v12 if using manual dashboard setup (#4764- @IngmarStein)
- feat(db-check): allow beta / rc PostgreSQL versions for testing (#4795 - @swiffer)
- feat: enhance HTTP limits for managing fleets with over 10 vehicles (#4607 - @jlestel)
Build, CI, internal
- build(deps): bump tzdata from 1.1.2 to 1.1.3 (#4713)
- build(deps-dev): bump mock from 0.3.8 to 0.3.9 (#4712)
- build(deps-dev): bump credo from 1.7.11 to 1.7.12 (#4711)
- build(deps): bump crate-ci/typos from 1.31.1 to 1.31.2 (#4710)
- fix(nix): update mix dependency hash in nix builds (08fe0ac - @JakobLichterfeld)
- feat(nix): use nixos-25.05 (#4716 - @JakobLichterfeld)
- build(deps): update flake.lock (#4716)
- fix(nix): skip duplicate cldr download to fix build on darwin and improve reproducibility (#4763 - @JakobLichterfeld)
- build(deps): bump DeterminateSystems/update-flake-lock from 24 to 25 (#4774)
- build(deps): bump crate-ci/typos from 1.31.2 to 1.32.0 (#4775)
- build(deps): bump castore from 1.0.12 to 1.0.14 (#4778)
- build(deps): update flake.lock (#4772)
- build(deps): bump phoenix_ecto from 4.6.3 to 4.6.4 (#4779)
- build(deps): bump @docusaurus/preset-classic from 3.7.0 to 3.8.0 in /website (#4776)
- build(deps): bump @docusaurus/core from 3.7.0 to 3.8.0, @docusaurus/preset-classic from 3.8.0 to 3.8.1, bump dependencies in /website (#4777 - @JakobLichterfeld)
- build(deps): bump nixbuild/nix-quick-install-action from 30 to 32 (#4813)
- build(deps): bump brace-expansion from 1.1.11 to 1.1.12 in /website (#4821)
- build(deps): bump plug_cowboy from 2.7.3 to 2.7.4 (#4816)
- build(deps): bump crate-ci/typos from 1.33.1 to 1.34.0 (#4814)
- build(deps): bump timex from 3.7.11 to 3.7.13 (#4815)
- build(deps): update flake.lock (#4828 - @JakobLichterfeld)
- build(nix): update mix dependency hash in nix builds (#4828 - @JakobLichterfeld)
- chore(issue-template): enhance bug report template with additional fields and guidance (#4827 - @JakobLichterfeld)
- build(deps): bump on-headers from 1.0.2 to 1.1.0 and compression from 1.0.2 to 1.1.0 in /website (#4831)
- sec(deps): override webpack-dev-server to version 5.2.1 to fix CVE-2025-30360 (#4833 - @JakobLichterfeld)
- ci(coverage): explicitly set mix-env to test (322c2a2 and e6931ab - @JakobLichterfeld)
- fix(mix): add "coveralls.github" to preferred_cli_env to avoid missing task error in CI runs (1c76994 - @JakobLichterfeld)
- build(deps): update flake.lock (#4834)
- chore(issue-template): update bug report template to include Unraid as unsupported installation method (#4829 - @JakobLichterfeld)
Dashboards
- fix: new image on home dashboard as old got removed from Tesla mediaserver (#4702 - @JakobLichterfeld, @swiffer)
- feat: update image on home dashboard to juniper and back to dark (#4742 - @swiffer)
- fix: consumption for drives with positive soc diff (#4746 - @swiffer)
- fix: align usage of time-range filters to fix consumption gross issues in some edge cases (#4787 - @swiffer)
- feat(dashboards-Charging-Stats): align query conditions and introduce a min duration filter applied to all panels to ensure consistent charging stats (#4791 - @swiffer)
- feat(dashboards): reliably calculate charging costs per 100 km for shorter periods and align across trip, statistics and charging stats dashboards (#4791 - @swiffer)
- feat(dashboards): detect consecutive charges and exclude from Charge / Discharge Stats (#4791 - @swiffer)
- feat(dashboards): introduce slope-adjusted efficiency metric in drives dashboard (#4798 - @swiffer)
Translations
- i18n: create Catalan default.po (#4727 and #4728 - @pellix)
- i18n: more descriptive italian localization (#4748 -@StarkITA)
Documentation
- docs: improvement to the Debian installation instructions (#4734 - @iustin)
- docs: add note on accessory power functionality can prevent car sleep (#4737 - @darox)
- docs: clarify pricing for Teslemetry (#4705 - @Bre77)
- docs: add NixOS installation guide (#4768 - @JakobLichterfeld)
- doc: add OpenSSF scorecard (#4819 - @JakobLichterfeld)
- docs: streamline installation guides (#4829 - @JakobLichterfeld)
- docs: add nix develop to run treefmt to support non nix direnv users (#4829 - @JakobLichterfeld)
- docs: add Unraid installation and maintenance instructions (no support) (#4758, #4829 - @vypergts and @JakobLichterfeld)
- docs: clarify the use of secure connection to access TeslaMate (#4829 - @JakobLichterfeld)
- docs: reorder guides into advanced guides, categories FleetAPI documentation as config (#4829 - @JakobLichterfeld)
- docs: clarify which installation methods are supported and which are not (#4829 - @JakobLichterfeld)
- docs: mention dedicated version for MCU2 upgraded cars (#4829 - @JakobLichterfeld)
v2.0.0
This is a breaking change release: TeslaMate uses PostgreSQL as database, this is an external dependency and needs to be updated by yourself. We now require PostgreSQL 16.7 or 17.3 or higher as we are upgrading the bundled earthdistance extension to v1.2. TeslaMate will now fail to start if you are using an older version. Ensure to upgrade your database before upgrading TeslaMate. To upgrade PostgreSQL, you need to follow these instructions:
- Backup your data
- Upgrade PostgreSQL to postgres:17 (Yes, you will have to erase your data, which is why you need your backup in the first place.)
- Upgrade TeslaMate to this version
- Backup your data after the upgrade
Note for user which revoked permissions: If the SUPERUSER privilege has been revoked after the initial (manual) installation, it must be temporarily granted for pending earthdistance migrations to succeed. The privilege can then be safely revoked.
As always, there are also many improvements. The webview now shows the TPMS values in the low pressure tooltip. We use the latest Grafana 11.6.1 and have improved the battery health dashboard and aligned the range calculation through the dashboards. Additionally time zone handling has been improved and the date formats are now based on the browser locale.
Enjoy it.
Note for contributors: The default branch was renamed to main. Please update your local repository accordingly (see GitHub hint when visiting teslamate-org/teslamate or GitHub documentation for more information).
Breaking Changes
- feat: check Postgres version on startup, require 16.7 / 17.3, update earthdistance extension (#4648 - @swiffer)
New features
Improvements and bug fixes
- fix(nix): non-recursive provider for ../grafana/dashboards (#4680 - @swiffer)
- feat: use Grafana 11.6.1 (#4662 - @swiffer)
Build, CI, internal
- build(deps): bump image-size from 1.2.0 to 1.2.1 in /website (#4622)
- ci: switch to cache-nix-action as Magic Nix Cache is deprecated (#4626 - @JakobLichterfeld)
- build(deps): update flake.lock (#4603)
- build(deps): bump crate-ci/typos from 1.30.0 to 1.31.1 (#4611)
- build(deps): bump docker/login-action from 3.3.0 to 3.4.0 (#4612)
- build(deps): bump actions/cache from 4.2.2 to 4.2.3 (#4613)
- build(deps): bump tesla from 1.13.2 to 1.14.1 (#4616)
- ci(sec): remove pull_request_target workflow triggers to improve sec even further, the downside is that test images are now only created for repo's own PRs (#4637 - @JakobLichterfeld / Thanks to @Firebasky for responsibly disclosing the vulnerability)
- ci: fix ghcr build (..ddf85e6 - @JakobLichterfeld)
- ci: ensure ghcr images build correctly even if branch contains backslash (#4655 - @JakobLichterfeld)
- ci: skip ghcr build for PRs from outside repo (#4660 and 462b568 - @JakobLichterfeld)
- build(deps): bump estree-util-value-to-estree in /website (#4641)
- build(deps): update flake.lock (#4653)
- fix(nix): update mix dependency hash in nix builds (3d08431 - @JakobLichterfeld)
- ci(dependabot): add ignore rules for path-based dependencies (#4666 - @JakobLichterfeld)
- sec: upgrade esbuild to 0.25.2 and esbuild-sass-plugin to 3.3.1 to avoid GHSA-67mh-4wv8-2f99 (#4669 - @JakobLichterfeld)
- build(deps): bump http-proxy-middleware from 2.0.7 to 2.0.9 in /website (#4670)
- build(deps): bump phoenix_html from 4.2.0 to 4.2.1 (#4667)
- build(deps): bump ex_cldr from 2.40.2 to 2.42.0 (#4615)
- build(deps): bump react from 18.3.1 to 19.1.0 and docusaurus/core from 3.4.0 to 3.7.0 in /website (#4618 - @JakobLichterfeld)
- build(deps): bump phoenix_ecto from 4.6.2 to 4.6.3 (#4333)
- build(deps): update flake.lock (#4674)
- fix(nix): update mix dependency hash in nix builds (#4695 - @JakobLichterfeld)
- chore: rename branch to main (#4700 - @JakobLichterfeld and @adriankumpf)
- build(deps-dev): bump phoenix_live_reload from 1.5.3 to 1.6.0 (#4699)
- build(deps): bump tortoise311 from 0.12.0 to 0.12.1 (#4698)
- build(deps): bump nix-community/cache-nix-action from 6.1.2 to 6.1.3 (#4696)
- build(deps): bump floki from 0.36.3 to 0.37.1 (#4697)
Dashboards
- fix: improve calc for usable (now) in battery health dashboard (#4644 - @swiffer)
- feat: make use of car filter, add timefilter in locations dashboard (#4647 - @swiffer)
- fix: use same rated range calculation in updates dashboard as in battery health dashboard (#4682 - @swiffer)
- fix: explicitly set height of home dashboard background image based on current layout & grafana css (#4681 -@swiffer)
- fix: set $__timezone explicitly in dashboards to ensure truncation is done with respect to the Grafana timezone (#4684 - @swiffer)
- fix: issues when using browser locale for date formats (#4662 - @swiffer)
- fix: widens Date Columns to fully show date strings formatted in US locale (#4662 - @swiffer)
Translations
Documentation
- chore(issue-template): add PostgreSQL version input and checkbox for latest version check in bug report template (#4643 - @JakobLichterfeld)
- docs: allow to add energy added to the Home Assistant's Energy tab to measure how much energy each session uses (#4659 - @alexsapran)
- docs: update changelog with breaking changes description (#4691 - @JakobLichterfeld)