Skip to content

SplatWork 1.1.0

Choose a tag to compare

@github-actions github-actions released this 08 Nov 13:04
· 139 commits to main since this release

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