partforge 0.106.0 → 0.107.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/README.md +2 -2
- package/package.json +4 -4
- package/src/framework/jobs.js +6 -1
- package/src/parts/demo.js +1 -1
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ use can drive to author, test, and measure a part, then ship it as a browser app
|
|
|
15
15
|
|
|
16
16
|
## See it
|
|
17
17
|
|
|
18
|
-
- **Live showcase** — https://
|
|
18
|
+
- **Live showcase** — https://pixiteapps.github.io/partforge/ — example forges (Faceted
|
|
19
19
|
Planter, Spacer, Filleted Box) you can open, adjust, and export.
|
|
20
20
|
- **A real forge** — https://scottsykora.github.io/Drum-Machine/ — a parametric capstan
|
|
21
21
|
drum built with partforge for a robotics project.
|
|
@@ -25,7 +25,7 @@ use can drive to author, test, and measure a part, then ship it as a browser app
|
|
|
25
25
|
You don't write CAD by hand. Point a tool-using AI agent (Claude Code, or the Claude /
|
|
26
26
|
ChatGPT desktop apps with file access) at this repo and describe what you want:
|
|
27
27
|
|
|
28
|
-
> Using the partforge framework at https://github.com/
|
|
28
|
+
> Using the partforge framework at https://github.com/pixiteapps/partforge, build me a
|
|
29
29
|
> _\<your part\>_ — _\<the dimensions, fits, and features that matter\>_.
|
|
30
30
|
|
|
31
31
|
Expect a few turns. The first attempt is often rough, but you refine it in plain language
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "partforge",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.107.0",
|
|
4
4
|
"description": "Turn a declarative part definition into a parametric-CAD web app (three.js + Manifold/Replicad). Requires a Vite-based consumer.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "git+https://github.com/
|
|
9
|
+
"url": "git+https://github.com/pixiteapps/partforge.git"
|
|
10
10
|
},
|
|
11
|
-
"homepage": "https://github.com/
|
|
12
|
-
"bugs": "https://github.com/
|
|
11
|
+
"homepage": "https://github.com/pixiteapps/partforge#readme",
|
|
12
|
+
"bugs": "https://github.com/pixiteapps/partforge/issues",
|
|
13
13
|
"engines": {
|
|
14
14
|
"node": ">=24"
|
|
15
15
|
},
|
package/src/framework/jobs.js
CHANGED
|
@@ -112,7 +112,12 @@ async function scoreMatchTargets(built, targets, onProgress) {
|
|
|
112
112
|
const { best, views } = matchViews(viewMasks, reference, scoreOpts);
|
|
113
113
|
if (!best) continue; // nothing scoreable — a dropped target, never a zero score
|
|
114
114
|
const { delta, ...scores } = best;
|
|
115
|
-
|
|
115
|
+
// The caller's own label for this target, echoed verbatim when it sent one.
|
|
116
|
+
// Opaque here: a downstream that sends several photographs needs to know
|
|
117
|
+
// which score is whose, and order cannot say — an unscoreable target is
|
|
118
|
+
// dropped above and everything after it shifts.
|
|
119
|
+
const id = typeof target.id === "string" ? { id: target.id } : {};
|
|
120
|
+
out.push({ kind: target.kind, ...id, best: scores, views, delta: { view: best.view, ...delta } });
|
|
116
121
|
} catch (err) {
|
|
117
122
|
onProgress(`match target skipped: ${String(err?.message || err)}`);
|
|
118
123
|
}
|
package/src/parts/demo.js
CHANGED
|
@@ -13,7 +13,7 @@ export default {
|
|
|
13
13
|
presets: { M3: { od: 8, bore: 3.4, h: 10 }, M5: { od: 12, bore: 5.4, h: 16 } },
|
|
14
14
|
advanced: [
|
|
15
15
|
{ key: "od", label: "Outer diameter", unit: "mm", min: 4, max: 40, step: 0.5,
|
|
16
|
-
description: "Barrel outer diameter. Keep it comfortably larger than the bore so a wall remains. See the [authoring guide](https://github.com/
|
|
16
|
+
description: "Barrel outer diameter. Keep it comfortably larger than the bore so a wall remains. See the [authoring guide](https://github.com/pixiteapps/partforge/blob/main/docs/AUTHORING-PARTS.md)." },
|
|
17
17
|
{ key: "bore", label: "Bore", unit: "mm", min: 1, max: 30, step: 0.1, control: "number",
|
|
18
18
|
description: "Nominal screw clearance hole. A fixed print clearance is added automatically (see `derive`), so enter the *nominal* size." },
|
|
19
19
|
{ key: "h", label: "Height", unit: "mm", min: 2, max: 60, step: 1,
|