Repository navigation
v0.15.9
What's Changed
Features
-
Job duration insights — A new Duration insights card on the Task Detail page shows p50/p95/avg/min/max over the last 50 completed runs, a per-step duration breakdown, and a zero-dependency SVG sparkline with p50/p95 reference lines. The Job Detail page now shows an ETA pill on running jobs (step-weighted estimate from historical step p50s) that flips to an Overrun badge when a job has been running longer than the task's typical median. Step rows in the timeline show inline
p50: Xsbadges, and a running step's elapsed time turns amber once it passes the step's p50. (f97e232) -
Server-level default timeouts — Two new
server-config.yamlkeys,default_step_timeoutanddefault_job_timeout, fill in when a task or step does not specify its owntimeout. The resolved value is written to the DB row at job-creation time and enforced by the existing recovery sweep — operators can finally close the "stuck pod runs forever" footgun with a single config line. Capped at 24h (step) and 7d (task), matching the existing per-task / per-step caps. Inherited uniformly by retries, hooks,type: tasksub-jobs, andfor_eachinstances. To opt one task out of a global default, set itstimeoutto the maximum. Omit the keys to keep the previous unbounded behaviour. (f97e232)
New API
GET /api/workspaces/{ws}/tasks/{name}/stats?limit=N— Aggregated duration statistics for a task. Returns{ window, task: {sample_size, avg_ms, p50_ms, p95_ms, min_ms, max_ms, recent}, steps: [...] }. ACL: View permission sufficient (read-only).limitclamped to[1, 500], defaults to 50. Failed/cancelled/skipped runs are excluded;for_eachinstance rows are excluded from the per-step breakdown. (f97e232)
Internal
- New DB migration
036_job_duration_index.sqladds a partial composite index(workspace, task_name, completed_at DESC) WHERE status='completed'to keep the three stats queries fast on tasks with thousands of historical jobs. MAX_STEP_TIMEOUT_SECSandMAX_JOB_TIMEOUT_SECSconstants extracted tostroem-common::validationand shared with the newServerConfigvalidation so the two cap sites can't drift.- 35+ new tests across DB integration, server handler, config unit, and frontend Vitest suites.
Full Changelog: v0.15.8...v0.15.9