Skip to content

feat: v6.0.0 – Acknowledge executions, Kebab-Dropdown, AJAX Detail-Reload, Dark Mode - #123

Merged
csoscd merged 9 commits into
mainfrom
feature/v6.0.0
Aug 27, 2026
Merged

feat: v6.0.0 – Acknowledge executions, Kebab-Dropdown, AJAX Detail-Reload, Dark Mode#123
csoscd merged 9 commits into
mainfrom
feature/v6.0.0

Conversation

@csoscd

@csoscd csoscd commented Aug 27, 2026

Copy link
Copy Markdown
Owner

Summary

  • Acknowledge failed executions (closes feat: Acknowledge failed executions to suppress dashboard alerts #121): Operators können fehlgeschlagene Ausführungen als „Bestätigt" markieren oder zurücknehmen — direkt in der Job-Detail-History und in der Dashboard-Kachel „Aktuelle Fehler", jeweils per AJAX ohne Seitenneuladen. Bestätigte Fehler werden aus der Fehler-Liste und dem Badge-Zähler im Dashboard ausgeblendet, zählen aber weiterhin in der Statistik. Die Aktion ist vollständig im Audit-Log protokolliert. Neuer REST-API-Scope executions:acknowledge, DB-Migration 020_acknowledge.sql.
  • Kebab-Dropdown in der Job-Liste (closes Job durch kopieren anlegen #115): Der „Öffnen"-Button wird durch ein ⋮-Menü ersetzt mit Öffnen, Bearbeiten, Kopieren und Löschen (mit Bestätigungsdialog).
  • AJAX History-Reload auf Job-Detail-Seite: Manuelle und automatische Aktualisierung der Execution-History via AJAX (auto-on bei laufendem Job, Toggle und manueller Reload-Button).
  • Dark Mode (closes Schrift im Darkmodus schlecht lesbar #114): Kontrast-Korrekturen, fehlende CSS-Variablen und helle Hintergründe im Dark Mode behoben.
  • Weitere Fixes: has_running-Erkennung im JSON-Modus, translator()-Methode statt nicht existenter Property, Agent-Auswahl-Styling im Benutzerformular.

Test plan

  • Fehlgeschlagene Ausführung auf Job-Detail bestätigen → History-Tabelle aktualisiert sich per AJAX, Badge erscheint
  • Bestätigung zurücknehmen → Badge verschwindet
  • Dashboard: „Bestätigen"-Button entfernt Zeile per AJAX, Badge-Zähler dekrementiert
  • Dashboard-Statistik-Kacheln (failed_today, failed_24h) zählen bestätigte Fehler weiterhin
  • REST API: POST /api/v1/executions/{id}/acknowledge und DELETE /api/v1/executions/{id}/acknowledge mit executions:acknowledge-Scope
  • Audit-Log: execution.acknowledged / execution.unacknowledged erscheinen
  • Kebab-Dropdown: Öffnen, Bearbeiten, Kopieren, Löschen (Bestätigungsdialog) funktionieren
  • Job-Detail AJAX-Reload: Auto-Start bei laufendem Job, Toggle und manueller Button
  • Dark Mode: Kontrast und fehlende Farben geprüft
  • Alle CI-Checks grün

csoscd added 9 commits August 27, 2026 11:39
…114)

- Raise --cm-faint from #44446a (2.2:1) to #9898c8 (7.1:1) — WCAG AA fix
- Raise --cm-muted from #8888bb to #b4b4e0 for comfortable readability
- Adjust dark background tokens for consistent blue tint
- Add missing --cm-text-muted and --cm-input-bg variables (50+ template uses)
- Add missing Tailwind bg-overrides: bg-gray-200, bg-green-50, bg-amber-50,
  bg-orange-100, bg-purple-50 (previously rendered as bright islands in dark mode)
- Bump version to 6.0.0
- Replace single "Öffnen" button with a ⋮ action dropdown per row
- Dropdown entries: Öffnen (all users), Kopieren (admin), Löschen (admin, red)
- Dropdown uses position:fixed via JS to avoid overflow:hidden clipping
- Single-delete reuses bulk-delete modal; bulk selection is preserved
  (singleDeleteId path in cmBulkModalConfirm bypasses the selected Set)
- New cron_actions i18n key added to de.php and en.php
- Fix delete button onclick: json_encode(string) produced "3" (with
  literal double-quotes), breaking the HTML onclick attribute. Changed
  to (int) $jobId to output a bare integer.
- Fix copy form empty: $agParam ended with bare & before copy_from=,
  causing browsers to parse &copy as the HTML entity © (U+00A9).
  The copy_from parameter was silently lost from $_GET, leaving
  $sourceJob null and rendering a blank create form. Fixed by using
  & as the separator in $agParam across all four templates that
  define it (list.php, detail.php, dashboard.php, timeline.php).
- Add "Bearbeiten" entry to kebab dropdown (admin only, links to
  /crons/{id}/edit) between Öffnen and Kopieren.
Shows agent URL in muted text next to the name, matching the
api_keys/create.php layout (w-4 h-4 checkbox, gap-3, text-xs URL).
 #121)

- POST/DELETE /execution/{id}/acknowledge on the agent sets or clears
  acknowledged_at + acknowledged_by_user_id on execution_log
- Dashboard failure count and recent-failures list filter out acknowledged entries
- Job list and timeline show a muted "Acknowledged" badge on the exit-code cell
- Job detail page shows Acknowledge/Unacknowledge toggle button for failed rows
- REST API: POST/DELETE /api/v1/executions/{id}/acknowledge (scope executions:acknowledge)
- New scope added to operator profile and all-admin; operator profile updated in API.md
- DB migration 020_acknowledge.sql adds two columns to execution_log
- Audit log records execution.acknowledged / execution.unacknowledged actions
Operator+ users can now acknowledge failed executions directly from the
dashboard without navigating to the job detail page. Adds isOperator flag
to the DashboardController render call and a new action column in the
recent-failures table.
Dashboard: Bestätigen-Button sendet fetch POST, entfernt die Zeile sofort
aus dem DOM und dekrementiert den Fehler-Badge – kein Seitenneuladen.

Detail: Bestätigen/Zurücknehmen per Event-Delegation auf dem History-
Tbody; nach Erfolg wird doFetch() über cm:reload-detail ausgelöst und
die History aktualisiert sich ohne Redirect.

CronController::acknowledgeExecution gibt bei ?_json=1 JSON zurück
statt zu redirecten.
README.md: added feature entries for 'Acknowledge failed executions'
and 'Job actions menu' (Kebab-Dropdown) introduced in v6.0.0.

API.md: added v6.0.0 changelog entry covering the acknowledge endpoints,
executions:acknowledge scope, new history fields, and audit-log events.
StatsEndpoint excluded acknowledged_at IS NULL from failed_today and
failed_24h counters. Acknowledged executions remain failures and must
be counted; only the recent-failures display list suppresses them.
@csoscd
csoscd merged commit 962d5f0 into main Aug 27, 2026
12 checks passed
@csoscd
csoscd deleted the feature/v6.0.0 branch August 27, 2026 18:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Acknowledge failed executions to suppress dashboard alerts Job durch kopieren anlegen Schrift im Darkmodus schlecht lesbar

1 participant