# Release & Update Guide Diese Anleitung beschreibt die Schritte, die notwendig sind, um eine neue Version des **Seasonals** Plugins zu veröffentlichen. ## 1. Version erhöhen Bevor du baust, musst du die Versionsnummer in den folgenden Dateien aktualisieren (z.B. von `1.0.0.0` auf `1.0.1.0`): 1. **`Jellyfin.Plugin.Seasonals/Jellyfin.Plugin.Seasonals.csproj`** Suche nach `...` und ändere die Nummer. 2. **`build.yaml`** Ändere den Wert bei `version: "..."`. 3. **`manifest.json`** Füge einen neuen Eintrag oben in die `versions`-Liste ein (oder bearbeite den vorhandenen, wenn es noch kein Release gab). * `version`: Deine neue Nummer. * `changelog`: Was hat sich geändert? * `timestamp`: Das aktuelle Datum (wird später aktualisiert). * `checksum`: (wird nach dem Build aktualisiert). ### Versionierungsschema: Major.Minor.Build.Revision (Beispiel: 1.0.0.0) 1. **Major** (1.x.x.x) * **Bedeutung:** Hauptversion. * **Erhöhen bei:** Inkompatiblen Änderungen (Breaking Changes) oder komplettem Rewrite. * **Folge:** Setzt alle nachfolgenden Zahlen auf 0. 2. **Minor** (x.1.x.x) * **Bedeutung:** Nebenversion. * **Erhöhen bei:** Neuen Features / Funktionen, die abwärtskompatibel sind. * **Folge:** Setzt Build und Revision auf 0. 3. **Build** (x.x.1.x) * **Bedeutung:** Patch / Fehlerbehebung. * **Erhöhen bei:** Bugfixes, Sicherheitsupdates (keine neuen Features). * **Folge:** Setzt Revision auf 0. 4. **Revision** (x.x.x.1) * **Bedeutung:** Feingranularer Zähler. * **Erhöhen bei:** Notfall-Fixes (Hotfixes), automatisierter Erstellung (CI/CD) oder internen Anpassungen. ## 2. Plugin bauen und packen Führe den folgenden Befehl im Terminal (PowerShell) im Hauptverzeichnis aus. Wir nutzen hier `dotnet build` statt `publish`, um unnötige Dateien zu vermeiden. ```powershell dotnet build Jellyfin.Plugin.Seasonals/Jellyfin.Plugin.Seasonals.csproj --configuration Release --output bin/Publish; Compress-Archive -Path bin/Publish/* -DestinationPath bin/Publish/Jellyfin.Plugin.Seasonals.zip -Force; $hash = (Get-FileHash -Algorithm MD5 bin/Publish/Jellyfin.Plugin.Seasonals.zip).Hash.ToLower(); $time = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ"); Write-Output "`n----------------------------------------"; Write-Output "NEUE CHECKSUMME (MD5): $hash"; Write-Output "ZEITSTEMPEL: $time"; Write-Output "----------------------------------------`n" ``` ## 3. Manifest aktualisieren Nachdem der Befehl durchgelaufen ist, siehst du am Ende eine Ausgabe wie: ```text ---------------------------------------- NEUE CHECKSUMME (MD5): ef8654666ffeae9695e660944f644ad3 ZEITSTEMPEL: 2025-12-15T12:34:56Z ---------------------------------------- ``` 1. Kopiere die **Checksumme**. 2. Öffne `manifest.json`. 3. Füge die Checksumme bei deinem Versionseintrag unter `"checksum"` ein. 4. Kopiere den **Zeitstempel** und füge ihn unter `"timestamp"` ein. 5. Stelle sicher, dass die `sourceUrl` korrekt auf dein Repository zeigt. ## 4. Veröffentlichen 1. Lade die Datei `bin/Publish/Jellyfin.Plugin.Seasonals.zip` irgendwo hoch (z.B. GitHub Releases). 2. Stelle sicher, dass die `sourceUrl` im `manifest.json` auf diesen Download zeigt (oder auf das Repo, je nachdem wie Jellyfin das handhabt - meistens ist `sourceUrl` der Link zum ZIP). * *Hinweis:* Wenn du das Plugin über ein Repo hostest, muss die URL im Manifest direkt auf die ZIP-Datei zeigen. ## Zusammenfassung der Dateien | Datei | Zweck | Änderung nötig? | | :--- | :--- | :--- | | `Jellyfin.Plugin.Seasonals.csproj` | Definiert die DLL-Version | **Ja** | | `build.yaml` | Build-Konfiguration | **Ja** | | `manifest.json` | Plugin-Liste für Jellyfin | **Ja** (Version, Hash, Zeit) |