• v1.16.0 2282cf4ce0

    jkaindl released this 2026-07-29 14:28:10 +00:00 | 0 commits to main since this release

    Sub-project 1 of 4 in the workflow rethink. A capture now has an explicit lifecycle derived from the filesystem, and storage retention hangs off it.

    Changed

    • Completing a review reclaims that capture's intermediates. Signing a capture off in the publish quality gate — "Confirm unchanged" or uploading a cleaned PLY — deletes frames/, colmap/, training/, brush_dataset/, rescue/probes/ and share/_tmp/. Kept, as before: everything in output/, pipeline.log, runs.jsonl, finished share bundles — and rescue/clips/*.mp4, which are a bisection-rescued capture's recorded origin, without which resume/add-video cannot work. The reclaim is deferred while a run looks live (a WebUI job, or any working dir touched in the last hour — what a CLI resume looks like from outside); the sign-off itself always stands.
    • A capture never reviewed is reclaimed after 30 days, on the next WebUI/app start, with a warning in the captures list from day 23. Configurable via [lifecycle] unreviewed_grace_days; 0 disables it. The sweep only touches captures the WebUI actually lists — nested legacy layouts are left to migrate-storage.
    • export.copy_to_outputs is deprecated and defaults to false. outputs_dir was a second, unmanaged copy of every PLY that nothing ever reclaimed. captures/<id>/output/ is the only location now; doctor warns while the key is still true. Existing config files keep loading.
    • Compressed SOGs are kept at output/scene.sog and reused — a repeat share of an unchanged capture goes from minutes of compression to seconds.

    Added

    • autosplat migrate-storage brings an existing backlog onto the retention policy. Scans captures/ recursively so nested pre-Phase-9 rescue layouts are found, plus the deprecated outputs/ copies, and prints one table of everything reclaimable. Preview by default, --apply executes.

      Never deleted, and always listed with the reason: an orphaned outputs/ entry (the only surviving copy of a capture that was removed), a failed capture, a capture that looks mid-rebuild, or a directory burying a nested capture's only PLY. It refuses to run at all when captures_dir and outputs_dir nest inside one another.

    Fixed

    • cleanup-intermediates never reclaimed rescue/ or brush_dataset/, and scanned non-recursively — so bisection-rescue leftovers and nested pre-Phase-9 capture layouts were invisible to it. On the maintainer's machine that was 11,2 of 19 GB.

    Measured on the maintainer's real data: 27,8 GB → 13,1 GB, with orphaned scenes, failed captures and rescue/clips deliberately untouched.

    Apple-Silicon only (macOS 15+). The DMG is signed and notarized.

    Downloads