- 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
- story-time-overlay: right:0 hinzugefügt → durchgängige Bar von links nach rechts
- Halle-Badge sitzt mit z-index:5 auf dem Milchglas
- Kein abgesetzter Rand mehr — einheitliche Top-Leiste
- story-time-overlay: top/left auf 0, border-radius zur Karte hin
- story-halle-badge: top/right auf 0
- story-ausverkauft-badge: top/left auf 0
- Alle drei Badges sitzen jetzt auf einer Linie am oberen Kartenrand
- chatBackdrop div mit backdrop-filter:blur(4px) hinter dem Chat-Overlay
- Rest der Seite wird unscharf wenn Chat geöffnet ist
- Klick auf Backdrop schließt den Chat
- Öffnen/Schließen synchron mit ChatOverlay via JS
- Detailseite: 👍 als interaktiver Button (statt statischer Text)
- JS-Fetch-Handler auf /api/like/<id>, Cookie-Dedup
- CSS: .detail-like-btn mit Hover/Liked-Styles (BSN-Blau)
- Gleiche Logik wie Übersichtskarten (1 Like pro Browser)
- Neuer /api/speak Endpunkt: Text → Piper TTS → WAV-Audio
- Frontend speak() ruft jetzt Server-Endpunkt statt Web Speech API
- Browser-TTS nur als Fallback wenn Server nicht erreichbar
- 🔊 Button prominenter: BSN-blauer Hintergrund + sichtbarer Rand
- Fix: SVG-Icons auf Beitrags-Detailseite statt Emojis
- Fix: Datum bei Text-Only-Karten unten rechts (top:auto)
- .mov-Dateien werden beim Upload automatisch per ffmpeg in .mp4 (H.264) konvertiert
- .mov in allen drei mime_maps ergänzt (api_submit, Frontend, Detail-Seite)
- Existierende .mov-Datei (Beitrag #49) konvertiert + DB aktualisiert
- Logo: Flood-Fill-basierte Hintergrund-Transparenz (nur außen, Schrift-Innenraum bleibt weiß)
- JPEG-Logo mit PIL in transparentes PNG konvertiert (Weiß→Alpha)
- LOGO_B64 als Modul-Level-Konstante (PNG, ~83KB base64)
- Logo in public_frontend(), public_detail(), admin_dashboard(), test_page()
- .replace()-Methode für Nicht-f-String-Kontexte (Frontend, Test)
- Logo (993x217) als Base64 in public_frontend() und public_detail()
- Ersetzt 🎲 BSN Community Text-Logo durch Brettspiel News Bild-Logo
- PROJEKT-BRIEFING.md: Vollständige Projektdokumentation für AGB/Datenschutz
- Architektur, Datenflüsse, DSGVO-Relevanz, Feature-Stand
- /api/submit gibt jetzt submission_id + delete_hint zurück
- Frontend zeigt nach erfolgreichem Submit eine Erfolgsmeldung mit ID
- '📋 Kopieren'-Button speichert die ID in die Zwischenablage
- Hinweis, dass die ID für spätere Löschung notiert werden soll
- Overlay schließt nach 8s (statt 2.5s) — Zeit zum Kopieren
- Text-only cards now use .story-time-overlay like media cards
- Overlay positioned top-right within .card-content (position:relative)
- Cards wrapped in <a> link → klick öffnet /beitrag/ID
- .card-link styles mit hover-Effekt (gleicher Lift wie .story-card)
- left:auto für Text-Overlay (resetet left:8px der Basis-Regel)
- Runde Buttons (68×68px, border-radius:50%) statt rechteckig
- Monochrome SVG-Icons in BSN-Blau (#20228a) statt bunter Emojis
- Alle drei gleich groß, zentriert in der Reihe
- Datei-Vorschau-Balken unter den Buttons:
'🖼️ foto.jpg (2.3 MB) — wird mitgesendet'
erscheint sofort nach Auswahl/Aufnahme, verschwindet beim Absenden
- onchange-Listener auf allen 4 Inputs