@needle-tools/engine 5.1.0-canary.db0c38f → 5.1.0-canary.e7c2511

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/.needle/generated/needle-bindings.gen.d.ts +5 -0
  2. package/CHANGELOG.md +52 -0
  3. package/components.needle.json +1 -1
  4. package/dist/{needle-engine.bundle-B29kieh0.js → needle-engine.bundle-D-eWNCu1.js} +12287 -11802
  5. package/dist/needle-engine.bundle-D3ZUII8o.min.js +1733 -0
  6. package/dist/needle-engine.bundle-_rOpvUGL.umd.cjs +1733 -0
  7. package/dist/needle-engine.d.ts +833 -231
  8. package/dist/needle-engine.js +584 -582
  9. package/dist/needle-engine.min.js +1 -1
  10. package/dist/needle-engine.umd.cjs +1 -1
  11. package/lib/engine/api.d.ts +6 -1
  12. package/lib/engine/api.js +4 -0
  13. package/lib/engine/api.js.map +1 -1
  14. package/lib/engine/codegen/register_types.js +2 -10
  15. package/lib/engine/codegen/register_types.js.map +1 -1
  16. package/lib/engine/debug/debug_spatial_console.d.ts +2 -0
  17. package/lib/engine/debug/debug_spatial_console.js +10 -7
  18. package/lib/engine/debug/debug_spatial_console.js.map +1 -1
  19. package/lib/engine/engine_addressables.d.ts +2 -0
  20. package/lib/engine/engine_addressables.js +6 -3
  21. package/lib/engine/engine_addressables.js.map +1 -1
  22. package/lib/engine/engine_audio.d.ts +68 -0
  23. package/lib/engine/engine_audio.js +172 -0
  24. package/lib/engine/engine_audio.js.map +1 -1
  25. package/lib/engine/engine_components.js +1 -1
  26. package/lib/engine/engine_components.js.map +1 -1
  27. package/lib/engine/engine_context.d.ts +21 -20
  28. package/lib/engine/engine_context.js +27 -16
  29. package/lib/engine/engine_context.js.map +1 -1
  30. package/lib/engine/engine_disposable.d.ts +171 -0
  31. package/lib/engine/engine_disposable.js +136 -0
  32. package/lib/engine/engine_disposable.js.map +1 -0
  33. package/lib/engine/engine_gameobject.d.ts +1 -10
  34. package/lib/engine/engine_gameobject.js +22 -120
  35. package/lib/engine/engine_gameobject.js.map +1 -1
  36. package/lib/engine/engine_gltf_builtin_components.js +7 -69
  37. package/lib/engine/engine_gltf_builtin_components.js.map +1 -1
  38. package/lib/engine/engine_init.js +16 -1
  39. package/lib/engine/engine_init.js.map +1 -1
  40. package/lib/engine/engine_input.d.ts +1 -1
  41. package/lib/engine/engine_input.js +1 -1
  42. package/lib/engine/engine_input.js.map +1 -1
  43. package/lib/engine/engine_instantiate_resolve.d.ts +42 -0
  44. package/lib/engine/engine_instantiate_resolve.js +372 -0
  45. package/lib/engine/engine_instantiate_resolve.js.map +1 -0
  46. package/lib/engine/engine_license.d.ts +2 -0
  47. package/lib/engine/engine_license.js +14 -6
  48. package/lib/engine/engine_license.js.map +1 -1
  49. package/lib/engine/engine_lifecycle_functions_internal.js +5 -0
  50. package/lib/engine/engine_lifecycle_functions_internal.js.map +1 -1
  51. package/lib/engine/engine_mainloop_utils.js +5 -2
  52. package/lib/engine/engine_mainloop_utils.js.map +1 -1
  53. package/lib/engine/engine_networking.js +3 -1
  54. package/lib/engine/engine_networking.js.map +1 -1
  55. package/lib/engine/engine_networking_blob.js +1 -1
  56. package/lib/engine/engine_networking_blob.js.map +1 -1
  57. package/lib/engine/engine_physics_rapier.d.ts +11 -3
  58. package/lib/engine/engine_physics_rapier.js +88 -25
  59. package/lib/engine/engine_physics_rapier.js.map +1 -1
  60. package/lib/engine/engine_pmrem.js +2 -2
  61. package/lib/engine/engine_pmrem.js.map +1 -1
  62. package/lib/engine/engine_scenedata.d.ts +13 -17
  63. package/lib/engine/engine_scenedata.js +58 -31
  64. package/lib/engine/engine_scenedata.js.map +1 -1
  65. package/lib/engine/engine_serialization_builtin_serializer.d.ts +10 -16
  66. package/lib/engine/engine_serialization_builtin_serializer.js +56 -46
  67. package/lib/engine/engine_serialization_builtin_serializer.js.map +1 -1
  68. package/lib/engine/engine_serialization_core.d.ts +1 -0
  69. package/lib/engine/engine_serialization_core.js +7 -0
  70. package/lib/engine/engine_serialization_core.js.map +1 -1
  71. package/lib/engine/engine_ssr.d.ts +2 -0
  72. package/lib/engine/engine_ssr.js +20 -0
  73. package/lib/engine/engine_ssr.js.map +1 -1
  74. package/lib/engine/engine_types.d.ts +19 -9
  75. package/lib/engine/engine_types.js +1 -1
  76. package/lib/engine/engine_types.js.map +1 -1
  77. package/lib/engine/engine_util_decorator.js +7 -2
  78. package/lib/engine/engine_util_decorator.js.map +1 -1
  79. package/lib/engine/engine_utils.d.ts +1 -1
  80. package/lib/engine/engine_utils.js +19 -5
  81. package/lib/engine/engine_utils.js.map +1 -1
  82. package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +1 -1
  83. package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js.map +1 -1
  84. package/lib/engine/webcomponents/jsx.d.ts +51 -0
  85. package/lib/engine/webcomponents/logo-element.js.map +1 -1
  86. package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +3 -4
  87. package/lib/engine/webcomponents/needle menu/needle-menu.js +1 -1
  88. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  89. package/lib/engine/webcomponents/needle-button.js.map +1 -1
  90. package/lib/engine/webcomponents/needle-engine.d.ts +10 -4
  91. package/lib/engine/webcomponents/needle-engine.js +1 -1
  92. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  93. package/lib/engine/xr/NeedleXRSession.d.ts +3 -2
  94. package/lib/engine/xr/NeedleXRSession.js +50 -14
  95. package/lib/engine/xr/NeedleXRSession.js.map +1 -1
  96. package/lib/engine/xr/events.d.ts +1 -1
  97. package/lib/engine/xr/events.js.map +1 -1
  98. package/lib/engine-components/Animation.js +17 -16
  99. package/lib/engine-components/Animation.js.map +1 -1
  100. package/lib/engine-components/Animator.d.ts +6 -0
  101. package/lib/engine-components/Animator.js +17 -12
  102. package/lib/engine-components/Animator.js.map +1 -1
  103. package/lib/engine-components/AnimatorController.builder.d.ts +113 -0
  104. package/lib/engine-components/AnimatorController.builder.js +195 -0
  105. package/lib/engine-components/AnimatorController.builder.js.map +1 -0
  106. package/lib/engine-components/AnimatorController.d.ts +4 -119
  107. package/lib/engine-components/AnimatorController.js +35 -233
  108. package/lib/engine-components/AnimatorController.js.map +1 -1
  109. package/lib/engine-components/AudioSource.d.ts +19 -3
  110. package/lib/engine-components/AudioSource.js +121 -68
  111. package/lib/engine-components/AudioSource.js.map +1 -1
  112. package/lib/engine-components/Collider.d.ts +18 -9
  113. package/lib/engine-components/Collider.js +61 -14
  114. package/lib/engine-components/Collider.js.map +1 -1
  115. package/lib/engine-components/Component.d.ts +58 -6
  116. package/lib/engine-components/Component.js +77 -0
  117. package/lib/engine-components/Component.js.map +1 -1
  118. package/lib/engine-components/DragControls.d.ts +7 -0
  119. package/lib/engine-components/DragControls.js +19 -7
  120. package/lib/engine-components/DragControls.js.map +1 -1
  121. package/lib/engine-components/EventList.d.ts +31 -9
  122. package/lib/engine-components/EventList.js +37 -76
  123. package/lib/engine-components/EventList.js.map +1 -1
  124. package/lib/engine-components/Joints.d.ts +4 -2
  125. package/lib/engine-components/Joints.js +19 -3
  126. package/lib/engine-components/Joints.js.map +1 -1
  127. package/lib/engine-components/Light.d.ts +6 -8
  128. package/lib/engine-components/Light.js +48 -27
  129. package/lib/engine-components/Light.js.map +1 -1
  130. package/lib/engine-components/Networking.d.ts +1 -1
  131. package/lib/engine-components/Networking.js +1 -1
  132. package/lib/engine-components/OrbitControls.js +16 -11
  133. package/lib/engine-components/OrbitControls.js.map +1 -1
  134. package/lib/engine-components/ReflectionProbe.js +2 -0
  135. package/lib/engine-components/ReflectionProbe.js.map +1 -1
  136. package/lib/engine-components/RigidBody.d.ts +12 -4
  137. package/lib/engine-components/RigidBody.js +18 -4
  138. package/lib/engine-components/RigidBody.js.map +1 -1
  139. package/lib/engine-components/SeeThrough.js +2 -2
  140. package/lib/engine-components/SeeThrough.js.map +1 -1
  141. package/lib/engine-components/api.d.ts +1 -1
  142. package/lib/engine-components/api.js +1 -1
  143. package/lib/engine-components/api.js.map +1 -1
  144. package/lib/engine-components/codegen/components.d.ts +3 -9
  145. package/lib/engine-components/codegen/components.js +3 -9
  146. package/lib/engine-components/codegen/components.js.map +1 -1
  147. package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.d.ts +1 -1
  148. package/lib/engine-components/postprocessing/VolumeParameter.d.ts +2 -0
  149. package/lib/engine-components/postprocessing/VolumeParameter.js +4 -1
  150. package/lib/engine-components/postprocessing/VolumeParameter.js.map +1 -1
  151. package/lib/engine-components/timeline/PlayableDirector.d.ts +16 -6
  152. package/lib/engine-components/timeline/PlayableDirector.js +63 -61
  153. package/lib/engine-components/timeline/PlayableDirector.js.map +1 -1
  154. package/lib/engine-components/timeline/SignalAsset.d.ts +3 -1
  155. package/lib/engine-components/timeline/SignalAsset.js +1 -0
  156. package/lib/engine-components/timeline/SignalAsset.js.map +1 -1
  157. package/lib/engine-components/timeline/TimelineBuilder.d.ts +247 -0
  158. package/lib/engine-components/timeline/TimelineBuilder.js +400 -0
  159. package/lib/engine-components/timeline/TimelineBuilder.js.map +1 -0
  160. package/lib/engine-components/timeline/TimelineModels.d.ts +2 -1
  161. package/lib/engine-components/timeline/TimelineModels.js +3 -0
  162. package/lib/engine-components/timeline/TimelineModels.js.map +1 -1
  163. package/lib/engine-components/timeline/TimelineTracks.d.ts +23 -0
  164. package/lib/engine-components/timeline/TimelineTracks.js +71 -13
  165. package/lib/engine-components/timeline/TimelineTracks.js.map +1 -1
  166. package/lib/engine-components/timeline/index.d.ts +2 -1
  167. package/lib/engine-components/timeline/index.js +2 -0
  168. package/lib/engine-components/timeline/index.js.map +1 -1
  169. package/lib/engine-components/ui/Canvas.d.ts +1 -1
  170. package/lib/engine-components/ui/Canvas.js +2 -8
  171. package/lib/engine-components/ui/Canvas.js.map +1 -1
  172. package/lib/engine-components/ui/Text.d.ts +1 -0
  173. package/lib/engine-components/ui/Text.js +10 -7
  174. package/lib/engine-components/ui/Text.js.map +1 -1
  175. package/lib/engine-components/web/CursorFollow.js +21 -12
  176. package/lib/engine-components/web/CursorFollow.js.map +1 -1
  177. package/lib/engine-components/webxr/WebXRImageTracking.js +4 -0
  178. package/lib/engine-components/webxr/WebXRImageTracking.js.map +1 -1
  179. package/lib/needle-engine.d.ts +2 -0
  180. package/lib/needle-engine.js +2 -0
  181. package/lib/needle-engine.js.map +1 -1
  182. package/package.json +4 -84
  183. package/plugins/common/worker.js +9 -4
  184. package/plugins/dts-generator/dts.codegen.js +255 -50
  185. package/plugins/dts-generator/dts.scan.js +37 -9
  186. package/plugins/dts-generator/dts.writer.js +1 -1
  187. package/plugins/dts-generator/glb.discovery.js +140 -23
  188. package/plugins/dts-generator/glb.extractor.js +48 -8
  189. package/plugins/dts-generator/glb.reader.js +80 -27
  190. package/plugins/dts-generator/index.js +1 -1
  191. package/plugins/types/needle-bindings.d.ts +25 -14
  192. package/plugins/types/userconfig.d.ts +12 -0
  193. package/plugins/vite/asap.js +18 -9
  194. package/plugins/vite/dependencies.js +29 -0
  195. package/plugins/vite/dependency-watcher.d.ts +2 -2
  196. package/plugins/vite/dependency-watcher.js +5 -6
  197. package/plugins/vite/drop.d.ts +2 -2
  198. package/plugins/vite/drop.js +3 -4
  199. package/plugins/vite/dts-generator.d.ts +2 -2
  200. package/plugins/vite/dts-generator.js +43 -9
  201. package/plugins/vite/editor-connection.js +3 -3
  202. package/plugins/vite/index.d.ts +9 -3
  203. package/plugins/vite/index.js +23 -10
  204. package/plugins/vite/local-files-core.js +3 -3
  205. package/plugins/vite/local-files-utils.d.ts +3 -1
  206. package/plugins/vite/local-files-utils.js +29 -5
  207. package/plugins/vite/meta.js +4 -2
  208. package/plugins/vite/poster.d.ts +2 -2
  209. package/plugins/vite/poster.js +3 -5
  210. package/plugins/vite/reload.d.ts +2 -2
  211. package/plugins/vite/reload.js +23 -23
  212. package/plugins/vite/server.js +2 -1
  213. package/src/engine/api.ts +8 -1
  214. package/src/engine/codegen/register_types.ts +2 -10
  215. package/src/engine/debug/debug_spatial_console.ts +10 -7
  216. package/src/engine/engine_addressables.ts +6 -3
  217. package/src/engine/engine_audio.ts +184 -0
  218. package/src/engine/engine_components.ts +1 -1
  219. package/src/engine/engine_context.ts +36 -22
  220. package/src/engine/engine_disposable.ts +213 -0
  221. package/src/engine/engine_gameobject.ts +54 -159
  222. package/src/engine/engine_gltf_builtin_components.ts +7 -76
  223. package/src/engine/engine_init.ts +15 -1
  224. package/src/engine/engine_input.ts +1 -1
  225. package/src/engine/engine_instantiate_resolve.ts +407 -0
  226. package/src/engine/engine_license.ts +12 -10
  227. package/src/engine/engine_lifecycle_functions_internal.ts +7 -0
  228. package/src/engine/engine_mainloop_utils.ts +5 -2
  229. package/src/engine/engine_networking.ts +3 -1
  230. package/src/engine/engine_networking_blob.ts +1 -1
  231. package/src/engine/engine_physics_rapier.ts +82 -27
  232. package/src/engine/engine_pmrem.ts +3 -3
  233. package/src/engine/engine_scenedata.ts +56 -30
  234. package/src/engine/engine_serialization_builtin_serializer.ts +64 -52
  235. package/src/engine/engine_serialization_core.ts +9 -0
  236. package/src/engine/engine_ssr.ts +29 -3
  237. package/src/engine/engine_types.ts +24 -13
  238. package/src/engine/engine_util_decorator.ts +7 -2
  239. package/src/engine/engine_utils.ts +16 -5
  240. package/src/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +1 -1
  241. package/src/engine/webcomponents/jsx.d.ts +51 -0
  242. package/src/engine/webcomponents/logo-element.ts +1 -0
  243. package/src/engine/webcomponents/needle menu/needle-menu.ts +3 -2
  244. package/src/engine/webcomponents/needle-button.ts +1 -0
  245. package/src/engine/webcomponents/needle-engine.ts +11 -4
  246. package/src/engine/xr/NeedleXRSession.ts +48 -13
  247. package/src/engine/xr/events.ts +1 -1
  248. package/src/engine-components/Animation.ts +19 -16
  249. package/src/engine-components/Animator.ts +18 -11
  250. package/src/engine-components/AnimatorController.builder.ts +261 -0
  251. package/src/engine-components/AnimatorController.ts +23 -292
  252. package/src/engine-components/AudioSource.ts +130 -79
  253. package/src/engine-components/Collider.ts +66 -18
  254. package/src/engine-components/Component.ts +79 -9
  255. package/src/engine-components/DragControls.ts +18 -11
  256. package/src/engine-components/EventList.ts +45 -83
  257. package/src/engine-components/Joints.ts +20 -4
  258. package/src/engine-components/Light.ts +49 -27
  259. package/src/engine-components/Networking.ts +1 -1
  260. package/src/engine-components/OrbitControls.ts +18 -9
  261. package/src/engine-components/ReflectionProbe.ts +2 -0
  262. package/src/engine-components/RigidBody.ts +18 -4
  263. package/src/engine-components/SeeThrough.ts +2 -2
  264. package/src/engine-components/api.ts +1 -1
  265. package/src/engine-components/codegen/components.ts +3 -9
  266. package/src/engine-components/postprocessing/VolumeParameter.ts +4 -1
  267. package/src/engine-components/timeline/PlayableDirector.ts +61 -64
  268. package/src/engine-components/timeline/SignalAsset.ts +4 -1
  269. package/src/engine-components/timeline/TimelineBuilder.ts +565 -0
  270. package/src/engine-components/timeline/TimelineModels.ts +5 -1
  271. package/src/engine-components/timeline/TimelineTracks.ts +74 -13
  272. package/src/engine-components/timeline/index.ts +2 -1
  273. package/src/engine-components/ui/Canvas.ts +2 -8
  274. package/src/engine-components/ui/Text.ts +12 -8
  275. package/src/engine-components/web/CursorFollow.ts +21 -13
  276. package/src/engine-components/webxr/WebXRImageTracking.ts +2 -0
  277. package/src/needle-engine.ts +3 -0
  278. package/dist/needle-engine.bundle-Dq0Ly8fW.umd.cjs +0 -1732
  279. package/dist/needle-engine.bundle-YnpzzOPL.min.js +0 -1732
  280. package/lib/engine-components/AvatarLoader.d.ts +0 -80
  281. package/lib/engine-components/AvatarLoader.js +0 -232
  282. package/lib/engine-components/AvatarLoader.js.map +0 -1
  283. package/lib/engine-components/avatar/AvatarBlink_Simple.d.ts +0 -11
  284. package/lib/engine-components/avatar/AvatarBlink_Simple.js +0 -77
  285. package/lib/engine-components/avatar/AvatarBlink_Simple.js.map +0 -1
  286. package/lib/engine-components/avatar/AvatarEyeLook_Rotation.d.ts +0 -14
  287. package/lib/engine-components/avatar/AvatarEyeLook_Rotation.js +0 -69
  288. package/lib/engine-components/avatar/AvatarEyeLook_Rotation.js.map +0 -1
  289. package/lib/engine-components/avatar/Avatar_Brain_LookAt.d.ts +0 -29
  290. package/lib/engine-components/avatar/Avatar_Brain_LookAt.js +0 -122
  291. package/lib/engine-components/avatar/Avatar_Brain_LookAt.js.map +0 -1
  292. package/lib/engine-components/avatar/Avatar_MouthShapes.d.ts +0 -15
  293. package/lib/engine-components/avatar/Avatar_MouthShapes.js +0 -80
  294. package/lib/engine-components/avatar/Avatar_MouthShapes.js.map +0 -1
  295. package/lib/engine-components/avatar/Avatar_MustacheShake.d.ts +0 -9
  296. package/lib/engine-components/avatar/Avatar_MustacheShake.js +0 -30
  297. package/lib/engine-components/avatar/Avatar_MustacheShake.js.map +0 -1
  298. package/src/engine-components/AvatarLoader.ts +0 -264
  299. package/src/engine-components/avatar/AvatarBlink_Simple.ts +0 -70
  300. package/src/engine-components/avatar/AvatarEyeLook_Rotation.ts +0 -64
  301. package/src/engine-components/avatar/Avatar_Brain_LookAt.ts +0 -140
  302. package/src/engine-components/avatar/Avatar_MouthShapes.ts +0 -84
  303. package/src/engine-components/avatar/Avatar_MustacheShake.ts +0 -32
@@ -0,0 +1,5 @@
1
+ // Auto-generated by @needle-tools/engine — do not edit
2
+ // Regenerated on each vite dev-server start and GLB change.
3
+ declare module "needle-bindings" {
4
+ interface SceneData {}
5
+ }
package/CHANGELOG.md CHANGED
@@ -4,6 +4,49 @@ All notable changes to this package will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [5.1.0-alpha.3] - 2026-04-29
8
+ #### Added
9
+ - `AudioClip` type with standalone playback control — use with `@serializable(AudioClip)` for direct audio clip references
10
+ - `AudioSource` spatial blend support via dual-path audio graph for smooth 2D/3D crossfade
11
+ - UI Text default static font from Needle CDN with absolute font URL support
12
+ - `DragControls` EventList support
13
+
14
+ #### Fixed
15
+ - UI Text font URL resolution when loading GLBs from external hosts (e.g. CDN)
16
+ - `AudioSource` spatial rolloff factor and `play()` reliability
17
+ - `Animation` `play()` with `{ exclusive: false }` not stopping already-running clips
18
+ - XR lifecycle — spurious `onLeaveXR` calls for scripts that never entered XR
19
+ - `OrbitControls` lookBounds lerp and distance-relative gizmo sizes
20
+ - `CursorFollow` self-intersection and snapToSurface raycast direction
21
+ - Vite `makeFilesLocal` and alias plugins now respect `vite.config` `base`
22
+ - `three-mesh-bvh` worker failing to load in local dev server
23
+ - `VideoPlayer` URL serializer tree-shaken out in code-only projects
24
+ - `ReflectionProbe` not cleaning up overrides when removed
25
+ ## [5.1.0-alpha.2] - 2026-04-13
26
+ - **NEW**: Scene Bindings (experimental) — auto-generated TypeScript types from your glTF scenes, providing typed access to nodes, components, and properties via `ctx.sceneData` or `needle.sceneData`. Types are generated automatically by a Vite plugin whenever your scene files change — no configuration needed. Works with any glTF/GLB assigned as `src` on `<needle-engine>`, including remote URLs and Needle Cloud assets. The API shape (particularly `$components` and `$object` accessors) may evolve based on feedback. Can be disabled with `dts: { enabled: false }` in your Vite plugin config.
27
+ ```ts
28
+ // fully typed, with autocomplete for every node and component
29
+ const cam = ctx.sceneData.MyScene.MainCamera.$object; // THREE.PerspectiveCamera
30
+ const orbit = ctx.sceneData.MyScene.MainCamera.$components.OrbitControls; // typed!
31
+ ```
32
+ - **NEW**: SSR support (experimental) — import Needle Engine in Node.js/SSR frameworks (SvelteKit, Next.js, Nuxt) without `ReferenceError` crashes. The engine now provides SSR-safe base classes and skips browser-dependent initialization on the server. Core rendering still happens client-side — SSR support means your app can import and reference engine code server-side without errors.
33
+ - **NEW**: JSX type declarations for `<needle-engine>` and other web components — first-class support for React, Preact, SolidJS, and other JSX-based frameworks with full autocomplete and type checking
34
+ - **NEW**: `needle` shorthand (experimental) — quick access to the current engine context from anywhere without passing `ctx` around. Works in React/Svelte/Vue components, button handlers, or plain JavaScript. SSR-safe.
35
+ ```ts
36
+ import { needle } from "@needle-tools/engine";
37
+ needle.scene.traverse(obj => { ... }); // access the three.js scene
38
+ needle.renderer; // access the WebGLRenderer
39
+ needle.sceneData.MyScene.Camera.$components.OrbitControls.autoRotate = true;
40
+ ```
41
+ - **NEW**: `context.lights` array and `context.mainLight` getter for easy access to all scene lights and the primary directional light
42
+ - Add: `needlePlugins()` can now be called without arguments — the Vite command is resolved automatically. This simplifies setup in frameworks like SvelteKit where `defineConfig` doesn't expose the command:
43
+ ```js
44
+ export default defineConfig({ plugins: [sveltekit(), needlePlugins()] });
45
+ ```
46
+ - Fix: BloomEffect and Sharpening were pulling in the entire `postprocessing` library even in projects that don't use postprocessing, increasing bundle size unnecessarily
47
+ - Fix: SceneSwitcher now shows the object name in the URL when referencing scene objects (instead of just an index)
48
+ - Improved: Vite plugin reliability (fewer unnecessary reloads, cleaner log output)
49
+
7
50
  ## [5.1.0-alpha.1] - 2026-04-10
8
51
  - Add: `AnimatorControllerBuilder` for building animator controllers from code (experimental)
9
52
  - Add: XR global events now return an unsubscribe function + `onBeforeXRSessionRequest` event
@@ -36,6 +79,15 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
36
79
  - Fix: HTML mobile icon not rendering
37
80
  - Fix: UI `Text` component absolute font URL handling
38
81
 
82
+ ## [5.0.4] - 2026-04-20
83
+ - Fix: VideoPlayer not working when tree-shaking is enabled due to URL serializer being removed
84
+ - Fix: ReflectionProbe not cleaning up `envMapRotation` and `envMapIntensity` overrides when removing envMap
85
+
86
+ ## [5.0.3] - 2026-04-08
87
+ - Add: PMREM / FastHDR support for GroundProjection with shader-based blurriness, blending, and alpha controls
88
+ - Fix: MaterialPropertyBlock multi-material change from opaque to transparent
89
+ - Improved: OrbitControls JSDoc for `targetBounds`
90
+
39
91
  ## [5.0.2] - 2026-04-03
40
92
  - Updated `@needle-tools/materialx` to 1.6.0:
41
93
  - UV coordinate convention handling (glTF ↔ OpenGL) — fixes UV-dependent effects like displacement and procedural noise in the browser