@needle-tools/engine 5.1.0-canary.3d7c58a → 5.1.0-canary.40da791

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 (284) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/SKILL.md +4 -1
  3. package/components.needle.json +1 -1
  4. package/dist/{needle-engine.bundle-D6w6CUmG.js → needle-engine.bundle-Cu2B9CsR.js} +19366 -18579
  5. package/dist/needle-engine.bundle-ZoVUaB89.umd.cjs +1733 -0
  6. package/dist/needle-engine.bundle-hBWUJPxm.min.js +1733 -0
  7. package/dist/needle-engine.d.ts +1481 -350
  8. package/dist/needle-engine.js +558 -556
  9. package/dist/needle-engine.min.js +1 -1
  10. package/dist/needle-engine.umd.cjs +1 -1
  11. package/dist/three.js +1 -0
  12. package/dist/three.min.js +21 -21
  13. package/dist/three.umd.cjs +16 -16
  14. package/lib/engine/api.d.ts +7 -0
  15. package/lib/engine/api.js +6 -0
  16. package/lib/engine/api.js.map +1 -1
  17. package/lib/engine/codegen/register_types.js +10 -18
  18. package/lib/engine/codegen/register_types.js.map +1 -1
  19. package/lib/engine/engine_audio.d.ts +68 -0
  20. package/lib/engine/engine_audio.js +172 -0
  21. package/lib/engine/engine_audio.js.map +1 -1
  22. package/lib/engine/engine_camera.fit.js +16 -4
  23. package/lib/engine/engine_camera.fit.js.map +1 -1
  24. package/lib/engine/engine_components.js +1 -1
  25. package/lib/engine/engine_components.js.map +1 -1
  26. package/lib/engine/engine_context.d.ts +21 -8
  27. package/lib/engine/engine_context.js +32 -16
  28. package/lib/engine/engine_context.js.map +1 -1
  29. package/lib/engine/engine_context_eventbus.d.ts +47 -0
  30. package/lib/engine/engine_context_eventbus.js +47 -0
  31. package/lib/engine/engine_context_eventbus.js.map +1 -0
  32. package/lib/engine/engine_disposable.d.ts +172 -0
  33. package/lib/engine/engine_disposable.js +136 -0
  34. package/lib/engine/engine_disposable.js.map +1 -0
  35. package/lib/engine/engine_gameobject.d.ts +1 -10
  36. package/lib/engine/engine_gameobject.js +22 -120
  37. package/lib/engine/engine_gameobject.js.map +1 -1
  38. package/lib/engine/engine_gltf_builtin_components.js +7 -69
  39. package/lib/engine/engine_gltf_builtin_components.js.map +1 -1
  40. package/lib/engine/engine_init.js +6 -6
  41. package/lib/engine/engine_init.js.map +1 -1
  42. package/lib/engine/engine_input.d.ts +24 -5
  43. package/lib/engine/engine_input.js +3 -2
  44. package/lib/engine/engine_input.js.map +1 -1
  45. package/lib/engine/engine_instantiate_resolve.d.ts +42 -0
  46. package/lib/engine/engine_instantiate_resolve.js +372 -0
  47. package/lib/engine/engine_instantiate_resolve.js.map +1 -0
  48. package/lib/engine/engine_license.js +1 -1
  49. package/lib/engine/engine_license.js.map +1 -1
  50. package/lib/engine/engine_mainloop_utils.js +7 -4
  51. package/lib/engine/engine_mainloop_utils.js.map +1 -1
  52. package/lib/engine/engine_networking.d.ts +51 -37
  53. package/lib/engine/engine_networking.js +132 -82
  54. package/lib/engine/engine_networking.js.map +1 -1
  55. package/lib/engine/engine_networking.transport.websocket.d.ts +15 -0
  56. package/lib/engine/engine_networking.transport.websocket.js +38 -0
  57. package/lib/engine/engine_networking.transport.websocket.js.map +1 -0
  58. package/lib/engine/engine_networking_blob.js +1 -1
  59. package/lib/engine/engine_networking_blob.js.map +1 -1
  60. package/lib/engine/engine_networking_instantiate.js +2 -2
  61. package/lib/engine/engine_networking_instantiate.js.map +1 -1
  62. package/lib/engine/engine_networking_types.d.ts +39 -1
  63. package/lib/engine/engine_networking_types.js +7 -0
  64. package/lib/engine/engine_networking_types.js.map +1 -1
  65. package/lib/engine/engine_physics_rapier.d.ts +21 -3
  66. package/lib/engine/engine_physics_rapier.js +94 -25
  67. package/lib/engine/engine_physics_rapier.js.map +1 -1
  68. package/lib/engine/engine_scenedata.js +2 -2
  69. package/lib/engine/engine_scenedata.js.map +1 -1
  70. package/lib/engine/engine_serialization_builtin_serializer.js +28 -5
  71. package/lib/engine/engine_serialization_builtin_serializer.js.map +1 -1
  72. package/lib/engine/engine_serialization_core.d.ts +1 -0
  73. package/lib/engine/engine_serialization_core.js +7 -0
  74. package/lib/engine/engine_serialization_core.js.map +1 -1
  75. package/lib/engine/engine_types.d.ts +29 -11
  76. package/lib/engine/engine_types.js +1 -1
  77. package/lib/engine/engine_types.js.map +1 -1
  78. package/lib/engine/engine_util_decorator.js +7 -2
  79. package/lib/engine/engine_util_decorator.js.map +1 -1
  80. package/lib/engine/engine_utils.d.ts +1 -1
  81. package/lib/engine/engine_utils.js +19 -5
  82. package/lib/engine/engine_utils.js.map +1 -1
  83. package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +1 -1
  84. package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js.map +1 -1
  85. package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +1 -1
  86. package/lib/engine/webcomponents/needle menu/needle-menu.js +1 -1
  87. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  88. package/lib/engine/webcomponents/needle-engine.d.ts +10 -4
  89. package/lib/engine/webcomponents/needle-engine.js +1 -1
  90. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  91. package/lib/engine/xr/NeedleXRSession.d.ts +3 -2
  92. package/lib/engine/xr/NeedleXRSession.js +50 -14
  93. package/lib/engine/xr/NeedleXRSession.js.map +1 -1
  94. package/lib/engine/xr/events.d.ts +1 -1
  95. package/lib/engine/xr/events.js.map +1 -1
  96. package/lib/engine-components/Animation.js +17 -16
  97. package/lib/engine-components/Animation.js.map +1 -1
  98. package/lib/engine-components/AnimationBuilder.d.ts +158 -0
  99. package/lib/engine-components/AnimationBuilder.js +305 -0
  100. package/lib/engine-components/AnimationBuilder.js.map +1 -0
  101. package/lib/engine-components/Animator.d.ts +6 -0
  102. package/lib/engine-components/Animator.js +23 -13
  103. package/lib/engine-components/Animator.js.map +1 -1
  104. package/lib/engine-components/AnimatorController.builder.d.ts +191 -0
  105. package/lib/engine-components/AnimatorController.builder.js +263 -0
  106. package/lib/engine-components/AnimatorController.builder.js.map +1 -0
  107. package/lib/engine-components/AnimatorController.d.ts +2 -119
  108. package/lib/engine-components/AnimatorController.js +33 -232
  109. package/lib/engine-components/AnimatorController.js.map +1 -1
  110. package/lib/engine-components/AudioSource.d.ts +19 -3
  111. package/lib/engine-components/AudioSource.js +121 -68
  112. package/lib/engine-components/AudioSource.js.map +1 -1
  113. package/lib/engine-components/Collider.d.ts +18 -9
  114. package/lib/engine-components/Collider.js +61 -14
  115. package/lib/engine-components/Collider.js.map +1 -1
  116. package/lib/engine-components/Component.d.ts +72 -9
  117. package/lib/engine-components/Component.js +114 -10
  118. package/lib/engine-components/Component.js.map +1 -1
  119. package/lib/engine-components/ContactShadows.d.ts +1 -0
  120. package/lib/engine-components/ContactShadows.js +14 -1
  121. package/lib/engine-components/ContactShadows.js.map +1 -1
  122. package/lib/engine-components/DragControls.d.ts +7 -0
  123. package/lib/engine-components/DragControls.js +19 -7
  124. package/lib/engine-components/DragControls.js.map +1 -1
  125. package/lib/engine-components/DropListener.js +3 -0
  126. package/lib/engine-components/DropListener.js.map +1 -1
  127. package/lib/engine-components/EventList.d.ts +31 -9
  128. package/lib/engine-components/EventList.js +37 -76
  129. package/lib/engine-components/EventList.js.map +1 -1
  130. package/lib/engine-components/Joints.d.ts +4 -2
  131. package/lib/engine-components/Joints.js +19 -3
  132. package/lib/engine-components/Joints.js.map +1 -1
  133. package/lib/engine-components/Light.js +9 -1
  134. package/lib/engine-components/Light.js.map +1 -1
  135. package/lib/engine-components/Networking.d.ts +1 -1
  136. package/lib/engine-components/Networking.js +1 -1
  137. package/lib/engine-components/OrbitControls.d.ts +0 -2
  138. package/lib/engine-components/OrbitControls.js +30 -12
  139. package/lib/engine-components/OrbitControls.js.map +1 -1
  140. package/lib/engine-components/RigidBody.d.ts +12 -4
  141. package/lib/engine-components/RigidBody.js +18 -4
  142. package/lib/engine-components/RigidBody.js.map +1 -1
  143. package/lib/engine-components/SceneSwitcher.js +3 -0
  144. package/lib/engine-components/SceneSwitcher.js.map +1 -1
  145. package/lib/engine-components/SeeThrough.js +2 -2
  146. package/lib/engine-components/SeeThrough.js.map +1 -1
  147. package/lib/engine-components/api.d.ts +2 -1
  148. package/lib/engine-components/api.js +2 -1
  149. package/lib/engine-components/api.js.map +1 -1
  150. package/lib/engine-components/codegen/components.d.ts +7 -13
  151. package/lib/engine-components/codegen/components.js +7 -13
  152. package/lib/engine-components/codegen/components.js.map +1 -1
  153. package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.d.ts +1 -1
  154. package/lib/engine-components/timeline/PlayableDirector.d.ts +21 -11
  155. package/lib/engine-components/timeline/PlayableDirector.js +75 -67
  156. package/lib/engine-components/timeline/PlayableDirector.js.map +1 -1
  157. package/lib/engine-components/timeline/SignalAsset.d.ts +3 -1
  158. package/lib/engine-components/timeline/SignalAsset.js +1 -0
  159. package/lib/engine-components/timeline/SignalAsset.js.map +1 -1
  160. package/lib/engine-components/timeline/TimelineBuilder.d.ts +413 -0
  161. package/lib/engine-components/timeline/TimelineBuilder.js +506 -0
  162. package/lib/engine-components/timeline/TimelineBuilder.js.map +1 -0
  163. package/lib/engine-components/timeline/TimelineModels.d.ts +2 -1
  164. package/lib/engine-components/timeline/TimelineModels.js +3 -0
  165. package/lib/engine-components/timeline/TimelineModels.js.map +1 -1
  166. package/lib/engine-components/timeline/TimelineTracks.d.ts +37 -6
  167. package/lib/engine-components/timeline/TimelineTracks.js +92 -26
  168. package/lib/engine-components/timeline/TimelineTracks.js.map +1 -1
  169. package/lib/engine-components/timeline/index.d.ts +2 -1
  170. package/lib/engine-components/timeline/index.js +2 -0
  171. package/lib/engine-components/timeline/index.js.map +1 -1
  172. package/lib/engine-components/ui/Canvas.d.ts +1 -1
  173. package/lib/engine-components/ui/Canvas.js +2 -8
  174. package/lib/engine-components/ui/Canvas.js.map +1 -1
  175. package/lib/engine-components/ui/Text.d.ts +1 -0
  176. package/lib/engine-components/ui/Text.js +10 -7
  177. package/lib/engine-components/ui/Text.js.map +1 -1
  178. package/lib/engine-components/web/CursorFollow.d.ts +0 -1
  179. package/lib/engine-components/web/CursorFollow.js +21 -13
  180. package/lib/engine-components/web/CursorFollow.js.map +1 -1
  181. package/lib/engine-components/webxr/WebXRImageTracking.js +4 -0
  182. package/lib/engine-components/webxr/WebXRImageTracking.js.map +1 -1
  183. package/package.json +2 -83
  184. package/plugins/common/license.js +5 -2
  185. package/plugins/common/worker.js +9 -4
  186. package/plugins/vite/asap.js +17 -8
  187. package/plugins/vite/dependencies.js +29 -10
  188. package/plugins/vite/dependency-watcher.js +2 -2
  189. package/plugins/vite/editor-connection.js +3 -3
  190. package/plugins/vite/license.js +19 -1
  191. package/plugins/vite/local-files-core.js +3 -3
  192. package/plugins/vite/local-files-utils.d.ts +3 -1
  193. package/plugins/vite/local-files-utils.js +29 -5
  194. package/plugins/vite/reload.js +1 -1
  195. package/plugins/vite/server.js +2 -1
  196. package/src/engine/api.ts +10 -0
  197. package/src/engine/codegen/register_types.ts +10 -18
  198. package/src/engine/engine_audio.ts +184 -0
  199. package/src/engine/engine_camera.fit.ts +15 -4
  200. package/src/engine/engine_components.ts +1 -1
  201. package/src/engine/engine_context.ts +34 -18
  202. package/src/engine/engine_context_eventbus.ts +73 -0
  203. package/src/engine/engine_disposable.ts +214 -0
  204. package/src/engine/engine_gameobject.ts +54 -159
  205. package/src/engine/engine_gltf_builtin_components.ts +7 -76
  206. package/src/engine/engine_init.ts +6 -6
  207. package/src/engine/engine_input.ts +28 -7
  208. package/src/engine/engine_instantiate_resolve.ts +407 -0
  209. package/src/engine/engine_license.ts +1 -1
  210. package/src/engine/engine_mainloop_utils.ts +7 -4
  211. package/src/engine/engine_networking.transport.websocket.ts +45 -0
  212. package/src/engine/engine_networking.ts +161 -137
  213. package/src/engine/engine_networking_blob.ts +1 -1
  214. package/src/engine/engine_networking_instantiate.ts +2 -2
  215. package/src/engine/engine_networking_types.ts +41 -1
  216. package/src/engine/engine_physics_rapier.ts +102 -33
  217. package/src/engine/engine_scenedata.ts +3 -3
  218. package/src/engine/engine_serialization_builtin_serializer.ts +32 -9
  219. package/src/engine/engine_serialization_core.ts +9 -0
  220. package/src/engine/engine_types.ts +46 -27
  221. package/src/engine/engine_util_decorator.ts +7 -2
  222. package/src/engine/engine_utils.ts +16 -5
  223. package/src/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +1 -1
  224. package/src/engine/webcomponents/needle menu/needle-menu.ts +1 -1
  225. package/src/engine/webcomponents/needle-engine.ts +10 -4
  226. package/src/engine/xr/NeedleXRSession.ts +48 -13
  227. package/src/engine/xr/events.ts +1 -1
  228. package/src/engine-components/Animation.ts +19 -16
  229. package/src/engine-components/AnimationBuilder.ts +472 -0
  230. package/src/engine-components/Animator.ts +24 -12
  231. package/src/engine-components/AnimatorController.builder.ts +387 -0
  232. package/src/engine-components/AnimatorController.ts +20 -291
  233. package/src/engine-components/AudioSource.ts +130 -79
  234. package/src/engine-components/Collider.ts +66 -18
  235. package/src/engine-components/Component.ts +118 -20
  236. package/src/engine-components/ContactShadows.ts +15 -1
  237. package/src/engine-components/DragControls.ts +18 -11
  238. package/src/engine-components/DropListener.ts +3 -0
  239. package/src/engine-components/EventList.ts +45 -83
  240. package/src/engine-components/Joints.ts +20 -4
  241. package/src/engine-components/Light.ts +10 -2
  242. package/src/engine-components/Networking.ts +1 -1
  243. package/src/engine-components/OrbitControls.ts +34 -14
  244. package/src/engine-components/RigidBody.ts +18 -4
  245. package/src/engine-components/SceneSwitcher.ts +3 -0
  246. package/src/engine-components/SeeThrough.ts +2 -2
  247. package/src/engine-components/api.ts +2 -1
  248. package/src/engine-components/codegen/components.ts +7 -13
  249. package/src/engine-components/timeline/PlayableDirector.ts +83 -81
  250. package/src/engine-components/timeline/SignalAsset.ts +4 -1
  251. package/src/engine-components/timeline/TimelineBuilder.ts +824 -0
  252. package/src/engine-components/timeline/TimelineModels.ts +5 -1
  253. package/src/engine-components/timeline/TimelineTracks.ts +96 -27
  254. package/src/engine-components/timeline/index.ts +2 -1
  255. package/src/engine-components/ui/Canvas.ts +2 -8
  256. package/src/engine-components/ui/Text.ts +12 -8
  257. package/src/engine-components/web/CursorFollow.ts +21 -14
  258. package/src/engine-components/webxr/WebXRImageTracking.ts +2 -0
  259. package/dist/needle-engine.bundle-Cb806egV.umd.cjs +0 -1732
  260. package/dist/needle-engine.bundle-DyafERqr.min.js +0 -1732
  261. package/lib/engine-components/AvatarLoader.d.ts +0 -80
  262. package/lib/engine-components/AvatarLoader.js +0 -232
  263. package/lib/engine-components/AvatarLoader.js.map +0 -1
  264. package/lib/engine-components/avatar/AvatarBlink_Simple.d.ts +0 -11
  265. package/lib/engine-components/avatar/AvatarBlink_Simple.js +0 -77
  266. package/lib/engine-components/avatar/AvatarBlink_Simple.js.map +0 -1
  267. package/lib/engine-components/avatar/AvatarEyeLook_Rotation.d.ts +0 -14
  268. package/lib/engine-components/avatar/AvatarEyeLook_Rotation.js +0 -69
  269. package/lib/engine-components/avatar/AvatarEyeLook_Rotation.js.map +0 -1
  270. package/lib/engine-components/avatar/Avatar_Brain_LookAt.d.ts +0 -29
  271. package/lib/engine-components/avatar/Avatar_Brain_LookAt.js +0 -122
  272. package/lib/engine-components/avatar/Avatar_Brain_LookAt.js.map +0 -1
  273. package/lib/engine-components/avatar/Avatar_MouthShapes.d.ts +0 -15
  274. package/lib/engine-components/avatar/Avatar_MouthShapes.js +0 -80
  275. package/lib/engine-components/avatar/Avatar_MouthShapes.js.map +0 -1
  276. package/lib/engine-components/avatar/Avatar_MustacheShake.d.ts +0 -9
  277. package/lib/engine-components/avatar/Avatar_MustacheShake.js +0 -30
  278. package/lib/engine-components/avatar/Avatar_MustacheShake.js.map +0 -1
  279. package/src/engine-components/AvatarLoader.ts +0 -264
  280. package/src/engine-components/avatar/AvatarBlink_Simple.ts +0 -70
  281. package/src/engine-components/avatar/AvatarEyeLook_Rotation.ts +0 -64
  282. package/src/engine-components/avatar/Avatar_Brain_LookAt.ts +0 -140
  283. package/src/engine-components/avatar/Avatar_MouthShapes.ts +0 -84
  284. package/src/engine-components/avatar/Avatar_MustacheShake.ts +0 -32
package/CHANGELOG.md CHANGED
@@ -4,6 +4,63 @@ 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.4] - 2026-05-06
8
+ #### Added
9
+ - `autoCleanup` on `Behaviour` — register disposables or cleanup functions tied to the component lifecycle. Automatically cleaned up on disable or destroy depending on when registered:
10
+ ```ts
11
+ onEnable() {
12
+ this.autoCleanup(on(window, "resize", () => { ... }));
13
+ this.autoCleanup(this.context.connection.beginListen("my-event", () => { ... }));
14
+ }
15
+ ```
16
+ - `TimelineBuilder` API for building timeline assets from code:
17
+ ```ts
18
+ const timeline = TimelineBuilder.create("MyTimeline")
19
+ .animationTrack("Walk", animator).clip(walkClip, { duration: 2 })
20
+ .activationTrack("FX", vfxObject).activate({ start: 1, duration: 0.5 })
21
+ .build();
22
+ director.playableAsset = timeline;
23
+ ```
24
+ - `PlayableDirector`: expose `tracks` and `activationTracks` getters, support runtime `playableAsset` assignment with automatic graph rebuild
25
+ - `PhysicsCollider`: expose `density` property, add `@validate` decorator for automatic property updates at runtime
26
+ - Timeline `AudioTrack` volume getter/setter
27
+ - `Networking`: `beginListen` now returns an unsubscribe function (backwards compatible — `stopListen` still works):
28
+ ```ts
29
+ const unsub = this.context.connection.beginListen("my-event", (data) => { ... });
30
+ unsub(); // or use this.autoCleanup(unsub)
31
+ ```
32
+
33
+ #### Changed
34
+ - Serialization: consolidated instantiate reference resolution into a unified system — fixes cloned timelines, EventLists, SignalReceivers, and deep component references not resolving correctly after `instantiate()`
35
+ - Removed legacy `AvatarLoader`, `AvatarBlink_Simple`, `AvatarEyeLook_Rotation`, `Avatar_Brain_LookAt`, `Avatar_MouthShapes`, `Avatar_MustacheShake` components
36
+
37
+ #### Fixed
38
+ - `@validate` decorator wrapping `__internalAwake` multiple times when components were re-activated
39
+ - Instantiated scenes with timeline `SignalReceiver` not resolving EventList object references
40
+ - `instantiate()` not including cloned Object3D GUIDs in the guids map
41
+ - `Light` component throwing on unsupported light types (now logs error without breaking deserialization)
42
+ - Worker URLs producing incorrect paths for SPA deployments
43
+ - Vite license and project identifier error handling for non-500 status codes
44
+ - Rapier physics `dispose()` not clearing internal state (freed world could cause crashes)
45
+
46
+ ## [5.1.0-alpha.3] - 2026-04-29
47
+ #### Added
48
+ - `AudioClip` type with standalone playback control — use with `@serializable(AudioClip)` for direct audio clip references
49
+ - `AudioSource` spatial blend support via dual-path audio graph for smooth 2D/3D crossfade
50
+ - UI Text default static font from Needle CDN with absolute font URL support
51
+ - `DragControls` EventList support
52
+
53
+ #### Fixed
54
+ - UI Text font URL resolution when loading GLBs from external hosts (e.g. CDN)
55
+ - `AudioSource` spatial rolloff factor and `play()` reliability
56
+ - `Animation` `play()` with `{ exclusive: false }` not stopping already-running clips
57
+ - XR lifecycle — spurious `onLeaveXR` calls for scripts that never entered XR
58
+ - `OrbitControls` lookBounds lerp and distance-relative gizmo sizes
59
+ - `CursorFollow` self-intersection and snapToSurface raycast direction
60
+ - Vite `makeFilesLocal` and alias plugins now respect `vite.config` `base`
61
+ - `three-mesh-bvh` worker failing to load in local dev server
62
+ - `VideoPlayer` URL serializer tree-shaken out in code-only projects
63
+ - `ReflectionProbe` not cleaning up overrides when removed
7
64
  ## [5.1.0-alpha.2] - 2026-04-13
8
65
  - **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.
9
66
  ```ts
package/SKILL.md CHANGED
@@ -58,6 +58,9 @@ export class HelloWorld extends Behaviour {
58
58
  **Code-only (no Unity/Blender):**
59
59
  Scaffold a project with `npm create needle`, write TypeScript components, and build scenes entirely from code. Use `onStart`, `onUpdate`, and other lifecycle hooks to set up scenes, or create components extending `Behaviour`. This is a fully supported first-class workflow.
60
60
 
61
+ **CDN with import maps (no bundler):**
62
+ For quick prototypes, embedding in existing sites, or projects without a build pipeline. Use `<script type="importmap">` to map bare specifiers to CDN URLs, then write standard ES module code with `import` statements — no Vite, no npm, no `node_modules` required. **Important:** three.js must come from `@needle-tools/engine/dist/three.min.js`, not a standalone three.js CDN. See [CDN & Import Maps](https://raw.githubusercontent.com/needle-tools/ai/refs/heads/main/providers/claude/plugin/skills/needle-engine/references/integration.md) for full examples and rules.
63
+
61
64
  **Unity or Blender as visual editors:**
62
65
  Unity/Blender export scenes as GLB files into `assets/`, with component data serialized in glTF extensions. At runtime, the engine deserializes this into TypeScript components. A component compiler auto-generates C# stubs (Unity) or JSON (Blender) so custom TS components appear in the editor inspector. The editors are tools for visual scene setup; the runtime is pure web/TypeScript. Note: the editor controls the engine version in `package.json` — to force a version, use `"@needle-tools/engine": "npm:@needle-tools/engine@5.0.1"`.
63
66
 
@@ -417,7 +420,7 @@ Read these **only when needed** — don't load them all upfront:
417
420
  - 🌐 [Networking](https://raw.githubusercontent.com/needle-tools/ai/refs/heads/main/providers/claude/plugin/skills/needle-engine/references/networking.md) — connection API, SyncedRoom, PlayerSync, @syncField, SyncedTransform, Voip, ScreenCapture, guid persistence
418
421
  - 🥽 [WebXR](https://raw.githubusercontent.com/needle-tools/ai/refs/heads/main/providers/claude/plugin/skills/needle-engine/references/xr.md) — VR/AR sessions, XRRig, controllers, pointer events in XR, image tracking, depth sensing, camera access, mesh detection, DOM overlay, iOS AR, multiplayer avatars
419
422
  - 🚀 [Deployment](https://raw.githubusercontent.com/needle-tools/ai/refs/heads/main/providers/claude/plugin/skills/needle-engine/references/deployment.md) — Needle Cloud (GitHub Actions, CLI), Vercel, Netlify, other platforms
420
- - 🔗 [Framework Integration](https://raw.githubusercontent.com/needle-tools/ai/refs/heads/main/providers/claude/plugin/skills/needle-engine/references/integration.md) — React, Svelte, Vue, Next.js, SvelteKit patterns
423
+ - 🔗 [Framework Integration](https://raw.githubusercontent.com/needle-tools/ai/refs/heads/main/providers/claude/plugin/skills/needle-engine/references/integration.md) — React, Svelte, Vue, Next.js, SvelteKit patterns, CDN with import maps
421
424
  - 💡 [Component Examples](https://raw.githubusercontent.com/needle-tools/ai/refs/heads/main/providers/claude/plugin/skills/needle-engine/references/examples.md) — practical examples: click handling, runtime loading, networking, materials, code-only scenes, input, coroutines
422
425
  - 🐛 [Troubleshooting](https://raw.githubusercontent.com/needle-tools/ai/refs/heads/main/providers/claude/plugin/skills/needle-engine/references/troubleshooting.md) — error messages, unexpected behavior, build failures, **runtime logs at `node_modules/.needle/logs/`**, build info
423
426
  - 🧩 [Component Template](https://raw.githubusercontent.com/needle-tools/ai/refs/heads/main/providers/claude/plugin/skills/needle-engine/templates/my-component.ts) — annotated starting point for new components