Versionsarchiv

MovieShelf Desktop
Changelog.

Alle öffentlichen Versionen mit Änderungsprotokoll und Download-Links.

v0.20.0 Neueste Version
19. July 2026
Windows Debian

Aus „Staffeln nachladen" wird „Staffeln verwalten": einzelne Staffeln lassen sich jetzt auch wieder entfernen – wie in der Shelf.

Neu

  • Staffeln verwalten. Im Dialog auf der Serien-Detailseite sind vorhandene Staffeln jetzt vorbelegt und abwählbar: Anhaken lädt fehlende Staffeln nach, Abwählen entfernt vorhandene samt Folgen (mit rotem „Wird entfernt"-Hinweis und Warnung). Im Online-Modus entfernt der Shelf-Server (ab Shelf 2.30.0) und die App spiegelt das Ergebnis; im Standalone-Modus passiert es direkt lokal (#60).

Behoben

  • Sync: Auf der Shelf entfernte Staffeln werden beim Delta-/Full-Sync jetzt auch lokal entfernt. Bisher blieben sie ewig liegen, weil der Sync Staffeln nur anlegte/aktualisierte. Lokal (standalone) angelegte Staffeln bleiben unangetastet (#60).
  • winget: Die winget-Einreichung läuft jetzt als Job im Release-Workflow – der bisherige eigenständige Workflow wurde vom Release-Event nie gestartet, weshalb winget seit 0.15.0 keine neuen Versionen bekam.

v0.19.1
19. July 2026
Windows Debian

Behoben

  • Statistik-Popup: Das X im Statistik-Fenster schloss das Hauptfenster statt des Popups. Die Fenster-Buttons (Schließen/Minimieren/Maximieren) steuern jetzt immer das Fenster, in dem sie geklickt wurden; das Hauptfenster minimiert weiterhin ins Tray.

v0.19.0
19. July 2026
Windows Debian

Bestehende Serien können jetzt Staffeln nachladen – mit Auswahl, welche man wirklich besitzt. Dazu zählen die Statistiken exakt wie in der Shelf.

Neu

  • Staffeln nachladen. Auf der Serien-Detailseite lassen sich fehlende Staffeln per Dialog importieren (wie in der Shelf): keine Vorauswahl, bereits vorhandene Staffeln sind markiert und gesperrt, importiert werden nur die gewählten inklusive Episoden. Im Online-Modus importiert der Shelf-Server (ab Shelf 2.29.0) und die App spiegelt das Ergebnis; im Standalone-Modus läuft der Import direkt über TMDb (#58).

Behoben

  • Statistik: Das Sammlungstypen-Panel zählt Boxset-Container nicht mehr mit und stimmt damit exakt mit den Kacheln und der Shelf überein (#57).

v0.18.0
19. July 2026
Windows Debian

Der TMDb-Import arbeitet jetzt exakt wie in der Shelf – Serien bekommen einen eigenen Staffel-Dialog, Filme vollständige Metadaten, und das Datenschema ist mit Shelf und Android-App vereinheitlicht.

Neu

  • Serien-Import mit Staffel-Dialog. Ein Serien-Treffer in der TMDb-Suche öffnet wie in der Shelf direkt die Staffel-Auswahl (Poster, Episodenzahl, „Alle wählen"/„Auswahl leeren"). Keine Vorauswahl mehr – importiert wird erst ab einer gewählten Staffel, inklusive aller Episoden (#52).
  • Film-Import mit Shelf-Feldern. FSK wird automatisch aus TMDb übernommen (deutsches Zertifikat, bei Serien mit US-Fallback), Trailer akzeptieren jetzt auch Teaser als Fallback (#53).
  • Einheitliches Typ-Schema. Typ ist jetzt Film oder Serie; das Medium (DVD, Blu-ray, 4K, Streaming, …) steht im Tag – identisch zu Shelf und Android-App (#54).

Migration

  • Bestehende Einträge werden beim ersten Start automatisch normalisiert: Format-Werte im Typ-Feld (z. B. Blu-ray, DVD) wandern in leere Tags, Dokumentation/Kurzfilm werden zu Film. Serien bleiben unverändert.

v0.17.0
14. July 2026
Windows Debian

MovieShelf spricht jetzt Deutsch und Englisch – und begrüßt neue Nutzer mit einem überarbeiteten Onboarding.

Neu

  • Zweisprachige Oberfläche (Deutsch/Englisch). Neue Sprachauswahl unter Einstellungen → Erscheinungsbild; der Wechsel wirkt sofort ohne Neustart – inklusive Tray-Menü und System-Dialogen. Die gewählte Sprache steuert auch die TMDb-Metadaten (Suche, Details, Besetzung laden englische bzw. deutsche Inhalte). Die Einstellung gilt pro Gerät (#50).
  • Überarbeitetes Onboarding. Willkommensseite mit MovieShelf-Logo und kurzer Feature-Übersicht, neuer Schritt zur Wahl zwischen Standalone und Cloud-Modus (jederzeit in den Einstellungen änderbar) sowie Registrierungs-Link zu movieshelf.info (#51).

Migration

  • Keine – die neue Einstellung language wird additiv angelegt, Standard ist Deutsch.

v0.16.0
12. July 2026
Windows Debian

Sync-Korrektheit-Release nach der zweiten Runde des Projekt-Scans: lokale Änderungen können nicht mehr still verloren gehen, und Listen-Entfernungen erreichen jetzt den Server.

Neu

  • Aus Listen entfernte Filme bleiben entfernt. Der Listen-Sync merkt sich lokale Entfernungen (Tombstones) und überträgt sie beim nächsten Sync auf den Server – bisher kamen entfernte Filme durch die Vereinigungs-Logik wieder zurück (#49).

Behoben

  • Lokale Bearbeitungen überleben den Sync. Der Pull hatte lokal geänderte, noch nicht hochgeladene Filme als synchronisiert gestempelt – sie wurden dann nie mehr gepusht und Desktop und Server liefen still auseinander. Auch der lokal gesetzte Gesehen-Status wird vom Pull nicht mehr zurückgesetzt (#42).
  • Keine Sync-Nachfrage mehr beim Beenden im Standalone-Modus. Ohne konfigurierten Server erschien beim Beenden über das Tray fälschlich „Du hast N Filme noch nicht synchronisiert" (#43).
  • Listen: Löschen einer Liste räumt jetzt auch externe Filme auf, die nur dort lagen; das Entfernen von Items aktualisiert den Änderungszeitstempel; neue Listen erhalten ihre Server-ID zuverlässig (verhinderte sonst Listen-Duplikate auf dem Server) (#44).
  • Statistik: Laufzeit-Verteilung ohne Lücken und Überlappungen an den Bucket-Grenzen (#45).
  • Serien-Sync: Episoden gehen nicht mehr verloren, wenn der Server sie neu angelegt oder umnummeriert hat (#46).
  • Trailer-Fenster: Navigation ist auf YouTube begrenzt; andere Links öffnen im Standardbrowser (#47).

Migration

  • Beim ersten Start wird automatisch die neue Tabelle list_item_tombstones angelegt (additiv, kein Eingriff in bestehende Daten).

v0.15.1
12. July 2026
Windows Debian

Sicherheits- und Wartungsrelease nach einem vollständigen Projekt-Scan (Bugs & Sicherheitslücken).

Sicherheit

  • Pfad-Traversal über die IPC-Brücke geschlossen. media:upload und media:exists erzwingen jetzt – wie media:download – eine numerische ID; manipulierte IPC-Argumente können damit nicht mehr aus dem Covers-Ordner ausbrechen (#36).
  • movie-resource:// gegen kodierte Traversal gehärtet. Prozent-kodierte Pfad-Separatoren (%2F, %5C) werden jetzt vor der Prüfung aufgelöst; erlaubt sind nur noch einfache Dateinamen (#38).
  • Keine Secrets mehr im Backup. shelf_token und tmdb_api_key werden nicht mehr in .ms-Backups exportiert; beim Wiederherstellen werden nur noch bekannte Settings-Keys übernommen (#37).
  • Medien-Downloads: Die Domain-Prüfung kennt jetzt öffentliche Second-Level-TLDs (z. B. co.uk) und lässt dort keine fremden Domains mehr durch (#36).
  • Abhängigkeiten aktualisiert: npm audit meldet 0 Schwachstellen (vorher 10, davon 2 kritisch in der Dev-Toolchain) (#41).

Behoben

  • Abgebrochene Cover-Downloads lassen keine halbfertigen Dateien mehr zurück und hängen nicht mehr (#36).
  • Update-Fortschritt/-Fehler feuerten nach erneutem Öffnen der Einstellungen mehrfach (Listener-Leck im Preload) (#39).
  • OAuth-Login: Der Callback ging bei geöffnetem Trailer-/Statistik-Fenster an das falsche Fenster und verpuffte (#40).

v0.15.0
24. June 2026
Windows Debian

Neu

  • Drei Ansichten im Filme-/Serien-Reiter. Umschaltbar zwischen Raster (Poster), Liste und Tabelle; die Wahl wird dauerhaft gemerkt. Liste und Tabelle zeigen u. a. Bewertung, Laufzeit und Gesehen-Status und unterstützen die Mehrfachauswahl.
  • Protokolle. Neuer Bereich unter Einstellungen → Entwickler: zeigt die letzten Meldungen des Hauptprozesses, mit Aktualisieren, Logordner öffnen und Leeren. Logs werden zusätzlich in userData/logs/main.log geschrieben.

Geändert

  • Einstellungen aufgeräumt: neuer Abschnitt „Allgemein" (Autostart liegt jetzt dort), Menüpunkte alphabetisch sortiert.

Behoben

  • Autostart-Schalter funktioniert nun zuverlässig (fälschlicher Dev-Kurzschluss entfernt).
  • Defensiver Schutz gegen TMDb-404-Meldungen bei Datensätzen, die faktisch Serien sind (lokale Staffeln werden vorab geprüft).

v0.14.0
23. June 2026
Windows Debian

Neu

  • Installationsverzeichnis wählbar & Desktop-Icon optional. Der Windows-Installer ist jetzt ein geführter Assistent (statt One-Click): der Zielordner lässt sich frei wählen und die Desktop-Verknüpfung per Checkbox an-/abwählen.
  • Autostart beim Systemstart. Neuer Schalter „Beim Systemstart öffnen" in den Einstellungen (Erscheinungsbild). Beim Login startet MovieShelf leise ins Tray.
  • Tray-Icon. MovieShelf läuft jetzt mit Symbol im Infobereich. Schließen (X) minimiert ins Tray statt zu beenden; tatsächliches Beenden erfolgt über das Tray-Menü (inkl. der bestehenden Sync-Abfrage bei nicht synchronisierten Änderungen).

v0.13.1
21. June 2026
Windows Debian

Behoben

  • Auto-Update brach mit „not signed by the application owner" / UntrustedRoot ab. Der Installer ist mit einem selbstsignierten Zertifikat signiert, dessen Stammzertifikat Windows nicht kennt; electron-updater verweigerte daraufhin den Auto-Install. Die Signaturprüfung des Updaters ist jetzt deaktiviert (win.verifyUpdateCodeSignature: false) – passend für die selbstgehostete Installation, Downloads bleiben auf den Master-Server beschränkt.

Hinweis: Die Einstellung steckt im Build. Die Aktualisierung auf 0.13.1 muss daher einmalig manuell installiert werden (Setup von der Release-Seite); ab 0.13.1 funktionieren Auto-Updates wieder.


v0.13.0
21. June 2026
Windows Debian

Geändert

  • Datenmodell-Split: externe Listen-Filme von der Sammlung getrennt. Filme, die nur in einer Liste liegen (nicht besessen), sind jetzt eigene Datensätze (external_movies) statt Sammlungsfilme mit in_collection=0. Listen referenzieren Sammlungs- und externe Filme gemischt (polymorpher list_items-Pivot). Folgen:
    • Externe Filme ziehen keine Sammlungsnummern mehr.
    • Die Sammlung erhält eine lückenlose collection_no (in der Detailansicht als „Nr." sichtbar).
    • Listen können Sammlungs- und externe Filme zugleich enthalten (Badge „Sammlung"/„Extern").
  • Sync auf den neuen Items-Vertrag umgestellt (Sammlung + extern), UNION-Logik bleibt – Listen werden in keine Richtung überschrieben.

Behoben

  • Medien-Download akzeptiert jetzt die eigene Medien-Subdomain des Master-Servers (z. B. medien.<domain>), blockiert weiter Fremdhosts.

Migration

  • Beim ersten Start verschiebt eine einmalige lokale Migration in_collection=0-Filme nach external_movies und list_movieslist_items (destruktiv – vorher movieshelf.db sichern).
  • Setzt einen MovieShelf-Server ≥ passendem Datenmodell-Split voraus; bitte Server zuerst migrieren, dann einmalig Voll-Sync.

v0.12.0
20. June 2026
Windows Debian

Behoben

  • Update wird heruntergeladen, aber nicht installiert: Der Download lief bis 100 % und brach dann ab, ohne dass etwas passierte. Ursachen und Fixes:
    • Differential-Download abgeschaltet (disableDifferentialDownload = true): Passte die .blockmap nicht exakt zur veröffentlichten .exe (Folge einer früheren doppelten Build-Pipeline), ergab das Blockmap-Patching am Ende eine abweichende SHA512 → Prüfsummen-Fehler genau bei 100 %. Es wird jetzt die vollständige Datei geladen.
    • Fehler waren unsichtbar: Das update:error-Event wurde nie im Renderer abonniert, und die Meldung stand nur im Download-Block (verschwand also sofort wieder). Es gibt jetzt update.onError/update.onReady in der Bridge und einen dauerhaft sichtbaren Fehlerhinweis.
    • Installer-Start abgesichert: quitAndInstall(false, true) wird per setImmediate aufgerufen (IPC-Antwort wird zuerst geflusht), der NSIS-Setup-Dialog erscheint zuverlässig und die App startet nach dem Update neu.
  • Update-Logdatei: Updater-Vorgänge und -Fehler werden jetzt nach userData/updater.log geschrieben — in der Produktion diagnostizierbar statt nur auf der unsichtbaren Konsole.

Hinweis

  • Diese Verbesserungen wirken erst ab einem Build, der sie enthält. Die Aktualisierung auf 0.12.0 muss daher einmalig manuell (Setup von der Release-Seite) installiert werden; danach läuft Auto-Update sauber.

Release

  • App-Version auf 0.12.0 gesetzt; package-lock.json synchronisiert.
  • Duplikat-Installer (MovieShelf.Setup.0.11.0.exe) aus dem v0.11.0-Release entfernt.
  • build.yml entfernt (lief parallel zu release.yml auf v* und erzeugte den zweiten, inkonsistenten Installer → Blockmap-Mismatch).
  • release.yml veröffentlicht jetzt latest.yml (Update-Manifest): bisher kam es nur aus dem entfernten build.yml; ohne dieses Manifest kann electron-updater Updates gar nicht erst erkennen.

v0.11.0
20. June 2026
Windows Debian
v0.10.0
15. May 2026
Windows Debian

Hinzugefuegt

  • Sync-Vorschau mit Pull + Push: Wenn die Vorschau sowohl Shelf- als auch lokale Desktop-Aenderungen zeigt, fuehrt das Bestaetigen jetzt einen bidirektionalen Delta-Sync aus: Pull, Push und Listen-Sync. Der Vollsync-Button bleibt weiterhin ein echter Vollsync.
  • Serien-/Episoden-Import robuster: Lokale TMDb-Folgen ohne remote_id werden beim spaeteren Shelf-Sync mit der passenden Remote-Folge zusammengefuehrt, statt einen UNIQUE-Konflikt auf (season_id, episode_number) auszuloesen.
  • Regressionstest fuer Episode-Merge: Abgedeckt ist nun der Fall, dass eine lokal importierte Folge beim ersten Shelf-Sync ihre remote_id erhaelt.

Geaendert

  • Sync-Ergebnis zaehlt uebersprungene Filme korrekt: Filme mit identischem updated_at werden nicht mehr als aktualisiert gezaehlt, sondern als uebersprungen.
  • Episode-Deduplizierung bevorzugt Remote-Daten: Die Migration behaelt bei doppelten Episoden bevorzugt eine Zeile mit remote_id.

Release

  • App-Version auf 0.10.0 gesetzt.
  • package-lock.json Root-Version wieder mit package.json synchronisiert.

v0.9.6
14. May 2026
Windows Debian

Behoben

  • Vollsync: UNIQUE constraint failed: movies.remote_id: Beim Vollsync konnte es passieren, dass ein Film lokal bereits synchronisiert (mit remote_id) und zusätzlich als Orphan (ohne remote_id, aber gleiche tmdb_id) vorlag. Der Orphan-Merge-Code versuchte dann, dem Orphan die bereits vergebene remote_id zuzuweisen → UNIQUE-Fehler. Fix: Orphan-Merge wird übersprungen wenn schon eine Zeile mit der eingehenden remote_id existiert — die bestehende INSERT ... ON CONFLICT-Logik übernimmt dann das Update

v0.9.5
14. May 2026
Windows Debian

Behoben

  • Installer startet nach Download nicht: install() wurde ausschließlich über ein IPC-Event (update:ready) ausgelöst, das unter bestimmten Timing-Bedingungen nicht ankam. Da download() intern bereits auf die vollständige Fertigstellung wartet (downloadUpdate() resolved erst nach abgeschlossenem Download), wird install() jetzt direkt danach aufgerufen — zuverlässig und ohne Event-Abhängigkeit

v0.9.4
14. May 2026
Windows Debian

Behoben

  • Serien-Import: Folgen werden nicht importiert: upsertSeason gab beim lokalen Import (ohne remote_id) immer undefined zurück statt der neuen Zeilen-ID. Dadurch schlug die seasonId != null-Prüfung in importSeasons immer fehl und keine Folge wurde gespeichert. Fix: lastInsertRowid wird jetzt zurückgegeben wenn remote_id nicht gesetzt ist
  • Update-Changelog wird nicht angezeigt: extractVersionSection hat die Versionsnummer für den Regex-Vergleich falsch escaped — zwei aufeinanderfolgende .replace('.') haben den ersten Punkt doppelt escaped. Fix: .replace(/\./g, '\\.') tauscht alle Punkte in einem Durchlauf aus

v0.9.3
14. May 2026
Windows Debian

Behoben

  • Installer wird heruntergeladen aber nicht ausgeführt: autoUpdater.quitAndInstall() löste intern app.quit() aus, das vom mainWindow.on('close')-Handler abgefangen wurde (dieser ruft e.preventDefault() auf, sofern isQuitting nicht gesetzt ist). isQuitting wird jetzt vor dem quitAndInstall()-Aufruf auf true gesetzt, sodass der Close-Handler die App-Beendigung durchlässt

v0.9.2
14. May 2026
Windows Debian

Behoben

  • Serien-Suche liefert keine Ergebnisse: isOnline hatte Priorität über searchMode — der Server-Endpoint /tmdb/search unterstützt nur Filme. TV-Suche geht jetzt immer direkt gegen TMDb, unabhängig vom Online-Modus

v0.9.1
14. May 2026
Windows Debian

Behoben

  • Update-Download bleibt auf 0%: autoUpdater.quitAndInstall() wurde aufgerufen ohne dass downloadUpdate() vorher ausgeführt wurde (autoDownload = false). Neuer IPC-Handler update:download ruft checkForUpdates() + downloadUpdate() in Sequenz auf; installUpdate() startet jetzt den Download, und ein onReady-Listener löst danach automatisch quitAndInstall() aus

v0.9.0
14. May 2026
Windows Debian

Hinzugefügt

  • Serien-Import mit Staffelauswahl: TMDb-Suche unterstützt jetzt den Modus „Serie" (Toggle Film / Serie über der Suchleiste). Beim Importieren einer Serie lädt die App die verfügbaren Staffeln von TMDb und zeigt eine Auswahl-Checkbox-Liste im Import-Modal – Staffeln 0 (Specials) werden automatisch ausgeblendet. Mit „Alle / Keine" können alle Staffeln in einem Klick selektiert werden. Nach dem Bestätigen werden alle gewählten Staffeln inkl. ihrer Folgen (Nummer, Titel, Beschreibung) direkt in die lokale Datenbank geschrieben
  • Schauspieler im Bearbeitungsformular: Film-Bearbeiten-Ansicht zeigt jetzt eine Schauspieler-Sektion mit Avatar, Rollenname und Hauptrolle-Badge. Über „Hinzufügen" öffnet sich ein Modal mit zwei Modi:
    • Lokal: Debounced-Suche über alle bereits in der Datenbank vorhandenen Schauspieler
    • TMDb: Personensuche via /search/person mit Profilbild-Vorschau und automatischem Download beim Hinzufügen
    • Beide Modi erlauben die Angabe eines Rollennamen und des Hauptrolle-Flags vor dem Speichern
    • Schauspieler können per X-Button direkt aus dem Film entfernt werden

Geändert

  • useTmdbSearch.ts: searchMode-State ('movie' | 'tv'), normalisierter TV-Result-Shape, TV-Detail-Fetch mit /tv/{id}?append_to_response=credits,videos,content_ratings, Season/Episode-Import-Schleife in confirmImport()
  • TmdbImportModal.vue: neues Staffelauswahl-Panel (nur wenn collection_type === 'Serie'), selectedSeasons als v-model-Prop
  • TmdbSearchView.vue: Film/Serie Toggle-Buttons, Suchfeld-Placeholder passt sich dem Modus an

Neu: Backend-Funktionen (electron/handlers/actors.ts)

Funktion IPC-Kanal
searchActors(db, query) db:actors:search
unlinkActor(db, filmId, actorId) db:actors:unlink
  • upsertActor dedupliziert jetzt nach tmdb_id wenn keine remote_id vorhanden ist (verhindert Duplikate beim manuellen TMDb-Import)

v0.8.0
13. May 2026
Windows Debian

Hinzugefügt

  • Sortierung & erweiterte Filter: Filmübersicht sortierbar nach Titel, Jahr, Bewertung, Laufzeit oder Hinzufügedatum (auf- und absteigend). Genre-Chips filtern die Liste per AND-Verknüpfung
  • Virtuelles Scrolling: Filmgitter rendert nur sichtbare Zeilen via @tanstack/vue-virtual – performant auch bei 500+ Filmen im Speicher
  • Zufälliger Film (Random Picker): Würfel-Button öffnet Modal mit zufälligem Film aus der aktuellen Sammlung inkl. „Neu würfeln" und Direktlink zum Detail
  • Watchlist-Toggle: Auge-Icon auf jeder Filmkarte setzt is_watched um. Gesehene Filme erhalten ein grünes Badge
  • Bulk-Aktionen: Mehrfachauswahl-Modus mit Checkbox pro Karte. Floating BulkActionBar ermöglicht Sammel-Löschen und Tag-Vergabe für alle markierten Filme
  • Onboarding-Wizard: Dreistufiger Einrichtungsassistent (/onboarding) beim ersten Start ohne TMDb-Key und leerer Sammlung. Kann übersprungen werden und erscheint nicht erneut
  • Keyboard-Navigation: Globale Shortcuts – / fokussiert die Suche, Escape hebt den Fokus auf, r navigiert zur Filmübersicht. Automatisch deaktiviert wenn ein Eingabefeld fokussiert ist
  • CSV / Letterboxd-Import: Dateiauswahl in Einstellungen → Backup. Parst Letterboxd-CSV (Name, Year, Rating, Tags, Watched Date), konvertiert die 0.5–5-Sterne-Skala auf 1–10, überspringt Duplikate per Titel + Jahr
  • Auto-Updater: electron-updater ersetzt den bisherigen manuellen Download-Mechanismus. autoUpdater.checkForUpdates() / quitAndInstall() – CI publiziert mit --publish always
  • E2E-Tests (Playwright): playwright.config.ts + Shared App-Fixture + 4 Spec-Dateien (smoke, movies, random-picker, import)

Geändert

  • listMovies() akzeptiert nun sortBy, sortDir und genres[] als Parameter; SQL-Injection-Schutz via Allowlist
  • MovieCard.vue unterstützt bulkMode- und selected-Props; Hover-Overlay zeigt zusätzlichen Watched-Toggle-Button
  • movies-Store erweitert um sortBy, sortDir, selectedGenres, bulkMode, selectedIds sowie die Actions toggleMovieWatched, bulkDeleteSelected, bulkTagSelected, toggleSelect
  • electron/main.ts: Alter manueller Update-Download (~110 Zeilen) durch 10 Zeilen electron-updater-Wiring ersetzt
  • release.yml: Build-Jobs verwenden --publish always damit latest.yml in den GitHub-Release kommt
  • package.json: publish-Konfiguration für GitHub-Releases ergänzt, Version auf 0.8.0 gesetzt

Neu: Backend-Funktionen (electron/handlers/movies.ts)

Funktion IPC-Kanal
randomMovie(db, filters?) db:movies:random
toggleWatched(db, id) db:movies:toggle-watched
bulkDelete(db, ids[]) db:movies:bulk-delete
bulkUpdateTag(db, ids[], tag) db:movies:bulk-tag
importMovies(db, rows[]) db:movies:import

Tests

92 → 111 Unit Tests (+19). Abdeckung der neuen Backend-Funktionen: Sortierung, Genres-Filter, Random Picker, Toggle Watched, Bulk Delete/Tag, Import inkl. Duplikat- und Leer-Titel-Behandlung.


v0.7.1
10. May 2026
Windows Debian

Behoben

  • Icons nicht sichtbar: Bootstrap Icons wurden durch Tailwind 4's PostCSS-Pipeline falsch verarbeitet (Font-Pfade nicht aufgelöst). Import wurde nach main.ts verschoben, wo Vite die Assets korrekt verarbeitet

v0.7.0
10. May 2026
Windows Debian

Geändert

  • Major-Dependency-Upgrade: Komplettes Toolchain-Update auf aktuelle Major-Versionen
    • Tailwind CSS 3 → 4 (neue CSS-Import-Syntax, @theme-Block, @reference in Scoped-Styles)
    • Vite 5 → 7 (Vite 8 noch inkompatibel mit vite-plugin-electron)
    • TypeScript 5 → 6 (baseUrl entfernt, paths mit relativen Pfaden)
    • Vue Router 4 → 5
    • Pinia 2 → 3
    • Electron 41 → 42
    • @electron/rebuild 3 → 4
    • vitest 2 → 4, vue-tsc 2 → 3, @vitejs/plugin-vue 5 → 6

v0.6.6
10. May 2026
Windows Debian
v0.6.5
10. May 2026
Windows Debian

Geändert

  • TMDb-Import immer lokal: Filme werden beim Import über TMDb immer zuerst lokal in der Datenbank angelegt – auch im Online-Modus. Auf die Shelf gelangen sie erst beim nächsten Sync

v0.6.4
09. May 2026
Windows Debian

Hinzugefügt

  • „Hinzugefügt am" im Bearbeitungsformular: Das Hinzufügedatum kann jetzt direkt im Film-Formular eingesehen und geändert werden (beim Bearbeiten vorbelegt, beim Neuanlegen mit dem heutigen Datum)

v0.6.3
09. May 2026
Windows Debian

Behoben

  • Filme nach Vollsync doppelt/dreifach: Wenn ein Film vor dem Sync mehrfach lokal angelegt wurde (z. B. weil er in der Sammlung nicht sichtbar war), wurden beim Sync nur zwei der Duplikate zusammengeführt – die übrigen blieben erhalten. Jetzt werden beim Merge alle Duplikate mit gleicher TMDb-ID hart gelöscht
  • Cover nach Vollsync nicht sichtbar: movie-resource://-Pfade wurden in Schritt 1 von resolveMediaUrl fälschlicherweise mit der Shelf-URL zusammengesetzt – lokale Bilder wurden nie geladen

v0.6.2
09. May 2026
Windows Debian

Behoben

  • Bilder werden lokal gespeichert: Cover und Backdrop werden beim TMDb-Import einmalig heruntergeladen und lokal abgelegt (movie-resource://) – kein TMDb-Traffic mehr beim Öffnen der App
  • Sync speichert Bilder lokal: Beim Shelf-Sync werden Cover und Backdrop von der Shelf heruntergeladen; cover_path / backdrop_path werden anschließend auf den lokalen Pfad umgeschrieben – die App lädt Bilder danach nicht mehr vom Server

Hinzugefügt

  • Hinzufügedatum im Import-Modal: Das Datum kann vor dem Import angepasst werden (Standard: heute)

Behoben

  • Import-Modal leer bei Online-Modus: TMDb-Details (Genre, Regisseur, Laufzeit etc.) wurden im Online-Modus nicht geladen – der Detail-Fetch ist jetzt immer aktiv wenn ein TMDb-Key vorhanden ist
  • Nicht alle Filme im Vollbild sichtbar: Im Vollbild wurden zu viele Spalten angezeigt, sodass 30 Filme den Viewport füllten ohne Scroll auszulösen – Infinite Scroll lädt jetzt automatisch nach bis der Viewport gefüllt ist

v0.6.1
09. May 2026
Windows Debian
v0.6.0
09. May 2026
Windows Debian

Hinzugefügt

  • Bearbeiten vor Import: Beim Hinzufügen eines Films über die TMDb-Suche öffnet sich jetzt ein Modal mit allen vorausgefüllten Daten (Titel, Jahr, Typ, Genre, Regisseur, Laufzeit, Bewertung, FSK, Beschreibung, Trailer-URL, Format-Tag) – Änderungen können vor dem Speichern vorgenommen werden

Behoben

  • Film erscheint nicht in Sammlung: Nach dem Hinzufügen eines Films (manuell oder via TMDb) wurde der gespeicherte Listen-Cache nicht geleert – der neue Film war erst nach einem Neustart der App sichtbar
  • Bewertung mit drei Dezimalstellen: TMDb-Bewertungen (z. B. 7.456) werden jetzt auf eine Stelle gerundet angezeigt, sowohl in der Detailansicht als auch im Bearbeitungsformular

v0.5.0
04. May 2026
Windows Debian
v0.4.0
26. April 2026
Windows Debian

Hinzugefügt

  • Serien-Tab: Eigener Reiter „Serien" in der Sidebar filtert nach collection_type = Serie; Wechsel zwischen Filme und Serien stellt Scroll-Position und geladene Seiten wieder her
  • Staffeln & Folgen: Serien-Detailansicht zeigt Staffeln als ausklappbare Akkordeons mit Folgenliste (Nummer, Titel, Beschreibung); erste Staffel ist standardmäßig geöffnet
  • Backup-Funktion: Lokale Sammlung als .ms-Datei exportieren und wiederherstellen (Einstellungen → Backup); Format ist kompatibel mit dem SaaS-Backup

Behoben

  • Filmanzahl falsch: Boxset-Parents werden aus Liste und Zähler ausgeschlossen; Boxset-Children werden korrekt gezählt
  • Nur 30 Filme nach Tab-Wechsel: Beim Wechsel zwischen Filme/Serien werden alle zuvor geladenen Seiten wiederhergestellt statt neu von Seite 1 zu laden
  • Gelöschte Einträge im Sync: Beim vollständigen Sync werden Filme, die auf dem Shelf gelöscht wurden, jetzt lokal entfernt und korrekt im Ergebnis gezählt
  • Push 404 nach Löschung: Wenn der Shelf einen Film als gelöscht meldet, wird er lokal sofort hard-deleted und erscheint nicht mehr im Push-Queue; 404-Antworten beim Push von Löschungen werden als Erfolg gewertet
  • Staffeln nicht angezeigt: API-Response-Parsing korrigiert (data-Wrapper); Online-Fallback lädt Staffeln direkt von der API wenn lokal keine vorhanden sind und speichert sie für Offline-Nutzung

Sync-Verbesserungen

  • Delta-Sync zeigt gelöschte Einträge korrekt in der Vorschau an
  • Full-Sync erkennt lokale Filme ohne SaaS-Gegenstück und entfernt sie
  • Staffeln und Folgen werden beim Sync für Serien automatisch mitgeladen

v0.3.6
26. April 2026
Windows Debian

Neu feat: implement backup and restore functionality with UI integration

v0.3.5
25. April 2026
Windows Debian

Behoben

  • Windows: Update-Installation: Installer wird jetzt per spawn gestartet statt shell.openPath – der NSIS-Setup-Dialog erscheint zuverlässig
  • Update-URL leer: Fehlermeldung statt lautlosem Abbruch wenn keine Download-URL verfügbar
  • Release-Pipeline: SHA256-Hashes werden berechnet und mit dem Webhook übertragen; nur noch NSIS-Installer (kein Portable) wird gebaut und verlinkt

v0.3.4
25. April 2026
Windows Debian

Behoben

  • Filmanzahl Dashboard / Synchronisation: Beide Ansichten zählen jetzt identisch – Boxset-Children werden gezählt (sind Filme), Boxset-Parents nicht (sind nur Behälter)
  • Linux: Update-Installation: pkexec dpkg -i öffnet nativen GUI-Passwort-Dialog; Fallback auf xdg-open (GDebi), danach Anleitung-Dialog mit Terminal-Befehl
  • Linux: weißes Update-Fenster: Hauptfenster wird erst nach vollständigem Rendern angezeigt (ready-to-show)

v0.3.3a-linux
25. April 2026
Debian

Release v0.3.3a-linux

0.3.3
25. April 2026
Windows Debian

Changelog – MovieShelf Desktop

[0.3.3] – 2026-04-25

Behoben

  • Fenster verschieben: Hauptfenster lässt sich wieder per Titelleiste verschieben (Drag-Region war auf Windows/Linux nicht korrekt gesetzt)
  • Scroll-Position: Nach dem Bearbeiten eines Films kehrt die Filmliste zur vorherigen Scroll-Position zurück, statt nach oben zu springen
  • Boxsets in der Filmliste: Box-Set-Teile (Children) erscheinen nicht mehr separat in der Hauptliste; stattdessen zeigt das Box-Set-Parent ein „Box-Set"-Badge und die enthaltenen Filme werden in der Detailansicht unter „Enthaltene Filme" aufgelistet
  • Linux: weißes Login-Fenster: OAuth-Fenster blieb auf Linux weiß; wird jetzt erst nach vollständigem Rendern angezeigt (ready-to-show)
  • Linux: App-Icon fehlt nach Installation: Icon-Quelle auf icon.png (1024×1024) umgestellt; category: AudioVideo für korrekte Launcher-Integration ergänzt

Build

  • build-linux.sh erstellt jetzt ausschließlich das .deb-Paket
  • Icon-Konfiguration für alle Plattformen vereinheitlicht (icon.png)
0.3.2
21. April 2026
Windows AppImage Debian

Diverse Bugfixe

  • SyncView.vue — sendet in_collection: movie.in_collection ?? 1 beim TMDB-Import mit
v0.3.0
19. April 2026
Windows

Verbesserungen:

  • Local-first Architektur — Alle Ansichten (Filme, Schauspieler, Detail) lesen ausschließlich lokal; API-Calls nur noch beim Sync
  • BoxSets aus Stats ausgeschlossen — is_boxset wird vom Server synchronisiert, alle Zählungen schließen BoxSet-Eltern aus
  • "Gesehen" korrekt — Basiert jetzt auf is_watched aus der movie_user_watched-Pivot-Tabelle (user-spezifisch), nicht mehr auf rating IS NOT NULL
  • Dashboard: Ø Bewertung — Ersetzt den redundanten "Bewertungen"-Zähler durch den Durchschnittswert
  • "Zuletzt hinzugefügt" korrekt sortiert — created_at wird vom Server übernommen, Sortierung nach echtem Erstellungsdatum
  • Vollsync ignoriert Delta — "Vollständig synchronisieren" sendet keinen since-Parameter, holt immer alle Daten

Bugfixes

  • Film bearbeiten öffnete falschen Film — Detailansicht und Schauspieler-Ansicht lesen jetzt immer aus der lokalen SQLite, kein API-Call mehr mit vertauschter ID
  • "Object could not be cloned" beim Speichern — Vue Proxy-Objekt wird vor IPC-Übergabe zu Plain Object gespreaded
  • Sync zeigte immer dieselben Änderungen — Vorschau suchte per lokaler ID statt remote_id, dadurch wurde immer ein falscher Film verglichen
  • Delta-Sync erkannte Server-Änderungen nicht — ISO-Timestamp wurde von MySQL falsch verglichen, jetzt via Carbon::parse()->utc()
  • Bilder wurden bei jedem Sync neu heruntergeladen — media:exists-Check vor jedem Download
0.2.1
14. April 2026
Windows

Einstellungen: Neues zweigeteiltes Layout mit Kategorie-Navigation (Erscheinungsbild / Verbindung / TMDb / Updates / Entwickler) Titelleiste: Filmstreifen-Icon durch logo_small.png ersetzt TMDb-Suche: bereits importierte Filme werden nach jeder Suche direkt gegen die lokale DB geprüft und mit Haken markiert — kein Mehrfach-Import mehr möglich Sync: lokale TMDb-Importe werden beim Pull-Sync mit dem passenden Shelf-Eintrag zusammengeführt statt dupliziert Update-System: Download der neuen .exe direkt in der App mit Fortschrittsbalken, SHA256-Prüfung und automatischem Start des Installers Sidebar: grüner Pulse-Dot auf dem Einstellungen-Icon wenn ein Update verfügbar ist

0.2.0
14. April 2026
Windows

Security-Fixes — SQL Injection, XSS, Path Traversal, URL-Validierung, Settings-Allowlist Feature: TMDb Standalone-Modus — API Key in Einstellungen, Direktsuche + lokaler Import mit Trailer/Credits, Duplikat-Erkennung per DB-Abgleich, Merge beim Shelf-Sync Typdefinitionen — electron.d.ts komplett auf den aktuellen Stand gebracht

0.1.0
14. April 2026
Windows

MovieShelf Desktop – v0.1.0

Erstveröffentlichung · 13. April 2026

🎬 Kernfunktionen Vollständige Filmverwaltung mit Titel, Beschreibung, Genre, Erscheinungsjahr und Bewertung Lokale SQLite-Datenbank – deine Sammlung gehört dir, auch offline TMDb-Integration: Filme per Suche automatisch mit Metadaten, Cover und Backdrop befüllen Schauspieler-Verwaltung mit Detailansicht und Filmografieübersicht

🖥️ Benutzeroberfläche Cinematic Dark Theme mit dynamischen Hintergrundübergängen Light Mode Unterstützung mit system-synchronisierter Theme-Erkennung Responsives Layout mit animierter Sidebar-Navigation Sticky Titelleiste mit nativen Fenstersteuerungen (Min / Max / Close)

☁️ Cloud-Synchronisation Verbindung mit deiner persönlichen MovieShelf Cloud (movieshelf.info) Bidirektionale Synchronisation von Filmen, Covern und Metadaten Zentrales Login-System über die SaaS-Plattform

🔄 Auto-Update System Automatischer Versionscheck beim Start der Anwendung Benachrichtigung bei verfügbaren Updates direkt in der Einstellungsseite Manueller Update-Check jederzeit aufrufbar

🛠️ Technisches Gebaut mit Electron + Vue 3 + Vite Native Windows-Unterstützung (x64) als Installer (.exe) und portable Version Sicherer IPC-Bridge zwischen Electron-Main und Vue-Renderer

Zurück zur Startseite