@three-blocks/devtools 1.0.1-alpha.229.gb2f4ea7d182c → 2.0.0-alpha.238.g8723f0a28ca3

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 (52) hide show
  1. package/CHANGELOG.md +30 -2
  2. package/README.md +27 -4
  3. package/dist/browser/shader-capture.d.ts +13 -1
  4. package/dist/browser/shader-capture.js +2 -2
  5. package/dist/{browser-smoke-X3NBYPHI.js → browser-smoke-EIKJ6OVK.js} +4 -4
  6. package/dist/chunk-4YRR36JN.js +97 -0
  7. package/dist/chunk-65VEJRRT.js +2 -0
  8. package/dist/chunk-GA7PGW2R.js +18 -0
  9. package/dist/{chunk-JMS5NTP7.js → chunk-JHBQB7WC.js} +1 -1
  10. package/dist/chunk-LUULHXFK.js +17 -0
  11. package/dist/chunk-NPLE7PPF.js +3 -0
  12. package/dist/{chunk-YLN3G2JS.js → chunk-OQLHTDDH.js} +1 -1
  13. package/dist/chunk-TRHSN2DJ.cjs +1 -0
  14. package/dist/{chunk-ILOEBEIQ.js → chunk-TUIINI6U.js} +1 -1
  15. package/dist/chunk-V34C7NIM.js +80 -0
  16. package/dist/chunk-W6UL2OW7.js +2 -0
  17. package/dist/cli.js +22 -22
  18. package/dist/environment-bake-XMRKQJXM.js +4 -0
  19. package/dist/index.d.ts +38 -8
  20. package/dist/index.js +24 -21
  21. package/dist/{shader-autowire-DCODBFMX.js → shader-autowire-SPE5DM2X.js} +1 -1
  22. package/dist/{shader-browser-ZGPGYM2U.js → shader-browser-EYE3UT2U.js} +1 -1
  23. package/dist/{shader-browser-FSCRBXJ7.js → shader-browser-WF4HNSAV.js} +1 -1
  24. package/dist/shader-capture-server.d.ts +22 -2
  25. package/dist/shader-capture-server.js +14 -14
  26. package/dist/shader-config-EOFU5D3Y.js +2 -0
  27. package/dist/{shader-project-runner-FJXPTLUO.js → shader-project-runner-S2AID2RJ.js} +1 -1
  28. package/dist/{shader-transform-DSFaVrux.d.ts → shader-transform-D160zMyt.d.ts} +3 -0
  29. package/dist/shader-watch-ISNWIAXN.js +2 -0
  30. package/dist/shader-workflow-T72N2CLS.js +2 -0
  31. package/dist/status-D2RF6QTL.js +2 -0
  32. package/dist/{text-atlas-BHPSDU7C.js → text-atlas-WRYJT3E7.js} +1 -1
  33. package/dist/transform.cjs +1 -1
  34. package/dist/transform.d.ts +1 -1
  35. package/dist/transform.js +1 -1
  36. package/dist/webpack-loader.cjs +1 -1
  37. package/dist/webpack-loader.d.ts +1 -1
  38. package/dist/webpack-loader.js +1 -1
  39. package/package.json +3 -3
  40. package/dist/chunk-4M7M55NS.js +0 -93
  41. package/dist/chunk-5X5NS5EW.js +0 -18
  42. package/dist/chunk-J6OESAZM.js +0 -76
  43. package/dist/chunk-NE7SC2BX.js +0 -2
  44. package/dist/chunk-NEWSG5RX.js +0 -3
  45. package/dist/chunk-PAH76FDD.js +0 -14
  46. package/dist/chunk-PY2ZLMZF.cjs +0 -1
  47. package/dist/chunk-ZDNZCQUQ.js +0 -2
  48. package/dist/environment-bake-5P4IAL4O.js +0 -4
  49. package/dist/shader-config-BYBJUL3C.js +0 -2
  50. package/dist/shader-watch-FVQNE263.js +0 -2
  51. package/dist/shader-workflow-HZWFWHTS.js +0 -2
  52. package/dist/status-TV3G3PG4.js +0 -2
package/CHANGELOG.md CHANGED
@@ -1,9 +1,37 @@
1
1
  # @three-blocks/devtools
2
2
 
3
- ## 1.0.1-alpha.229.gb2f4ea7d182c
3
+ ## 2.0.0-alpha.238.g8723f0a28ca3
4
+
5
+ - Website: Admin now shows quick growth, traffic, CLI, tools, and Blender activity.
4
6
 
5
7
  - Website: Pro now highlights lifetime licensing and tools at $79/month annually or $99 monthly.
6
8
 
9
+ - Tools: Mesh to Splat now honors scene-camera scale and completes engine checks after reloads.
10
+
11
+ - Tools: Mesh to Splat no longer crashes when Windows blocks an engine cache.
12
+
13
+ - CLI: Splat engine setup now appears only when a Mesh to Splat tool needs it.
14
+
15
+ - CLI: Deployment watch now stays open and names uploaded tool and Blender add-on versions.
16
+
17
+ - Devtools: Shader capture now respects each scene's supported renderer backends.
18
+
19
+ - Devtools: Shader precompilation now isolates backends and replays shared texture recipes.
20
+
21
+ - Packages: Shader tools now capture both backends by default and show backend tests and sizes.
22
+
23
+ - Library: Baked Motion now loads each ActiveFrame track once and drops KTX2 pose fields.
24
+
25
+ - Devtools: Precompiled indirect batches now skip redundant shader setup.
26
+
27
+ - CLI: Blender subject pickers now browse collapsed collections with fuzzy graph search.
28
+
29
+ - Starter: Fresh projects now avoid unstyled flashes and hydrate every captured startup shader.
30
+
31
+ - Website: Deployments now keep cached example chunks available across releases.
32
+
33
+ - Website: Static assets now deploy reliably without changing their public URLs.
34
+
7
35
  - CLI: Deployment status now reports Amplify through GitHub without an AWS login.
8
36
 
9
37
  - Devtools: Pushes now return preprod failures to the active Agent and avoid oversized bundles.
@@ -24,7 +52,7 @@
24
52
 
25
53
  - Website: Preprod billing now explains its read-only state instead of showing broken actions.
26
54
 
27
- - Packages: Built from `b2f4ea7d182c`.
55
+ - Packages: Built from `8723f0a28ca3`.
28
56
 
29
57
 
30
58
  ## 1.0.0
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @three-blocks/devtools
2
2
 
3
- `@three-blocks/devtools` is the public, account-free command engine behind `npx three-blocks`. It captures and verifies WebGPU shaders, generates text atlases, bakes environment lighting, and checks browser integrations. The runtime overlay and shader hydrator ship from `three-blocks/devtools` and `three-blocks/shaders` in the core package.
3
+ `@three-blocks/devtools` is the public, account-free command engine behind `npx three-blocks`. It captures and verifies WebGPU shaders and eligible shaders from `WebGPURenderer`'s WebGL fallback, generates text atlases, bakes environment lighting, and checks browser integrations. The runtime overlay and shader hydrator ship from `three-blocks/devtools` and `three-blocks/shaders` in the core package.
4
4
 
5
5
  ## Add Devtools to a Vite app
6
6
 
@@ -43,7 +43,29 @@ Use `--driver static --serve build_directory` for a nonstandard build directory.
43
43
 
44
44
  The overlay changes from **Live** to **Precompiled** after a fresh capture loads. Each capture writes a receipt-matched estimate to `.three-blocks/shaders/timing.local.json`; `--commit-timing` also writes a shareable, hardware-labelled `timing.json`. `shaders test` replaces the local estimate with a median from repeated runs. The overlay reports skipped Three Shading Language (TSL) builds and estimated TSL work avoided only while timing matches the current receipt.
45
45
 
46
- `WebGLRenderer` stays on live shader building. `WebGPURenderer` also uses the live path when it selects a WebGL fallback.
46
+ The default capture backend is `both`. Set `"backend": "webgpu"` or `"backend":
47
+ "webgl"` to keep one lane, or select a lane explicitly:
48
+
49
+ ```bash
50
+ npx three-blocks shaders capture --backend both
51
+ npx three-blocks shaders test --parity-only --backend webgl
52
+ npx three-blocks shaders status --check --backend webgl
53
+ ```
54
+
55
+ Artifacts are symmetric: `.three-blocks/shaders/<scene>.<backend>.ts` and
56
+ `public/three-blocks/shaders/<scene>.<backend>.json`. The receipt reports
57
+ freshness per scene/backend, and the runtime loads only the active renderer's
58
+ manifest.
59
+
60
+ During development, the overlay's compact WebGPU/WebGL control reloads the page
61
+ against either precompiled lane and reports the pooled WGSL/GLSL source size.
62
+
63
+ This supports `WebGPURenderer` when it selects Three's WebGL fallback backend;
64
+ the legacy standalone `WebGLRenderer` remains outside the provider seam.
65
+ WebGL precompilation is render-only: compute, storage-buffer writes, subgroups,
66
+ and PBO-backed storage reads stay on the live path with one warning. Required
67
+ GLSL extensions are checked before hydration, so a capture from SwiftShader
68
+ falls live instead of using incompatible source on another device.
47
69
 
48
70
  ### Three.js r185 compatibility patch
49
71
 
@@ -119,7 +141,7 @@ Use `npx three-blocks` in applications. This package also exposes `three-blocks-
119
141
 
120
142
  All commands support `--json` and `--reporter json`. `status` reads generated `three-blocks.json` metadata when present; adopted projects need only their shader or text configuration. Static status validates committed artifacts, compatibility versions, the installed `three-blocks/shaders` runtime closure, and discovered shader inputs. Browser evidence comes from the last `browser smoke` run and remains a dated verification, not live state.
121
143
 
122
- ### Precompile WebGPU shaders
144
+ ### Precompile renderer shaders
123
145
 
124
146
  ```bash
125
147
  npx three-blocks shaders status --check
@@ -134,6 +156,7 @@ Add `three-blocks.shaders.json` when the project needs multiple routes, a semant
134
156
  ```json
135
157
  {
136
158
  "schemaVersion": 1,
159
+ "backend": "both",
137
160
  "scenes": [
138
161
  { "key": "main", "url": "/" },
139
162
  { "key": "text", "url": "/text", "requiresText": true }
@@ -144,7 +167,7 @@ Add `three-blocks.shaders.json` when the project needs multiple routes, a semant
144
167
 
145
168
  Readiness is optional. Its global may be `true` or a promise; a selector is also supported. With no override, the engine waits for its settled-frame and first-frame contract and assumes nothing about the application DOM.
146
169
 
147
- Capture observes real render and compute `NodeBuilder` states, then writes a deterministic pooled v3 manifest. The generated application owns no capture harness, and the tooling never writes to `node_modules`. Missing keys, stale receipts, unsupported Three.js versions, and hydration mismatches fail closed to live shader building.
170
+ Capture observes real render and compute `NodeBuilder` states, then writes a deterministic pooled v3 manifest. WebGL receipts include render states and explicit live-fallback reasons for unsupported compute or PBO storage reads. The generated application owns no capture harness, and the tooling never writes to `node_modules`. Missing keys, stale receipts, unsupported Three.js versions, unavailable GLSL extensions, and hydration mismatches fail closed to live shader building.
148
171
 
149
172
  Artifact writes are transactional. `meta.json` records runtime, tool, schema, source-input, byte, and stage-coverage evidence. Relevant source changes during capture abort the write, and failures preserve the prior committed receipt. Explicit stable keys remain the clearest choice for conditional capture matrices; otherwise, capture assigns deterministic scene-scoped keys. Set `allowLiveBuilds: false` when every build must belong to the declared matrix.
150
173
 
@@ -5,9 +5,19 @@ interface ShaderCaptureReadiness {
5
5
  interface ShaderCaptureRuntimeConfiguration {
6
6
  readonly capture: boolean;
7
7
  readonly forceLive: boolean;
8
+ /** Renderer backend owned by this capture lane. Omitted for ambient overlay instrumentation. */
9
+ readonly backend?: 'webgpu' | 'webgl';
10
+ /** Instrument a browser-driver observation without writing a capture or forcing live misses. */
11
+ readonly driven?: boolean;
8
12
  readonly settleFrames: number;
9
13
  /** Maximum visible settle time after readiness before capture posts, regardless of late builds. */
10
14
  readonly settleTimeoutMs?: number;
15
+ /**
16
+ * Absolute epoch deadline at which a driven capture must begin its manifest
17
+ * write, reserving driver time for payload validation, the transactional
18
+ * write, and timeout diagnostics before the outer lane budget expires.
19
+ */
20
+ readonly deadlineAt?: number;
11
21
  /** Pause the settle countdown while an interactive capture tab is hidden. */
12
22
  readonly visibilityGuard?: boolean;
13
23
  /** Overlay-capture session identity. Omitted by the driven browser capture. */
@@ -40,6 +50,8 @@ declare function instrumentThreeBlocksShaderBuilder(builderValue: unknown, rende
40
50
  declare function recordThreeBlocksShaderBuild(builderValue: unknown, rendererValue: unknown): void;
41
51
  /** Called at the top of r185 getForRender/getForCompute before provider lookup. */
42
52
  declare function prepareThreeBlocksShaderRenderer(rendererValue: unknown, namespaceValue?: unknown, revisionValue?: unknown): void;
53
+ /** Synchronous view of this lane's demand journal for driver diagnostics. */
54
+ declare function readThreeBlocksShaderDemands(): readonly UnknownRecord[];
43
55
  declare function pageLoadingIsComplete(root: UnknownRecord, readiness?: ShaderCaptureReadiness): boolean;
44
56
 
45
- export { activeShaderCaptureScene, capturedBindingKind, configureThreeBlocksShaderCapture, instrumentThreeBlocksShaderBuilder, pageLoadingIsComplete, prepareThreeBlocksShaderRenderer, recordThreeBlocksShaderBuild, wrapThreeBlocksCaptureTimedBuild };
57
+ export { activeShaderCaptureScene, capturedBindingKind, configureThreeBlocksShaderCapture, instrumentThreeBlocksShaderBuilder, pageLoadingIsComplete, prepareThreeBlocksShaderRenderer, readThreeBlocksShaderDemands, recordThreeBlocksShaderBuild, wrapThreeBlocksCaptureTimedBuild };