• v1.1.2 d8d8c4bebb

    jkaindl released this 2026-05-20 18:46:39 +00:00 | 109 commits to main since this release

    Hotfix Release

    Closes the three v1.1.1 backlog items: wall-clock job timestamps + within-day sort, zero ruff findings, and a job-specific status badge. WebUI- and hygiene-only — no change to the capture/train/export algorithm.

    Fixed

    • [SF-G3-1] + [SF-NEW-3] Wall-clock job timestamps + within-day sort — JobState now carries started_at_walltime and finished_at_walltime as ISO-Z strings (monotonic siblings stay for duration math). state.py grew an explicit done-branch so WebUI-completed jobs surface their finished_at instead of falling through to the ply-not-None path. list_captures now sorts by finished_at DESC with capture-name DESC as a tiebreaker.
    • [SF-G3-2] Job-status badge cancelled/queued rendering — the jobs view rendered cancelled/queued JobStates as a grey "ready" badge because capture_badge had no branches for them. New sibling job_badge macro purpose-built for JobState: explicit branches for queued, running, done, failed, cancelled. New CSS class .s-cancelled keeps cancelled runs visually distinct. capture_badge stays unchanged — it remains the right macro for CaptureInfo.

    Changed (Hygiene)

    • [SF-H1-1] Zero ruff findings — uv run ruff check src/ tests/ now passes cleanly (23 pre-existing findings resolved). Categories: 11× F401 unused imports, 3× I001 unsorted import blocks, 7× SIM117 nested with-statements collapsed via PEP 617, 2× B904 raise typer.Exit(...) from None in cli.py.

    Design Notes

    • job_badge vs capture_badge separation — the two macros now own different status enums. capture_badge knows pipeline stages (preflight → export) and the CaptureInfo lifecycle. job_badge knows the JobRunner lifecycle (queued/running/done/failed/cancelled).
    • Wall-clock timestamps coexist with monotonicJobState keeps both started_at/finished_at (monotonic float, for duration math) and started_at_walltime/finished_at_walltime (ISO-Z strings, for display + sorting).

    Tests

    206 unit tests (204 passed, 2 opt-in E2E skipped) — +6 over v1.1.1.

    For the full changelog see CHANGELOG.md.

    Downloads