-
v1.1.2 — Hotfix Release Stable
released this
2026-05-20 18:46:39 +00:00 | 109 commits to main since this releaseHotfix 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 —
JobStatenow carriesstarted_at_walltimeandfinished_at_walltimeas ISO-Z strings (monotonic siblings stay for duration math).state.pygrew an explicitdone-branch so WebUI-completed jobs surface theirfinished_atinstead of falling through to the ply-not-None path.list_capturesnow sorts byfinished_at DESCwith 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 becausecapture_badgehad no branches for them. New siblingjob_badgemacro purpose-built forJobState: explicit branches for queued, running, done, failed, cancelled. New CSS class.s-cancelledkeeps cancelled runs visually distinct.capture_badgestays unchanged — it remains the right macro forCaptureInfo.
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 nestedwith-statements collapsed via PEP 617, 2× B904raise typer.Exit(...) from Noneincli.py.
Design Notes
job_badgevscapture_badgeseparation — the two macros now own different status enums.capture_badgeknows pipeline stages (preflight → export) and the CaptureInfo lifecycle.job_badgeknows the JobRunner lifecycle (queued/running/done/failed/cancelled).- Wall-clock timestamps coexist with monotonic —
JobStatekeeps bothstarted_at/finished_at(monotonicfloat, for duration math) andstarted_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
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- [SF-G3-1] + [SF-NEW-3] Wall-clock job timestamps + within-day sort —
-
v1.1.1 — Hotfix Release Stable
released this
2026-05-17 22:13:57 +00:00 | 116 commits to main since this releaseHotfix 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_captureoverlay the in-memoryJobRunnerstatus for WebUI-button-triggered jobs. - Part 2 —
run_pipeline()reports status into an optionalWatcherState(begin / update_stage / mark_done), keyed by the capture directory, for the CLI-direct and watch-daemon paths.
- Part 1 —
- [SF-PIPE-1] Embedded SuperSplat viewer URL-loading — the PLY route moved from
/captures/{id}/plyto/captures/{id}/scene.ply. SuperSplat detects file type from URL extension, so it now recognizes the.plysuffix. Bonus: browser downloads are namedscene.ply. - [SF-G3-3] Recent-jobs single-run-per-capture —
JobRunnernow keeps an in-memory_historylist;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 .vgetsmin-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, itsoverflow: hiddenpropagated 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:1subtree had no parent height, so the SuperSplat iframe collapsed to a strip.
Changed (Internal)
- The CLI
processcommand broadened its exception handling fromexcept RuntimeErrortoexcept Exception— domain errors (QualityGateFailure,BrushOOMError) now exit cleanly viaEXIT_PIPELINE_FAILUREand 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.jsonlappend-log) shipped in v1.2.0. WatcherState.in_progressis single-slot — single-user Mac tool; use one trigger path at a time.- PLY URL renamed from
/captures/{id}/plyto/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
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- [SF-G2-9] Backend status-write sync — the WebUI now tracks runs from every trigger path (CLI-direct
-
released this
2026-05-17 16:37:00 +00:00 | 123 commits to main since this releaseKuro Signal Protocol WebUI Restyle
Full visual restyle of the WebUI. All seven browser surfaces migrated to the Kuro Signal Protocol design system. No pipeline behaviour changes — the capture/train/export flow is byte-identical to v1.0.1.
Added
- Kuro Signal Protocol WebUI restyle — all 7 surfaces migrated to KSP design tokens (
tokens.css+autosplat.css). Local-first, no CDN dependencies. - Theme toggle (dark/light) with anti-flash
localStoragepersistence on<html>via thedata-themeattribute. Default dark. - Pre-rendered icon toggle for the theme button (sun/moon SVG with label).
- Captures-list HTMX polling every 3 s (the list was static before).
- Capture-detail two-column layout with a
stage_timelinemacro using theSTAGE_MAPbackend→mockup-slot mapping (6-slot pipeline visualization). - Brush-metrics partial — 8-tile card with 3 s HTMX polling.
- Viewer page with sidebar-collapse + CSS-only fullscreen toggle + Esc-key + GUI close-button. Three-state fallback (SuperSplat+PLY / PLY-only / no-PLY).
- Jobs page Active + Recent sections with 2 s HTMX polling.
- Source page KSP-styled AGPL §13 compliance card.
- WebUI smoke-test suite — 10 HTTP-integration tests covering all 7 surfaces, static assets, and partial routes.
- Vendored HTMX (
/static/js/htmx.min.js, htmx@1.9.12, BSD-2) — eliminates the CDN SRI-mismatch class of failure. - Latent features (no UI exposure, console-accessible): HTMX polling annotation overlay and aspect-subthemes gunshi/kantoku/sensei (CSS tokens, default
shugohardcoded).
Changed
static/style.cssremoved in favour ofstatic/css/tokens.css+static/css/autosplat.css.- All page templates restructured with proper
as-poll-region(HTMX outerHTML-swap target, no padding) vsas-main-inner(layout-padding wrapper) differentiation. - Pipeline live-pip text "chamber quiet" → "idle" (less lore, more clarity).
Known Issues at release (resolved in v1.1.1)
- Backend status-write sync (
SF-G2-9) - SuperSplat viewer URL-loading (
SF-PIPE-1) - Recent-jobs single-run-per-capture (
SF-G3-3)
All three were WebUI-display-only — the underlying pipeline ran correctly in every case.
Tests
195 unit tests (193 passed, 2 opt-in E2E skipped) — +10 over v1.0.1 from the new WebUI smoke-test suite.
For the full changelog see
CHANGELOG.md.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Kuro Signal Protocol WebUI restyle — all 7 surfaces migrated to KSP design tokens (
-
v1.0.1 — Docs Sync Patch Stable
released this
2026-05-16 08:17:51 +00:00 | 139 commits to main since this releaseDocumentation-only patch release. Brings README + docs/ in sync with the v1.0.0 WebUI release state.
What changed
- README.md — status badge updated; phase table now includes Phase 10 WebUI row; quick start covers
autosplat webui; CLI section has WebUI subsection - docs/GETTING-STARTED.md — added "Option B: Use the WebUI" walkthrough
- docs/WORKFLOWS.md — new "Web-UI control" section (dashboard, trigger, cancel, SuperSplat embed, LAN access)
- docs/ARCHITECTURE.md — "future web UI" reference updated to implemented Phase 10 module; WebUI module section added
- docs/PHASE-10-WEBUI.md — new plan-style snapshot documenting Phase 10
No code changes. v1.0.0 is fully usable; v1.0.1 just makes the docs match.
Install / upgrade
uv tool install autosplat # first install uv tool upgrade autosplat # upgrade from v1.0.0Full changelog: CHANGELOG.md
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- README.md — status badge updated; phase table now includes Phase 10 WebUI row; quick start covers
-
v1.0.0 — WebUI Release Stable
released this
2026-05-16 07:09:39 +00:00 | 140 commits to main since this releaseFull browser-based control interface for the autosplat pipeline.
What's new
autosplat webui --port 8080— starts FastAPI + HTMX + Jinja2 web interface- Dashboard — live queue + recent captures (HTMX auto-refresh)
- Capture detail — stage timeline, PLY info, process/cancel/retry buttons
- SuperSplat embed — iframe viewer with local PLY streaming
- Job runner — async background executor with cancel support
- AGPL §13 —
/sourceroute + footer on every page → Codeberg source
Install / upgrade
uv tool install autosplat # first install uv tool upgrade autosplat # upgrade from v0.9.0Test it
autosplat webui --port 8080 # → open http://127.0.0.1:8080Full changelog
See CHANGELOG.md for complete details including pre-1.0 polish commits.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
released this
2026-05-15 18:35:15 +00:00 | 150 commits to main since this releaseFirst public release of video-to-3d-gaussian-splat — a local 3D Gaussian-Splat pipeline for Mac Silicon. Pre-1.0, CLI-only. WebUI as v1.0.0.
Added — Phases 0–9.7 (complete scope)
- Phase 0 — Manual baseline: first end-to-end run establishing the full pipeline manually (ffmpeg → COLMAP → Brush → PLY). Calibration data for blur threshold, SfM parameters, and training steps.
- Phase 1 — CLI MVP:
autosplat process <video>runs the complete pipeline in one command. 15 Python modules undersrc/autosplat/. - Phase 2 — Watch-folder daemon:
autosplat watch <inbox>with persistentstate.json, atomic queue operations, crash-recovery on restart. - Phase 3 — Quality-gate + adaptive retry: gate before Brush training checks minimum camera count and point density. Automatic retry with
exhaustiveCOLMAP matcher hint on first failure. - Phase 4 — Obsidian capture-note auto-generation: opt-in via
[obsidian].enabled = true. Writes structured frontmatter note per capture. Preserves user-added content via marker-based tail split. - Phase 5 — Compress stage:
autosplat compress <ply>, SOG + SPZ + ksplat output viasplat-transformnpx backend. Real-world compression ratios: 82–91% size reduction. - Phase 6 — Spec-mandate sweep: preflight checks for all binary deps, OOM retry logic, skipped-frames guard, PLY min-size gate. Closes §9.2 + §5 of spec.
- Phase 7 — Pipeline visibility: Rich progress bar with wall-time-based ETA during Brush training.
autosplat statustable for queue + history. - Phase 8 — Obsidian polish: vault-agnostic config defaults, user frontmatter key preservation across pipeline re-runs.
- Phase 9 — Local SuperSplat auto-open: starts local SuperSplat static server + PLY HTTP server in parallel, auto-opens browser after training. CORS fix (Phase 9.6) discovered via manual smoke run — browser blocked cross-origin PLY fetch.
- Phase 9.7 — splat CLI real executable:
scripts/install_splat.shinstalls~/.local/bin/splatas a real Bash binary with subcommand-aware caffeinate wrap. Enablesnohup splat watch, tmux usage, background process management.
Tests
~175 unit tests across 15 test modules. 2 opt-in E2E tests (
AUTOSPLAT_E2E=1,AUTOSPLAT_COMPRESS_E2E=1). All unit tests pass in ~3s on Apple Silicon.Validated
8/11 real-world captures trained successfully in overnight run 2026-05-15. Failure modes are deterministic and structured — COLMAP SfM failure, quality-gate rejection, and compress-backend unavailability all produce explicit events and are visible via
autosplat status. No silent failures.Build Methodology
Pipeline built phase by phase using a Recon → Plan → Sub-Phase pattern. Each phase has a
docs/PHASE-N-RECON.md(problem space mapping) anddocs/PHASE-N-PLAN.md(acceptance criteria before code). Phases tagged in git on completion. Part of ongoing research into trace-based emergent coordination.License
Switched from MIT to AGPL-3.0-or-later (code) + CC BY-SA 4.0 (documentation). See LICENSE and LICENSE-DOCS.
Release Polish (Burst C.1)
- PII strip:
/Users/johannes/paths replaced with~/(docs) andPath.home()(Python) - examples/ generalized: location-specific capture names replaced with generic identifiers
*.sogadded to.gitignore- pyproject.toml: version bump 0.1.0 → 0.9.0, author identity updated, AGPL-3.0 license-id set
- Issue templates added (
.forgejo/issue_template/)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads