docs: SAVEPOINT v3.2, ROADMAP Etappe 13 + Ideen-Katalog, README-Ausbau, KONZEPT-Fortschreibungen
Ampel / ampel (push) Successful in 29s
Ampel / ampel (push) Successful in 29s
- README: Media-Server-Ablage, Benachrichtigungen (Tabelle je Dienst), System/MakeMKV-Key, UHD-Arbeitsverzeichnis, neuer Abschnitt 'Rippy woanders bereitstellen' (beliebiger Docker-Host, was NICHT mitmuss). - ROADMAP: Etappe 13 (Universal-Komfort-Runde) dokumentiert, erledigte Punkte aus Etappe 11/12 abgehakt, priorisierter Ideen-Katalog. - KONZEPT: Abschnitt 10 'Fortschreibungen' — Media-Server-Neutralitaet erweitert das Jellyfin-Muss (keine Abweichung), Benachrichtigungen, udev->ioctl. - SAVEPOINT v3.2 mit dem Kernbefund: Ampel war seit 23.07. rot, stable hing 10 Commits zurueck (bcrypt/passlib + veralteter Test) — behoben. - AGENTS: Stand-Sektion entschlackt (Details leben im SAVEPOINT). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -19,4 +19,6 @@ OMDB_API_KEY=
|
||||
# MakeMKV-Beta-Key (optional): DVDs gehen ohne, Blu-ray läuft 30 Tage im
|
||||
# Testmodus. Aktueller Key: Forum-Thread "MakeMKV is free while in beta".
|
||||
# Wechselt etwa monatlich — bei Blu-ray-Fehlern zuerst hier schauen.
|
||||
# Bequemer: im UI unter Einstellungen → System eintragen (gilt ab dem
|
||||
# nächsten Rip, ohne Neustart, und schlägt diesen Env-Wert).
|
||||
MAKEMKV_APP_KEY=
|
||||
|
||||
@@ -53,9 +53,10 @@ Bibliotheks-APIs: `--help`/Doku prüfen und die Fundstelle im Commit nennen.
|
||||
- Kein Proxmox-LXC-Nesting-Workaround — das Projekt lebt bewusst in normalem Docker.
|
||||
- Kein ARM-Fork — Rippy ist ein Eigenbau von Grund auf.
|
||||
|
||||
## Aktueller Stand (21.07.2026)
|
||||
## Aktueller Stand (24.07.2026)
|
||||
|
||||
- ✅ **Etappe 8 abgeschlossen:** Dark Mode mit Theme-Toggle, React-UI mit TailwindCSS
|
||||
- ✅ **Git Sync:** Arcane VM (192.168.178.162) mit Git Repository konfiguriert
|
||||
- ✅ **Savepoint v1.8:** Separation of Concerns geplant, Dark Mode implementiert
|
||||
- 📝 **Nächste Etappe:** SoC-Refactoring (Theme-Context auslagern)
|
||||
- ✅ **E2E bewiesen (v3.1):** BD-50 komplett durch die Kette (43 GB → 4,8 GB)
|
||||
- ✅ **Etappe 13 (v3.2):** Universal-Komfort-Runde — Media-Server-Integration,
|
||||
echte Benachrichtigungen, SMB-Klartext-Fehler, UHD-Arbeitsverzeichnis,
|
||||
MakeMKV-Key via UI, Job-Detail-Popup, Toast-Feedback, Ampel-Blocker behoben
|
||||
- 📝 **Details immer in SAVEPOINT.md** — diese Sektion nennt nur die Etappe
|
||||
|
||||
+14
@@ -161,3 +161,17 @@ Ein modular aufgebautes System, das bei Disc-Einwurf automatisch den Typ erkennt
|
||||
- Neue Risiken: TMDB-Matching-Fehler (mit Fallback), NFO-Format-Abhängigkeit (Hinweis), Pre-Scan-Latenz (Hinweis)
|
||||
|
||||
**Ergebnis:** Konzept ist wasserdicht für MVP-Phase.
|
||||
|
||||
## 10. Konzept-Fortschreibungen (dokumentierte Erweiterungen, keine Abweichungen)
|
||||
|
||||
- **24.07.2026 — Media-Server-Neutralität:** Die Jellyfin-Muss-Features
|
||||
(Ordnerstruktur, NFO, Poster) bleiben vollständig bestehen; sie sind jetzt
|
||||
über das Setting `mediaServer` auf Emby und Kodi ausgeweitet (identisches
|
||||
Kodi-NFO-Schema) und für Plex auf die reine Benennung reduziert. Jellyfin
|
||||
bleibt Referenz- und Empfehlungssystem im Einrichtungs-Assistenten.
|
||||
- **24.07.2026 — Benachrichtigungen:** Webhook bei Job-Ende (Discord/Slack/
|
||||
ntfy/generisch) als gebautes Feature — im UX-Flow Punkt 10 („Abschluss")
|
||||
war das als Protokollierung angelegt, jetzt meldet Rippy aktiv.
|
||||
- **23./24.07.2026 — udev → ioctl:** Der im Konzept beschriebene udev-Daemon
|
||||
ist im Container prinzipbedingt nicht lauffähig; die Disc-Wache pollt per
|
||||
Kernel-ioctl (3 s) — gleiches Verhalten, universell lauffähig.
|
||||
|
||||
@@ -44,17 +44,29 @@ NICHT als emuliertes CD-ROM (`media=cdrom`), das kann keine SCSI-Kommandos.
|
||||
|
||||
1. **Disc-Wache** (ioctl-Polling, kein udev-Gefrickel) erkennt Einlegen,
|
||||
identifiziert die Disc (Volume-Label → TMDB → OMDb-Fallback) und zeigt
|
||||
sie mit Poster auf dem Dashboard.
|
||||
sie mit Poster auf dem Dashboard. Klick auf einen Job-Titel öffnet die
|
||||
Detail-Ansicht (Poster, Jahr, Beschreibung, Ablagepfad).
|
||||
2. **Rip** (MakeMKV, verlustfrei — der einzige Weg durch AACS): Ziel wählst
|
||||
du beim Start (Filme/Serien/Musik/eigener Pfad, inkl. Netzwerk-Ziele).
|
||||
Vor dem Start prüft Rippy den freien Platz gegen die Disc-Größe.
|
||||
Audio-CDs laufen über abcde → FLAC + MusicBrainz.
|
||||
3. **Kompression** (HandBrake, eigener Job auf eigener Queue): x265/x264,
|
||||
Preset im UI wählbar; Rohdatei wird erst nach Erfolg gelöscht
|
||||
(„Original behalten" als Option). Fehlgeschlagene Kompressionen lassen
|
||||
sich ohne Neu-Rip neu anstoßen.
|
||||
4. **4K-UHD**: braucht ein LibreDrive-fähiges Laufwerk (MakeMKV-Forum:
|
||||
4. **Media-Server-Ablage**: Unter Einstellungen → Ripping (oder im
|
||||
Einrichtungs-Assistenten) wählst du dein System — Jellyfin, Emby, Kodi,
|
||||
Plex oder keins. Fertige Rips heißen dann „Titel (Jahr)" statt
|
||||
Job-UUID; für Jellyfin/Emby/Kodi legt Rippy zusätzlich movie.nfo +
|
||||
poster.jpg dazu (Kodi-NFO-Schema, lesen alle drei nativ). Plex nutzt
|
||||
nur die Benennung.
|
||||
5. **4K-UHD**: braucht ein LibreDrive-fähiges Laufwerk (MakeMKV-Forum:
|
||||
„Ultimate UHD Drives Flashing Guide"). Normale BD/DVD gehen mit jedem
|
||||
Laufwerk.
|
||||
Laufwerk. ⚠️ UHD-Rohdaten sind bis 100 GB groß — wenn die Platte der
|
||||
Rippy-Maschine dafür zu klein ist, lege das **Arbeitsverzeichnis**
|
||||
(Einstellungen → Verarbeitung) auf eine eingehängte Freigabe, z. B.
|
||||
`/app/media/nas-arbeit`. Rippy bricht sonst VOR dem Rip mit einer
|
||||
Klartext-Meldung ab statt nach 40 GB mit voller Platte.
|
||||
|
||||
## Speicherziele (NAS, Freigaben)
|
||||
|
||||
@@ -67,6 +79,28 @@ Containern. ⚠️ Zugangsdaten liegen unverschlüsselt in der lokalen
|
||||
Postgres-DB — bewusster Heimnetz-Kompromiss; lege fürs NAS einen eigenen,
|
||||
eingeschränkten Benutzer an.
|
||||
|
||||
## Benachrichtigungen
|
||||
|
||||
**Einstellungen → Benachrichtigungen**: eine Webhook-URL eintragen, „Test
|
||||
senden" drücken, speichern — fertig. Rippy meldet Job-Ende (fertig,
|
||||
fehlgeschlagen, abgebrochen) und erkennt den Dienst an der URL selbst:
|
||||
|
||||
| Dienst | URL-Beispiel | Format |
|
||||
|---|---|---|
|
||||
| Discord | `https://discord.com/api/webhooks/…` | `{"content": …}` |
|
||||
| Slack | `https://hooks.slack.com/services/…` | `{"text": …}` |
|
||||
| ntfy (Handy-Push) | `https://ntfy.sh/mein-geheimes-thema` | Roh-Text + Titel |
|
||||
| Eigenes (HA, n8n, …) | beliebige HTTPS-URL | `{"title","message","level"}` |
|
||||
|
||||
## System & MakeMKV-Beta-Key
|
||||
|
||||
**Einstellungen → System** zeigt die Werkzeug-Versionen jedes Workers
|
||||
(MakeMKV, HandBrake), den Key-Status und den freien Speicherplatz. Der
|
||||
MakeMKV-Beta-Key (wechselt ~monatlich, Forum-Thread t=1053) wird hier im
|
||||
UI eingetragen und gilt ab dem **nächsten Rip** — ohne Rebuild, ohne
|
||||
Neustart; er schlägt den Key aus der `.env`. Nur die MakeMKV-*Version*
|
||||
steckt im Image: `docker compose build worker && docker compose up -d worker`.
|
||||
|
||||
## Verarbeitung & Hardware
|
||||
|
||||
**Einstellungen → Verarbeitung** zeigt ehrlich an, welche Encoder deine
|
||||
@@ -88,11 +122,33 @@ eingebaute CPU-Worker alles selbst — Rippy bleibt All-in-one.
|
||||
| `TMDB_API_KEY` | empfohlen | Metadaten — alternativ im UI/Wizard eintragbar |
|
||||
| `OMDB_API_KEY` | optional | zweite Metadaten-Quelle (Fallback) |
|
||||
| `THETVDB_API_KEY` | optional | Serien-Fallback |
|
||||
| `MAKEMKV_APP_KEY` | optional | MakeMKV-Beta-Key (Forum); DVDs gehen ohne |
|
||||
| `MAKEMKV_APP_KEY` | optional | MakeMKV-Beta-Key (Forum); DVDs gehen ohne — bequemer: im UI unter Einstellungen → System pflegen |
|
||||
| `MAKEMKV_URL_BASE` | optional | alternative Download-Quelle für den Image-Build |
|
||||
|
||||
UI-Einstellungen (Wizard/Settings) überstimmen die Env-Variablen.
|
||||
|
||||
## Rippy woanders bereitstellen
|
||||
|
||||
Rippy ist reines Docker Compose — es läuft auf **jedem Linux-Host mit
|
||||
Docker**, nicht nur auf der Original-VM. Es gibt (noch) keine fertigen
|
||||
Registry-Images; gebaut wird beim ersten `up` direkt aus dem Repo.
|
||||
|
||||
Voraussetzungen auf dem Ziel-Host:
|
||||
1. Linux (x86_64) mit Docker + Compose-Plugin.
|
||||
2. Ein optisches Laufwerk, das der Host sieht (`ls /dev/sr* /dev/sg*`).
|
||||
In einer VM: per **USB-Passthrough** (Vendor-ID) durchreichen, NICHT
|
||||
als emuliertes CD-ROM — siehe „Laufwerk anpassen" oben.
|
||||
3. Ablage-Basis anlegen: `mkdir -p /srv/rippy/media` (oder Pfad in
|
||||
`docker-compose.yml` anpassen — muss ein rshared-fähiger Bind sein).
|
||||
|
||||
Dann wie im Schnellstart: klonen, `.env` füllen, `docker compose up -d
|
||||
--build`, `http://<host>` öffnen — der Einrichtungs-Assistent führt durch
|
||||
den Rest (API-Keys, Media-Server, Verarbeitung). Updates: `git pull &&
|
||||
docker compose up -d --build`.
|
||||
|
||||
Nicht mitnehmen musst du: Gitea, Arcane, den CI-Runner — das ist die
|
||||
Entwicklungs-Infrastruktur DIESER Installation, nicht Teil von Rippy.
|
||||
|
||||
## Entwicklung
|
||||
|
||||
CI („Ampel") läuft bei jedem Push: Ruff, pytest, Vite-Build. Grün auf
|
||||
|
||||
+63
-3
@@ -249,7 +249,9 @@ Bind-Mounts statt devices: (EPERM), UI rief hartkodiert localhost:8000 auf.
|
||||
- [x] /settings-Endpoints (Settings-Seite sprach vorher ins Leere)
|
||||
- [x] UI: Vite-Build + nginx mit /api-Proxy statt Dev-Server; relative API-Pfade
|
||||
- [x] compose: devices: statt Bind-Mounts; Ausgabe aufs media-Volume
|
||||
- [ ] Jellyfin-Post-Processing an den Worker anbinden (NFO/Poster nach dem Rip)
|
||||
- [x] Jellyfin-Post-Processing an den Worker anbinden (NFO/Poster nach dem
|
||||
Rip) — 24.07., medien.py: Ordner „Titel (Jahr)" + movie.nfo + poster.jpg,
|
||||
gesteuert übers mediaServer-Setting (Jellyfin/Emby/Kodi/Plex/keins)
|
||||
- [ ] Auth vor die schreibenden Endpoints (JWT existiert, schützt aber nichts)
|
||||
|
||||
---
|
||||
@@ -280,8 +282,9 @@ Jellyfin-Konvention nativ (ARM kann nur Emby-Refresh, keine NFOs).
|
||||
erlaubt nur EINE Auswahl).
|
||||
- [ ] **Min/Max-Titellänge + Extras**: Bonusmaterial nach extras/ (versteht
|
||||
Jellyfin nativ) statt alles flach.
|
||||
- [ ] **Apprise-Benachrichtigungen**: eine Lib für Telegram/Discord/…,
|
||||
Hooks auf job_completed/failed/awaiting_selection, Deep-Link ins UI.
|
||||
- [x] **Benachrichtigungen bei Job-Ende** — 24.07., eigenes notify-Modul
|
||||
(Discord/Slack/ntfy/generisches JSON, Dienst-Erkennung an der URL)
|
||||
statt Apprise-Dependency; Test-Knopf im UI. Telegram/Deep-Links offen.
|
||||
- [ ] **Multi-Drive-Verwaltung**: drives-Tabelle (Seriennummer, Custom-Name,
|
||||
UHD-fähig-Flag), parallele Rips, Job↔Drive-Zuordnung.
|
||||
- [ ] **Backup-Modus** (makemkvcon backup --decrypt) als Plan B für Problem-Discs.
|
||||
@@ -294,3 +297,60 @@ Jellyfin-Konvention nativ (ARM kann nur Emby-Refresh, keine NFOs).
|
||||
„Show/Season 02/Show S02E05.mkv" im Preview bestätigen.
|
||||
- [ ] **Main-Feature per Laufzeitabgleich** mit TMDB-Runtime (±3 min) statt
|
||||
ARMs „größte Datei gewinnt" (#1297-Fehlklasse).
|
||||
|
||||
---
|
||||
|
||||
## Etappe 13 (24.07.2026): Universal-Komfort-Runde — Lücken aus dem Alltag schließen
|
||||
|
||||
**Quelle:** Commander-Sammelauftrag 24.07. — alles, was beim echten Benutzen
|
||||
auffiel, in einem Rutsch. Alles gebaut, Tests dabei, Ampel-Blocker behoben.
|
||||
|
||||
**Gebaut:**
|
||||
- [x] **Ampel entrostet**: bcrypt auf 4.0.1 gepinnt (passlib-1.7.4-Bruch) und
|
||||
cache_keys-Test an das Fingerprint-Format vom 23.07. angepasst — DIE
|
||||
beiden Rot-Ursachen, wegen derer `stable` 10 Commits zurückhing.
|
||||
- [x] **Media-Server-Integration**: mediaServer-Setting (Wizard + Einstellungen),
|
||||
Zielordner „Titel (Jahr)", movie.nfo/tvshow.nfo + poster.jpg für
|
||||
Jellyfin/Emby/Kodi (medien.py im Worker, mit Tests).
|
||||
- [x] **Benachrichtigungen echt gemacht**: notify.py (API+Worker), Meldung bei
|
||||
fertig/fehlgeschlagen/abgebrochen, Anleitung + Test-Knopf im UI —
|
||||
das Webhook-Feld war vorher ein Placebo, nichts hat je gesendet.
|
||||
- [x] **SMB-Freigaben-Scan repariert**: NT_STATUS-Fehler → Klartext (Gast-
|
||||
Abfrage verweigert ⇒ Benutzer/Passwort nötig), Credential-Felder im UI
|
||||
VOR den „Freigaben auflisten"-Knopf gezogen.
|
||||
- [x] **4K-UHD-Platzproblem**: Arbeitsverzeichnis konfigurierbar (workDir,
|
||||
z. B. NAS-Freigabe), Platz-Check per Disc-Größe (ioctl) VOR dem Rip.
|
||||
- [x] **MakeMKV-Key über UI** (Einstellungen → System): gilt ab dem nächsten
|
||||
Rip, ohne Rebuild; Worker melden Werkzeug-Versionen + Key-Quelle.
|
||||
- [x] **Job-Detail-Popup**: Klick auf Titel in „Neueste Jobs" → Poster, Jahr,
|
||||
Beschreibung, Ablagepfad, Fehler (Job speichert Metadaten jetzt mit).
|
||||
- [x] **UI-Feedback überall**: Toast-System (reinploppende Meldungen), drehende
|
||||
Refresh-Knöpfe, Logs-Filter um Warnung/Fehler-Pills ergänzt.
|
||||
- [x] **Datei-Browser zeigt Dateien**: Ordner wirkten „leer", weil nur
|
||||
Unterordner gelistet wurden — Dateien erscheinen jetzt grau mit Größe.
|
||||
- [x] Favicon (Disc im Logo-Verlauf) + Footer „Created with ❤️ by LucyAI,
|
||||
Claude and KrBrZ".
|
||||
- [x] README: Media-Server, Benachrichtigungen, UHD-Arbeitsverzeichnis,
|
||||
„Rippy woanders bereitstellen" (beliebiger Docker-Host).
|
||||
|
||||
**Offen aus dieser Runde:** nichts — Rest siehe Etappe 12 und Ideen unten.
|
||||
|
||||
---
|
||||
|
||||
## Ideen-Katalog (24.07.2026, priorisiert) — Lücken, die noch offen sind
|
||||
|
||||
1. **Serien-Staffel-Flow**: Beim Rippen einer Serien-Disc Staffel/Disc-Nr
|
||||
abfragen → Ablage `Show/Season 02/`, Episoden-Matching wie Etappe 12.
|
||||
2. **Duplikat-Warnung**: Disc-Fingerprint schon in der Job-Historie →
|
||||
„schon am X gerippt — trotzdem?" (Fingerprint-Infrastruktur existiert).
|
||||
3. **Jellyfin-Bibliotheks-Refresh** nach Ablage (API-Key + URL in den
|
||||
Einstellungen, POST /Library/Refresh) — der letzte Schritt zur
|
||||
Null-Klick-Kette Disc→Bildschirm.
|
||||
4. **Track-Auswahl vor dem Rip** (awaiting_selection, Etappe 12) — spart
|
||||
bei Bonus-Material-Discs Stunden.
|
||||
5. **Auth vor schreibende Endpoints** + Login-Flow im UI (JWT existiert).
|
||||
6. **Speicherplatz-Kachel im Dashboard** (Media/Arbeitsverzeichnis als
|
||||
Balken — /system/info liefert die Daten schon).
|
||||
7. **Rip-Historie exportieren** (CSV/JSON) für die Sammlung-Übersicht.
|
||||
8. **Design 2.0**: Design-Tokens statt Theme-Ternaries in jeder Zeile —
|
||||
die `theme === 'dark' ? … : …`-Kaskaden sind der größte UI-Schuldenberg.
|
||||
|
||||
+44
-1
@@ -1,6 +1,49 @@
|
||||
# SAVEPOINT — Rippy
|
||||
|
||||
## Aktueller Stand: v3.1 — E2E BEWIESEN + Universal-Runde (24.07.2026, Claude)
|
||||
## Aktueller Stand: v3.2 — Universal-Komfort-Runde + Ampel entrostet (24.07.2026, Claude)
|
||||
|
||||
**Wichtigster Befund zuerst: die Ampel war seit dem 23.07. ROT und `stable`
|
||||
hing 10 Commits hinter `main`** — deshalb kam nichts Neues mehr auf die VM.
|
||||
Zwei Ursachen, beide behoben:
|
||||
1. bcrypt ≥ 4.1 bricht passlib 1.7.4 (`__about__` entfernt → Selbsttest wirft
|
||||
„password cannot be longer than 72 bytes") → **bcrypt==4.0.1 gepinnt**.
|
||||
2. Der cache_keys-Test kannte den Disc-Fingerprint im Prescan-Key (23.07.)
|
||||
nicht → Test an das echte Format angepasst + Fingerprint-Testfall dazu.
|
||||
|
||||
**Neu in v3.2 (Commander-Sammelauftrag, alles mit Tests / Vite-Build grün):**
|
||||
- **Media-Server-Integration**: Setting `mediaServer` (Wizard + Einstellungen →
|
||||
Ripping): Zielordner „Titel (Jahr)" statt Job-UUID; für Jellyfin/Emby/Kodi
|
||||
zusätzlich movie.nfo/tvshow.nfo + poster.jpg (Worker: medien.py). Plex = nur
|
||||
Benennung. Job speichert Disc-Metadaten jetzt mit (jobs.meta, Migration).
|
||||
- **Benachrichtigungen ECHT**: notify.py in API+Worker (Discord/Slack/ntfy/
|
||||
generisch, Erkennung an der URL) — das Feld war vorher ein Placebo. Meldung
|
||||
bei fertig/fehlgeschlagen/abgebrochen; Anleitung + „Test senden" im UI.
|
||||
- **SMB-Scan-Fix**: „NT_STATUS_ACCESS_DENIED" heißt jetzt im Klartext „Gast-
|
||||
Abfrage verweigert → Benutzer/Passwort eintragen"; Credential-Felder stehen
|
||||
im UI VOR dem Auflisten-Knopf. NAS-Ziel-Anlage quittiert per Toast.
|
||||
- **4K-UHD-Vorsorge**: Arbeitsverzeichnis `workDir` konfigurierbar (auf
|
||||
NAS-Freigabe legbar), Platz-Check per Disc-Größe (ioctl) VOR dem Rip mit
|
||||
Klartext-Abbruch statt voller Platte bei 40 GB.
|
||||
- **Einstellungen → System**: Werkzeug-Versionen je Worker (MakeMKV/HandBrake,
|
||||
ENV MAKEMKV_VERSION im Image), Key-Quelle (ui/env/keiner), freier Platz;
|
||||
**MakeMKV-Beta-Key im UI pflegbar** — gilt ab dem nächsten Rip, ohne Rebuild.
|
||||
- **Job-Detail-Popup** (Klick auf Titel in „Neueste Jobs"): Poster, Jahr,
|
||||
Beschreibung, Genres, Ablagepfad, Fehler (GET /jobs/{id}/detail).
|
||||
- **UI-Feedback**: Toast-System (ToastContext, ploppt oben rechts), drehende
|
||||
Refresh-Knöpfe, Logs-Pills um Warnung/Fehler ergänzt, Datei-Browser zeigt
|
||||
jetzt auch DATEIEN (grau, mit Größe) — der „leere" Bluray-Ordner war voll.
|
||||
- **Favicon** (Disc, Indigo-Verlauf) + **Footer** „Created with ❤️ by LucyAI,
|
||||
Claude and KrBrZ".
|
||||
- **Doku**: README (Media-Server, Benachrichtigungen, UHD-Arbeitsverzeichnis,
|
||||
„Rippy woanders bereitstellen"), ROADMAP Etappe 13 + Ideen-Katalog,
|
||||
KONZEPT-Fortschreibungen (Abschnitt 10), AGENTS-Stand.
|
||||
|
||||
**Nächste Schritte:** unverändert die Fäden aus v3.1 (unten) + Ideen-Katalog
|
||||
in der ROADMAP (Serien-Flow, Duplikat-Warnung, Jellyfin-Refresh, Auth).
|
||||
|
||||
---
|
||||
|
||||
## Vorheriger Stand: v3.1 — E2E BEWIESEN + Universal-Runde (24.07.2026, Claude)
|
||||
|
||||
**Der Beweis steht: Evangelion 2.22 (BD-50) komplett durch die Kette** —
|
||||
erkannt → verlustfrei gerippt (43 GB, LibreDrive) → H.264-komprimiert →
|
||||
|
||||
Reference in New Issue
Block a user