Repository navigation
SplatWork 1.1.0
Install
Mac (Apple silicon, macOS 15 or later) — SplatWork-1.1.0-macOS-arm64.dmg: open it and drag SplatWork to Applications. This build is ad-hoc signed (not notarized): the first time, right-click the app → Open → Open, or run xattr -dr com.apple.quarantine "/Applications/SplatWork.app".
Linux GPU worker (NVIDIA) — SplatWork Node 1.3.16, SplatWorkNode-1.3.16-x86_64.flatpak:
flatpak install --user SplatWorkNode-1.3.16-x86_64.flatpak
On first start its setup assistant downloads PyTorch, CUDA and gsplat for your driver (about 3 GB). To get updates automatically instead, add the repository: flatpak install --user https://benevision.github.io/Gaussian-Vibe-Code/flatpak/splatworker.flatpakref.
iPhone (SplatWork Capture) — not included: iOS apps can't be installed from a download; build it from ios/ in Xcode.
Changes
- Mac: developer-build update channel (Settings > Developer) following a rolling "dev" pre-release built from main
- Self-updating apps: Mac updates from GitHub Releases, SplatWork Node 1.3.16 updates itself through Flatpak
- iPhone training memory: plan with headroom, smaller images when needed, refuse instead of being killed
- Prep window can be hidden while it works; toolbar progress button brings it back
- Use the SplatWork names in this branch's new strings (SplatWork, SplatWork Capture, SplatWork Node)
- Undo the SplatWork rename in this branch (main does it; reconciled on merge)
- iPhone makes splats on its own and offloads to Macs / PCs; Mac can act as a worker; rebrand to SplatWork
- Blocks: no empty blocks, no runaway splitting, no forced split for iPhones
- Trainer: fix Adam seed overflow that trapped on the iPhone (UInt32(k * 0x85EBCA6B) for k ≥ 2)
- Metal: say which buffer or pipeline failed (and why) instead of a bare trap
- Rebrand to SplatWork: SplatWork (Mac), SplatWork Capture (iPhone), SplatWork Node (Linux)
- Preparation never goes to a training-only worker (iPhone Compute); it runs on this Mac
- Device checkboxes always sit under their label (the row flipped between side-by-side and stacked as the note under the list appeared)
- iOS: keep the bundle id (com.gunntower.splatcapture), category and landscape orientations set in Xcode in project.yml
- Mac trainer: learned skybox (same model as the worker), loaded/saved with the PLY
- A job too big for its one device trains there in blocks that fit instead of being refused
- Compute devices as checkboxes: this Mac and each worker (PCs, iPhones)
- iOS: no Objective-C header copy step for SplatTrainKit (it failed under script sandboxing)
- iOS: set the development team in project.yml (regenerating the project had reset it)
- iOS: drop the increased-memory-limit entitlement (personal teams can't sign it); compile the whole shared Train folder
- Mac trainer: compact optimizer state (8/16-bit Adam), memory forecast per mode
- Camera solving ignores the sky: no keypoints on pixels the sky mask marks
- Viewer draws a scene's learned skybox behind the splats
- Sky as its own mask layer and a learned skybox at infinity (worker 1.3.15)
- iPhone as a training worker: Splat Capture's Compute screen serves the worker protocol for block training
- Worker 1.3.14: apply mask files when training (they were ignored); compact optimizer state
- Block-parallel training: per-block splat budgets, memory-aware assignment, reuse photos on the worker
- Check a training job fits a worker before sending it
- mac/scripts/update_local.sh: build and install the local app only while it is closed (staged otherwise); local builds are -dev
- Worker 1.3.13: training images no longer exhaust host memory on very large sets