Files
ViewIT/CHANGELOG-DEV.md

296 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 0.1.89.0-dev - 2026-04-10
- dev: bump to 0.1.88.5 Changelog fuer aktuelle Version
## 0.1.88.5-dev - 2026-04-10
- dev: bump to 0.1.88.0 Changelog ergaenzt
## 0.1.88.0-dev - 2026-04-10
- dev: bump to 0.1.87.5 TMDb Helper Player, Metadaten-Fix, Menü-Icons, Filmpalast veeve
## 0.1.87.5-dev - 2026-04-04
- dev: bump to 0.1.87.0-dev Changelog-Prozess verbessert
## 0.1.87.0-dev - 2026-04-04
- dev: bump to 0.1.86.5-dev Trakt-Untermenue, Weiterschauen-Fixes, Scrobbling zuverlässig
## 0.1.86.5-dev - 2026-04-03
- dev: bump to 0.1.86.0-dev Globale Suche konfigurierbar, Changelog-Dialog beim ersten Start
## 0.1.86.0-dev - 2026-04-02
- dev: bump to 0.1.85.5-dev Settings-Menü benutzerfreundlicher gestaltet
## 0.1.85.5-dev - 2026-04-02
- dev: bump to 0.1.85.0-dev settings.xml und default.py auf 0.1.84.5-Stand zurueckgesetzt, serienstream_plugin.py aktuell behalten
## 0.1.85.0-dev - 2026-04-01
- dev: bump to 0.1.84.5-dev settings.xml auf Kodi 19+ Format (version=1) migriert, Level-Filter fuer Expert/Advanced korrigiert
## 0.1.84.5-dev - 2026-03-31
- dev: bump to 0.1.84.0-dev SerienStream Sammlungen mit Poster/Plot, Session-Cache für Sammlungs-URLs
## 0.1.84.0-dev - 2026-03-16
- dev: bump to 0.1.83.5-dev Trakt Weiterschauen via watched/shows, Specials überspringen
## 0.1.83.5-dev - 2026-03-15
- dev: SerienStream Suche via /suche?term=, Staffel 0 als Filme, Katalog-Suche entfernt
## 0.1.83.0-dev - 2026-03-15
- dev: Trakt Performance, Suchfilter Phrase-Match, Debug-Settings Expert-Level
## 0.1.82.5-dev - 2026-03-15
- dev: Update-Versionsvergleich numerisch korrigiert
## 0.1.82.0-dev - 2026-03-14
- dev: HDFilme Plot in Rubrik Neuste anzeigen
## 0.1.81.5-dev - 2026-03-14
- dev: YouTube HD via inputstream.adaptive, DokuStreams Suche fix
## 0.1.81.0-dev - 2026-03-14
- dev: YouTube Fixes, Trakt Credentials fest, Upcoming Ansicht, Watchlist Kontextmenue
## 0.1.80.5-dev - 2026-03-13
- dev: YouTube: yt-dlp ZIP-Installation von GitHub, kein yesno-Dialog
## 0.1.80.0-dev - 2026-03-13
- dev: YouTube-Plugin: yt-dlp Suche, Bug-Fix Any-Import
## 0.1.79.5-dev - 2026-03-11
- dev: Changelog-Hook auf prepare-commit-msg umgestellt
## 0.1.79.0-dev - 2026-03-11
- dev: TMDB API-Key automatisch aus Kodi-Scraper ermitteln
## 0.1.78.5-dev - 2026-03-11
- dev: Uhrzeit aus Episodentitel entfernen, tvshow-Mediatype fix
## 0.1.78.0-dev - 2026-03-11
- dev: Trakt-Scrobbling fuer alle Wiedergabe-Pfade
## 0.1.77.5-dev - 2026-03-10
- dev: Max. Eintraege pro Seite Setting pro Plugin
## 0.1.77.0-dev - 2026-03-10
- dev: Changelog-Dialog nur anzeigen wenn Eintrag vorhanden
## 0.1.76.5-dev - 2026-03-10
- dev: Versionsfilter fuer 4-teilige Versionsnummern korrigiert
## 0.1.76.0-dev - 2026-03-10
- dev: bump to 0.1.76.0-dev aeltere Versionen im Update-Dialog, Release-Branch-Zuordnung, README ueberarbeitet
## 0.1.74-dev - 2026-03-10
- dev: bump to 0.1.74-dev BurningSeries entfernt, Paging-Fix Neuste Titel
## 0.1.73-dev - 2026-03-07
- dev: bump to 0.1.73-dev Autoplay-Setting, Moflix Hoster-Dialog, Update-Hinweis im Hauptmenue
# Changelog (Dev)
## 0.1.71-dev - 2026-03-01
- Trakt Scrobble vollständig: scrobble/stop wird nach Wiedergabe-Ende mit berechnetem Fortschritt gesendet.
- Neue Funktion `_trakt_scrobble_stop_async()` und `_trakt_monitor_playback()`.
- Monitor blockiert den Plugin-Prozess bis Wiedergabe endet → Fortschritt wird korrekt berechnet.
- Damit wird Trakt "als gesehen" erst ab ≥ 80% Fortschritt markiert.
## 0.1.70-dev - 2026-03-01
- Suchergebnisse werden über alle Plugins hinweg nach Titel gruppiert.
- Titel in einem Plugin: direkt zur Staffel-Ansicht (kein Plugin-Suffix).
- Titel in mehreren Plugins: Zwischenstufe "Quelle wählen" mit Plugin-Liste.
- Neue Route `choose_source` und Funktion `_show_choose_source()`.
- Fix: SyntaxError `global _TRAKT_PLUGIN_MATCH_CACHE_TS` war nach erster Verwendung deklariert.
## 0.1.69-dev - 2026-03-01
### Trakt: Neue Features
- **Weiterschauen:** Neuer Hauptmenüpunkt zeigt die nächste ungesehene Folge je Serie
basierend auf der Trakt-History. Auto-Matching sucht den Titel automatisch in allen
aktiven Plugins und verlinkt direkt zur richtigen Staffel.
- **Trakt Upcoming:** Neuer Hauptmenüpunkt zeigt anstehende Episoden der Watchlist-Serien
(Trakt-Kalender, 14 Tage voraus) mit Ausstrahlungsdatum und TMDB-Poster.
Auto-Matching wie bei „Weiterschauen".
- **Watched-Status in Episodenlisten:** Bereits bei Trakt als gesehen markierte Episoden
werden in Staffelansichten mit Häkchen (Kodi `playcount=1`) markiert.
Ergebnis wird 5 Minuten gecacht um API-Aufrufe zu minimieren.
- **`core/trakt.py`:** Neuer `TraktCalendarItem`-Dataclass und `get_calendar()`-Methode
(Trakt Calendar API: `/calendars/my/shows/{start}/{days}`).
### Python 3.8 Kompatibilität (Windows/Kodi)
- **`from __future__ import annotations`** in allen Modulen ergänzt, die noch kein
deferred-evaluation hatten (`core/router.py`, `core/metadata.py`, `core/playstate.py`,
`core/gui.py`, `regex_patterns.py`). Behebt `TypeError: 'type' object is not subscriptable`
auf Kodi-Installationen mit Python 3.8 (Windows).
### Bugfixes
- **`dokustreams_plugin.py`:** Regex `r"(\\d+)"``r"(\d+)"` Seitennavigation hat
nie Seitenzahlen gefunden (falsch-escaped in Raw-String).
- **`serienstream_plugin.py`:** Dedup-Key verwendete `\\t` (Backslash+t) statt echtem
Tab-Zeichen inkonsistent mit `aniworld_plugin.py`.
- **Menübereinigung:** Doppelter Menüpunkt „Neue Titel" (`new_plugin_titles`) entfernt
identisch mit „Neuste Titel" (`latest_titles`).
---
## 0.1.67-dev - 2026-02-27
### Stabilitäts- und Sicherheits-Fixes
- **Sicherheit (updater.py):** ZIP-Extraktion prüft jetzt jeden Eintrag auf Path-Traversal.
Bösartige Pfade (z. B. `../../`) werden abgelehnt und der Update-Vorgang abgebrochen
(war: still ignoriert mit `continue`).
- **Silent-Failure-Fix (metadata.py):** Neues `_initialized`-Flag und `_require_init()`-Guard
wenn `init()` nicht aufgerufen wurde, erscheint jetzt eine Warnung im Log statt lautlosem No-Op.
- **Thread-Safety (default.py):** Neue Locks `_PLUGIN_CACHE_LOCK` und `_GENRE_TITLES_CACHE_LOCK`
schützen alle Cache-Zugriffe auf Plugin-Instanzen und Genre-Titel-Caches.
- **Memory-Leak-Fix (default.py):** Alle internen Caches haben jetzt ein Größenlimit
(`_CACHE_MAXSIZE = 500`) mit LRU-artigem Eviction-Mechanismus.
- **Code-Qualität (default.py):** ~300 Zeilen Duplicate-Code durch `_show_paged_title_list()`
Hilfsfunktion ersetzt alle paginierten Titellisten (Genres, Kategorien, A-Z) nutzen jetzt
dieselbe Logik.
- **Syntax-Fix (default.py):** Fremd-Text in Zeile 3517 entfernt, der einen latenten Syntax-
Fehler verursachte.
### Neues Plugin-Interface
Neue optionale Methoden in `BasisPlugin` (plugin_interface.py):
| Methode | Beschreibung |
|---------|-------------|
| `latest_titles(page)` | Neuerscheinungen / neu hinzugefügte Titel |
| `years_available()` | Verfügbare Erscheinungsjahre für Filter |
| `titles_for_year(year, page)` | Titel nach Jahr gefiltert |
| `countries_available()` | Verfügbare Länder für Filter |
| `titles_for_country(country, page)` | Titel nach Herkunftsland gefiltert |
| `collections()` | Filmreihen / Sammlungen |
| `titles_for_collection(collection, page)` | Titel einer Sammlung |
| `tags()` | Schlagworte / Tags |
| `titles_for_tag(tag, page)` | Titel nach Schlagwort |
| `random_title()` | Zufälliger Titel |
Neue Capability-Strings: `latest_titles`, `year_filter`, `country_filter`, `collections`, `tags`, `random`
### Neue Menüeinträge in default.py
Plugins die die neuen Capabilities melden, erhalten automatisch folgende Menüpunkte:
- **"Neue Titel"** für Plugins mit `latest_titles`
- **"Nach Jahr"** für Plugins mit `year_filter`
- **"Nach Land"** für Plugins mit `country_filter`
- **"Sammlungen"** für Plugins mit `collections`
- **"Schlagworte"** für Plugins mit `tags`
- **"Zufälliger Titel"** für Plugins mit `random`
### Plugin-Erweiterungen
**Filmpalast** (`filmpalast_plugin.py`):
- `popular_series()` scrapt Top-Filme von `/movies/top`
- `latest_titles(page)` scrapt Neuerscheinungen von `/movies/new` mit Pagination
- IMDb-Rating in `metadata_for()` integriert (`info_labels["rating"]`)
- Neue Capabilities: `popular_series`, `latest_titles`
**Doku-Streams** (`dokustreams_plugin.py`):
- `tags()` scrapt alle Schlagworte von der Startseite
- `titles_for_tag(tag, page)` Titelliste pro Schlagwort mit Pagination
- `random_title()` folgt dem Redirect von `/zufaellige-doku/`
- `resolve_stream_link(link)` ResolveURL + HTTP-Redirect-Fallback
- Neue Capabilities: `tags`, `random`
**AniWorld** (`aniworld_plugin.py`):
- `titles_for_genre_page(genre, page)` paginierte Genre-Titellisten via `/genre/[slug]?page=[n]`
- `genre_page_count(genre)` letzte Seitennummer aus Pagination extrahiert
- `latest_titles(page)` neue Anime-Releases via `/animekalender`
- Neue Capability: `latest_titles`
**SerienStream** (`serienstream_plugin.py`):
- `latest_titles(page)` neue Serien via JSON-Kalender-API (`/api/calendar`) mit wochenweiser Rückwärts-Paginierung
- `genre_page_count(genre)` Gesamtanzahl der Genre-Seiten aus Pagination-Links extrahiert
- `alpha_index()` gibt A-Z-Buchstaben + `0-9` zurück
- `titles_for_alpha_page(letter, page)` Serien alphabetisch abrufen via `/serien/alle?buchstabe={letter}`
- Neue Capabilities: `latest_titles`, `alpha`
**TopStreamFilm** (`topstreamfilm_plugin.py`):
- `years_available()` statische Liste vom aktuellen Jahr bis 1980
- `titles_for_year(year, page)` Titel nach Erscheinungsjahr via `/xfsearch/{year}/page/{n}/`
- `latest_titles(page)` neue Filme via `/neueste-filme/page/{n}/`
- Neue Capabilities: `year_filter`, `latest_titles`
**Einschalten** (`einschalten_plugin.py`):
- `popular_series()` Top-50 Filme sortiert nach `voteAverage` (absteigend)
- `latest_titles(page)` neue Filme (Alias zu `new_titles_page(page)`)
- Neue Capabilities: `popular_series`, `latest_titles`
- Hinweis: Ratings (`voteAverage`, `voteCount`) waren bereits in `metadata_for()` enthalten
---
## 0.1.66-dev - 2026-02-25
- Serienstream HTTP-Fetches robuster gemacht: Retry bei kurzzeitigen Verbindungsabbruechen inkl. Session-Reset.
- ResolveURL-Import im Kodi-Addon gehaertet: Fallback ueber Addon-`lib`-Pfade (`resolveurl`, `kodi-six`, `six`).
- Resolver-Debug erweitert: Input/Output im Kodi-Log fuer jeden ResolveURL-Aufruf sichtbar.
- Playback-Guard fuer unaufgeloeste Hoster-Links (z. B. `voe.sx/e/...`) bleibt aktiv und liefert klare Fehlermeldungen.
- `script.module.resolveurl` als Addon-Abhaengigkeit in `addon.xml` eingetragen.
## 0.1.65-dev - 2026-02-24
- Resolver-Diagnosepfad wieder vereinfacht (Fallback/Embed-Block aus dem Router entfernt).
- Serienstream und AniWorld wieder mit VOE als bevorzugtem Hoster in der Default-Prioritaet.
## 0.1.64-dev - 2026-02-24
- Update-Kanaele in den Settings erweitert: `Dev` ist jetzt ein eigener Kanal.
- Neue Setting-URL `update_repo_url_dev` fuer direkte Dev-Repo-Auswahl.
- Repository-Addon auf `1.0.1` erhoeht.
- `repository.viewit` enthaelt jetzt zusaetzlich den `smrzips`-Feed, damit ResolveURL-Updates direkt verfuegbar sind.
## 0.1.63-dev - 2026-02-24
- ResolveURL ist jetzt eine weiche Abhaengigkeit: ViewIt installiert auch ohne vorinstalliertes ResolveURL.
- Neuer Settings-Action: `ResolveURL installieren/reparieren`.
- Optionales Auto-Bootstrap: ResolveURL kann beim Start automatisch nachinstalliert werden.
- Wiedergabe versucht bei fehlendem ResolveURL einmalig eine stille Nachinstallation und loest dann erneut auf.
- Update-Settings aufgeraeumt: Fokus auf installierte Version, Kanalstatus und verfuegbare Version im gewaehlten Kanal.
- Repo-Validierung als Script hinzugefuegt (`scripts/verify_repo_artifacts.py`) und in den lokalen Repo-Build eingebunden.
## 0.1.62-dev - 2026-02-24
- Neuer Dev-Stand fuer Genre-Performance (Serienstream).
- Genre-Listen laden strikt nur die angeforderte Seite (on-demand, max. 20 Titel).
- Weitere Seiten werden erst bei `Naechste Seite` geladen.
- Listen-Parser reduziert auf Titel, Serien-URL und Cover.
- Plot wird aus den Karten mit uebernommen und in der Liste angezeigt, falls vorhanden.
- Metadaten werden fuer die jeweils geoeffnete Seite vollstaendig geladen und angezeigt.
- Serien-Infos (inkl. Plot/Art) sind bereits in der Titelauswahl sichtbar, nicht erst in der Staffelansicht.