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>
- 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>
- 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>
Explizite Textfarben (text-dark/text-white) für Typ-Badges hinzugefügt,
damit die Beschriftung auf bg-warning/bg-info Hintergrund lesbar ist.
Co-Authored-By: Claude Opus 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>
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 /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>
- Track bot command responses in new `commands` DB table
- Stats cards: total nodes, active 24h, total commands answered
- Full-width command breakdown row with badges per command
- Update bot /stats response
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Stats cards compacter with smaller font and padding
- Battery status with Bootstrap Icons and color coding
- Version displayed in navbar from config
- Map fits all nodes on open with invalidateSize
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Central config.yaml with live-reload file watcher
- Configurable command prefix (default: /)
- Light/dark theme toggle with localStorage persistence
- Map: hop-based node coloring with legend, hover tooltips
- Dashboard: node long names, hop column, channel names in messages
- Load existing messages on WebSocket connect
- Weather fallback to Dresden center
- Remove version.py and pre-commit hook
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace custom CSS layout with Bootstrap 5.3, add Bootstrap Icons,
responsive card grid for stats, improved nodes table with hardware
column, and styled message list. Online nodes highlighted in green.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implements full MeshDD-Bot with TCP connection to Meshtastic devices,
SQLite storage for nodes/messages, aiohttp web dashboard with WebSocket
live updates, and Leaflet.js map view with color-coded node markers.
Includes bot commands (!ping, !nodes, !info, !help, !weather, !stats,
!uptime) and automatic version bumping via pre-commit hook.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>