@descix/frqtl-node 0.6.0-p1.1 → 0.6.0
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/CLAUDE.md +2 -2
- package/README.md +6 -4
- package/dist/dist-manifest.json +71 -65
- package/dist/eyes/index.js +5 -2
- package/dist/fat/pkg-node/package.json +2 -10
- package/dist/frqtl/compat/providers/wasm-engine.js +3 -4
- package/dist/frqtl/compat/renderer/providers/p5-provider.js +1 -1
- package/dist/frqtl/objects/FrqtlApp.js +33 -6
- package/dist/frqtl/objects/RecipeContext.js +284 -13
- package/dist/frqtl/objects/constants/WallBehaviors.js +1 -1
- package/dist/frqtl/objects/instruments/capture.js +1 -24
- package/dist/frqtl/objects/instruments/hosted-eyes.js +216 -29
- package/dist/frqtl/objects/objects/makeControlsForObject.js +5 -5
- package/dist/frqtl/objects/record/Record.js +346 -0
- package/dist/frqtl/objects/record/open-record.js +22 -0
- package/dist/frqtl/objects/schema/engine-scopes.js +2 -2
- package/dist/frqtl/objects/schema/scopes.js +2 -2
- package/dist/frqtl/objects/setup/_worldInit.js +1 -2
- package/dist/frqtl/objects/setup/setupBlackbodySubstrate.js +1 -2
- package/dist/frqtl/parts/CameraControls.js +8 -0
- package/dist/frqtl/parts/DetectorWall.js +1 -1
- package/dist/frqtl/parts/FrqtlVision.js +21 -6
- package/dist/frqtl/parts/GraphingDetectorWall.js +7 -7
- package/dist/frqtl/parts/LargeObject.js +2 -2
- package/dist/frqtl/parts/LiveChart.js +2 -2
- package/dist/frqtl/parts/LogicGate.js +3 -3
- package/dist/frqtl/parts/OvenBox.js +1 -1
- package/dist/frqtl/parts/PointSource.js +1 -1
- package/dist/frqtl/parts/SlitLightSource.js +1 -1
- package/dist/frqtl/parts/SlitScreen.js +1 -1
- package/dist/frqtl/parts/SphereEmitter.js +12 -12
- package/dist/frqtl/parts/Trace.js +1 -1
- package/dist/frqtl/parts/Tunnel.js +11 -11
- package/dist/frqtl/parts/Wall.js +20 -10
- package/dist/frqtl/scenes/circuit-sat.js +1 -0
- package/dist/frqtl/scenes/dse-one-emitter.js +32 -34
- package/dist/frqtl/scenes/dse-two-emitters.js +33 -34
- package/dist/frqtl/scenes/mirror-route.js +96 -79
- package/dist/shim/bundle/index.js +118 -96
- package/dist/shim/bundle/indexHtml.js +66 -39
- package/dist/shim/controls/index.js +1 -1
- package/dist/shim/engine/artifact-shell.js +1 -1
- package/dist/shim/engine/router.js +3 -3
- package/dist/shim/host/host-view.js +228 -0
- package/dist/shim/host/index.js +18 -0
- package/dist/shim/index.js +3 -5
- package/dist/shim/notebook/format.js +1 -1
- package/dist/shim/notebook/kernel.js +1 -1
- package/dist/shim/notebook/setup-builder.js +2 -2
- package/dist/shim/notebook/store.js +2 -3
- package/dist/shim/package.json +1 -0
- package/dist/shim/page-params/index.js +2 -30
- package/dist/shim/project/fork.js +293 -0
- package/dist/shim/project/identity.js +3 -1
- package/dist/shim/project/index.js +16 -3
- package/dist/shim/project/link.js +224 -46
- package/dist/shim/project/manifest.js +151 -0
- package/dist/shim/project/parts-writer.js +68 -7
- package/dist/shim/project/read-text.js +43 -0
- package/dist/shim/project/record-format.js +345 -0
- package/dist/shim/project/specifiers.js +104 -15
- package/dist/shim/registry/exhibits.js +15 -34
- package/dist/shim/registry/index.js +3 -3
- package/dist/shim/registry/scene-roster.js +35 -0
- package/dist/shim/registry/scene-source.js +48 -64
- package/dist/shim/registry/walkthrough.js +6 -6
- package/dist/shim/render-state/apply.js +66 -31
- package/dist/shim/render-state/index.js +6 -2
- package/dist/shim/runtime/index.js +4 -4
- package/dist/shim/storage/codec-chains.js +88 -0
- package/dist/shim/storage/folders.js +205 -0
- package/dist/shim/storage/index.js +64 -8
- package/dist/shim/storage/make-namespace-store.js +5 -5
- package/llms.txt +4 -3
- package/package.json +19 -1
- package/dist/shim/bundle/frqnb.js +0 -112
- package/dist/shim/bundle/manifest.js +0 -95
- package/dist/shim/registry/experiments.js +0 -215
- package/dist/shim/storage/modules.js +0 -249
- package/dist/shim/storage/projects.js +0 -150
package/CLAUDE.md
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
A discrete cellular-automata physics engine (compiled Rust → WASM) for node: the same modules as
|
|
4
4
|
`@descix/frqtl-web` (one source, built twice), plus the node engine door `bootNode` and the hosted eyes.
|
|
5
|
-
|
|
5
|
+
`0.6.0` (npm dist-tag `latest`). Node ≥ 22.12.
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
|
-
npm install @descix/frqtl-node
|
|
8
|
+
npm install @descix/frqtl-node
|
|
9
9
|
|
|
10
10
|
## Rung 0 — the seven primitives
|
|
11
11
|
```js
|
package/README.md
CHANGED
|
@@ -4,11 +4,11 @@ FRQTL for node: a discrete cellular-automata physics engine (compiled Rust → W
|
|
|
4
4
|
local per-pixel rules — a frame moves one pixel per tick, single occupancy, momentum — rather than force
|
|
5
5
|
equations. Interference, blackbody spectra and atom-like binding emerge from the automaton.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
`0.6.0` (npm dist-tag `latest`). Node ≥ 22.12.
|
|
8
8
|
|
|
9
9
|
## Install
|
|
10
10
|
|
|
11
|
-
npm install @descix/frqtl-node
|
|
11
|
+
npm install @descix/frqtl-node
|
|
12
12
|
|
|
13
13
|
## Rung 0 — the seven primitives
|
|
14
14
|
|
|
@@ -31,11 +31,13 @@ const tick = u.doTick(); // TickData: fr
|
|
|
31
31
|
| `.` | the parts (`Wall`, `SphereEmitter`, `Tunnel`, `FrqtlVision`, …), `bootNode`, the engine accessors (`engine`, `engineState`), the capture contracts (`FrqtlCapture`, `RenderStages`, `FieldBuilder`, `CaptureEnvelope`) and `validateRendererProvider` |
|
|
32
32
|
| `./eyes` | `openHostedEyes` — a `composite` still through the REAL renderer, in a managed headless browser (pulls the pinned `playwright`) |
|
|
33
33
|
| `./parts`, `./parts/*` | the parts barrel; one part = one file |
|
|
34
|
-
| `./project` | `FRQTL_WEB_SPECIFIERS`, `libPathOf`, `importMapFor`, `pageImportMapFor`, `linkProject`, `sketchProject`, `SKETCH_ENTRY`, `projectIdentity` |
|
|
35
|
-
| `./registry` | the walk-through rungs, the showcase roster, the
|
|
34
|
+
| `./project` | `FRQTL_WEB_SPECIFIERS`, `libPathOf`, `importMapFor`, `pageImportMapFor`, `FRQTL_WEB_HOST_SPECIFIERS`, `linkProject`, `sketchProject`, `SKETCH_ENTRY`, `projectIdentity`, `MANIFEST_FILE`, `MANIFEST_KEYS`, `normalizeManifest`, `parseManifest`, `serializeManifest`, `manifestFor`, `RECORD_FILES`, `RECORD_KEYS`, `CHANGE_KEYS`, `OPS`, `BY`, `CLIP_SECONDS`, `CLIP_NAME`, `clipName`, `jsonText`, `recordFolderFaults` |
|
|
35
|
+
| `./registry` | the walk-through rungs, the showcase roster, the scene list (`sceneGroups`), `projectOf` |
|
|
36
36
|
| `./kinds` | `registerKind`, `kindNamed`, `kindOf`, `registeredKinds` |
|
|
37
|
+
| `./host-view` | `declareHostView`, `HOST_VIEW_OUTCOMES`, `CONTRACT_VIOLATIONS`, `HOST_SDK_SCRIPT` — the DeSciX host-view declarer (pure: a node test can drive a call site with a stub SDK) |
|
|
37
38
|
| `./register` | installs the resolve hook for a sketch's `@descix/frqtl-web/...` imports (`node --import @descix/frqtl-node/register`) |
|
|
38
39
|
| `./shim/controls/registry.js`, `./shim/render/sun-look.js`, `./compat/renderer/display-slot.js`, `./compat/renderer/orbit-bag.js`, `./objects/setup/_collisionMatrixLanes.js`, `./compat/engine.js` | the six non-part modules a scene may import (the rows of `FRQTL_WEB_SPECIFIERS`) |
|
|
40
|
+
| `./objects/objects/tagger.js`, `./objects/schema/index.js`, `./shim/render/heat-colormap.js`, `./objects/schema/valueNormalizer.js`, `./objects/objects/Box.js`, `./objects/objects/QuantumEmitter.js`, `./shim/expr/ast-schema.js`, `./objects/objects/actionCompiler.js`, `./objects/v1-replacements.js`, `./objects/objects/slitLinerScatter.js`, `./objects/setup/setupSphereEmitter3D.js`, `./objects/objects/directedRedirectProgram.js`, `./compat/renderer/lo-drawn-center.js`, `./objects/setup/setupTunnelPointExit.js`, `./objects/constants/WallBehaviors.js`, `./objects/objects/absorbRadiation.js`, `./objects/geometry/SlabFace.js` | the 17 part-internal modules a forked part file imports (the `tier: 'part-internal'` rows of `FRQTL_WEB_SPECIFIERS`): not a scene API — the linker admits them only from a `parts/*.js` file — and they move with the parts |
|
|
39
41
|
| `./dist-manifest.json` | sha256 of every dist file |
|
|
40
42
|
|
|
41
43
|
These modules are the same files `@descix/frqtl-web` ships (one source, built twice).
|
package/dist/dist-manifest.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@descix/frqtl-node",
|
|
3
|
-
"version": "0.6.0
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"files": {
|
|
5
|
-
"eyes/index.js": "
|
|
5
|
+
"eyes/index.js": "b3563421030bb7fdd277eb697959fbe9107463cbb5478160edc7d887daa67be3",
|
|
6
6
|
"fat/pkg-node/egpt_wasm.js": "5e6af1f6725c93c0e9ad7386f1785cbe639ce596a4caa19ca85729c1f2bea04d",
|
|
7
7
|
"fat/pkg-node/egpt_wasm_bg.wasm": "e204498ac7439c294653476c0d214345713e6170819281b27bbbcba217a5a5e9",
|
|
8
|
-
"fat/pkg-node/package.json": "
|
|
8
|
+
"fat/pkg-node/package.json": "82d346be94b2d9f7e30b1b679c8a5e795cec838764d28727919f85a982d9911f",
|
|
9
9
|
"frqtl/assets/vendor/acorn.LICENSE": "76a876cf886ff9be2a8b5e2e86514fed06223c8c9f0c1e9ee9606e93841e00b7",
|
|
10
10
|
"frqtl/assets/vendor/acorn.PINNED.json": "52d5c4cf628a586aec54f780ab6b8d22ae7c22cfb290d0d86c2f589f3106b101",
|
|
11
11
|
"frqtl/assets/vendor/acorn.mjs": "efb0124a960b34d53f9928c4926bfcfd300bb6a3d7ab64ee949b3a8bed1c7e5f",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"frqtl/compat/boot-node.js": "7cfd4645f965fa3e3d3072688b268a8aa5b8b4d727c7d842d3bad841dacd1194",
|
|
14
14
|
"frqtl/compat/engine.js": "a849144e80f93694290f4567fa78d09c88b277162be9f1c15ab820328690c3a4",
|
|
15
15
|
"frqtl/compat/package-root.js": "9ff4b6bc958c524b5084f849c811f1491a788afc99cab81cd281add02316ff83",
|
|
16
|
-
"frqtl/compat/providers/wasm-engine.js": "
|
|
16
|
+
"frqtl/compat/providers/wasm-engine.js": "37c91b5a42c14ad82c0cf10d46e4a10bb8d1e2e553aee59052b6267d1b03fe79",
|
|
17
17
|
"frqtl/compat/providers/wasm-load-browser.js": "990a8e22f365f3d32ee8d448965a23cc85ebf62b321ee55417e500bfd5ad7f2d",
|
|
18
18
|
"frqtl/compat/providers/wasm-load-node.js": "0ec1d50e204bf073caac5218b3007eff65c480a94c8d87ad567a6d80b6b6c435",
|
|
19
19
|
"frqtl/compat/renderer/FieldBuilder.js": "af30df8b04ee05a006882eb8cb56ff84e76142348339d039296304877770c519",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"frqtl/compat/renderer/orbit-bag.js": "b6671d3b35fcf5f79e228934a8032e729309e62b66920602f34c834f3f911681",
|
|
29
29
|
"frqtl/compat/renderer/providers/godrays-layer.js": "be76fb8e69c74dd9bd0fb9aa6189a816d0ed29b9f4e04b60277be375b93d606c",
|
|
30
30
|
"frqtl/compat/renderer/providers/index.js": "fa669158a082a0081125c81694ca79962639caf86a575ee198a815f3e13a19e7",
|
|
31
|
-
"frqtl/compat/renderer/providers/p5-provider.js": "
|
|
31
|
+
"frqtl/compat/renderer/providers/p5-provider.js": "39aa68c2232b123ed52ca235f264cfb57993f46a41d4b0ed8139bffbac2f64ac",
|
|
32
32
|
"frqtl/compat/renderer/providers/three-camera-contract.js": "644c1cc5e381cd2af897e69762216f84716808eeb5948efb989f48c47696bc60",
|
|
33
33
|
"frqtl/compat/renderer/providers/three-camera-geometry.js": "a741f72c34005fc47fb4d53cc7ef2d2df4bfa7e8eecc9a0252b1083b3d5e301a",
|
|
34
34
|
"frqtl/compat/renderer/providers/three-provider.js": "08410c488dcf3290d0a950331f33d8ba6882a391308d4d4598d9cb9aa96a4c9a",
|
|
@@ -38,15 +38,15 @@
|
|
|
38
38
|
"frqtl/compat/vendor.js": "2393ada71cdbe750d409174e1ba9b098148796efdff746b315d706a0b32e58e8",
|
|
39
39
|
"frqtl/experiments/_shared/boot-failure.js": "1a92e85b06acdefede5613f2fac7cd4e61d2aba590820f1bfa92f6829fcbbdd4",
|
|
40
40
|
"frqtl/node-entry.js": "a401039b4fcf53ac620edbd80985aa4448122f2e3caaeaf4d5595f5e9d512b60",
|
|
41
|
-
"frqtl/objects/FrqtlApp.js": "
|
|
41
|
+
"frqtl/objects/FrqtlApp.js": "e3232b09eb576427df2a52393a5603b4c084d6edba5667b03afb161fd6d76b9b",
|
|
42
42
|
"frqtl/objects/ObjectFactory.js": "a8f050ce61b7ab9c9b4f81e9eeaebf05c3cc0b532c741ce93d6e952489772b11",
|
|
43
|
-
"frqtl/objects/RecipeContext.js": "
|
|
43
|
+
"frqtl/objects/RecipeContext.js": "c8614d30b785b333c44a59f0a6bdd15a595dd0023f85ef9385f40eda5802eba8",
|
|
44
44
|
"frqtl/objects/collectors/DataCollector.js": "8736d6cb77eec36ce2adcf2bc3b0d2436eeb70a73b77182ff053efdc6ca071df",
|
|
45
|
-
"frqtl/objects/constants/WallBehaviors.js": "
|
|
45
|
+
"frqtl/objects/constants/WallBehaviors.js": "a05c6e06923962e2cc2cf7204131e5d20bf83c5c8e85fbb13867872040345e40",
|
|
46
46
|
"frqtl/objects/geometry/SlabFace.js": "847921b124d3bc1692e88c363c087d392a1baa7c652a3a61e381d0f8a8342e57",
|
|
47
47
|
"frqtl/objects/instruments/capture-host.js": "ba5001afa2d8f4e438c5eacb2a5456d903401de8584d170c0b02ff3014794edd",
|
|
48
|
-
"frqtl/objects/instruments/capture.js": "
|
|
49
|
-
"frqtl/objects/instruments/hosted-eyes.js": "
|
|
48
|
+
"frqtl/objects/instruments/capture.js": "6bee2bc3928f0c12d1c87b30ce461ca5ba74cbedb4c36d43f0a3061021753f83",
|
|
49
|
+
"frqtl/objects/instruments/hosted-eyes.js": "fc99fa3f5f1780b7f2fe66a2a3f1f6db35d5d60f1c0a5a8b36a56e49c2b4efac",
|
|
50
50
|
"frqtl/objects/kinds-entry.js": "a7818357864dc900bd93350635016f938c3dca8dcb665a62df802ba5cd0b3c93",
|
|
51
51
|
"frqtl/objects/kinds.js": "107b166c96c93fd517f173fdbe7006d6f0b2694d5f799f7ec9d4f695313f1832",
|
|
52
52
|
"frqtl/objects/objects/Box.js": "0c08fa4753b78ef56d07aae3393a6268647b550ead58e409cff13eabc8b34b5d",
|
|
@@ -68,20 +68,22 @@
|
|
|
68
68
|
"frqtl/objects/objects/frqtl-control-sync.js": "88de12d2ec1643b4afc2ef56ea8cc44e1213e4a73a0ad6876d59e988125c3789",
|
|
69
69
|
"frqtl/objects/objects/frqtl-control-widgets.js": "73dd1e4481af66430601a105d375749c6db0bc9d736e47bd0edea9a4f9e6871c",
|
|
70
70
|
"frqtl/objects/objects/frqtl-control-write-queue.js": "994d0e736f240c453fd8ab52ea6d1eed05ac27a160806037d751f4a6a6ce6295",
|
|
71
|
-
"frqtl/objects/objects/makeControlsForObject.js": "
|
|
71
|
+
"frqtl/objects/objects/makeControlsForObject.js": "a3e51c526228f99ddfd10f7902fbb4dc67979726257bff131bb1d061425dbf51",
|
|
72
72
|
"frqtl/objects/objects/makeControlsForRenderSurface.js": "0ba99a4106ad92c0fe9366d6610c31d60ebfa232b3552c05f68f9c5aa56c03a0",
|
|
73
73
|
"frqtl/objects/objects/slitLinerScatter.js": "9413cc7efa2132c68d7b4d5030af28d92e8d085e127d5c8e1568d0028da2fc13",
|
|
74
74
|
"frqtl/objects/objects/sustainedSource.js": "0c324cef1583226d090b4d1014c2576ef8237f1bad47c1511bed3c3f81e04206",
|
|
75
75
|
"frqtl/objects/objects/tagger.js": "e2a5ef9ae68466afb6b157ca6d7ce03a6f126d8c91c9f9d4be6dba8e928535eb",
|
|
76
|
-
"frqtl/objects/
|
|
76
|
+
"frqtl/objects/record/Record.js": "5555c62e278654d1d54e2e3d89da4100de2d0ccae9563e62dfe4082ec7b543ba",
|
|
77
|
+
"frqtl/objects/record/open-record.js": "2da2abcccd3ad5bc39eb7fcfb764601cd031dd0afa9b3c9cb96b0669621827df",
|
|
78
|
+
"frqtl/objects/schema/engine-scopes.js": "d9d07914f748f9e7f86cc68e4d49da3b07d2bce37fea5280a88e6862ef3bb619",
|
|
77
79
|
"frqtl/objects/schema/index.js": "74ba0b6a6e057cfd40edf2ce41fcce7206c0204e90eeee4a8db3b711f10ffd33",
|
|
78
|
-
"frqtl/objects/schema/scopes.js": "
|
|
80
|
+
"frqtl/objects/schema/scopes.js": "11c17ea958fd1cc1107d83284148fa45faa803af4b239440b56c0705f700569e",
|
|
79
81
|
"frqtl/objects/schema/validate-descriptor.js": "32572a7c7f5262a46d13bcd05424555151287c4438e3e081ab2f3884fd5a2f10",
|
|
80
82
|
"frqtl/objects/schema/valueNormalizer.js": "00dc4eb188f23964336d45de021846b63a3603c423b5444f132bf470c73c4354",
|
|
81
83
|
"frqtl/objects/setup/_collisionMatrixLanes.js": "e5184a9e690e677bc941cce113f2d3d5c51de41d8322515fc707f5414c7b81be",
|
|
82
84
|
"frqtl/objects/setup/_setupOptions.js": "bc9bff3c647418db452976b54e9f91474c59abf5acbde1d62747a11a9501cca0",
|
|
83
|
-
"frqtl/objects/setup/_worldInit.js": "
|
|
84
|
-
"frqtl/objects/setup/setupBlackbodySubstrate.js": "
|
|
85
|
+
"frqtl/objects/setup/_worldInit.js": "636eb9610f0d446d7c8d660c322d31cdaaae2a35546549f92572751414ad604b",
|
|
86
|
+
"frqtl/objects/setup/setupBlackbodySubstrate.js": "c23b397dca46e0c30dfb50148f545a3d634e43452e3aa4d29188327d3d730705",
|
|
85
87
|
"frqtl/objects/setup/setupCircuitBasic.js": "8204f7d42f8dd888e6a4e1175b16a6e67b69fb2d943af6c2b40c900b905dd453",
|
|
86
88
|
"frqtl/objects/setup/setupCollisionMatrix.js": "5df3b6c93a5b1fc5f8c0a443c1d3e0003ef170bb39b6101e60b4f3017ec26f60",
|
|
87
89
|
"frqtl/objects/setup/setupConeEmitter3D.js": "284d5353857817e5821d6c3897ba15b22f32388971ae149094e1353f15f0a4d6",
|
|
@@ -103,49 +105,49 @@
|
|
|
103
105
|
"frqtl/objects/setup/setupWaveInterference.js": "b74e1406580a0bd2749686f87f9eec929e3e33c2fe6a7648cdaa2a26449e4fc1",
|
|
104
106
|
"frqtl/objects/v1-replacements.js": "7be6910430fcfbbe39db2a60b991b9c0b3ded9a8c05295060107042cee6bc201",
|
|
105
107
|
"frqtl/package-core.js": "4e645a91edf27f9631dd97aeafc72b11c06a7fbfc0f435d194f4635da872f6d7",
|
|
106
|
-
"frqtl/parts/CameraControls.js": "
|
|
108
|
+
"frqtl/parts/CameraControls.js": "c31a42296256703c5d06098b1dfb548d2ad5b39de0485fb9cff71ea777a5cc7f",
|
|
107
109
|
"frqtl/parts/CameraPath.js": "bf5d620b2789c76b5a79c092ae0a3dc802fa6ef28a05df2ed1935481d4bba636",
|
|
108
110
|
"frqtl/parts/CollisionActions.js": "c14c7257fa8bf2add3784dfff0e78a4098640a5a8cec4b40c7cb60ba3197f3a2",
|
|
109
111
|
"frqtl/parts/CollisionTypes.js": "3290b8caf557c2801d3e0a8400d7cfd0cc9cbd14ae4247707747dc109a658789",
|
|
110
|
-
"frqtl/parts/DetectorWall.js": "
|
|
112
|
+
"frqtl/parts/DetectorWall.js": "d39ab88056fa28c322863430f8bad9704879e5d8149f1ac65adf1add057996f5",
|
|
111
113
|
"frqtl/parts/FrqtlControlOverlay.js": "f862b1529265224aa96878b56b0c1c6e65683ba3fd6b517df86e17e92147f9c4",
|
|
112
114
|
"frqtl/parts/FrqtlControlsPanel.js": "792d03dea218bdc335ba7e04362be620edbfa331bed9de087d61942299728cc1",
|
|
113
|
-
"frqtl/parts/FrqtlVision.js": "
|
|
114
|
-
"frqtl/parts/GraphingDetectorWall.js": "
|
|
115
|
-
"frqtl/parts/LargeObject.js": "
|
|
115
|
+
"frqtl/parts/FrqtlVision.js": "118d0874249fa55783b196fd01297b3347951267a4add93381433a72c46e8622",
|
|
116
|
+
"frqtl/parts/GraphingDetectorWall.js": "83aba36a6a6c15f92c99bbe5d7e63b12b38e07be65e02e89020c065514ef5b3d",
|
|
117
|
+
"frqtl/parts/LargeObject.js": "d6cae738b30965f3eba4be4399fb4410f17afc3267b51e3ad9e1ba7423e17922",
|
|
116
118
|
"frqtl/parts/LightColor.js": "8637e5a09bbad3a4fdd2034ccb44dfc1fda743e29b12b4c685a64b9e1df28daa",
|
|
117
|
-
"frqtl/parts/LiveChart.js": "
|
|
118
|
-
"frqtl/parts/LogicGate.js": "
|
|
119
|
-
"frqtl/parts/OvenBox.js": "
|
|
120
|
-
"frqtl/parts/PointSource.js": "
|
|
119
|
+
"frqtl/parts/LiveChart.js": "8bd0b862d2f7a4e818ae9cfc47e5e0f56eb97ea0a00fb836bba3f2374c12a1ce",
|
|
120
|
+
"frqtl/parts/LogicGate.js": "05716711db1794ce9e29027ea16af083e5a1cc8b0657dce853cb6d2f6ee1fc02",
|
|
121
|
+
"frqtl/parts/OvenBox.js": "7e393dd736c6ae410d85e5fe3edbea8677e5834bd1fe7b19d4e8f46af13764ac",
|
|
122
|
+
"frqtl/parts/PointSource.js": "57b3b8353cba8c5ebfff6653e39948c9f0ee240449b4af08247687d3d9d9f092",
|
|
121
123
|
"frqtl/parts/Rectangle.js": "8be4cae13135c3cb185d025dfd10d3a03b21d5627bfa92363c2faa021f751571",
|
|
122
|
-
"frqtl/parts/SlitLightSource.js": "
|
|
123
|
-
"frqtl/parts/SlitScreen.js": "
|
|
124
|
-
"frqtl/parts/SphereEmitter.js": "
|
|
125
|
-
"frqtl/parts/Trace.js": "
|
|
126
|
-
"frqtl/parts/Tunnel.js": "
|
|
127
|
-
"frqtl/parts/Wall.js": "
|
|
124
|
+
"frqtl/parts/SlitLightSource.js": "89a17aaade03e2e961af4181e6c3fd479d31c2c3298c46abc477a13f26d7a07a",
|
|
125
|
+
"frqtl/parts/SlitScreen.js": "bdcaa761d0aa68c415a06ab2c523a8d4553a4c48cee00fe33d5df994adcf599a",
|
|
126
|
+
"frqtl/parts/SphereEmitter.js": "645664f5a20924b777d9b4ad6fef6338e7de251d62c7f8a4c93e6b0f97b47d4a",
|
|
127
|
+
"frqtl/parts/Trace.js": "f9d91bb9435bc5fabfd7bfdbfbf3f3ae34e2338090251d9e9d6c11abc2ed25fb",
|
|
128
|
+
"frqtl/parts/Tunnel.js": "66bfca3d3d88ebf9a8cb7aa248b92cfc7d78a278449830b03e6b2700a21df891",
|
|
129
|
+
"frqtl/parts/Wall.js": "7dcb520daee3facad8698b363bb49557003439dc5841706b105bd1acabc2e0bf",
|
|
128
130
|
"frqtl/parts/index.js": "70b8e227e09663889f4c7942d385f843d977579765723f829880fd6e9868ac53",
|
|
129
131
|
"frqtl/scenes/absorbing-wall-3d.js": "722bb433142833f03150052b95039686aba0d9db510a5ff13fad95b5f17e0cf8",
|
|
130
132
|
"frqtl/scenes/absorbing-wall.js": "0a47ca64e56481841339cd5882cf0e54ec7c14d87a4306d016ead1ff26591197",
|
|
131
133
|
"frqtl/scenes/atomic-model.js": "1b484ba37d90af9c06d9bf6a114b8867c914d12cc0a0dbeec27dd96230829fac",
|
|
132
134
|
"frqtl/scenes/big-bang.js": "e0807d81f4bcc6626080f81d472c6ead9c8d8f7d97bd67c6da76a476868b25f4",
|
|
133
135
|
"frqtl/scenes/blackbody.js": "bdd6ee3c628f0cf1161eeb855a4a582902ab56174da937bf0d5180d930ef8278",
|
|
134
|
-
"frqtl/scenes/circuit-sat.js": "
|
|
136
|
+
"frqtl/scenes/circuit-sat.js": "db69468352e955b4ff9c36e8d3cf03cc3e88d368b6d3cc485d664bb5cb085d57",
|
|
135
137
|
"frqtl/scenes/collision-matrix-3d.js": "8a0c1189d5e2f23092b216515608319643bc010ff837aadffdf84b2078c96793",
|
|
136
138
|
"frqtl/scenes/counting-wall-3d.js": "1d08e60d58faeed4315400a2d0fbc10460d7869babc72a8dd7f906b5dff6ba54",
|
|
137
139
|
"frqtl/scenes/counting-wall.js": "35b617a20c154f89c63d4a60a205f5d67ba8bb3342730e269528f884a522f131",
|
|
138
140
|
"frqtl/scenes/double-slit.js": "d37aff36667783fe5991b8219439803facb730bd0abe9219483f2ef42056e988",
|
|
139
|
-
"frqtl/scenes/dse-one-emitter.js": "
|
|
141
|
+
"frqtl/scenes/dse-one-emitter.js": "619892663838e0f018b9ade83c9994fb0709b9ed9904c92e41470a7b7fdd396f",
|
|
140
142
|
"frqtl/scenes/dse-one-slit.js": "7bf299e3cc64dd3d1f8df805eec63d98d36b8592d55e3ef478d46c38bf674812",
|
|
141
143
|
"frqtl/scenes/dse-photoelectric.js": "e0402c4508a4d97d3d9461f889b10a49da82ef5f232d81455c5e482db8b0bda6",
|
|
142
144
|
"frqtl/scenes/dse-tunnel-rebuild.js": "c662bff31fb66c1f136b6f35d18943c58e97456b61fbab9f4cdb812e3acb2630",
|
|
143
|
-
"frqtl/scenes/dse-two-emitters.js": "
|
|
145
|
+
"frqtl/scenes/dse-two-emitters.js": "74cf1d4b226b0ce4e337697a0327de9b95190159b2554f53e629d89525321877",
|
|
144
146
|
"frqtl/scenes/dse-two-slits.js": "f303a848d9c463a5a9443c380b257795b19127b122bdd2fcb28855841b219939",
|
|
145
147
|
"frqtl/scenes/empty.js": "f3c2161f7bbc1be2d7fba0f117ac16b9e60966d9448877ead4037e3cb4fee678",
|
|
146
148
|
"frqtl/scenes/laser-buildup.js": "f4b29b2eeeca730642f5adf2f499f6594b73f6e51ba6aa9a237f4ee643c5cf23",
|
|
147
149
|
"frqtl/scenes/mirror-3d.js": "79ac794dfbc608037936908a9fe58ca34be93be6263d5940bb38129d55bb7943",
|
|
148
|
-
"frqtl/scenes/mirror-route.js": "
|
|
150
|
+
"frqtl/scenes/mirror-route.js": "007af9eb382a1392eb22b6d81f7c3e40bffe7ba6ac53363ce7726ccb62b838c4",
|
|
149
151
|
"frqtl/scenes/mirror.js": "c7bcd440e9a78e333fd81d906b3788a62342910f46cf98de860098fcc1e0ba91",
|
|
150
152
|
"frqtl/scenes/omni-3d.js": "d420a7aae9fdfd394b9288ce1f0256416e1b07f70bc570a928a4592c32a47c27",
|
|
151
153
|
"frqtl/scenes/omni-source.js": "4f9aaa0e0ccbf4d18908d1628688dbeae376b535318f0cf969d61d8ea8f90b83",
|
|
@@ -155,70 +157,74 @@
|
|
|
155
157
|
"frqtl/scenes/sun.js": "fa06cac429af5a2ad4fe846969a7bf763f2a76d9d9b169328cd1f45bad6bda8f",
|
|
156
158
|
"frqtl/scenes/two-source.js": "1444a0e503f4a5e349d4364e31e698bc67d723a4b2864f262603e75ba5f9f088",
|
|
157
159
|
"frqtl/scenes/wave.js": "cabbece84daceca9199bbea22be610281bdf3137c8c5724bc601758e711f111f",
|
|
158
|
-
"shim/bundle/
|
|
159
|
-
"shim/bundle/
|
|
160
|
-
"shim/bundle/indexHtml.js": "6d3ce242c4f139b542981164fe2b1d8b1c37d9423904bc1299531f594ce4ccc6",
|
|
161
|
-
"shim/bundle/manifest.js": "796e25411d4f1d335277e954cf245352f95f324a1403062caa430142b9e8748c",
|
|
160
|
+
"shim/bundle/index.js": "edc501a039ce47102657604df71fbc17ba3e4760ca087055351231c7469f5c50",
|
|
161
|
+
"shim/bundle/indexHtml.js": "2c4fbc502bb33fce93596cee19e143a58bb63c18d0b18ea597f81610e3a9a027",
|
|
162
162
|
"shim/bundle/zip.js": "00f7b5fb5f36ff40a59d86758c503d9d7fb43949c1b5a4f2e7367c43d92786f9",
|
|
163
163
|
"shim/bus.js": "dac2eeccd8774268c51014be4c46c00b9985fdf49ebb44355aa370e949c8c5bc",
|
|
164
|
-
"shim/controls/index.js": "
|
|
164
|
+
"shim/controls/index.js": "206f2f9cdb19e122e650517e09ef1e858f962b4ebe555174aee3bea4ae938dff",
|
|
165
165
|
"shim/controls/registry.js": "3df843d774968d18e012624f2aba2fb09b08ede9e21b6c1f6687d4f3e9b46d3e",
|
|
166
|
-
"shim/engine/artifact-shell.js": "
|
|
166
|
+
"shim/engine/artifact-shell.js": "f23c327500f8174b12d464868f6ec9c1701e7a9a5faa1c43a2ddafc3191dc38c",
|
|
167
167
|
"shim/engine/boot-phases.js": "c6e12e12824bcf6f1a289f46e41c898a5416c80c131594525145aae9a3eefbfa",
|
|
168
168
|
"shim/engine/engine-stack-boot.js": "0abf57dcff2ca2bb025c787a17875d49d54d9218ac08c78cb9c678dbb6118d08",
|
|
169
|
-
"shim/engine/router.js": "
|
|
169
|
+
"shim/engine/router.js": "bd6a6e7b8b670ea146e8789f333c88c8eb62cf40aeab1eec21706d76fbb3e02a",
|
|
170
170
|
"shim/experiment-frame/index.js": "5a0219aaa225d8f808c405b08623ce85ada37d83fb4f55f983db3303e431e47f",
|
|
171
171
|
"shim/expr/ast-schema.js": "4f1133b887639bbd86fab976292323bf4a955cdc873ff7ca8e8a8eb3b416923f",
|
|
172
172
|
"shim/field-descriptor/index.js": "6647d57d1523519114adc0a5cb66335ec5121c39ab294b9c97bdfb9e5d7f61e0",
|
|
173
173
|
"shim/frame-data/index.js": "df6957b0b4a8e0ee0035bc970647b90089b421ae7f05911cc047d48457164be6",
|
|
174
|
-
"shim/
|
|
174
|
+
"shim/host/host-view.js": "e13619d3340118f81cde6d035dcb689fd72d9341c98c3e95afba911e978dda63",
|
|
175
|
+
"shim/host/index.js": "67691951a7ff35b4baf7332987d0128d1eefd0ad185d2989674bea90b17c02f3",
|
|
176
|
+
"shim/index.js": "96165c6161ffddbace0be0cde0b3a83943298531537dd2cc9c6e281b8274ff19",
|
|
175
177
|
"shim/notebook/canvas-guard.js": "b19d3a86df3835bd617c7130cde997b6f8a8a0c140f95338b733115d5947ed7b",
|
|
176
178
|
"shim/notebook/catalog.js": "68243a154e12bf36a76598aa554119f6e3b8b5363c8452d157c8a562b9c38dc1",
|
|
177
|
-
"shim/notebook/format.js": "
|
|
179
|
+
"shim/notebook/format.js": "f8b1da9eb37da3a9609f7721426e2242f1279780ea212ea08d9f3c50bb18b578",
|
|
178
180
|
"shim/notebook/frqtl-setups-importmap.js": "df86defa90cb85675564e7bb269451684b5cc7679f2c6b1884c07c8272e8ff1c",
|
|
179
|
-
"shim/notebook/kernel.js": "
|
|
181
|
+
"shim/notebook/kernel.js": "95b8efe960927d8cda0896eea8995f5df5972a471e0217916c32881913bddfcd",
|
|
180
182
|
"shim/notebook/knob.js": "f07e9ac9697c7178aa68e4b2f4300145f8e2d2dc41b64aa0afede7e2d68705b1",
|
|
181
183
|
"shim/notebook/module-resolver.js": "0bcf6ca4954e198dd77ce61b502cebed6d2c118926fd0d2dd0816991b8334b7a",
|
|
182
184
|
"shim/notebook/notebook-knobs.js": "891cd6a24ed70256ed723844918866ba162dd71f839cd06ff4d8fc92a0a17452",
|
|
183
185
|
"shim/notebook/produced-bindings.js": "3d46038ec541a9ff896abae4f62d25780633cdc952e4c9d0d90d917298471090",
|
|
184
186
|
"shim/notebook/realm-registry.js": "ffee52e7c93447c8b82bfc0784b51346686b4373766da298f50a759d3443ab6a",
|
|
185
187
|
"shim/notebook/realm-transport.js": "5173676a94211f85122e0581a16abba925e9c4b5900b5891911bfaec5ea02daf",
|
|
186
|
-
"shim/notebook/setup-builder.js": "
|
|
187
|
-
"shim/notebook/store.js": "
|
|
188
|
+
"shim/notebook/setup-builder.js": "60fac546fe7895e68d1b982c377d9ced2558ba0769c4a5560ed92a239a7bce2a",
|
|
189
|
+
"shim/notebook/store.js": "fe34d31907e7a8f303dfcc35b9c0439faf2c32fbc5c0bb4f899692c25bef9a4d",
|
|
188
190
|
"shim/notebook/vendor-importmap.js": "0c6578567980225593690e06fb4d32f0b50c47fe87a7467741a03846f6da68ed",
|
|
189
191
|
"shim/notebook/view-builder.js": "1961962be16ef526934c43193828473447f2ec9ac0144f39bc5108c327d9069a",
|
|
190
192
|
"shim/notebook/view-ctx.js": "6287aee366104bece827eecccf675540571d6db2b6833bff837be49eb60ce111",
|
|
191
193
|
"shim/notebook/view-handle.js": "fe0d1530e3311cb96bb22f5cded35b9f25a0a4ef002588f3e47d9eef8089664d",
|
|
192
194
|
"shim/notebook/warmup.js": "453b9e8b4969bcc704e1fbc636c3ada869ebf692651cfbf950107fd1cb662e25",
|
|
193
|
-
"shim/package.json": "
|
|
194
|
-
"shim/page-params/index.js": "
|
|
195
|
-
"shim/project/
|
|
196
|
-
"shim/project/
|
|
197
|
-
"shim/project/
|
|
195
|
+
"shim/package.json": "5937639b55f56f715ea32a010ddd17e631c548c16b8fcba65adbc6d9c802116b",
|
|
196
|
+
"shim/page-params/index.js": "c58732b8127da8c2b4ecfd922bf46a6c9a5e9ab7017f41c095a6ec937011f0fa",
|
|
197
|
+
"shim/project/fork.js": "07555f24c7e6d1bbe723853bc09ad570b9cd36cef248a07e98e7398d41ac70da",
|
|
198
|
+
"shim/project/identity.js": "8d3e0bb9df75eecf7d11a1ea7948ff66c559973a891574d0b208c9e8f8faf504",
|
|
199
|
+
"shim/project/index.js": "81d1a5d84c8bd5f31de8d9849d385509a73582e2ec6db4f779b018fe1b25404f",
|
|
200
|
+
"shim/project/link.js": "0e3fc878bc45d9916baacd7cf129687ec6e82efd4f6f5036e4697180b3d0f87a",
|
|
201
|
+
"shim/project/manifest.js": "442267af07ae1b977ff6aeaca49d98ce82b77f548cfdd1ed0f258b3429d75f31",
|
|
198
202
|
"shim/project/node-specifier-hook.mjs": "8601edf762bd9cd011632bc681d0589dfc77368cda0e994125d0eb123fea89d0",
|
|
199
203
|
"shim/project/parts-module.js": "b08e0149f086640692e1b2ff8e0d7ae0379c2bc934a0891418de5c2b8c0e8e60",
|
|
200
|
-
"shim/project/parts-writer.js": "
|
|
204
|
+
"shim/project/parts-writer.js": "121fa67261d6f366190c9ac4961fceed2f26ca7f35cf3fbffc767829afc69978",
|
|
205
|
+
"shim/project/read-text.js": "b89bd70e3a271e1f42c8ce9427a20cdd9a4c4c9c31b64c49ff1f56b095620136",
|
|
206
|
+
"shim/project/record-format.js": "b680c3752f20535c08be832c6808fae000c2d2325f8caee57f98351043d091be",
|
|
201
207
|
"shim/project/register-node.mjs": "9b408da7dc1b11d16237cd62caca281c823ea80173d386ad35e41ea17c34857f",
|
|
202
|
-
"shim/project/specifiers.js": "
|
|
208
|
+
"shim/project/specifiers.js": "6a5ba9f91f97902d7b7911ecf9933dab743a99271b30ec4fb50a5d439d344add",
|
|
203
209
|
"shim/registry/copy-gate.js": "cfbf52669c849b8837b326f2743458f1ead0720cad51a6c6d409c9bd6c7f9495",
|
|
204
|
-
"shim/registry/exhibits.js": "
|
|
205
|
-
"shim/registry/
|
|
206
|
-
"shim/registry/
|
|
207
|
-
"shim/registry/scene-source.js": "
|
|
208
|
-
"shim/registry/walkthrough.js": "
|
|
209
|
-
"shim/render-state/apply.js": "
|
|
210
|
-
"shim/render-state/index.js": "
|
|
210
|
+
"shim/registry/exhibits.js": "7ee132589bb4c003a06815f78d9e917ba81fd806111d1cee538345b7e5cc6345",
|
|
211
|
+
"shim/registry/index.js": "f59357c81c4045c41bfd266a74931e5c21b2c6650ad60b80e8e21bc23699ca34",
|
|
212
|
+
"shim/registry/scene-roster.js": "318fe373f71b1c58d05425693f2fad4bd5368f6095b65817c6d637430a0bfb73",
|
|
213
|
+
"shim/registry/scene-source.js": "c9c4b48c24d4b1ebee1549a7891a1ba708909b94b9403ce28eefbd902cacf49f",
|
|
214
|
+
"shim/registry/walkthrough.js": "8f8b6f59e9e81c67c9c62f8fb271eee2e4d6e1fba6e116b227a2f1e3f9930230",
|
|
215
|
+
"shim/render-state/apply.js": "94a9e60cb1722c9a82aa00f2f161fd65e6f438147333856a786e42a4ad5b7064",
|
|
216
|
+
"shim/render-state/index.js": "72a6a3dcd8037893cb8fbd7ef32b126770e7efaec70847f8e4f2915ddb690b43",
|
|
211
217
|
"shim/render/capture-envelope.js": "2667a355169bb124fd8117e9cbf1d630085257b9f6fa537362f12d0aa649da2d",
|
|
212
218
|
"shim/render/heat-colormap.js": "0eadc758179024734c45eaeffd8f5b44e7c4102b7042767a4a5b66541b3bbd7c",
|
|
213
219
|
"shim/render/render-stages.js": "baf674c205df7638af53e51ac77152a448fe6bf6d4ea51d58ac565556cd38da7",
|
|
214
220
|
"shim/render/sun-look.js": "f8f23f0853a9c22459fff866ccf59ab00332697d48fd529fca5c2e8554a2d83d",
|
|
215
221
|
"shim/rpc/index.js": "56af3afeed22e8d718cd2f7a8ad70db8745f54dbc139af9d71f1d73e2ca37698",
|
|
216
|
-
"shim/runtime/index.js": "
|
|
222
|
+
"shim/runtime/index.js": "92bb4d8b5f203f949e441781b864efe5c6748df14a3a8f306e4c0bc11c7f6d35",
|
|
217
223
|
"shim/storage/boot.js": "689504e15dc075e32d08abf61c75a45b1d565c09f086b42400dae40d8186c411",
|
|
218
|
-
"shim/storage/
|
|
224
|
+
"shim/storage/codec-chains.js": "6eab30c3ab7d8bd26059f386f91f9e43a87a6a20980d36bf7271eb72b6d109c0",
|
|
225
|
+
"shim/storage/folders.js": "9d69b6fcbdc8ae6da561acd42946933ac2d453d5d0659fcaf1cfba410a47a45a",
|
|
226
|
+
"shim/storage/index.js": "0939d88bcdb0cde5b564e1fc1b03144363c9747e917e706c4cc1f55fe4ee1ace",
|
|
219
227
|
"shim/storage/local-storage-provider.js": "e14894e5d33bce961e66a2816e4b5c23b8e00534398ca9635d19de117f0f150e",
|
|
220
|
-
"shim/storage/make-namespace-store.js": "
|
|
221
|
-
"shim/storage/modules.js": "ceee32e0ea101ae49e5b0ab63007972a3f4127e9d81bbd2cf24cdb47d491623b",
|
|
222
|
-
"shim/storage/projects.js": "1c7398dedbb7a67c80acbfe0dfb08ba4f069db9a7d946266c4636212834bd671"
|
|
228
|
+
"shim/storage/make-namespace-store.js": "f88cfc65244cd7a3c3a43c173001855bb95571916a117b22f38d051823f2856f"
|
|
223
229
|
}
|
|
224
230
|
}
|
package/dist/eyes/index.js
CHANGED
|
@@ -46,12 +46,15 @@
|
|
|
46
46
|
* eyes.saveStill(still, 'out.png'); // …and the picture, in one line
|
|
47
47
|
* } finally { await eyes.dispose(); }
|
|
48
48
|
*
|
|
49
|
+
* The Record door rides the handle (`eyes.record.*`, `eyes.act.*`); `writeRecordFolder(folder, dir)` is the ONE node
|
|
50
|
+
* writer of the folder `eyes.record.stop()` returns (hosted-eyes.js).
|
|
51
|
+
*
|
|
49
52
|
* `FrqtlVision` is re-exported for the encoder itself (`FrqtlVision.toPNG(still)` → PNG bytes) — the
|
|
50
53
|
* node half of the one-encoder-per-host pair; it is the parts barrel's own instance.
|
|
51
54
|
*/
|
|
52
55
|
|
|
53
56
|
import { createRequire } from 'node:module';
|
|
54
|
-
import { FrqtlHostedEyes as HostedEyes } from '../frqtl/objects/instruments/hosted-eyes.js';
|
|
57
|
+
import { FrqtlHostedEyes as HostedEyes, writeRecordFolder } from '../frqtl/objects/instruments/hosted-eyes.js';
|
|
55
58
|
import { FrqtlVision } from '../frqtl/parts/index.js';
|
|
56
59
|
|
|
57
60
|
// The WRONG-HOST DOOR: `./eyes` DRIVES a browser from node; loaded IN a page it can only fail, so the
|
|
@@ -106,4 +109,4 @@ export function openHostedEyes(opts) {
|
|
|
106
109
|
return HostedEyes.open(bag);
|
|
107
110
|
}
|
|
108
111
|
|
|
109
|
-
export { FrqtlVision };
|
|
112
|
+
export { FrqtlVision, writeRecordFolder };
|
|
@@ -1,12 +1,4 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"
|
|
4
|
-
"version": "0.1.0",
|
|
5
|
-
"files": [
|
|
6
|
-
"egpt_wasm_bg.wasm",
|
|
7
|
-
"egpt_wasm.js",
|
|
8
|
-
"egpt_wasm.d.ts"
|
|
9
|
-
],
|
|
10
|
-
"main": "egpt_wasm.js",
|
|
11
|
-
"types": "egpt_wasm.d.ts"
|
|
2
|
+
"private": true,
|
|
3
|
+
"license": "SEE LICENSE IN LICENSE.md"
|
|
12
4
|
}
|
|
@@ -743,8 +743,7 @@ import { Rectangle } from '../../parts/Rectangle.js';
|
|
|
743
743
|
// can parent — density clustering). ENGINE TRUTH, ASKED ON EVERY READ: init() ferries the
|
|
744
744
|
// mode in the CONFIG BAG (`frame_gen_mode`), the ENGINE holds it, and this getter asks the
|
|
745
745
|
// running universe what it actually HOLDS. A JS copy would go stale the moment a re-init
|
|
746
|
-
// changed the mode —
|
|
747
|
-
// was not using.
|
|
746
|
+
// changed the mode — and a writer that read it would write a mode the run was not using.
|
|
748
747
|
//
|
|
749
748
|
// `_frameGenMode` survives for exactly ONE read: the window between create() and init(),
|
|
750
749
|
// when there is no engine to ask. It is NOT an input to init() — init() takes its own
|
|
@@ -1007,8 +1006,8 @@ import { Rectangle } from '../../parts/Rectangle.js';
|
|
|
1007
1006
|
}
|
|
1008
1007
|
// READ-BACK of the RESOLVED axes (what this run actually uses, including the
|
|
1009
1008
|
// engine's serde default when the sketch omitted them). Truth-in-labeling: any
|
|
1010
|
-
// consumer that must re-declare this world (
|
|
1011
|
-
//
|
|
1009
|
+
// consumer that must re-declare this world (a host re-stating the sketch's world step)
|
|
1010
|
+
// DERIVES it from here rather than guessing.
|
|
1012
1011
|
this.activeAxes = config.active_axes
|
|
1013
1012
|
? { x: config.active_axes.x, y: config.active_axes.y, z: config.active_axes.z }
|
|
1014
1013
|
: { x: true, y: true, z: false };
|
|
@@ -803,7 +803,7 @@ import * as RendererProviderContract from '../renderer-provider-contract.js';
|
|
|
803
803
|
setPreset: function (name) {
|
|
804
804
|
// A preset is a FULL framing reset — the reliable way back. A name this
|
|
805
805
|
// camera does not offer THROWS (a silent no-op would leave a saved or
|
|
806
|
-
//
|
|
806
|
+
// written preset doing nothing with no signal).
|
|
807
807
|
var all = _presets(), p = all[name];
|
|
808
808
|
if (!p) {
|
|
809
809
|
throw new Error('[p5-provider camera] setPreset("' + name + '"): this camera offers ' +
|
|
@@ -248,7 +248,7 @@ import { paintBootFailure } from '../experiments/_shared/boot-failure.js';
|
|
|
248
248
|
// experiment pages). When true (STUDIO authoring), the renderer DRAWS the
|
|
249
249
|
// Design-only markers (a manipulable emitter's visual circle, `lo._designMarker`).
|
|
250
250
|
// A render toggle at the output boundary (zero physics): it filters ONLY the
|
|
251
|
-
// renderTick view; the pick, the aim, Layers and
|
|
251
|
+
// renderTick view; the pick, the aim, Layers and the parts writer read the census and the
|
|
252
252
|
// declared registry directly, so an emitter stays selectable even when its marker
|
|
253
253
|
// circle is suppressed.
|
|
254
254
|
this._designMode = false;
|
|
@@ -814,7 +814,7 @@ import { paintBootFailure } from '../experiments/_shared/boot-failure.js';
|
|
|
814
814
|
// is manipulable, so only what the user proactively declares is registered.
|
|
815
815
|
//
|
|
816
816
|
// `declared` is the ordered list of the handles the user's DECLARING calls produced
|
|
817
|
-
// (`exp.addObject`, a palette drop, a
|
|
817
|
+
// (`exp.addObject`, a palette drop, a parts entry replayed — all three funnel through
|
|
818
818
|
// `ObjectFactory.create`, the registry's ONE writer). It is a different fact from the world
|
|
819
819
|
// census (`largeObjects` — everything the world draws and collides): a part's composition is
|
|
820
820
|
// in the census but never declared. "Which declared object does this drawn thing belong to"
|
|
@@ -954,6 +954,11 @@ import { paintBootFailure } from '../experiments/_shared/boot-failure.js';
|
|
|
954
954
|
x.inParts = true;
|
|
955
955
|
};
|
|
956
956
|
|
|
957
|
+
/** beginWorld() — a (re-)inited world has not stepped: its last TickData is gone (worldTick reads 0, repaint draws nothing). */
|
|
958
|
+
FrqtlApp.prototype.beginWorld = function () {
|
|
959
|
+
this._lastTickData = null;
|
|
960
|
+
};
|
|
961
|
+
|
|
957
962
|
/** clearDeclared() — empty the registry. Called where the world re-inits (FrqtlApp.setup, and the
|
|
958
963
|
* RecipeContext co-init exp.createCanvas / exp.createScene): a fresh world has no declared objects. */
|
|
959
964
|
FrqtlApp.prototype.clearDeclared = function () {
|
|
@@ -985,7 +990,7 @@ import { paintBootFailure } from '../experiments/_shared/boot-failure.js';
|
|
|
985
990
|
* undeclaredTickFunctions() → the host tick-functions running in the world that NO declared
|
|
986
991
|
* object owns: a setup factory's emitter, a page's own regulation fn, a sketch's
|
|
987
992
|
* exp.addTickFunction. They are behaviour the registry cannot write down, so whatever writes the
|
|
988
|
-
* world as declarations
|
|
993
|
+
* world as declarations refuses while any exists.
|
|
989
994
|
* @returns {Function[]}
|
|
990
995
|
*/
|
|
991
996
|
FrqtlApp.prototype.undeclaredTickFunctions = function () {
|
|
@@ -1051,7 +1056,7 @@ import { paintBootFailure } from '../experiments/_shared/boot-failure.js';
|
|
|
1051
1056
|
* getObjectByName(name, predicate?) → the DECLARED object of that name (passing `predicate` when
|
|
1052
1057
|
* given), else null — the lazy by-name reference every cross-object link that must survive a
|
|
1053
1058
|
* Restart uses (an emitter's gateCounter, a LiveChart source). Handles are fresh at registration
|
|
1054
|
-
* and never survive
|
|
1059
|
+
* and never survive a re-link, so the reference is a NAME resolved against the registry at use
|
|
1055
1060
|
* time. The CALLER decides whether null is FAIL-LOUD (the emission gate throws; a LiveChart
|
|
1056
1061
|
* retries next scan).
|
|
1057
1062
|
* @param {string} name @param {Function} [predicate] @returns {Object|null}
|
|
@@ -2296,7 +2301,7 @@ import { paintBootFailure } from '../experiments/_shared/boot-failure.js';
|
|
|
2296
2301
|
this.stop();
|
|
2297
2302
|
var self = this;
|
|
2298
2303
|
function resume(result) {
|
|
2299
|
-
self.
|
|
2304
|
+
self.beginWorld();
|
|
2300
2305
|
// Always resume: "restart" means run the scene again from tick 0 — a restart
|
|
2301
2306
|
// that left the loop paused would read as a dead button.
|
|
2302
2307
|
self.start();
|
|
@@ -2388,7 +2393,7 @@ import { paintBootFailure } from '../experiments/_shared/boot-failure.js';
|
|
|
2388
2393
|
var msg = 'FrqtlApp: the DISPLAY SLOT is empty (FrqtlDisplay.get() === null).\n\n' +
|
|
2389
2394
|
'The boot module (lib/frqtl/experiments/_shared/boot.js) must select a renderer\n' +
|
|
2390
2395
|
'BEFORE the draw loop fires. This is a page configuration error.\n\n' +
|
|
2391
|
-
'P5Renderer has been removed
|
|
2396
|
+
'P5Renderer has been removed. All experiment pages\n' +
|
|
2392
2397
|
'boot the canonical RendererProvider stack through bootPage().';
|
|
2393
2398
|
if (typeof document === 'undefined') {
|
|
2394
2399
|
// No DOM to paint the overlay into — the message is still LOUD, on the console
|
|
@@ -2572,6 +2577,28 @@ import { paintBootFailure } from '../experiments/_shared/boot-failure.js';
|
|
|
2572
2577
|
return this._tickSuspend;
|
|
2573
2578
|
};
|
|
2574
2579
|
|
|
2580
|
+
/**
|
|
2581
|
+
* runner.worldTick — READ-ONLY: the tick of THIS world: 0 before its first step, else the last delivered tick.
|
|
2582
|
+
* The 0 is a stated fact, not a default: `_lastTickData` is null until the world's first step, and beginWorld()
|
|
2583
|
+
* (the co-init and restart()) is the one writer of that null. It does NOT read `universe.tick`: the compat wrapper
|
|
2584
|
+
* keeps that field across a re-init until the next doTick, so after a restart it still answers the previous
|
|
2585
|
+
* world's tick. Every runner holds a world (its universe is built at construction), whether a sketch built it
|
|
2586
|
+
* through the replay door or a page built it by hand, so this always answers. THROWS when a delivered tick is not
|
|
2587
|
+
* a whole number ≥ 0.
|
|
2588
|
+
*/
|
|
2589
|
+
Object.defineProperty(FrqtlApp.prototype, 'worldTick', {
|
|
2590
|
+
configurable: true,
|
|
2591
|
+
get: function () {
|
|
2592
|
+
if (this._lastTickData === null) { return 0; }
|
|
2593
|
+
var t = this._lastTickData && this._lastTickData.universeData && this._lastTickData.universeData.tick;
|
|
2594
|
+
if (!(typeof t === 'number' && t >= 0 && t % 1 === 0)) {
|
|
2595
|
+
throw new Error('[FrqtlApp.worldTick] the last delivered TickData carries tick ' + String(t) +
|
|
2596
|
+
', not a whole number ≥ 0. (FAIL-LOUD.)');
|
|
2597
|
+
}
|
|
2598
|
+
return t;
|
|
2599
|
+
}
|
|
2600
|
+
});
|
|
2601
|
+
|
|
2575
2602
|
/** @returns {boolean} whether the tick clock is currently held. */
|
|
2576
2603
|
Object.defineProperty(FrqtlApp.prototype, 'ticksSuspended', {
|
|
2577
2604
|
configurable: true,
|