Table of Contents
- Release Notes
- Version 0.5.5 – 2026-03-12
- Version 0.5.4 – 2026-03-12
- Version 0.5.3 – 2026-03-12
- Version 0.5.2 – 2026-03-12
- Highlights
- Behoben
- Bug #1 – SMTP-Einstellungen speicherbar (kritisch)
- Bug #2 – Falscher localhost-Fallback
- Bug #3 – OTP-Code im E-Mail-Betreff (Sicherheit)
- Bug #4 – Fehlgeschlagenes Resend wurde als Erfolg gemeldet
- Bug #5 – Drei verschiedene E-Mail-Validierungen
- Bug #6 – Kein E-Mail-Logging
- Bug #7 – MIMEMultipart ohne HTML-Part
- Upgrade
- Version 0.5.1 – 2026-03-12
- Version 0.0.5 – 2026-03-11
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-botmit 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()rufttls_set()undusername_pw_set()auf- Log zeigt beim Verbinden
"as 'username'"oder"(no auth)" _on_mqtt_connect()zeigt lesbare Fehlertexte statt rohemrc=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/loginweiter - 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/ninawar 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:
- Alle fehlenden
config.ini-Einträge mit Standardwerten ergänzt - Die Web-User-Datenbanktabellen angelegt (
web_users,web_otps,web_invitations) - Auf
/setupweitergeleitet 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 = ""
Navigation
Einstieg
Konfiguration
Web Viewer
Bot-Befehle
Service Plugins
Weitere