-
released this
2026-06-02 20:53:46 +00:00 | 3 commits to main since this releasev1.11.0 — DJI HDR footage support
DJI Osmo Pocket / Action footage (HLG / Dolby Vision HDR) now just works.
Previously the whole clip was rejected as "too blurry" — HDR decoded flat and
grey and tripped the blur gate. autosplat now detects HDR and tone-maps it to
SDR during extraction (stock ffmpeg, no zscale/libplacebo needed).Added
- HDR (HLG / Dolby Vision) → SDR auto tone-mapping. Toggle
preprocess.hdr_tonemap. - Adaptive blur rescue — keep the sharpest frames relative to the batch instead
of failing on soft/HDR footage. Togglepreprocess.blur_rescue.
Fixed
- Re-running
processon the same capture no longer mixes runs —run_colmap
wipes the stale COLMAP database first (quick-iter → quality-run was corrupted).
Changed
- Release app + DMG are Developer ID-signed and Apple-notarized.
Docs
- CAPTURE-GUIDE: HDR handling + scanning people (record SDR/"Normal", microSD
originals, several fast rings).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- HDR (HLG / Dolby Vision) → SDR auto tone-mapping. Toggle
-
released this
2026-05-29 20:47:01 +00:00 | 13 commits to main since this releaseMulti-video bisection-rescue
Auto-bisection now fires for multi-video captures — two independent drone flights of the same subject, or footage added later via
add-video. Previously only single-video captures could be rescued; a multi-video set that exhausted the matcher-swap retry just failed.How it works
Each source video is first probed whole (exhaustive matcher, full
target_frames). Flights that register on their own are kept as-is; only the failing flights are bisected, and all survivors recombine through the multi-video pipeline. A single bad flight poisoning the joint SfM model is now rescuable.If every flight registers alone but the set still won't co-register, the run stops fast with
bisection_no_culprit— a cross-video overlap problem that shorter clips can't fix — instead of pointlessly re-running the identical set.Also
probe_clipgained atarget_framesoverride (whole-video probes use the full budget, not the cheap sub-clip cap, to avoid false-failing a long flight). Single-video bisection is unchanged.- Forensic probe artefacts are namespaced per source video (
rescue/probes/v0_…,v1_…,v<N>_whole) so two flights never collide. - Fixed the SfM failure hint — auto-rescue already runs in the pipeline, so it no longer implies a manual
autosplat rescuestep.
See CHANGELOG and
docs/superpowers/specs/2026-05-29-multi-video-bisection-design.mdfor the full design.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
released this
2026-05-29 18:17:59 +00:00 | 20 commits to main since this releaseFixes the app not launching — it would bounce in the Dock with no window and need a force-quit.
A Finder/Dock launch gives the app a minimal system PATH that doesn't include Homebrew, so it couldn't find
ffmpeg/colmapeven when they were installed — and got stuck waiting for tools it could never detect. The app now adds the Homebrew locations to its PATH at startup, so it finds the tools and opens its window normally.Install reminder
Unsigned app — after dragging to Applications:
xattr -dr com.apple.quarantine /Applications/AutoSplat.appDownloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
released this
2026-05-29 17:17:24 +00:00 | 22 commits to main since this releaseBranding pass — the redesigned point-cloud marks are now used across the app.
Added
- Favicon + social card in the WebUI — the orb mark as favicon/apple-touch-icon, a
theme-color, and an Open Graph / Twitter card so shared links render a proper preview. - App icon —
AutoSplat.appnow shows the orb mark in the Dock and Finder (was a generic placeholder). - Reproducible brand-asset pipeline in
docs/brand+scripts/build_brand_assets.sh(generates the static SVGs/PNGs/.icns from the generative mark system).
Changed
- mypy strict added to the pre-push hooks so the type-check can't silently drift.
Install reminder
Unsigned app — after dragging to Applications:
xattr -dr com.apple.quarantine /Applications/AutoSplat.appDownloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Favicon + social card in the WebUI — the orb mark as favicon/apple-touch-icon, a
-
released this
2026-05-29 16:19:47 +00:00 | 25 commits to main since this releaseA quality pass on top of the failure-diagnostics work.
Added
blur_thresholdoverride on the New-capture form — an optional field lets you lower the blur threshold for a single run. When a capture fails with "all frames too blurry", you can retry with a lower threshold right there, no config-file editing.- Fast-fail on too-few frames — if fewer than 3 frames survive the blur filter (not just zero), the run fails immediately with a clear message instead of a cryptic COLMAP error.
Changed
- Strict type-check (mypy) is runnable and green again — it had silently drifted to 66 errors because it was missing from the dev environment. Fixed entirely with type annotations (no behaviour change), and
mypyis now part of the dev dependency group.
Install reminder
Unsigned app — after dragging to Applications:
xattr -dr com.apple.quarantine /Applications/AutoSplat.appDownloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.8.0 — Failure diagnostics Stable
released this
2026-05-29 15:45:03 +00:00 | 29 commits to main since this releaseFailed captures now tell you when they failed, why in plain language, and what to do so it doesn't recur — instead of a raw COLMAP stderr tail.
Added
- Failure classification (
failure.py): maps a failure to a human headline + actionable hint — too-blurry footage, COLMAP couldn't align the frames (low overlap / rotation-heavy →rescue), Brush OOM (lowerresolution_cap), missing source video, interrupted run, or a generic fallback. - Prominent failure panel on the capture detail page: ⚠ headline · when (stage + time) · the verbatim reason · 💡 what to do · Resume / jump-to-log.
- Failure headline on the captures list, so the cause is visible at a glance on every failed row.
Fixed
- Durable failed status: a WebUI job that failed before a restart used to revert to "idle". It now keeps its failed status + reason from
runs.jsonlacross restarts — which is what makes the panel appear for past failures.
Install reminder
Unsigned app — after dragging to Applications, clear quarantine once:
xattr -dr com.apple.quarantine /Applications/AutoSplat.appDownloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Failure classification (
-
released this
2026-05-29 15:19:32 +00:00 | 35 commits to main since this releaseTwo fixes on top of v1.7.1.
Blur fast-fail
If the blur filter rejects every extracted frame (too-soft footage), the run now fails immediately with a clear, actionable message — instead of proceeding into COLMAP and dying with a cryptic "No images with matches". The error tells you to use sharper video or lower
blur_threshold.Install (important)
The app is unsigned / not notarized, so macOS quarantines it and right-click → Open is unreliable (App Translocation still blocks the launch with a
-1712error). Clear the quarantine flag once after installing:xattr -dr com.apple.quarantine /Applications/AutoSplat.appThen it opens as a normal window. First run installs ffmpeg / COLMAP / Brush via Homebrew.
Supersedes v1.7.1.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v1.7.1 — Classic app window Stable
released this
2026-05-29 12:31:48 +00:00 | 38 commits to main since this releaseClassic app window. v1.7.0 launched as a menubar agent (no Dock icon, no window) — a double-click looked like nothing happened. v1.7.1 fixes that.
Double-click → a real AutoSplat window (WKWebView) opens with the WebUI inside, a Dock icon, and Cmd-Q to quit. No browser tab, no menubar item.
Install
- Download
AutoSplat.dmgbelow, open it, drag AutoSplat to Applications. - First launch: right-click → Open (unsigned — clears Gatekeeper once).
- First run installs ffmpeg / COLMAP / Brush via Homebrew in a Terminal, then the app window opens.
Unsigned / not notarized (no Developer ID yet); the build pipeline wires both as optional env-gated steps. Supersedes v1.7.0.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Download
-
v1.7.0 — AutoSplat.app (DMG) Stable
released this
2026-05-29 12:01:16 +00:00 | 39 commits to main since this releaseAutoSplat.app — autosplat now ships as a double-clickable macOS app.
The Python CLI + WebUI (FastAPI / cv2 / uvicorn) are frozen into
AutoSplat.appwith PyInstaller. The heavy external tools (ffmpeg, COLMAP, Brush) are installed at first run via Homebrew rather than bundled.Install
- Download
AutoSplat.dmgbelow, open it, drag AutoSplat to Applications. - First launch: right-click → Open (the app is unsigned — this clears Gatekeeper once).
- On first run it opens a Terminal and installs ffmpeg / COLMAP / Brush via Homebrew, then opens the WebUI. A menubar item keeps it running.
Unsigned / not notarized yet (no Developer ID). The build pipeline already wires signing + notarization as optional env-gated steps for when one exists.
Build it yourself
brew install create-dmg uv sync --group build ./scripts/build_app.sh # → dist/AutoSplat.dmgNotes
autosplat appruns the same launcher from a source checkout.- Verified: the frozen binary serves the WebUI end-to-end (healthz / dashboard / static / templates). Menubar + Gatekeeper + fresh-Mac first-run are human-verified.
- Full design:
docs/superpowers/specs/2026-05-29-dmg-app-design.md.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Download
-
released this
2026-05-29 10:27:14 +00:00 | 44 commits to main since this releaseLive Progress / Mission-Control — the WebUI no longer sits frozen during the long, silent stages.
A capture's progress is now published to a
progress.jsonsingle-source-of-truth and surfaced live: a moving percent bar, elapsed + ETA-remaining, a pulsing "updated Xs ago" health dot with a stall warning, and a stage-agnostic liveness pulse that also covers the silent COLMAP mapper. Real step/PSNR tiles appear when the plateau monitor is enabled.Honest about the data:
%/ETA are wall-time estimates; loss/iter-s/GPU/VRAM are not shown because Brush emits no per-step stdout and exposes no GPU telemetry — the old all-—placeholder card is gone.Highlights
progress.jsonSSOT — atomic write/read; the single channel between the running pipeline and any reader.- Live brush card — moving bar, elapsed/ETA, pulsing health dot + stall warning, real step/PSNR tiles when plateau is on, collapsible (state in
localStorage). - All-stages liveness pulse — "last activity Xs ago" from
pipeline.logmtime, with a "quiet for Xs" warning past 120s. Covers the silent COLMAP mapper. brush.stdout.log— every Brush stdout line teed to a dedicated, live-readable log.- Native Finder file-picker for the New-capture form (
POST /captures/pick-fileviaosascript— a browser file input can't hand the server an absolute path). - Train heartbeat log throttle tightened 300s → 30s; brush card gated to
stage == train.
378 tests passing. Full design in
docs/superpowers/specs/2026-05-29-live-progress-design.md.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads