brepjs-cad 0.31.0 → 0.32.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/CHANGELOG.md +45 -0
- package/README.md +4 -0
- package/dist/brepjs-cad.cjs +1 -1
- package/dist/brepjs-cad.js +1 -1
- package/dist/cli/main.cjs +1 -1
- package/dist/cli/main.js +1 -1
- package/dist/{diff-DhOTZnG_.cjs → diff-B4THXE07.cjs} +3 -5
- package/dist/{diff-MBAc87Xi.js → diff-CSrgWg-i.js} +3 -5
- package/package.json +1 -1
- package/viewer/dist/assets/brepjs-Rsj9-_9m.js +60 -0
- package/viewer/dist/assets/{index-D00Hjy2q.js → index-D2DWnBw6.js} +1 -1
- package/viewer/dist/assets/{kernelWorker-ynmKsxiQ.js → kernelWorker-C8sXP0K0.js} +1 -1
- package/viewer/dist/index.html +1 -1
- package/viewer/dist/assets/brepjs-1Enzw6vj.js +0 -60
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,50 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.32.0](https://github.com/andymai/brepjs/compare/brepjs-cad-v0.31.2...brepjs-cad-v0.32.0) (2026-06-24)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **brepjs-cad:** add airfoils.md feature recipe (swept fans/props/impellers) ([#1566](https://github.com/andymai/brepjs/issues/1566)) ([8c786db](https://github.com/andymai/brepjs/commit/8c786db69ead59edcdc9d0f8525e43324552e4db))
|
|
9
|
+
* **brepjs-cad:** aimed section cut for the design judge (Phase 3) ([#1543](https://github.com/andymai/brepjs/issues/1543)) ([40e5acd](https://github.com/andymai/brepjs/commit/40e5acd54318d768dc5a620403d17d43e358e698))
|
|
10
|
+
* **brepjs-cad:** CLI subcommands + verify hints + gridfinity examples + eval harness ([#1204](https://github.com/andymai/brepjs/issues/1204)) ([4d57198](https://github.com/andymai/brepjs/commit/4d5719874b5f5e685a4f909fd2d2363c0331770b))
|
|
11
|
+
* **brepjs-cad:** decomposed, cross-checked design-judge rubric (Phase 1.5) ([#1539](https://github.com/andymai/brepjs/issues/1539)) ([8059b6d](https://github.com/andymai/brepjs/commit/8059b6d701ae5980e6bb11f51695aa102fe2bb43))
|
|
12
|
+
* **brepjs-cad:** deterministic body/interference metrics for the design judge (Phase 1) ([#1531](https://github.com/andymai/brepjs/issues/1531)) ([d296b54](https://github.com/andymai/brepjs/commit/d296b545f2d7084b861683d61b626ace4747a371))
|
|
13
|
+
* **brepjs-cad:** kernel-anchored Set-of-Marks for the design judge ([#1545](https://github.com/andymai/brepjs/issues/1545)) ([2b6f5b4](https://github.com/andymai/brepjs/commit/2b6f5b436f2a73c96747cc71f83afc8715765cd0))
|
|
14
|
+
* **brepjs-cad:** reliable internal-bore detection for the design judge (keystone) ([#1542](https://github.com/andymai/brepjs/issues/1542)) ([0d780c3](https://github.com/andymai/brepjs/commit/0d780c3b73c2551dab2f04a6ff31bf9ec8cae2ab))
|
|
15
|
+
* **brepjs-cad:** rename from brepjs-agent + make npm-publishable (publish held) ([#1201](https://github.com/andymai/brepjs/issues/1201)) ([630bbba](https://github.com/andymai/brepjs/commit/630bbbab4885604bd4d5fb2148584a6572c8d99c))
|
|
16
|
+
* **brepjs-cad:** surface fragmentation in verify --check (the [#1](https://github.com/andymai/brepjs/issues/1) design defect) ([#1560](https://github.com/andymai/brepjs/issues/1560)) ([45a4f6e](https://github.com/andymai/brepjs/commit/45a4f6e268331b7816cd9957fbdab4c0893b2000))
|
|
17
|
+
* **brepjs-cad:** xray internal-reveal shot for the design judge (Phase 2a) ([#1540](https://github.com/andymai/brepjs/issues/1540)) ([eca5bc9](https://github.com/andymai/brepjs/commit/eca5bc9ad20fc7947132d647952245cfe466a7f4))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* **brepjs-cad:** add a triangular-gusset recipe to the implement skill (bracket/enclosure eval) ([#1571](https://github.com/andymai/brepjs/issues/1571)) ([346d042](https://github.com/andymai/brepjs/commit/346d0423fefa3bd163f4075f69bf96d478543bf5))
|
|
23
|
+
* **brepjs-cad:** add the "realize the designed object" bar to the implement skill ([#1563](https://github.com/andymai/brepjs/issues/1563)) ([e150357](https://github.com/andymai/brepjs/commit/e1503570aaf271ebef1e39d48be9c70a5ffe8f03))
|
|
24
|
+
* **brepjs-cad:** bore detector misses full-cylinder through-holes ([#1551](https://github.com/andymai/brepjs/issues/1551)) ([#1586](https://github.com/andymai/brepjs/issues/1586)) ([b6d61eb](https://github.com/andymai/brepjs/commit/b6d61eb6d88e2e4a3aa1c55b78dc2e76315ebc02))
|
|
25
|
+
* **brepjs-cad:** close gear-teeth edge cases found by /eval-skill (ring, worm tip relief, GT2) ([#1548](https://github.com/andymai/brepjs/issues/1548)) ([4bd0494](https://github.com/andymai/brepjs/commit/4bd049401f3affcc3f38e3a31bb9520653a3e89c))
|
|
26
|
+
* **brepjs-cad:** code + hint the degenerate-edge (duplicate-vertex) verify failure ([#1550](https://github.com/andymai/brepjs/issues/1550)) ([502dffc](https://github.com/andymai/brepjs/commit/502dffc4a2ae495ae5c98b0c7966721abe0d5f48))
|
|
27
|
+
* **brepjs-cad:** correct spur-gear example flanks + add root fillet ([#1528](https://github.com/andymai/brepjs/issues/1528)) ([6971c6b](https://github.com/andymai/brepjs/commit/6971c6befa1fea36a8c2f3ee89c4aa20946020c7))
|
|
28
|
+
* **brepjs-cad:** exploded-joint legibility + disjoint-compound caveat (basics eval) ([#1565](https://github.com/andymai/brepjs/issues/1565)) ([9d06121](https://github.com/andymai/brepjs/commit/9d0612111a595e57fcfca6fd191ed9169fc2c062))
|
|
29
|
+
* **brepjs-cad:** handle brepjs/playground refs + summarize body relations in the digest ([#1547](https://github.com/andymai/brepjs/issues/1547)) ([b0acef0](https://github.com/andymai/brepjs/commit/b0acef0ad80cdd61f0d2683f1e6d0ece0cae028e))
|
|
30
|
+
* **brepjs-cad:** heal 6 implement-skill findings from the full-flywheel re-run ([#1568](https://github.com/andymai/brepjs/issues/1568)) ([f63bf3d](https://github.com/andymai/brepjs/commit/f63bf3d5a0aa638d06e11dd7e2c27e84dbf74746))
|
|
31
|
+
* **brepjs-cad:** heal implement + polish skills from clean-room eval ([#1526](https://github.com/andymai/brepjs/issues/1526)) ([0645e16](https://github.com/andymai/brepjs/commit/0645e163e1d8759c95406d0f9526d0aa3b5dd480))
|
|
32
|
+
* **brepjs-cad:** heal implement skill — deep-stack bounds extremes aren't datums ([#1529](https://github.com/andymai/brepjs/issues/1529)) ([5ed366f](https://github.com/andymai/brepjs/commit/5ed366f266b3e6e50ae4b54d5779aa05453e894a))
|
|
33
|
+
* **brepjs-cad:** heal implement skill from the eval flywheel (3 findings) ([#1552](https://github.com/andymai/brepjs/issues/1552)) ([51def82](https://github.com/andymai/brepjs/commit/51def82db4e0600e85f45e4dd828cc9caee58d15))
|
|
34
|
+
* **brepjs-cad:** heal implement skill from the full-corpus eval flywheel (4 findings) ([#1554](https://github.com/andymai/brepjs/issues/1554)) ([3cfc28e](https://github.com/andymai/brepjs/commit/3cfc28ed8b82c46330f1d75f1e98c13fd4d65a06))
|
|
35
|
+
* **brepjs-cad:** load .ts parts via native type-stripping ([#1207](https://github.com/andymai/brepjs/issues/1207)) ([198078b](https://github.com/andymai/brepjs/commit/198078becf570614c0cbf61537714fc94c2de43a))
|
|
36
|
+
* **brepjs-cad:** make blind-judge reference adaptation render multi-body parts at scale ([#1530](https://github.com/andymai/brepjs/issues/1530)) ([18d4523](https://github.com/andymai/brepjs/commit/18d4523c85e1b22496bb5c0b8fb382a1146429c6))
|
|
37
|
+
* **brepjs-cad:** polish skill — bosses on shells must fuse, or they float (eval finding) ([#1553](https://github.com/andymai/brepjs/issues/1553)) ([07cbf93](https://github.com/andymai/brepjs/commit/07cbf93e47fbf880df53bc2a1cee05bf0d17e2d5))
|
|
38
|
+
* **brepjs-cad:** run CLI via bin symlink + quality pass ([#1206](https://github.com/andymai/brepjs/issues/1206)) ([ac5b1fe](https://github.com/andymai/brepjs/commit/ac5b1feee3c5b424c37716ca06c397f7898838f1))
|
|
39
|
+
* **brepjs-cad:** teach worm-wheel and rack tooth recipes; fix gear-build contradiction ([#1544](https://github.com/andymai/brepjs/issues/1544)) ([b0da85f](https://github.com/andymai/brepjs/commit/b0da85f218d463e0f1ef0ca8760cec54b4814b02))
|
|
40
|
+
|
|
41
|
+
## [0.31.1](https://github.com/andymai/brepjs/compare/brepjs-cad-v0.31.0...brepjs-cad-v0.31.1) (2026-06-23)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
### Bug Fixes
|
|
45
|
+
|
|
46
|
+
* **brepjs-cad:** bore detector misses full-cylinder through-holes ([#1551](https://github.com/andymai/brepjs/issues/1551)) ([#1586](https://github.com/andymai/brepjs/issues/1586)) ([b6d61eb](https://github.com/andymai/brepjs/commit/b6d61eb6d88e2e4a3aa1c55b78dc2e76315ebc02))
|
|
47
|
+
|
|
3
48
|
## [0.31.0](https://github.com/andymai/brepjs/compare/brepjs-cad-v0.30.1...brepjs-cad-v0.31.0) (2026-06-22)
|
|
4
49
|
|
|
5
50
|
|
package/README.md
CHANGED
|
@@ -13,6 +13,10 @@ Five composable, individually-improvable skills — **`brepjs:brainstorm`** (sco
|
|
|
13
13
|
/plugin install brepjs@brepjs
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
+
Or non-interactively from a terminal: `claude plugin marketplace add andymai/brepjs && claude plugin install brepjs@brepjs`.
|
|
17
|
+
|
|
18
|
+
Then ask for a part in plain English and Claude reaches for the pipeline on its own, or drive it explicitly: `/brepjs:cad "a wall bracket for a 40 mm pipe with two M4 holes"` runs the full gated pipeline; `/brepjs:brainstorm` … `/brepjs:polish` run a single phase.
|
|
19
|
+
|
|
16
20
|
## 2. The runtime (npm)
|
|
17
21
|
|
|
18
22
|
The CLI the skill invokes. Install it in **your** project, where `brepjs` + the WASM kernel resolve (Node module resolution is project-local, so the runtime can't live in the plugin dir):
|
package/dist/brepjs-cad.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_diff = require("./diff-
|
|
2
|
+
const require_diff = require("./diff-B4THXE07.cjs");
|
|
3
3
|
exports.DEFAULT_TOLERANCE_PCT = require_diff.DEFAULT_TOLERANCE_PCT;
|
|
4
4
|
exports.TYPECHECK_CODE = require_diff.TYPECHECK_CODE;
|
|
5
5
|
exports.emptyReport = require_diff.emptyReport;
|
package/dist/brepjs-cad.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as typecheckPart, c as isExpectedDims, d as emptyReport, i as TYPECHECK_CODE, l as pctDelta, m as serializeReport, n as runMeasure, o as DEFAULT_TOLERANCE_PCT, r as runPart, s as evaluateExpected, t as runDiff, u as runChecks } from "./diff-
|
|
1
|
+
import { a as typecheckPart, c as isExpectedDims, d as emptyReport, i as TYPECHECK_CODE, l as pctDelta, m as serializeReport, n as runMeasure, o as DEFAULT_TOLERANCE_PCT, r as runPart, s as evaluateExpected, t as runDiff, u as runChecks } from "./diff-CSrgWg-i.js";
|
|
2
2
|
export { DEFAULT_TOLERANCE_PCT, TYPECHECK_CODE, emptyReport, evaluateExpected, isExpectedDims, pctDelta, runChecks, runDiff, runMeasure, runPart, serializeReport, typecheckPart };
|
package/dist/cli/main.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const require_diff = require("../diff-
|
|
3
|
+
const require_diff = require("../diff-B4THXE07.cjs");
|
|
4
4
|
let node_url = require("node:url");
|
|
5
5
|
let node_fs = require("node:fs");
|
|
6
6
|
let node_path = require("node:path");
|
package/dist/cli/main.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { f as pushError, h as loadBrep, m as serializeReport, n as runMeasure, p as reportOk, r as runPart, t as runDiff } from "../diff-
|
|
2
|
+
import { f as pushError, h as loadBrep, m as serializeReport, n as runMeasure, p as reportOk, r as runPart, t as runDiff } from "../diff-CSrgWg-i.js";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
4
|
import { existsSync, globSync, mkdirSync, realpathSync, watch, writeFileSync } from "node:fs";
|
|
5
5
|
import { basename, dirname, join, resolve } from "node:path";
|
|
@@ -55,7 +55,6 @@ var RELATION_BUDGET_MS = 15e3;
|
|
|
55
55
|
var MAX_BODIES = 24;
|
|
56
56
|
var VOL_EPS = 1e-9;
|
|
57
57
|
var SUBSTANTIAL_USPAN = 2.5;
|
|
58
|
-
var BORE_DOT = .5;
|
|
59
58
|
var v3sub = (a, b) => [
|
|
60
59
|
a[0] - b[0],
|
|
61
60
|
a[1] - b[1],
|
|
@@ -157,7 +156,7 @@ function computeBodyRelations(brep, solids, bodies) {
|
|
|
157
156
|
* The bore axis lets a later phase aim a section cut or anchor a feature mark.
|
|
158
157
|
*/
|
|
159
158
|
function computeCylinderFeatures(brep, shape) {
|
|
160
|
-
const { getFaces, faceGeomType,
|
|
159
|
+
const { getFaces, faceGeomType, pointOnSurface, normalAt, faceAxis, measureCurvatureAtMid, uvBounds, isOk } = brep;
|
|
161
160
|
const bores = [];
|
|
162
161
|
let minRadius;
|
|
163
162
|
let faces;
|
|
@@ -189,13 +188,12 @@ function computeCylinderFeatures(brep, shape) {
|
|
|
189
188
|
}
|
|
190
189
|
minRadius = minRadius === void 0 ? radius : Math.min(minRadius, radius);
|
|
191
190
|
try {
|
|
192
|
-
const p = faceCenter(f);
|
|
193
191
|
const o = ax.origin;
|
|
194
192
|
const d = v3unit(ax.direction);
|
|
193
|
+
const p = pointOnSurface(f, .5, .5);
|
|
195
194
|
const rel = v3sub(p, o);
|
|
196
195
|
const radial = v3unit(v3sub(rel, v3scale(d, v3dot(rel, d))));
|
|
197
|
-
|
|
198
|
-
if (v3dot(v3unit(faceOrientation(f) === "forward" ? n : v3scale(n, -1)), radial) > BORE_DOT) bores.push({
|
|
196
|
+
if (v3dot(v3unit(normalAt(f, p)), radial) < -.5) bores.push({
|
|
199
197
|
radius,
|
|
200
198
|
axisOrigin: [
|
|
201
199
|
o[0],
|
|
@@ -53,7 +53,6 @@ var RELATION_BUDGET_MS = 15e3;
|
|
|
53
53
|
var MAX_BODIES = 24;
|
|
54
54
|
var VOL_EPS = 1e-9;
|
|
55
55
|
var SUBSTANTIAL_USPAN = 2.5;
|
|
56
|
-
var BORE_DOT = .5;
|
|
57
56
|
var v3sub = (a, b) => [
|
|
58
57
|
a[0] - b[0],
|
|
59
58
|
a[1] - b[1],
|
|
@@ -155,7 +154,7 @@ function computeBodyRelations(brep, solids, bodies) {
|
|
|
155
154
|
* The bore axis lets a later phase aim a section cut or anchor a feature mark.
|
|
156
155
|
*/
|
|
157
156
|
function computeCylinderFeatures(brep, shape) {
|
|
158
|
-
const { getFaces, faceGeomType,
|
|
157
|
+
const { getFaces, faceGeomType, pointOnSurface, normalAt, faceAxis, measureCurvatureAtMid, uvBounds, isOk } = brep;
|
|
159
158
|
const bores = [];
|
|
160
159
|
let minRadius;
|
|
161
160
|
let faces;
|
|
@@ -187,13 +186,12 @@ function computeCylinderFeatures(brep, shape) {
|
|
|
187
186
|
}
|
|
188
187
|
minRadius = minRadius === void 0 ? radius : Math.min(minRadius, radius);
|
|
189
188
|
try {
|
|
190
|
-
const p = faceCenter(f);
|
|
191
189
|
const o = ax.origin;
|
|
192
190
|
const d = v3unit(ax.direction);
|
|
191
|
+
const p = pointOnSurface(f, .5, .5);
|
|
193
192
|
const rel = v3sub(p, o);
|
|
194
193
|
const radial = v3unit(v3sub(rel, v3scale(d, v3dot(rel, d))));
|
|
195
|
-
|
|
196
|
-
if (v3dot(v3unit(faceOrientation(f) === "forward" ? n : v3scale(n, -1)), radial) > BORE_DOT) bores.push({
|
|
194
|
+
if (v3dot(v3unit(normalAt(f, p)), radial) < -.5) bores.push({
|
|
197
195
|
radius,
|
|
198
196
|
axisOrigin: [
|
|
199
197
|
o[0],
|
package/package.json
CHANGED