@vib3code/sdk 2.0.1 → 2.0.3-canary.91a95f3
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 +36 -0
- package/DOCS/AGENT_HARNESS_ARCHITECTURE.md +243 -0
- package/DOCS/CLI_ONBOARDING.md +1 -1
- package/DOCS/CROSS_SITE_DESIGN_PATTERNS.md +117 -0
- package/DOCS/EPIC_SCROLL_EVENTS.md +773 -0
- package/DOCS/HANDOFF_LANDING_PAGE.md +154 -0
- package/DOCS/HANDOFF_SDK_DEVELOPMENT.md +493 -0
- package/DOCS/MULTIVIZ_CHOREOGRAPHY_PATTERNS.md +937 -0
- package/DOCS/PRODUCT_STRATEGY.md +63 -0
- package/DOCS/README.md +103 -0
- package/DOCS/REFERENCE_SCROLL_ANALYSIS.md +97 -0
- package/DOCS/ROADMAP.md +111 -0
- package/DOCS/SCROLL_TIMELINE_v3.md +269 -0
- package/DOCS/SITE_REFACTOR_PLAN.md +100 -0
- package/DOCS/STATUS.md +24 -0
- package/DOCS/SYSTEM_INVENTORY.md +33 -30
- package/DOCS/VISUAL_ANALYSIS_CLICKERSS.md +85 -0
- package/DOCS/VISUAL_ANALYSIS_FACETAD.md +133 -0
- package/DOCS/VISUAL_ANALYSIS_SIMONE.md +95 -0
- package/DOCS/VISUAL_ANALYSIS_TABLESIDE.md +86 -0
- package/DOCS/{BLUEPRINT_EXECUTION_PLAN_2026-01-07.md → archive/BLUEPRINT_EXECUTION_PLAN_2026-01-07.md} +1 -1
- package/DOCS/{DEV_TRACK_ANALYSIS.md → archive/DEV_TRACK_ANALYSIS.md} +3 -0
- package/DOCS/{SYSTEM_AUDIT_2026-01-30.md → archive/SYSTEM_AUDIT_2026-01-30.md} +3 -0
- package/DOCS/{DEV_TRACK_SESSION_2026-01-31.md → dev-tracks/DEV_TRACK_SESSION_2026-01-31.md} +1 -1
- package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-06.md +231 -0
- package/DOCS/dev-tracks/DEV_TRACK_SESSION_2026-02-13.md +114 -0
- package/DOCS/dev-tracks/README.md +10 -0
- package/README.md +26 -13
- package/cpp/CMakeLists.txt +236 -0
- package/cpp/bindings/embind.cpp +269 -0
- package/cpp/build.sh +129 -0
- package/cpp/geometry/Crystal.cpp +103 -0
- package/cpp/geometry/Fractal.cpp +136 -0
- package/cpp/geometry/GeometryGenerator.cpp +262 -0
- package/cpp/geometry/KleinBottle.cpp +71 -0
- package/cpp/geometry/Sphere.cpp +134 -0
- package/cpp/geometry/Tesseract.cpp +94 -0
- package/cpp/geometry/Tetrahedron.cpp +83 -0
- package/cpp/geometry/Torus.cpp +65 -0
- package/cpp/geometry/WarpFunctions.cpp +238 -0
- package/cpp/geometry/Wave.cpp +85 -0
- package/cpp/include/vib3_ffi.h +238 -0
- package/cpp/math/Mat4x4.cpp +409 -0
- package/cpp/math/Mat4x4.hpp +209 -0
- package/cpp/math/Projection.cpp +142 -0
- package/cpp/math/Projection.hpp +148 -0
- package/cpp/math/Rotor4D.cpp +322 -0
- package/cpp/math/Rotor4D.hpp +204 -0
- package/cpp/math/Vec4.cpp +303 -0
- package/cpp/math/Vec4.hpp +225 -0
- package/cpp/src/vib3_ffi.cpp +607 -0
- package/cpp/tests/Geometry_test.cpp +213 -0
- package/cpp/tests/Mat4x4_test.cpp +494 -0
- package/cpp/tests/Projection_test.cpp +298 -0
- package/cpp/tests/Rotor4D_test.cpp +423 -0
- package/cpp/tests/Vec4_test.cpp +489 -0
- package/package.json +31 -27
- package/src/agent/mcp/MCPServer.js +722 -0
- package/src/agent/mcp/stdio-server.js +264 -0
- package/src/agent/mcp/tools.js +367 -0
- package/src/cli/index.js +0 -0
- package/src/core/CanvasManager.js +97 -204
- package/src/core/ErrorReporter.js +1 -1
- package/src/core/Parameters.js +1 -1
- package/src/core/VIB3Engine.js +38 -1
- package/src/core/VitalitySystem.js +53 -0
- package/src/core/renderers/HolographicRendererAdapter.js +2 -2
- package/src/creative/AestheticMapper.js +628 -0
- package/src/creative/ChoreographyPlayer.js +481 -0
- package/src/export/TradingCardManager.js +3 -4
- package/src/faceted/FacetedSystem.js +237 -388
- package/src/holograms/HolographicVisualizer.js +29 -12
- package/src/holograms/RealHolographicSystem.js +68 -12
- package/src/polychora/PolychoraSystem.js +77 -0
- package/src/quantum/QuantumEngine.js +103 -66
- package/src/quantum/QuantumVisualizer.js +7 -2
- package/src/render/UnifiedRenderBridge.js +3 -0
- package/src/shaders/faceted/faceted.frag.glsl +220 -80
- package/src/shaders/faceted/faceted.frag.wgsl +138 -97
- package/src/shaders/holographic/holographic.frag.glsl +28 -9
- package/src/shaders/holographic/holographic.frag.wgsl +107 -38
- package/src/shaders/quantum/quantum.frag.glsl +1 -0
- package/src/shaders/quantum/quantum.frag.wgsl +1 -1
- package/src/viewer/index.js +1 -1
- package/tools/headless-renderer.js +258 -0
- package/tools/shader-sync-verify.js +8 -4
- package/tools/site-analysis/all-reports.json +32 -0
- package/tools/site-analysis/combined-analysis.md +50 -0
- package/tools/site-analyzer.mjs +779 -0
- package/tools/visual-catalog/capture.js +276 -0
- package/tools/visual-catalog/composite.js +138 -0
- /package/DOCS/{DEV_TRACK_PLAN_2026-01-07.md → archive/DEV_TRACK_PLAN_2026-01-07.md} +0 -0
- /package/DOCS/{SESSION_014_PLAN.md → archive/SESSION_014_PLAN.md} +0 -0
- /package/DOCS/{SESSION_LOG_2026-01-07.md → archive/SESSION_LOG_2026-01-07.md} +0 -0
- /package/DOCS/{STRATEGIC_BLUEPRINT_2026-01-07.md → archive/STRATEGIC_BLUEPRINT_2026-01-07.md} +0 -0
- /package/src/viewer/{ReactivityManager.js → ViewerInputHandler.js} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,42 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to VIB3+ CORE (`@vib3code/sdk`) will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [2.0.2] — 2026-02-07
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- **Distribution** — Added `cpp/` directory to `package.json` files list to ensure full C++ source tree (including `geometry` and `tests`) is included in the npm package. This resolves native build failures in downstream applications.
|
|
9
|
+
|
|
10
|
+
## [2.0.1] — 2026-02-03
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **Vitality System** (`src/core/VitalitySystem.js`) — Organic breath-cycle modulation driving `u_breath` uniform across all 3 systems
|
|
14
|
+
- **Exhale feature** — Breath modulation integrated into Quantum, Faceted, and Holographic fragment shaders (inline + external GLSL/WGSL)
|
|
15
|
+
- **Polychora stub** (`src/polychora/PolychoraSystem.js`) — Placeholder for future 4D polytope system
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
- Quantum/Faceted external shader flashing — synced shader logic between inline and external files
|
|
19
|
+
- Faceted shader logic bug (wrong SDF replaced with correct lattice-based shader)
|
|
20
|
+
- Holographic shader sync with exhale breathing effect
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
- Package renamed from `@vib3/sdk` to `@vib3code/sdk` for npm scope availability
|
|
24
|
+
- Published to npm registry as `@vib3code/sdk@2.0.1`
|
|
25
|
+
|
|
26
|
+
## [2.0.1-hygiene] — 2026-02-06
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
- **CanvasManager.js** — Rewrote to match VIB3Engine API contract (`createSystemCanvases`, `registerContext`, `destroy`); old version had no matching methods
|
|
30
|
+
- **HolographicRendererAdapter.js** — Fixed broken import: `HolographicSystem` (non-existent) → `RealHolographicSystem`
|
|
31
|
+
- **TradingCardManager.js** — Fixed imports pointing to non-existent `*Exact.js` and `*MultiLayer.js` generator files; now points to actual generators
|
|
32
|
+
- **Version string inconsistencies** — Unified VIB3Engine (`1.2.0`→`2.0.1`), Parameters (`1.0.0`→`2.0.1`), ErrorReporter (`2.0.0`→`2.0.1`)
|
|
33
|
+
- **External shader sync** — Added `u_breath` uniform to `quantum.frag.glsl`, `faceted.frag.glsl`, `quantum.frag.wgsl`, `faceted.frag.wgsl` (was present in inline shaders but missing from external files)
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
- **Renamed** `src/viewer/ReactivityManager.js` → `ViewerInputHandler.js` to avoid naming collision with `src/reactivity/ReactivityManager.js` (different classes with different purposes)
|
|
37
|
+
- **Removed** stale `package-lock.json` (project uses pnpm; `pnpm-lock.yaml` is canonical)
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
5
41
|
## [2.0.0] — 2026-01-30
|
|
6
42
|
|
|
7
43
|
### Added
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
# VIB3+ Agent Harness Architecture
|
|
2
|
+
|
|
3
|
+
**Purpose**: Close the feedback loop between AI agents and VIB3+ visualization, enabling agents to design ultra-intricate reactive choreographed visuals that would be impractical via manual UI.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Current State (What Exists)
|
|
8
|
+
|
|
9
|
+
- 19 MCP tools for parameter control, system switching, gallery, reactivity, export
|
|
10
|
+
- Agent context packs for Claude and OpenAI
|
|
11
|
+
- Claude Code skills (`/vib3-design`, `/vib3-dev`) for design and development workflows
|
|
12
|
+
- Telemetry instrumentation on all tool calls
|
|
13
|
+
|
|
14
|
+
## New Additions (This Session)
|
|
15
|
+
|
|
16
|
+
- **7 new MCP tools** (26 total): `describe_visual_state`, `batch_set_parameters`, `create_timeline`, `play_transition`, `apply_color_preset`, `set_post_processing`, `create_choreography`
|
|
17
|
+
- **Claude Code skills**: `.claude/commands/vib3-design.md` and `.claude/commands/vib3-dev.md`
|
|
18
|
+
- **Shader validation hook**: Pre-commit hook for `.glsl`/`.wgsl` changes
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Recommended Next Steps
|
|
23
|
+
|
|
24
|
+
### Phase 1: Visual Feedback Loop (Highest Impact)
|
|
25
|
+
|
|
26
|
+
**Problem**: Agents set parameters but can't see the result. They're designing blind.
|
|
27
|
+
|
|
28
|
+
**Solution**: Screenshot capture + visual analysis pipeline.
|
|
29
|
+
|
|
30
|
+
#### 1A. `capture_screenshot` MCP Tool
|
|
31
|
+
|
|
32
|
+
Add a tool that captures the current visualization as an image:
|
|
33
|
+
|
|
34
|
+
```javascript
|
|
35
|
+
// Implementation approach:
|
|
36
|
+
// 1. Use canvas.toDataURL('image/png') on the content-canvas layer
|
|
37
|
+
// 2. Composite all 5 layers into a single image
|
|
38
|
+
// 3. Return base64-encoded PNG
|
|
39
|
+
|
|
40
|
+
capture_screenshot: {
|
|
41
|
+
name: 'capture_screenshot',
|
|
42
|
+
description: 'Captures current visualization as a base64 PNG image',
|
|
43
|
+
inputSchema: {
|
|
44
|
+
type: 'object',
|
|
45
|
+
properties: {
|
|
46
|
+
width: { type: 'integer', default: 512 },
|
|
47
|
+
height: { type: 'integer', default: 512 },
|
|
48
|
+
layers: { type: 'string', enum: ['all', 'content', 'composite'], default: 'composite' }
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
For multimodal agents (Claude with vision, GPT-4V), this enables:
|
|
55
|
+
1. Set parameters → capture → analyze → refine → capture → analyze...
|
|
56
|
+
2. "Make it more blue" → agent can verify the blue shift happened
|
|
57
|
+
3. A/B testing: capture state A, modify, capture state B, compare
|
|
58
|
+
|
|
59
|
+
#### 1B. Headless Rendering Server
|
|
60
|
+
|
|
61
|
+
For CI/automated pipelines where no browser is available:
|
|
62
|
+
|
|
63
|
+
```javascript
|
|
64
|
+
// Using Puppeteer or Playwright in headless mode
|
|
65
|
+
// Start VIB3+ in headless browser → apply MCP commands → capture frames
|
|
66
|
+
import puppeteer from 'puppeteer';
|
|
67
|
+
|
|
68
|
+
class HeadlessVIB3Renderer {
|
|
69
|
+
async launch() {
|
|
70
|
+
this.browser = await puppeteer.launch({ headless: true });
|
|
71
|
+
this.page = await this.browser.newPage();
|
|
72
|
+
await this.page.goto('http://localhost:3000'); // dev server
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
async captureFrame(params) {
|
|
76
|
+
await this.page.evaluate((p) => {
|
|
77
|
+
for (const [k, v] of Object.entries(p)) {
|
|
78
|
+
window.engine.setParameter(k, v);
|
|
79
|
+
}
|
|
80
|
+
}, params);
|
|
81
|
+
// Wait one frame
|
|
82
|
+
await this.page.evaluate(() => new Promise(r => requestAnimationFrame(r)));
|
|
83
|
+
return await this.page.screenshot({ type: 'png' });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Phase 2: Agent Choreography Runtime
|
|
89
|
+
|
|
90
|
+
**Problem**: `create_choreography` generates a JSON spec, but there's no runtime to play it back.
|
|
91
|
+
|
|
92
|
+
**Solution**: Build a `ChoreographyPlayer` class that consumes choreography JSON and orchestrates the engine.
|
|
93
|
+
|
|
94
|
+
```javascript
|
|
95
|
+
// src/creative/ChoreographyPlayer.js
|
|
96
|
+
export class ChoreographyPlayer {
|
|
97
|
+
constructor(engine) {
|
|
98
|
+
this.engine = engine;
|
|
99
|
+
this.timeline = new ParameterTimeline((n, v) => engine.setParameter(n, v));
|
|
100
|
+
this.transition = new TransitionAnimator(
|
|
101
|
+
(n, v) => engine.setParameter(n, v),
|
|
102
|
+
(n) => engine.getParameter(n)
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
async loadChoreography(spec) {
|
|
107
|
+
// Parse multi-scene choreography
|
|
108
|
+
// Set up scene transitions
|
|
109
|
+
// Wire timeline tracks per scene
|
|
110
|
+
// Handle system switching at scene boundaries
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
play() { /* Start playback with scene management */ }
|
|
114
|
+
pause() { /* Pause all active timelines/transitions */ }
|
|
115
|
+
seek(timeMs) { /* Jump to specific time, load correct scene */ }
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Phase 3: Design-by-Description (Text → Visual)
|
|
120
|
+
|
|
121
|
+
**Problem**: Users describe what they want in natural language. Agents need to map that to parameters.
|
|
122
|
+
|
|
123
|
+
**Solution**: Extend `AIPresetGenerator.js` with a more structured mapping:
|
|
124
|
+
|
|
125
|
+
```javascript
|
|
126
|
+
// Emotional/aesthetic vocabulary → parameter ranges
|
|
127
|
+
const AESTHETIC_MAPS = {
|
|
128
|
+
// Emotions
|
|
129
|
+
serene: { speed: [0.1, 0.3], chaos: [0, 0.05], intensity: [0.3, 0.5] },
|
|
130
|
+
energetic: { speed: [2.0, 3.0], chaos: [0.5, 1.0], intensity: [0.7, 1.0] },
|
|
131
|
+
mysterious:{ speed: [0.3, 0.6], chaos: [0.1, 0.3], hue: [220, 280], intensity: [0.2, 0.4] },
|
|
132
|
+
joyful: { speed: [1.0, 1.5], chaos: [0.2, 0.4], hue: [30, 60], intensity: [0.7, 0.9] },
|
|
133
|
+
|
|
134
|
+
// Visual styles
|
|
135
|
+
minimal: { gridDensity: [4, 10], chaos: [0, 0.02], morphFactor: [0, 0.1] },
|
|
136
|
+
intricate: { gridDensity: [40, 80], chaos: [0.1, 0.3], morphFactor: [0.3, 1.0] },
|
|
137
|
+
organic: { chaos: [0.3, 0.7], morphFactor: [0.5, 1.5], speed: [0.5, 1.0] },
|
|
138
|
+
geometric: { chaos: [0, 0.05], gridDensity: [15, 30], morphFactor: [0, 0.2] },
|
|
139
|
+
|
|
140
|
+
// Depth effects
|
|
141
|
+
deep: { dimension: [3.0, 3.3], gridDensity: [30, 60] },
|
|
142
|
+
flat: { dimension: [4.0, 4.5], gridDensity: [8, 15] },
|
|
143
|
+
immersive: { dimension: [3.0, 3.5], rot4dXW: [0.5, 2.0], rot4dYW: [0.3, 1.5] }
|
|
144
|
+
};
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Phase 4: Collaborative Multi-Agent Workflow
|
|
148
|
+
|
|
149
|
+
Multiple agents working together on a choreography:
|
|
150
|
+
|
|
151
|
+
1. **Director Agent** — Defines the high-level narrative (scenes, moods, transitions)
|
|
152
|
+
2. **Color Agent** — Picks color presets and post-processing for each scene
|
|
153
|
+
3. **Motion Agent** — Designs rotation and parameter timelines
|
|
154
|
+
4. **Audio Agent** — Maps audio reactivity bands to parameters
|
|
155
|
+
|
|
156
|
+
Each agent uses the same MCP server, different tool subsets.
|
|
157
|
+
|
|
158
|
+
### Phase 5: Hooks for Agent Workflow
|
|
159
|
+
|
|
160
|
+
#### Pre-export validation hook
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
# .claude/settings.json — validate before export
|
|
164
|
+
{
|
|
165
|
+
"hooks": {
|
|
166
|
+
"PreToolCall": [
|
|
167
|
+
{
|
|
168
|
+
"tool": "export_package",
|
|
169
|
+
"command": "node tools/validate-export.js"
|
|
170
|
+
}
|
|
171
|
+
]
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
#### Auto-gallery-save hook
|
|
177
|
+
|
|
178
|
+
After every `batch_set_parameters` or `create_choreography`, auto-save to a rotating gallery slot:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
# .claude/settings.json
|
|
182
|
+
{
|
|
183
|
+
"hooks": {
|
|
184
|
+
"PostToolCall": [
|
|
185
|
+
{
|
|
186
|
+
"tool": "batch_set_parameters",
|
|
187
|
+
"command": "echo 'Auto-saved state to gallery'"
|
|
188
|
+
}
|
|
189
|
+
]
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Architecture Diagram: Agent Feedback Loop
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
┌─────────────────────────────────────────────────────────┐
|
|
200
|
+
│ AI AGENT (Claude/GPT) │
|
|
201
|
+
│ │
|
|
202
|
+
│ 1. describe_visual_state → understand current visual │
|
|
203
|
+
│ 2. batch_set_parameters → change visualization │
|
|
204
|
+
│ 3. describe_visual_state → verify change │
|
|
205
|
+
│ 4. create_timeline → design animation │
|
|
206
|
+
│ 5. create_choreography → compose full performance │
|
|
207
|
+
│ 6. [future] capture_screenshot → get actual pixels │
|
|
208
|
+
│ │
|
|
209
|
+
└────────────────────┬────────────────────────────────────┘
|
|
210
|
+
│ MCP Protocol (stdio)
|
|
211
|
+
▼
|
|
212
|
+
┌─────────────────────────────────────────────────────────┐
|
|
213
|
+
│ MCP SERVER (26 tools) │
|
|
214
|
+
│ │
|
|
215
|
+
│ Tool handlers → VIB3Engine API → Render Pipeline │
|
|
216
|
+
│ │
|
|
217
|
+
│ Telemetry ← Event Stream ← Instrumentation │
|
|
218
|
+
└────────────────────┬────────────────────────────────────┘
|
|
219
|
+
│
|
|
220
|
+
▼
|
|
221
|
+
┌─────────────────────────────────────────────────────────┐
|
|
222
|
+
│ VIB3+ ENGINE │
|
|
223
|
+
│ │
|
|
224
|
+
│ Quantum │ Faceted │ Holographic │
|
|
225
|
+
│ 24 geometries × 6D rotation × creative tooling │
|
|
226
|
+
│ Audio reactivity × Spatial input × Post-processing │
|
|
227
|
+
│ │
|
|
228
|
+
│ Output: 5-layer canvas composite │
|
|
229
|
+
└─────────────────────────────────────────────────────────┘
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Why This Matters
|
|
235
|
+
|
|
236
|
+
Agents can:
|
|
237
|
+
1. **Generate mathematically precise timelines** — 50+ parameter keyframes across 8+ tracks, perfectly synced to BPM, with easing functions humans couldn't manually coordinate
|
|
238
|
+
2. **Explore the parameter space systematically** — Try all 24 geometries × 3 systems × 6 rotation planes in seconds
|
|
239
|
+
3. **Design by description** — "Make it feel like being underwater at night" maps to specific parameter ranges
|
|
240
|
+
4. **Compose multi-scene choreographies** — 10+ scenes with cross-fades, system switches, and per-scene timelines
|
|
241
|
+
5. **Iterate without visual fatigue** — Agents don't get "used to" a look — they objectively assess parameter states
|
|
242
|
+
|
|
243
|
+
The agent harness transforms VIB3+ from a tool you use into a creative medium agents can compose with.
|
package/DOCS/CLI_ONBOARDING.md
CHANGED
|
@@ -11,7 +11,7 @@ This guide aligns the current CLI surface (package scripts and telemetry helpers
|
|
|
11
11
|
- Optional: renderer lifecycle overview for system orchestration is in [`DOCS/RENDERER_LIFECYCLE.md`](DOCS/RENDERER_LIFECYCLE.md).
|
|
12
12
|
- Optional: GCP + Firebase provisioning steps live in [`DOCS/PROJECT_SETUP.md`](DOCS/PROJECT_SETUP.md).
|
|
13
13
|
- Optional: repository directory manifest is in [`DOCS/REPO_MANIFEST.md`](DOCS/REPO_MANIFEST.md).
|
|
14
|
-
- Optional: development track analysis is in [`DOCS/DEV_TRACK_ANALYSIS.md`](DOCS/DEV_TRACK_ANALYSIS.md).
|
|
14
|
+
- Optional: development track analysis is in [`DOCS/archive/DEV_TRACK_ANALYSIS.md`](DOCS/archive/DEV_TRACK_ANALYSIS.md).
|
|
15
15
|
- Optional: WebGPU status/testing notes are in [`DOCS/WEBGPU_STATUS.md`](DOCS/WEBGPU_STATUS.md).
|
|
16
16
|
|
|
17
17
|
## Baseline setup
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Cross-Site Design Pattern Synthesis
|
|
2
|
+
|
|
3
|
+
**Based on actual visual analysis of 4 reference sites via Playwright screenshots**
|
|
4
|
+
**Sites**: weare-simone.webflow.io, facetad.com, clickerss.com, tableside.com.au
|
|
5
|
+
**Date**: 2026-02-10
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Universal Patterns (Found in 3+ Sites)
|
|
10
|
+
|
|
11
|
+
### 1. Typography-as-Hero
|
|
12
|
+
**Simone**: Giant "SIMONE" wordmark fills viewport
|
|
13
|
+
**Clickerss**: Massive B&W portrait, then enormous serif text sections
|
|
14
|
+
**Tableside**: "FOOD & DRINK DIGITAL CREATIVES" in bold coral fills 70% of viewport
|
|
15
|
+
**Facetad**: Single sentence in vast emptiness
|
|
16
|
+
|
|
17
|
+
**What it means**: The hero section is ONE thing — either giant text or a giant image. No competing elements. No "learn more" buttons, no description paragraphs, no gradient overlays.
|
|
18
|
+
|
|
19
|
+
**VIB3+ action**: The opening cinematic must be ONLY the text mask + visualizer. Kill any secondary UI that competes with the hero moment.
|
|
20
|
+
|
|
21
|
+
### 2. Asymmetric Card Layouts
|
|
22
|
+
**Simone**: Zigzag case study cards (image RIGHT, then LEFT, then RIGHT)
|
|
23
|
+
**Facetad**: Text LEFT + floating image RIGHT (services section)
|
|
24
|
+
**Tableside**: 50/50 split cards (photo one side, text other side)
|
|
25
|
+
**Clickerss**: Text-image interweaving (overlapping, not split)
|
|
26
|
+
|
|
27
|
+
**What it means**: No site uses centered, symmetric card layouts. Everything is offset, asymmetric, or alternating. Visual rhythm comes from the alternation pattern.
|
|
28
|
+
|
|
29
|
+
**VIB3+ action**: Cascade cards should have asymmetric overlay positioning. Alternate text LEFT/RIGHT between cards. The card overlays shouldn't be centered — push them to one side.
|
|
30
|
+
|
|
31
|
+
### 3. Non-Rectangular Image Boundaries
|
|
32
|
+
**Facetad**: ALL images use parallelogram clip-paths
|
|
33
|
+
**Simone**: Rounded-corner containers (~24px radius)
|
|
34
|
+
**Facetad**: Diagonal section dividers (30-40 degree angle)
|
|
35
|
+
**Clickerss**: Images overlapping text boundaries
|
|
36
|
+
|
|
37
|
+
**What it means**: Rectangular images are boring. Every site transforms image boundaries through clip-paths, rounded corners, diagonal edges, or overlap.
|
|
38
|
+
|
|
39
|
+
**VIB3+ action**: The clip-path polygon morphing system (rect → hex → diamond → oct → narrow) is exactly right. Also consider adding parallelogram/skewed shapes to the shape vocabulary.
|
|
40
|
+
|
|
41
|
+
### 4. Extreme Negative Space
|
|
42
|
+
**Facetad**: Hero is 95% empty
|
|
43
|
+
**Simone**: Hero is pure text, no images
|
|
44
|
+
**Clickerss**: Large gaps between sections
|
|
45
|
+
**Tableside**: Generous padding around portfolio cards
|
|
46
|
+
|
|
47
|
+
**What it means**: Premium sites use MORE empty space, not less. The content is given room to breathe.
|
|
48
|
+
|
|
49
|
+
**VIB3+ action**: Resist the urge to pack every section with content. The morph experience should have moments of sparse visualization (low density, simple geometry) as breathing room between intense moments.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Distinctive Patterns (Site-Specific but Highly Applicable)
|
|
54
|
+
|
|
55
|
+
### 5. Diagonal Section Dividers (Facetad)
|
|
56
|
+
All section boundaries use a consistent diagonal angle. Cream → photo → cream → red → cream transitions happen along diagonal slashes, never horizontal lines.
|
|
57
|
+
|
|
58
|
+
**VIB3+ action**: Section dividers could use CSS `clip-path: polygon()` with angled edges instead of straight horizontal borders. A 15-20 degree angle would add visual energy.
|
|
59
|
+
|
|
60
|
+
### 6. Hard Dark/Light Mode Switches (Simone)
|
|
61
|
+
Cream → dark teal happens as a sharp boundary. The entire palette inverts. No cross-fade.
|
|
62
|
+
|
|
63
|
+
**VIB3+ action**: The morph stages already switch visualization parameters sharply between stages. Could also switch the page background color sharply at section boundaries (not just the visualizer hue).
|
|
64
|
+
|
|
65
|
+
### 7. Text-Image Interweaving (Clickerss)
|
|
66
|
+
Typography at 100-200px+ runs through/behind portfolio images. Text and images share the same spatial zone.
|
|
67
|
+
|
|
68
|
+
**VIB3+ action**: Section titles could extend BEHIND the cascade cards, visible through the clip-path window. This creates depth between the text layer and the visualizer layer.
|
|
69
|
+
|
|
70
|
+
### 8. Scattered Floating Gallery (Facetad)
|
|
71
|
+
Portfolio images scattered across viewport at various sizes and positions, all in parallelogram shapes, overlapping each other.
|
|
72
|
+
|
|
73
|
+
**VIB3+ action**: Could be used for a "gallery" or "showcase" section where multiple small visualizer thumbnails float at different positions with skewed clip-paths, each showing a different geometry.
|
|
74
|
+
|
|
75
|
+
### 9. Color Palette Discipline (All Sites)
|
|
76
|
+
**Simone**: cream + dark teal + chartreuse green (3 colors)
|
|
77
|
+
**Facetad**: cream + terracotta red (2 colors)
|
|
78
|
+
**Clickerss**: white + black (2 colors)
|
|
79
|
+
**Tableside**: cream + coral + navy (3 colors)
|
|
80
|
+
|
|
81
|
+
**What it means**: Maximum 3 colors. The visualizer provides the color variety — the page itself should be restrained.
|
|
82
|
+
|
|
83
|
+
### 10. Footer Echo (Simone)
|
|
84
|
+
The hero's filled "SIMONE" becomes outlined/stroked at the footer. Same shape, different rendering.
|
|
85
|
+
|
|
86
|
+
**VIB3+ action**: The CTA section should echo the hero — same visualizer geometry but in a different system (e.g., Quantum in hero → Faceted outline in CTA) or with inverted parameters.
|
|
87
|
+
|
|
88
|
+
### 11. Marquee/Infinite Scroll (Simone)
|
|
89
|
+
"Work with us" repeats horizontally as a continuous scrolling marquee.
|
|
90
|
+
|
|
91
|
+
**VIB3+ action**: A parameter ticker or geometry name marquee could add persistent horizontal motion independent of vertical scroll.
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Priority Actions for VIB3+ Landing Page
|
|
96
|
+
|
|
97
|
+
### Immediate (Apply to existing choreography)
|
|
98
|
+
1. **Add parallelogram shapes** to SHAPES vocabulary in choreography.js (`skewR`, `skewL` with angled edges)
|
|
99
|
+
2. **Asymmetric overlay positioning** — alternate cascade-overlay text LEFT/RIGHT per card
|
|
100
|
+
3. **Increase negative space** — add padding/margins between morph stages
|
|
101
|
+
4. **Increase hero text size** — opening cinematic text should fill more viewport
|
|
102
|
+
5. **Add service/parameter metadata** to cascade card overlays (geometry name, system type)
|
|
103
|
+
|
|
104
|
+
### Medium-term (New section patterns)
|
|
105
|
+
6. **Diagonal section dividers** — angled `clip-path` on section boundaries
|
|
106
|
+
7. **Footer echo** — CTA section uses same geometry as hero but different system
|
|
107
|
+
8. **Split-color CTA** — vertical or diagonal color split in CTA section
|
|
108
|
+
9. **Text-behind-card** effect — section titles visible through clip-path windows
|
|
109
|
+
|
|
110
|
+
### Aspirational (Major new features)
|
|
111
|
+
10. **Scattered gallery section** — multiple small visualizer thumbnails floating with parallelogram clip-paths
|
|
112
|
+
11. **Horizontal marquee** — continuous ticker with geometry names or parameter readouts
|
|
113
|
+
12. **Variable card sizing** — some cascade cards appear larger/smaller via clip-path window size
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
*Synthesized from actual Playwright visual analysis of 4 reference sites.*
|