MeshDD-Bot/docs/whats-new-0.9.md
ppfeiffer fa03bcaac2 release: v0.09.00 – Mitarbeiter-Rolle, /config-Seite, Paket-Log-Filter
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-20 23:01:46 +01:00

6.3 KiB
Raw Permalink Blame History

Was ist neu in MeshDD-Dashboard 0.9.x

Aktueller Stand: v0.09.00 · Release-Datum: 2026-02-20


Übersicht

Release 0.9 bündelt alle seit v0.08.15 eingeführten Erweiterungen. Schwerpunkte sind das neue Rollensystem (Mitarbeiter statt User), eine vollständige Konfigurationsseite im Dashboard, eine erweiterte Paket-Log-Filterzeile sowie eine Reihe struktureller Bereinigungen (Konfiguration, Datenbank, Benennung).


Neues Rollensystem: Mitarbeiter

Rollenhierarchie

Public → Mitarbeiter → Admin

Die bisherige Rolle user entfällt vollständig. Alle bestehenden user-Accounts werden automatisch per DB-Migration zu mitarbeiter umgeschrieben.

Bereich Public Mitarbeiter Admin
Dashboard, Karte, Pakete, Nachrichten Ja Ja Ja
Nachrichten senden Nein Ja Ja
Scheduler, NINA, Einstellungen lesen Nein Ja Ja
Scheduler, NINA, Einstellungen bearbeiten Nein Nein Ja
Benutzerverwaltung /admin Nein Nein Ja

Einladungs-Workflow

  1. Admin öffnet /admin → „Mitarbeiter einladen"
  2. Modal: Name + E-Mail eingeben
  3. Backend generiert automatisch ein 12-stelliges Passwort
  4. Einladungsmail mit Login-URL und Passwort wird versendet
  5. Erster Login: Weiterleitung zu /auth/change-password (Pflichtänderung)
  6. Nach dem Passwortwechsel: normaler Zugang

Sidebar: staff-sichtbare Einträge

Scheduler, NINA und Einstellungen sind jetzt in einer Gruppe „Konfigurationen" zusammengefasst und für alle Mitarbeiter (und Admins) sichtbar. Reine Admin-Links (Benutzerverwaltung) sind davon getrennt.

Read-only-Modus für Mitarbeiter

Mitarbeiter sehen Scheduler-Jobs und NINA-Konfiguration, können aber nicht bearbeiten:

  • Scheduler: Schaltflächen „Neuer Job", „Bearbeiten", „Löschen" deaktiviert; Badge „Nur Lesezugriff" in der Aktionen-Spalte.
  • NINA: Alle Eingabefelder und der Speichern-Button sind disabled.

Neue Konfigurationsseite (/config)

Eine neue Admin-Seite ermöglicht die Bearbeitung der Bot-Konfiguration direkt im Dashboard — ohne SSH-Zugriff auf den Server.

Bearbeitbare Bereiche

Abschnitt Felder
Bot Name, Kommando-Präfix
Meshtastic Host, Port
Web Port, Online-Schwellwert (s)
Links Liste mit URL + Bezeichnung (hinzufügen/entfernen)

Die Konfiguration wird direkt in config/config.yaml geschrieben. Der Live-Reload-Mechanismus übernimmt Änderungen ohne Neustart.


Paket-Log: Erweiterte Filterzeile

Unterhalb des bestehenden Typ-Filter-Balkens steht jetzt eine zweite Filterzeile:

[ Von: __ ] [ An: __ ] [ Kanal: [Alle ▾] ] [ Hops ≤: __ ] [ 🔍 Freitext ] [ ✕ ]
Filter Funktion
Von Teilstring auf Node-ID, Langname oder Kurzname
An Teilstring; alle/broadcast für Broadcast-Pakete
Kanal Dropdown mit bekannten Kanälen (aus WS-channels-Event)
Hops ≤ Zahl; filtert auf berechneten Hop-Wert (hop_start hop_limit)
Freitext Suche über alle Spalten (Von, An, Typ, Kanal, Info)
Alle Zusatzfilter zurücksetzen

Alle Filter wirken kombiniert (AND-Logik). Typ-Filter und Zusatzfilter greifen unabhängig voneinander.

Die Filterung erfolgt rein im DOM buildRow() befüllt beim Rendern data-from/to/channel/hops/search für maximale Performance ohne Re-Render.


NINA-Verbesserungen

Quellenkennung im Mesh

Meldungen tragen jetzt die Quelle als Präfix:

[DWD@NINA] Schwerwiegend: Sturmböen (Dresden, Stadt)
[KATWARN@NINA] Mäßig: Starkregen (Meißen)
[NINA] Aufgehoben: ...

UI-Verbesserungen

  • Schalter nebeneinander: „Aktiviert" und „Ins Mesh senden" in einer Zeile
  • Intervalle in Minuten: Eingabe und Anzeige in Minuten (intern weiter Sekunden)
  • Zuletzt gesendet: Zeitstempel der letzten Mesh-Aussendung sichtbar

Konfiguration: Strukturelle Bereinigung

Verzeichnisstruktur

config/
  config.yaml      ← zentrale Konfiguration (Bot, Web, Auth, SMTP, Links)
  scheduler.yaml   ← Scheduler-Jobs
  nina.yaml        ← NINA-Konfiguration
data/
  meshdd.db        ← SQLite-Datenbank
  *.db-wal         ← WAL-Journal (gitignored)
  *.db-shm         ← Shared Memory (gitignored)

.env abgeschafft

Alle Konfigurationswerte (auth.secret_key, smtp.*) sind direkt in config/config.yaml keine separate Secrets-Datei mehr nötig.

Datenbank robuster

  • WAL-Checkpoint (PRAGMA wal_checkpoint(FULL)) vor dem Schließen keine Daten bleiben im Journal
  • Jeder Shutdown-Schritt ist einzeln mit try/except gekapselt db.close() wird auch bei Fehlern in anderen Komponenten immer ausgeführt

Umbenennung: MeshDD-Bot → MeshDD-Dashboard

Alle Seiten-Titel (<title>) und Navbar-Texte wurden von „MeshDD-Bot" auf „MeshDD-Dashboard" umgestellt.


API-Änderungen

Neue Endpunkte

Methode Pfad Beschreibung Auth
GET /api/config Bot-/Web-/Link-Konfiguration lesen Admin
PUT /api/config Konfiguration speichern Admin
POST /api/admin/invite Mitarbeiter einladen (Passwort auto-generiert) Admin
GET /auth/change-password Pflicht-Passwortänderungs-Seite
POST /auth/change-password Neues Passwort setzen Login

Auth-Änderungen bestehender Endpunkte

Endpunkt Vorher Jetzt
POST /api/send require_user_api require_staff_api
GET /api/node/config require_admin_api require_staff_api
GET /api/nina/config require_admin_api require_staff_api
GET /api/nina/alerts require_admin_api require_staff_api
GET /api/scheduler/jobs ohne Auth require_staff_api

Sonstige Fixes

  • upsert_node Race-Condition behoben: INSERT OR IGNORE + UPDATE statt SELECT → INSERT kein UNIQUE constraint failed mehr bei parallelen Node-Updates.
  • Karte: Legende theme-aware (closes #5): CSS-Variablen + JS-Inline-Styles für zuverlässige Light/Dark-Umschaltung im Leaflet-Control-Kontext.
  • Dashboard: channelBreakdown-Card entfernt; Nachrichten-Trenner stärker (Padding + Border-Breite), closes #1.

Versionshistorie 0.9.x

Version Datum Schwerpunkt
0.09.00 2026-02-20 Mitarbeiter-Rolle, /config-Seite, Paket-Log-Filter, Bereinigungen