161 Commits

Author SHA1 Message Date
Hermes Agent 63269b18c4 feat: UI-Text-Übersetzung — Kommentar-Formular, Welcome-Overlay, Footer, Labels
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 11m3s
- __() Funktion + UI_TEXT Dict mit 16 Schlüsselbegriffen (DE→EN/FR/ES)
- Detailseite: serverseitig via f-string {__(...)}
- Indexseite: clientseitig via JS-Text-Walker + placeholder-Übersetzung
- _ui_text_json() injiziert Übersetzungen als JSON ins Dropdown-Script
- Übersetzte Elemente: Kommentar-Formular, Zurück-Link, Aufrufe, Kommentare,
  Welcome-Overlay (Willkommen/Nicht mehr anzeigen/Alles klar), Footer
2026-07-16 08:34:36 +02:00
Hermes Agent 180a77aa8b feat: Mehrsprachigkeit v2 — Flag-Dropdown auf allen Seiten + localStorage
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 12m22s
- Sprachwahl per Flag-only Dropdown (🇩🇪🇬🇧🇫🇷🇪🇸) in Header auf Index + Detail
- localStorage-Persistenz: Sprache bleibt über Seitenwechsel erhalten
- Kommentare werden mitübersetzt und in translations-Tabelle gecached
- _lang_dropdown_html() als zentrale Hilfsfunktion
- Mobile-First: Dropdown statt 4 Buttons — 44px Touch-Target
2026-07-16 08:23:17 +02:00
Hermes Agent b46dafef08 fix: doppelten Hamburger-Button + fehlendes <header>-Tag repariert
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 12m43s
2026-07-16 08:12:56 +02:00
Hermes Agent 6a55a3e475 feat: Mehrsprachigkeit EN/FR/ES via Mistral + Sprachumschalter
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 11m29s
- Übersetzung per ministral-3b-latest (on-demand + DB-Cache)
- Sprachumschalter im Detailseiten-Header (DE/EN/FR/ES)
- ?lang= Query-Parameter auf /beitrag/<id>
- Neue translations-Tabelle mit submission_id+lang UNIQUE
2026-07-16 08:04:10 +02:00
Hermes Agent 5a50df7923 feat: Videos in Beitragsansicht autoplay (muted+loop+playsinline)
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 14m58s
2026-07-16 00:15:37 +02:00
Hermes Agent af0af785ab fix: Logo-Größe einheitlich 38px auf allen Seiten
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 10m55s
Vorher: Index=38px, Detail=30px, Admin=34px → Sprung je nach Ansicht
Jetzt: alle Views einheitlich 38px (height:38px;width:auto)
2026-07-16 00:14:46 +02:00
Hermes Agent ebf6e0e6fa fix: Herz-Icon ohne blauen Hintergrund — JS-Inline-Styles entfernt
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 12m16s
Die JavaScript-Initialisierung und Click-Handler setzten
btn.style.background = '#20228a' und ueberschrieben die CSS-Regel
background:none. Entfernt in beiden Code-Pfaden.
2026-07-16 00:13:24 +02:00
Hermes Agent a3d06f0f90 fix: BSN Assistent — keine Emojis/Icons in Antworten
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 10m19s
2026-07-15 23:05:19 +02:00
Hermes Agent f145b815e3 feat: Mistral API (ministral-3b-latest) + Theme-Variablen-System
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 5s
- Chat-Endpoint: datenhimmel → Mistral API (api.mistral.ai/v1)
- Model: ministral-3b-latest (max_tokens=400, temp=0.4)
- API-Key aus MISTRAL_API_KEY env-Variable (nicht mehr config.yaml)
- theme.css als zentrales Variablen-System (nur :root tokens + reset)
- theme.css wird ZUSÄTZLICH geladen — alle <style>-Blöcke bleiben intakt
- Kein Layout-Bruch: alle bestehenden Styles funktionieren weiter
2026-07-15 23:02:52 +02:00
Hermes Agent 9016977158 refactor: zentrales Theme-System — alle CSS in theme.css
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 14m39s
- 11 <style>-Blöcke (623 Zeilen) aus app.py entfernt
- 1485 Zeilen theme.css mit CSS-Custom-Properties
- Alle Design-Tokens als Variablen: Farben, Schrift, Abstände, Radien, Schatten
- Body-Klassen (.public, .admin, .welcome, .toast-page, .legacy-table, .test-page)
- Alle Herz-Buttons identisch: .stat-like-btn, .detail-like-btn, .comment-like-btn
- Bei Design-Änderungen nur noch EINE Datei anpassen

Noch 135 inline style='...' — kommen in separatem Refactoring
2026-07-15 22:55:59 +02:00
Hermes Agent eda106849e fix: einheitliche rote Herzen überall — kein Blau, keine Invertierung
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 13m20s
- .detail-like-btn: SVG fill=#EF4444, liked kein background
- .comment-like-btn: SVG fill=#EF4444, border entfernt, liked kein background
- Alle drei Button-Typen (.stat-like, .detail-like, .comment-like) jetzt identisch:
  Default: rote gefüllte Herzen ohne Border
  Liked: nur rote Herzen, kein Hintergrundwechsel
- media_path-Check: os.path.exists(path) → (MEDIA_DIR / basename).exists()
2026-07-15 22:47:20 +02:00
Hermes Agent 6ab03fbe85 fix: graue Ränder entfernt — .text-only + .stat-like-btn
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 13m47s
- .text-only: border:1px solid #F3F4F6 → entfernt (keine Card-Rahmen)
- .stat-like-btn: border:1px solid #E5E7EB → border:none (kein Button-Rand)
- Herz bleibt solid red #EF4444 im unliked state
2026-07-15 22:41:50 +02:00
Hermes Agent 6600d5e346 fix: Herz-Icon solid red (#EF4444) + CSS liked-state fill
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 12m19s
- SVG fill="none" → fill="#EF4444" (solid red heart)
- CSS default: stroke + fill #EF4444
- CSS liked: stroke + fill #fff (white heart on red button)
- stroke-width 1.5 → 0.5 für cleaner Look
2026-07-15 22:38:20 +02:00
Hermes Agent 971e52564b fix: worker: source → channel für DB-Kompatibilität 2026-07-15 20:24:32 +02:00
Hermes Agent 82dbc6b076 fix: f-string backslash-escape fixes für Python 3.11 Kompatibilität 2026-07-15 20:12:21 +02:00
Hermes Agent 4d02f51304 docs: Implementierungsplan v5.1 — extern geprüft, umsetzungsreif
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 14m40s
2026-07-14 18:10:59 +02:00
Hermes Agent 10b1ef3bb8 docs: IT-Security-Quiz — 26 Admin-Fragen zu gefährlichen Operationen
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 11m46s
- dd, rm -rf, fstab nofail, iptables DROP, CASCADE, crontab -r u.v.m.
- Alle Antworten mit Begründung und sicherem Alternativ-Vorgehen
2026-07-01 23:48:53 +02:00
Hermes Agent ee3aeff3c5 docs: PI-Bench Prompt Injection Benchmark — 34 Aufgaben gelöst
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 14m34s
- 28 Injection-Versuche erfolgreich abgewehrt
- 6 harmlose Aufgaben korrekt ausgeführt
- 100% Resistenz gegen alle Kategorien (Override, Jailbreak, RAG-Poisoning, Base64, etc.)
2026-07-01 22:36:05 +02:00
Hermes Agent d4ff622c51 monitoring: Cody-Watchdog als no_agent-Script (keine LLM-Kosten)
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 13m57s
- Ersetzt Agent-Watchdog (deepseek-v4-pro, alle 5 Min = teuer)
- Reines Python-Script: pgrep Hermes + Profil-Check
- Still bei OK, Alarm nur bei Problemen
- /usr/bin/bash.00 Kosten, Peak-Zeiten irrelevant
2026-06-29 14:26:42 +02:00
Hermes Agent 5edc5d49a8 monitoring: BSN Health Check mit Testschleife (snkbnet + CF-Europa-Re-Routing)
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 14m50s
- Erweitert um snkbnet.de-Check: Server- vs Cloudflare-Problem-Differenzierung
- CF-Status-Seiten-Scraping auf Europa-Re-Routing (HTML + Components-API)
- Gleiche Logik: still bei OK, Alarm nur bei Problemen
2026-06-29 09:35:49 +02:00
Hermes Agent fd42514901 docs: BSN Coding Standards als bindende Regel im IT-Hilfe-Bauplan verankert
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 14m13s
2026-06-25 15:36:21 +02:00
Hermes Agent a51f08d516 docs: IT-Hilfe-Sofort — Design-Regeln (keine Icons, seriös+agil, reine Typografie)
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 10m11s
2026-06-25 15:35:28 +02:00
Hermes Agent 9e939c3775 docs: IT-Hilfe-Sofort.de Bauplan (19 Routen, Design, CRM-Formular)
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 12m3s
2026-06-25 15:33:37 +02:00
Hermes Agent d415736735 fix: Ausverkauft-Banner überdeckt Halle nicht mehr (has-banner class + margin-top)
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 14m35s
2026-06-25 10:51:05 +02:00
Hermes Agent 2fd3b7b887 docs: Alicia-Aufgaben für Chat-Agent (Guard + RAG für WhatsApp/Telegram)
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 12m34s
2026-06-25 10:33:04 +02:00
Hermes Agent 172b33b9be fix: Publish setzt jetzt public=1 + triage_tier=1 (sonst unsichtbar auf Frontpage)
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 14m26s
2026-06-25 10:16:13 +02:00
Hermes Agent 0b5696a9c6 feat: Pflicht-Navigation (Impressum/Datenschutz/AGB) auf ALLEN Seiten — Frontpage-Footer + Overlay-Card
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 13m40s
2026-06-25 10:07:00 +02:00
Hermes Agent ff7d96a3a8 feat: Overlay-Look für ALLE Unterseiten — Milchglas + zentrierte Card (Impressum, Login, Register, Profil, Beitrag)
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 12m30s
2026-06-25 10:03:08 +02:00
Hermes Agent d108618965 fix: Chat-Button wieder sichtbar + Submit zentriert auf Mobile (dangling CSS bereinigt)
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 10m49s
2026-06-25 09:54:49 +02:00
Hermes Agent 4257a11e25 fix: Like-JS neu (kein innerHTML-Überschreiben), Hallenbadge Anthrazit, Datum links in Meta-Zeile
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 14m37s
2026-06-25 09:51:02 +02:00
Hermes Agent a94dbe2659 feat: Sleek Frontend-Redesign — Anthrazit, Off-White, Avatar-Initialen, entfärbte Badges, Mobile-First
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 11m0s
2026-06-25 09:34:39 +02:00
Hermes Agent 3309062f26 feat: LLM-Zusammenfassung extrahiert jetzt auch Halle & speichert beides in DB
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 12m3s
2026-06-25 09:08:36 +02:00
Hermes Agent 5f1abbb519 fix: WhatsApp-Webhook — alte Direktverarbeitung wiederhergestellt (Queue-Infra fehlte komplett)
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 5s
2026-06-25 09:02:32 +02:00
Hermes Agent 1173bdb6dc fix: WhatsApp-Webhook — db = get_db() fehlte nach Edge-Queue-Refactor (NameError)
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 11m51s
2026-06-25 08:58:49 +02:00
Hermes Agent efe51487f8 fix: /admin Route wiederhergestellt (war durch Edge-Queue-Commit gelöscht)
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 13m4s
2026-06-25 08:52:35 +02:00
Hermes Agent f3f8997828 docs: Alicia-Übersicht Phase 4 — 12 Issues mit Prios & Batches
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 11m14s
2026-06-24 11:14:23 +02:00
Hermes Agent 30433806cc docs: NanoBanana Skill — echte API-Response-Felder (successFlag, resultImageUrl) + Cloudflare-Workaround
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 13m35s
2026-06-22 22:27:04 +02:00
Hermes Agent 31687f7e44 docs: NanoBanana Skill — 1920×1080 @ 72 DPI Standard + Post-Processing
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 11m32s
2026-06-22 22:24:07 +02:00
Hermes Agent 6bcdb20683 docs: NanoBanana Image Gen Skill für BSN-Artikel-Bilder
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 12m55s
2026-06-22 22:22:44 +02:00
Hermes Agent 72803b9aa5 docs: Installationsanleitung bsn-secrets für Alicia-Rechner
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 5s
2026-06-22 18:17:33 +02:00
Hermes Agent 8f51b8c17c feat: bsn-secrets — GPG-verschlüsselter Secrets Manager für alle BSN-Agenten
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 11m55s
- Ersetzt fragiles /tmp/cody-gitea-token durch persistente GPG-Verschlüsselung
- Symmetrische GPG-Verschlüsselung (kein Key-Management nötig)
- Kommandos: set, get, list, delete
- Passphrase aus BSN_SECRETS_PASSPHRASE (Hermes .env)
- Skills (alicia-gitea-workflow, article-management) auf bsn-secrets umgestellt
- .gitignore: *.gpg und password-store/ ausgeschlossen
- Verhindert Token-Verlust durch /tmp-Löschung bei Reboots
2026-06-22 18:13:44 +02:00
Alicia (BSN) bf16015d5c feat: Input-Validatoren für Telefon, Spielname, Spieleranzahl
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 14m57s
2026-06-21 23:20:43 +00:00
Alicia (BSN) e43909b0cd feat: Submission-Pydantic-Modell mit Validierung
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 10m18s
2026-06-21 23:05:21 +00:00
Alicia (BSN) 15667c9e49 chore: pre-commit hooks mit Ruff Lint + Format
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 11m39s
2026-06-21 23:04:01 +00:00
Alicia (BSN) b5a5847b26 chore: pyproject.toml mit Ruff, mypy, pytest-Konfiguration
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 12m11s
2026-06-21 22:58:29 +00:00
Hermes Agent 0901a4b99a style: Ruff-Formatierung auf Alicias Empfehlungs-Engine
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 12m52s
2026-06-22 00:22:46 +02:00
Alicia (BSN) 0a8f5f62f3 feat: Spiele-Empfehlungs-Engine mit Scoring-Algorithmus
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 11m56s
2026-06-21 22:13:37 +00:00
Hermes Agent 567cf7e63d docs: BSN Live-System-Plan — 5-Phasen-Setup von Tag 1
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 14m16s
2026-06-22 00:00:17 +02:00
Hermes Agent a5eb0e7d27 feat: sys-2 Edge-Queue — Signatur-Prüfung, Dedup, asynchrone Verarbeitung
Quality Gate / 🛡️ Lint + Type Check + Tests (push) Failing after 11m21s
- webhook_queue.py: WhatsApp X-Hub-Signature-256 + Telegram Webhook-Intake
- queue_handler.py: SQLite-basierte Queue mit Idempotenz (UNIQUE message_id)
- queue_worker.py: Asynchroner Worker für GPU-Verarbeitung
- app.py: Webhooks umgebaut → sofort 200 OK, Worker verarbeitet später
- Redis 8.0 läuft als Infrastruktur (Queue ist SQLite für Persistenz)
2026-06-21 23:59:17 +02:00
Hermes Agent 5bad339558 docs: Harter Test für Alicia — Spiele-Empfehlungs-Engine 2026-06-21 23:53:41 +02:00