3 Release Notes
ppfeiffer edited this page 2026-04-19 13:20:57 +02:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Release Notes

Version 0.5.5 2026-03-12

Behoben

  • sqlite3.ProgrammingError beim Start (Regression aus v0.5.2)
  • Navbar-Dropdowns Einstellungen/Logout nicht klickbar (Event-Bubbling-Fix)

Version 0.5.4 2026-03-12

UI-Redesign: Modernes, kompaktes Web-Interface

Vollständige visuelle Überarbeitung des Web-Interfaces ohne Änderungen an der Backend-Logik.

base.html globales Layout

  • Neue Design-Tokens (--accent, --bg-card, --border, …) für Light & Dark Mode
  • DM Sans als Interface-Schrift, DM Mono für Code/Logs
  • Kompakte sticky Navbar (Höhe 2.75 rem) mit eigenem Dropdown-System
  • User-Chip mit farbigen Rollen-Badges (admin/trusted/guest)
  • Status-Pill (Connected/Getrennt) als kleines Pill-Element
  • Footer: korrekter Link auf git.pfeiffer-privat.de/ppfeiffer/meshcore-bot mit Tag/Branch/Commit/Datum-Anzeige
  • Bootstrap 5.3.3, Font Awesome 6.5, Google Fonts DM Sans

index.html Dashboard

  • Stat-Tiles als auto-fill-Grid (130 px min, passt sich an Breite an)
  • Health-Bar in einer kompakten Zeile statt großer Card
  • Advert-Senden direkt in der Health-Bar
  • Analytics-Listen mit schlankem rank-row-Layout

Auth-Seiten (login, register, verify, pending)

  • Einheitliches Dark-Theme ohne Bootstrap-Overhead
  • Kleinere Inputs, kompaktere Abstände

Version 0.5.3 2026-03-12

Highlights

Bugfix-Release: TelemetryMonitor konnte sich nicht am MQTT-Broker authentifizieren (rc=5 Not Authorized), obwohl Credentials in [MQTT] konfiguriert waren.


Behoben

TelemetryMonitor MQTT rc=5 (PR #2)

Symptom:

WARNING:TelemetryMonitor:MQTT connection failed: rc=5
WARNING:TelemetryMonitor:MQTT disconnected unexpectedly: rc=5

…obwohl der MQTT-Test im Web-Interface erfolgreich war.

Ursache:
TelemetryMonitor._setup_mqtt() las server, port und transport aus [MQTT], ignorierte aber username, password, use_auth_token und use_tls vollständig. connect_async() wurde ohne username_pw_set() aufgerufen der Broker lehnte die Verbindung mit rc=5 (Not Authorized) ab.
Der Web-Interface-Test funktionierte, weil er die Credentials direkt aus dem Request nimmt und korrekt übergibt.

Fix:

  • __init__() liest jetzt alle fehlenden Felder aus [MQTT]
  • _setup_mqtt() ruft tls_set() und username_pw_set() auf
  • Log zeigt beim Verbinden "as 'username'" oder "(no auth)"
  • _on_mqtt_connect() zeigt lesbare Fehlertexte statt rohem rc=5

Upgrade

Keine Migrationsschritte erforderlich. Credentials in [MQTT] werden nach dem Update automatisch genutzt.


Version 0.5.2 2026-03-12

Highlights

Bugfix-Release: 7 E-Mail/SMTP-Probleme behoben, davon ein kritischer (SMTP war nie über die UI konfigurierbar) und ein Sicherheitsproblem (OTP im Betreff).


Behoben

Bug #1 SMTP-Einstellungen speicherbar (kritisch)

In der Benutzerverwaltung (/settings/users) gibt es jetzt eine vollständige SMTP-Konfigurationskarte mit Sofort-Speichern. Bisher musste config.ini manuell editiert werden OTP-Registrierung und Passwort-Reset funktionierten deshalb out-of-the-box nicht.

Neue API-Endpunkte:

  • GET /api/settings/users liefert aktuelle Werte (Passwort nur als Gesetzt/Nicht-gesetzt-Flag)
  • POST /api/settings/users speichert Site-Name, Standard-Rolle, SMTP-Host/-Port/-User/-Passwort/-From, TLS/SSL

Bug #2 Falscher localhost-Fallback

_smtp_config() lieferte 'localhost' wenn [Web_Viewer] fehlte, statt eines leeren Strings. Die Guard-Prüfung if not smtp['host'] griff dadurch nicht und es wurde ein Verbindungsversuch gegen localhost:587 gestartet.

Bug #3 OTP-Code im E-Mail-Betreff (Sicherheit)

Der 6-stellige OTP-Code war Teil des E-Mail-Betreffs ([Bot] Registrierungscode: 123456). Damit war er in Push-Benachrichtigungen, Mail-Server-Logs und Relay-Logs im Klartext sichtbar, ohne die E-Mail zu öffnen. Der Betreff ist jetzt neutral.

Bug #4 Fehlgeschlagenes Resend wurde als Erfolg gemeldet

/register/resend verwarf den Rückgabewert von _send_email(). Bei SMTP-Fehler wurde der Nutzer trotzdem auf die Verify-Seite mit resent=1 weitergeleitet.

Bug #5 Drei verschiedene E-Mail-Validierungen

Neue statische Methode _validate_email(address) mit einheitlichem re.match-Muster. Alle drei Stellen (Register, Resend, Test-Mail) nutzen sie jetzt.

Bug #6 Kein E-Mail-Logging

Neue Datenbanktabelle web_email_logs (analog MeshDD-Bot):

Feld Inhalt
recipient Empfänger-Adresse
subject Betreff
status sent / error / skipped
error_message SMTP-Fehlermeldung (bei error)
created_at Zeitstempel

Bug #7 MIMEMultipart ohne HTML-Part

_send_email() verwendete MIMEMultipart('alternative') auch für reine Plaintext-Mails. Jetzt: ohne html_body-Parameter direktes MIMEText, mit html_body korrektes MIMEMultipart mit beiden Parts.


Upgrade

Keine manuellen Migrationsschritte. Die Tabelle web_email_logs wird beim nächsten Start automatisch angelegt.


Version 0.5.1 2026-03-12

Highlights

Bot-Befehle sind jetzt vollständig im Web Interface konfigurierbar alle 33 Befehle mit Sofort-Speichern ohne Bot-Neustart. Außerdem SMTP-Test direkt aus der Benutzerverwaltung und Bot-Laufzeit im öffentlichen Dashboard.


Neue Features

Bot-Befehle Einstellungsseite

Erreichbar über Einstellungen → Bot-Befehle oder direkt /settings/commands.

Alle Befehle werden in Karten dargestellt, gruppiert nach Kategorie. Oben befinden sich Filter-Pills um schnell zur gewünschten Gruppe zu springen.

Jede Karte zeigt:

  • Einen Enabled-Toggle im Header der Badge wechselt sofort zwischen „Aktiv" (grün) und „Inaktiv" (grau)
  • Alle befehlsspezifischen Parameter als passende Eingabefelder
  • Einen Spinner während des Speicherns und ein ✓ nach Erfolg

Änderungen werden sofort in die config.ini geschrieben und der Bot per config_reload_requested benachrichtigt kein Neustart nötig.

Konfigurierbare Parameter je Kategorie (Auswahl):

Befehl Wichtige Parameter
Path Näherungsmethode, Preset, Reichweite, Repeater-Alter
Prefix Standorte, Geocoding, Gehört/Frei-Tage, Reichweite
Greeter Begrüßungstext, Rollout-Tage, Mesh-Info, Kanäle
Stats Datenspeicherung, Auto-Cleanup, Anonymisierung
Wetter (global) Anbieter, Temperatur- und Windeinheit, Standard-Land
Aurora Standard-Koordinaten
Sports Teams, erlaubte Kanäle

Test-Mail-Modal

In der Benutzerverwaltung (/settings/users) gibt es jetzt den Button Test-Mail. Er öffnet ein Modal in dem eine Empfänger-Adresse eingegeben werden kann. Die Mail wird über die gespeicherte SMTP-Konfiguration verschickt und enthält zur Kontrolle alle verwendeten Parameter (Server, Port, TLS/SSL, Absender). Fehler werden direkt im Modal angezeigt.

Bot-Laufzeit öffentlich

Der Uptime-Counter im Dashboard ist jetzt auch ohne Login sichtbar. Bisher war /api/health nicht in der Public-Whitelist.


Upgrade

Keine Migrationsschritte erforderlich. Die neue Seite /settings/commands ist sofort nach dem Update verfügbar.


Version 0.0.5 2026-03-11

Highlights

Diese Version bringt ein vollständiges Authentifizierungs- und Benutzerverwaltungssystem für das Web Interface, eine MQTT-Verwaltungsseite mit Live-Reconnect sowie automatisches Auffüllen fehlender config.ini-Einträge beim Start.


Neue Features

Benutzerverwaltung & Authentifizierung

Das Web Interface ist jetzt durch ein dreistufiges Rollenkonzept gesichert. Eine ausführliche Beschreibung findet sich in der Authentifizierungs-Dokumentation.

Rolle Rechte
Admin Vollzugriff inkl. Benutzerverwaltung
Trusted Einstellungen & Scheduler bearbeiten
Guest Nur lesend

Ersteinrichtung: Beim ersten Start ohne Benutzer erscheint automatisch ein Setup-Wizard unter /setup. Der erste Account wird Admin.

Registrierung: Neue Benutzer registrieren sich per OTP-E-Mail. Ohne Einladungslink landen sie zunächst im Status Pending und müssen vom Admin freigeschaltet werden.

Einladungslinks: Admins können Links mit voreingestellter Rolle und Ablaufdatum erstellen. Wer einen Einladungslink nutzt, ist nach der Registrierung sofort aktiv.

Öffentliche Seiten

Dashboard (/), Mesh Graph (/mesh) und Contacts (/contacts) sind ohne Login erreichbar. Alle anderen Seiten und schreibenden API-Endpunkte erfordern eine Anmeldung.

MQTT-Einstellungen & Verbindungstest

Die Einstellungsseite MQTT-Broker (Einstellungen → MQTT-Broker) ermöglicht:

  • Server, Port, Transport (TCP / WebSockets), TLS
  • Benutzername und Passwort direkt im Browser setzen
  • Passwort wird nie im Klartext ans Frontend gesendet (password_set-Flag)
  • „Verbindung testen": prüft sofort die Erreichbarkeit mit den eingegebenen Credentials
  • Live-Reload: nach dem Speichern reconnectet PacketCapture automatisch zum Broker kein Bot-Neustart nötig

NINA Bundeswarnservice

Neue Service-Plugin-Konfigurationsseite unter Einstellungen → NINA-Warnungen: AGS-Gemeindeschlüssel, Zielkanal, Schweregrad-Filter und Quellenauswahl (MOWAS, BIWAPP, KATWARN, DWD, LHP) sind ohne Datei-Editieren konfigurierbar.

Config-Defaults & Warning-Toasts

Beim Start prüft der Web Viewer die config.ini auf fehlende Einträge und trägt alle bekannten Sektionen und Keys mit ihrem Standardwert nach ohne bestehende Werte zu überschreiben.

Öffnet man eine Einstellungsseite und Pflichtfelder sind noch leer, erscheinen automatisch gelbe Warning-Toasts (unten rechts) für jeden betroffenen Eintrag.

Betroffene Pflichtfelder je Seite:

Seite Pflichtfelder
Bot-Konfiguration Bot-Name, Serieller Port, Koordinaten
MQTT-Broker Server/Host
NINA-Warnungen AGS-Codes, Zielkanal
Benutzerverwaltung SMTP-Server, Absender-Adresse

Änderungen

  • Logout leitet jetzt auf / (Dashboard) statt auf /login weiter
  • Einstellungs-Dropdown in der Navbar: Bot-Konfig · Scheduler · NINA · MQTT-Broker
  • web-viewer.md: Security-Hinweis aktualisiert Authentication ist implementiert

Bugfixes

  • AttributeError: 'BotDataViewer' has no attribute 'config' beim Initialisieren des Session-Keys behoben
  • Channel-Datalist in /settings/nina war leer
  • _get_template_context() nicht vorhanden → Settings-Routen warfen 500er
  • Navbar zeigte Login-abhängige Links nicht korrekt an

Upgrade

Keine manuellen Migrationsschritte nötig. Beim ersten Start mit 0.0.5 werden automatisch:

  1. Alle fehlenden config.ini-Einträge mit Standardwerten ergänzt
  2. Die Web-User-Datenbanktabellen angelegt (web_users, web_otps, web_invitations)
  3. Auf /setup weitergeleitet wenn noch kein Benutzer existiert

Für die OTP-Registrierung muss SMTP konfiguriert sein (siehe Authentifizierung Konfiguration). Ohne SMTP ist manuelle Benutzeranlage durch den Admin weiterhin möglich.


Neue config.ini-Einträge (0.0.5)

[Web_Viewer]
secret_key                = ""        # einmalig generieren, s. Doku
site_name                 = MeshCore Bot
registration_default_role = guest     # guest | trusted | admin
smtp_host                 = ""
smtp_port                 = 587
smtp_user                 = ""
smtp_password             = ""
smtp_from                 = ""
smtp_tls                  = true
smtp_ssl                  = false

[MQTT]
username                  = ""
password                  = ""
websocket_path            = /mqtt
token_audience            = ""