Skip to content

Latest commit

 

History

History
102 lines (79 loc) · 8.74 KB

CHANGELOG.md

File metadata and controls

102 lines (79 loc) · 8.74 KB

Changelog

[Unreleased]

Added

  • Einstellung „Dashboard-Widgets ausblenden“ (disableWidgets) auf der Plugin-Seite: das Plugin setzt seine Widgets nicht mehr aufs Dashboard und entfernt die bereits gesetzten bei jedem Benutzer beim nächsten CP-Aufruf — gilt für alle Benutzer

  • Widgets merken sich, ob sie vom Plugin oder vom Benutzer hinzugefügt wurden (addedByPlugin, via AddedByPluginTrait) — selbst hinzugefügte diff.-Widgets bleiben beim Ausblenden erhalten. Widgets aus älteren Versionen (ohne Flag) gelten als vom Plugin gesetzt

  • Eigene Widgets eines Benutzers werden beim Übernehmen des Dashboards durch das Plugin in den User-Preferences (diffbaseWidgets) gesichert und beim Ausblenden der Plugin-Widgets wiederhergestellt

  • „Feedback geben“-Button am rechten Rand aller CP-Seiten (nur Nicht-Admins): lädt Marker.io erst beim Klick und öffnet direkt die Erfassung. Danach ersetzt der Marker.io-Button den eigenen Button bis zum nächsten Seitenaufruf. E-Mail und voller Name des Craft-Benutzers werden als Reporter vorausgefüllt (Marker.setReporter()) — ohne Namen wird der Systemname verwendet

  • Einstellung „Feedback-Button ausblenden“ (disableFeedback) auf der Plugin-Seite: blendet den Button für alle Benutzer aus, Marker.io wird dann nie geladen. Unabhängig von „Dashboard-Widgets ausblenden“

  • Server-Info der API enthält den Hosting-Benutzer (hosting_user), ermittelt aus dem Webroot-Pfad /home/<USERNAME>/public_html/… — null, wenn der Pfad nicht passt

  • Server-Info der API enthält den Craft-Root (craft_root, Alias @root) und den Webroot (web_root, Alias @webroot)

  • Server-Info der API enthält die Domain (domain) der Primary-Site, ermittelt aus deren Base-URL

  • Server-Info der API enthält den Domain-Handle (domain_handle): Domain in Kleinbuchstaben ohne www., TLD, Punkte und Bindestriche (z. B. gbk-law.ch → gbklaw)

  • Endpoint actions/diffbase/update/craft-update (API-Key via key-Parameter oder X-API-Key-Header): führt php craft update all --backup --migrate --with-expired synchron aus und antwortet mit success, exit_code und der Ausgabe (letzte 20 KB). Ein Lock verhindert parallele Updates auf demselben System (Antwort 409), ein fehlgeschlagenes Update liefert 500. Das zentrale Monitoring kann damit die Updates über seine Queue nacheinander anstoßen

Changed

  • Das zentrale Monitoring läuft unter smart.diff.ch statt flow.diff.ch: Access-Control-Allow-Origin der Update-Endpoints (composer-update, craft-update) und der Hinweis im README wurden angepasst
  • Marker.io wird nicht mehr bei jedem CP-Aufruf geladen, sondern erst beim Klick auf den „Feedback geben“-Button

Fixed

  • Speichern einer Einstellung auf der Plugin-Seite verwarf die übrigen Einstellungen (u. a. wurde dadurch ein neuer API-Key generiert) — es werden nun immer alle Einstellungen gespeichert
  • Formulare auf der Plugin-Seite leiteten nach dem Speichern auf /admin/_diffbase (404) statt auf /admin/diffbase weiter
  • Composer-Update schlug mit „The HOME or COMPOSER_HOME environment variable must be set“ fehl, weil dem Process für den composer update-Aufruf keine Umgebungsvariablen übergeben wurden — HOME/COMPOSER_HOME werden nun (wie bereits bei der Binary-Suche) über posix_getpwuid() aufgelöst und an den Prozess weitergereicht

5.1.2 - 2026-08-12

Added

  • composerPath setting (CP-Feld auf der Plugin-Settings-Seite) als manueller Override für den Composer-Update-Endpoint, falls die automatische Suche das Binary auf einem Host nicht findet

Fixed

  • Automatische Composer-Suche verwendete getenv('HOME'), das unter PHP-FPM oft leer ist (anders als in einer SSH-Shell) — auf posix_getpwuid() umgestellt, das das Home-Verzeichnis zuverlässig direkt aus der OS-User-Datenbank liest
  • /opt/cpanel/composer/bin/composer (cPanel Composer Manager) zur Standard-Suchliste hinzugefügt

5.1.1 - 2026-08-12

Fixed

  • Update endpoint failed on hosts with exec() disabled — switched to Symfony\Process (proc_open()) with automatic composer binary detection

5.1.0 - 2026-08-12

Added

  • /api/info liefert jetzt einen users-Block (total, admins, pending, suspended, locked, last_admin_login) — bewusst ohne Namen/E-Mail, da der Endpoint nur über einen statischen Key geschützt ist
  • Update-Endpoint (UpdateController::actionComposerUpdate): Access-Control-Allow-Origin: https://flow.diff.ch gesetzt, damit das zentrale Monitoring-Dashboard den Update-Trigger per AJAX auslösen und das Ergebnis direkt inline anzeigen kann, statt in einem neuen Tab zu landen
  • MessageWidget now renders with a light orange background (#ffe9d7) to visually stand out on the dashboard
  • NewsWidget and TechWidget support a configurable offset setting to display different entries when multiple instances are used on the dashboard
  • Sites in API response now include reachable (bool) and http_status (int) fields — a HEAD request is made to each site's base_url to detect if the frontend is accessible independently of the plugin/backend
  • NewsWidget and TechWidget now display the entry title as the widget header (parsed from remote response)

Fixed

  • getPluginsInfo(): 5 Felder (edition, has_cp_settings, license_key_status, is_trial, update_available) lieferten für jedes Plugin immer null/false wegen einer nie definierten Variable $pluginInfo — entfernt (die Update-Info steht bereits korrekt unter updates.plugins)
  • mail.transport_settings war immer leer, weil der switch auf 'smtp'/'gmail'/'sendmail' prüfte, transportType im Project Config aber der volle Klassenname ist (z.B. craft\mail\transportadapters\Sendmail) — Vergleich auf die tatsächlichen Klassennamen umgestellt
  • php-Block: memory_usage/peak_memory entfernt (spiegelten nur den Verbrauch des kurzlebigen API-Requests selbst, kein aussagekräftiges Signal)
  • Update-Endpoint (UpdateController::actionComposerUpdate): Ungültiger/fehlender API-Key lieferte HTTP 200 statt 401 — asJson() von Yii akzeptiert keinen zweiten Statuscode-Parameter, dieser wurde stillschweigend verworfen. Statuscode wird nun explizit über Craft::$app->getResponse()->setStatusCode(401) gesetzt
  • Update-Endpoint: success wurde fälschlich true gemeldet, wenn shell_exec() deaktiviert war oder fehlschlug (null-Rückgabe führte dazu, dass str_contains() false lieferte) — auf exec() mit echtem Exit-Code umgestellt, success basiert nun auf $exitCode === 0
  • Queue: Alle Job-Counts (total_jobs, waiting_jobs, reserved_jobs, failed_jobs) lieferten immer 0 — method_exists()-Checks auf Queue-Methoden ersetzt durch direkte yii\db\Query-Abfragen auf {{%queue}} (analog zu getRecentFailedJobs)
  • Queue: failed_jobs lieferte immer 0, weil createCommand() keine Query-Builder-Methoden hat — ersetzt durch die nativen getTotalFailed(), getTotalWaiting(), getTotalReserved(), getTotalJobs() API-Methoden von craft\queue\Queue
  • Queue: Spaltenname timeFailed korrigiert zu dateFailed (korrekter Craft-Spaltenname) in getRecentFailedJobs()
  • Queue: Raw-SQL in getRecentFailedJobs() auf yii\db\Query umgestellt (statt Command)

1.0.4 - 2026-04-23

Added

  • Marker.io Bug-Reporting-Tool global im Control Panel registriert
  • Tool ist auf allen Backend-Seiten verfügbar für schnelles Feedback und Bug-Reports

1.0.3 - 2026-04-23

Fixed

  • File-Upload im SupportWidget funktioniert jetzt korrekt (enctype="multipart/form-data" hinzugefügt)
  • Status-Meldungen (Erfolg/Fehler) werden im Widget korrekt angezeigt
  • Korrekte Action-URL im Widget verwendet
  • Redirect-Logik verbessert mit Fallback zum Dashboard
  • File-Accept-Filter hinzugefügt für bessere UX
  • Hilfetexte für Upload-Feld hinzugefügt

1.0.2 - 2026-04-23

Added

  • Dateigrößen-Validierung (max. 10 MB)
  • Ausführliches Logging für File-Upload und E-Mail-Versand
  • Anhang-Informationen werden in der E-Mail angezeigt (Name, Typ, Größe)
  • Automatisches Cleanup: Temporäre Dateien werden nach dem Versand gelöscht

Fixed

  • File-Upload verbessert mit besserer Fehlerbehandlung
  • Sichere Dateinamen (Sanitization) um Sicherheitsprobleme zu vermeiden
  • Temp-Verzeichnis wird automatisch erstellt, falls nicht vorhanden
  • Korrekte Content-Type und Dateinamen für E-Mail-Anhänge

1.0.1 - 2026-04-23

Added

  • Support-E-Mail-Funktion mit Dateianhang-Support
  • Route für diffbase/support/send-email registriert (nicht diff-base!)
  • Test-Template unter /support-test zum Testen des E-Mail-Versands
  • System-E-Mail-Absender aus ProjectConfig verwendet

Fixed

  • 404 Fehler bei Support-Controller behoben durch Registrierung der Route und erlaubtem anonymen Zugriff
  • Korrekte Action-URL ist {{ actionUrl('diffbase/support/send-email') }}, nicht diff-base