feat(ui): add /ui/jobs listing page with filters + pagination #47
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/ui-jobs-list"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
JobsRepo.list_recent(session, limit, offset, status, client_id)returning(list[Job], total); newest-first, limit capped at 200, accepts single or iterable status filter, exact client_id match, raises on negative offset.GET /ui/jobsroute rendersjobs_list.html(Pico CSS, same header style as existing UI): status badge, filename (fromFileRef.display_nameor URL basename), use_case, client_id, submitted + relative, elapsed, per-row link to/ui/jobs/{id}./uiand/ui/jobs/{id}gains a "Recent jobs" link.AGENTS.md+README.mdmention/ui/jobsalongside/ui.Test plan
uv run pytest tests/unit)tests/integration/test_jobs_repo.py(list_recent: empty, ordering, single + iterable status, client_id filter, pagination, limit cap, negative offset) andtests/integration/test_ui_routes.py::TestJobsListPage(render, status single/multi, client filter, pagination, legacy fallback, header links)/ui/jobs+/ui/jobs?status=errorafter deploy🤖 Generated with Claude Code
* `JobsRepo.list_recent` — paginated, filterable view over ix_jobs, newest first, returning (jobs, total) so the template can render "Showing N of M". * `GET /ui/jobs` — filter bar (multi status + client_id), prev/next pagination, links to `/ui/jobs/{id}` per row. Surfaces filename from `FileRef.display_name` with URL-basename fallback for legacy rows. * Persistent nav header gets a "Recent jobs" link on both `/ui` and the per-job page so users can tab between submit and history. * Integration tests cover: ordering, status/client filters (single + multi), pagination, legacy fallback, header links. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>