All notable changes to this project will be documented in this file.
4.2.0 (2026-07-11)
- web: add /api/fs/upload endpoint for OTA-safe web asset deployment (cee0b4a)
- web: make dashboard and operating parameters visible without login (919bbde)
- ci: fix native test build and clang-format violations (ba6a1a8)
- norvi: move solar pump relay from R1 (GPIO12) to R5 (GPIO33) (#158) (5cf8fda)
- web: use streaming multipart upload for /api/fs/upload (0c38f50)
4.1.1 (2026-07-07)
- address CodeQL code scanning alerts — thread-safe time functions, path-exclude libdeps, update skills (6ebbae1)
- address Codex clean-code review findings (f1d6da2)
- ci: filter .pio/libdeps from CodeQL SARIF instead of paths-ignore (a345790)
- homeassistant: remove 'none' from preset_modes discovery config (d05a083)
4.1.0 (2026-07-07)
- ha: add circulation-extension sensor showing extra minutes beyond base timer (0270355)
- ha: add circulation-extension sensor showing extra minutes beyond base timer (9339d25)
- web-ui: redesign timer display as intuitive time range instead of abstract minutes (366d647)
- web-ui: redesign timer display as intuitive time range instead of abstract minutes (1ced447)
- web-ui: show circulation extension (extra minutes) on dashboard (69e21bf)
- web-ui: show circulation extension (extra minutes) on dashboard (e7cbc24)
- clang-format: apply clang-format to MqttPublisher.cpp (8058c1d)
- relay: avoid int→bool ambiguity in constructor overloads (fcc616c)
- relay: correct relay polarity for NORVI AE01-R active-HIGH relays (6e92aa0)
- resolve MegaLinter issues in PR #139 (0c3cea8)
- test: add missing saveSensorMapping/loadSensorMapping to mock ConfigManager (00d349b)
- test: add strlcat fallback for native test builds (c6463fb)
- use MegaLinter v9.6.0 (v9.7.0 does not exist as release tag) (81b679f)
- web-ui: use consistent muted styling for Extension telemetry item (b0988db)
- web-ui: use consistent muted styling for Extension telemetry item (6ae6b99)
4.0.2 (2026-06-30)
- ci: suppress cppcheck syntaxError for ESP-IDF version macros (028e62a)
- config: correct Doxygen description — uses NVS (Preferences), not LittleFS (d1e9910)
- correct #pragmaonce to #pragma once in RuleAuto.hpp (6963f6c)
- ha: use name-based entity IDs matching HA generation (22c56bd)
4.0.1 (2026-06-28)
- ci: use temp file to avoid gh release upload name collision (d570745)
- mqtt: remove duplicate Home Assistant Discovery entities (9ef1526)
- network: remove always-true WPS function pointer check (b0a339b)
- network: remove always-true WPS function pointer check (e9a01bf)
- ota: select correct firmware binary per board type (34f93d2)
- pool-controller: stop overriding persisted TimerSetting with hardcoded values (3cfd43f)
- wps: correct ESP-IDF version guard for esp_wifi_wps_start API (ab98105)
- wps: correct ESP-IDF version guard for esp_wifi_wps_start API (8d92db8)
- wps: correct ESP-IDF version guard for esp_wifi_wps_start API (#124) (ab98105)
4.0.0 (2026-06-25)
- The Homie MQTT protocol has been removed entirely. The controller now exclusively uses Home Assistant MQTT Discovery.
- add Home Assistant climate/thermostat MQTT entity (d5daeb9)
- add mDNS responder for pool-controller.local discovery (#95) (b1252e7)
- convert WebUI to Progressive Web App (PWA) (b2f05d1)
- docs: add KiCad 9.0 schematic generator and PDF exports (#104) (ff46191)
- docs: Add Quick Start Guide, FAQ, and Safety Warnings (#107) (b0152e1)
- mqtt: set HA entity_category for all discovery entities (375f40f)
- NORVI AE01-R hardware support with OLED display (#117) (964a1bd)
- norvi: add OLED display with 4 info pages, button navigation, and QR code (34681e2)
- OLED Menu-Navigation, Sensor-Mapping in WebUI+HA, mDNS (f72bbe2)
- optimierte Pin-Belegung (GPIO32/33/25/26) + Status-LED mit Homie-Blinkcodes (c6ef387)
- temperature-based circulation time with continuous extension (b16a9d0)
- ui: add About section in More bottom sheet (5919624)
- ui: iOS-style bottom tab bar with glassmorphism (38eec43)
- web: add temperature-based circulation parameters to Web UI (963bcde)
- web: format effective runtime as duration in WebUI and HA (b460b4f)
- add native test infrastructure with ASan and coverage reporting (#98) (1421a39)
- docs synced de/en (909304d)
- ha: select-Entity-Status ohne Temperatur publishen (e6f32d7)
- ha: Sensor-Mapping Discovery bei jedem MQTT-Reconnect publishen (1ab82d9)
- mqtt: prevent dangling pointer and duplicate callback on reconnect (25090d7)
- restore telemetry updates and HA entity visibility (716dfe6)
- review findings for temperature-based circulation (8784f25)
- ui: display dashboard thresholds without-auth via /api/status, 4-across mode cards (e68d4bf)
- web: clarify that timer start/end also applies in Auto mode (5985a00)
- web: remove leftover merge conflict markers in index.html (#118) (907b676)
- remove deprecated Homie references across codebase (1df0705)
3.3.0 (2026-06-06)
- Cleanup and fixes (#72) (90d6e07)
- ha: Replace timer H/Min number entities with single HH:MM text entities (#74) (27c337f)
- NTP server config via Web UI + MQTT, local time display (#83) (c45bd55)
- NVS config backup, MQTT error reporting, web UI improvements (#82) (817500a)
- OTA update from GitHub releases, semver release management, config safety (#77) (2972b34)
- restructure web UI settings tabs and HA entity categories (#87) (712b037)
3.2.0 (2026-05-22)
- change default MQTT protocol to HomeAssistant (5d4cad9)
- semver release pipeline via release-please (Conventional Commits) (#29) (102b18b)
- wifi: add WPS onboarding for initial WiFi provisioning (#67) (6983af6)
- ci: make website dispatch workflow non-blocking on token issues (#69) (4e03bd3)
- ESP32 compatibility, memory & buffer fixes + AGENTS.md update (#68) (b95efbd)
- improve English grammar and word choice in documentation (#47) (2d71dcd)
- master Branch renamed to main (f0d0223)
- Remove space between platform name and version specifier in nodemcuv2 environment (0f34a68)
-
Over-The-Air (OTA) Updates: Remote firmware updates via WiFi
- Password-protected secure updates through Homie library
- mDNS discovery support for easy device location
- PlatformIO and Arduino IDE integration
-
Web Dashboard: Built-in configuration interface with:
- Pool temperature and mode controls
- Timer configuration
- Timezone and NTP settings
- System information display
- Firmware update management
-
Home Assistant MQTT Discovery: Automatic device registration via Homie convention
-
Configurable WiFi Provisioning: Support for WPS and fallback Access Point mode
- Migrated from manual MQTT topics to Homie 3.0.1 convention for standardized IoT device communication
- Timer scheduling issues with timezone handling
- MQTT reconnection stability improvements
- Memory optimization for long-term operation
- Complete rewrite from Arduino to PlatformIO with ESP-IDF 5.x framework
- Migrated from ESPAsyncWebServer to built-in ESP-IDF HTTP server
- Migrated from AsyncMqttClient to ESP-MQTT (esp_mqtt)
- Migrated from ArduinoJson to ESP-IDF JSON (cJSON)
- Removed Homie dependency — now uses MQTT directly
- FreeRTOS task watchdog with 30s timeout
- Boot-loop detection with automatic safe mode
- System degradation management with graceful fallbacks
- Temperature hysteresis configuration
- Solar heating control with configurable thresholds
- Arduino framework dependency
- Homie library dependency
- ESPAsyncWebServer dependency
- AsyncMqttClient dependency
- Initial Arduino-based ESP32 pool controller implementation
- Temperature monitoring via DS18B20 sensors
- Relay control for pool pump and solar heating
- Timer scheduling for pool pump operation
- Web dashboard for configuration and monitoring
- MQTT integration with Homie convention
- OTA firmware updates
- Home Assistant discovery support