• v1.1.1 fb70f70cf5

    jkaindl released this 2026-05-17 22:13:57 +00:00 | 116 commits to main since this release

    Hotfix Release

    Resolves all three v1.1.0 known issues plus four polish findings from cowork smoke-testing. WebUI-and-pipeline fixes only — no change to the capture/train/export algorithm.

    Fixed

    • [SF-G2-9] Backend status-write sync — the WebUI now tracks runs from every trigger path (CLI-direct autosplat process, watch-daemon, WebUI Process-button). Live monitoring shows correct running/stage/done/failed states.
      • Part 1 — list_captures/get_capture overlay the in-memory JobRunner status for WebUI-button-triggered jobs.
      • Part 2 — run_pipeline() reports status into an optional WatcherState (begin / update_stage / mark_done), keyed by the capture directory, for the CLI-direct and watch-daemon paths.
    • [SF-PIPE-1] Embedded SuperSplat viewer URL-loading — the PLY route moved from /captures/{id}/ply to /captures/{id}/scene.ply. SuperSplat detects file type from URL extension, so it now recognizes the .ply suffix. Bonus: browser downloads are named scene.ply.
    • [SF-G3-3] Recent-jobs single-run-per-capture — JobRunner now keeps an in-memory _history list; all_jobs() exposes the full history so re-triggering a capture no longer hides earlier runs.
    • [SF-PIPE-2] Log-box width — raw log lines (.msg:only-child) now span the full row instead of collapsing into the 56 px time column.
    • [SF-PIPE-3] REASON-card text overflow — .as-kv .v gets min-width: 0; overflow-wrap: anywhere; long whitespace-free error strings now wrap inside the card.
    • [SF-PIPE-4] Vertical scroll — there was no html, body { height: 100% } rule, so <body> collapsed to content height, its overflow: hidden propagated to the viewport, and the page could not scroll.
    • [SF-PIPE-5] Viewer-iframe full-height — same root cause as SF-PIPE-4; without the height chain the viewer's flex:1 subtree had no parent height, so the SuperSplat iframe collapsed to a strip.

    Changed (Internal)

    • The CLI process command broadened its exception handling from except RuntimeError to except Exception — domain errors (QualityGateFailure, BrushOOMError) now exit cleanly via EXIT_PIPELINE_FAILURE and record a failed entry instead of raising an untrapped traceback.

    Design Notes

    • JobRunner history is in-memory — a WebUI server restart resets it. Persistent per-capture history (runs.jsonl append-log) shipped in v1.2.0.
    • WatcherState.in_progress is single-slot — single-user Mac tool; use one trigger path at a time.
    • PLY URL renamed from /captures/{id}/ply to /captures/{id}/scene.ply — pre-v1.1.0 had no public users.

    Tests

    200 unit tests (198 passed, 2 opt-in E2E skipped) — +5 over v1.1.0.

    For the full changelog see CHANGELOG.md.

    Downloads