feat(web): jobs dashboard — job list, status, logs, manual trigger #110

Open
opened 2026-02-15 10:55:09 +00:00 by forbes · 0 comments
Owner

Ref: docs/WORKERS.md §8, docs/MODULES.md §3.9

The jobs REST API is fully implemented but has no web UI. Add a Jobs page to the React SPA.

Requirements

Jobs List Page (/jobs)

  • Table showing all jobs: definition name, status badge, item (part number link), runner, progress bar, created/updated timestamps
  • Filter by status: pending, claimed, running, completed, failed, cancelled
  • Filter by item (part number search)
  • Auto-refresh via SSE events (job.created, job.progress, job.completed, job.failed, job.cancelled)
  • Gated by jobs module — hide nav entry if module disabled

Job Detail (expandable row or side panel)

  • Full job info: definition, item, runner, priority, timeout, retry count
  • Progress bar with message
  • Result JSON (if completed)
  • Error message (if failed)
  • Log viewer: scrollable list of log entries with timestamp, level badge, message

Manual Trigger

  • Button to create a new job from a definition
  • Select definition from dropdown, optionally select item
  • Calls POST /api/jobs

Runner Status (admin only)

  • Card or section showing registered runners: name, status (online/offline), tags, last heartbeat
  • Register new runner button (admin)

Navigation

  • Add "Jobs" link to AppShell nav (only when jobs module is enabled)
  • Use module info from GET /api/modules to conditionally show nav entry

Depends on #107 (auto-triggering makes the dashboard more useful).

**Ref:** docs/WORKERS.md §8, docs/MODULES.md §3.9 The jobs REST API is fully implemented but has **no web UI**. Add a Jobs page to the React SPA. ## Requirements ### Jobs List Page (`/jobs`) - Table showing all jobs: definition name, status badge, item (part number link), runner, progress bar, created/updated timestamps - Filter by status: pending, claimed, running, completed, failed, cancelled - Filter by item (part number search) - Auto-refresh via SSE events (`job.created`, `job.progress`, `job.completed`, `job.failed`, `job.cancelled`) - Gated by jobs module — hide nav entry if module disabled ### Job Detail (expandable row or side panel) - Full job info: definition, item, runner, priority, timeout, retry count - Progress bar with message - Result JSON (if completed) - Error message (if failed) - Log viewer: scrollable list of log entries with timestamp, level badge, message ### Manual Trigger - Button to create a new job from a definition - Select definition from dropdown, optionally select item - Calls `POST /api/jobs` ### Runner Status (admin only) - Card or section showing registered runners: name, status (online/offline), tags, last heartbeat - Register new runner button (admin) ### Navigation - Add "Jobs" link to AppShell nav (only when jobs module is enabled) - Use module info from `GET /api/modules` to conditionally show nav entry Depends on #107 (auto-triggering makes the dashboard more useful).
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kindred/silo#110