• 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
  • v1.15.0 b3c5ad7438

    jkaindl released this 2026-07-19 21:01:28 +00:00 | 33 commits to main since this release

    Publish quality gate

    Captures must be reviewed once in the SuperSplat viewer before their first share: upload a cleaned .ply (e.g. exported from SuperSplat's own export UI) or confirm the scene unchanged. The gate is tracked per-capture and auto-invalidates when the capture is rebuilt (detected via scene.ply mtime), requiring a fresh review.

    Capture cleanup

    • cleanup-intermediates CLI command + WebUI "Free up space" button — reclaims disk space held by frames/, colmap/, training/ once a capture has finished exporting.

    Docs

    • Portability audit: AGENTS.md files marked maintainer-local where they referenced the maintainer's own machine setup; GETTING-STARTED.md quickstart path fixed to be relative.

    See pipeline/CHANGELOG.md for full details.

    Downloads
  • v1.14.3 d477d73622

    jkaindl released this 2026-07-19 11:02:48 +00:00 | 51 commits to main since this release

    Papercut cleanup slice for the captures/detail WebUI, seeded 2026-07-18 in the Coding-Cockpit. Five items, all TDD'd:

    • Fixedshare/_tmp/scene.sog compression leftover is now cleaned up after a successful share-bundle build.
    • Fixedfinished_at now survives a WebUI restart for successfully-finished jobs too (previously only failed jobs had a durable fallback), fixing captures-list ordering.
    • Fixed — COLMAP's mapper stage no longer falsely triggers the "quiet — may be stuck" liveness warning; the heuristic now also watches colmap/database.db/colmap/sparse/** mtime, not just pipeline.log.
    • Added — per-row delete action in the captures list.
    • Added — click-to-sort captures list columns (id/status/stage/created/ply), toggling asc/desc, surviving the 3s HTMX poll.

    Full details: pipeline/CHANGELOG.md

    Signed + notarized DMG attached below.

    Downloads
  • v1.14.2 c9a41370e0

    jkaindl released this 2026-07-15 14:50:16 +00:00 | 54 commits to main since this release

    Fixes the "Download bundle (.zip)" button doing nothing in the packaged DMG app. Root cause: the desktop app opens the WebUI in a native pywebview WKWebView window, which gates handling of <a download> links behind webview.settings['ALLOW_DOWNLOADS'] (default False, never enabled). The server-side download route was already correct.

    See CHANGELOG.md and pipeline/CHANGELOG.md for details.

    Downloads
  • v1.14.1 1963b7aa8a

    jkaindl released this 2026-07-15 11:48:26 +00:00 | 55 commits to main since this release

    Patch release: share bundles now bundle and use the embed/ viewer runtime instead of viewer/, making them genuinely zero-external (PlayCanvas vendored) and fixing the feature being non-functional in the packaged DMG app.

    See CHANGELOG.md and pipeline/CHANGELOG.md for details.

    Downloads
  • v1.14.0 d65fe99433

    jkaindl released this 2026-07-15 07:20:08 +00:00 | 65 commits to main since this release

    Added

    • embed/ — minimal, embeddable splat viewer. A new self-contained
      monorepo component: a single iframe page
      (embed/index.html?src=…&poster=…&autoplay=1) with click-to-load gate,
      percentile auto-framing, auto-orbit and fullscreen — and a fully vendored
      PlayCanvas engine (zero external requests). viewer/ is parked as the
      development viewer (walking mode, collision editor, landing page live there).
      A pose-authoring workflow (?pose=…&orbit=…&authoring=1) lets you capture a
      curated camera view into a ready-to-embed link instead of relying on
      auto-framing.
    Downloads
  • v1.13.0 26855f924c

    jkaindl released this 2026-07-14 12:19:18 +00:00 | 83 commits to main since this release

    Added

    • WebUI "Create share bundle" — on-demand action on a finished capture that compresses the scene to .sog and assembles a self-contained, self-hostable viewer bundle (folder + .zip) reachable via an unguessable link. Unlisted, not access-controlled.

    Fixed

    • WebUI capture detail no longer freezes in its running render after a job finishes — the liveness poll now detects the running → done transition and reloads the page.

    Full details: pipeline/CHANGELOG.md

    Downloads
  • v1.12.0 cca5f688ab

    jkaindl released this 2026-06-15 22:43:42 +00:00 | 96 commits to main since this release

    Monorepo merge

    autosplat-pipeline and autosplat-viewer are now one repositorypipeline/ + viewer/ — with full, lossless history.

    Highlights

    • One shared version line, starting at v1.12.0 (continuing the pipeline strand; the viewer joins from 1.1.1).
    • History preserved verbatim: pre-merge tags namespaced pipeline-v* / viewer-v*; git log --follow reaches the full history inside each subfolder.
    • feat/collision-mesh carried over (8 commits).
    • Product-level root: README · CHANGELOG · AGENTS · consolidated license set · scripts/deploy-pages.sh.
    • Live viewer (Codeberg Pages): https://jkaindl.codeberg.page/autosplat/

    Migration notes

    The old repositories (video-to-3d-gaussian-splat, autosplat-viewer) are archived (not deleted); their releases remain reachable there. A GitHub mirror is available at https://github.com/johannes-kaindl/autosplat.

    Full details: CHANGELOG.md.

    Downloads