Bug Fix
- Guard the Grafana container teardown in
upgrade.shwith an existence check (docker ps -aq -f name=^grafana$), matching the pattern already used forpypowerwall,telegraf,weather411, andtesla-history. Previously, if no Grafana container existed,docker stop grafanareturned a non-zero status and aborted the upgrade before the stack could be updated or restarted. In migration paths that had already stopped services, this could leave the stack down. This affected users who disable the bundled Grafana via a compose override (profiles: ["disabled"]) to reuse an existing Grafana instance.
CI
- Add project validation GitHub Actions workflow — continuous integration sanity checks for the dashboard configuration files. (PR #822)