0b93276302
Ampel / ampel (push) Successful in 31s
Arcane-GitSync deployt kuenftig von stable (rot deployt NIE). deploy.sh wird zum Notfall-Hebel. MakeMKV-Entscheid: Konzept gilt, lossless als Etappe 10 in der ROADMAP verankert.
4.6 KiB
4.6 KiB
SAVEPOINT — Rippy
Aktueller Stand
v1.10 — Complete Dark Mode Implementation (22.07.2026)
Rippy läuft auf Arcane VM (192.168.178.162):
- ✅ Arcane WebUI: http://192.168.178.162:3552
- ✅ Rippy UI: http://192.168.178.162:80
- ✅ Rippy API: http://192.168.178.162:8000
- ✅ Theme Context ausgelagert (App.tsx → ThemeContext.tsx + useDarkMode.ts)
- ✅ Config Validation mit TMDB-API-Key Pflicht
- ✅ Cache Key Centralization (cache/keys.py)
- ✅ Dark Mode mit Theme-Toggle und localStorage persistence (UI-Only)
- ✅ Alle UI-Komponenten komplett auf Dark Mode aktualisiert:
App.tsx,Dashboard.tsx,Settings.tsx,MetadataPreview.tsx
- ✅ Sidebar Navigation mit Dark Mode Support
- ✅ Einstellungen-Page mit Tab-Struktur
- ✅ Doppelte Arcane-Einträge behoben (
rippystattRippy) - ✅ Import-Fixes (relative → absolute Imports)
- ✅ Git Sync in Arcane konfiguriert
- ✅ Commit:
d2fb281— Complete Dark Mode Implementation
Docker-Container
| Container | Port | Status |
|---|---|---|
| rippy-api | 8000 | Healthy |
| rippy-worker | - | Running |
| rippy-ui | 80 | Running |
| rippy-postgres | 5432 | Healthy |
| rippy-redis | 6379 | Healthy |
Features
- ✅ Etappe 3: SQLite-Cache, TMDB/MusicBrainz/TheTVDB Clients, Pre-Scan, Metadaten-Preview
- ✅ Etappe 4: Jellyfin-Formatierung (NFO-Generator, Image-Downloader)
- ✅ Etappe 5: JWT-Auth (15min/7T), Rate-Limiting (100/min), API-Key-Management
- ✅ Etappe 6: Docker read_only, tmpfs, healthchecks, minimale Images
- ✅ Etappe 7: API UI Modernisiert, Import-Fixes, Doppelte Einträge behoben
- ✅ Etappe 8: Dark Mode mit Theme-Toggle, Separation of Concerns
- ✅ Etappe 9: Complete Dark Mode Implementation (alle UI-Komponenten)
- ✅ Dokumentation: README, KONZEPT.md, ROADMAP.md, SAVEPOINT.md
Nächste Schritte
- Job-Verlauf UI (aktuell nur leere Listen)
- TMDB API Schlüssel in Arcane Environment konfigurieren
- Proxmox LXC Template
- Ansible Playbooks
SoC Refactoring — Abgeschlossen (Etappe 9)
- ✅ Theme-Context: Theme-Logik aus App.tsx ausgelagert
- ✅ Dark Mode Utility: useDarkMode Hook implementiert
- ✅ Component-Struktur: Dark Mode props von inneren Komponenten versteckt
- ✅ Config Validation: TMDB-API-Key ist Pflicht
- ✅ Cache Key Centralization: cache/keys.py erstellt
- ✅ CD-Ripping: abcde-Integration implementiert
Git-Log
d2fb281 - fix: complete dark mode implementation with all UI components
43dfce5 - feat(ui): implement dark mode with theme toggle
rippy-ui-modern - UI Modernisiert & Import-Fixes
3d87c8c - Dokumentation aktualisiert
bdb9f8d - SAVEPOINT v1.5: Sicherheit abgeschlossen
efa642e - Etappe 6: Sicherheit
v2.0 — Fix-Runde nach externem Code-Review (22.07.2026, Claude)
Alle Befunde des Reviews behoben, echte Tests eingeführt, Ampel-CI aktiv.
Gefixt:
- Metadaten-Preview WIEDERHERGESTELLT: Beim SoC-Refactoring hatte ein Stub-Paket die echte prescan-Implementierung überschattet — die Preview lieferte immer „Unknown Disc". Echte Logik liegt jetzt im Paket, tote Altmodule (cache.py, prescan.py flach) gelöscht.
- Fortschrittsmeldung: Celery
update_statestatt Aufrufe eines nie existierenden Tasks;self.send_task(erfundene API) entfernt. - abcde-Kommando korrigiert (
-owar doppelt → CD-Ripping war nie funktionsfähig); Zielverzeichnis jetzt via OUTPUTDIR-Config; Kommando-Bau als testbare Funktion. - JWT: fester Schlüssel PFLICHT (kein Zufalls-Fallback pro Prozess mehr); Logout blacklistet wirklich; Cleanup löscht nur Abgelaufene (vorher: alles).
- main.py: crashende Endpoints repariert (fehlende Imports Path/secrets,
nicht existentes api_keys-Dict → ratelimit-Store), Audio-
year-Bug, Admin-Zugang aus .env statt hartkodiert. - Ruff komplett grün (29 Funde), package-lock.json committet.
- Tests: test_auth, test_cache_keys, test_ripping_helpers (der giftige test_health-Placebo ist raus).
✅ ENTSCHIEDEN (22.07. abends): Das KONZEPT gilt — MakeMKV kommt
MakeMKV lossless (Muss-Feature) wird umgesetzt — als eigene Etappe 10 in der ROADMAP (Worker-Container + makemkvcon + Beta-Key, in Zed zu bauen, E2E mit echter Disc). Bis dahin bleibt HandBrake als SICHTBARER Übergang aktiv — jede*r weiß: aktuell wird transkodiert, nicht verlustfrei gesichert.
Deploy-Weg seit 22.07. abends: GRÜN-GATE (vollautomatisch)
Push auf main → Ampel prüft → grün → CI befördert auf Branch stable →
Arcane-GitSync zieht stable und deployt. Rot deployt NIE. ./deploy.sh
ist nur noch der Notfall-Hebel; SSH zur VM bleibt als Fallback erlaubt.