3.7 KiB
3.7 KiB
Feature Requests & Bug Fixes
Dieses Dokument verfolgt laufende Bug Fixes und kleinere Feature Requests nach Abschluss der Hauptentwicklungsphasen (Implementation-Plan.md Phase 1–9).
Größere Änderungen (neue Module, neue Architektur) werden weiterhin imImplementation-Plan.mddokumentiert.
Format
- [ ] **FR-NNN** Kurzbeschreibung
- Details, Kontext, betroffene Dateien
- Commit: `<hash>` (wird nach Erledigung eingetragen)
Status: [ ] = offen · [x] = erledigt
Offen
– keine –
Erledigt
-
FR-005 Bug: WDT-Crash + Display-/Browser-Freeze durch blockierenden TLS-Handshake ✅
- MQTT
reconnect()mit TLS (Port 8883) blockiertloop()auf Core 1 bis zu 15 s - Folge: Task-Watchdog (30 s) feuert wenn zwei Reconnect-Versuche in einem 30s-Fenster → Neustart mit
WATCHDOG (Task) - Zusätzlich: Display-Updates, WebServer-Responses und WiFi-Stack auf Core 1 eingefroren während TLS-Handshake
- Fix:
MqttClientkomplett auf FreeRTOS-Task (Core 0) ausgelagertbegin()startet nur Task (xTaskCreatePinnedToCore, Stack 16 KB), kein Netzwerk-Zugriff auf Core 1WiFiClientSecure/mbedtls wird ausschließlich auf Core 0 initialisiert und verwendet (Cross-Core-Heap-Korruption vermieden)mqttClient.loop()inmain.cppist No-Op – alle MQTT-Arbeit im TaskpublishSession()von Core 1 safe: setzt nurvolatile-Flags, Task auf Core 0 führt den Publish aus
- Version: 1.1.0 → 1.1.1
- Commit:
a7c6edb(Task auf Core 0),b91b3ca(Heap-Fix: Objekte per new auf Core 0)
- MQTT
-
FR-002 Web Console – serieller Monitor über Browser (WebSocket) ✅
- Route
/logliefert HTML-Seite mit automatisch scrollendem Terminal (dunkles Theme) - WebSocket-Endpunkt
/log-wsviaAsyncWebSocketim bestehenden ESPAsyncWebServer LOG_I/LOG_E/LOG_Dinconfig.hformatieren in lokalen Puffer und rufenwebLogForward()aufwebLogForward()sendet perws.textAll()– läuft nativ in AsyncTCP, kein Konflikt- "Log Console"-Button auf Statusseite / automatischer WebSocket-Reconnect nach Trennung
- Commit:
4dd4ce0
- Route
-
FR-004 Bug:
session_sumim MQTT-Heartbeat falsch (Binärzahl statt Dezimal) ✅serialized(String(getAllSessionsSumMinutes(), 2))→String(int, basis)interpretiert 2. Argument als Basis, nicht Dezimalstellen- Beispiel: 18 Min →
"10010"(18 in Binär), 20 Min →"10100" - Fix:
doc["session_sum"] = laserTracker.getAllSessionsSumMinutes()– direkt als JSON-Integer, keinserialized()nötig machine_running_time_minwar korrekt:String(float, 2)= 2 Dezimalstellen – anderer Overload- Version: 1.0.1 → 1.0.2
- Commit:
83537e3
-
FR-003 Bug: NTP Zeitzone falsch (UTC statt CET/CEST) ✅
configTime(0, 0, ...)lieferte UTC → Anzeige 1h zu früh (CET) / 2h zu früh (CEST)wifi_connector.cpp:configTzTime("CET-1CEST,M3.5.0,M10.5.0/3", "pool.ntp.org", "time.nist.gov")– automatische Sommerzeitmqtt_client.cpp:gmtime()→localtime(),Z-Suffix entfernt – Payload zeigt Lokalzeit- Version: 1.0.0 → 1.0.1
- Commit:
3a31082
-
FR-001 Firmware-Version auf Webseite und im MQTT-Status-Payload
- Definition:
FIRMWARE_VERSIONalsbuild_flagsinplatformio.ini[env]-Basisblock (Single Source of Truth) - Fallback
#define FIRMWARE_VERSION "0.0.0"inconfig.h(Arduino IDE ohne build_flags) - Format:
1.0.0 (Feb 26 2026)– Version + C++-Makro__DATE__(Compile-Zeitpunkt) - Web: Firmware-Zeile in der Statustabelle auf
/+ Footer auf/config - MQTT:
"firmware_version": "1.0.0 (Feb 26 2026)"imlasercutter/status-Payload - Commit:
46a8c59
- Definition:
Erstellt: 26. Februar 2026