- Button zeigt jetzt 'Filter' statt SVG-Pfeil (↑↓)
- Filter-Leiste öffnet sich als Overlay-Fenster (Backdrop + Blur)
- Schließen per Button oder Klick auf Backdrop
- Kein localStorage-Persist mehr (Overlay schließt immer)
- Login/Logout als Dropdown in der Header-Navigation (rechts)
- Dynamisch: eingeloggt = Profil/Abmelden, nicht eingeloggt = Mini-Login-Formular
- Offcanvas-Nav zeigt ebenfalls dynamisch Profil/Logout oder Registrieren/Login
- Welcome-Overlay beim ersten Besuch mit Erklärung der Seite
- Checkbox 'Nicht mehr anzeigen' speichert in localStorage
- Backdrop-Blur wie bei anderen Overlays
Der translateY(-offsetTop) war zu aggressiv und schob das Overlay
bei iOS-Tastatur-Öffnung komplett aus dem Bildschirm.
Entfernt. Die anderen iOS-Fixes (maximum-scale, 16px-Font, 100dvh) bleiben.
- Viewport-Meta: maximum-scale=1.0 + viewport-fit=cover + user-scalable=no
→ verhindert Zoom beim Fokussieren von Input-Feldern auf iOS
- Input-Font-Size auf 16px (Chat + Submit-Formular)
→ iOS Safari zoomt nicht mehr rein (<16px trigger)
- Backdrop: height:100dvh für lückenlose Abdeckung
- visualViewport-Resize-Handler: Overlays werden bei iOS-Tastatur
korrekt nach oben geschoben, kein seitliches Verrutschen mehr
- published_at = CURRENT_TIMESTAMP bei Tier-1-Publish (sonst sortieren NULLs ans Ende)
- Mobile-Cards zeigen jetzt auch Triage-Badge (🟢🟡🔴⏳)
- Desktop-Tabelle zeigt ⏳ für noch nicht triagierte Einträge
- TRIAGE_DELAY_SECONDS env-var (default 360)
Webhook:
- mark_ausverkauft_in_neuheiten(): Cross-Reference-Funktion
setzt Bit 0 in neuheiten.flags bei #out-Meldungen
- Aufruf sowohl bei neuen Submissions als auch Thread-Appends
- Gefixt: lokales 'import re' entfernt (überschattete globales re)
Chatbot /api/chat:
- Neuheiten-SELECT inkludiert flags-Spalte
- [Neuheit]-Einträge zeigen '🔴 AUSVERKAUFT' bei flags & 1
- [Ausverkauft-Meldung]-Suche in published Submissions
- System-Prompt um Ausverkauft-Regeln ergänzt
Flow: WhatsApp '#out Spielname' → Submission → neuheiten.flags
→ Chatbot warnt aktiv vor vergriffenen Spielen
- moderate_comment(): LLM-Filter prüft jeden neuen Kommentar auf deutsches Recht & Toxizität
- /api/comment: Moderation vor Benachrichtigung, geblockte Kommentare stillschweigend verworfen
- /admin/comments: Neue Admin-Ansicht für alle Kommentare mit Sperren/Freischalten
- /admin/comment/<id>/<action>: API zum Blocken/Entsperren
- comments.status + moderation_reason Felder in DB
- 'Chat-Assistent' → 'BSN Assistent' überall umbenannt
- System-Prompt: Beitrags-Links im Chat mit echten /beitrag/ID Verweisen
- Antworten auf Kommentare (Threading mit parent_id)
- Pflichtfeld E-Mail ODER Handynummer bei Beiträgen und Kommentaren
- Benachrichtigung bei Antworten auf eigene Kommentare (E-Mail/WhatsApp)
- Like-Benachrichtigung an Beitragsersteller (E-Mail/WhatsApp)
- Verschachtelte Kommentardarstellung mit Antwort-Button
- Web-Submit-Overlay um Phone-Feld + Validierung erweitert
- DB-Migration: comments.parent_id/email/phone, submissions.phone
- Neue comments-Tabelle (submission_id, author_name, content)
- POST /api/comment/<id> — Kommentar speichern + Benachrichtigung senden
- WhatsApp: Sender wird per WhatsApp informiert mit Link
- E-Mail: Web-Einreicher mit angegebener E-Mail werden benachrichtigt
- _send_email() über sendmail für Mail-Versand
- Kommentar-Formular + Anzeige auf Detailseite (/beitrag/<id>)
- E-Mail-Feld im Web-Submit-Formular (+ Overlay)
- email-Spalte in submissions-Tabelle
- Bedingung gelockert: category='ausverkauft' reicht für Banner
- spiel_titel optional — mit Titel '· Spielname', ohne nur 'AUSVERKAUFT'
- DB-Fix: spiel_titel für Submission #55 nachgetragen
- WhatsApp-Webhook: Neue Nachrichten mit #out setzen category='ausverkauft',
Spieltitel wird nach #out extrahiert (abgeschnitten an Satzzeichen/Trennern)
- Thread-Append: #out in Folgenachrichten aktualisiert category + spiel_titel
- Web-Form-Submit: #out im Text setzt category='ausverkauft' + extrahiert Titel
- Fix: lokales 'import re' in api_submit entfernt (globale 're' reicht)
- Frontend: Filter-Dropdown zeigt 'ausverkauft' dynamisch, Badge auf Karten +
Detailseite