Commit Graph

71 Commits

Author SHA1 Message Date
Hermes Agent 4b50bbfd37 feat: Neuheiten-Suche — 1.861 Spiele in DB + Chatbot-Integration
- Neue Tabelle 'neuheiten' mit 1.861 Spielen von spiel-essen.de
- Themen-Namen aufgelöst (96 Kategorien: Flip'n'Write, Kartenspiel, etc.)
- Chatbot /api/chat durchsucht jetzt Submissions + Aussteller + Neuheiten
- Erweiterter Kontext bei Spiel/Neuheit-Fragen (bis 40 Treffer)
- 586 Verlage mit Verlags-Suche
2026-06-18 14:44:22 +02:00
Hermes Agent ced5604799 feat: Aussteller-Suche für SPIEL Essen — 1015 Verlage in DB + Chatbot-Integration
- Neue Tabelle 'aussteller' mit 1015 Ausstellern von spiel-essen.de
- Chatbot /api/chat durchsucht jetzt Aussteller + Community-Beiträge
- Keyword-Scoring für relevante Treffer (bis 40 bei Hallen-Fragen)
- System-Prompt um Aussteller-Kontext erweitert
- getestet: Pegasus, Kosmos, Halle-3-Suche, Unbekannt-Fallback
2026-06-18 14:41:40 +02:00
Hermes Agent 7c96743237 Double-Opt-In Verification für Kommentare (E-Mail/WhatsApp)
- Neues comments.verification_token Feld (UUID)
- /api/comment: Bei VERIFICATION_REQUIRED=1 → pending + Token
- Verification-Link per E-Mail und WhatsApp versendet
- GET /verify-comment/<token>: Prüfung → LLM-Moderation → published/blocked
- Testsystem-Bypass: VERIFICATION_REQUIRED=0 → direkt published (default)
- Bestehende 40 Kommentare bleiben unangetastet (status='published')
- Token-Einmalgebrauch: 404 bei Wiederverwendung
2026-06-18 01:28:34 +02:00
Hermes Agent 77d4ec426c LLM-Moderation mit DeepSeek V4 Flash + Admin-Kommentarverwaltung + BSN Assistent Umbenennung
- 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
2026-06-18 01:10:02 +02:00
Hermes Agent 90bce41178 Startseite: Kommentar-Count mit Sprechblasen-Icon in BSN-Blau + 34 Demo-Kommentare 2026-06-18 01:00:05 +02:00
Hermes Agent aa1ee564bd Logo-Text: boardgame.network; 🔔→SVG-Glocke in BSN-Blau 2026-06-18 00:56:21 +02:00
Hermes Agent 55da2dbc2d Kommentarsystem: Antworten, Pflichtfelder, Like-Benachrichtigung
- 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
2026-06-18 00:55:09 +02:00
Hermes Agent 97d9768bb5 feat: Kommentar-System mit WhatsApp- & E-Mail-Benachrichtigung
- 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
2026-06-18 00:47:51 +02:00
Hermes Agent a3706e1169 feat: 'Boardgame Social' neben Brettspiel News Logo
- Frontend, Detailseite, Admin: <span>Boardgame Social</span> neben Logo
- CSS: .site-logo-sub (weiss/transparent) + .admin-logo-sub (dark theme)
- Admin: Logo+Text in .admin-logo-wrap für korrektes Flex-Layout
2026-06-18 00:27:53 +02:00
Hermes Agent 2eb51b81e2 fix: Banner zeigt AUSVERKAUFT auch ohne spiel_titel
- 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
2026-06-18 00:24:36 +02:00
Hermes Agent 3f56a53663 fix: debug=False in production, verhindert Reloader-Code-Stale-Bug 2026-06-18 00:22:40 +02:00
Hermes Agent b2b207af46 feat: roter Vollbreiten-Banner für AUSVERKAUFT auf Cover
- CSS: .story-ausverkauft-badge → Vollbreite (top:0; left:0; right:0)
  mit Rot-Gradient, grösserem Text, z-index:7
- Banner ersetzt die Zeit-Leiste bei ausverkauften Karten
- Neues Markup: 🚫 AUSVERKAUFT · Spielname
- Detailseite: eigener .detail-ausverkauft-banner mit border-radius
- Bugfix: lokales 'import re' in api_submit entfernt (UnboundLocalError)
2026-06-18 00:19:56 +02:00
Hermes Agent 05e934dd66 feat: #out detection sets category=ausverkauft + Spieltitel-Extraktion
- 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
2026-06-18 00:06:57 +02:00
Hermes Agent 1153c170a5 like-buttons: gelikte posts bleiben markiert via localStorage (frontpage + detail) 2026-06-17 23:59:04 +02:00
Hermes Agent 0f04231cee filterleiste: zustand (offen/zu) persistent via localStorage 2026-06-17 23:42:37 +02:00
Hermes Agent 17209b5d0e sort-dropdown: currentColor → #20228a — icons jetzt einheitlich BSN-Blau 2026-06-17 23:40:46 +02:00
Hermes Agent 235ba6968b sort-dropdown: 👍👁 emojis durch SVGs ersetzt 2026-06-17 23:35:52 +02:00
Hermes Agent d363dd45cb augen-icon: 👁 emoji durch graues SVG-auge ersetzt (frontpage + detail) 2026-06-17 23:33:14 +02:00
Hermes Agent 71a30ba73d filter-bar: emoji-icons durch BSN-blaue SVGs ersetzt 2026-06-17 23:30:10 +02:00
Hermes Agent 151872e49d blur nur desktop (≥901px) + textfeld 5000→20000 zeichen 2026-06-17 23:28:22 +02:00
Hermes Agent 8bfd28787e hover blur: 1.8px → 1px — weniger unscharf 2026-06-17 23:24:21 +02:00
Hermes Agent d0d6454f2f hover: rest der seite leicht unscharf (blur 1.8px) via :has()-selector 2026-06-17 23:23:26 +02:00
Hermes Agent 5487012605 offcanvas: icons entfernt, seiteninhalt blur(4px) bei geöffnetem menü 2026-06-17 23:21:51 +02:00
Hermes Agent 89d092e5cf offcanvas-nav: impressum, datenschutz, agb als rechtliche unterseiten 2026-06-17 23:16:01 +02:00
Hermes Agent 7316d36eb3 milchglas 0.55 deckkraft + text-only padding-top 2rem gegen überlappen 2026-06-17 23:09:51 +02:00
Hermes Agent 0deea0211f milchglas: 10% mehr transparenz (0.78→0.68) für alle blöcke 2026-06-17 23:07:48 +02:00
Hermes Agent 749b8bee13 alle karten: autor mit personen-icon ganz unten, views+likes darüber — einheitliches layout 2026-06-17 23:06:13 +02:00
Hermes Agent e97825ce2d text-only: autor mit personen-icon unten, gleicher aufbau wie medien-karten 2026-06-17 23:04:06 +02:00
Hermes Agent bb34386275 text-only karten: zeit-overlay oben wie bei medien-karten 2026-06-17 23:00:56 +02:00
Hermes Agent 346715faf9 background: warmes Hellgrau #E8E4DC statt knallgelb #FCE812 2026-06-17 22:59:01 +02:00
Hermes Agent 3234e5f6a4 hover: scale(1.03) statt translateY + dunklerer Schatten 2026-06-17 22:57:25 +02:00
Hermes Agent a84a2c9885 feat: SVG-Pin-Icon für Halle-Badges (statt 📍 Emoji)
- Weiße Pin-SVG auf allen Frontend-Halle-Badges
- Detailseite ebenfalls mit Pin-Icon
- Konsistent mit restlichen SVG-Icons (BSN-Blau-Thema)
2026-06-17 22:54:36 +02:00
Hermes Agent f894f84942 fix: Milchglas-Leiste spannt jetzt über die volle Kartenbreite
- 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
2026-06-17 22:52:55 +02:00
Hermes Agent 4868143927 fix: Badges/Time-Overlay bündig zur Oberkante ausgerichtet
- 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
2026-06-17 22:46:13 +02:00
Hermes Agent 5c27f08f38 feat: SVG-Icons für Like-Button und Filter-Toggle (BSN-Blau)
- 👍 Emoji → Thumbs-up SVG (16x16, #20228a) auf allen Like-Buttons
- 🔽/🔼 Emoji → Chevron SVG im Filter-Toggle
- JS-Handler aktualisiert (innerHTML statt textContent)
- Look konsistent mit restlichen Frontend-Icons
2026-06-17 22:33:02 +02:00
Hermes Agent e90d38c28f fix: Filter-Leiste jetzt korrekt in collapsible Wrapper verpackt
- filterBar div mit filter-collapsed Klasse umschließt alle Filter
- Behebt: Wrapper war vorher nicht im HTML (nur CSS/JS)
2026-06-17 22:20:49 +02:00
Hermes Agent 4d7469e47e feat: Filter-Leiste einklappbar für schlankeren Header
- 🔽/🔼 Toggle-Button im Header (rechts neben brettspiel-news.de)
- Filter-Bar standardmäßig eingeklappt (display:none)
- Pfeil wechselt beim Ein-/Ausklappen
- Alle Filter-Optionen erhalten (Halle, Kategorie, Sortierung)
2026-06-17 22:16:10 +02:00
Hermes Agent 3dfea22046 feat: Sortierung nach Beliebtheit im Frontend-Filter
- Dropdown: Neueste zuerst / 👍 Beliebteste / 👁 Meist gesehen
- Beliebteste: likes DESC, views DESC, published_at DESC
- Meist gesehen: views DESC, published_at DESC
- Cross-Filter: Sort-Parameter bleibt bei Halle/Kategorie-Wechsel erhalten
- Reset-Link erscheint bei aktiver Sortierung
2026-06-17 22:12:05 +02:00
Hermes Agent 5f678144e5 feat: Backdrop-Blur jetzt auch beim + Einreiche-Overlay 2026-06-17 22:09:35 +02:00
Hermes Agent 3d18cc97a4 feat: Backdrop-Blur beim Chat-Assistenten
- 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
2026-06-17 22:05:34 +02:00
Hermes Agent a8be332662 feat: Like-Button jetzt auch auf Detailseite klickbar
- 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)
2026-06-17 22:04:06 +02:00
Hermes Agent 600ef6ac8d feat: View-Counter + Like-Button für Beiträge
- DB: views + likes INTEGER Spalten (DEFAULT 0)
- Backend: View-Inkrement auf /beitrag/<id>, Like-API /api/like/<id>
- Frontend: 👁 Aufrufe + 👍 Like-Button auf Übersichtskarten
- Detailseite: Views/Likes Anzeige
- Like-Dedup: Cookie-basiert (1 Like pro Beitrag pro Browser, 365 Tage)
2026-06-17 21:56:38 +02:00
Hermes Agent e2b0bbef1e perf: Base64-Logo -> URL + preconnect gstatic + lazy loading
- Logo: Base64 (82KB) -> /static/logo.png mit Browser-Cache
- Google Fonts: preconnect fonts.gstatic.com hinzugefügt
- Media-Bilder: loading=lazy auf Detailseite
- Betrifft: public_detail, index, admin, test-Seite
- Detailseite: 86KB -> 4.2KB (-95%)
2026-06-17 21:21:10 +02:00
Hermes Agent a4a40fd2e7 Performance-Optimierung: 9.9 MB → 124 KB (-98.7%)
- /media/<filename> Endpunkt mit Cache-Control (max-age=86400, ETag)
- Thumbnail-Generator für Bilder (300px via PIL, on-the-fly)
- Frontend-Karten: URLs statt Base64 + Thumbnails + loading=lazy
- Admin-Detailseite + öffentliche Detailseite ebenfalls auf URLs
- Video-Thumbnails als separate Dateien via /media/ statt Base64
2026-06-17 20:02:35 +02:00
Hermes Agent eba3757572 Server-seitige TTS-Sprachausgabe (Thorsten via Piper)
- 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)
2026-06-17 19:52:07 +02:00
Hermes Agent fc07c991cc Fix .mov video upload + Logo mit korrekter Transparenz
- .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ß)
2026-06-17 19:09:48 +02:00
Hermes Agent 0d5a3b787c Transparentes PNG-Logo auf allen Seiten (Frontend, Detail, Admin, Test)
- 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)
2026-06-17 18:49:53 +02:00
Hermes Agent 0130c8a3b5 Fix: LOGO_B64 Modul-Level-Definition (war verloren gegangen) 2026-06-17 18:34:18 +02:00
Hermes Agent 18b633afa3 Brettspiel News Logo in Header + Projekt-Briefing für Wolfi
- 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
2026-06-17 18:31:47 +02:00
Hermes Agent 93caa74640 Auto-LLM für Web-Submits, ID-Footer auf Detailseite, Unpublish-Button
- api_submit: auto_process_bg() im Hintergrund-Thread für Halle/Summary
- /beitrag/<id>: Beitrags-ID ganz unten mit DSGVO-Löschhinweis
- Neuer /submission/<id>/unpublish POST-Endpoint (published -> new)
- Admin-Detailview: 'Veröffentlichung zurücknehmen'-Button (nur bei published)
- Toast-Animation + Redirect nach Unpublish
2026-06-17 18:26:18 +02:00