MeshDD-Bot/CHANGELOG.md
ppfeiffer e788fc7201 fix: NINA mapData nur ohne AGS-Codes abfragen (v0.8.2)
mapData liefert bundesweite Meldungen ohne geografische Filterung.
Mit konfigurierten AGS-Codes deckt der Dashboard-Endpunkt bereits
alle Quellen regional ab – mapData wird dann nicht mehr benötigt
und würde Meldungen außerhalb der konfigurierten Regionen zeigen.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-19 13:27:55 +01:00

22 KiB
Raw Blame History

Changelog

[0.8.2] - 2026-02-19

Fixed

  • NINA mapData geografische Filterung: mapData-Endpunkte werden nur noch abgefragt, wenn keine AGS-Codes konfiguriert sind. Sind AGS-Codes gesetzt, filtert der Dashboard-Endpunkt bereits serverseitig regional (deckt alle Quellen inkl. DWD ab). Vorher wurden bundesweite Meldungen außerhalb der konfigurierten Regionen angezeigt.

[0.8.1] - 2026-02-19

Added

  • NINA Wiederholungsintervall (resend_interval): Zweiter konfigurierbarer Intervall, der aktive Warnmeldungen in regelmäßigen Abständen erneut ins Mesh sendet (nur wenn send_to_mesh=true). Standard: 3600 Sekunden (1 Stunde).
  • NINA AGS-Code-Tabelle: AGS-Codes werden jetzt in einer Tabelle mit Lösch-Button je Zeile angezeigt übersichtlicher als die bisherigen Badge-Einträge.

Fixed

  • Badge-Lesbarkeit: Severity-Badges in der Alerts-Tabelle haben jetzt explizite Textfarben (text-white / text-dark) ohne bg-opacity, damit der Text auf allen Hintergründen und in beiden Themes lesbar bleibt.
  • colspan: Leere Zeile in der Alerts-Tabelle korrekt auf 5 Spalten gesetzt.

[0.8.0] - 2026-02-19

Added

  • NINA-Integration: Anbindung an die NINA Warn-App des BBK (Bundesamt für Bevölkerungsschutz und Katastrophenhilfe). Warnmeldungen werden per HTTP-Polling von warnung.bund.de/api31 abgerufen und bei neuen Meldungen automatisch ins Meshtastic-Netz gesendet.
  • Duales Polling: Zwei parallele Abfragestrategien pro Zyklus:
    • Dashboard (/dashboard/{AGS}.json): Regionale Filterung durch den BBK-Server, deckt alle Quellen für konfigurierte AGS-Codes ab.
    • mapData (/{quelle}/mapData.json): Nationale Abfrage je aktivierter Quelle (Katwarn, BIWAPP, MoWaS, DWD, LHP, Polizei) mit Schweregrad-Filterung. Schließt Lücken, die der Dashboard-Endpunkt nicht abdeckt.
    • Intelligente quellenübergreifende De-Duplikation via ID-Normalisierung (z.B. dwdmap.dwd., mow.mowas.).
  • NINA-Konfigurationsseite (/nina, Admin-only): Separate Webseite zur Verwaltung der NINA-Einstellungen analog zur Scheduler-Seite. Konfigurierbar:
    • Aktivierung / Deaktivierung
    • Abfrageintervall (Sekunden, min. 60)
    • Meshtastic-Kanal für Warnmeldungen
    • Mindest-Schweregrad (Gering / Mäßig / Schwerwiegend / Extrem)
    • AGS-Codes (Amtliche Gemeindeschlüssel) der zu überwachenden Landkreise/Städte
    • Quellen-Auswahl (Katwarn, BIWAPP, MoWaS, DWD, LHP, Polizei)
    • „Ins Mesh senden"-Schalter: aus = Monitor-Modus (nur Weboberfläche, kein Mesh-Versand)
  • Voreinstellung Raum Dresden: nina.yaml enthält 5 AGS-Codes als Standard: Stadt Dresden, LK Meißen, LK Sächsische Schweiz-Osterzgebirge, LK Bautzen, LK Görlitz
  • Live-Anzeige empfangener NINA-Warnmeldungen in der Weboberfläche via WebSocket (nina_alert-Event).
  • NINA-Sidebar-Eintrag in allen Seiten (Admin-only, Icon: bi-shield-exclamation).
  • nina.yaml als Hot-reload-fähige Konfigurationsdatei (analog zu scheduler.yaml).

[0.7.1] - 2026-02-18

Changed

  • Standard-Theme: Hell-Theme (Light) ist jetzt der Default für neue Besucher (bisher: Dark). Gespeicherte Benutzereinstellung bleibt erhalten.

[0.7.0] - 2026-02-18

Changed

  • Dockerfile: EXPOSE von 8080 auf 8081 korrigiert (entspricht Web-Port in config.yaml).
  • Dockerfile: HEALTHCHECK hinzugefügt prüft /api/stats alle 30s, Timeout 5s, Start-Wartezeit 20s, max. 3 Versuche.
  • docker-compose.yml: healthcheck und logging (json-file, 10 MB / 3 Dateien) ergänzt.
  • conf/config.yaml: Version auf 0.7.0 und Verbindungsdaten aktualisiert.

[0.6.15] - 2026-02-18

Added

  • Scheduler Template-Variablen: Nachrichten-Jobs können Platzhalter nutzen: {time}, {date}, {datetime}, {weekday}, {nodes}, {nodes_24h}. Werden beim Ausführen serverseitig aufgelöst.
  • Scheduler UI: Bei Typ „Nachricht" werden klickbare Variablen-Badges unter dem Eingabefeld angezeigt Klick fügt Variable an Cursorposition ein.
  • Footer: Auf allen Seiten fixer Footer mit Copyright „MeshDD / PPfeiffer", Versionsnummer und Monat/Jahr (MM/YYYY).

Fixed

  • Sauberer Shutdown: WebSocket-Verbindungen werden vor runner.cleanup() explizit geschlossen (ws_manager.close_all()), so dass der Prozess nicht mehr auf hängende WS-Loops wartet.

[0.6.14] - 2026-02-18

Added

  • Dashboard: Viertes Diagramm "Pakettypen (24h)" Doughnut-Chart mit Pakettyp-Verteilung der letzten 24h aus der packets-Tabelle, farblich nach Typ kodiert.

[0.6.13] - 2026-02-18

Added

  • Version in Navbar aller Seiten sichtbar (via app.js initPage() + /api/stats).
  • Karte Alter-Transparenz: Nodes < 24h voll sichtbar (0.9), 2448h halb transparent (0.45), 4872h stark transparent (0.2), älter als 72h werden nicht mehr angezeigt. Legende um Alter-Sektion erweitert.

Changed

  • Statistiken Rolling Window: Anfragen-Zähler und Kanal-Breakdown nutzen jetzt rollendes 24h-Fenster (jetzt minus 24h) statt Mitternacht-Reset.

[0.6.12] - 2026-02-18

Fixed

  • Paket-Log: Typ-Badges nutzen jetzt solide bg-{color}-Hintergründe mit text-white (bei Warning: text-dark) statt bg-opacity-20 text-{color} garantiert lesbaren Typ-Label-Text in jedem Theme.

[0.6.11] - 2026-02-18

Changed

  • Paket-Log: Badges gleich breit (CSS min-width:5.5rem, zentriert), Typ-Filter-Pills in Typ-Farbe eingefärbt (aktiv: gefüllt, inaktiv: Outline), unbekannte/undekodierbare Pakete (leerer Portnum) als Typ „?" im Filter sichtbar, Kanal-Spalte zeigt Kanalname wenn verfügbar.

[0.6.10] - 2026-02-18

Added

  • Paket-Log (/packets): neue öffentliche Seite zeigt alle empfangenen Meshtastic-Pakete in Echtzeit via WebSocket mit Tabelle (Zeit, Von, An, Typ, Kanal, SNR, RSSI, Hops, Info), Typ-Filterleiste, Pause- und Löschen-Funktion, max. 300 Einträge im Browser.
  • DB: packets-Tabelle + insert_packet() / get_recent_packets() in database.py.
  • bot.py: _handle_packet() loggt alle empfangenen Pakete mit Payload-Zusammenfassung (Text, Position, Telemetrie, NodeInfo) und broadcasted sie über WebSocket an alle Clients.
  • webserver.py: Route /packets + API /api/packets + initial_packets im WS-Initial-Payload.
  • Sidebar: Eintrag „Pakete" (öffentlich) zwischen Karte und Einstellungen.

Changed

  • Node-Modal: von modal-lg auf modal-xl + modal-dialog-scrollable vergrößert, Karten-Höhe von 250 px auf 300 px erhöht.

[0.6.9] - 2026-02-18

Fixed

  • bot.py: _on_node_updated Signatur um interface=None ergänzt meshtastic.node.updated sendet (node, interface), fehlender Parameter führte zu SenderUnknownMsgDataError und Absturz des Node-Handlers.

[0.6.8] - 2026-02-18

Fixed

  • bot.py: pub.subscribe() wurde nach TCPInterface() aufgerufen → connection.established und node.updated-Events beim Start wurden verpasst; Nodes nicht geladen, Status blieb "Getrennt". Subscriptions werden jetzt VOR dem Konstruktor registriert + Fallback danach.
  • HTML: tabler.min.js exportiert bootstrap nicht global → new bootstrap.Modal() schlug fehl, Seiten brachen ab. Zurück zu bootstrap.bundle.min.js (Tabler CSS bleibt).
  • dashboard.js: Bootstrap-4-Klasse badge-pill durch rounded-pill (Bootstrap 5) ersetzt.
  • style.css: CSS-Variablen-Typo --tblr-bg-body--tblr-body-bg.

[0.6.7] - 2026-02-17

Changed

  • Tabler 1.4.0 als Admin-Theme eingebunden: ersetzt Bootstrap CSS/JS in allen 6 HTML-Seiten
  • style.css komplett überarbeitet mit Tabler-Variablen: Inter-Font, subtile Karten-Schatten, verfeinerte Sidebar (Rounded Active-Links), Hover-Animation auf Info-Boxen, pulsierender Status-Dot
  • Navbar-Höhe 46px → 48px, Sidebar-Breite auf 210px, Karten-Header-Schrift verfeinert

[0.6.6] - 2026-02-17

Added

  • Nachrichten-Kanalfilter: Filter-Buttons im Nachrichten-Card-Header ("Alle" + ein Button pro Kanal)
  • Neue Nachrichten werden sofort gefiltert; data-channel-Attribut auf jedem .msg-item
  • renderMsgFilterBar() und applyMsgFilter() in dashboard.js

[0.6.5] - 2026-02-17

Added

  • Dark Mode Kartentiles: CartoDB Dark Matter bei dunklem Theme, OpenStreetMap bei hellem (Karte + Node-Modal)
  • themechange Custom-Event in app.js alle Karten reagieren live auf Theme-Wechsel
  • 3 Charts im Dashboard: Kanal-Anfragen (Doughnut), Hop-Verteilung (Bar), Hardware Top 5 (Bar)
  • Charts passen sich automatisch dem Dark/Light Mode an
  • Nodes-Tabelle: Suchfeld + Online-Filter + Sortierung per Klick auf Spaltenköpfe

[0.6.4] - 2026-02-17

Added

  • Bot-Uptime als 4. Info-Box im Dashboard (live via WebSocket)
  • Meshtastic-Verbindungsstatus als zweiter Status-Dot in der Navbar
  • bot_status WebSocket-Event bei Connect/Disconnect des Meshtastic-Nodes
  • uptime und bot_connected in stats_update und /api/stats

[0.6.3] - 2026-02-17

Fixed

  • WebSocket sendet initial_messages und new_message nur noch an authentifizierte Clients
  • WebSocketManager unterscheidet jetzt clients (alle) und auth_clients (eingeloggt)

[0.6.2] - 2026-02-17

Changed

  • Refactor: Gemeinsames static/js/app.js Modul extrahiert
  • Eliminiert ~360 Zeilen doppelten Code aus allen 5 Seiten (Navbar, Sidebar, Theme, escapeHtml)
  • Sidebar-HTML wird jetzt dynamisch per initPage() injiziert mit automatischer Active-Link-Erkennung

[0.6.1] - 2026-02-17

Added

  • Dockerfile fuer Container-Betrieb (python:3.12-slim)
  • docker-compose.yml mit Host-Netzwerk und Named Volume fuer SQLite
  • conf/ Verzeichnis mit Beispiel-Konfigurationsdateien fuer Docker
  • .dockerignore fuer saubere Docker-Builds

[0.6.0] - 2026-02-17

Summary

  • Node-Detail-Modal mit Minikarte im Dashboard
  • Anfragen-Tracking pro Kanal mit taeglichem Reset
  • Kanal-Badges fuer alle Kanaele im Dashboard

Added

  • Node-Detail-Modal: Klick auf Node-Zeile oeffnet Modal mit allen Node-Daten und Leaflet-Minikarte
  • Anfragen-Aufschluesselung pro Kanal mit Kanalnamen im Dashboard
  • Channel-Spalte in der commands-Tabelle (mit automatischer DB-Migration)

Changed

  • Anfragen-Zaehler zeigt nur Anfragen von heute (Reset um Mitternacht)
  • Kanal-Badges zeigen immer alle Kanaele aufsteigend sortiert (auch bei 0 Anfragen)
  • Kanal-Badge in Nachrichten im Light-Mode besser lesbar

[0.5.10] - 2026-02-17

Fixed

  • Kanal-Badge in Nachrichten im hellen Modus besser lesbar (bg-secondary statt bg-body-secondary)

[0.5.9] - 2026-02-17

Changed

  • Kanal-Badges zeigen immer alle Kanaele aufsteigend sortiert mit Kanalnamen (auch bei 0 Anfragen)
  • Label-Zeile "Anfragen/Kanal" entfernt

[0.5.8] - 2026-02-17

Changed

  • Anfragen-Zaehler zeigt nur noch Anfragen von heute (Reset um Mitternacht)
  • Kommando-Badges entfernt, nur noch Kanal-Aufschluesselung angezeigt

[0.5.7] - 2026-02-17

Added

  • Anfragen-Aufschluesselung pro Kanal mit Kanalnamen im Dashboard
  • Channel-Spalte in der commands-Tabelle (mit DB-Migration fuer bestehende DBs)

[0.5.6] - 2026-02-17

Added

  • Node-Detail-Modal im Dashboard: Klick auf Node-Zeile oeffnet Modal mit allen Node-Daten
  • Leaflet-Minikarte im Modal zeigt Node-Position (oder "Keine Position" Hinweis)
  • Zwei-Spalten-Layout: Datentabelle links, Karte rechts (responsive)

[0.5.5] - 2026-02-17

Changed

  • SMTP-Versand auf EmailMessage + aiosmtplib.SMTP (async context manager) umgestellt
  • Plaintext-Fallback fuer nicht-HTML-faehige E-Mail-Clients
  • SMTP-Host zurueck auf ssl0.ovh.net

[0.5.4] - 2026-02-16

Added

  • Admin: Benutzer direkt anlegen mit Passwort und Rollenwahl
  • Admin: Benutzer bearbeiten (Name, E-Mail, Rolle) per Modal
  • Admin: Passwort zuruecksetzen mit optionalem E-Mail-Versand
  • Admin: Info-Mail mit Zugangsdaten an Benutzer senden
  • Passwort-Generator (crypto.getRandomValues) in Admin-UI
  • Verifikationslink wird immer im Log ausgegeben (nicht nur ohne SMTP)

Changed

  • Admin-Seite komplett ueberarbeitet mit Modals fuer alle Aktionen
  • E-Mail-Funktionen um send_user_info_email erweitert

[0.5.3] - 2026-02-16

Changed

  • Zugangsdaten (AUTH_SECRET_KEY, SMTP-*) aus config.yaml in .env-Datei ausgelagert
  • Neuer config.env() Helper fuer Umgebungsvariablen
  • .env.example als Vorlage hinzugefuegt
  • E-Mail-Versand in gemeinsame _send_email() Hilfsfunktion refaktoriert

[0.5.2] - 2026-02-16

Fixed

  • SMTP-Versand: TLS (Port 465) und STARTTLS (Port 587) automatisch anhand des Ports

[0.5.1] - 2026-02-16

Fixed

  • Fernet key setup fuer EncryptedCookieStorage korrigiert (doppelte Base64-Kodierung)

[0.5.0] - 2026-02-16

Added

  • Benutzerverwaltung mit Session-basierter Authentifizierung
  • Registrierung mit E-Mail-Verifikation (OTP-Token via aiosmtplib)
  • Passwort-Hashing mit bcrypt (12 Rounds, min. 8 Zeichen)
  • Benutzerrollen: public (nicht eingeloggt), user, admin
  • Login/Register/Passwort-vergessen Seite (/login, /register)
  • Admin-Benutzerverwaltung (/admin) mit Rolle aendern, verifizieren, loeschen
  • Session-Management via aiohttp-session mit EncryptedCookieStorage
  • Auth-Middleware setzt request['user'] auf allen Routen
  • API-Endpoint GET /api/auth/me fuer Frontend-Rollenabfrage
  • Auth-Routen: login, register, logout, verify, set-password, forgot-password, reset-password
  • Admin-API: users CRUD, Rolle aendern, manuell verifizieren
  • Navbar zeigt User-Name + Logout oder Login-Button auf allen Seiten
  • Sidebar zeigt Scheduler/Settings/Admin nur fuer Admins (JS-gesteuert)

Changed

  • Dashboard: Nachrichten-Card und Sende-Card nur fuer eingeloggte User sichtbar
  • API /api/send erfordert User-Login
  • API /api/node/config, /api/scheduler/* erfordern Admin-Rolle
  • Neue DB-Tabellen: users, tokens, email_logs
  • config.yaml: auth + smtp Sektionen hinzugefuegt
  • requirements.txt: bcrypt, aiohttp-session, cryptography, aiosmtplib

[0.4.0] - 2026-02-16

Summary

  • Node-Einstellungen Seite, Karte im Sidebar-Layout
  • Wetter mit Ortsnamen, PLZ-Support, Luftdruck und Taupunkt
  • /me Befehl, Ping mit Hop-Anzahl
  • Gesendete Nachrichten im Dashboard mit gruener Bubble
  • Sende-Card als eigene Komponente, Command-Prefix "?"

[0.3.15] - 2026-02-16

Changed

  • Debug-Logging aus _send_text entfernt

[0.3.14] - 2026-02-16

Changed

  • Command-Prefix von "/" auf "?" geaendert
  • Channel-Combobox in Sende-Card breiter (180px) fuer vollstaendige Channelnamen
  • Debug-Logging in _send_text fuer Diagnose der Nachrichtenspeicherung

[0.3.13] - 2026-02-16

Fixed

  • Gesendete Nachrichten werden jetzt vor dem Radio-Send gespeichert und broadcastet
  • Getrenntes Exception-Handling fuer DB-Store und Radio-Send

[0.3.12] - 2026-02-16

Fixed

  • Eigene Nachrichten-Echos werden in _handle_packet gefiltert (keine Doppelspeicherung)
  • Bot-Nachrichten erscheinen korrekt im Dashboard-Nachrichtenfenster

[0.3.11] - 2026-02-16

Changed

  • Sende-Zeile als eigene Card mit gruener Oberkante oberhalb der Nodes/Nachrichten-Cards
  • Nachrichten-Card ohne Footer (schlanker)

[0.3.10] - 2026-02-16

Added

  • Gesendete Bot-Nachrichten werden im Nachrichtenfenster angezeigt
  • Eigene Nachrichten mit gruener Bubble und rechtsbuendiger Ausrichtung
  • Bot-Nachrichten werden in DB gespeichert und via WebSocket broadcastet

[0.3.9] - 2026-02-16

Added

  • Neuer Befehl /me zeigt eigene Node-Infos (Name, HW, Hops, SNR, RSSI, Batterie, Position)
  • Wetter zeigt Luftdruck NN (hPa) und Taupunkt (°C)

[0.3.8] - 2026-02-16

Changed

  • Ping-Antwort zeigt Hop-Anzahl des anfragenden Nodes (z.B. "Pong ueber 2 Hops!")

[0.3.7] - 2026-02-16

Added

  • Weather-Befehl zeigt Ortsnamen via Reverse-Geocoding (Nominatim)
  • Optionales Argument plz:XXXXX fuer Wetter nach deutscher Postleitzahl
  • Geocoding-Methoden _geocode_plz() und _reverse_geocode() im Bot

Changed

  • Help-Text zeigt plz:XXXXX Option beim Weather-Befehl

[0.3.6] - 2026-02-15

Added

  • Node-Einstellungen Seite (/settings) zeigt Geraet, LoRa, Channels, Position, Power, Bluetooth/Netzwerk
  • Neuer API-Endpoint GET /api/node/config liest Config vom lokalen Meshtastic-Node
  • get_node_config() Methode im Bot (liest localConfig, myInfo, metadata via Protobuf)
  • Sidebar-Eintrag "Einstellungen" mit Gear-Icon auf allen Seiten

Changed

  • Karte (/map) im Sidebar-Layout statt Vollbild (Top-Navbar, Sidebar, Content-Wrapper)
  • Karte oeffnet im selben Tab statt target="_blank"
  • Status-Info und Node-Count in Karten-Navbar integriert
  • Map-Styles (Tooltip, Legende) in zentrale style.css verschoben
  • Sidebar-Navigation auf allen 4 Seiten konsistent (Dashboard, Scheduler, Karte, Einstellungen)

[0.3.5] - 2026-02-15

Changed

  • Dashboard und Scheduler auf AdminLTE-Style umgestellt
  • Feste Sidebar-Navigation (Dashboard, Scheduler, Karte) mit Active-State
  • Fixed Top-Navbar mit Branding, Status-Dot und Theme-Toggle
  • Content-Wrapper mit leicht abgesetztem Hintergrund
  • Info-Boxes im AdminLTE-Stil (Icon-Spalte + Inhalt) statt Cards
  • Card-Outline mit farbiger Oberkante (info/warning) statt Borders
  • Table-Striped fuer bessere Lesbarkeit
  • Sidebar responsive: auf Mobile als Overlay mit Backdrop
  • Einheitliches Layout auf Dashboard und Scheduler

[0.3.4] - 2026-02-15

Fixed

  • Kanalnamen in Nachrichten fehlten beim Laden (Channels werden jetzt vor Messages gesendet)

Changed

  • Dashboard deutlich kompakter: weniger Padding, kleinere Schriftgroessen
  • Stat-Cards, Navbar, Panels und Nachrichten platzsparender
  • Hover-Animationen und Pulse-Effekt entfernt (schlichter)

[0.3.3] - 2026-02-15

Changed

  • Dashboard-Layout modernisiert: Glassmorphism-Navbar (sticky, blur-Effekt)
  • Stat-Cards mit Gradient-Akzentlinie, dezenten Hintergrund-Icons und Hover-Lift
  • Nachrichten als Chat-Bubbles statt flache Listeneintraege
  • Buttons und Badges als Rounded-Pills fuer moderneren Look
  • Sende-Leiste mit eigenem abgesetztem Styling
  • Panel-Cards borderless mit Soft-Shadow
  • Node-Count-Badge als Pill mit halbtransparentem Hintergrund
  • Status-Dot mit sanfter Pulse-Animation bei Verbindung
  • Breakdowns-Leiste mit subtilerem Hintergrund

[0.3.2] - 2026-02-15

Added

  • Nachrichten senden direkt aus dem Dashboard (Channel-Dropdown + Textfeld)
  • Neuer API-Endpoint POST /api/send zum Senden von Textnachrichten
  • send_message() Methode im Bot fuer freie Textnachrichten
  • Scheduler unterstuetzt neuen Typ "Nachricht" neben "Kommando"
  • Typ-Auswahl (Kommando/Nachricht) im Scheduler-Modal mit dynamischem Label
  • Typ-Spalte in der Scheduler-Tabelle

[0.3.1] - 2026-02-15

Added

  • Scheduler-Feature: zeitgesteuerte Bot-Kommandos via Cron-Ausdruecke
  • Neue Datei scheduler.yaml fuer Job-Konfiguration mit File-Watcher (Live-Reload)
  • Eigener minimaler Cron-Parser (Minute, Stunde, Tag, Monat, Wochentag)
  • Scheduler-Webseite unter /scheduler zum Verwalten der Jobs (CRUD)
  • REST API: GET/POST/PUT/DELETE /api/scheduler/jobs
  • Live-Updates der Scheduler-Seite via WebSocket
  • execute_command() Methode im Bot fuer programmatische Kommando-Ausfuehrung
  • Scheduler-Link in der Dashboard-Navbar

[0.3.0] - 2026-02-15

Added

  • Produktiver Betrieb als Systemd-Service

[0.2.6] - 2026-02-15

Added

  • WordPress-Beitrag unter docs/wordpress-beitrag.html
  • Systemd Service-File meshdd-bot.service
  • Nachrichten-Splitting mit [x/y] Nummerierung

Changed

  • Pause zwischen gesplitteten Nachrichten auf 3 Sekunden erhöht

[0.2.5] - 2026-02-15

Added

  • Automatisches Aufteilen langer Nachrichten (max 170 Zeichen) mit 1,5s Pause

Changed

  • /mesh Befehl: bessere Lesbarkeit mit Absätzen und Einrückungen
  • Hop-Verteilung: "Direkt", "1 Hop", "2 Hops" statt "0h", "1h", "2h"

[0.2.4] - 2026-02-15

Added

  • Neuer Befehl /mesh - zeigt Mesh-Netzwerk-Infos (Nodes online/gesamt, aktiv 24h, Positionen, Hop-Verteilung, Top-Hardware)

[0.2.3] - 2026-02-15

Added

  • Kommando-Tracking in der Datenbank (neue Tabelle commands)
  • Stats Card "Aktiv (24h)" zeigt Nodes der letzten 24 Stunden
  • Stats Card "Anfragen" zeigt beantwortete Bot-Kommandos
  • Kommando-Aufschlüsselung als Badges in voller Breite (z.B. /help 5, /ping 3)

Changed

  • Stats Cards von 4er auf 3er Grid umgestellt plus Breakdown-Zeile
  • Bot /stats Kommando zeigt aktualisierte Statistiken

[0.2.2] - 2026-02-15

Changed

  • SNR-Spalte rechtsbündig, Batterie-Spalte linksbündig
  • Spaltenabstände in der Nodesliste reduziert (kompakteres Layout)
  • Spaltenüberschrift "Zuletzt gesehen" zu "Zuletzt" gekürzt

[0.2.1] - 2026-02-15

Changed

  • Stats Cards kompakter (kleinerer Padding und Schrift)
  • Batteriestatus mit Bootstrap Icons und Farbcodierung (grün/gelb/rot)
  • Version wird in der Navbar angezeigt
  • Karte fittet beim Öffnen auf alle Nodes

[0.2.0] - 2026-02-15

Added

  • Zentrale config.yaml mit Live-Reload (File-Watcher)
  • Konfigurierbarer Command-Prefix (Standard: /)
  • Kanalnamen in der Nachrichtenliste
  • Hops-Spalte in der Nodes-Tabelle
  • Karte: Farbcodierung der Nodes nach Hop-Anzahl mit Legende
  • Karte: Tooltip mit Node-Infos beim Hover
  • Hell/Dunkel Theme-Umschalter im Dashboard
  • Node-Namen (LongName/ShortName) werden korrekt angezeigt
  • Nachrichten werden beim Connect aus der DB geladen
  • Wetter-Fallback auf Dresden Zentrum bei fehlender Position

Changed

  • Konfiguration von Environment-Variablen auf config.yaml umgestellt
  • Version wird in config.yaml statt version.py verwaltet

Removed

  • Git pre-commit Hook (manuelle Versionierung)
  • version.py (ersetzt durch config.yaml)

[0.1.2] - 2026-02-15

Changed

  • Auto-commit update

[0.1.1] - 2026-02-15

Changed

  • Dashboard auf Bootstrap 5.3 Dark Theme umgestellt
  • Bootstrap Icons hinzugefügt
  • Responsive Stat-Cards, verbessertes Node-Table-Layout
  • Online-Nodes werden grün hervorgehoben

[0.1.0] - 2026-02-15

Added

  • Initial release
  • Meshtastic Bot mit TCP-Verbindung
  • Bot-Kommandos: !ping, !nodes, !info, !help, !weather, !stats, !uptime
  • SQLite-Datenbank für Nodes und Nachrichten
  • Web-Dashboard mit Live-Updates via WebSocket
  • Leaflet-Karte mit Node-Positionen
  • Automatische Versionierung via Git pre-commit Hook