Skip to content

feat: release EasySplat 0.2.0 - #2

Closed
dud8 wants to merge 211 commits into
mainfrom
assist/easysplat-public-beta
Closed

feat: release EasySplat 0.2.0#2
dud8 wants to merge 211 commits into
mainfrom
assist/easysplat-public-beta

Conversation

@dud8

@dud8 dud8 commented Jul 12, 2026

Copy link
Copy Markdown
Owner

EasySplat 0.2.0

This prepares the first stable EasySplat release for Apple Silicon Macs running macOS 15 or later.

EasySplat turns video, photo folders, or mixed input into a local 3D Gaussian splat. The shipping route uses capture-aware COLMAP reconstruction, FAISS matching, bounded refinement, confidence-gated upright alignment, native Metal training, and validated PLY output. Source media stays on the Mac. There is no cloud processing, telemetry, analytics, advertising SDK, or crash SDK.

Product scope

  • A calm default flow with progressive controls for capture path, detail, camera grouping, lens projection, input order, resource use, and photo selection.
  • Capture-aware behavior for object orbits, walkthroughs, large-area routes, segmented clips, mixed input, and unordered photos.
  • Transactional reconstruction recovery, real residual validation, atomic trainer checkpoints, safe cancellation/resume, and no dropped raster intersections in published output.
  • Confidence-gated canonical orientation and a scene-scale-aware Metal viewer with fit, reset, orbit, pan, pinch, pointer-anchored zoom, adaptive clipping, and keyboard access.
  • Validated PLY export, system Share, notes, diagnostics, project search/filtering, and Finder reveal.
  • Signed capability-scoped toolchain installation with HTTPS enforcement, authenticated archives, atomic promotion, cached offline reuse, and rollback.

The release is intentionally focused: static scenes, one reconstruction at a time, PLY export, macOS 15+, and Apple Silicon. The project format is clean-slate; incompatible old bundles remain untouched and are omitted from the library.

Removed bloat

VGGT, FastVGGT, Brush, Python msplat, MapAnything, standalone GLOMAP, obsolete mapper aliases, legacy migration code, share metrics/events, generated captions, fleet dashboards, ornamental card UI, and user-facing backend controls are gone. MetalSplatter and stripped native COLMAP remain because they serve the production viewer and correctness path.

Final-source verification

  • Swift app/core: 2,222 tests passed.
  • ManifestTool: 64 tests passed.
  • Retained Python bridge: 45 tests passed.
  • Benchmark/repository contracts: 636 tests passed with one intentional skip, plus ten structural tests.
  • A real packaged-verifier run completed an offline 12-view reconstruction and native Metal training: 12/12 views registered, 7,000 iterations, zero dropped intersections, signed dataset replay accepted, and a validated 378,527-vertex PLY published.
  • Workflow contracts, Actionlint, ShellCheck, Gitleaks, shell syntax, and whitespace checks passed.
  • The exact PR head must pass every hosted Tests, Security, and CodeQL check before merge.

Native msplat has also passed clean-source raster, gradient, optimizer, checkpoint, cancellation, allocation, queued-timing, prefix, radix, PLY, and CLI contracts. Release coverage includes packaged-app bootstrap, DMG construction, signing/notarization fixtures, transactional publication, hostile archives, failure injection, provenance, licenses, SBOM generation, and signed manifests.

Installation and release boundary

The README documents source builds and the normal signed-DMG flow. EasySplat-0.2.0.dmg must not be advertised as available until PR #2 is human-reviewed and merged, the exact merged commit is tagged, the signed toolchain closure is live, and the release workflow has produced a Developer ID-signed, notarized, stapled, Gatekeeper-verified app. Release collateral includes SHA-256 checksums, dSYM symbols, an SPDX SBOM, licenses, provenance, and signed component manifests.

The remaining publication boundary is operational: protected release environments/runners and the separate schema-v2 toolchain signing authority must complete against merged main. This PR does not publish a tag, merge itself, or weaken that trust boundary.

Known limits

  • Moving subjects, water, foliage, reflections, large exposure changes, and low texture can leave gaps or artifacts; dynamic/4D reconstruction is out of scope.
  • Successful real-world validation of large unordered photo folders is thinner than continuous-video validation. Disconnected input fails honestly instead of inventing one coordinate frame.
  • The protected 26-scene rendering/LPIPS and distributed stability corpus is not represented as completed public evidence.
  • The Mac App Store variant follows the direct GitHub release and is not part of this PR.

@dud8
dud8 marked this pull request as draft July 12, 2026 17:24
@dud8 dud8 changed the title feat: prepare EasySplat for public beta feat: release EasySplat 0.2.0 Jul 21, 2026
@github-advanced-security

Copy link
Copy Markdown

You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool.

What Enabling Code Scanning Means:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

Comment thread scripts/toolchain/tests/test_openimageio_builder.py Fixed
Comment thread scripts/toolchain/tests/test_openimageio_builder.py Fixed
Comment thread scripts/toolchain/tests/test_colmap_support_builder.py Fixed
Comment thread scripts/toolchain/tests/test_colmap_support_builder.py Fixed
Comment thread scripts/toolchain/tests/test_colmap_support_builder.py Fixed
Comment thread scripts/benchmark/measurement_runner_closure.py Fixed
Comment thread scripts/benchmark/measurement_runner_closure.py Fixed
Comment thread scripts/benchmark/measurement_runner_closure.py Fixed
Comment thread scripts/benchmark/measurement_runner_closure.py Fixed
Comment thread scripts/benchmark/measurement_runner_closure.py Fixed
@dud8
dud8 marked this pull request as ready for review July 21, 2026 23:36
@dud8 dud8 closed this Jul 22, 2026
@dud8 dud8 reopened this Jul 22, 2026
@dud8
dud8 force-pushed the assist/easysplat-public-beta branch from 298d078 to 0bdaf43 Compare July 22, 2026 06:44
@dud8

dud8 commented Jul 22, 2026

Copy link
Copy Markdown
Owner Author

Squashed into main as bd7cc75 (feat: release EasySplat 0.2.0). Closing.

@dud8 dud8 closed this Jul 22, 2026
@dud8
dud8 deleted the assist/easysplat-public-beta branch July 25, 2026 01:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants