Skip to content

Releases: sceneview/sceneview

v4.0.1

13 Apr 07:45

Choose a tag to compare

v4.0.0

12 Apr 22:06

Choose a tag to compare

What's Changed

Other Changes

  • fix(quality-gate): support pre-release versions + rename residual ARScene refs by @ThomasGorisse in #813
  • fix(gateway): hub-mcp KV handoff + docs stdio + landing tool count by @ThomasGorisse in #816
  • feat(telemetry): Cloudflare Worker for anonymous usage analytics by @ThomasGorisse in #815
  • fix(render-tests): share Engine per class to fix SwiftShader CI + AR exposure API by @ThomasGorisse in #814
  • fix(sceneview): propagate animated values back to Node transforms (#388) by @ThomasGorisse in #817

Full Changelog: v4.0.0-rc.1...v4.0.0

v4.0.0-rc.1 — Rerun.io integration

11 Apr 18:36

Choose a tag to compare

Pre-release

Release candidate for v4.0.0. The full SceneView ↔ Rerun.io integration plus the v4 gateway-proxied lite mode from 4.0.0-beta.1 ship together. Maven Central / Swift Package Manager artifacts are intentionally NOT built from this tag — promote to stable by tagging v4.0.0.

🧭 New: Rerun.io integration (5 phases)

The SceneView SDK now streams AR session data (camera pose, planes, point clouds, anchors, hit results) to a Rerun viewer for scrub-and-inspect debugging. A single Python sidecar (samples/android-demo/tools/rerun-bridge.py) handles both Android and iOS clients — same JSON-lines wire format, same archetype dispatch.

Phase 1 — rerun-3d-mcp@1.0.0 (npm, live)

A new MCP server that helps Claude generate SceneView ↔ Rerun integration code:

  • setup_rerun_project — Android / iOS / Web / Python project scaffolding
  • generate_ar_logger — Kotlin or Swift AR streaming helper
  • generate_python_sidecar — TCP → rerun-sdk bridge
  • embed_web_viewer — HTML + module-script embed snippets
  • explain_concept — rrd / timelines / entities / archetypes / transforms
npx rerun-3d-mcp

Phase 2 — Playground "AR Debug (Rerun)" example

New sample in the playground that embeds the official Rerun Web Viewer next to the SceneView canvas with per-platform code tabs (Android, iOS, Web, Flutter, React Native, Desktop, Claude).

Phase 3 — Android arsceneview.ar.rerun.RerunBridge

val bridge = rememberRerunBridge(
    host = "127.0.0.1",
    port = 9876,
    rateHz = 10,
    enabled = BuildConfig.DEBUG
)
ARSceneView(
    onSessionUpdated = { session, frame -> bridge.logFrame(session, frame) }
)
  • Non-blocking log* methods on a dedicated Dispatchers.IO scope
  • Channel.CONFLATED drop-on-backpressure — never blocks the render thread
  • Rate-limited (default 10 Hz, configurable)
  • Runtime setEnabled(false) kill switch for release builds
  • Zero new Gradle dependencies

Tests: 16 new unit tests (12 golden-JSON + 4 socket integration with a mock ServerSocket).

Phase 4 — android-demo "AR Debug (Rerun)" tile

New Samples tab entry with overlay showing live event counter + connection status + setup instructions. Ships samples/android-demo/tools/rerun-bridge.py for the dev machine.

Phase 5 — iOS SceneViewSwift.RerunBridge + new ARSceneView.onFrame hook

@StateObject private var bridge = RerunBridge(
    host: "192.168.1.42",  // your Mac's LAN IP
    port: 9876,
    rateHz: 10
)

var body: some View {
    ARSceneView()
        .onFrame { frame, _ in bridge.logFrame(frame) }
        .onAppear { bridge.connect() }
        .onDisappear { bridge.disconnect() }
}
  • Network.framework NWConnection on a dedicated utility queue
  • @Published eventCount for SwiftUI overlay bindings
  • Same JSON-lines wire format, byte-identical to the Kotlin bridge
  • New iOS demo RerunDebugDemo in samples/ios-demo

Cross-platform parity: 24 golden-string tests (12 per platform) with character-identical expected output. Any drift blows up on one or both sides at test time.

🎛 From v4.0.0-beta.1 — lite proxy routing

The sceneview-mcp client now routes Pro tools to the hosted gateway at sceneview-mcp.mcp-tools-lab.workers.dev/mcp:

  • Free tools execute locally (unchanged from 3.6.x)
  • Pro tools forward through the gateway with Bearer $SCENEVIEW_API_KEY
  • No API key → friendly upsell stub pointing at /pricing
  • HOSTED vs LITE mode detected at startup (stderr banner, silent via SCENEVIEW_MCP_QUIET=1)

🪢 hub-gateway scaffold

New Cloudflare Worker at hub-gateway/ that multiplexes 11 non-sceneview MCP libraries (35 tools) behind a single endpoint, with auth middleware and KV-backed sliding-window rate limiting ported from the primary gateway.

📦 Installation

// Android — NOT on Maven Central yet, build from source
// implementation("io.github.sceneview:sceneview:4.0.0-rc.1")
// implementation("io.github.sceneview:arsceneview:4.0.0-rc.1")
// iOS — NOT on SPM registry yet, pin to the tag manually
.package(url: "https://github.com/sceneview/SceneViewSwift.git", exact: "4.0.0-rc.1")
# MCP — LIVE on npm
npx sceneview-mcp@next        # v4.0.0-rc.1 (this release)
npx sceneview-mcp@latest      # v3.6.4 (current stable, unchanged)
npx sceneview-mcp@beta        # v4.0.0-beta.1 (previous RC)
npx rerun-3d-mcp              # v1.0.0 (new, LIVE)

⚠️ RC status — what's NOT automated

  • Maven Central publish (Android sceneview:4.0.0-rc.1) — not built from this tag
  • Swift Package Manager — consumers need to pin to the tag manually
  • App Store / Play Store — the demo apps shipped via normal store auto-deploy on the main push

Promote to stable by creating a v4.0.0 annotated tag. Only strict-semver tags v[0-9]+.[0-9]+.[0-9]+ trigger the full release workflow.

🧪 Validation

  • ./gradlew :arsceneview:compileDebugKotlin :arsceneview:testDebugUnitTest — ✓ 16/16 new Rerun tests
  • ./gradlew :samples:android-demo:assembleDebug — ✓
  • swift build --package-path SceneViewSwift — ✓
  • swift test --package-path SceneViewSwift --filter Rerun* — ✓ 12/12
  • xcodebuild -project samples/ios-demo/SceneViewDemo.xcodeproj -scheme SceneViewDemo -destination 'generic/platform=iOS Simulator' — ✓
  • cd mcp/packages/rerun && npm test — ✓ 73/73

🤖 Generated with Claude Code

v3.6.2 — Cross-Platform Parity + Render Testing

07 Apr 22:22

Choose a tag to compare

What's Changed

Dependencies

  • chore(ci): bump gradle/actions from 5 to 6 by @dependabot[bot] in #781
  • chore(ci): bump actions/setup-node from 4 to 6 by @dependabot[bot] in #783
  • chore(ci): bump actions/stale from 9 to 10 by @dependabot[bot] in #784
  • chore(deps): bump org.jetbrains.dokka from 2.1.0 to 2.2.0 by @dependabot[bot] in #787
  • chore(deps): bump androidx.compose.material3:material3 from 1.5.0-alpha15 to 1.5.0-alpha16 by @dependabot[bot] in #786
  • chore(deps): bump dev.romainguy:kotlin-math from 1.6.0 to 1.8.0 by @dependabot[bot] in #788

Other Changes

New Contributors

Full Changelog: v3.6.1...v3.6.2

What's Changed

Dependencies

  • chore(ci): bump gradle/actions from 5 to 6 by @dependabot[bot] in #781
  • chore(ci): bump actions/setup-node from 4 to 6 by @dependabot[bot] in #783
  • chore(ci): bump actions/stale from 9 to 10 by @dependabot[bot] in #784
  • chore(deps): bump org.jetbrains.dokka from 2.1.0 to 2.2.0 by @dependabot[bot] in #787
  • chore(deps): bump androidx.compose.material3:material3 from 1.5.0-alpha15 to 1.5.0-alpha16 by @dependabot[bot] in #786
  • chore(deps): bump dev.romainguy:kotlin-math from 1.6.0 to 1.8.0 by @dependabot[bot] in #788

Other Changes

New Contributors

Full Changelog: v3.6.1...v3.6.2

What's Changed

Dependencies

  • chore(ci): bump gradle/actions from 5 to 6 by @dependabot[bot] in #781
  • chore(ci): bump actions/setup-node from 4 to 6 by @dependabot[bot] in #783
  • chore(ci): bump actions/stale from 9 to 10 by @dependabot[bot] in #784
  • chore(deps): bump org.jetbrains.dokka from 2.1.0 to 2.2.0 by @dependabot[bot] in #787
  • chore(deps): bump androidx.compose.material3:material3 from 1.5.0-alpha15 to 1.5.0-alpha16 by @dependabot[bot] in #786
  • chore(deps): bump dev.romainguy:kotlin-math from 1.6.0 to 1.8.0 by @dependabot[bot] in #788

Other Changes

New Contributors

Full Changelog: v3.6.1...v3.6.2

What's Changed

Dependencies

  • chore(ci): bump gradle/actions from 5 to 6 by @dependabot[bot] in #781
  • chore(ci): bump actions/setup-node from 4 to 6 by @dependabot[bot] in #783
  • chore(ci): bump actions/stale from 9 to 10 by @dependabot[bot] in #784
  • chore(deps): bump org.jetbrains.dokka from 2.1.0 to 2.2.0 by @dependabot[bot] in #787
  • chore(deps): bump androidx.compose.material3:material3 from 1.5.0-alpha15 to 1.5.0-alpha16 by @dependabot[bot] in #786
  • chore(deps): bump dev.romainguy:kotlin-math from 1.6.0 to 1.8.0 by @dependabot[bot] in #788

Other Changes

New Contributors

Full Changelog: v3.6.1...v3.6.2

What's Changed

Dependencies

  • chore(ci): bump gradle/actions from 5 to 6 by @dependabot[bot] in #781
  • chore(ci): bump actions/setup-node from 4 to 6 by @dependabot[bot] in #783
  • chore(ci): bump actions/stale from 9 to 10 by @dependabot[bot] in #784
  • chore(deps): bump org.jetbrains.dokka from 2.1.0 to 2.2.0 by @dependabot[bot] in #787
  • chore(deps): bump androidx.compose.material3:material3 from 1.5.0-alpha15 to 1.5.0-alpha16 by @dependabot[bot] in #786
  • chore(deps): bump dev.romainguy:kotlin-math from 1.6.0 to 1.8.0 by @dependabot[bot] in #788

Other Changes

New Contributors

Full Changelog: v3.6.1...v3.6.2

v3.6.1 — Architecture Refactoring + Quality Improvements

03 Apr 08:34

Choose a tag to compare

What's New in v3.6.1

Architecture

  • Extract SceneRenderer — shared render loop between SceneView and ARSceneView
  • Decompose Node god class into NodeGestureDelegate, NodeAnimationDelegate, NodeState
  • Extract ARPermissionHandler interface (testable without Activity)
  • Fix ModelLoader.releaseSourceData() memory leak
  • Clean legacy Java collision code

Quality

  • 3,200+ tests across all platforms (Android JVM, KMP, Swift, MCP)
    • +175 JVM unit tests for sceneview module
    • +15 JVM unit tests for arsceneview module
    • +63 KMP tests for sceneview-core
    • +18 Swift tests for SceneViewSwift (ShapeNode)
    • Fix 8 MCP test regressions
  • Add pre-push quality gate script
  • Full stability audit: all platforms PASS

Demo Apps

  • Rebrand to "3D & AR Explorer" (iOS + Android)
  • iOS: Add model gallery, favorites, share, categorized browsing
  • Android: Material 3 Expressive rewrite, 4 tabs, 40 models
  • Fix Play Store build (duplicate assets in asset pack)
  • Fix App Store build (private init access level)
  • Fix AR camera tone mapper (rememberViewrememberARView)

Website

  • Redesign 8 sections on homepage
  • Rewrite Showcase page from scratch
  • Playground: 7 platform tabs, camera manipulator, Open in Claude
  • Playground: geometry primitives preview, AR placeholders
  • Fix Docs 404 (redirect page)
  • Auto-deploy GitHub Pages workflow

Cross-Platform

  • iOS: Add ShapeNode (23/24 Android parity)
  • iOS: Fix GeometryMaterial.custom(), ViewNode platform guard
  • Web: Fix SCENEVIEW_VERSION (1.3.0 → 3.6.0)
  • TV: Fix missing assets (would crash at runtime)
  • MCP: Align version 3.5.5 → 3.6.0
  • Flutter + React Native: Prepare for publication
  • CI: Web builds now blocking, Gradle verification added

Install

```kotlin
// Android 3D
implementation("io.github.sceneview:sceneview:3.6.1")

// Android AR
implementation("io.github.sceneview:arsceneview:3.6.1")
```

```swift
// iOS / macOS / visionOS (Swift Package Manager)
.package(url: "https://github.com/sceneview/SceneViewSwift", from: "3.6.1")
```


Full changelog: CHANGELOG.md

What's Changed

Dependencies

  • chore(deps): bump androidx.test:runner from 1.6.2 to 1.7.0 by @dependabot[bot] in #770
  • chore(deps): bump media3 from 1.9.2 to 1.10.0 by @dependabot[bot] in #769
  • chore(deps): bump androidx.tv:tv-foundation from 1.0.0-alpha11 to 1.0.0-beta01 by @dependabot[bot] in #772
  • chore(deps): bump androidx.compose:compose-bom from 2025.06.00 to 2025.12.01 by @dependabot[bot] in #771
  • chore(deps): bump kotlin from 2.1.21 to 2.3.20 by @dependabot[bot] in #768

Other Changes

Full Changelog: v3.6.0...v3.6.1

v3.6.0 — API Simplification

30 Mar 17:56

Choose a tag to compare

API Simplification Release

SceneView 3.6.0 simplifies the API surface so AI assistants and developers can write correct code on the first try.

Android (Jetpack Compose)

  • SecondaryCameraCameraNode composable renamed for clarity (old name still works via @Deprecated)
  • Uniform transforms — all geometry nodes (CubeNode, SphereNode, CylinderNode, PlaneNode, LineNode, PathNode) now accept position, rotation, scale
  • LightNode paramsintensity, direction, position as direct parameters instead of dual apply/nodeApply lambdas
  • VideoNode(videoPath:) — convenience overload that handles MediaPlayer lifecycle automatically
  • ShapeNode and PhysicsNode — new composables directly in the Scene { } DSL

Apple (SwiftUI + RealityKit)

  • Declarative SceneView with @NodeBuilder — matches Android's Scene { } pattern
  • Per-entity gestures — fluent API: entity.onTap { }.onDrag { }.onScale { }.onRotate { }
  • NodeGesture auto-cleanup — weak entity references with automatic stale handler purging

Infrastructure

  • Play Asset Delivery — demo app assets moved to install-time asset pack (fixes 200MB limit)
  • GitHub Actions — bumped to latest versions (checkout v6, cache v5, upload-artifact v7, etc.)

Migration

All deprecated APIs use @Deprecated(replaceWith = ...) — the Kotlin compiler auto-suggests fixes via IDE quick actions. See the Migration Guide.

Install

// Android
implementation("io.github.sceneview:sceneview:3.6.0")
implementation("io.github.sceneview:arsceneview:3.6.0")
// Apple (SPM)
.package(url: "https://github.com/sceneview/sceneview-swift.git", from: "3.6.0")

Full Changelog: v3.5.2...v3.6.0

v3.5.2

29 Mar 22:57

Choose a tag to compare

Full Changelog: v3.5.1...v3.5.2

v3.5.1 — macOS support, environment picker, MCP 3.5.3

29 Mar 21:25

Choose a tag to compare

Highlights

  • Native macOS support in SceneViewSwift + demo app (App Store submission pending review)
  • Environment picker — 6 HDR presets (Studio, Outdoor, Sunset, Night, Warm, Autumn) in iOS demo
  • MCP 3.5.3 published to npm with correct dependency references (1204 tests)
  • CI/CD extended with macOS App Store deploy job

Apple platforms

  • macOS compilation support across all SceneViewSwift source files
  • macOS app icons at proper sizes (16px to 1024px)
  • Swift 6 strict concurrency fix (@MainActor on HapticManager)
  • iOS + macOS both submitted to App Store (pending review)

MCP Server

  • All dependency references updated from 3.4.7 to 3.5.1
  • Published as sceneview-mcp@3.5.3 on npm
  • 42 test files, 1204 tests passing

Documentation

  • ViewNode, SceneSnapshot, SceneEnvironment.allPresets added to llms.txt
  • Rebuilt docs site with zero stale version references
  • CDN versions updated in README and website

CI/CD

  • Extended app-store.yml with parallel iOS + macOS deploy jobs
  • Fixed TestFlight deploy failure (Swift 6 concurrency)
  • All 4 CI workflows green

Install

Android:

implementation("io.github.sceneview:sceneview:3.5.1")
implementation("io.github.sceneview:arsceneview:3.5.1")

Apple (iOS/macOS/visionOS):

.package(url: "https://github.com/sceneview/sceneview-swift.git", from: "3.5.1")

MCP:

{ "mcpServers": { "sceneview": { "command": "npx", "args": ["-y", "sceneview-mcp"] } } }

v3.5.0

29 Mar 00:52

Choose a tag to compare

SceneView v3.5.0

3D Assets CDN

29 Mar 18:36

Choose a tag to compare

3D Assets CDN Pre-release
Pre-release

Large 3D model assets hosted on GitHub Releases for URL-based loading.

These assets are used by the SceneView demo apps and can be loaded at runtime via:

  • Android: rememberModelInstance(modelLoader, "https://github.com/sceneview/sceneview/releases/download/assets-v1/model.glb")
  • iOS: ModelNode.load(from: URL(string: "https://github.com/sceneview/sceneview/releases/download/assets-v1/model.usdz")!)

Models

Model GLB USDZ License
Earthquake California 39MB 24MB CC-BY-4.0
Nike Air Jordan 30MB - CC-BY-4.0
Porsche 911 Turbo 21MB - CC-BY-4.0