Repository navigation
Changelog
All notable changes to Three-Live will be documented in this file.
The format is based on Keep a Changelog.
[Unreleased]
[1.3.0] - 2026-11-05 (Beta)
Added
- Graduated from Developer Preview (Alpha) to Beta: Stabilized the core
TypeScript, Rust, Swift/RealityKit, and Kotlin/Android XR APIs across
three-live,xr-live, andthree-live-compiler. - Zero-Install
npx three-live-cliLauncher (bin/three-live-cli.js):
Addedbin.three-live-clitopackage.jsonso AI coding agents and web
developers can runnpx three-live-cli validate | render | simwithout a
local Rust toolchain. Automatically locates local release/debug builds or
downloads and caches the platform binary from GitHub Releases into
~/.cache/three-live/v<version>/. - Cross-Platform Visual Regression Golden Baselines: Added perceptual RMSE
and SSIM (compareRmse,compareSsimincompiler/src/rasterizer.rs) and
deterministic golden assertions acrossOrbital Spheres,Quantum Core,
Architecture,CAD Flange(THREE.CSG), andGame Simulatorso Web,
Android, and iOS presets stay pixel-aligned in CI. - Canonical
userDataTrait Schema & JSON Schema Export (xr-trait-schema):
Added a single typed validator (validateTraits) and JSON Schema 2020-12
generator (generateTraitJsonSchema,three-live-cli schema) shared across
Web (xr-live), Rust (compiler/src/linter.rs), Android (XRSceneLoader),
and iOS (RealityKitSceneLoader), with typo suggestions (collectable->
collectible,anchor->anchor,exploded->explode) and dynamic
node-name reference checks (patrolTargets,followTarget,fleeTarget). - WebGL Context Loss Recovery & GPU Resource Disposal:
- Added automatic
webglcontextlost/webglcontextrestoredhandling on
WebGLRendererand<three-live>(pausing animation loops on loss,
invalidating stale GPU state maps, and recompiling shaders/programs,
textures, VAOs/VBOs, shadows, and post-processing targets on restore
while dispatchingcontextlost/contextrestoredCustomEvents). - Added
renderer.disposeScene(root)andrenderer.getMemoryStats()for
deterministic GPU memory reclamation and leak auditing across repeated
<three-live>andThreeLiveStudiomount/unmount cycles.
- Added automatic
- Native Rust Acceleration for Primitives &
THREE.CSG: Accelerated
PlaneGeometry,TorusGeometry, andTHREE.CSG(subtract,union,
intersect) in the Rust/Boa compiler (compiler/src/primitives.rsand
compiler/src/csg.rs), achieving up to 17.5x faster compilation on
boolean-heavy CAD scenes (39.2 ms->2.24 ms).
[1.2.4] - 2026-11-05
Added
- AI-First Testing & Verification Toolkit (
three-live-cli):three-live-cli validate --json: Headless JS scene execution with
structuredTL1xx–TL4xxdiagnostics (TL101syntax error,TL102
unknownTHREE.*class with typo suggestions,TL103runtime error,
TL104no visible geometry,TL105250 ms execution ceiling,TL201
unknownxr-live-simtrait,TL202missingPlayercharacter,
TL301–TL307spatial/camera/overlap/floor linter warnings).three-live-cli render: Pure-Rust headless software rasterizer
producing 4-up contact sheets (--view=quad --grid --annotationswith
Camera, Front +Z, Top +Y with frustum cone, and Iso 45° panels),
time-stepped horizontal filmstrips (--frames=N --duration=T),
interactive trigger verification (--trigger-select=<node>), and
animated GIFs (--output=out.gif).three-live-cli sim: Headlessxr-live-simphysics, AI steering, and
CAD exploded-view step runner (--actions,--snapshots,--json)
with full event trace logging (onCollect,onDamage,onScoreChange,
onWin,onLose).
Fixed
- Consistent counter-clockwise rotation (
Orbital Spheres): Updated
Orbital Spheresorbit speed to-0.4across Web, iOS, and Android presets
so all demo scenes rotate counter-clockwise around+Y. - Headless
THREE.CSG& TypedArray performance in Boa: Optimized
ShapeGeometry,ExtrudeGeometry,TextGeometry, and chained
THREE.CSG.subtractoperations with direct typed-array population, YZ beam
culling, and polygon caching.
[1.2.3] - 2026-11-04
Fixed
EXT_meshopt_compressionis now spec-compliant on Web, Android, and
iOS: vertex codec v0/v1, index buffer and index sequence codecs, and the
OCTAHEDRAL/QUATERNION/EXPONENTIAL/COLORfilters are byte-exact
with meshoptimizer, sogltfpackfiles load. Adds
KHR_meshopt_compression,KHR_mesh_quantizationattribute dequantization,
UNSIGNED_BYTEindices, andKHR_texture_transformbaking for
TEXCOORD_0.encodeMeshoptBuffernow emits spec streams.- IK joints rotate: web IK runs on the glTF node graph (mesh-less
Group
joints resolve and child meshes follow), and Web / Android / iOS rotate each
joint by the weighted shortest arc instead of only moving joint positions. - Gaussian splats render at their true size (3σ half-extent with an
exp(-0.5 m²)falloff) on all platforms. EXT_mesh_gpu_instancingdraws with onedrawElementsInstancedper
primitive instead of one draw call per instance.KHR_materials_variantsswitching re-resolves custom shaders (unlit,
clearcoat, sheen, ...) and transmission for the selected material.- WebGL context loss is handled: rendering pauses and the viewer restores
programs, plugin GPU state, the last model, and the environment. exposureis now a linear pre-tone-mapping multiplier (model-viewer
semantics) instead of scaling image-based lighting only.
Added
- iOS post-processing:
XRLivePostProcessor/
XRLiveRealityKitSession.enablePostProcessing(on:)rendertone-mapping
andbloomonARViewviarenderCallbacks.postProcess+ Core Image, and
outlinetraits render as inverted-hull rims on iOS 18 / visionOS 2.
[1.2.2] - 2026-11-04
Added
-
Domain-Scoped Modular Sub-Bundles (
three-live&xr-live):-
three-live/viewer(27.3 KBgz),three-live(58.6 KBgz),
three-live/studio(21.5 KBgz),three-live/cad(8.8 KBgz),
three-live/animation(7.8 KBgz), andthree-live/full(90.5 KB
gz). -
xr-live/viewer(49.0 KBgz),xr-live(70.1 KBgz),
xr-live/sensors(9.5 KBgz),xr-live/spatial(55.3 KBgz),
xr-live/sim(21.6 KBgz), andxr-live/full(176.7 KBgz).
-
-
Mesh Compression, Material Variants & Hardware GPU Instancing:
-
EXT_meshopt_compression(meshopt.ts): Zero-Wasm LZ77 + zig-zag
delta/exponential-Golomb decoder withVERTEX(n*4/n*2),
TRIANGLES, andATTRIBUTESfilters across Web, Android, and iOS. -
KHR_materials_variants(variant_name,variants,selectVariant,
variantchangeevent) across Web, Android, and iOS. -
EXT_mesh_gpu_instancing&THREE.InstancedMesh(setMatrixAt,
setColorAt, single-draw-calldrawElementsInstancedin WebGL2, and
USDZPointInstancertranscoding).
-
-
2D Shapes, Beveled Extrusions, CSG Booleans & 3D Vector Text
(three-live/cad):-
THREE.Path&THREE.Shape(moveTo,lineTo,quadraticCurveTo,
bezierCurveTo,absarc,holes) with Earcut polygon triangulation
andTHREE.ExtrudeGeometry(multi-segment bevels). -
THREE.CSG(union,subtract,intersect) manifold 3D BSP solid
modeling andTHREE.TextGeometry(built-in Hershey simplex vector font
table).
-
-
3D Gaussian Splatting (
covariance& Degree-1 Spherical Harmonics):- Full 3D anisotropic scale + quaternion rotation -> 3D covariance
$\Sigma$ -> EWA screen-space 2D conic projection with view-dependent
degree-1 SH color evaluation across Web, Android, and iOS.
- Full 3D anisotropic scale + quaternion rotation -> 3D covariance
-
Filmic Tone Mapping, 3-Level Dual-Kawase HDR Bloom & Silhouette Outlines
(three-live/studio):-
tone-mapping(neutral,aces,agx,reinhard,none),bloom
(bloom-threshold,bloom-radius,userData.xr.bloomwith transparent
background alpha preservation), andoutline(outline-color,
outline-selected,userData.xr.outlinevia depth-tested stencil
silhouette extrusion) across Web, Android, and iOS.
-
-
Inverse Kinematics & WebRTC Voice Signaling (
three-live/animation&
xr-live/spatial):-
ikPlugin&THREE.IKSolver(solveTwoBone,solveFABRIK,
userData.xr.ikchains) across Web, Android (IKSolver), and iOS
(IKSolver). - Opt-in
shared-room-voiceWebRTC signaling relay (rtc
offer/answer/ICE messages,broadcastRtcSignal(),peerrtcsignal
event) pluscomputeSpatialVoiceGaindistance/pan helpers. Apps own
RTCPeerConnectionand audio playback. Message parsing/validation on
Android and iOS (SharedRoom).
-
Fixed
- Fixed
mat3NormalFromMat4inthree-live/src/math.tsto write$3 \times 3$
cofactors in column-major order so rotated meshes keep stable world-space
normals during turntable rotation. - Paused
orbittrait motion whenautoRotate(Start Spin/Pause Spin)
is disabled.
[1.2.1] - 2026-11-03
Added
- Interactive Simulation & Scenario Suite (
xr-live-sim/xr-live/sim)
Across Web, Android, and iOS / visionOS:characterControllerPlugin(character-controller/
CharacterController): Capsule kinematics, floor/slope stepping,
coyote-time jumps, WASD/Gamepad/on-screen touch joystick input, and
sharedcharacterCameraRig(third-person,first-person,top-down,
fixed-camera) across Web, Android (OrbitCameraState.follow), and iOS
(XROrbitCameraState.follow).steeringAgentsPlugin(steering-agents/SteeringAgents):
Autonomous kinematic steering (patrol,chase,flee,follow,
wander), vision-cone target detection, obstacle avoidance, and
deterministicmulberry32wandering.hitZonesPlugin(hit-zones/HitZones): Target/partintegrity,
projectile/hitscan/contactinteraction, spatial triggerzone
volumes, and timed templatespawnerpooling, with cross-platform
visual feedback (computeSimVisuals, AndroidXRSimRenderBridge+
Filament instancing, and iOSXRSimRealityKitBridge) for hit flashes,
world-space integrity bars, projectiles, burst fragments, and zone
outlines.objectivesPlugin(objectives/Objectives): Ordered/unordered
checklist objectives (reach,clear,collect,activate,hold),
score/attempt/countdown evaluation,scenario-reset-keyresets, and HUD
telemetry (sim-hud).synthAudioPlugin(synth-audio/SynthAudio): Zero-asset procedural
audio synthesis (beep,chime,buzz,thud,sweep,click,
alarm,whoosh) via Web Audio API, AndroidAudioTrack, and iOS
AVAudioEngine.
[1.2.0] - 2026-11-03
Added
- Expanded
XRSpatialto 14 Spatial Plugins Across Web, Android, and iOS:spatialMeasurePlugin(spatial-measure): Interactive point-to-point
tape measure and live bounding-box dimension callouts (m,cm,in,
ft) across Web, Android (SpatialMeasure), and iOS
(SpatialMeasure).magneticSnapPlugin(magnetic-snap): Surface alignment, grid snapping
(snap-grid), angular increments (snap-angle), and named socket/plug
snapping (data-xr-snap-socket,data-xr-snap-plug) across Web,
Android (MagneticSnap), and iOS (MagneticSnap).gazeDwellPlugin(gaze-dwell): Hands-free eye-gaze and head-reticle
dwell selection with animated progress ring and refractory cooldown
across Web, Android (GazeDwell), and iOS (GazeDwell).explodedViewPlugin(explode): Interactive CAD assembly explosion
(radial,axial-x,axial-y,axial-z,hierarchy) with leader
lines and livesection-planeclipping across Web, Android
(ExplodedView), and iOS (ExplodedView).persistentAnchorsPlugin(persistent-anchors): Cross-session room
anchor persistence via WebXRXRAnchor,localStorage, and shareable
#xr-anchors=URL hashes across Web, Android (PersistentAnchors), and
iOS (PersistentAnchors).spatialLocomotionPlugin(locomotion): Parabolic teleportation arc,
thumbstick snap-turn (snap-turn-deg), and comfort vignette
(comfort-vignette) across Web, Android (SpatialLocomotion), and iOS
(SpatialLocomotion).sharedRoomPlugin(shared-room): Multi-user spatial presence, peer
avatar frustums, and lamport-clock transform sync across
BroadcastChanneland WebSocket rooms (SharedRoom).
[1.1.1] - 2026-11-02
Changed
- Renamed
XRBlocks*toXRSpatial*across Web, Android, and iOS:- Web:
window.XRSpatial(xr-live/spatial),xrSpatialPlugins, and
xr-spatialattribute (retainingwindow.XRBlocks/xr-blocks
aliases for backward compatibility). - Android:
XRSpatialFeaturesandXRSpatialMath. - iOS / visionOS:
XRSpatialRealityKitFeatures,XRSpatialGeometry, and
XRSpatialMath.
- Web:
Fixed
- Android WebXR AR & Depth Sensing: Fixed 16-bit luminance-alpha depth
texture unpacking, planar depth occlusion comparison in eye space,
depth-heightfield collision surface normals, and post-AR inline render-loop
resume. - iOS
<xr-live>Quick Look AR Bridge: Fixed<xr-live>mobile AR
handoff to export live procedural scenes to.usdzand launch Apple AR
Quick Look on iOS Safari. - Stereo SBS & 3D Simulator: Mapped Stereo Side-by-Side pointer picking
per eye, mirrored the gaze reticle into both eyes, and fixed 3D Simulator
aspect ratio and orbit/WASD controls. - Native Runtime Resilience: Hardened
XRLiveRuntimeSession(Kotlin &
Swift),TubeStrokeBuilder, andParticleEmitteragainst non-finite inputs
and rapid scene teardown.
[1.1.0] - 2026-10-15
Full multi-platform parity across Web (three-live / xr-live), Android (com.google.threelive), and iOS / visionOS (ThreeLiveCompiler).
Added
-
Cross-Platform
KHR_interactivityVM & Hierarchy Parity:- Native Rust compiler (
three-live-compiler) now preserves the fullTHREE.Object3DDFS hierarchy, local TRS, parent-child links, and canonical XR traits (nodes[i].extras.xr,ANDROID_xr_scenecore,MOZ_hubs_components) identically to the web exporter. - Pure-Kotlin (
XRLiveRuntimeSession) and pure-Swift (XRLiveRuntimeSession+XRLiveRealityKitSession)KHR_interactivitybehavior-graph VMs with step/evaluation/tween/delay budgets and RFC 6901 JSON Pointer sandboxing. - Cross-platform golden parity suite (
testdata/golden/) verified across Web, Android JVM, and iOS XCTest within1e-4.
- Native Rust compiler (
-
Spatial Computing Plugins & Native Features on Web, Android & iOS/visionOS:
- Lazy Head Follow & Orbit: Critically damped spring follow with angular deadzone and radial/vertical slack, plus orbit around named nodes, literal coordinates, or the user's head, with turntable
autoRotate(rootTransform) compensation. - Manipulation Handles: Four top-corner uniform-scale handles and pedestal yaw bar (
ManipulationHandles,XRSpatialFeatures,XRSpatialRealityKitFeatures). - Spatial Paint & Depth Particles: Parallel-transported Catmull-Rom tube strokes (
TubeStrokeBuilder) and seededmulberry32particle emitters (ParticleEmitterwithrain,snow,dust,sparkspresets and floor/depth collision). - Gaussian Splats (
.splat& Niantic.spzv2/v3): Gzip decompression with size caps, 16-bit bucket depth sort, CPU billboard quad baseline, and GPU covariance-projected ellipse paths (compiled Filamentsplat.filamat+ index-only re-sorts on Android up to 1 M splats; runtime MetalCustomMaterial+LowLevelMeshon iOS/visionOS up to 1 M splats). - World Understanding & Object Detection: 2D-to-3D bounding-box unprojection (
WorldUnderstanding), Gemini Livereport_objectstool calling (detectObjects), and optional on-device detectors (:mobile:android-detect-mlkitand iOSXRVisionDetector+XRObjectDetectionLoop). - Hand Gesture Classification (
onGesture): 25-joint classifier (pinch,point,fist,thumbs-up,open-palm) withHandJointSource/XRHandJointSourceregistries and optional adapters for Jetpack XR (:mobile:android-hands-androidxr), MediaPipe Hand Landmarker (:mobile:android-hands-mediapipe/XRMediaPipeHandJointSource), and visionOS ARKitHandTrackingProvider. - Native Gemini Live & Hold-to-Ask: Zero-dependency WebSocket Live API client (
XRGeminiLiveController,HoldToAskController), viewport frame streaming (RendererFrameSource,ARViewFrameSource), and optional Firebase AI Logic adapters (:mobile:android-firebase-ai,mobile/ios/FirebaseAdapter).
- Lazy Head Follow & Orbit: Critically damped spring follow with angular deadzone and radial/vertical slack, plus orbit around named nodes, literal coordinates, or the user's head, with turntable
[1.0.0] - 2026-10-06 (Developer Preview)
Initial public Developer Preview release of Three-Live: an AI-first, multi-platform 3D and spatial computing library with an on-device JIT compiler that turns live, AI-generated Three.js scripts into native Android Filament & Jetpack XR SceneCore, iOS/visionOS RealityKit & Quick Look, and WebGL2 / WebXR.
Added
-
<three-live>Web Component (three-live):- Drop-in
<model-viewer>-compatible custom element supporting.glb/.usdzassets and inline procedural<script type="text/three">compilation. - Strictly enforced gzipped bundle budgets:
three-live-viewer.min.js(< 24 KB gz),three-live.min.js(< 48 KB gz), andthree-live-full.min.js(< 58 KB gz). - Modular add-on plugins for PBR Next material extensions (
clearcoat,transmission,sheen,iridescence,anisotropy), procedural studio HDRI & spherical harmonics irradiance, baked contact shadows, 3D surface hotspots, and 64-joint GPU skeletal skinning & morph targets. - Built-in runtime binary
.glband uncompressed.usdzpackagers for zero-server 1-tap mobile AR handoff to Apple Quick Look and Android Scene Viewer.
- Drop-in
-
<xr-live>Spatial Computing Suite (xr-live):- Extends
<three-live>with declarative 6DoF WebXR spatial traits (grab,scale,billboard,anchor) via<xr-anchor>and proceduraluserData.xrTraits. - Live raycastable 3D HTML UI cards via
<div slot="spatial">. - Hardware XR sensors add-on (
xr-live-sensors.min.js):XRDepthManager
real-world depth occlusion,XRHeightfieldPhysicsrigid-body
ballistics, 25-jointXRHandGestureClassifier(pinch,poke,
palm-up),XRDesktopSimulatorfor headset-free keyboard/mouse
testing, spatial Web Audio, and WebMCP agent tools.
- Extends
-
Two-Tier Web Sandbox & Security Architecture:
- Tier 1 (Default): Isolated Web Worker execution (
buildSandboxWorkerSource) with network/storage primitives stripped,Object.prototypefrozen, and strict per-frame execution time and geometry quotas (SceneQuotaValidator). - Tier 2 (
sandbox="iframe"): Opaque-origin<iframe sandbox="allow-scripts">(three-live-sandbox.html) with a strictconnect-src 'none'Content Security Policy and W3C Trusted Types support.
- Tier 1 (Default): Isolated Web Worker execution (
-
Native Rust/QuickJS JIT Compiler (
compiler/&three-live-cli):- Embedded deterministic QuickJS engine (
rquickjs) executing procedural Three.js scripts in-process on mobile and desktop without a browser or Node.js runtime. - Hardened resource limits (memory ceiling, interrupt handler timeout, stack limit, and vertex/triangle/material quotas) and panic-safe C FFI / Android JNI boundaries (
catch_unwind). - Standalone
three-live-clibinary (three-live-cli convert scene.js -o output.glb) with prebuilt release binaries for Linux (x86_64,aarch64), macOS (arm64,x86_64), and Windows (x86_64).
- Embedded deterministic QuickJS engine (
-
Native Android & Apple Mobile SDKs (
mobile/):- Android (
com.google.threelive): Zero-copyDirectByteBufferJNI bridge for Google Filament (FilamentHelper), Android Scene Viewer AR launcher, Jetpack XRSceneCoretrait hydration (XRLiveSceneCoreHelper), and a Jetpack Compose demo app (mobile/examples/android_compose). - iOS, macOS, visionOS & tvOS (
ThreeLiveCompiler): Swift Package Manager library and prebuiltThreeLiveCompiler.xcframeworkwith asyncRealityKitEntityloading (RealityKitHelper),ARQuickLookpresentation (QuickLookHelper), spatial trait gesture installation (XRLiveRealityKit), and a SwiftUI demo app (mobile/examples/ios_swiftui).
- Android (