@vib3code/sdk 2.0.1
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.
- package/CHANGELOG.md +118 -0
- package/DOCS/BLUEPRINT_EXECUTION_PLAN_2026-01-07.md +34 -0
- package/DOCS/CI_TESTING.md +38 -0
- package/DOCS/CLI_ONBOARDING.md +75 -0
- package/DOCS/CONTROL_REFERENCE.md +64 -0
- package/DOCS/DEV_TRACK_ANALYSIS.md +77 -0
- package/DOCS/DEV_TRACK_PLAN_2026-01-07.md +42 -0
- package/DOCS/DEV_TRACK_SESSION_2026-01-31.md +220 -0
- package/DOCS/ENV_SETUP.md +189 -0
- package/DOCS/EXPORT_FORMATS.md +417 -0
- package/DOCS/GPU_DISPOSAL_GUIDE.md +21 -0
- package/DOCS/LICENSING_TIERS.md +275 -0
- package/DOCS/MASTER_PLAN_2026-01-31.md +570 -0
- package/DOCS/OBS_SETUP_GUIDE.md +98 -0
- package/DOCS/PROJECT_SETUP.md +66 -0
- package/DOCS/RENDERER_LIFECYCLE.md +40 -0
- package/DOCS/REPO_MANIFEST.md +121 -0
- package/DOCS/SESSION_014_PLAN.md +195 -0
- package/DOCS/SESSION_LOG_2026-01-07.md +56 -0
- package/DOCS/STRATEGIC_BLUEPRINT_2026-01-07.md +72 -0
- package/DOCS/SYSTEM_AUDIT_2026-01-30.md +738 -0
- package/DOCS/SYSTEM_INVENTORY.md +520 -0
- package/DOCS/TELEMETRY_EXPORTS.md +34 -0
- package/DOCS/WEBGPU_STATUS.md +38 -0
- package/DOCS/XR_BENCHMARKS.md +608 -0
- package/LICENSE +21 -0
- package/README.md +426 -0
- package/docs/.nojekyll +0 -0
- package/docs/01-dissolution_of_euclidean_hegemony.html +346 -0
- package/docs/02-hyperspatial_ego_death.html +346 -0
- package/docs/03-post_cartesian_sublime.html +346 -0
- package/docs/04-crystalline_void_meditation.html +346 -0
- package/docs/05-quantum_decoherence_ballet.html +346 -0
- package/docs/06-dissolution_of_euclidean_hegemony.html +346 -0
- package/docs/07-hyperspatial_ego_death.html +346 -0
- package/docs/08-post_cartesian_sublime.html +346 -0
- package/docs/09-crystalline_void_meditation.html +346 -0
- package/docs/10-quantum_decoherence_ballet.html +346 -0
- package/docs/11-dissolution_of_euclidean_hegemony.html +346 -0
- package/docs/12-hyperspatial_ego_death.html +346 -0
- package/docs/13-post_cartesian_sublime.html +346 -0
- package/docs/index.html +794 -0
- package/docs/test-hub.html +441 -0
- package/docs/url-state.js +102 -0
- package/docs/vib3-exports/01-quantum-quantum-tetrahedron-lattice.html +489 -0
- package/docs/vib3-exports/02-quantum-quantum-hypersphere-matrix.html +489 -0
- package/docs/vib3-exports/03-quantum-quantum-hypertetra-fractal.html +489 -0
- package/docs/vib3-exports/04-faceted-faceted-crystal-structure.html +407 -0
- package/docs/vib3-exports/05-faceted-faceted-klein-bottle.html +407 -0
- package/docs/vib3-exports/06-faceted-faceted-hypertetra-torus.html +407 -0
- package/docs/vib3-exports/07-holographic-holographic-wave-field.html +457 -0
- package/docs/vib3-exports/08-holographic-holographic-hypersphere-sphere.html +457 -0
- package/docs/vib3-exports/09-holographic-holographic-hypertetra-crystal.html +457 -0
- package/docs/vib3-exports/index.html +238 -0
- package/docs/webgpu-live.html +702 -0
- package/package.json +367 -0
- package/src/advanced/AIPresetGenerator.js +777 -0
- package/src/advanced/MIDIController.js +703 -0
- package/src/advanced/OffscreenWorker.js +1051 -0
- package/src/advanced/WebGPUCompute.js +1051 -0
- package/src/advanced/WebXRRenderer.js +680 -0
- package/src/agent/cli/AgentCLI.js +615 -0
- package/src/agent/cli/index.js +14 -0
- package/src/agent/index.js +73 -0
- package/src/agent/mcp/MCPServer.js +950 -0
- package/src/agent/mcp/index.js +9 -0
- package/src/agent/mcp/tools.js +548 -0
- package/src/agent/telemetry/EventStream.js +669 -0
- package/src/agent/telemetry/Instrumentation.js +618 -0
- package/src/agent/telemetry/TelemetryExporters.js +427 -0
- package/src/agent/telemetry/TelemetryService.js +464 -0
- package/src/agent/telemetry/index.js +52 -0
- package/src/benchmarks/BenchmarkRunner.js +381 -0
- package/src/benchmarks/MetricsCollector.js +299 -0
- package/src/benchmarks/index.js +9 -0
- package/src/benchmarks/scenes.js +259 -0
- package/src/cli/index.js +675 -0
- package/src/config/ApiConfig.js +88 -0
- package/src/core/CanvasManager.js +217 -0
- package/src/core/ErrorReporter.js +117 -0
- package/src/core/ParameterMapper.js +333 -0
- package/src/core/Parameters.js +396 -0
- package/src/core/RendererContracts.js +200 -0
- package/src/core/UnifiedResourceManager.js +370 -0
- package/src/core/VIB3Engine.js +636 -0
- package/src/core/renderers/FacetedRendererAdapter.js +32 -0
- package/src/core/renderers/HolographicRendererAdapter.js +29 -0
- package/src/core/renderers/QuantumRendererAdapter.js +29 -0
- package/src/core/renderers/RendererLifecycleManager.js +63 -0
- package/src/creative/ColorPresetsSystem.js +980 -0
- package/src/creative/ParameterTimeline.js +1061 -0
- package/src/creative/PostProcessingPipeline.js +1113 -0
- package/src/creative/TransitionAnimator.js +683 -0
- package/src/export/CSSExporter.js +226 -0
- package/src/export/CardGeneratorBase.js +279 -0
- package/src/export/ExportManager.js +580 -0
- package/src/export/FacetedCardGenerator.js +279 -0
- package/src/export/HolographicCardGenerator.js +543 -0
- package/src/export/LottieExporter.js +552 -0
- package/src/export/QuantumCardGenerator.js +315 -0
- package/src/export/SVGExporter.js +519 -0
- package/src/export/ShaderExporter.js +903 -0
- package/src/export/TradingCardGenerator.js +3055 -0
- package/src/export/TradingCardManager.js +181 -0
- package/src/export/VIB3PackageExporter.js +559 -0
- package/src/export/index.js +14 -0
- package/src/export/systems/TradingCardSystemFaceted.js +494 -0
- package/src/export/systems/TradingCardSystemHolographic.js +452 -0
- package/src/export/systems/TradingCardSystemQuantum.js +411 -0
- package/src/faceted/FacetedSystem.js +963 -0
- package/src/features/CollectionManager.js +433 -0
- package/src/gallery/CollectionManager.js +240 -0
- package/src/gallery/GallerySystem.js +485 -0
- package/src/geometry/GeometryFactory.js +314 -0
- package/src/geometry/GeometryLibrary.js +72 -0
- package/src/geometry/buffers/BufferBuilder.js +338 -0
- package/src/geometry/buffers/index.js +18 -0
- package/src/geometry/generators/Crystal.js +420 -0
- package/src/geometry/generators/Fractal.js +298 -0
- package/src/geometry/generators/KleinBottle.js +197 -0
- package/src/geometry/generators/Sphere.js +192 -0
- package/src/geometry/generators/Tesseract.js +160 -0
- package/src/geometry/generators/Tetrahedron.js +225 -0
- package/src/geometry/generators/Torus.js +304 -0
- package/src/geometry/generators/Wave.js +341 -0
- package/src/geometry/index.js +142 -0
- package/src/geometry/warp/HypersphereCore.js +211 -0
- package/src/geometry/warp/HypertetraCore.js +386 -0
- package/src/geometry/warp/index.js +57 -0
- package/src/holograms/HolographicVisualizer.js +1073 -0
- package/src/holograms/RealHolographicSystem.js +966 -0
- package/src/holograms/variantRegistry.js +69 -0
- package/src/integrations/FigmaPlugin.js +854 -0
- package/src/integrations/OBSMode.js +754 -0
- package/src/integrations/ThreeJsPackage.js +660 -0
- package/src/integrations/TouchDesignerExport.js +552 -0
- package/src/integrations/frameworks/Vib3React.js +591 -0
- package/src/integrations/frameworks/Vib3Svelte.js +654 -0
- package/src/integrations/frameworks/Vib3Vue.js +628 -0
- package/src/llm/LLMParameterInterface.js +240 -0
- package/src/llm/LLMParameterUI.js +577 -0
- package/src/math/Mat4x4.js +708 -0
- package/src/math/Projection.js +341 -0
- package/src/math/Rotor4D.js +637 -0
- package/src/math/Vec4.js +476 -0
- package/src/math/constants.js +164 -0
- package/src/math/index.js +68 -0
- package/src/math/projections.js +54 -0
- package/src/math/rotations.js +196 -0
- package/src/quantum/QuantumEngine.js +906 -0
- package/src/quantum/QuantumVisualizer.js +1103 -0
- package/src/reactivity/ReactivityConfig.js +499 -0
- package/src/reactivity/ReactivityManager.js +586 -0
- package/src/reactivity/SpatialInputSystem.js +1783 -0
- package/src/reactivity/index.js +93 -0
- package/src/render/CommandBuffer.js +465 -0
- package/src/render/MultiCanvasBridge.js +340 -0
- package/src/render/RenderCommand.js +514 -0
- package/src/render/RenderResourceRegistry.js +523 -0
- package/src/render/RenderState.js +552 -0
- package/src/render/RenderTarget.js +512 -0
- package/src/render/ShaderLoader.js +253 -0
- package/src/render/ShaderProgram.js +599 -0
- package/src/render/UnifiedRenderBridge.js +496 -0
- package/src/render/backends/WebGLBackend.js +1108 -0
- package/src/render/backends/WebGPUBackend.js +1409 -0
- package/src/render/commands/CommandBufferExecutor.js +607 -0
- package/src/render/commands/RenderCommandBuffer.js +661 -0
- package/src/render/commands/index.js +17 -0
- package/src/render/index.js +367 -0
- package/src/scene/Disposable.js +498 -0
- package/src/scene/MemoryPool.js +618 -0
- package/src/scene/Node4D.js +697 -0
- package/src/scene/ResourceManager.js +599 -0
- package/src/scene/Scene4D.js +540 -0
- package/src/scene/index.js +98 -0
- package/src/schemas/error.schema.json +84 -0
- package/src/schemas/extension.schema.json +88 -0
- package/src/schemas/index.js +214 -0
- package/src/schemas/parameters.schema.json +142 -0
- package/src/schemas/tool-pack.schema.json +44 -0
- package/src/schemas/tool-response.schema.json +127 -0
- package/src/shaders/common/fullscreen.vert.glsl +5 -0
- package/src/shaders/common/fullscreen.vert.wgsl +17 -0
- package/src/shaders/common/geometry24.glsl +65 -0
- package/src/shaders/common/geometry24.wgsl +54 -0
- package/src/shaders/common/rotation4d.glsl +85 -0
- package/src/shaders/common/rotation4d.wgsl +86 -0
- package/src/shaders/common/uniforms.glsl +44 -0
- package/src/shaders/common/uniforms.wgsl +48 -0
- package/src/shaders/faceted/faceted.frag.glsl +129 -0
- package/src/shaders/faceted/faceted.frag.wgsl +164 -0
- package/src/shaders/holographic/holographic.frag.glsl +406 -0
- package/src/shaders/holographic/holographic.frag.wgsl +185 -0
- package/src/shaders/quantum/quantum.frag.glsl +513 -0
- package/src/shaders/quantum/quantum.frag.wgsl +361 -0
- package/src/testing/ParallelTestFramework.js +519 -0
- package/src/testing/__snapshots__/exportFormats.test.js.snap +24 -0
- package/src/testing/exportFormats.test.js +8 -0
- package/src/testing/projections.test.js +14 -0
- package/src/testing/rotations.test.js +37 -0
- package/src/ui/InteractivityMenu.js +516 -0
- package/src/ui/StatusManager.js +96 -0
- package/src/ui/adaptive/renderers/webgpu/BufferLayout.ts +252 -0
- package/src/ui/adaptive/renderers/webgpu/PolytopeInstanceBuffer.ts +144 -0
- package/src/ui/adaptive/renderers/webgpu/TripleBufferedUniform.ts +170 -0
- package/src/ui/adaptive/renderers/webgpu/WebGPURenderer.ts +735 -0
- package/src/ui/adaptive/renderers/webgpu/index.ts +112 -0
- package/src/variations/VariationManager.js +431 -0
- package/src/viewer/AudioReactivity.js +505 -0
- package/src/viewer/CardBending.js +481 -0
- package/src/viewer/GalleryUI.js +832 -0
- package/src/viewer/ReactivityManager.js +590 -0
- package/src/viewer/TradingCardExporter.js +600 -0
- package/src/viewer/ViewerPortal.js +374 -0
- package/src/viewer/index.js +12 -0
- package/src/wasm/WasmLoader.js +296 -0
- package/src/wasm/index.js +132 -0
- package/tools/agentic/mcpTools.js +88 -0
- package/tools/cli/agent-cli.js +92 -0
- package/tools/export/formats.js +24 -0
- package/tools/math/rotation-baseline.mjs +64 -0
- package/tools/shader-sync-verify.js +937 -0
- package/tools/telemetry/manifestPipeline.js +141 -0
- package/tools/telemetry/telemetryEvents.js +35 -0
- package/types/adaptive-sdk.d.ts +185 -0
- package/types/advanced/AIPresetGenerator.d.ts +81 -0
- package/types/advanced/MIDIController.d.ts +100 -0
- package/types/advanced/OffscreenWorker.d.ts +82 -0
- package/types/advanced/WebGPUCompute.d.ts +52 -0
- package/types/advanced/WebXRRenderer.d.ts +77 -0
- package/types/advanced/index.d.ts +46 -0
- package/types/core/ErrorReporter.d.ts +50 -0
- package/types/core/VIB3Engine.d.ts +204 -0
- package/types/creative/ColorPresetsSystem.d.ts +91 -0
- package/types/creative/ParameterTimeline.d.ts +74 -0
- package/types/creative/PostProcessingPipeline.d.ts +109 -0
- package/types/creative/TransitionAnimator.d.ts +71 -0
- package/types/creative/index.d.ts +35 -0
- package/types/integrations/FigmaPlugin.d.ts +46 -0
- package/types/integrations/OBSMode.d.ts +74 -0
- package/types/integrations/ThreeJsPackage.d.ts +62 -0
- package/types/integrations/TouchDesignerExport.d.ts +36 -0
- package/types/integrations/Vib3React.d.ts +74 -0
- package/types/integrations/Vib3Svelte.d.ts +63 -0
- package/types/integrations/Vib3Vue.d.ts +55 -0
- package/types/integrations/index.d.ts +52 -0
- package/types/reactivity/SpatialInputSystem.d.ts +173 -0
- package/types/reactivity/index.d.ts +394 -0
- package/types/render/CommandBuffer.d.ts +169 -0
- package/types/render/RenderCommand.d.ts +312 -0
- package/types/render/RenderState.d.ts +279 -0
- package/types/render/RenderTarget.d.ts +254 -0
- package/types/render/ShaderProgram.d.ts +277 -0
- package/types/render/UnifiedRenderBridge.d.ts +143 -0
- package/types/render/WebGLBackend.d.ts +168 -0
- package/types/render/WebGPUBackend.d.ts +186 -0
- package/types/render/index.d.ts +141 -0
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
# Export formats
|
|
2
|
+
|
|
3
|
+
This reference documents the target export formats supported by the agentic pipelines and how they are validated.
|
|
4
|
+
|
|
5
|
+
## Supported formats
|
|
6
|
+
|
|
7
|
+
| Format | Extension | Description | License Tier |
|
|
8
|
+
|--------|-----------|-------------|--------------|
|
|
9
|
+
| SVG Sprite Sheet | `.svg` | Vector sprites for web or design tooling | Community (3/day) |
|
|
10
|
+
| Lottie JSON | `.json` | Motion-friendly JSON payloads for animation pipelines | Indie+ |
|
|
11
|
+
| CSS Variables | `.css` | Theme-ready CSS custom properties | Indie+ |
|
|
12
|
+
| Scene Pack | `.vib3` | Full scene serialization with parameters | All |
|
|
13
|
+
| PNG Raster | `.png` | High-resolution raster export | All |
|
|
14
|
+
|
|
15
|
+
## Format specifications
|
|
16
|
+
|
|
17
|
+
### SVG Sprite Sheet (`svg-sprite`)
|
|
18
|
+
|
|
19
|
+
Exports the current visualization frame as optimized SVG.
|
|
20
|
+
|
|
21
|
+
**Features:**
|
|
22
|
+
- Preserves vector paths for infinite scaling
|
|
23
|
+
- Includes all 3D projected geometry as 2D paths
|
|
24
|
+
- Supports transparency and gradients
|
|
25
|
+
- Embeds color palette as CSS variables
|
|
26
|
+
|
|
27
|
+
**Schema:**
|
|
28
|
+
```xml
|
|
29
|
+
<svg xmlns="http://www.w3.org/2000/svg"
|
|
30
|
+
viewBox="0 0 {width} {height}"
|
|
31
|
+
data-vib3-geometry="{geometryId}"
|
|
32
|
+
data-vib3-system="{system}">
|
|
33
|
+
<defs>
|
|
34
|
+
<style>
|
|
35
|
+
:root {
|
|
36
|
+
--vib3-hue: {hue};
|
|
37
|
+
--vib3-saturation: {saturation};
|
|
38
|
+
--vib3-intensity: {intensity};
|
|
39
|
+
}
|
|
40
|
+
</style>
|
|
41
|
+
</defs>
|
|
42
|
+
<g id="geometry-layer">
|
|
43
|
+
<!-- Projected geometry paths -->
|
|
44
|
+
</g>
|
|
45
|
+
<g id="vib3-watermark" opacity="0.3">
|
|
46
|
+
<!-- Community tier only -->
|
|
47
|
+
</g>
|
|
48
|
+
</svg>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**CLI export:**
|
|
52
|
+
```bash
|
|
53
|
+
vib3 export svg --geometry 12 --system quantum --output scene.svg
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Lottie JSON (`lottie-json`)
|
|
57
|
+
|
|
58
|
+
Exports animated visualization as Lottie-compatible JSON.
|
|
59
|
+
|
|
60
|
+
**Features:**
|
|
61
|
+
- Frame-by-frame keyframes for smooth animation
|
|
62
|
+
- Supports rotation animation curves
|
|
63
|
+
- Compatible with LottieFiles, After Effects, and web players
|
|
64
|
+
- Optimized for 60fps playback
|
|
65
|
+
|
|
66
|
+
**Schema (simplified):**
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"v": "5.7.0",
|
|
70
|
+
"fr": 60,
|
|
71
|
+
"ip": 0,
|
|
72
|
+
"op": 300,
|
|
73
|
+
"w": 1920,
|
|
74
|
+
"h": 1080,
|
|
75
|
+
"nm": "VIB3+ Export",
|
|
76
|
+
"ddd": 0,
|
|
77
|
+
"assets": [],
|
|
78
|
+
"layers": [
|
|
79
|
+
{
|
|
80
|
+
"ty": 4,
|
|
81
|
+
"nm": "geometry",
|
|
82
|
+
"ks": {
|
|
83
|
+
"o": { "a": 0, "k": 100 },
|
|
84
|
+
"r": { "a": 1, "k": [/* rotation keyframes */] },
|
|
85
|
+
"p": { "a": 0, "k": [960, 540, 0] }
|
|
86
|
+
},
|
|
87
|
+
"shapes": [/* geometry shapes */]
|
|
88
|
+
}
|
|
89
|
+
],
|
|
90
|
+
"meta": {
|
|
91
|
+
"generator": "@vib3code/sdk",
|
|
92
|
+
"version": "1.9.0",
|
|
93
|
+
"system": "quantum",
|
|
94
|
+
"geometry": 12
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**CLI export:**
|
|
100
|
+
```bash
|
|
101
|
+
vib3 export lottie --duration 5s --fps 60 --output animation.json
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### CSS Variables (`css-variables`)
|
|
105
|
+
|
|
106
|
+
Exports current color palette and parameters as CSS custom properties.
|
|
107
|
+
|
|
108
|
+
**Features:**
|
|
109
|
+
- Ready-to-use CSS variables
|
|
110
|
+
- Includes color, rotation, and dimension values
|
|
111
|
+
- Compatible with any CSS framework
|
|
112
|
+
- Supports light/dark theme variants
|
|
113
|
+
|
|
114
|
+
**Output:**
|
|
115
|
+
```css
|
|
116
|
+
/* VIB3+ Theme Export - Generated 2026-01-23 */
|
|
117
|
+
:root {
|
|
118
|
+
/* Color palette */
|
|
119
|
+
--vib3-hue: 240;
|
|
120
|
+
--vib3-saturation: 0.8;
|
|
121
|
+
--vib3-intensity: 0.9;
|
|
122
|
+
--vib3-primary: hsl(240, 80%, 50%);
|
|
123
|
+
--vib3-secondary: hsl(240, 60%, 70%);
|
|
124
|
+
--vib3-accent: hsl(270, 80%, 60%);
|
|
125
|
+
|
|
126
|
+
/* Geometry parameters */
|
|
127
|
+
--vib3-geometry: 12;
|
|
128
|
+
--vib3-system: 'quantum';
|
|
129
|
+
--vib3-dimension: 3.5;
|
|
130
|
+
|
|
131
|
+
/* 6D rotation (radians) */
|
|
132
|
+
--vib3-rot-xy: 0.5;
|
|
133
|
+
--vib3-rot-xz: 0.3;
|
|
134
|
+
--vib3-rot-yz: 0.0;
|
|
135
|
+
--vib3-rot-xw: 1.2;
|
|
136
|
+
--vib3-rot-yw: 0.8;
|
|
137
|
+
--vib3-rot-zw: 0.4;
|
|
138
|
+
|
|
139
|
+
/* Animation timing */
|
|
140
|
+
--vib3-speed: 1.0;
|
|
141
|
+
--vib3-chaos: 0.2;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/* Dark mode variant */
|
|
145
|
+
@media (prefers-color-scheme: dark) {
|
|
146
|
+
:root {
|
|
147
|
+
--vib3-primary: hsl(240, 80%, 60%);
|
|
148
|
+
--vib3-secondary: hsl(240, 60%, 40%);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**CLI export:**
|
|
154
|
+
```bash
|
|
155
|
+
vib3 export css --include-dark-mode --output theme.css
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Scene Pack (`.vib3`)
|
|
159
|
+
|
|
160
|
+
Full scene serialization for sharing and restoring states.
|
|
161
|
+
|
|
162
|
+
**Features:**
|
|
163
|
+
- Complete parameter state
|
|
164
|
+
- Thumbnail preview
|
|
165
|
+
- Metadata and versioning
|
|
166
|
+
- Compatible with Gallery system
|
|
167
|
+
|
|
168
|
+
**Schema:**
|
|
169
|
+
```json
|
|
170
|
+
{
|
|
171
|
+
"version": "1.0.0",
|
|
172
|
+
"meta": {
|
|
173
|
+
"name": "My Scene",
|
|
174
|
+
"author": "user@example.com",
|
|
175
|
+
"created": "2026-01-23T22:00:00Z",
|
|
176
|
+
"generator": "@vib3code/sdk@1.9.0"
|
|
177
|
+
},
|
|
178
|
+
"parameters": {
|
|
179
|
+
"system": "quantum",
|
|
180
|
+
"geometry": 12,
|
|
181
|
+
"rot4dXY": 0.5,
|
|
182
|
+
"rot4dXZ": 0.3,
|
|
183
|
+
"rot4dYZ": 0.0,
|
|
184
|
+
"rot4dXW": 1.2,
|
|
185
|
+
"rot4dYW": 0.8,
|
|
186
|
+
"rot4dZW": 0.4,
|
|
187
|
+
"hue": 240,
|
|
188
|
+
"saturation": 0.8,
|
|
189
|
+
"intensity": 0.9,
|
|
190
|
+
"gridDensity": 32,
|
|
191
|
+
"morphFactor": 1.0,
|
|
192
|
+
"chaos": 0.2,
|
|
193
|
+
"speed": 1.0,
|
|
194
|
+
"dimension": 3.5
|
|
195
|
+
},
|
|
196
|
+
"thumbnail": "data:image/png;base64,..."
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Golden snapshot validation
|
|
201
|
+
|
|
202
|
+
Golden snapshots ensure export fidelity across updates. Each export format has baseline snapshots stored in `tests/snapshots/exports/`.
|
|
203
|
+
|
|
204
|
+
### Snapshot test implementation
|
|
205
|
+
|
|
206
|
+
```javascript
|
|
207
|
+
// tests/exports/golden.test.js
|
|
208
|
+
import { describe, it, expect } from 'vitest';
|
|
209
|
+
import { exportSVG, exportLottie, exportCSS } from '../../src/export/index.js';
|
|
210
|
+
import { readFileSync } from 'fs';
|
|
211
|
+
import { join } from 'path';
|
|
212
|
+
|
|
213
|
+
const SNAPSHOT_DIR = 'tests/snapshots/exports';
|
|
214
|
+
|
|
215
|
+
// Standard test parameters for consistency
|
|
216
|
+
const TEST_PARAMS = {
|
|
217
|
+
system: 'quantum',
|
|
218
|
+
geometry: 8, // Hypersphere core tetrahedron
|
|
219
|
+
rot4dXY: 0.5,
|
|
220
|
+
rot4dXZ: 0.0,
|
|
221
|
+
rot4dYZ: 0.0,
|
|
222
|
+
rot4dXW: 1.0,
|
|
223
|
+
rot4dYW: 0.0,
|
|
224
|
+
rot4dZW: 0.0,
|
|
225
|
+
hue: 200,
|
|
226
|
+
saturation: 0.7,
|
|
227
|
+
intensity: 0.8,
|
|
228
|
+
gridDensity: 16,
|
|
229
|
+
dimension: 3.5
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
describe('export golden snapshots', () => {
|
|
233
|
+
describe('SVG export', () => {
|
|
234
|
+
it('matches golden snapshot for quantum system', async () => {
|
|
235
|
+
const result = await exportSVG(TEST_PARAMS, { width: 512, height: 512 });
|
|
236
|
+
const golden = readFileSync(join(SNAPSHOT_DIR, 'quantum-g8.svg'), 'utf-8');
|
|
237
|
+
|
|
238
|
+
// Normalize whitespace for comparison
|
|
239
|
+
const normalize = (s) => s.replace(/\s+/g, ' ').trim();
|
|
240
|
+
expect(normalize(result)).toBe(normalize(golden));
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
it('includes required metadata attributes', async () => {
|
|
244
|
+
const result = await exportSVG(TEST_PARAMS, { width: 512, height: 512 });
|
|
245
|
+
|
|
246
|
+
expect(result).toContain('data-vib3-geometry="8"');
|
|
247
|
+
expect(result).toContain('data-vib3-system="quantum"');
|
|
248
|
+
expect(result).toContain('viewBox="0 0 512 512"');
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
describe('Lottie export', () => {
|
|
253
|
+
it('matches golden snapshot structure', async () => {
|
|
254
|
+
const result = await exportLottie(TEST_PARAMS, { fps: 30, duration: 1 });
|
|
255
|
+
const golden = JSON.parse(readFileSync(join(SNAPSHOT_DIR, 'quantum-g8.json'), 'utf-8'));
|
|
256
|
+
|
|
257
|
+
// Compare structure (not exact values due to animation)
|
|
258
|
+
expect(result.v).toBe(golden.v);
|
|
259
|
+
expect(result.fr).toBe(golden.fr);
|
|
260
|
+
expect(result.layers.length).toBe(golden.layers.length);
|
|
261
|
+
expect(result.meta.system).toBe('quantum');
|
|
262
|
+
expect(result.meta.geometry).toBe(8);
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
it('produces valid Lottie schema', async () => {
|
|
266
|
+
const result = await exportLottie(TEST_PARAMS, { fps: 30, duration: 1 });
|
|
267
|
+
|
|
268
|
+
expect(result).toHaveProperty('v'); // version
|
|
269
|
+
expect(result).toHaveProperty('fr'); // frame rate
|
|
270
|
+
expect(result).toHaveProperty('ip'); // in point
|
|
271
|
+
expect(result).toHaveProperty('op'); // out point
|
|
272
|
+
expect(result).toHaveProperty('w'); // width
|
|
273
|
+
expect(result).toHaveProperty('h'); // height
|
|
274
|
+
expect(result).toHaveProperty('layers');
|
|
275
|
+
expect(Array.isArray(result.layers)).toBe(true);
|
|
276
|
+
});
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
describe('CSS export', () => {
|
|
280
|
+
it('matches golden snapshot', async () => {
|
|
281
|
+
const result = await exportCSS(TEST_PARAMS);
|
|
282
|
+
const golden = readFileSync(join(SNAPSHOT_DIR, 'quantum-g8.css'), 'utf-8');
|
|
283
|
+
|
|
284
|
+
expect(result).toBe(golden);
|
|
285
|
+
});
|
|
286
|
+
|
|
287
|
+
it('includes all required variables', async () => {
|
|
288
|
+
const result = await exportCSS(TEST_PARAMS);
|
|
289
|
+
|
|
290
|
+
expect(result).toContain('--vib3-hue: 200');
|
|
291
|
+
expect(result).toContain('--vib3-saturation: 0.7');
|
|
292
|
+
expect(result).toContain('--vib3-geometry: 8');
|
|
293
|
+
expect(result).toContain("--vib3-system: 'quantum'");
|
|
294
|
+
expect(result).toContain('--vib3-rot-xw: 1');
|
|
295
|
+
});
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### Snapshot update workflow
|
|
301
|
+
|
|
302
|
+
```bash
|
|
303
|
+
# Run tests and check for snapshot mismatches
|
|
304
|
+
pnpm test -- tests/exports/golden.test.js
|
|
305
|
+
|
|
306
|
+
# Update snapshots when changes are intentional
|
|
307
|
+
pnpm test -- tests/exports/golden.test.js --update
|
|
308
|
+
|
|
309
|
+
# Review snapshot changes in git
|
|
310
|
+
git diff tests/snapshots/exports/
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
### Snapshot coverage matrix
|
|
314
|
+
|
|
315
|
+
| System | Geometry | SVG | Lottie | CSS | Status |
|
|
316
|
+
|--------|----------|-----|--------|-----|--------|
|
|
317
|
+
| Quantum | 0 (tetra) | Yes | Yes | Yes | Baseline |
|
|
318
|
+
| Quantum | 8 (hyper-tetra) | Yes | Yes | Yes | Baseline |
|
|
319
|
+
| Quantum | 16 (hypertetra-tetra) | Yes | Yes | Yes | Baseline |
|
|
320
|
+
| Faceted | 0 | Yes | Yes | Yes | Baseline |
|
|
321
|
+
| Faceted | 8 | Yes | Yes | Yes | Baseline |
|
|
322
|
+
| Holographic | 0 | Yes | Yes | Yes | Baseline |
|
|
323
|
+
| Holographic | 8 | Yes | Yes | Yes | Baseline |
|
|
324
|
+
|
|
325
|
+
### CI integration
|
|
326
|
+
|
|
327
|
+
```yaml
|
|
328
|
+
# .github/workflows/exports.yml
|
|
329
|
+
name: Export Validation
|
|
330
|
+
|
|
331
|
+
on: [push, pull_request]
|
|
332
|
+
|
|
333
|
+
jobs:
|
|
334
|
+
golden-snapshots:
|
|
335
|
+
runs-on: ubuntu-latest
|
|
336
|
+
steps:
|
|
337
|
+
- uses: actions/checkout@v4
|
|
338
|
+
- uses: pnpm/action-setup@v2
|
|
339
|
+
- uses: actions/setup-node@v4
|
|
340
|
+
with:
|
|
341
|
+
node-version: '18'
|
|
342
|
+
cache: 'pnpm'
|
|
343
|
+
- run: pnpm install
|
|
344
|
+
- run: pnpm test -- tests/exports/golden.test.js
|
|
345
|
+
|
|
346
|
+
- name: Check for uncommitted snapshot changes
|
|
347
|
+
run: |
|
|
348
|
+
if [ -n "$(git status --porcelain tests/snapshots/)" ]; then
|
|
349
|
+
echo "Snapshot files have changed. Please update and commit."
|
|
350
|
+
git diff tests/snapshots/
|
|
351
|
+
exit 1
|
|
352
|
+
fi
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
## Export pipeline architecture
|
|
356
|
+
|
|
357
|
+
```
|
|
358
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
359
|
+
│ EXPORT PIPELINE │
|
|
360
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
361
|
+
|
|
362
|
+
Parameters ExportManager Format Exporters
|
|
363
|
+
│ │ │
|
|
364
|
+
│ 1. Request export │ │
|
|
365
|
+
│───────────────────>│ │
|
|
366
|
+
│ │ 2. Validate license │
|
|
367
|
+
│ │ 3. Select exporter │
|
|
368
|
+
│ │───────────────────────>│
|
|
369
|
+
│ │ │
|
|
370
|
+
│ │ │ 4. Generate
|
|
371
|
+
│ │ │ output
|
|
372
|
+
│ │ │
|
|
373
|
+
│ │ 5. Apply watermark │
|
|
374
|
+
│ │ (if Community) │
|
|
375
|
+
│ │<───────────────────────│
|
|
376
|
+
│ │ │
|
|
377
|
+
│ │ 6. Validate against │
|
|
378
|
+
│ │ schema │
|
|
379
|
+
│ │ │
|
|
380
|
+
│ 7. Return result │ │
|
|
381
|
+
│<───────────────────│ │
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
## Implementation status
|
|
385
|
+
|
|
386
|
+
| Component | Status | Location |
|
|
387
|
+
|-----------|--------|----------|
|
|
388
|
+
| SVG exporter | Implemented | `src/export/SVGExporter.js` |
|
|
389
|
+
| Lottie exporter | TODO | `src/export/LottieExporter.js` |
|
|
390
|
+
| CSS exporter | TODO | `src/export/CSSExporter.js` |
|
|
391
|
+
| Scene pack | Implemented | `src/export/ScenePackExporter.js` |
|
|
392
|
+
| Golden snapshots | TODO | `tests/snapshots/exports/` |
|
|
393
|
+
| CI validation | TODO | `.github/workflows/exports.yml` |
|
|
394
|
+
|
|
395
|
+
## CLI reference
|
|
396
|
+
|
|
397
|
+
```bash
|
|
398
|
+
# List available export formats
|
|
399
|
+
vib3 export --list
|
|
400
|
+
|
|
401
|
+
# Export with specific format
|
|
402
|
+
vib3 export <format> [options]
|
|
403
|
+
|
|
404
|
+
# Common options
|
|
405
|
+
--output, -o Output file path
|
|
406
|
+
--system Visualization system (quantum, faceted, holographic)
|
|
407
|
+
--geometry Geometry index (0-23)
|
|
408
|
+
--width Output width in pixels
|
|
409
|
+
--height Output height in pixels
|
|
410
|
+
--quality Quality level (draft, normal, high)
|
|
411
|
+
|
|
412
|
+
# Examples
|
|
413
|
+
vib3 export svg -o scene.svg --geometry 12 --system quantum
|
|
414
|
+
vib3 export lottie -o anim.json --duration 5s --fps 60
|
|
415
|
+
vib3 export css -o theme.css --include-dark-mode
|
|
416
|
+
vib3 export pack -o scene.vib3 --include-thumbnail
|
|
417
|
+
```
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# GPU disposal patterns
|
|
2
|
+
|
|
3
|
+
This guide documents safe GPU resource disposal patterns to prevent memory leaks across rendering backends.
|
|
4
|
+
|
|
5
|
+
## Resource lifecycle checklist
|
|
6
|
+
1. Track GPU resources (buffers, textures, programs) with explicit IDs.
|
|
7
|
+
2. Register resources in a central manager so you can dispose by scope.
|
|
8
|
+
3. Dispose resources when:
|
|
9
|
+
- a scene is torn down
|
|
10
|
+
- a renderer is swapped
|
|
11
|
+
- a pack export completes
|
|
12
|
+
|
|
13
|
+
## Suggested manager flow
|
|
14
|
+
- `registerResource(type, id, handle, bytes)`
|
|
15
|
+
- `releaseResource(type, id)`
|
|
16
|
+
- `disposeAll()` on shutdown or system change
|
|
17
|
+
|
|
18
|
+
## Guardrails
|
|
19
|
+
- Do not rely on GC to release GPU memory.
|
|
20
|
+
- Always null references after deletion to prevent re-use.
|
|
21
|
+
- Track memory budgets and evict least-recently-used resources when needed.
|