@vib3code/sdk 2.0.1-canary.261ce59 → 2.0.3-canary.0e9a1ac

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 (136) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/DOCS/AGENT_HARNESS_ARCHITECTURE.md +243 -0
  3. package/DOCS/CLI_ONBOARDING.md +1 -1
  4. package/DOCS/CROSS_SITE_DESIGN_PATTERNS.md +117 -0
  5. package/DOCS/EPIC_SCROLL_EVENTS.md +773 -0
  6. package/DOCS/HANDOFF_LANDING_PAGE.md +154 -0
  7. package/DOCS/HANDOFF_SDK_DEVELOPMENT.md +493 -0
  8. package/DOCS/MULTIVIZ_CHOREOGRAPHY_PATTERNS.md +937 -0
  9. package/DOCS/PRODUCT_STRATEGY.md +63 -0
  10. package/DOCS/README.md +103 -0
  11. package/DOCS/REFERENCE_SCROLL_ANALYSIS.md +97 -0
  12. package/DOCS/ROADMAP.md +111 -0
  13. package/DOCS/SCROLL_TIMELINE_v3.md +269 -0
  14. package/DOCS/SITE_REFACTOR_PLAN.md +100 -0
  15. package/DOCS/STATUS.md +24 -0
  16. package/DOCS/SYSTEM_INVENTORY.md +33 -30
  17. package/DOCS/VISUAL_ANALYSIS_CLICKERSS.md +85 -0
  18. package/DOCS/VISUAL_ANALYSIS_FACETAD.md +133 -0
  19. package/DOCS/VISUAL_ANALYSIS_SIMONE.md +95 -0
  20. package/DOCS/VISUAL_ANALYSIS_TABLESIDE.md +86 -0
  21. package/DOCS/{BLUEPRINT_EXECUTION_PLAN_2026-01-07.md → archive/BLUEPRINT_EXECUTION_PLAN_2026-01-07.md} +1 -1
  22. package/DOCS/{DEV_TRACK_ANALYSIS.md → archive/DEV_TRACK_ANALYSIS.md} +3 -0
  23. package/DOCS/{SYSTEM_AUDIT_2026-01-30.md → archive/SYSTEM_AUDIT_2026-01-30.md} +3 -0
  24. package/DOCS/{DEV_TRACK_SESSION_2026-01-31.md → dev-tracks/DEV_TRACK_SESSION_2026-01-31.md} +1 -1
  25. package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-06.md +231 -0
  26. package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-13.md +127 -0
  27. package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-15.md +142 -0
  28. package/DOCS/dev-tracks/README.md +10 -0
  29. package/README.md +49 -88
  30. package/cpp/CMakeLists.txt +236 -0
  31. package/cpp/bindings/embind.cpp +269 -0
  32. package/cpp/build.sh +129 -0
  33. package/cpp/geometry/Crystal.cpp +103 -0
  34. package/cpp/geometry/Fractal.cpp +136 -0
  35. package/cpp/geometry/GeometryGenerator.cpp +262 -0
  36. package/cpp/geometry/KleinBottle.cpp +71 -0
  37. package/cpp/geometry/Sphere.cpp +134 -0
  38. package/cpp/geometry/Tesseract.cpp +94 -0
  39. package/cpp/geometry/Tetrahedron.cpp +83 -0
  40. package/cpp/geometry/Torus.cpp +65 -0
  41. package/cpp/geometry/WarpFunctions.cpp +238 -0
  42. package/cpp/geometry/Wave.cpp +85 -0
  43. package/cpp/include/vib3_ffi.h +238 -0
  44. package/cpp/math/Mat4x4.cpp +409 -0
  45. package/cpp/math/Mat4x4.hpp +209 -0
  46. package/cpp/math/Projection.cpp +142 -0
  47. package/cpp/math/Projection.hpp +148 -0
  48. package/cpp/math/Rotor4D.cpp +322 -0
  49. package/cpp/math/Rotor4D.hpp +204 -0
  50. package/cpp/math/Vec4.cpp +303 -0
  51. package/cpp/math/Vec4.hpp +225 -0
  52. package/cpp/src/vib3_ffi.cpp +607 -0
  53. package/cpp/tests/Geometry_test.cpp +213 -0
  54. package/cpp/tests/Mat4x4_test.cpp +494 -0
  55. package/cpp/tests/Projection_test.cpp +298 -0
  56. package/cpp/tests/Rotor4D_test.cpp +423 -0
  57. package/cpp/tests/Vec4_test.cpp +489 -0
  58. package/package.json +15 -4
  59. package/src/agent/index.js +1 -3
  60. package/src/agent/mcp/MCPServer.js +918 -0
  61. package/src/agent/mcp/index.js +1 -1
  62. package/src/agent/mcp/stdio-server.js +264 -0
  63. package/src/agent/mcp/tools.js +454 -0
  64. package/src/cli/index.js +376 -49
  65. package/src/core/CanvasManager.js +97 -204
  66. package/src/core/ErrorReporter.js +1 -1
  67. package/src/core/Parameters.js +1 -1
  68. package/src/core/VIB3Engine.js +93 -4
  69. package/src/core/VitalitySystem.js +53 -0
  70. package/src/core/index.js +18 -0
  71. package/src/core/renderers/FacetedRendererAdapter.js +10 -9
  72. package/src/core/renderers/HolographicRendererAdapter.js +13 -9
  73. package/src/core/renderers/QuantumRendererAdapter.js +11 -7
  74. package/src/creative/AestheticMapper.js +628 -0
  75. package/src/creative/ChoreographyPlayer.js +481 -0
  76. package/src/creative/index.js +11 -0
  77. package/src/export/TradingCardManager.js +3 -4
  78. package/src/export/index.js +11 -1
  79. package/src/faceted/FacetedSystem.js +241 -388
  80. package/src/holograms/HolographicVisualizer.js +29 -12
  81. package/src/holograms/RealHolographicSystem.js +194 -43
  82. package/src/math/index.js +7 -7
  83. package/src/polychora/PolychoraSystem.js +77 -0
  84. package/src/quantum/QuantumEngine.js +103 -66
  85. package/src/quantum/QuantumVisualizer.js +7 -2
  86. package/src/reactivity/index.js +3 -5
  87. package/src/render/LayerPresetManager.js +372 -0
  88. package/src/render/LayerReactivityBridge.js +344 -0
  89. package/src/render/LayerRelationshipGraph.js +610 -0
  90. package/src/render/MultiCanvasBridge.js +148 -25
  91. package/src/render/UnifiedRenderBridge.js +3 -0
  92. package/src/render/index.js +27 -2
  93. package/src/scene/index.js +4 -4
  94. package/src/shaders/faceted/faceted.frag.glsl +220 -80
  95. package/src/shaders/faceted/faceted.frag.wgsl +138 -97
  96. package/src/shaders/holographic/holographic.frag.glsl +28 -9
  97. package/src/shaders/holographic/holographic.frag.wgsl +107 -38
  98. package/src/shaders/quantum/quantum.frag.glsl +1 -0
  99. package/src/shaders/quantum/quantum.frag.wgsl +1 -1
  100. package/src/testing/ParallelTestFramework.js +2 -2
  101. package/src/viewer/GalleryUI.js +17 -0
  102. package/src/viewer/ViewerPortal.js +2 -2
  103. package/src/viewer/index.js +1 -1
  104. package/tools/headless-renderer.js +258 -0
  105. package/tools/shader-sync-verify.js +8 -4
  106. package/tools/site-analysis/all-reports.json +32 -0
  107. package/tools/site-analysis/combined-analysis.md +50 -0
  108. package/tools/site-analyzer.mjs +779 -0
  109. package/tools/visual-catalog/capture.js +276 -0
  110. package/tools/visual-catalog/composite.js +138 -0
  111. package/types/adaptive-sdk.d.ts +204 -5
  112. package/types/agent/cli.d.ts +78 -0
  113. package/types/agent/index.d.ts +18 -0
  114. package/types/agent/mcp.d.ts +87 -0
  115. package/types/agent/telemetry.d.ts +190 -0
  116. package/types/core/VIB3Engine.d.ts +26 -0
  117. package/types/core/index.d.ts +261 -0
  118. package/types/creative/AestheticMapper.d.ts +72 -0
  119. package/types/creative/ChoreographyPlayer.d.ts +96 -0
  120. package/types/creative/index.d.ts +17 -0
  121. package/types/export/index.d.ts +243 -0
  122. package/types/geometry/index.d.ts +164 -0
  123. package/types/math/index.d.ts +214 -0
  124. package/types/render/LayerPresetManager.d.ts +78 -0
  125. package/types/render/LayerReactivityBridge.d.ts +85 -0
  126. package/types/render/LayerRelationshipGraph.d.ts +174 -0
  127. package/types/render/index.d.ts +3 -0
  128. package/types/scene/index.d.ts +204 -0
  129. package/types/systems/index.d.ts +244 -0
  130. package/types/variations/index.d.ts +62 -0
  131. package/types/viewer/index.d.ts +225 -0
  132. /package/DOCS/{DEV_TRACK_PLAN_2026-01-07.md → archive/DEV_TRACK_PLAN_2026-01-07.md} +0 -0
  133. /package/DOCS/{SESSION_014_PLAN.md → archive/SESSION_014_PLAN.md} +0 -0
  134. /package/DOCS/{SESSION_LOG_2026-01-07.md → archive/SESSION_LOG_2026-01-07.md} +0 -0
  135. /package/DOCS/{STRATEGIC_BLUEPRINT_2026-01-07.md → archive/STRATEGIC_BLUEPRINT_2026-01-07.md} +0 -0
  136. /package/src/viewer/{ReactivityManager.js → ViewerInputHandler.js} +0 -0
package/README.md CHANGED
@@ -2,10 +2,15 @@
2
2
 
3
3
  **General-purpose 4D rotation visualization SDK** for plugins, extensions, wearables, and agentic AI integration.
4
4
 
5
- [![Tests](https://img.shields.io/badge/tests-933%20passing-brightgreen)](#testing)
6
- [![Version](https://img.shields.io/badge/version-2.0.1-blue)](https://www.npmjs.com/package/@vib3code/sdk)
5
+ [![Tests](https://img.shields.io/badge/tests-CI%20tracked-brightgreen)](DOCS/STATUS.md#test-status)
6
+ [![Version](https://img.shields.io/badge/version-2.0.3-blue)](DOCS/STATUS.md#vib3-sdk-status)
7
7
  [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
8
- [![npm](https://img.shields.io/npm/v/@vib3code/sdk)](https://www.npmjs.com/package/@vib3code/sdk)
8
+
9
+ ---
10
+
11
+ ## Documentation
12
+
13
+ The main documentation entrypoint is [`DOCS/README.md`](./DOCS/README.md), which includes canonical docs, persona-based reading paths, taxonomy, and source-of-truth ownership.
9
14
 
10
15
  ---
11
16
 
@@ -17,7 +22,7 @@
17
22
  | **Rotation Planes** | 6 (XY, XZ, YZ + XW, YW, ZW) |
18
23
  | **Geometries** | 24 per system (8 base × 3 cores) |
19
24
  | **Canvas Layers** | 5 per system |
20
- | **MCP Tools** | 20 agent-accessible tools |
25
+ | **MCP Tools** | 14 agent-accessible tools |
21
26
 
22
27
  ---
23
28
 
@@ -27,10 +32,10 @@
27
32
  - **24 Geometry Variants:** 8 base shapes × 3 core warp types (Base, Hypersphere, Hypertetrahedron)
28
33
  - **6D Rotation:** Full control over 3D planes (XY/XZ/YZ) and 4D hyperspace planes (XW/YW/ZW)
29
34
  - **Audio Reactivity:** Real-time visualization response to audio input (all 3 systems)
30
- - **Agentic Integration:** MCP server with 20 tools for AI agent control
35
+ - **Agentic Integration:** MCP server with 14 tools for AI agent control
31
36
  - **Cross-Platform:** Web, WASM, Flutter support
32
37
 
33
- ### New in v2.0.0
38
+ ### New in current release (v2.0.x)
34
39
 
35
40
  - **Universal Spatial Input:** 8 input sources (tilt, gyroscope, gamepad, mouse, MIDI, audio, programmatic, perspective) with 6 built-in profiles (card tilt, wearable, game, VJ, UI, XR)
36
41
  - **Creative Tooling:** 22 color presets, 14 easing transitions, 14 post-processing effects, keyframe timeline with BPM sync
@@ -42,56 +47,28 @@
42
47
 
43
48
  ## Quick Start
44
49
 
45
- ### 1. Install
50
+ ```bash
51
+ # Scaffold a new project
52
+ npx @vib3code/sdk init my-app
53
+ cd my-app
54
+ npm install
55
+ npm run dev
56
+ ```
57
+
58
+ Or add to an existing project:
46
59
 
47
60
  ```bash
48
61
  npm install @vib3code/sdk
49
62
  ```
50
63
 
51
- ### 2. Render in 5 lines
52
-
53
64
  ```javascript
54
65
  import { VIB3Engine } from '@vib3code/sdk/core';
55
66
 
56
67
  const engine = new VIB3Engine();
57
- (async () => {
58
- await engine.initialize();
59
- await engine.switchSystem('quantum');
60
- engine.setParameter('geometry', 10); // Hypersphere + Sphere
61
- engine.setParameter('hue', 200);
62
- })();
63
- ```
64
-
65
- ### 3. Complete working example
66
-
67
- Copy this into an HTML file and open it:
68
-
69
- ```html
70
- <!DOCTYPE html>
71
- <html>
72
- <body style="margin:0;background:#000;">
73
- <div id="vib3" style="width:100vw;height:100vh;"></div>
74
- <script type="module">
75
- import { VIB3Engine } from '@vib3code/sdk/core';
76
- const engine = new VIB3Engine();
77
- (async () => {
78
- await engine.initialize('vib3');
79
- await engine.switchSystem('quantum');
80
- engine.setParameter('geometry', 10);
81
- engine.setParameter('rot4dXW', 1.57);
82
- })();
83
- </script>
84
- </body>
85
- </html>
86
- ```
87
-
88
- ### 4. Or scaffold a full project
89
-
90
- ```bash
91
- npx @vib3code/sdk init my-app
92
- cd my-app
93
- npm install
94
- npm run dev
68
+ await engine.initialize();
69
+ await engine.switchSystem('quantum');
70
+ engine.setParameter('geometry', 10);
71
+ engine.setParameter('hue', 200);
95
72
  ```
96
73
 
97
74
  ### Development (this repo)
@@ -205,7 +182,7 @@ engine.randomizeAll();
205
182
  engine.resetAll();
206
183
  ```
207
184
 
208
- ### Spatial Input API (v2.0.0)
185
+ ### Spatial Input API (v2.0.x)
209
186
 
210
187
  ```javascript
211
188
  // Enable spatial input with a profile
@@ -223,7 +200,7 @@ engine.setSpatialDramaticMode(true); // 8x amplification
223
200
  // vjAudioSpatial, uiElement, immersiveXR
224
201
  ```
225
202
 
226
- ### Framework Integration (v2.0.0)
203
+ ### Framework Integration (v2.0.x)
227
204
 
228
205
  ```javascript
229
206
  // React
@@ -377,17 +354,17 @@ echo 'geometry 10' | node src/cli/index.js
377
354
  │ │ ├── cli/ # CLI interface
378
355
  │ │ └── telemetry/ # Instrumentation
379
356
  │ ├── export/ # Export generators
380
- │ ├── reactivity/ # Reactivity + SpatialInputSystem (v2.0.0)
381
- │ ├── creative/ # Color presets, transitions, post-FX, timeline (v2.0.0)
382
- │ ├── integrations/ # React, Vue, Svelte, Figma, Three.js, TD, OBS (v2.0.0)
383
- │ └── advanced/ # WebXR, WebGPU compute, MIDI, AI, Worker (v2.0.0)
357
+ │ ├── reactivity/ # Reactivity + SpatialInputSystem (current release series)
358
+ │ ├── creative/ # Color presets, transitions, post-FX, timeline (current release series)
359
+ │ ├── integrations/ # React, Vue, Svelte, Figma, Three.js, TD, OBS (current release series)
360
+ │ └── advanced/ # WebXR, WebGPU compute, MIDI, AI, Worker (current release series)
384
361
  ├── tools/ # Tooling (+ shader-sync-verify.js)
385
362
  ├── cpp/ # C++ math core (WASM)
386
363
  ├── js/ # Client-side integration
387
- ├── tests/ # Test suite (933 tests)
364
+ ├── tests/ # Test suite (CI-tracked status)
388
365
  ├── DOCS/ # Documentation
389
366
  │ ├── SYSTEM_INVENTORY.md # Complete system reference
390
- │ ├── SYSTEM_AUDIT_2026-01-30.md # Full system audit
367
+ │ ├── archive/SYSTEM_AUDIT_2026-01-30.md # Full system audit (archived)
391
368
  │ ├── CLI_ONBOARDING.md # Agent CLI setup
392
369
  │ └── CONTROL_REFERENCE.md # UI parameters
393
370
  └── types/ # TypeScript definitions
@@ -408,44 +385,28 @@ npm test -- --coverage
408
385
  npm test -- tests/agent/AgentCLI.test.js
409
386
  ```
410
387
 
411
- **Current Status:** 933 tests passing
412
-
413
- ---
414
-
415
- ## Bundle Size
416
-
417
- | Import | Gzipped | Description |
418
- |--------|---------|-------------|
419
- | Full package (npm) | ~653 KB | All systems, integrations, advanced features |
420
- | `@vib3code/sdk/core` | ~15 KB | Engine only, no visualization systems |
421
- | `+ quantum` | ~45 KB | Core + Quantum system |
422
- | `+ faceted` | ~40 KB | Core + Faceted system |
423
- | `+ holographic` | ~50 KB | Core + Holographic system |
424
-
425
- Run `npm run analyze:bundle` to inspect your specific imports.
388
+ **Current Status:** See [`DOCS/STATUS.md`](DOCS/STATUS.md) for release and CI-linked test status.
426
389
 
427
390
  ---
428
391
 
429
392
  ## Documentation
430
393
 
431
- **Start here:**
432
-
433
- | Document | What you'll learn |
434
- |----------|-------------------|
435
- | [`CLAUDE.md`](CLAUDE.md) | Full technical reference — architecture, shader system, all APIs |
436
- | [`DOCS/SYSTEM_INVENTORY.md`](DOCS/SYSTEM_INVENTORY.md) | Complete system inventory with line counts and capabilities |
437
- | [`DOCS/CONTROL_REFERENCE.md`](DOCS/CONTROL_REFERENCE.md) | Every parameter, its range, and what it does |
438
-
439
- **Deep dives:**
440
-
441
- | Document | What you'll learn |
442
- |----------|-------------------|
443
- | [`DOCS/SYSTEM_AUDIT_2026-01-30.md`](DOCS/SYSTEM_AUDIT_2026-01-30.md) | Full system audit — what works, what doesn't, what's planned |
444
- | [`DOCS/CLI_ONBOARDING.md`](DOCS/CLI_ONBOARDING.md) | Setting up the agent CLI interface |
445
- | [`DOCS/GPU_DISPOSAL_GUIDE.md`](DOCS/GPU_DISPOSAL_GUIDE.md) | WebGL context lifecycle and resource management |
446
- | [`DOCS/EXPORT_FORMATS.md`](DOCS/EXPORT_FORMATS.md) | VIB3Package, Trading Card, Lottie export specs |
447
- | [`DOCS/OBS_SETUP_GUIDE.md`](DOCS/OBS_SETUP_GUIDE.md) | OBS browser source integration |
448
- | [`24-GEOMETRY-6D-ROTATION-SUMMARY.md`](24-GEOMETRY-6D-ROTATION-SUMMARY.md) | Geometry encoding formula and all 24 variants |
394
+ | Document | Description |
395
+ |----------|-------------|
396
+ | [`DOCS/STATUS.md`](DOCS/STATUS.md) | Canonical release status (version, date, platforms, CI test status) |
397
+ | [`DOCS/SYSTEM_INVENTORY.md`](DOCS/SYSTEM_INVENTORY.md) | Complete technical reference |
398
+ | [`DOCS/SYSTEM_AUDIT_2026-01-30.md`](DOCS/SYSTEM_AUDIT_2026-01-30.md) | Full system audit |
399
+ | [`DOCS/SYSTEM_INVENTORY.md`](DOCS/SYSTEM_INVENTORY.md) | Complete technical reference (v2.0.0) |
400
+ | [`DOCS/PRODUCT_STRATEGY.md`](DOCS/PRODUCT_STRATEGY.md) | Product strategy: personas, use-cases, differentiation, and metrics |
401
+ | [`DOCS/ROADMAP.md`](DOCS/ROADMAP.md) | Strategy goals mapped to technical epics and module ownership |
402
+ | [`DOCS/README.md`](DOCS/README.md) | Documentation index and navigation hub |
403
+ | [`DOCS/SYSTEM_AUDIT_2026-01-30.md`](DOCS/SYSTEM_AUDIT_2026-01-30.md) | Full system audit (v2.0.0) |
404
+ | [`DOCS/archive/SYSTEM_AUDIT_2026-01-30.md`](DOCS/archive/SYSTEM_AUDIT_2026-01-30.md) | Full system audit (v2.0.0, archived) |
405
+ | [`DOCS/CLI_ONBOARDING.md`](DOCS/CLI_ONBOARDING.md) | Agent CLI setup guide |
406
+ | [`DOCS/CONTROL_REFERENCE.md`](DOCS/CONTROL_REFERENCE.md) | UI parameter reference |
407
+ | [`24-GEOMETRY-6D-ROTATION-SUMMARY.md`](24-GEOMETRY-6D-ROTATION-SUMMARY.md) | Geometry encoding details |
408
+ | [`DOCS/GPU_DISPOSAL_GUIDE.md`](DOCS/GPU_DISPOSAL_GUIDE.md) | Resource management |
409
+ | [`CLAUDE.md`](CLAUDE.md) | AI/Developer technical reference |
449
410
 
450
411
  ---
451
412
 
@@ -0,0 +1,236 @@
1
+ cmake_minimum_required(VERSION 3.20)
2
+ project(vib3_core VERSION 1.0.0 LANGUAGES CXX)
3
+
4
+ # C++20 required for concepts, ranges, and std::numbers
5
+ set(CMAKE_CXX_STANDARD 20)
6
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
7
+ set(CMAKE_CXX_EXTENSIONS OFF)
8
+
9
+ # Build options
10
+ option(VIB3_BUILD_WASM "Build WebAssembly module" ON)
11
+ option(VIB3_BUILD_TESTS "Build unit tests" ON)
12
+ option(VIB3_ENABLE_SIMD "Enable SIMD optimizations" ON)
13
+ option(VIB3_ENABLE_THREADS "Enable threading support" OFF)
14
+
15
+ # Output directories
16
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
17
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
18
+ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
19
+
20
+ # Compiler warnings
21
+ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
22
+ add_compile_options(
23
+ -Wall
24
+ -Wextra
25
+ -Wpedantic
26
+ -Wconversion
27
+ -Wsign-conversion
28
+ -Wno-unused-parameter
29
+ )
30
+ endif()
31
+
32
+ # SIMD support
33
+ if(VIB3_ENABLE_SIMD)
34
+ if(EMSCRIPTEN)
35
+ add_compile_options(-msimd128)
36
+ add_link_options(-msimd128)
37
+ elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
38
+ # Detect CPU architecture
39
+ include(CheckCXXCompilerFlag)
40
+ check_cxx_compiler_flag("-mavx2" COMPILER_SUPPORTS_AVX2)
41
+ check_cxx_compiler_flag("-msse4.1" COMPILER_SUPPORTS_SSE41)
42
+
43
+ if(COMPILER_SUPPORTS_AVX2)
44
+ add_compile_options(-mavx2 -mfma)
45
+ add_definitions(-DVIB3_HAS_AVX2)
46
+ elseif(COMPILER_SUPPORTS_SSE41)
47
+ add_compile_options(-msse4.1)
48
+ add_definitions(-DVIB3_HAS_SSE41)
49
+ endif()
50
+ endif()
51
+ endif()
52
+
53
+ # Math library (required)
54
+ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/math/Vec4.cpp")
55
+ add_library(vib3_math STATIC
56
+ math/Vec4.cpp
57
+ math/Rotor4D.cpp
58
+ math/Mat4x4.cpp
59
+ math/Projection.cpp
60
+ )
61
+
62
+ target_include_directories(vib3_math PUBLIC
63
+ ${CMAKE_CURRENT_SOURCE_DIR}
64
+ )
65
+ else()
66
+ message(WARNING "VIB3: math/ directory not found, skipping vib3_math library")
67
+ endif()
68
+
69
+ # Geometry library (optional — may not exist in Flutter/submodule checkouts)
70
+ if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/geometry/GeometryGenerator.cpp")
71
+ add_library(vib3_geometry STATIC
72
+ geometry/GeometryGenerator.cpp
73
+ geometry/Tesseract.cpp
74
+ geometry/Tetrahedron.cpp
75
+ geometry/Sphere.cpp
76
+ geometry/Torus.cpp
77
+ geometry/KleinBottle.cpp
78
+ geometry/Fractal.cpp
79
+ geometry/Wave.cpp
80
+ geometry/Crystal.cpp
81
+ geometry/WarpFunctions.cpp
82
+ )
83
+
84
+ target_link_libraries(vib3_geometry PUBLIC vib3_math)
85
+
86
+ target_include_directories(vib3_geometry PUBLIC
87
+ ${CMAKE_CURRENT_SOURCE_DIR}
88
+ )
89
+ else()
90
+ message(WARNING "VIB3: geometry/ directory not found, skipping vib3_geometry library")
91
+ endif()
92
+
93
+ # WebAssembly build
94
+ if(EMSCRIPTEN AND VIB3_BUILD_WASM AND TARGET vib3_math AND TARGET vib3_geometry)
95
+ # Combined WASM module
96
+ add_executable(vib3_wasm
97
+ bindings/embind.cpp
98
+ )
99
+
100
+ target_link_libraries(vib3_wasm PRIVATE
101
+ vib3_math
102
+ vib3_geometry
103
+ )
104
+
105
+ # Emscripten settings
106
+ set_target_properties(vib3_wasm PROPERTIES
107
+ OUTPUT_NAME "vib3"
108
+ SUFFIX ".js"
109
+ )
110
+
111
+ # Emscripten link options
112
+ target_link_options(vib3_wasm PRIVATE
113
+ # Output formats
114
+ -sWASM=1
115
+ -sMODULARIZE=1
116
+ -sEXPORT_NAME=createVIB3Module
117
+ -sEXPORT_ES6=1
118
+
119
+ # Memory settings
120
+ -sALLOW_MEMORY_GROWTH=1
121
+ -sINITIAL_MEMORY=16777216 # 16MB initial
122
+ -sMAXIMUM_MEMORY=268435456 # 256MB max
123
+ -sSTACK_SIZE=1048576 # 1MB stack
124
+
125
+ # Bindings
126
+ --bind
127
+ -sNO_DISABLE_EXCEPTION_CATCHING
128
+
129
+ # Optimizations
130
+ -sASSERTIONS=0
131
+ -sMALLOC=emmalloc
132
+
133
+ # Environment
134
+ -sENVIRONMENT=web,worker
135
+ -sFILESYSTEM=0
136
+ -sNO_EXIT_RUNTIME=1
137
+
138
+ # TypeScript definitions
139
+ --emit-tsd vib3.d.ts
140
+ )
141
+
142
+ # SIMD for WASM
143
+ if(VIB3_ENABLE_SIMD)
144
+ target_link_options(vib3_wasm PRIVATE -msimd128)
145
+ endif()
146
+
147
+ # Threading for WASM (optional)
148
+ if(VIB3_ENABLE_THREADS)
149
+ target_link_options(vib3_wasm PRIVATE
150
+ -pthread
151
+ -sPTHREAD_POOL_SIZE=4
152
+ )
153
+ endif()
154
+
155
+ # Debug vs Release
156
+ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
157
+ target_link_options(vib3_wasm PRIVATE
158
+ -sASSERTIONS=2
159
+ -sSAFE_HEAP=1
160
+ -sSTACK_OVERFLOW_CHECK=2
161
+ -g
162
+ )
163
+ else()
164
+ target_link_options(vib3_wasm PRIVATE
165
+ -O3
166
+ -flto
167
+ --closure 1
168
+ )
169
+ endif()
170
+
171
+ # Install WASM files
172
+ install(
173
+ FILES
174
+ ${CMAKE_BINARY_DIR}/bin/vib3.js
175
+ ${CMAKE_BINARY_DIR}/bin/vib3.wasm
176
+ ${CMAKE_BINARY_DIR}/bin/vib3.d.ts
177
+ DESTINATION ${CMAKE_SOURCE_DIR}/../dist/wasm
178
+ )
179
+ endif()
180
+
181
+ # Native tests (not for WASM, only if sources exist)
182
+ if(VIB3_BUILD_TESTS AND NOT EMSCRIPTEN AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/Vec4_test.cpp")
183
+ enable_testing()
184
+
185
+ # Find or fetch GoogleTest
186
+ include(FetchContent)
187
+ FetchContent_Declare(
188
+ googletest
189
+ URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip
190
+ )
191
+ FetchContent_MakeAvailable(googletest)
192
+
193
+ # Math tests
194
+ if(TARGET vib3_math)
195
+ add_executable(math_tests
196
+ tests/Vec4_test.cpp
197
+ tests/Rotor4D_test.cpp
198
+ tests/Mat4x4_test.cpp
199
+ tests/Projection_test.cpp
200
+ )
201
+
202
+ target_link_libraries(math_tests PRIVATE
203
+ vib3_math
204
+ GTest::gtest_main
205
+ )
206
+
207
+ include(GoogleTest)
208
+ gtest_discover_tests(math_tests)
209
+ endif()
210
+
211
+ # Geometry tests
212
+ if(TARGET vib3_geometry AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/Geometry_test.cpp")
213
+ add_executable(geometry_tests
214
+ tests/Geometry_test.cpp
215
+ )
216
+
217
+ target_link_libraries(geometry_tests PRIVATE
218
+ vib3_geometry
219
+ GTest::gtest_main
220
+ )
221
+
222
+ gtest_discover_tests(geometry_tests)
223
+ endif()
224
+ endif()
225
+
226
+ # Print configuration summary
227
+ message(STATUS "")
228
+ message(STATUS "VIB3 Core Configuration:")
229
+ message(STATUS " Version: ${PROJECT_VERSION}")
230
+ message(STATUS " C++ Standard: ${CMAKE_CXX_STANDARD}")
231
+ message(STATUS " Build WASM: ${VIB3_BUILD_WASM}")
232
+ message(STATUS " Build Tests: ${VIB3_BUILD_TESTS}")
233
+ message(STATUS " Enable SIMD: ${VIB3_ENABLE_SIMD}")
234
+ message(STATUS " Enable Threads:${VIB3_ENABLE_THREADS}")
235
+ message(STATUS " Build Type: ${CMAKE_BUILD_TYPE}")
236
+ message(STATUS "")