mirror of
https://github.com/jhd3197/ServerKit.git
synced 2026-11-09 13:35:12 +09:00
The page kept a shape the rest of the app moved off: a four-card KPI strip, its own in-body search input, a hand-rolled table, four icon buttons per row, and an edit modal on row click. It now matches /domains: the segmented filter carries the counts (no KPI strip), SearchField lives in the top bar, the list is the shared DataTable, and a row opens the DS Drawer. The top bar keeps its title — /cron has no tab group, and the reference mock shows a titled bar there; the body was what was stale. Last run / Next run / Status columns need data list_jobs() never returned: it skipped the schedule_human / next_run / run-tracking joins that jobs_for_application() has done since plan 34, so the admin list could only ever show enabled-vs-disabled. Apply the same enrichment, with tests covering the schedule join, the last-run join, and the no-history case. The drawer's run history uses GET /cron/jobs/<id>/runs, which already existed and only ScheduledTasksCard consumed. It's admin-only and empty until a job carries the tracking shim, so both cases are stated in the drawer (with an enable-tracking action) rather than rendering a blank table. Also fixes styles that never applied: .run-output-*, .spinner-inline and the modal field overrides were nested under .cron-page, but Radix Dialog and Sheet portal to <body>. Hoisted to top level. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>