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 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://scottsykora.github.io/partforge/ — example forges (Faceted
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/scottsykora/partforge, build me a
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.106.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/scottsykora/partforge.git"
9
+ "url": "git+https://github.com/pixiteapps/partforge.git"
10
10
  },
11
- "homepage": "https://github.com/scottsykora/partforge#readme",
12
- "bugs": "https://github.com/scottsykora/partforge/issues",
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
  },
@@ -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
- out.push({ kind: target.kind, best: scores, views, delta: { view: best.view, ...delta } });
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/scottsykora/partforge/blob/main/docs/AUTHORING-PARTS.md)." },
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,