# Changelog

## GO-UPPER-UI

## v0.18.0

_In Entwicklung. Änderungen nach v0.17.0 werden hier gesammelt._

- feature:
  - [x] neues aufklappbares Menue `Tools` mit `NFO Suche`; die Seite durchsucht SRRDB, PreDB und xREL parallel, zeigt Quelle, Section und Gruppe und bietet NFO-Ansicht im Layer sowie direkten Download
- improvement:
  - [x] die Lizenz-Kachel im Dashboard bietet einen kleinen externen Button zur Lizenzverlängerung
  - [x] die Uploads-Warteschlange zeigt pro Upload einen live aktualisierten Fortschrittsbalken in Prozent sowie den aktuellen Schritt und das aktive Publishing-Ziel
  - [x] laufende Publishing-Ziele verwenden einen persistenten `processing`-Status, werden atomar vom Worker übernommen und nach einem abgebrochenen UI-Prozess automatisch wieder freigegeben
  - [x] Uploads bietet `Veröffentlichen (alle mit Ziel)`, um alle datenbankweit im Status `Ziel gewählt` stehenden Uploads ohne vorherige Auswahl zur Publishing-Warteschlange hinzuzufügen
  - [x] `Veröffentlichen (alle mit Ziel)` ist als blauer Hauptbutton nur aktiv, wenn passende Uploads vorhanden sind
  - [x] ausgewählte und einzelne Uploads können über das Drei-Punkte-Menü inklusive ihrer Publishing-Ziele auf `Unveröffentlicht` zurückgesetzt werden
  - [x] die Uploads-Tabelle blendet bei tatsächlichem horizontalem Überlauf gestaffelt zuerst `Importiert`, dann `Crypter`, `Hoster` und zuletzt `Groesse` aus; die Optionsspalte bleibt rechts sichtbar
  - [x] Publish-Mappings werden als eingebettete UI-Standards mitgeliefert; die Mappings-Seite zeigt Standard/angepasst an, speichert lokale Overrides unter `config/mappings` und kann Anpassungen wieder auf den eingebetteten Standard zuruecksetzen
  - [x] Templates bietet `Text ersetzen (Replace)`, um finale Plain-Text-Ersetzungen nach dem Rendern global oder pro Instanz zu verwalten und in Vorschau sowie Publishing-Warteschlange anzuwenden
- bugfix:
  - [x] der manuelle Cover-Upload zu pixelfox.cc berücksichtigt die erlaubten Thumbnail-Formate des Kontos und funktioniert mit Free-Konten ohne WebP-/AVIF-Berechtigung
  - [x] automatische Publishing-Zielauswahl erkennt starke Music-Marker wie `FLAC`, `Soundtrack`, `Discography` und `Album` vor TV-/Video-Markern, damit Musik-Releases mit `Season` oder `WEB-FLAC` nicht falsch als Serie oder Film einsortiert werden
  - [x] browserbasierte XenForo-Ziele brechen nach fünf Minuten ab, damit ein hängender Login oder Seitenaufruf nicht die gesamte Publishing-Warteschlange blockiert
  - [x] `data-load.me`-Publishing lädt eine unbestätigte leere Suchantwort einmal neu und wiederholt die Themensuche, bevor der Lauf weiterhin konservativ mit Fehler abbricht
  - [x] `Veröffentlichen (alle mit Ziel)` ignoriert verwaiste Publishing-Ziele bereits gelöschter Upload-Datensätze
  - [x] Upload-Löschen entfernt den Upload, seine Publishing-Ziele und seine History jetzt dauerhaft und transaktional
  - [x] gespeicherte Publishing-Template-Auswahlen werden nach erneutem Import oder Ersetzen eines Templates anhand des Quellpfads auf die aktuelle Template-ID umgebunden und bleiben im Upload-Editor ausgewählt
  - [x] XenForo-Publishing in der UI-Warteschlange löst relative Mapping-Pfade anhand der jeweiligen Upper-Instanz auf, sodass UI und Upper-Instanzen in getrennten Ordnern liegen können

## v0.17.0

_Veröffentlicht am 7. Juni 2026._

- feature:
  - [x] Upload-Edit-Autocomplete unterstuetzt PreDB und speichert Release-, Section-, Group-, Status- und NFO-Metadaten im Upload-JSON
- improvement:
  - [x] Einstellungen enthaelt jetzt eine System-Seite mit lokaler SQLite-DB-Info, Pfad, Download und VACUUM-Aktion
  - [x] System-Seite kann einzelne UI-Datenbanktabellen per Truncate-Aktion komplett leeren
  - [x] `Offene Uploads` bietet ueber den Scan-Kandidaten einen Terminal-Button, der alle bereiten hinterlegten Go-Upper-Instanzen wie im Dashboard startet
  - [x] uploads page moves the bulk "Aus Warteschlange entfernen" action into the three-dot menu and adds "Alles als erledigt markieren" next to Import to mark unfinished uploads green
  - [x] upload edit Publishing tab adds "Alle Aktive wählen + Speichern" to enable every selectable publishing page, save the selection, and return to uploads
  - [x] imported templates now show a Sync action that reloads the source file and overwrites the stored UI database copy
  - [x] uploads now use server-side 50-row pagination, pending caps initial table rendering, heavy auto-refreshes are avoided, and imported upload rows skip unnecessary JSON parsing so large databases stay responsive
  - [x] uploads page removes the redundant four metric cards above the table to keep the workspace tighter
  - [x] `Offene Uploads` keeps its initial scan and adds an animated manual Scan button in the page header for explicit rescans
  - [x] uploads filters now have a Clear button and persist search/filter selections in browser storage across Upload edit navigation and browser sessions
  - [x] byte.to default publishing line shows a bold `IMDb:` label followed by the rating with `/10` suffix (linked to the IMDB title) instead of the previous `IMDB-Score:` label
- bugfix:
  - [x] automatische Forum-Zielauswahl behandelt fehlende oder als `-` importierte Inhaltstypen korrekt, erkennt typische Film-/Serien-Releases aus dem Titel und verwendet bei unbekanntem Typ ein Mapping-Fallback statt der ersten Doku-/3D-Kategorie
  - [x] template import skips the Global UI source when a registered Upper instance uses the same `upper.config.yml`, avoiding duplicate Global/instance template rows
  - [x] templates delete now removes the stored UI database row permanently, so a later config import can import the same source file again
  - [x] uploads publishing queue skips already published targets when a mixed-status upload is queued again, so only failed or open targets are retried
  - [x] byte.to publishing makes the upload template optional in the Upper UI, uses the upload description plus a linked IMDB score when no template is selected, and formats the visible title without release dots
  - [x] byte.to publishing uses the release title instead of the metadata title for the visible upload title and applies the same dot-removal formatting as boersecx
  - [x] byte.to publishing sends audio languages in byte.to-compatible values such as `GER`, `ENG`, `GER;ENG`, and common multi-language combinations
  - [x] XenForo queue publishing submits topic searches through the search field's form instead of relying on Enter, so darklight.to no-result pages are detected correctly

## v0.8.0

- feature:
  - [x] new standalone `upper-ui` web app for managing go-upper instances
  - [x] upper-ui self update downloads the latest release zip, installs it through a helper process, and restarts the UI
  - [x] modern Bootstrap/Lucide dashboard without frontend build step
  - [x] instance manager with start, stop, delete, optional debug start, and in-browser terminal
  - [x] config overview for paths, active hosters, linkcrypter, modules, and important switches
  - [x] YAML config editor with syntax highlighting and save validation
  - [x] per-instance config pages at `/instance/{id}/config`
  - [x] upload import page with DB status, manual import, publishing status filter, multi-select queue/unqueue actions, and complete raw JSON storage
  - [x] upload edit page for imported result JSONs with size, editable mirror/crypter links, movie/game metadata fields, cover preview, Contentgrabber autocomplete including NFO/SRRDB, conflict review, and persisted Publishing site/target/template selections
  - [x] upload edit page has a `History Log` tab that records import time, field edits, direct JSON edits, Publishing target changes, queue actions, successful Publishing runs, manual published marks, and Publishing errors
  - [x] upload edit cover panel can upload the entered cover URL to the configured Imagehoster and persist the hosted URL
  - [x] endpoint-based Publishing targets like `warezddl` can be selected without requiring a template
  - [x] `publish.publishUi` can keep the upper-ui queue active while `publish.publishCli` disables automatic CLI publishing
  - [x] publishing queue worker processes queued Upload targets automatically after a 30-second safety delay and writes published/failed state back to the UI database
  - [x] publishing queue supports the `darklight.to` XenForo service, including mapping-driven mandatory thread prefixes
  - [x] publishing queue supports the `data-load.me` XenForo service and its writable leaf-forum mapping
  - [x] new `Offene Uploads` page for not-yet-uploaded folders from all configured scan paths
  - [x] new `Templates` page imports configured template files into SQLite, supports create/edit, type and format metadata, syntax-highlighted editing, previews, and export downloads
  - [x] new `Mappings` page lists configured and available Publish mappings, deduplicates shared files across instances, supports YAML editing, and tests title-to-category matches with the standard resolver
  - [x] new `Integrationen` page for Contentgrabber, Imagehoster, and Publishing service status across all discovered Upper configs
  - [x] XenForo queue publishing runs headless by default and supports visible diagnostic runs with `publish.services[].headless: false`
  - [x] upload metadata and Template management now include `ebook` and `software` content types
- improvement:
  - [x] update dialog reads `latest.json` and shows target version plus release text before installation
  - [x] header now shows separate Go-Upper and Upper-UI versions; update dialog uses the Upper-UI version as installed version
  - [x] update zip checksum is verified when `sha256` is present in the manifest
  - [x] `make release-upper-ui` now creates update manifests and uploads the release ZIP plus `latest.zip` via FTP
  - [x] update manifests now point to the versioned release ZIP to avoid stale `latest.zip` cache mismatches
  - [x] update dialog disables installation when installed and live Upper-UI versions are equal
  - [x] update dialog has a Force checkbox to reinstall the live release even when versions are equal
  - [x] topbar groups UI version/update before Go-Upper version/download/changelog/docs/login actions
  - [x] topbar has a red shutdown button to stop the detached upper-ui process after confirmation
  - [x] templates are now available from the normal sidebar and are imported idempotently from the active Upper config on UI startup
  - [x] templates can be removed from the Templates UI without removing the original import files
  - [x] left sidebar now groups `Templates`, `Integrationen`, and `Remote Sources` under an expandable `Einstellungen` menu
  - [x] dashboard replaces the low-value link count metric with open import and missing-file status
  - [x] dashboard, uploads, config, and logs are now separate routes
  - [x] internal page navigation keeps browser terminals and websocket sessions alive while changing pages
  - [x] active pages auto-refresh without reloading the whole browser window
  - [x] uploads auto-import scans the result folder every 10 seconds and imports only missing JSON files
  - [x] uploads table now stores compact crypter metadata in SQLite and shows grouped, numbered crypter links instead of result-changed and link-count columns
  - [x] uploads table now shows a `Veröffentlicht` status column derived from saved per-target Publishing selections and can filter queued uploads
  - [x] publishing errors are now shown as a dedicated failed status with visible error text on upload list and edit pages
  - [x] Publishing integrations now show configured type and endpoint URL in addition to mapping and credentials status
  - [x] new forum publishing selections use the mapping fallback target before special-case targets of the same content type
  - [x] imported upload names now link to the metadata edit page
  - [x] upload editing keeps long release titles on one compact line and separates metadata from Publishing in `Item` and `Publishing` tabs
  - [x] uploads row menu can view or download the stored original JSON
  - [x] imported upload rows can be deleted from the UI database through the uploads row options menu
  - [x] uploads page now keeps search, filters, sort order, and pagination when switching away and returning during the same browser session
  - [x] `Offene Uploads` has search, status/instance filters, sortable columns, and 50-item pagination
  - [x] `Offene Uploads` can reset interrupted `in Arbeit` items by deleting their progress marker and matching copied work folders after the Upper instance has stopped
- bugfix:
  - [x] Remote Sources liest und schreibt Remote-Konfigurationen jetzt fuer die ausgewaehlte Go-Upper-Instanz statt implizit fuer die erste gefundene Config
  - [x] boersecx queue publishing now respects the service-level `enabled: false` flag
  - [x] saved boersecx publishing destinations remain selected by forum URL and content type after mapping categories are reordered
  - [x] XenForo queue publishing posts into exact-title existing threads even when the selected target forum differs from the thread's current forum
  - [x] XenForo queue publishing renders the template content selected in the UI database, including edited imported and newly created templates
  - [x] XenForo queue publishing submits BBCode directly for `boersecx`, `darklight.to`, and `data-load.me` instead of typing into the rich-text editor, avoiding extra rendered blank lines
  - [x] UI publishing falls back to a matching stored template when the mapping template path is absent or unreadable, so UI-only setups are not blocked by mapping template files
  - [x] bundled forum/uCMS mapping presets use portable bundled-template paths instead of a developer workstation path
  - [x] upper-ui updater waits until the old UI process has exited before starting the new one, avoiding restart failures from an occupied listen port
  - [x] templates page is no longer auto-refreshed every 15 seconds, so preview selections are not reset
  - [x] uploads row option menus are positioned outside the responsive table scroll clipping area, so every action remains visible
