forgecad 0.6.3 → 0.7.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 -11
- package/dist/assets/{AdminPage-CeqCUUgu.js → AdminPage-DAu1C1ST.js} +250 -151
- package/dist/assets/{BlogPage-P_AJP0v9.js → BlogPage-CJEXL_zJ.js} +94 -70
- package/dist/assets/{DocsPage-CKRV2iq2.js → DocsPage-Gc_BCdqC.js} +269 -143
- package/dist/assets/EditorApp-D9bJvtf7.js +11338 -0
- package/dist/assets/{EditorApp-CnC2k4cW.css → EditorApp-DG1-oUSV.css} +459 -87
- package/dist/assets/{EmbedViewer-DBlzmQ5i.js → EmbedViewer-CEO8XbV8.js} +2 -4
- package/dist/assets/LandingPage-CdCuEOdC.js +451 -0
- package/dist/assets/PricingPage-BSrxu6d7.js +232 -0
- package/dist/assets/{SettingsPage-BqCh9JcC.js → SettingsPage-FUCSIRq6.js} +129 -5
- package/dist/assets/{evalWorker-Ql-aKwLA.js → evalWorker-KoR0SNKq.js} +6770 -2914
- package/dist/assets/{index-2hfs_ub0.css → index-CyVd1D4D.css} +227 -53
- package/dist/assets/{Viewport-CoB46f5R.js → index-wTEK39at.js} +31385 -6439
- package/dist/assets/{javascript-DCxGoE5Y.js → javascript-DAl8Gmyo.js} +1 -1
- package/dist/assets/{manifold-CqNMHHKO.js → manifold-B1sGWdYk.js} +4 -3
- package/dist/assets/{manifold-Cce9wRFz.js → manifold-D7o0N50J.js} +1 -1
- package/dist/assets/{manifold-D6BeHIOo.js → manifold-G5sBaXzi.js} +1 -1
- package/dist/assets/{reportWorker-sFEFonXf.js → reportWorker-DYcRHhv9.js} +6798 -3341
- package/dist/assets/{vendor-react-Dt7-aaJH.js → vendor-react-CG3i_wp0.js} +65 -8
- package/dist/docs-raw/generated/assembly.md +691 -112
- package/dist/docs-raw/generated/concepts.md +1225 -1400
- package/dist/docs-raw/generated/core.md +464 -1412
- package/dist/docs-raw/generated/curves.md +593 -117
- package/dist/docs-raw/generated/lib.md +38 -748
- package/dist/docs-raw/generated/output.md +139 -245
- package/dist/docs-raw/generated/sheet-metal.md +473 -21
- package/dist/docs-raw/generated/sketch.md +553 -349
- package/dist/docs-raw/generated/viewport.md +345 -303
- package/dist/docs-raw/generated/wood.md +104 -0
- package/dist/index.html +2 -2
- package/dist/sitemap.xml +6 -6
- package/dist-cli/chunk-PZ5AY32C.js +10 -0
- package/dist-cli/chunk-PZ5AY32C.js.map +1 -0
- package/dist-cli/forgecad.js +9435 -5407
- package/dist-cli/forgecad.js.map +1 -0
- package/dist-cli/solver-FV7TJZGI.js +365 -0
- package/dist-cli/solver-FV7TJZGI.js.map +1 -0
- package/dist-skill/CONTEXT.md +3186 -7145
- package/dist-skill/SKILL-dev.md +21 -63
- package/dist-skill/SKILL.md +12 -56
- package/dist-skill/docs/API/core/concepts.md +16 -98
- package/dist-skill/docs/CLI/export.md +91 -0
- package/dist-skill/docs/CLI/projects.md +107 -0
- package/dist-skill/docs/CLI/studio_publishing.md +52 -0
- package/dist-skill/docs/CLI/validation.md +66 -0
- package/dist-skill/docs/generated/assembly.md +691 -112
- package/dist-skill/docs/generated/core.md +464 -1412
- package/dist-skill/docs/generated/curves.md +593 -117
- package/dist-skill/docs/generated/lib.md +38 -748
- package/dist-skill/docs/generated/output.md +139 -245
- package/dist-skill/docs/generated/sheet-metal.md +473 -21
- package/dist-skill/docs/generated/sketch.md +553 -349
- package/dist-skill/docs/generated/viewport.md +345 -303
- package/dist-skill/docs/generated/wood.md +104 -0
- package/dist-skill/docs/guides/coordinate-system.md +11 -17
- package/dist-skill/docs/guides/geometry-conventions.md +13 -70
- package/dist-skill/docs/guides/modeling-recipes.md +22 -195
- package/dist-skill/docs/guides/positioning.md +88 -147
- package/dist-skill/docs-dev/API/core/concepts.md +51 -0
- package/dist-skill/docs-dev/API/core/sdf-advanced.md +92 -0
- package/dist-skill/docs-dev/API/core/sdf-primitives.md +58 -0
- package/dist-skill/docs-dev/API/core/sdf-workflow.md +42 -0
- package/dist-skill/docs-dev/CLI/export.md +91 -0
- package/dist-skill/docs-dev/CLI/projects.md +107 -0
- package/dist-skill/docs-dev/CLI/studio_publishing.md +52 -0
- package/dist-skill/docs-dev/CLI/validation.md +66 -0
- package/dist-skill/{docs → docs-dev}/blueprint-first.md +5 -0
- package/dist-skill/{docs → docs-dev}/coding-best-practices.md +6 -8
- package/dist-skill/{docs → docs-dev}/coding.md +1 -3
- package/dist-skill/docs-dev/generated/assembly.md +771 -0
- package/dist-skill/docs-dev/generated/core.md +775 -0
- package/dist-skill/docs-dev/generated/curves.md +688 -0
- package/dist-skill/docs-dev/generated/lib.md +50 -0
- package/dist-skill/docs-dev/generated/output.md +234 -0
- package/dist-skill/docs-dev/generated/sheet-metal.md +506 -0
- package/dist-skill/docs-dev/generated/sketch.md +801 -0
- package/dist-skill/docs-dev/generated/viewport.md +486 -0
- package/dist-skill/docs-dev/generated/wood.md +104 -0
- package/dist-skill/docs-dev/guides/coordinate-system.md +46 -0
- package/dist-skill/docs-dev/guides/geometry-conventions.md +52 -0
- package/dist-skill/docs-dev/guides/modeling-recipes.md +77 -0
- package/dist-skill/docs-dev/guides/positioning.md +151 -0
- package/dist-skill/{docs → docs-dev}/guides/skill-maintenance.md +21 -10
- package/dist-skill/{docs → docs-dev}/internals/compiler.md +5 -6
- package/dist-skill/{docs → docs-dev}/internals/constraint-solver-quality.md +0 -1
- package/dist-skill/{docs → docs-dev}/internals/constraint-solver.md +0 -1
- package/dist-skill/{docs → docs-dev}/internals/sketch-2d-pipeline.md +2 -3
- package/examples/api/attachTo-basics.forge.js +5 -5
- package/examples/api/boolean-operations.forge.js +3 -3
- package/examples/api/bounding-box-visualizer.forge.js +2 -2
- package/examples/api/clone-duplicate.forge.js +1 -1
- package/examples/api/colors-union-vs-array.forge.js +6 -6
- package/examples/api/connector-assembly.forge.js +4 -4
- package/examples/api/connector-basics.forge.js +2 -2
- package/examples/api/extrude-options.forge.js +4 -10
- package/examples/api/feature-created-faces.forge.js +6 -10
- package/examples/api/fillet-showcase.forge.js +1 -1
- package/examples/api/folded-service-panel-cover.forge.js +2 -2
- package/examples/api/group-test.forge.js +1 -1
- package/examples/api/group-vs-union.forge.js +1 -1
- package/examples/api/highlight-debug.forge.js +4 -0
- package/examples/api/js-module-pillars.js +1 -1
- package/examples/api/js-module-scene.js +2 -2
- package/examples/api/mesh-import-slats.forge.js +1 -1
- package/examples/api/pointAlong-orientation.forge.js +1 -1
- package/examples/api/profile-2020-b-slot6.forge.js +0 -1
- package/examples/api/route-perimeter-flange.forge.js +1 -1
- package/examples/api/sdf-rover-demo.forge.js +10 -10
- package/examples/api/sketch-on-face-demo.forge.js +2 -2
- package/examples/api/sketch-regions.forge.js +4 -4
- package/examples/api/transition-curves.forge.js +1 -1
- package/examples/api/variable-sweep-pure-sdf-test.forge.js +162 -0
- package/examples/api/variable-sweep-test.forge.js +2 -2
- package/examples/api/wood-joinery.forge.js +60 -0
- package/examples/compiler-corpus/enclosure-shell-cuts.forge.js +3 -3
- package/examples/compiler-corpus/fastener-plate-variants.forge.js +2 -2
- package/examples/experiments/drone-arm.forge.js +53 -0
- package/examples/furniture/adjustable-table.forge.js +2 -2
- package/examples/furniture/bathroom.forge.js +11 -11
- package/examples/furniture/chair.forge.js +1 -1
- package/examples/generative/crystal-growth.forge.js +2 -2
- package/examples/generative/frost-spires.forge.js +3 -3
- package/examples/generative/golden-spiral-tower.forge.js +3 -3
- package/examples/mechanical/3d-printer.forge.js +28 -28
- package/examples/mechanical/5-finger-robot-hand.forge.js +15 -15
- package/examples/mechanical/airplane-propeller.forge.js +2 -2
- package/examples/mechanical/fillet-enclosure.forge.js +1 -1
- package/examples/mechanical/headphone-hanger-v2.forge.js +2 -2
- package/examples/mechanical/robot_hand.forge.js +15 -15
- package/examples/mechanical/robot_hand_2.forge.js +9 -9
- package/examples/products/bottle.forge.js +1 -1
- package/examples/products/chess-set.forge.js +19 -19
- package/examples/products/classical-piano.forge.js +11 -11
- package/examples/products/clock.forge.js +12 -12
- package/examples/products/iphone.forge.js +8 -8
- package/examples/products/laptop.forge.js +15 -15
- package/examples/products/liquid-soap-dispenser.forge.js +18 -18
- package/examples/products/origami-fish.forge.js +8 -6
- package/examples/products/spiderman-cake.forge.js +4 -4
- package/examples/toolbox/bolted-joint.forge.js +2 -2
- package/package.json +7 -4
- package/dist/assets/EditorApp-B-vQvgam.js +0 -9888
- package/dist/assets/LandingPage-C5n9hDXI.js +0 -322
- package/dist/assets/PublishedModelPage-Dt7PCVBj.js +0 -146
- package/dist/assets/__vite-browser-external-CURh0WXD.js +0 -8
- package/dist/assets/deserializeRunResult-BLAFoiE0.js +0 -19365
- package/dist/assets/index-1CYp3zUp.js +0 -1455
- package/dist/docs-raw/CLI.md +0 -865
- package/dist-skill/docs/API/API.md +0 -1666
- package/dist-skill/docs/API/README.md +0 -37
- package/dist-skill/docs/API/assembly/assembly.md +0 -617
- package/dist-skill/docs/API/core/edge-queries.md +0 -130
- package/dist-skill/docs/API/core/parameters.md +0 -122
- package/dist-skill/docs/API/core/reserved-terms.md +0 -137
- package/dist-skill/docs/API/core/sdf.md +0 -326
- package/dist-skill/docs/API/core/skill-cli.md +0 -194
- package/dist-skill/docs/API/core/skill-guide.md +0 -205
- package/dist-skill/docs/API/core/specs.md +0 -186
- package/dist-skill/docs/API/core/topology.md +0 -372
- package/dist-skill/docs/API/entities.md +0 -268
- package/dist-skill/docs/API/output/bom.md +0 -58
- package/dist-skill/docs/API/output/brep-export.md +0 -87
- package/dist-skill/docs/API/output/dimensions.md +0 -67
- package/dist-skill/docs/API/output/export.md +0 -110
- package/dist-skill/docs/API/output/gcode.md +0 -195
- package/dist-skill/docs/API/runtime/viewport.md +0 -420
- package/dist-skill/docs/API/sheet-metal/sheet-metal.md +0 -185
- package/dist-skill/docs/API/sketch/anchor.md +0 -37
- package/dist-skill/docs/API/sketch/booleans.md +0 -91
- package/dist-skill/docs/API/sketch/core.md +0 -73
- package/dist-skill/docs/API/sketch/extrude.md +0 -62
- package/dist-skill/docs/API/sketch/on-face.md +0 -104
- package/dist-skill/docs/API/sketch/operations.md +0 -78
- package/dist-skill/docs/API/sketch/path.md +0 -75
- package/dist-skill/docs/API/sketch/primitives.md +0 -146
- package/dist-skill/docs/API/sketch/regions.md +0 -80
- package/dist-skill/docs/API/sketch/text.md +0 -108
- package/dist-skill/docs/API/sketch/transforms.md +0 -65
- package/dist-skill/docs/API/toolbox/fasteners.md +0 -129
- package/dist-skill/docs/CLI.md +0 -865
- package/dist-skill/docs/INDEX.md +0 -94
- package/dist-skill/docs/RELEASING.md +0 -55
- package/dist-skill/docs/cli-monetization.md +0 -111
- package/dist-skill/docs/deployment.md +0 -281
- package/dist-skill/docs/generated/concepts.md +0 -2112
- package/dist-skill/docs/internals/shape-from-slices.md +0 -152
- package/dist-skill/docs/platform/admin.md +0 -45
- package/dist-skill/docs/platform/architecture.md +0 -79
- package/dist-skill/docs/platform/auth.md +0 -110
- package/dist-skill/docs/platform/email.md +0 -67
- package/dist-skill/docs/platform/projects.md +0 -111
- package/dist-skill/docs/platform/sharing.md +0 -90
- package/dist-skill/docs/runbook.md +0 -345
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
skill-group: cli
|
|
3
|
+
skill-order: 1
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ForgeCAD CLI: Projects & Setup
|
|
7
|
+
|
|
8
|
+
## Install
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npm install -g forgecad
|
|
12
|
+
# Developers working on ForgeCAD itself:
|
|
13
|
+
npm install && npm link
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## When to use what
|
|
17
|
+
|
|
18
|
+
| Context | Use |
|
|
19
|
+
|---------|-----|
|
|
20
|
+
| Using ForgeCAD as a tool | `forgecad *` commands |
|
|
21
|
+
| Developing ForgeCAD itself | `npm run dev` / `npm run build` |
|
|
22
|
+
| CI / publishing | `npm run build && npm run test:full` |
|
|
23
|
+
|
|
24
|
+
## Dev vs production server
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
forgecad dev [path] # Vite dev server, live reload
|
|
28
|
+
forgecad studio [path] # Static server for production build (requires dist/)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Both accept `--blank`, `--port <n>`, `--host`, `--open`, `--strict-port`.
|
|
32
|
+
|
|
33
|
+
## Licensing
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
forgecad license # Show license status
|
|
37
|
+
forgecad license activate <key> # Activate a Pro license key
|
|
38
|
+
forgecad license deactivate # Remove license
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
| Tier | Included |
|
|
42
|
+
|------|----------|
|
|
43
|
+
| Free | dev, studio, run, render, export stl/3mf/svg, all checks, debug |
|
|
44
|
+
| Pro | export step/brep, render-hq, capture gif/mp4, gcode, report, cutting-layout, sdf, urdf, sketch-pdf |
|
|
45
|
+
|
|
46
|
+
## Authentication
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
forgecad login # Interactive login
|
|
50
|
+
forgecad login --server http://localhost:5174
|
|
51
|
+
forgecad logout
|
|
52
|
+
forgecad whoami # Show user, server, and license status
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Credentials stored in `~/.forgecad/auth.json`.
|
|
56
|
+
|
|
57
|
+
## Project Management
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
forgecad project init "My Project" # Create on server + link current directory
|
|
61
|
+
forgecad project clone my-project # Download into ./my-project/
|
|
62
|
+
forgecad project push [--force] # Upload local changes
|
|
63
|
+
forgecad project pull [--force] # Download remote changes
|
|
64
|
+
forgecad project status # Show local vs remote diff
|
|
65
|
+
forgecad project list
|
|
66
|
+
forgecad project info
|
|
67
|
+
forgecad project rename "New Name"
|
|
68
|
+
forgecad project set-visibility public # private|shared|public
|
|
69
|
+
forgecad project delete [--force]
|
|
70
|
+
forgecad project open
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Projects are linked to remote via `forgecad.json`.
|
|
74
|
+
|
|
75
|
+
## File Management (Remote)
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
forgecad file list [path]
|
|
79
|
+
forgecad file read <path>
|
|
80
|
+
forgecad file save <path> # Upload local file
|
|
81
|
+
forgecad file save <path> --content "code here"
|
|
82
|
+
cat model.forge.js | forgecad file save model.forge.js --stdin
|
|
83
|
+
forgecad file delete <path> [--force]
|
|
84
|
+
forgecad file rename <old> <new>
|
|
85
|
+
forgecad file mkdir <path>
|
|
86
|
+
forgecad file copy <source-slug> <path> [--dest <dest-path>]
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Requires the current directory to have `forgecad.json`.
|
|
90
|
+
|
|
91
|
+
## Member Management
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
forgecad project members
|
|
95
|
+
forgecad project add-member alice@example.com # editor by default
|
|
96
|
+
forgecad project add-member bob@example.com --role viewer
|
|
97
|
+
forgecad project remove-member alice@example.com
|
|
98
|
+
forgecad project set-role bob@example.com editor
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Roles: **owner** (full control), **editor** (read/write), **viewer** (read-only).
|
|
102
|
+
|
|
103
|
+
## Shell Autocomplete
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
forgecad completion bash # or zsh / fish
|
|
107
|
+
```
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
skill-group: cli
|
|
3
|
+
skill-order: 4
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ForgeCAD CLI: Studio & Publishing
|
|
7
|
+
|
|
8
|
+
## Studio & Dev Server
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
forgecad dev [path] [--blank] [--port n] [--host] [--open] # Vite dev server
|
|
12
|
+
forgecad studio [path] [--blank] [--port n] # Production static server
|
|
13
|
+
forgecad web [--open] # Web/embeddable mode
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
`forgecad open` is an alias for `forgecad studio`.
|
|
17
|
+
|
|
18
|
+
## New File from Template
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
forgecad new mypart # Part template (default)
|
|
22
|
+
forgecad new bracket --template sketch # Constrained sketch template
|
|
23
|
+
forgecad new robot --template assembly # Multi-part assembly template
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Publishing & Sharing
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
forgecad publish model.forge.js --title "My Model" # Publish; get shareable URL
|
|
30
|
+
forgecad publish model.forge.js --no-sync # Publish without auto-pushing
|
|
31
|
+
forgecad shares list # List all published models
|
|
32
|
+
forgecad shares delete <share-id> [--force]
|
|
33
|
+
forgecad link <gist-url-or-id> # Share link from GitHub Gist
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Published at `forgecad.io/m/<shareId>`. Shares are live references — always reflect current version, not a snapshot. Requires a project directory (`forgecad.json`).
|
|
37
|
+
|
|
38
|
+
## Adding New CLI Commands
|
|
39
|
+
|
|
40
|
+
1. Create/extend a module under `cli/`
|
|
41
|
+
2. Import from `../src/forge/headless`; call `await init()` then `runScript(code, fileName, allFiles)`
|
|
42
|
+
3. Register in `cli/forgecad.ts`
|
|
43
|
+
|
|
44
|
+
Pass all project files (keyed by project-relative path) to `runScript` when using `require()` / `importSvgSketch()`. Use `require("./file.forge.js", { Param: value })` for model files; `importSvgSketch()` for SVG assets.
|
|
45
|
+
|
|
46
|
+
## Local Branch Cleanup
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
uv run cli/forge-prune-local-branches.py [--dry-run] [--base mainline]
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Finds merged local branches with no matching remote, prompts before deleting. Removes linked worktrees first when a branch is checked out there.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
skill-group: cli
|
|
3
|
+
skill-order: 2
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ForgeCAD CLI: Validation & Debugging
|
|
7
|
+
|
|
8
|
+
## Script Validation
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
forgecad run examples/cup.forge.js
|
|
12
|
+
forgecad run examples/cup.forge.js --debug-imports
|
|
13
|
+
forgecad run examples/cup.forge.js --param "Wall Thickness=3"
|
|
14
|
+
forgecad run examples/cup.forge.js --param "Show Lid=0"
|
|
15
|
+
forgecad run examples/cup.forge.js --param "Pan Style=wok"
|
|
16
|
+
forgecad run examples/constraints/06-complex-spectrogram.forge.js --solver-debug-out tmp/spectrogram-debug
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
`--param "Key=Value"` overrides: numeric, boolean (`1`/`0`), or string (displayed label) params.
|
|
20
|
+
|
|
21
|
+
`--debug-imports` prints source file, target file, overrides, return type, and success/error phase.
|
|
22
|
+
|
|
23
|
+
`--solver-debug-out <dir>` writes a per-sketch constructive transcript + SVG snapshots bundle.
|
|
24
|
+
|
|
25
|
+
## Parameter Validation
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
forgecad check params examples/shoe-rack-doors.forge.js [--samples 10]
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Samples each parameter across its range; checks runtime errors, degenerate geometry (volume~0), and new collisions. `--samples N` (default 8).
|
|
32
|
+
|
|
33
|
+
## Check Commands
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
forgecad check transforms # Math-level transform/frame composition invariants
|
|
37
|
+
forgecad check compiler [--case <name>] [--update] # Compiler regression snapshots
|
|
38
|
+
forgecad check query-propagation [--update] # Topology-rewrite propagation snapshots
|
|
39
|
+
forgecad check examples [--family <f>] [--example <path>] # Checked example manifest
|
|
40
|
+
forgecad check suite # Full invariant suite (CI / release gate)
|
|
41
|
+
forgecad check suite --profile local # Faster local invariant suite
|
|
42
|
+
forgecad check dimensions # Shape dimension propagation invariants
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Invariant Test Suite
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npm test # Faster local invariant suite
|
|
49
|
+
npm run test:full # Full invariant suite
|
|
50
|
+
npm run test:examples # Example architecture gate
|
|
51
|
+
npm run test:compiler # Compiler snapshot suite
|
|
52
|
+
npm run test:compiler:update # Refresh compiler snapshots after intentional change
|
|
53
|
+
npm run test:query-propagation
|
|
54
|
+
npm run test:query-propagation:update
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Debug Commands
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
forgecad debug dimensions /path/to/file.forge.js [--all] [--dim-angle-tol 12]
|
|
61
|
+
forgecad debug compiler /path/to/file.forge.js [--compact]
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
`debug dimensions` prints total/per-view dimension counts, ownership routing, and coordinate list.
|
|
65
|
+
|
|
66
|
+
`debug compiler` prints JSON with compile plans, CadQuery/OCCT lowering diagnostics, faceted fallback eligibility, and runtime/compiler Manifold summaries.
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
skill-group: dev-conventions
|
|
3
3
|
skill-order: 1
|
|
4
|
-
skill-tiers: [dev]
|
|
5
4
|
---
|
|
6
5
|
|
|
7
6
|
# Coding Best Practices
|
|
@@ -88,18 +87,17 @@ Biome runs as part of `forgecad check suite`. Configuration lives in `biome.json
|
|
|
88
87
|
Public API method names must read like natural English. Prefer verbose, intuitive names over short, ambiguous ones. The method name alone should tell you exactly what it does — no options objects or magic strings needed to disambiguate.
|
|
89
88
|
|
|
90
89
|
```ts
|
|
91
|
-
// BAD — ambiguous:
|
|
90
|
+
// BAD — ambiguous: which axis? what angle?
|
|
92
91
|
shape.rotate(45, 0, 0)
|
|
93
92
|
// BAD — technical jargon, not a sentence
|
|
94
93
|
shape.rotateAxisAngle([0,1,0], 45)
|
|
95
|
-
// BAD — options bag to disambiguate
|
|
96
|
-
shape.rotate(45, 0, 0, { around: 'center' })
|
|
97
94
|
|
|
98
95
|
// GOOD — reads like a sentence
|
|
99
|
-
shape.
|
|
100
|
-
shape.
|
|
101
|
-
shape.
|
|
102
|
-
shape.
|
|
96
|
+
shape.rotateX(45) // "rotate X 45 degrees"
|
|
97
|
+
shape.rotateY(45) // "rotate Y 45 degrees"
|
|
98
|
+
shape.rotateZ(45) // "rotate Z 45 degrees"
|
|
99
|
+
shape.rotate([0, 1, 0], 45) // "rotate around axis"
|
|
100
|
+
shape.rotateZ(45, { pivot: [10, 0, 0] }) // "rotate Z at pivot"
|
|
103
101
|
|
|
104
102
|
shape.scale(2) // "scale by 2" (from center)
|
|
105
103
|
shape.scaleAround(pivot, 2) // "scale around pivot"
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
skill-group: dev-conventions
|
|
3
3
|
skill-order: 2
|
|
4
|
-
skill-tiers: [dev]
|
|
5
4
|
---
|
|
6
5
|
|
|
7
6
|
# ForgeCAD Coding Guidelines
|
|
@@ -308,8 +307,7 @@ Before committing UI changes:
|
|
|
308
307
|
2. Export from `headless.ts`
|
|
309
308
|
3. Add to runner sandbox in `src/forge/runner.ts`
|
|
310
309
|
4. Add TypeScript hints in `src/components/CodeEditor.tsx`
|
|
311
|
-
5.
|
|
312
|
-
6. Commit: "Add [primitive] 3D primitive"
|
|
310
|
+
5. Commit: "Add [primitive] 3D primitive"
|
|
313
311
|
|
|
314
312
|
### Adding a New CLI Command
|
|
315
313
|
1. Create `cli/your-command.ts`
|