_active speichert jetzt msgType/area/monitor_only. get_active_alerts() gibt
sortierte Liste zurück. nina.js lädt beim Init und dedupliziert per ID.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
CSS-Variablen für Light/Dark-Mode, Uppercase-Sektionsköpfe,
kein <strong>+<hr> mehr, weicherer Schatten.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
TCPInterface-Konstruktor kehrt zurück bevor das Event aus dem Bibliotheks-Thread
feuert. _conn_event.wait(timeout=10s) wartet sauber auf _on_connection statt
sofort den Fallback auszulösen.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- bot.py: vollständige Payload-Daten für Position, Telemetry (Device+Env),
NodeInfo (hw_model), Routing (error), Traceroute (hops), Neighborinfo (count)
- packets.js: fmtPayload() zeigt alle Felder; TELEMETRY_APP vom eigenen Node
(my_node_id / short_name FTLW) wird unterdrückt und nicht gezählt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Konfiguration speichern löst sofort eine NINA-Abfrage aus (trigger_poll)
- Frontend lädt Config 5s nach Save neu um last_poll-Zeitstempel zu zeigen
- Unterhalb Abfrageintervall-Feld: Datum/Uhrzeit der letzten Abfrage
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Warnmeldungen zeigen jetzt das Herkunftsgebiet (AGS-Regionsname) in
der Weboberfläche (neue Spalte "Gebiet") und im Mesh-Nachrichtentext
(z.B. "[NINA] Schwerwiegend: Sturmböen (Dresden, Stadt)")
- AGS-Code-Tabelle zeigt lesbaren Ortsnamen als zweite Spalte
- Datalist mit allen sächsischen AGS-Codes bei der Eingabe
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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>
- resend_interval: zweiter Intervall fuer erneutes Senden aktiver
Warnmeldungen ins Mesh (nur bei send_to_mesh=true). Standard 3600s.
NinaBot._resend_loop() laeuft als eigener asyncio-Task; _active-Dict
haelt aktive Warnungen vor (Cancel entfernt Eintraege).
- AGS-Code-Verwaltung als Tabelle mit Trash-Button je Zeile statt
Badges mit X-Button.
- Severity-Badges: explizite text-white/text-dark, kein bg-opacity-85
mehr - lesbar in beiden Themes.
- colspan-Fix: leere Alerts-Zeile auf 5 Spalten korrigiert.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Viertes Chart-Panel zeigt Pakettyp-Verteilung der letzten 24h als
Doughnut-Diagramm, farblich nach portnum kodiert.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Version in Navbar aller Seiten (app.js holt /api/stats beim Init)
- Statistiken: Anfragen-Zähler rolling 24h statt Mitternacht-Reset
- Karte: Nodes nach Alter transparent (<24h voll, 24-48h 45%, 48-72h 20%, >72h unsichtbar)
- Legende um Alter-Sektion erweitert
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
meshtastic.node.updated sendet (node, interface), _on_node_updated
akzeptierte nur (node) -> SenderUnknownMsgDataError beim Empfang
von Node-Updates.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fernet-Objekt direkt an EncryptedCookieStorage uebergeben statt
bytes (die intern nochmal base64-encoded wurden).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rollen-basiertes Zugriffsystem (public/user/admin), Registrierung mit
E-Mail-Verifikation, bcrypt Passwort-Hashing, Admin-Benutzerverwaltung.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Store bot-sent messages in DB and broadcast via WebSocket. Sent messages
appear right-aligned with green bubble in the messages panel.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add /me command showing requesting node's info. Add sea-level pressure
and dewpoint to weather response.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Show city name via reverse geocoding in weather response. Allow
specifying a German postal code with plz:XXXXX argument.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add /settings page showing device, LoRa, channels, position, power and
bluetooth/network config read from the Meshtastic node. Rebuild map page
with consistent sidebar layout instead of standalone fullscreen view.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Redesign dashboard and scheduler with AdminLTE-inspired layout: fixed sidebar
navigation, top navbar, info-boxes, card-outline styling, table-striped.
Fix channel names missing on initial load by sending channels before messages.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add message sending from web dashboard with channel selector, new POST /api/send
endpoint, scheduler support for free-text messages (type field), and modernized
dashboard layout with glassmorphism navbar, gradient stat cards, chat bubbles.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>