@bldrs-ai/conway 1.423.1278 → 1.424.1275
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/compiled/examples/browser-bundled.cjs +1 -1
- package/compiled/examples/cli-bundled.cjs +1 -1
- package/compiled/examples/cli-step-bundled.cjs +1 -1
- package/compiled/examples/validator-bundled.cjs +1 -1
- package/compiled/src/compat/web-ifc/ifc_api.d.ts +0 -7
- package/compiled/src/compat/web-ifc/ifc_api.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_api.js +0 -7
- package/compiled/src/compat/web-ifc/ifc_api_deferred_open.test.js +9 -25
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.d.ts +6 -22
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.js +21 -76
- package/compiled/src/version/version.js +1 -1
- package/compiled/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -30,7 +30,7 @@ var import_node_process = require("node:process");
|
|
|
30
30
|
var readline = __toESM(require("node:readline"), 1);
|
|
31
31
|
|
|
32
32
|
// compiled/src/version/version.js
|
|
33
|
-
var versionString = "Conway v1.
|
|
33
|
+
var versionString = "Conway v1.424.1275";
|
|
34
34
|
|
|
35
35
|
// compiled/dependencies/conway-geom/interface/conway_geometry.js
|
|
36
36
|
var wasmType = "";
|
|
@@ -14965,7 +14965,7 @@ ${t5.join("\n")}` : "";
|
|
|
14965
14965
|
var import_process = require("process");
|
|
14966
14966
|
|
|
14967
14967
|
// compiled/src/version/version.js
|
|
14968
|
-
var versionString = "Conway v1.
|
|
14968
|
+
var versionString = "Conway v1.424.1275";
|
|
14969
14969
|
|
|
14970
14970
|
// compiled/dependencies/conway-geom/interface/conway_geometry.js
|
|
14971
14971
|
function pThreadsAllowed() {
|
|
@@ -15943,7 +15943,7 @@ var ParsingBuffer = class {
|
|
|
15943
15943
|
};
|
|
15944
15944
|
|
|
15945
15945
|
// compiled/src/version/version.js
|
|
15946
|
-
var versionString = "Conway v1.
|
|
15946
|
+
var versionString = "Conway v1.424.1275";
|
|
15947
15947
|
|
|
15948
15948
|
// compiled/dependencies/conway-geom/interface/conway_geometry.js
|
|
15949
15949
|
function pThreadsAllowed() {
|
|
@@ -944,7 +944,7 @@ var EntityTypesIfcCount = 909;
|
|
|
944
944
|
var entity_types_ifc_gen_default = EntityTypesIfc;
|
|
945
945
|
|
|
946
946
|
// compiled/src/version/version.js
|
|
947
|
-
var versionString = "Conway v1.
|
|
947
|
+
var versionString = "Conway v1.424.1275";
|
|
948
948
|
|
|
949
949
|
// compiled/dependencies/conway-geom/interface/conway_geometry.js
|
|
950
950
|
var wasmType = "";
|
|
@@ -359,13 +359,6 @@ export declare class IfcAPI {
|
|
|
359
359
|
* `typeof api.ExtractGeometryBatch === 'function'`; call repeatedly
|
|
360
360
|
* until `remaining` is 0.
|
|
361
361
|
*
|
|
362
|
-
* DELTA CONTRACT: an entity may be emitted again in a LATER call with
|
|
363
|
-
* a FlatMesh containing only its NEW placed instances (shared/mapped
|
|
364
|
-
* geometry attributes instances to an entity from other products'
|
|
365
|
-
* extractions). Consumers must render/accumulate deltas additively —
|
|
366
|
-
* never key emissions by expressID with overwrite semantics. Each
|
|
367
|
-
* placed instance is emitted exactly once across all calls.
|
|
368
|
-
*
|
|
369
362
|
* @param modelID handle retrieved by OpenModelStreamed
|
|
370
363
|
* @param batchSize max products to extract this call
|
|
371
364
|
* @param meshCallback receives each newly-extracted product's mesh
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc_api.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ifc_api.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api.ts"],"names":[],"mappings":"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"}
|
|
@@ -555,13 +555,6 @@ export class IfcAPI {
|
|
|
555
555
|
* `typeof api.ExtractGeometryBatch === 'function'`; call repeatedly
|
|
556
556
|
* until `remaining` is 0.
|
|
557
557
|
*
|
|
558
|
-
* DELTA CONTRACT: an entity may be emitted again in a LATER call with
|
|
559
|
-
* a FlatMesh containing only its NEW placed instances (shared/mapped
|
|
560
|
-
* geometry attributes instances to an entity from other products'
|
|
561
|
-
* extractions). Consumers must render/accumulate deltas additively —
|
|
562
|
-
* never key emissions by expressID with overwrite semantics. Each
|
|
563
|
-
* placed instance is emitted exactly once across all calls.
|
|
564
|
-
*
|
|
565
558
|
* @param modelID handle retrieved by OpenModelStreamed
|
|
566
559
|
* @param batchSize max products to extract this call
|
|
567
560
|
* @param meshCallback receives each newly-extracted product's mesh
|
|
@@ -17,8 +17,8 @@ let buffer;
|
|
|
17
17
|
* @param mesh The mesh.
|
|
18
18
|
* @return {object} Plain comparable form.
|
|
19
19
|
*/
|
|
20
|
-
function flatten(mesh
|
|
21
|
-
const geometries =
|
|
20
|
+
function flatten(mesh) {
|
|
21
|
+
const geometries = [];
|
|
22
22
|
for (let where = 0; where < mesh.geometries.size(); ++where) {
|
|
23
23
|
const placed = mesh.geometries.get(where);
|
|
24
24
|
geometries.push({
|
|
@@ -44,15 +44,19 @@ describe("OpenModelStreamed + DEFER_GEOMETRY", () => {
|
|
|
44
44
|
expect(classic.size).toBeGreaterThan(0);
|
|
45
45
|
const deferredID = await api.OpenModelStreamed(buffer, { ...SETTINGS, DEFER_GEOMETRY: true });
|
|
46
46
|
expect(deferredID).toBeGreaterThanOrEqual(0);
|
|
47
|
+
// Nothing extracted yet: the scene walk yields no meshes.
|
|
48
|
+
const before = [];
|
|
49
|
+
api.StreamAllMeshes(deferredID, (mesh) => {
|
|
50
|
+
before.push(mesh.expressID);
|
|
51
|
+
});
|
|
52
|
+
expect(before).toHaveLength(0);
|
|
47
53
|
// Pump in deliberately small batches; collect incremental meshes.
|
|
48
|
-
// (Deltas: an entity may re-emit with only its NEW instances —
|
|
49
|
-
// `flatten` accumulation in the map below must be additive.)
|
|
50
54
|
const streamed = new Map();
|
|
51
55
|
let firstBatchCount = 0;
|
|
52
56
|
let rounds = 0;
|
|
53
57
|
for (;;) {
|
|
54
58
|
const { extracted, remaining } = api.ExtractGeometryBatch(deferredID, 7, (mesh) => {
|
|
55
|
-
streamed.set(mesh.expressID, flatten(mesh
|
|
59
|
+
streamed.set(mesh.expressID, flatten(mesh));
|
|
56
60
|
});
|
|
57
61
|
if (rounds === 0) {
|
|
58
62
|
firstBatchCount = streamed.size;
|
|
@@ -73,26 +77,6 @@ describe("OpenModelStreamed + DEFER_GEOMETRY", () => {
|
|
|
73
77
|
api.CloseModel(classicID);
|
|
74
78
|
api.CloseModel(deferredID);
|
|
75
79
|
}, 240000);
|
|
76
|
-
test("StreamAllMeshes on a deferred model drains the pump and matches classic", async () => {
|
|
77
|
-
const classicID = api.OpenModel(buffer, SETTINGS);
|
|
78
|
-
const classic = new Map();
|
|
79
|
-
api.StreamAllMeshes(classicID, (mesh) => {
|
|
80
|
-
classic.set(mesh.expressID, flatten(mesh));
|
|
81
|
-
});
|
|
82
|
-
const deferredID = await api.OpenModelStreamed(buffer, { ...SETTINGS, DEFER_GEOMETRY: true });
|
|
83
|
-
// No pump calls at all — the whole-model consumer must still get
|
|
84
|
-
// the complete mesh set (the shim drains internally).
|
|
85
|
-
const drained = new Map();
|
|
86
|
-
api.StreamAllMeshes(deferredID, (mesh) => {
|
|
87
|
-
drained.set(mesh.expressID, flatten(mesh));
|
|
88
|
-
});
|
|
89
|
-
expect(drained.size).toBe(classic.size);
|
|
90
|
-
for (const [expressID, mesh] of classic) {
|
|
91
|
-
expect(drained.get(expressID)).toEqual(mesh);
|
|
92
|
-
}
|
|
93
|
-
api.CloseModel(classicID);
|
|
94
|
-
api.CloseModel(deferredID);
|
|
95
|
-
}, 240000);
|
|
96
80
|
test("ExtractGeometryBatch is a safe no-op on non-deferred models", async () => {
|
|
97
81
|
const modelID = await api.OpenModelStreamed(buffer, SETTINGS);
|
|
98
82
|
expect(api.ExtractGeometryBatch(modelID, 8))
|
|
@@ -57,15 +57,6 @@ export declare class IfcApiProxyIfc implements IfcApiModelPassthrough {
|
|
|
57
57
|
private deferredMode_;
|
|
58
58
|
/** Deferred-mode product worklist (file order), lazily enumerated. */
|
|
59
59
|
private demandProducts_?;
|
|
60
|
-
/**
|
|
61
|
-
* Deferred capture watermarks: entity localID -> how many of its
|
|
62
|
-
* placed instances (in scene-walk order) have been captured. Shared
|
|
63
|
-
* (mapped) geometry attributes instances to an entity from OTHER
|
|
64
|
-
* products' extractions, so an entity's instance set grows across
|
|
65
|
-
* batches - the watermark makes each instance captured exactly once,
|
|
66
|
-
* in the same order the classic single walk would process it.
|
|
67
|
-
*/
|
|
68
|
-
private readonly demandCapturedCounts_;
|
|
69
60
|
/** Cursor into demandProducts_ — products before it are extracted. */
|
|
70
61
|
private demandCursor_;
|
|
71
62
|
_isCoordinated: boolean;
|
|
@@ -402,24 +393,17 @@ export declare class IfcApiProxyIfc implements IfcApiModelPassthrough {
|
|
|
402
393
|
remaining: number;
|
|
403
394
|
};
|
|
404
395
|
/**
|
|
405
|
-
* Walk the scene and emit
|
|
406
|
-
*
|
|
407
|
-
*
|
|
408
|
-
* walk order exactly once per instance (per-entity watermarks). An
|
|
409
|
-
* entity re-emits with only its NEW instances when shared/mapped
|
|
410
|
-
* geometry attributes more to it in later batches; consumers render
|
|
411
|
-
* deltas additively (the shared meshMap still accumulates each
|
|
412
|
-
* entity's FULL vector, so getFlatMesh stays whole-model correct).
|
|
413
|
-
*
|
|
414
|
-
* Also fixes a latent multi-call bug: the derived coordination
|
|
396
|
+
* Walk the scene and emit FlatMeshes for the given entities only —
|
|
397
|
+
* the filtered core of streamAllMeshes with identical placed-geometry
|
|
398
|
+
* math. Also fixes a latent multi-call bug: the derived coordination
|
|
415
399
|
* matrix is stored back to the model tuple, so later batches place
|
|
416
400
|
* with the SAME coordination the first batch established
|
|
417
401
|
* (streamAllMeshes never needed this — it runs once).
|
|
418
402
|
*
|
|
419
|
-
* @param
|
|
420
|
-
*
|
|
403
|
+
* @param entityFilter Entity localIDs whose meshes to emit.
|
|
404
|
+
* @param meshCallback Receives one FlatMesh per matched entity.
|
|
421
405
|
*/
|
|
422
|
-
private
|
|
406
|
+
private streamMeshesForEntities_;
|
|
423
407
|
/**
|
|
424
408
|
*
|
|
425
409
|
* @param modelID
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc_api_proxy_ifc.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_proxy_ifc.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACf,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,YAAY,MAAM,0BAA0B,CAAA;AACnD,OAAO,EACL,QAAQ,EACR,WAAW,EACX,WAAW,EACX,cAAc,EACd,cAAc,EACd,WAAW,EACX,MAAM,EACP,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAWhD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;
|
|
1
|
+
{"version":3,"file":"ifc_api_proxy_ifc.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_proxy_ifc.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,9 +19,6 @@ import { shimIfcEntityMap, shimIfcEntityReverseMap } from "./shim_schema_mapping
|
|
|
19
19
|
import { EntityTypesIfcCount } from "../../ifc/ifc4_gen/entity_types_ifc.gen.js";
|
|
20
20
|
import { IfcProduct, IfcRoot } from "../../ifc/ifc4_gen/index.js";
|
|
21
21
|
import { CanonicalMeshType } from "../../index.js";
|
|
22
|
-
// Batch size used when a whole-model consumer (streamAllMeshes) drains
|
|
23
|
-
// a deferred model's remaining products synchronously.
|
|
24
|
-
const DEFERRED_DRAIN_BATCH = 256;
|
|
25
22
|
/* Moving-window size for the streamed columnar parse (matches the
|
|
26
23
|
* ifc_stream_open default; the window bounds parse-time scratch, not
|
|
27
24
|
* the source buffer, which the model keeps resident here). */
|
|
@@ -44,15 +41,6 @@ export class IfcApiProxyIfc {
|
|
|
44
41
|
this.fs = undefined;
|
|
45
42
|
/** Was this model opened without extraction (DEFER_GEOMETRY)? */
|
|
46
43
|
this.deferredMode_ = false;
|
|
47
|
-
/**
|
|
48
|
-
* Deferred capture watermarks: entity localID -> how many of its
|
|
49
|
-
* placed instances (in scene-walk order) have been captured. Shared
|
|
50
|
-
* (mapped) geometry attributes instances to an entity from OTHER
|
|
51
|
-
* products' extractions, so an entity's instance set grows across
|
|
52
|
-
* batches - the watermark makes each instance captured exactly once,
|
|
53
|
-
* in the same order the classic single walk would process it.
|
|
54
|
-
*/
|
|
55
|
-
this.demandCapturedCounts_ = new Map();
|
|
56
44
|
/** Cursor into demandProducts_ — products before it are extracted. */
|
|
57
45
|
this.demandCursor_ = 0;
|
|
58
46
|
this._isCoordinated = false;
|
|
@@ -1002,55 +990,40 @@ export class IfcApiProxyIfc {
|
|
|
1002
990
|
this.demandCursor_ = 0;
|
|
1003
991
|
}
|
|
1004
992
|
const end = Math.min(this.demandCursor_ + Math.max(batchSize, 1), this.demandProducts_.length);
|
|
1005
|
-
|
|
993
|
+
const batch = new Set();
|
|
1006
994
|
for (; this.demandCursor_ < end; ++this.demandCursor_) {
|
|
1007
995
|
const localID = this.demandProducts_[this.demandCursor_];
|
|
1008
996
|
if (this.conwayGeometry_.extractProductGeometryByLocalID(localID)) {
|
|
1009
|
-
|
|
997
|
+
batch.add(localID);
|
|
1010
998
|
}
|
|
1011
999
|
}
|
|
1012
|
-
if (meshCallback !== void 0) {
|
|
1013
|
-
this.
|
|
1000
|
+
if (meshCallback !== void 0 && batch.size > 0) {
|
|
1001
|
+
this.streamMeshesForEntities_(batch, meshCallback);
|
|
1014
1002
|
}
|
|
1015
1003
|
return {
|
|
1016
|
-
extracted,
|
|
1004
|
+
extracted: batch.size,
|
|
1017
1005
|
remaining: this.demandProducts_.length - this.demandCursor_,
|
|
1018
1006
|
};
|
|
1019
1007
|
}
|
|
1020
1008
|
/**
|
|
1021
|
-
* Walk the scene and emit
|
|
1022
|
-
*
|
|
1023
|
-
*
|
|
1024
|
-
* walk order exactly once per instance (per-entity watermarks). An
|
|
1025
|
-
* entity re-emits with only its NEW instances when shared/mapped
|
|
1026
|
-
* geometry attributes more to it in later batches; consumers render
|
|
1027
|
-
* deltas additively (the shared meshMap still accumulates each
|
|
1028
|
-
* entity's FULL vector, so getFlatMesh stays whole-model correct).
|
|
1029
|
-
*
|
|
1030
|
-
* Also fixes a latent multi-call bug: the derived coordination
|
|
1009
|
+
* Walk the scene and emit FlatMeshes for the given entities only —
|
|
1010
|
+
* the filtered core of streamAllMeshes with identical placed-geometry
|
|
1011
|
+
* math. Also fixes a latent multi-call bug: the derived coordination
|
|
1031
1012
|
* matrix is stored back to the model tuple, so later batches place
|
|
1032
1013
|
* with the SAME coordination the first batch established
|
|
1033
1014
|
* (streamAllMeshes never needed this — it runs once).
|
|
1034
1015
|
*
|
|
1035
|
-
* @param
|
|
1036
|
-
*
|
|
1016
|
+
* @param entityFilter Entity localIDs whose meshes to emit.
|
|
1017
|
+
* @param meshCallback Receives one FlatMesh per matched entity.
|
|
1037
1018
|
*/
|
|
1038
|
-
|
|
1019
|
+
streamMeshesForEntities_(entityFilter, meshCallback) {
|
|
1039
1020
|
const [model, scene, meshMap, geometryMaterialTransformMap] = this.model;
|
|
1040
1021
|
let coordinationMatrix = this.model[5];
|
|
1041
|
-
const
|
|
1042
|
-
const deltas = new Map();
|
|
1022
|
+
const emitted = new Set();
|
|
1043
1023
|
// eslint-disable-next-line no-unused-vars
|
|
1044
1024
|
for (const [_, nativeTransform, geometry, material, entity] of scene.walk()) {
|
|
1045
|
-
if (entity?.localID === void 0 || entity.
|
|
1046
|
-
|
|
1047
|
-
}
|
|
1048
|
-
// Per-entity walk position vs watermark: instances before the
|
|
1049
|
-
// watermark were captured in an earlier call (append-only walk
|
|
1050
|
-
// order makes the count a stable cursor).
|
|
1051
|
-
const walkIndex = seenThisPass.get(entity.localID) ?? 0;
|
|
1052
|
-
seenThisPass.set(entity.localID, walkIndex + 1);
|
|
1053
|
-
if (walkIndex < (this.demandCapturedCounts_.get(entity.localID) ?? 0)) {
|
|
1025
|
+
if (entity?.localID === void 0 || !entityFilter.has(entity.localID) ||
|
|
1026
|
+
entity.expressID === void 0) {
|
|
1054
1027
|
continue;
|
|
1055
1028
|
}
|
|
1056
1029
|
if (geometry.type !== CanonicalMeshType.BUFFER_GEOMETRY || geometry.temporary) {
|
|
@@ -1138,26 +1111,15 @@ export class IfcApiProxyIfc {
|
|
|
1138
1111
|
}
|
|
1139
1112
|
mesh[0].push(placed);
|
|
1140
1113
|
mesh[1].geometries = mesh[0];
|
|
1141
|
-
|
|
1142
|
-
let delta = deltas.get(entity.expressID);
|
|
1143
|
-
if (delta === void 0) {
|
|
1144
|
-
delta = [];
|
|
1145
|
-
deltas.set(entity.expressID, delta);
|
|
1146
|
-
}
|
|
1147
|
-
delta.push(placed);
|
|
1114
|
+
emitted.add(entity.expressID);
|
|
1148
1115
|
}
|
|
1149
1116
|
const vectorFlatMesh = this.model[4];
|
|
1150
|
-
for (const
|
|
1151
|
-
const
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
},
|
|
1157
|
-
};
|
|
1158
|
-
const deltaMesh = { geometries: placedVector, expressID };
|
|
1159
|
-
vectorFlatMesh.push(deltaMesh);
|
|
1160
|
-
meshCallback(deltaMesh);
|
|
1117
|
+
for (const expressID of emitted) {
|
|
1118
|
+
const mesh = meshMap.get(expressID);
|
|
1119
|
+
if (mesh !== void 0) {
|
|
1120
|
+
vectorFlatMesh.push(mesh[1]);
|
|
1121
|
+
meshCallback(mesh[1]);
|
|
1122
|
+
}
|
|
1161
1123
|
}
|
|
1162
1124
|
}
|
|
1163
1125
|
/**
|
|
@@ -1166,23 +1128,6 @@ export class IfcApiProxyIfc {
|
|
|
1166
1128
|
* @param meshCallback
|
|
1167
1129
|
*/
|
|
1168
1130
|
streamAllMeshes(meshCallback) {
|
|
1169
|
-
// Deferred models: the delta capture has already populated (or will
|
|
1170
|
-
// populate) the shared meshMap — re-running the classic walk would
|
|
1171
|
-
// push every instance a second time. Pump any remainder to
|
|
1172
|
-
// completion and serve the accumulated full per-entity meshes.
|
|
1173
|
-
if (this.deferredMode_) {
|
|
1174
|
-
const noCallback = void 0;
|
|
1175
|
-
while (this.extractGeometryBatch(DEFERRED_DRAIN_BATCH, noCallback).remaining > 0) {
|
|
1176
|
-
// draining
|
|
1177
|
-
}
|
|
1178
|
-
this.streamNewMeshes_(() => { });
|
|
1179
|
-
const [, , meshMap, , vectorFlatMesh] = this.model;
|
|
1180
|
-
meshMap.forEach((mesh) => {
|
|
1181
|
-
vectorFlatMesh.push(mesh[1]);
|
|
1182
|
-
meshCallback(mesh[1]);
|
|
1183
|
-
});
|
|
1184
|
-
return;
|
|
1185
|
-
}
|
|
1186
1131
|
const [model, scene, meshMap, geometryMaterialTransformMap, vectorFlatMesh] = this.model;
|
|
1187
1132
|
let coordinationMatrix = this.model[5];
|
|
1188
1133
|
// eslint-disable-next-line no-unused-vars
|
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
// only the first segment (major) is meaningful and is the one CI carries forward.
|
|
6
6
|
// Must stay in `vN.N.N` shape: the CI stamp regex, scripts/updateVersion.mjs, and
|
|
7
7
|
// statistics.ts all match `v\d+\.\d+\.\d+`.
|
|
8
|
-
const versionString = 'Conway v1.
|
|
8
|
+
const versionString = 'Conway v1.424.1275';
|
|
9
9
|
export { versionString };
|