Commit graph

29 commits

Author SHA1 Message Date
406ba57a2d feat(tv): Serie als gesehen markieren - Button im Header
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 11:28:10 +01:00
764da40447 fix(tv): Gesehen-Button per D-Pad fokussierbar, auf TV sichtbar
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 11:26:41 +01:00
f78bfd293b fix(tv): Episoden-Cards vergrößert, Laufzeit-Badge vollständig sichtbar
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 11:25:45 +01:00
78dd9ebe03 fix(tv): Alphabet-Sidebar per D-Pad/Fernbedienung navigierbar
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 11:15:31 +01:00
bce5460fcf fix(tv): Alphabet-Sidebar zeigt nur verfügbare Buchstaben
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 11:07:55 +01:00
26adabe55c docs: Implementierungsplan für TV-App D-Pad Fixes
6 Tasks mit exakten Zeilennummern und Code-Snippets:
1. Alphabet-Sidebar nur verfügbare Buchstaben
2. FocusManager Sidebar-Navigation
3. Episoden-Cards vergrößern
4. Gesehen-Button fokussierbar
5. Serie-als-gesehen Button
6. Finaler Test

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 10:49:25 +01:00
efbda20e42 docs: Spec-Korrekturen nach Review
- Jinja2-Variante entfernt (nur JS-Lösung)
- i18n: bestehenden Key status.mark_series verwenden
- Responsive Breakpoint 1200px berücksichtigt
- opacity-Fix nur für TV (hover:none Media-Query)
- Änderung 2/2b als atomar markiert
- focusin-Handler Sidebar-Ausschluss dokumentiert

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 10:40:29 +01:00
205830f474 docs: Design-Spec für TV-App D-Pad & Usability Fixes
5 Probleme identifiziert und Lösungen spezifiziert:
- Alphabet-Sidebar nicht per Fernbedienung erreichbar
- Obere Buchstaben verdeckt (nur verfügbare rendern)
- Episoden-Cards zu klein / Laufzeit abgeschnitten
- Gesehen-Button nicht fokussierbar (tabindex/-1)
- Kein Serie-als-gesehen-Button

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 10:36:06 +01:00
95df4d7a90 feat: VideoKonverter v5.8 - AVPlay-Overlay Fix, Debug-Stats, Focus-Ring Fix
- Tizen: Parent-Frame Transparenz + iframe z-index Fix fuer sichtbare Player-Controls ueber AVPlay
- Tizen: Farbtasten (Rot/Gruen/Gelb/Blau) werden bei aktivem AVPlay an iframe weitergeleitet
- Tizen: AVPlay Debug-Stats (State, Stream-Info, Codec, Bitrate) per postMessage abrufbar
- VKNative Bridge: requestStats() + vknative_stats Handler fuer AVPlay-Monitoring
- Player: Debug-Overlay zeigt AVPlay-spezifische Infos (Blaue Taste auf Fernbedienung)
- CSS: Episoden-Karten Focus-Ring von outline auf box-shadow umgestellt (kein Clipping mehr)
- CSS: Episode-Grid padding fuer Scale-Transform Platz
- SW Cache v16 -> v17

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 20:20:01 +01:00
dc9ee15ec3 fix: Tizen config.xml - allow-navigation entfernt (CSP-Bug), v5.7.0
KRITISCHER FIX: <tizen:allow-navigation>*</tizen:allow-navigation> in
config.xml aendert die Content Security Policy und blockiert ALLE inline
<style> und <script> Bloecke. Symptom: App rendert ohne CSS/JS, nur
unstyled HTML-Elemente sichtbar.

Loesung: Tag komplett entfernt, <access origin="*" subdomains="true"/>
reicht fuer iframe/XHR-Zugriff. Warnung als Kommentar hinzugefuegt.

Tizen-App v5.7.0 mit allen v5.5/v5.6 Features:
- Debug-Panel (Gruene Taste), Remote-Logging an /api/tizen-log
- Connecting-Overlay mit Spinner und Timeout
- AVPlay Direct-Play + HLS-Fallback (Surround)
- Transparenter iframe (opacity bleibt 1 bei AVPlay)
- Media-Keys, D-Pad-Weiterleitung, Verbindungs-Reset

Android APK v1.1.0 hinzugefuegt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 22:12:15 +01:00
956b7b9ac8 feat: VideoKonverter v5.6 - Player-Overlay, Immersive Fullscreen, Audio-Normalisierung
Tizen TV: Transparenter iframe-Overlay statt opacity:0 - Player-Controls
(Progress-Bar, Buttons, Popup-Menue) jetzt sichtbar ueber dem AVPlay-Video.
CSS-Klasse "vknative-playing" macht Hintergruende transparent, AVPlay-Video
scheint durch den iframe hindurch.

Android App: Immersive Sticky Fullscreen mit WindowInsetsControllerCompat.
Status- und Navigationsleiste komplett versteckt, per Swipe vom Rand
temporaer einblendbar.

Audio-Normalisierung (3 Stufen):
- Server-seitig: EBU R128 loudnorm (I=-14 LUFS) im HLS-Transcoding
- Server-seitig: dynaudnorm (dynamische Szenen-Anpassung) im HLS-Transcoding
- Client-seitig: DynamicsCompressorNode im Browser-Player
Alle Optionen konfigurierbar: loudnorm/dynaudnorm im TV Admin-Center,
Audio-Kompressor pro Client in den Einstellungen.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:07:04 +01:00
00d8f6b982 feat: VideoKonverter v5.5 - Tizen Remote-Logging, Login D-Pad, Cookie-Fix
Tizen-App v5.5.0:
- Remote-Logging: Console-Override + XHR an /api/tizen-log alle 3s
- Debug-Panel: Gruene Taste toggled scrollbares Log-Panel (unten)
- window.onerror Handler fuer uncaught Errors
- Alle v5.4.2 Features erhalten (Connecting-Overlay, Timeout, IME-Fixes)

Server (tv_api.py):
- POST/GET /api/tizen-log Endpunkte (DB-Tabelle tizen_logs)
- Cookie SameSite-Fix: Tizen iframe bekommt kein SameSite (Lax blockiert)

Login (login.html):
- D-Pad Navigation per postMessage (vknative_keyevent)
- ArrowUp/Down zwischen Feldern, Enter auf Button

Sonstiges:
- base.html: vk_app_loaded postMessage Signal
- sw.js: Cache v14 -> v15
- Altes Docker-Export entfernt

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 20:05:22 +01:00
8302ff953a feat: VideoKonverter v5.3 - Android APK Fix, Tizen HLS-Surround, Native Player Verbesserungen
Android-App v1.2.0:
- Fix: 404-Fehler durch doppelten /tv/tv/ Pfad (URL-Bereinigung in SetupActivity)
- Fix: Kein Ton - AudioAttributes (AUDIO_CONTENT_TYPE_MOVIE + handleAudioFocus)
- Neu: ExoPlayer HLS-Support (playHLS) fuer DTS/TrueHD-Audio Fallback
- Neu: Back-Taste auf Root-Seite -> zurueck zum Setup (Server aendern)
- VKWebViewClient: playHLS in JS-Bridge exponiert

Tizen-App:
- Fix: Tonausfaelle bei Opus 6ch (Akte X) - canDirectPlay blockt Opus >2ch
- Neu: AVPlay HLS-Fallback (playHLS) mit AAC 5.1 Surround-Erhalt
- Neu: Buffer-Konfiguration (setBufferingParam) fuer stabilere Wiedergabe
- VKNative-Bridge v2.0: playHLS in beiden Modi (postMessage + Direct AVPlay)

Player:
- Native-HLS Default Sound auf "surround" (AVPlay/ExoPlayer koennen 5.1)
- PWA Direct-Play, Template-Fixes, UX-Verbesserungen

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 21:18:07 +01:00
78368db582 fix: PWA Direct-Play statt HLS + Template-Fix series_detail
- Browser/PWA nutzt jetzt direkte MP4-Wiedergabe mit Range-Requests
- Codec-Pruefung (H.264/HEVC/AV1) mit automatischem HLS-Fallback
- direct_play_url zur Library Video-Info-Route hinzugefuegt
- Doppeltes endblock in series_detail.html entfernt (500er Fehler)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 13:19:00 +01:00
0d1619c6c9 feat: VideoKonverter v5.1 - TV-App UX-Verbesserungen, PWA-Fix, Library-Features
- PWA Cookie-Fix: SameSite/Secure je nach Protokoll (HTTP=Lax, HTTPS=None+Secure)
- Samsung Fernbedienung: Media-Key-Registrierung, Return/Back navigiert zurueck
- Post-Play Navigation: Countdown auf naechster Episode nach Wiedergabe-Ende
- Gelbe Staffel-Tabs: Gold-Farbe wenn alle Episoden gesehen
- Episoden Card-Grid: Plex-Style Thumbnail-Grid mit Detail-Panel bei Focus
- Weiche Uebergaenge: Fade-In/Out Animationen fuer Player und Seitenwechsel
- Codec-Badge: AV1/HEVC Badge in Videobibliothek bei komplett konvertierten Serien
- Separate Import-Fortschrittsbalken: Pro Import-Job eigener Balken
- Android APK signiert (v2+v3 Scheme)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 13:09:28 +01:00
93983cf6ee fix: Tizen-App iframe + Cookie-Fix für Cross-Origin
PROBLEME BEHOBEN:
- Schwarzes Bild beim Video-Abspielen (z-index & iframe-Overlap)
- Login-Cookie wurde nicht gesetzt (Third-Party-Cookie-Blocking)

ÄNDERUNGEN:

Tizen-App (tizen-app/index.html):
- z-index AVPlay von 0 auf 10 erhöht (über iframe)
- iframe wird beim AVPlay-Start ausgeblendet (opacity: 0, pointerEvents: none)
- iframe wird beim AVPlay-Stop wieder eingeblendet
- Fix: <object id="avplayer"> nur im Parent, NICHT im iframe

Player-Template (video-konverter/app/templates/tv/player.html):
- <object id="avplayer"> entfernt (existiert nur im Parent-Frame)
- AVPlay läuft ausschließlich im Tizen-App Parent-Frame

Cookie-Fix (video-konverter/app/routes/tv_api.py):
- SameSite=Lax → SameSite=None (4 Stellen)
- Ermöglicht Session-Cookies im Cross-Origin-iframe
- Login funktioniert jetzt in Tizen-App (tizen:// → http://)

Neue Features:
- VKNative Bridge (vknative-bridge.js): postMessage-Kommunikation iframe ↔ Parent
- AVPlay Bridge (avplay-bridge.js): Legacy Direct-Play Support
- Android-App Scaffolding (android-app/)

TESTERGEBNIS:
-  Login erfolgreich (SameSite=None Cookie)
-  AVPlay Direct-Play funktioniert (samsung-agent/1.1)
-  Bildqualität gut (Hardware-Decoding)
-  Keine Stream-Unterbrechungen
-  Watch-Progress-Tracking funktioniert

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-03-07 08:36:13 +01:00
e2bf70b280 perf: Performance-Optimierungen + TV-Cover vergroessert
- aiomysql Pool: minsize=2, maxsize=10, pool_recycle=300 (verhindert "gone away")
- Jinja2 Bytecode-Cache + auto_reload=False (3-5x schnelleres Rendering)
- HLS-Segmente: Cache-Header immutable (aggressives Browser-Caching)
- WebSocket: heartbeat=30s (erkennt tote Verbindungen automatisch)
- VAAPI: -low_power 1 fuer h264_vaapi (2-3x schnelleres GPU-Encoding)
- TV-Homepage: Cover um 40% vergroessert (alle Breakpoints)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 20:41:41 +01:00
d61fd5bc04 feat: VideoKonverter v4.3 - Thumbnails, Watch-Status, Transcoding-Settings
Thumbnails:
- Negative Zaehlung gefixt (-23 von 5789): INNER JOIN statt separate COUNT
- Verwaiste Thumbnail-Eintraege werden automatisch bereinigt
- TVDB-Bilder werden lokal heruntergeladen statt extern verlinkt
- Template nutzt nur noch lokale API, keine externen TVDB-URLs
- Cache-Control: Thumbnails werden 7 Tage gecacht (Middleware ueberschreibt nicht mehr)
- Fortschrittsbalken ins globale Progress-System verschoben (Thumbnails + Auto-Match)

Watch-Status:
- Feldnamen-Bug gefixt: position/duration -> position_sec/duration_sec
- saveProgress(completed) setzt Position=Duration bei Video-Ende
- Backend wertet completed-Flag aus

Player:
- Error-Recovery: Auto-Retry bei Video-Fehlern (2x)
- Toast-Benachrichtigungen bei Stream-Fehlern (HLS, Netzwerk, Fallback)
- onPlaying() Reset des Retry-Zaehlers

Transcoding:
- Neue Einstellung "Immer transcodieren" (force_transcode) im TV-Admin
- Erzwingt H.264+AAC Transcoding fuer maximale Client-Kompatibilitaet
- Kein Copy-Modus wenn aktiviert

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 06:30:39 +01:00
4f151de78c feat: VideoKonverter v4.2 - TV Admin-Center, HLS-Streaming, Startseiten-Rubriken
- TV Admin-Center (/tv-admin): HLS-Settings, Session-Monitoring, User-Verwaltung
- HLS-Streaming: ffmpeg .ts-Segmente, hls.js, GPU VAAPI, SIGSTOP/SIGCONT
- Startseite: Rubriken (Weiterschauen, Neu, Serien, Filme, Schon gesehen)
- User-Settings: Startseiten-Rubriken konfigurierbar, Watch-Threshold
- UI: Amber/Gold Accent-Farbe, Focus-Ring-Fix, Player-Buttons einheitlich
- Cache-Busting: ?v= Timestamp auf allen CSS/JS Includes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 17:57:48 +01:00
75bb5d796d fix: VideoKonverter v4.0.3 - JSON-Import-Fix, Player D-Pad-Navigation, Overlay-Bugfix
- import json in library_api.py ergänzt (fehlte, Video-Info-API crashte)
- Player: D-Pad-Navigation für Samsung TV Fernbedienung eingebaut
- Player: Samsung Farbtasten (Rot=Audio, Grün=Subs, Gelb=Qualität, Blau=Speed)
- Player: Overlay zeigt nur noch die zum Button passende Sektion
- Player: Auto-Fokus beim Öffnen von Overlays

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 10:20:30 +01:00
e8f2d49949 feat: VideoKonverter v4.0.2 - FocusManager-Fix, Poster-Caching, Performance
- FocusManager: Navigation von Nav-Leiste direkt zu Content-Karten
- Input/Select Editier-Modus: Erst Enter zum Bearbeiten, D-Pad navigiert weiter
- Poster lokal cachen + Pillow-Resize (233KB → 47KB, 80% kleiner)
- Content-Visibility fuer versteckte View-Container

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 09:49:05 +01:00
c7151e8bd1 feat: VideoKonverter v4.0.1 - UX-Verbesserungen, Batch-Thumbnails, Bugfixes
- Alphabet-Seitenleiste (A-Z) auf Serien-/Filme-Seite
- Separate Player-Buttons fuer Audio/Untertitel/Qualitaet
- Batch-Thumbnail-Generierung per Button in der Bibliothek
- Redundante Dateien in Episoden-Tabelle orange markiert
- Gesehen-Markierung per Episode/Staffel
- Genre-Filter als Select-Element statt Chips
- Fix: tvdb_episode_cache fehlende Spalten (overview, image_url)
- Fix: Login Auto-Fill-Erkennung statt Flash
- Fix: Profil-Wechsel zeigt alle User

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 09:22:04 +01:00
61ca20bf8b fix: TV-App UX-Verbesserungen - Navigation, Ordner-Ansicht, Duplikate
- FocusManager: SELECT-Elemente, sequentielle Nav-Navigation, Zone-basiert
- Ordner-Ansicht (4. View) fuer Serien + Filme mit Quellen-Gruppierung
- Login-Flow: Lade-Spinner statt Form-Flash, Auto-Login bei 1 Profil
- Farbauswahl: Farbkreise statt input type=color (Samsung TV kompatibel)
- Duplikat-Episoden: Orange Markierung + Badge bei gleicher Episodennummer
- i18n: Neue Keys fuer Ordner-Ansicht und Duplikat-Markierung

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 07:57:57 +01:00
6d0b8936c5 feat: VideoKonverter v4.0 - Streaming-Client Ausbau
TV-App komplett ueberarbeitet: i18n (DE/EN), Multi-User Quick-Switch,
3 Themes (Dark/Medium/Light), 3 Ansichten (Grid/Liste/Detail),
Filter (Quellen/Genre/Rating/Sortierung), Merkliste, 5-Sterne-Bewertung,
Watch-Status, Player-Overlay (Audio/Untertitel/Qualitaet/Naechste Episode),
Episoden-Thumbnails, Suchverlauf, Queue-Bugfix (delete_source).

5 neue DB-Tabellen, 10+ neue API-Endpunkte, ~3800 neue Zeilen Code.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 07:39:12 +01:00
a1be045a7d feat: Samsung TV Installation + Streaming-Fix
- Samsung-Zertifikate (author + distributor) fuer TV-App erstellt
- WGT mit Samsung-Signatur auf TV installiert und getestet
- Streaming movflags korrigiert: default_base_moof statt faststart (pipe)
- frag_duration=1s fuer schnelleren Playback-Start auf Samsung TV
- INSTALL.md komplett ueberarbeitet mit Manjaro/Arch-Anleitung
- .gitignore: Tizen Studio workspace/ Ordner ausgeschlossen

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 22:25:45 +01:00
99730f2f8f feat: VideoKonverter v3.1 - TV-App, Auth, Tizen, Log-API
TV-App (/tv/):
- Login mit bcrypt-Passwort-Hashing und DB-Sessions (30 Tage)
- Home (Weiterschauen, Serien, Filme), Serien-Detail mit Staffeln
- Film-Uebersicht und Detail, Fullscreen Video-Player
- Suche mit Live-Ergebnissen, Watch-Progress (alle 10s gespeichert)
- D-Pad/Fernbedienung-Navigation (FocusManager, Samsung Tizen Keys)
- PWA: manifest.json, Service Worker, Icons fuer Handy/Tablet
- Pro-User Berechtigungen (Serien, Filme, Admin, erlaubte Pfade)

Admin-Erweiterungen:
- QR-Code fuer TV-App URL
- User-Verwaltung (CRUD) mit Rechte-Konfiguration
- Log-API: GET /api/log?lines=100&level=INFO

Tizen-App (tizen-app/):
- Wrapper-App fuer Samsung Smart TVs (.wgt Paket)
- Einmalige Server-IP Eingabe, danach automatische Verbindung
- Installationsanleitung (INSTALL.md)

Bug-Fixes:
- executeImport: Job-ID vor resetImport() gesichert
- cursor(aiomysql.DictCursor) statt cursor(dict)
- DB-Spalten width/height statt video_width/video_height

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 09:26:19 +01:00
0ebe600215 feat: VideoKonverter v3.0 - Bugfixes, Queue-Pause, Button-Audit
- fix: escapeAttr() ueberall mit Anfuehrungszeichen versehen (14 Stellen)
  Ohne Quotes brachen onclick-Handler bei Titeln mit Leerzeichen
  -> TVDB-Zuordnung, Play, Delete, Import-Browser betroffen
- fix: escapeHtml() in onclick durch escapeAttr() ersetzt (4 Stellen)
  escapeHtml erzeugt &amp; statt \' -> JS-Syntaxfehler in Handlern
- fix: Import-Modal schliesst nach Start statt Ladebalken anzuzeigen
  Globaler Progress-Balken in base.html uebernimmt den Fortschritt
- feat: Queue Pause/Resume - laufende Konvertierung laeuft fertig,
  keine neuen Jobs gestartet bis Weiter geklickt wird
  API: POST /api/queue/pause, /api/queue/resume, GET /api/queue/status
  Button im Dashboard neben Warteschlange-Header

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 08:06:17 +01:00
4424398391 fix: Build-Dateien ins Root kopiert, .dockerignore optimiert
- requirements.txt und entrypoint.sh ins Root (Dockerfile erwartet sie dort)
- .dockerignore erweitert: alt/, docker-exports/, *.tar ausgeschlossen
- Reduziert Build-Context von 2.3GB auf 218KB

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-27 11:48:02 +01:00
37dff4de69 feat: VideoKonverter v2.9 - Projekt-Reset aus Docker-Image
Projekt aus Docker-Image videoconverter:2.9 extrahiert.
Enthält zweiphasigen Import-Workflow mit Serien-Zuordnung.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-27 11:41:48 +01:00