Releases: Developer-Simon/energy-node
Releases · Developer-Simon/energy-node
Release list
v0.8.5
Features
- The changelog pages open on the highlights, the switch at the top shows everything. (#84) (5cc1cfb)
- homeassistant: add Energy Node Companion as a history exchange peer (#85) (5bd7f48)
- dashboard: list the recorded series in the history exchange announcement (58c59a2)
- dashboard: relay an optional sender label with history exchange offers (e4dc868)
- dashboard: name the source of exchanged history rows in the settings (6a5d816)
- dashboard: link the HA device to the node's Tailscale address (7c6d6ab)
- dashboard: switch the versions page between highlights and everything (25b7c01)
Documentation
- dashboard: use matching German quotes for the device link note (7f5a20f)
- describe the Home Assistant history exchange peer (793aad8)
- highlights and details, screenshot script for the installer (105e72e)
Tests
v0.8.3
Features
- battery_soc: save the state on an interval and recover after a crash (#78) (dc62037)
- updater: record changelog.json next to the installed manifest (a823aa6)
- dashboard: lead the update pill to the update screen for users who may update (70fd1b0)
- battery_soc: add the save interval setting to the service schema (df73211)
Fixes
- dashboard: rest the battery flow icon on its fill level at 0 W (#81) (295ab6a)
- dashboard: report the installed version as from in the redeploy preview (adcdc18)
Tests
v0.8.0
Highlights
- Bilingual dashboard: every screen is available in English and German, with a language switcher, a number format setting and locale-aware dates.
- Device icons and favourites: pick an icon per device and pin favourite entities to the cards and the device modal. The icons also ship as a Home Assistant icon set.
- Versions page: a new page under settings shows the installed component versions, the changelog and the update check.
- DC-only battery systems: battery_soc supports DC-only setups, and the configuration forms only show the fields that apply to your system type and bank layout.
- Automations: weekdays in the editor and a new sun_window condition.
- Redeploy: a running redeploy stays visible across the dashboard's self-update restart.
Features
- dashboard: per-device icons and pinned favourite entities (#53) (d649df3)
- homeassistant: ship the dashboard's device icons as an HA icon set (#54) (c4c196b)
- battery_soc: DC-only systems in the MQTT service and conditional config forms (#58) (89bacae)
- dashboard: localization foundation with language switcher (#59) (7f8ed9f)
- dashboard: number format setting and locale-aware dates (localization A2) (#60) (6d8ba8b)
- dashboard: localize the shell and the overview (#62) (e96f396)
- automation: weekdays in the editor and a sun_window condition (#63) (b32936a)
- dashboard: localize energy and settings (#64) (5445f5b)
- dashboard: localize configuration and the layout editor (#67) (9609a2d)
- dashboard: localize automations and history, guard every UI text (#68) (cce3f4f)
- dashboard: localize API error messages (#69) (368214a)
- dashboard: localize validation errors and diagnostics (#70) (9827111)
- dashboard: show installed component versions under settings (#71) (c8ef59b)
- dashboard: localize the system configuration form (#72) (c716d05)
- dashboard: localize the device configuration forms (#73) (180110d)
- dashboard: show the redeploy screen in the dashboard language (#74) (6542022)
- dashboard: write the central schema in English and move German to the catalog (bd26f60)
- dashboard: describe every field of the system configuration form (012ea1c)
- dashboard: add a versions package that reads what the installer left on the node (0dee5e2)
- dashboard: add read-only /api/v1/versions and /api/v1/changelog (637efd3)
- dashboard: add the versionsPanel component and its texts (56c0ffa)
- dashboard: add a versions page under Einstellungen (d2c90cf)
- dashboard: drop the dashboard version from the System panel (5d446fb)
- dashboard: drop the link to the Versionen tab from the System panel (be8b2ee)
- dashboard: move the update check into its own card on the Versionen page (643fa05)
- dashboard: catalog keys for diagnostics warnings (f412fb4)
- dashboard: translatable fields in API error responses (b1afd64)
- config: deliver catalog keys for configuration display names (a123577)
- storagehealth: return catalog keys next to the German labels (8b8b464)
- settings: return a catalog key for the bridge address warning (10d63fe)
- energy: return catalog keys for role labels and sign hints (a0e4fd6)
- settings: add number format and digit grouping settings (2c67fd6)
- webui: show live device values in the configured number format (f23ebf5)
- history: localize chart labels, tooltips and the date range picker (dcde8a1)
- localize: resolve the UI language from cookie and Accept-Language (1835383)
- dashboard: installer-style language pill and a formatting settings card (16aa9a8)
- dashboard: validate conditional JSON schema entries (if/then/else) (56cb98e)
- dashboard: expose each service's reload result per configuration (6f9f9ea)
- dashboard: show and hide conditional schema fields in the config editor (ca8f760)
- dashboard: show whether a service took over a saved configuration (304d813)
- battery_soc: conditional battery schema for system type and bank layout (53943e9)
- dashboard: animate conditional schema fields in and out (90425d7)
- battery_soc: require the bank A voltage topic in the dashboard form (5573a33)
- dashboard: export the device icon catalogue for Home Assistant (e7b3f40)
- dashboard: store per-device icon and favourite preferences (490352a)
- dashboard: let favourite entities drive the compact card rows (78749f7)
- dashboard: add a device icon catalogue and render it on the cards (8c90408)
- dashboard: serve device preferences to the tab, the stream and the modal (053972a)
- dashboard: add the device preferences and icon catalogue endpoints (8a9256a)
- dashboard: edit device icon and favourites in the device modal (1f32950)
- dashboard: pin a device's favourite entities at the top of its modal (b385f9c)
- dashboard: suggest device icons by type and polish the display prefs (1b14baa)
Fixes
- dashboard: name the signed battery and grid energy roles (99a5cb4)
- dashboard: name history series instead of showing their ids (84753a7)
- dashboard: pass service fields and previous versions to the redeploy preview (#51) (0c07bc1)
- redeploy: keep following a run across the dashboard's self-update restart (#52) (38a0609)
- dashboard: tidy localization texts after the final review (c2b5853)
- dashboard: drop two unused catalog keys (b1e01ca)
- dashboard: keep plural-reserved .other off the versions catalog keys (e4e2b09)
- dashboard: wrap version rows on narrow screens and localize release dates (036591f)
- config: name Trucki devices as IoT sticks (2a16239)
- dashboard: hide conditional schema fields despite the grid display rule (e3225b3)
- dashboard: start the status watch after the editor save reloads the config (11911c0)
- dashboard: tolerate fields of inactive schema branches from older files (06071f4)
- battery_soc: show the imbalance threshold only for two banks in series (f402372)
- dashboard: keep the exported icon markup readable in diffs (dc5114a)
- dashboard: keep the pinned-favourites block from breaking the modal grid (c0876ee)
Refactors
- dashboard: stop reading the services VERSION file on the node (c1e19de)
- dashboard: report passed-through API errors as detail (aa941d5)
Documentation
- dashboard: English screenshots and docs for the bilingual UI (85caf1c)
- dashboard: describe config_revision as the last load attempt (715dd30)
- battery_soc: document DC-only systems, signed inputs and current units (6c2df1f)
- dashboard: document the device preference endpoints and bump the assets (aed1eee)
Tests
- dashboard: add --simulate-installed to the smoke test and check the versions API with it (25c06ff)
- dashboard: fix cross-realm deepEqual in the new prefsDraft test (02d2ef3)
Style
v0.7.8
Features
- installer: add package sources (file, repo build, GitHub) (#42) (f831eab)
- dashboard: download the newest release bundle from the redeploy page (#44) (245b277)
- installer: restart only the service units whose version changed (#48) (1d2c57f)
- shelly: optional wake webhook so a sleeping Gen1 device is polled the moment it wakes (3105234)
- installer: pass step requirements from the manifest to the web UI (69ffe39)
- installer: carry a restart-all request from the UI to the service steps (bad757a)
- installer: show per service which units restart in the preview (e2464cb)
- updater: take the target from the root-owned target.json for user-independent bundles (e3813fc)
- dashboard: add a GitHub release client that finds and downloads the node bundle (0493264)
- dashboard: extract, validate and atomically install a downloaded bundle (e0896ae)
- dashboard: add the Fetcher that downloads the newest bundle into the candidate directory (d411166)
- dashboard: run a prepare step in the redeploy host through a Prepare seam (4def9a9)
- dashboard: download the newest release bundle into the redeploy candidate directory (6ae89ec)
- updater: record the applied manifest as installed-manifest.json (c7e3d4b)
Fixes
- auth: backfill RoleCheckUpdates for an already-bootstrapped admin (#38) (58d94f3)
- dashboard: show the download icon in the masthead update badge (#40) (d50ebf9)
- dashboard: stop duplicate energy card mounts from fighting over springs (#41) (3d3d7a8)
- installer: restart service units on update and record the installed manifest (#43) (0f2aec2)
- render the system-action helper on the node, validate targets with fullmatch, register the new tests (e546498)
- dashboard: hand the redeploy page the session's CSRF token (7bd8f3a)
- dashboard: implement the new hostapi.Sink.Message method (8ae6af3)
Documentation
- describe which service units an update restarts (08ae4b9)
Tests
v0.7.1
Fixes
- apsystems: stop publishing the legacy power_status sensor removal (#36) (b1d352b)
- bootstrap: make steps 20, 40, 65, 70 and the diagnosis work on a real node (#37) (11eef9d)
- auth: backfill RoleCheckUpdates for an already-bootstrapped admin (#38) (58d94f3)
Documentation
- installer: add an end-user installer page and refresh the developer page (31acec4)
v0.7.0
Features
- dashboard: make the "check for updates" button more prominent (00a5e46)
- dashboard: link the update-available chip to the redeploy screen (c60f545)
- webui: add the installer's layer-3 web UI, browser tests and CI (#28) (e819b5e)
- installer: polish for the installer webui (#30) (05d424b)
- installer: hide dashboard tabs for deselected optional services (#31) (59f2d40)
- apsystems: RAM-only power limits and extended diagnostics (#32) (909e735)
- installer: add the dashboard's local self-update path (Plan D) (#33) (e50d236)
- auth: add a role gating the GitHub update check (92e35f4)
- updatecheck: add a GitHub release version checker (7f5a047)
- settings: add a toggle for the automatic update check (207c345)
- dashboard: run the daily update check and expose it over HTTP (4b2cf9e)
- dashboard: show an update-available badge in the masthead (148a77e)
- dashboard: add a manual update check to settings (e1e2d0b)
- dashboard: add the updaterjob staging format (9b727eb)
- dashboard: add the energy-node-updater orchestrator script Co-Authored-By: Claude Haiku 4.5 noreply@anthropic.com (1a90149)
- installer: install the updater unit and its .path trigger in step 60 Co-Authored-By: Claude Haiku 4.5 noreply@anthropic.com (cd5df50)
- dashboard: add the local updaterhost Backend (a23ab21)
- dashboard: mount the local redeploy screen and resume it after a self-update restart Co-Authored-By: Claude Haiku 4.5 noreply@anthropic.com (2f2f0a2)
- dashboard: allow an optional installed_services block in config.json Co-Authored-By: Claude Haiku 4.5 noreply@anthropic.com (0710bea)
- dashboard: add Config.ServiceInstalled with the default-on rule Co-Authored-By: Claude Haiku 4.5 noreply@anthropic.com (faa9300)
- dashboard: thread a resolved installed_services map into the overview handler (9dbaa36)
- dashboard: hide the automations tab and tailscale/tuya settings subpages when deselected Co-Authored-By: Claude Haiku 4.5 noreply@anthropic.com (106aa98)
Fixes
- updatecheck: recognize the v-prefixed version main.go actually passes (7808e4c)
- dashboard: use InFlight() to allow staging new jobs after previous job completes (2086154)
- installer: remove unnecessary committed copy of signing key (3e23319)
- dashboard: gate /redeploy/ behind the system-actions role and CSRF (7f3a132)
- installer: make a real redeploy work and stop job.json from steering root (694cbe3)
- dashboard: silence SC2317 on the trap-only finish_interrupted (7d5843d)
- dashboard: keep the generated config schema in sync with its source (38d5d6d)
- dashboard: forward-compatible schema, close automations fragment gap (6549e38)
Documentation
Tests
- dashboard: add a smoke-test flag to simulate an available update (5c98ab5)
- dashboard: add --https to the local smoke test (386d716)
- dashboard: add a smoke-test preset with every optional service off (f1f33f5)
Chores
v0.6.5
Features
- dashboard: replace theme select with a four-way segmented slider (#23) (3855e9c)
- dashboard: redesign the MQTT settings tab (#24) (8844555)
- installer: build the node-half bootstrap chain and signed bundle pipeline (#25) (f11e962)
- installer: add the developer CLI's transport engine (#26) (1f8e44e)
- dashboard: restyle MQTT settings tab to match card layout (2d5f2bf)
- dashboard: fill row gaps and add floating save bars on MQTT tab (a389ce4)
Fixes
v0.6.2
Features
- dashboard: migrate config.json schema_version 1 to 2 on load (#20) (b8f72d1)
- ⚠ Breaking: move node telemetry into the dashboard nodeagent (#19) (8049117)
- dashboard: serve automation notifications from a dedicated endpoint (#6) (58bd7a6)
- make device services self-describing with per-service manifests (#12) (2e8c911)
- ⚠ Breaking: fold the config.json node block into dashboard.node_* (schema_version 2) (#14) (e7f4ba1)
- dashboard: rebuild the history settings tab (#16) (5a41c5c)
- dashboard: rebuild the settings tabs as responsive material cards (#18) (d905f8b)
- dashboard: migrate config.json schema_version 1 to 2 on load (3ac68ef)
- nodeagent: add injectable system-metric readers (547d1f3)
- nodeagent: build the energy_node HA discovery and state payloads (acdd553)
- ⚠ Breaking: move node telemetry into the dashboard, delete the energy-node service (540eac6)
- dashboard: broadcast simulation_active and expose per-metric toggles (99dd2a5)
- nodeagent: derive per-service liveness from MQTT (627cadc)
- dashboard: optional CPU temp, RAM and undervoltage in the status bar (1fe14fe)
- ⚠ Breaking: move the dashboard's own topics under outstation/energy_node (25358cb)
- dashboard: rebuild the general and display settings tabs as material cards (fdba93e)
- dashboard: rebuild the Verläufe settings tab with Apple-style controls (fecc586)
- appconfig: add dashboard.node_* alongside the node block (e1c73d1)
- dashboard: compose config.schema.json from per-service fragments (fc73de5)
Fixes
- dashboard: finish the config.json v1 -> v2 migration path (#21) (9d4fb53)
- dashboard: finish the config.json v1 -> v2 migration path (89252c9)
- dashboard: show system-config revisions as a read-only list (#7) (3e7dee7)
- changelog: roll unreleased sections into a hand minor bump (ea01be2)
- nodeagent: address task-6 review findings (ee8e3c4)
- nodeagent: correct throttle bits, guard node id, unify device block (92bd8fa)
- dashboard: style the mqtt metric-toggle fieldset and refresh stale docs (0b3e4ec)
Refactors
- split src/ into services/ and libs/, rename service-level device_id to service_id (#10) (75abe73)
- remove git hooks, and stop the per-PR CHANGELOG stacking (#13) (c643260)
- normalise the node MQTT/HA id to energy_node (800fd08)
- dashboard: remove the no-op discovery-JSON-tooltip feature (04f298a)
- read the node identity from dashboard.node_* (5e1e672)
Documentation
- finish the energy-node -> energy_node rename and guard it (a01c32e)
- drop remaining git-hooks references (7786f6d)
- config.schema.json is now generated from per-service fragments (0105cb7)
Style
- dashboard: lay the history settings cards out in a responsive grid (bc0cf9b)
Chores
- bump minor versions for dashboard, services and energy_node_common (549a100)
CI
- version-bump: refresh component changelogs on the PR branch (#11) (6326afb)
- path-filter the workflow and flag breaking changes in the changelog (#15) (5282452)
- skip Markdown-only diffs and gate the job set on the version bump (#17) (9446219)
Other
- feat!: drop the node block, bump schema_version to 2 (7990f5c)
v0.6.0
Features
- dashboard: serve automation notifications from a dedicated endpoint (#6) (58bd7a6)
- make device services self-describing with per-service manifests (#12) (2e8c911)
- ⚠ Breaking: fold the config.json node block into dashboard.node_* (schema_version 2) (#14) (e7f4ba1)
- dashboard: rebuild the history settings tab (#16) (5a41c5c)
- dashboard: rebuild the settings tabs as responsive material cards (#18) (d905f8b)
- nodeagent: add injectable system-metric readers (547d1f3)
- nodeagent: build the energy_node HA discovery and state payloads (acdd553)
- ⚠ Breaking: move node telemetry into the dashboard, delete the energy-node service (540eac6)
- dashboard: broadcast simulation_active and expose per-metric toggles (99dd2a5)
- nodeagent: derive per-service liveness from MQTT (627cadc)
- dashboard: optional CPU temp, RAM and undervoltage in the status bar (1fe14fe)
- ⚠ Breaking: move the dashboard's own topics under outstation/energy_node (25358cb)
- dashboard: rebuild the general and display settings tabs as material cards (fdba93e)
- dashboard: rebuild the Verläufe settings tab with Apple-style controls (fecc586)
- appconfig: add dashboard.node_* alongside the node block (e1c73d1)
- dashboard: compose config.schema.json from per-service fragments (fc73de5)
Fixes
- changelog: roll unreleased sections into a hand minor bump (ea01be2)
- dashboard: show system-config revisions as a read-only list (#7) (3e7dee7)
- nodeagent: address task-6 review findings (ee8e3c4)
- nodeagent: correct throttle bits, guard node id, unify device block (92bd8fa)
- dashboard: style the mqtt metric-toggle fieldset and refresh stale docs (0b3e4ec)
Refactors
- split src/ into services/ and libs/, rename service-level device_id to service_id (#10) (75abe73)
- remove git hooks, and stop the per-PR CHANGELOG stacking (#13) (c643260)
- normalise the node MQTT/HA id to energy_node (800fd08)
- dashboard: remove the no-op discovery-JSON-tooltip feature (04f298a)
- read the node identity from dashboard.node_* (5e1e672)
Documentation
- finish the energy-node -> energy_node rename and guard it (a01c32e)
- drop remaining git-hooks references (7786f6d)
- config.schema.json is now generated from per-service fragments (0105cb7)
Style
- dashboard: lay the history settings cards out in a responsive grid (bc0cf9b)
Chores
- bump minor versions for dashboard, services and energy_node_common (549a100)
CI
- version-bump: refresh component changelogs on the PR branch (#11) (6326afb)
- path-filter the workflow and flag breaking changes in the changelog (#15) (5282452)
- skip Markdown-only diffs and gate the job set on the version bump (#17) (9446219)
Other
- feat!: drop the node block, bump schema_version to 2 (7990f5c)
v0.5.18
What's Changed
- fix(dashboard): keep topic samples payload after availability heartbeat by @Developer-Simon in #3
- feat(dashboard): configurable compact device card by @Developer-Simon in #4
- feat(dashboard): modernise the non-energy overview tiles by @Developer-Simon in #5
Full Changelog: v0.5.15...v0.5.18