Changelog UI (go-reupper)

Dieser Verlauf dokumentiert ausschließlich die eigenständige Go-Reupper UI. Änderungen am Reupper-Worker stehen im separaten Go-Reupper-Changelog.

v0.21.0

Live seit 11. August 2026.

  • feature:
    • Dashboard-KPIs: Reuploads heute, Erfolgsquote (7 Tage), Warteschlange (pending/in Arbeit), Traffic heute, Priority Queue (offen/geclaimed) und Linkcrypter-Snapshot (Offline/Partial/Online)
    • Chart „Reuploads letzte N Tage“ als gestapeltes Success/Failed-Diagramm; neues Traffic-Chart (Download/Upload in GiB); Zeitraum-Dropdown steuert beide Charts
    • GET /api/stats/days liefert zusätzlich success, failed, download, upload und füllt fehlende Tage im Fenster mit 0 (Response bleibt rückwärtskompatibel via data)
    • Favicon im Browser-Tab: 64×64 PNG aus dem Header-Logo (logo.webp), eingebunden im Layout unter /reupper-ui/ui/public/img/favicon.png
    • Dashboard: gelbes Config-Icon pro Instanz öffnet direkt den YAML-Editor-Layer für reupper.config.yml (CodeMirror, analog zur Upper UI)
    • GET/PUT /api/instance/:id/config liest und speichert die Instanz-Config (YAML-Validierung, atomares Schreiben)

v0.20.1

  • bugfix:
    • History-Tabelle: Die sticky Spalte Aktionen hat Reuploads und Status überdeckt (Header wirkte wie REUPI, Werte unsichtbar). Tabellen-min-width auf 1480px erhöht, Name-Spalte begrenzt, feste Mindestbreiten für Link/Reuploads/Status.

v0.20.0

  • feature:
    • Smart-Jobs in Queue und History: Badge smart, stabile Job-ID, Hoster-Badges, Target-Fortschritt und aufklappbare Targetliste.
    • Neue Felder workmode, hosters, targets (JSON, rückwärtskompatibel).
    • Suche findet Smart-Jobs über Job-ID, Titel, Target-FolderID und Crypter-Link.
    • Stats zählen Target-Erfolge und -Fehler count-fähig.

v0.19.0

  • feature:
    • Reupper-Instanzen lassen sich im Dashboard aktualisieren: die Spalte Version zeigt die aus der Binary gelesene Version; daneben prüft die UI automatisch auf eine neuere Release. Ein Update-Button öffnet den Dialog (installierte/neue Version, Release-Text, Force). Download von latest.zip/latest.json aus https://go-toolz.com/dl/reupper/, Entpacken, Binaries/Tools und *.dist.yml überschreiben; Nutzer-Configs (reupper.config.yml, remote.sources.yml), files/, log/ und reupper-ui/ bleiben unangetastet. Nur bei gestoppter Instanz.
    • Die Binary-Spalte ist wie in der Upper UI schmaler.

v0.18.0

  • feature:
    • Die History-Tabelle unter /reupper/history hat jetzt sortierbare Spalten. Klick auf den Spaltenkopf wechselt zwischen auf- und absteigend; die Sortierung läuft serverseitig über die gesamte Historie (nicht nur die aktuelle Seite) und bleibt über Pagination und URL (?sort= / ?order=) erhalten. Sortierbar sind Name, Size, Hoster, Crypter erstellt/bearbeitet, Zuletzt abgeschlossen, Reuploads und Status. Link und Aktionen bleiben unsortierbar. Der erste Klick auf Reuploads (und andere numerische/Zeit-Spalten) startet absteigend.

v0.17.1

Live seit 3. August 2026 zusammen mit Go-Reupper v2026.11.1.

  • refactor:
    • Das bisherige, mehr als 2.000 Zeilen große app.js ist jetzt in native ES-Module für Navigation, UI-Helfer und die einzelnen Funktionsbereiche aufgeteilt. Fachlicher Zustand und Event-Bindings bleiben dadurch lokal; ein Embed-Test prüft alle relativen Modulimporte.
  • bugfix:
    • Die eingebetteten HTTP-, Hoster-, Crypter-, Content-, Download- und Zoom-Clients verwenden jetzt req v3.60.0 direkt; das interne reqcompat-Paket wurde vollständig entfernt und Multipart-Dateien werden beim Upload gestreamt statt vollständig gepuffert.

v0.17.0

Live seit 24. Juli 2026.

  • feature:
    • Das Dashboard bietet jetzt pro Instanz eine Debug-Checkbox vor Prio only. Sie wird bei Web-, CMD- und Background-Starts als --debug=true an den Reupper-Prozess weitergereicht und kann mit Prio only kombiniert werden.
    • Unter Einstellungen > Remote Sources steht jetzt derselbe FTP/FTPS/SFTP-Manager wie in der Upper UI bereit: Reupper-Instanzauswahl, Status und Release-Zähler, Verbindungsdialog mit sicherem Secret-Handling, Verbindungstest, Remote-Browser sowie Section-Aktivierung und -Speicherung.
    • Die neuen Reupper-Endpunkte unter /api/reupper/remote/* lesen und schreiben ausschließlich die ausgewählte go-reupper-Instanz. Eine gesetzte externe remoteConfig wird genauso wie in Upper aufgelöst und aktualisiert.
    • Neuer Menüpunkt Priority Queue: Reuploads lassen sich per vollständigem Titel oder exakter Ordner-ID vormerken, bearbeiten und löschen. Ein Titel priorisiert alle aktuell offline gefundenen Ordner mit diesem Titel. Die Einträge werden persistent in reupper-ui.db gespeichert und dem aus der UI gestarteten Reupper über /api/priority-queue bereitgestellt.
    • Das Dashboard bietet pro Instanz die Checkbox Prio only. Ist sie aktiviert, starten Web, CMD und Background ausschließlich einen einmaligen Lauf für die aktuell passenden Einträge der Priority Queue.
    • Die Reupper UI kann mit REUPPER_UI_ADDR auf eine alternative Listen-Adresse gelegt werden; der gestartete Worker verwendet automatisch dieselbe Adresse für seine UI-API-Aufrufe. Ohne Variable bleibt der bisherige Standard :3000 bestehen.
  • bugfix:
    • Die Instanzen-Tabelle nutzt jetzt wie die Upper UI eine automatische Spaltenbreite. Dadurch kann die Binary-Spalte schrumpfen und die Debug-/Priority- sowie Start-Aktionen bleiben vollständig sichtbar.
    • Die Remote-Sources-Seite übernimmt jetzt auch die fehlenden Upper-Basisstyles für Statusraster, Instanz-Auswahl, Status-Kacheln und Modaltexte. Damit entspricht die Anordnung im Reupper wieder der Upper-Ansicht und bricht auf kleinen Displays kontrolliert auf eine Spalte um.
    • Priority-Einträge werden vor der Verarbeitung atomar mit einer Lease geclaimt, damit parallele UI-Worker denselben priorisierten Container nicht doppelt starten. Überlappende Titel-/Ordner-ID-Einträge werden gemeinsam abgeschlossen, HTTP-Fehler bleiben sichtbar, und PATCH-Fehler erscheinen direkt im Bearbeiten-Modal.

v0.16.0

Live seit 13. Juli 2026.

  • feature:

    • Die Queue-Seite bietet jetzt den Button Aufräumen. Er verschiebt alle Einträge mit Status done oder error transaktional in die containerbasierte History; pending und progress sowie die zugehörigen Workdirs bleiben unberührt.
    • Neben Starten (Web) steht jetzt der kontrastreichere Button Starten (CMD) zur Verfügung. Der Endpoint GET /api/instance/:id/start-legacy verwendet unter Windows wieder den früheren Start über cmd /k start /wait cmd.exe /k .... Starten (Background) nutzt weiterhin GET /api/instance/:id/start und befindet sich im Drei-Punkte-Menü.
    • Neue System-Seite unter Einstellungen > System (Sidebar, klappbar wie in der Upper UI): zeigt Größe/Freelist/Tabellen/Zeilen der lokalen reupper-ui.db, dazu VACUUM, DB-Download (GET /api/reupper/system/database/download) und per-Tabelle Truncate (POST /api/reupper/system/database/tables/:table/truncate) sowie Datei-/SQLite-/Schema-Details. Route GET /reupper/system, API unter /api/reupper/system/database/*. Seite läuft komplett über die SPA-Nav (kein Reload) und wird nicht vom 30s-Auto-Refresh getriggert.
    • Datenbank-Sektion (Reset/Vacuum) vom Dashboard entfernt — die Wartung lebt jetzt gebündelt auf der System-Seite. Die alten /reupper/db/reset- und /reupper/db/vacuum-Routen bleiben als Redirect-Compat erhalten, der confirmDBReset/Reset-Button-JS ist ersatzlos gestrichen.
  • refactor:

    • upper_system.go: SQLite-Pfad-Auflösung in generischen Helper resolveSQLiteDatabasePath(db, fallbackFile) extrahiert; BuildUpperDatabaseInfo delegiert an buildDatabaseInfo. Neues reupper_system.go nutzt dieselben generischen SQLite-Diagnostik-Helfer mit database/reupper-ui.db als Fallback.
    • Vier neue Tests für BuildReupperDatabaseInfo, VacuumReupperDatabase und TruncateReupperDatabaseTable (happy path + unknown/internal-table-Guards), analog zu den Upper-Tests. Bestehende Upper-Tests bleiben unangetastet grün.
  • bugfix:

    • Die breite History-Tabelle bleibt jetzt innerhalb des Panels horizontal scrollbar; die Aktionen-Spalte ist rechts fixiert, sodass der Lösch-Button auch auf kleineren Monitoren vollständig sichtbar und erreichbar bleibt.
    • Die History wird jetzt über container_id zusammengeführt: Jeder Container erscheint nur einmal, weitere erfolgreiche Reuploads aktualisieren die Metadaten und erhöhen den bestehenden reuploads-Zähler. Beim Start werden vorhandene Dubletten konsolidiert und ein partieller Unique-Index verhindert neue aktive Dubletten; Einträge ohne Container-ID bleiben aus Sicherheitsgründen getrennt.
    • Verwaiste Queue-Einträge mit status=progress können jetzt gelöscht werden, sobald keine Reupper-Instanz mehr aktiv ist. Solange eine Instanz läuft, bleibt der Schutz vor dem Löschen eines gerade bearbeiteten Workdirs bestehen.
    • Das Web-Terminal startet mit einer sicheren PTY-Größe von 80x24 und passt Zeilen sowie Spalten danach dynamisch an das skalierbare Browserfenster an. Linux-PTY und Windows-ConPTY erhalten jede Größenänderung, sodass Terminal-Anwendungen wie Curl-Upload-Fortschrittsbalken sichtbar bleiben und die verfügbare Fläche vollständig nutzen.
    • Automatisch abgeschlossene Reuploads werden über POST /api/queue/:id/complete ohne Dateisystem-Cleanup archiviert. Workdir-Cleanup bleibt dem Worker beziehungsweise ausdrücklichen manuellen Queue-Löschungen vorbehalten; bei einem DB-Fehler wird vor dem manuellen Cleanup abgebrochen.
    • Erfolgreiche Reuploads werden beim Abschluss automatisch und transaktional von der Queue in die History verschoben. Die History zeigt Crypter-Zeitpunkte formatiert und zusätzlich den tatsächlichen Abschluss-/Archivierungszeitpunkt an.
    • Die History-Seite zeigt jetzt alle in der History-Tabelle gespeicherten Einträge an. Der bisherige Statusfilter blendete insbesondere archivierte Einträge mit pending, progress oder fehlendem Status aus; Zähler, Suche und Pagination verwenden nun konsistent den vollständigen History-Bestand.
    • “Starten (mit Terminal)” startete unter Windows nichts: der WS-Handler nutzte creack/pty’s pty.Start, das auf Windows ErrUnsupported liefert. Neues Package internal/pkg/termproc kapselt den Prozessstart plattformübergreifend — Unix bleibt bei creack/pty, Windows verwendet die native ConPTY-API (CreatePseudoConsole + CreateProcess mit PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE). Beide UIs (reupper-ui + upper-ui) nutzen jetzt termproc.Start statt pty.Start.
    • Windows-ConPTY-Start nachgeschaerft: EXTENDED_STARTUPINFO_PRESENT wird jetzt korrekt als CreateProcess-Flag gesetzt, und termproc.Wait() meldet non-zero Exit-Codes auch unter Windows als Fehler.
    • Reupper-UI startet Windows-Instanzen beim Web-Terminal-Start jetzt mit einem sichtbaren Windows-Konsolenfenster als Fallback, falls ConPTY/Web-Terminal nicht initialisiert werden kann. Der Fallback setzt active/pid weiter in der UI und überwacht den Prozess wie der normale Start. Terminal-Fehler bleiben im Browserfenster sichtbar, statt das Fenster direkt zu minimieren.
    • Queue-/History-Add-Endpoints (POST /api/queue, POST /api/history) konnten den UI-Server crashen: bei fehlgeschlagenem DB-Create wurde err.Error() auf nil aufgerufen (nil-pointer-Panic), und da kein Recover-Middleware registriert war, riss das den ganzen reupper-ui-Prozess mit sich — danach schlug jeder PostQueue des Workers mit “connection refused” fehl und die Queue wurde nicht mehr befüllt. Fix: saubere Fehlerbehandlung ohne nil-Deref, Create(&queue) auf Create(queue) (kein ** mehr), plus recover.New()-Middleware als erste Schicht in reupper-ui und upper-ui, sodass Panics künftig als 500 antworten statt den Server zu beenden.
    • Der Reupper-Worker hat sämtliche UI-API-Fehler (PostQueue, PatchQueue, Stats) mit _ = still ignoriert — bei einem UI-Ausfall oder DB-Fehler blieb die Queue einfach leer, ohne dass eine Zeile geloggt wurde. Alle APIService-Aufrufe in reupper_handler.go loggen Fehler jetzt über den Logger, sodass “Queue wird nicht befüllt” diagnostizierbar wird.
    • Queue- und History-Seite verwenden für Count, Revision-Header und Tabellenzeilen jetzt getrennte GORM-Query-Ketten. Dadurch kann der Revision-Scan (MAX(updated_at)) die anschließende Page-Abfrage nicht mehr verunreinigen; der Eintragszähler kann nicht mehr hochzählen, während die Tabelle leer bleibt.
  • feature:

    • Reupper-Instanzen können jetzt nachträglich bearbeitet werden: neuer Menüpunkt “Bearbeiten” im Dropdown der Instanz-Tabelle (zwischen “Starten/Stoppen” und “Löschen”) öffnet ein Modal mit name + path, der via PATCH /api/instance/:id persistiert wird
    • InstanceUpdateAPIHandler validiert Pfad-Existenz und verweigert Updates an laufenden Instanzen (active=true) mit HTTP 400, damit der Worker nicht auf einen weggeänderten Binary-Pfad läuft; Pfad-Duplikate mit anderen Instanzen liefern HTTP 409
    • Lizenz-Check im Dashboard läuft jetzt asynchron über LicenseCache (in internal/app/handler/license_cache.go): der erste Request nach Start blockiert maximal LicenseFirstTimeout (10 s) via DoFastRequestToEliteLicenserLiteLicense; danach wird der Snapshot 6 h aus dem Cache geliefert und ein Background-Refresh aktualisiert das Ergebnis singleflight-geschützt. Bei Fehlern im Background-Refresh bleibt der zuletzt bekannte Expire-Wert erhalten, sodass das Dashboard selbst bei längerer Lizenzserver-Pause responsive bleibt
    • Bugfix: GET /api/stats/days hat den days-Parameter über c.Params("days", "7") gelesen — die Route hat aber keinen :days-Pfad-Slot, der Aufruf fiel also immer auf den Default 7 zurück. Jetzt c.Query("days", "7"); zusätzlich Validierung (1-365, sonst HTTP 400) und Echo des effektiven days-Werts in der Response
    • Dashboard-Chart “Reuploads letzte N Tage” hat jetzt ein Dropdown (7/30/90 Tage) im Panel-Header; die Auswahl triggert GET /api/stats/days?days=N, baut die Chart neu auf und aktualisiert den Panel-Titel automatisch aus dem days-Feld der Response
    • Queue und History haben jetzt Bulk-Löschen: Checkbox-Spalte links, “Select all” im Header, eine sticky Bulk-Bar mit Counter, “Auswahl aufheben” und “Auswahl löschen”-Button über der Tabelle. Bestätigung kommt aus einem dedizierten Modal, nicht aus window.confirm. Queue-Items mit status=progress werden im Bulk-Request übersprungen und separat gezählt
    • History hat jetzt einen eigenen Lösch-Button pro Zeile (DELETE /api/history/:id); vorher gab es in der History-Tabelle gar keine Aktionen
  • fix(build):

    • _publish-reupper-ui-update hat die Update-Artefakte als reupper-ui-latest.json / reupper-ui-manifest.json gepublished; der Updater fragt aber https://go-toolz.com/dl/reupper-ui/latest.json ab (DefaultReupperUIUpdateManifestURL), wodurch jeder Klick auf “Update” mit manifest download failed: HTTP 404 fehlschlug. Target angeglichen an release-upper-ui: erzeugt und lädt jetzt latest.json, manifest.json und zusätzlich latest.zip (neben der versionierten $(name).zip) hoch; SHA256 wird auf latest.zip gebildet
  • internal:

    • Sechs neue HTTP-Tests für InstanceUpdateAPIHandler (unknown, active, path-missing, duplicate, same-path no-op, happy path)
    • Sieben neue Tests für LicenseCache inkl. -race (first call synchron, kein Refresh innerhalb TTL, async Refresh nach TTL, Singleflight, Error-Pfad mit Expire-Preservation, inaktive Lizenz, Error ohne Fallback)
    • Sechs neue Tests für StatsDaysAPIHandler (default 7, custom param, non-integer, out-of-range, window-clip, category-filter)
    • Zwoelf neue Tests für Bulk-Löschen: Queue all-pending, skip-progress, empty, oversized, dedup, not-found, invalid-JSON; History single happy + not-found; History bulk happy + empty + missing
    • QueueDeleteAPIHandler und QueueBulkDeleteAPIHandler teilen sich die Kern-Logik (Progress-Guard, Workdir-Cleanup, History-Promotion) über deleteOneQueueItem; Cap bulkDeleteMaxItems = 500
    • ReupperUIVersion ist im Quellcode und in den Live-Binaries auf 0.16.0 gesetzt; Release-Builds können den Wert weiterhin per ldflags überschreiben

v0.5.0

  • fix(build):
    • make release-reupper-ui patcht jetzt die Quell-ReupperUIVersion über -ldflags "-X ...=$$VERSION" während build-reupper-ui, sodass der ausgelieferte Binary konsistent zur übergebenen VERSION ist (vorher nur die Built-Binaries; der Source-Wert blieb auf 0.4.1-BETA hängen)
  • chore:
    • Accidental stub cmd/reupper-ui/ui/views/reupper/queue2.html entfernt (nicht referenziert)
  • feature:
    • Reupper UI hat jetzt einen Update-Button in der Topbar, der die aktuelle Release-Information aus latest.json lädt, Zielversion + Release-Text anzeigt und auf Bestätigung das Update herunterlädt, über einen detached Helper-Prozess installiert und die UI neu startet (analog Go-Upper UI Mechanik)
    • Update-Manifest holt standardmäßig https://go-toolz.com/dl/reupper-ui/latest.json/latest.zip (per REUPPER_UI_UPDATE_MANIFEST_URL / REUPPER_UI_UPDATE_URL überschreibbar); SHA256-Prüfsumme wird verifiziert, wenn im Manifest hinterlegt
    • Update-Dialog bietet eine Force-Checkbox, um dieselbe Live-Version bewusst erneut zu installieren (Reparatur einer kaputten Installation)
    • Der self-update überführt das database/, config/, files/, log/ und versions/-Verzeichnis unverändert und startet den frischen UI-Prozess aus dem selben Install-Pfad
    • make release-reupper-ui VERSION=0.5.0 CHANGES="..." FTP_HOST=... FTP_USER=... FTP_PASS=... baut die Plattform-Binaries mit gepatchter ReupperUIVersion, publiziert das Release-ZIP wie bisher per mega-put und lädt zusätzlich latest.zip + latest.json per lftp auf /public_html/dl/reupper-ui (gleicher Workflow wie release-upper-ui; ohne CHANGES/FTP_*-Vars bleibt das alte mega-put-Verhalten erhalten)
    • Neuer Header #reupper-ui-update-button + Modal #reupperUIUpdateModal sowie passende CSS-Klassen .update-meta, .update-release-text, .update-force-check

v0.4.3-BETA

  • feature:
    • Queue- und History-Tabellen bekommen jetzt einen Index auf updated_at, hoster und status; damit brechen tiefe Seiten (80k+ History-Items) nicht mehr in Full-Table-Scans + externe Sort-Schritte ein
    • Queue- und History-Suche läuft jetzt serverseitig über den neuen ?q=-Parameter (LIKE auf name/hoster) statt nur über die sichtbaren 50 Zeilen; das Suchfeld ist debounced (300 ms), behält seinen Wert beim Reload und das Pagination-Label zeigt zusätzlich “gefiltert aus X” an
    • Prev/Next-Buttons springen jetzt über Cursor (?cursor=...&dir=next|prev) statt über OFFSET — auch in 1600-Seiten-Tabellen bleibt jeder Klick O(pageSize) statt O(offset); die Buttons tragen data-cursor / data-dir, der Page-Jumper schaltet bei Bedarf wieder in den OFFSET-Modus zurück
    • Pagination-Bar hat jetzt einen Page-Jumper (Eingabefeld neben Prev/Next) für direkte Seiten-Sprünge auch bei mehreren hundert Seiten
    • Auto-Refresh der Queue/History-Seite läuft jetzt alle 30 s (vorher 15 s) und überspringt den vollen innerHTML-Render, wenn der Server meldet, dass sich die Revision (Row-Count + max(updated_at)) nicht geändert hat (Header X-Reupper-UI-Revision)
    • Refactor: loadItemsPage ist jetzt generisch über [T any] (Queue + History benutzen denselben Helper, kein Reflection-Trick mehr), und pro Request läuft nur noch eine COUNT(*) statt zwei bis vier
  • internal:
    • Items exponiert jetzt GetID() / GetUpdatedAt(), damit das cursorLocator-Constraint die eingebetteten Queue/History-Typen ohne Reflection akzeptiert

v0.4.2-BETA

  • feature:
    • Lösch-Button in der Queue raeumt jetzt auch das Workdir (<Path.Work|Path.Base/files>/<containerId>/) des Eintrags auf, damit abgebrochene/fehlerhafte Items nicht als Waisen auf der Platte liegen bleiben und der Reupload ohne manuelle FS-Bereinigung neu starten kann
    • Queue-Einträge tragen jetzt die container_id (UUID) des Workers; damit weiss die UI, welches Workdir zum Eintrag gehoert
    • Reupper-UI lädt optional die reupper.config (gleiche Datei wie der Worker), um an path.base / path.work zu kommen; ist die Datei nicht erreichbar, läuft die UI wie bisher und überspringt das Workdir-Cleanup still
  • bugfix:
    • Löschen eines Queue-Eintrags mit status=progress (Worker verarbeitet das Item gerade) wird jetzt mit HTTP 409 abgelehnt, statt das Workdir unter laufendem Worker zu löschen
    • Antwort auf DELETE /api/queue/:id liefert bei nicht gefundenen Einträgen HTTP 404 statt 200 mit "nothing deleted"

v0.4.1-BETA

  • feature:
    • Linkcrypter-Seite unterstützt jetzt alle konfigurierten Linkcrypter-Services (Filecrypt, hide.cx, Tolink); der aktive Service wird als Status-Pill in der Topbar angezeigt und der Sync-Button holt die passenden Container-Statistiken vom jeweiligen Anbieter
    • Wenn linkcrypter.service leer ist, fällt die UI zusätzlich auf den ersten linkcrypter.backup.services-Eintrag mit hinterlegtem API-Key zurück, sodass z.B. eine reine hide-Backup-Konfiguration ebenfalls synchronisiert werden kann
    • Setup-Hinweis erscheint in der UI, sobald kein Linkcrypter API-Key konfiguriert ist; Sync-Button ist in diesem Fall deaktiviert

v0.4.0-BETA

  • feature:
    • Komplettes UI-Redesign analog Go-Upper UI: Bootstrap 5 + Lucide Icons, einheitliches Designsystem (Topbar, dunkle Sidebar, Panels, Status-Pills, Metric-Kacheln)
    • SPA-artige Seitennavigation via Fetch ohne Full-Page-Reload (Partial-Rendering über X-Reupper-UI-Partial Header)
    • Neue Dashboard-Struktur mit Metric-Kacheln für Instanzen/Reuploads/Bandbreite/Lizenz sowie Charts für “Reuploads letzte 7 Tage” und “Reuploads nach Hoster”
    • Queue komplett auf Bootstrap-Tabelle mit Live-Suche, Status-Pills und Modal-Bearbeitung umgestellt; jQuery und DataTables entfernt
    • History- und Filecrypt-Seiten auf Bootstrap-Tabellen mit Status-Pills und Empty-States migriert
    • Instanzen-Tabelle mit Dropdown-Aktionen (Start/Stop/Löschen) und Terminal-Start via Button
    • Vendor-Assets (Bootstrap, Lucide, Chart.js, xterm) lokal eingebettet, keine CDN-Abhängigkeiten mehr
    • Versionsanzeige für UI und Reupper-Binary in der Topbar
    • Database-Reset mit Bestätigungs-Klick (Zweiklick-Flow gegen versehentliches Löschen)
    • Responsive Layout (Sidebar kollabiert auf Icons, Metrics stapeln auf schmalen Viewports)
    • Serverseitige Pagination für Queue und History (50 Einträge pro Seite) mit Prev/Next-Navigation, Seiten-Anzeige (“Seite X / Y”), Bereichs-Label (“1-50 von 125”) und Clamp-Logik für out-of-range Seiten
    • Linkcrypter-Seite ersetzt Filecrypt: zeigt Container-Statistiken (Online/Offline/Partial/Unchecked/Uncheckable/Error/Gesamt) als Metric-Kacheln, farbige Verteilungs-Bar mit Legende und Detail-Tabelle; Werte werden in der UI-Datenbank gespeichert (linkcrypter_stats Tabelle) und ein Sync-Button aktualisiert die Daten per filecrypt UserStats-API auf Knopfdruck
  • bugfix:
    • Bandwidth-Metric zeigt jetzt sichwerte Defaults wenn kein Dashboard-Eintrag existiert
    • Filecrypt-State-Auswahl lädt Daten asynchron ohne Page-Reload
    • Shutdown-Button (X in der Topbar) beendet jetzt den Fiber-Prozess sauber via POST /api/reupper-ui/shutdown (zuvor wurde nur das Fenster geschlossen, nicht der Server)

v0.3.0-BETA

  • feature:
    • handle terminal with sockets in the browser
    • stable terminal handling
    • disable upload publishing targets when configured credentials are missing
    • Publishing-Presets können auf einer eigenen Presets-Seite in der UI-Datenbank verwaltet, im Upload-Edit-Tab als Buttons angewendet und pro Upload-Typ automatisch vorselektiert werden; Preset-Ziele unterstützen feste Targets oder Auto-Target per bestehender Mapping-Logik
    • Publishing-Presets können in einem eigenen Layer neu angelegt und bearbeitet werden
    • small improvements
  • bugfix:
    • upper-ui importiert Templates jetzt pro Go-Upper-Instanz und verarbeitet Publishing-Ziele mit der Config der jeweiligen Upload-Instanz
    • upper-ui Remote Sources liest und schreibt Remote-Konfigurationen jetzt für die ausgewählte Go-Upper-Instanz statt implizit für die erste gefundene Config
    • die Presets-Seite zeigt bei der Instanz-Auswahl “Alle / Global” jetzt die Presets aller Go-Upper-Instanzen an

v0.2.0-BETA

  • improvements:
    • reorder boxes on dashboard
    • reorder some links in Queue
  • feature:
    • Queue: add edit button
    • Queue: add delete button
    • Dashboard: add stats box for “Reuploads by Hoster”

v0.1.0-BETA1

  • feature:
    • working web ui
    • Dashboard to setup existing reupper instances
    • Queue to manage reuploaded items