Commit graph

7 commits

Author SHA1 Message Date
ppfeiffer 07676a8c96 feat(nina): Quellenkennung, Schalter nebeneinander, Min.-Intervalle, last_sent (closes #2)
- _format_alert: Präfix [SOURCE@NINA] je nach Quelle
- _send(): _last_sent bei Mesh-Versand setzen
- get_config(): last_sent zurückgeben
- nina.html: Toggles nebeneinander (d-flex gap-4), Intervall-Labels in Min.,
  lastSent-Element ergänzt
- nina.js: applyConfig ÷60 / Speichern ×60, lastSent befüllen

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-20 22:19:04 +01:00
ppfeiffer 76f04105b7 fix(ui): channelBreakdown entfernt + Nachrichten-Trenner stärker (closes #1)
- index.html: channelBreakdown-Card entfernt
- dashboard.js: chBreakdown-Befüllungsblock entfernt
- style.css: .msg-full-item padding .6→.75rem, border 1px→2px

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-20 22:13:24 +01:00
ppfeiffer b431797d32 fix(db): upsert_node Race-Condition behoben (UNIQUE constraint)
INSERT OR IGNORE + UPDATE statt SELECT → INSERT eliminiert den
UNIQUE-constraint-Fehler bei konkurrierenden async-Aufrufen.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-20 22:08:10 +01:00
ppfeiffer fd9eb99b6a feat(db): Initialen Admin-User beim ersten Start anlegen
Wenn beim Start keine User in der Datenbank vorhanden sind, wird
automatisch ein verifizierter Admin angelegt:
  E-Mail: admin@localhost
  Passwort: changeme

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-20 22:03:19 +01:00
ppfeiffer 57182c5412 fix(db): Datenbank nach data/ verschoben, WAL-Checkpoint + robuster Shutdown
- database.path in config.yaml: meshdd.db → data/meshdd.db
- data/.gitkeep: Verzeichnis in Git verankert, *.db-wal/shm gitignored
- database.py: PRAGMA wal_checkpoint(FULL) vor db.close() für sauberes Schließen
- main.py: Shutdown-Schritte einzeln mit try/except gekapselt;
  db.close() wird jetzt auch bei Fehlern in vorherigen Schritten ausgeführt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-20 21:59:40 +01:00
ppfeiffer 261f0dac13 refactor(config): .env in config.yaml integriert
- auth.secret_key und smtp.* direkt in config/config.yaml aufgenommen
- config/env.example entfernt, config/config.example.yaml als Vorlage hinzugefügt
- meshbot/auth.py: config.env() → config.get() für alle Auth/SMTP-Werte
- meshbot/config.py: ENV_PATH, _load_env(), env() entfernt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-20 21:47:56 +01:00
ppfeiffer 4b9dd45f05 refactor(config): Konfigurationsdateien nach config/ verschoben (closes #3)
- config.yaml, nina.yaml, scheduler.yaml aus Root → config/ verschoben
- conf/ (env.example, nina.yaml, scheduler.yaml, config.yaml) gelöscht
- meshbot/config.py, nina.py, scheduler.py: Pfade auf config/ aktualisiert
- .gitignore: config/.env und .forgejo_token ergänzt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-20 21:37:11 +01:00