forgecad 0.10.2 → 0.10.4
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 +7 -6
- package/dist/assets/{AdminPage-CHY6ZN-p.js → AdminPage-B3L3W1Uo.js} +1 -1
- package/dist/assets/{BenchmarkPage-BcRT5iGN.js → BenchmarkPage-DXKVXMrJ.js} +2 -2
- package/dist/assets/{BlogPage-BssBbnb-.js → BlogPage-B7BWxOCg.js} +1 -1
- package/dist/assets/{DocsPage-DsvdiRNK.js → DocsPage-BPGGwht1.js} +28 -48
- package/dist/assets/{EditorApp-Bfd3jbtC.js → EditorApp-BWUGCdD5.js} +183 -21
- package/dist/assets/{EditorApp-BpjZgzk0.css → EditorApp-C5f24ZN9.css} +8 -0
- package/dist/assets/{EmbedViewer-D5t8WamV.js → EmbedViewer-DygByZS2.js} +2 -2
- package/dist/assets/{LandingPageProofDriven-DbN7o-Be.js → LandingPageProofDriven-BoVE7JGY.js} +54 -36
- package/dist/assets/{LegalPage-DNGrrY0p.js → LegalPage-Din8wv8d.js} +2 -2
- package/dist/assets/{PricingPage-Nczr3pRz.js → PricingPage-C2PMzmDc.js} +2 -2
- package/dist/assets/{SettingsPage-DZlyu4d4.js → SettingsPage-BlJDCRe8.js} +1 -1
- package/dist/assets/{app-C9ct2hRD.js → app-BsRYSfxY.js} +2264 -6259
- package/dist/assets/{backendInit-ymjonyQp.js → backendInit-6C0DLgH0.js} +8290 -2136
- package/dist/assets/cli/{render-B_0lQwKU.js → render-XXol_ET7.js} +822 -105
- package/dist/assets/{constructionHistoryWorker-CZ42Dksy.js → constructionHistoryWorker-cTHWRJEi.js} +699 -284
- package/dist/assets/{evalWorker-C2pm8LHP.js → evalWorker-BssDYW9u.js} +2559 -1330
- package/dist/assets/{forgecad_geometry-BlMtqluF.js → forgecad_geometry-CZ_IfuvA.js} +1 -9
- package/dist/assets/{forgecad_geometry_bg-BllP_WiL.wasm → forgecad_geometry_bg-C3rQHfwg.wasm} +0 -0
- package/dist/assets/{inspectWorker-D5T5VbfK.js → inspectWorker-ymhBV4Ll.js} +6254 -671
- package/dist/assets/{jointPose-4r8ed8_5.js → jointPose-B0blBj9A.js} +1 -1
- package/dist/assets/{landing-proof-driven-ORyigZ6p.css → landing-proof-driven-Cpf-MIbI.css} +73 -13
- package/dist/assets/{manifold-5PP1eGLN.js → manifold-B_7QXpGB.js} +1 -1
- package/dist/assets/{manifold-DjBkyIc8.js → manifold-CNShmpEJ.js} +1 -1
- package/dist/assets/{manifold-C4r6B-XY.js → manifold-CYlIm-M6.js} +2 -2
- package/dist/assets/{reportWorker-CwenM7wB.js → reportWorker-Cb5eyM7D.js} +2485 -1275
- package/dist/cli/render.html +1 -1
- package/dist/docs/index.html +2 -2
- package/dist/docs-raw/AI/usage.md +17 -17
- package/dist/docs-raw/CLI.md +9 -7
- package/dist/docs-raw/README.md +1 -1
- package/dist/docs-raw/component-model.md +2 -2
- package/dist/docs-raw/generated/assembly.md +1 -1
- package/dist/docs-raw/generated/concepts.md +10 -4
- package/dist/docs-raw/generated/core.md +96 -1
- package/dist/docs-raw/generated/curves.md +8 -1
- package/dist/docs-raw/generated/output.md +0 -64
- package/dist/docs-raw/generated/runtime-names.md +6 -6
- package/dist/docs-raw/generated/viewport.md +3 -12
- package/dist/docs-raw/guides/inspection-bundles.md +1 -1
- package/dist/docs-raw/simulation-workflow.md +58 -0
- package/{dist-skill/website/skills/forgecad-make-a-model.md → dist/docs-raw/skills/forgecad-build-model.md} +18 -8
- package/dist/docs-raw/skills/forgecad-design-spec.md +145 -0
- package/dist/docs-raw/skills/{forgecad-model-grader.md → forgecad-grade-model.md} +8 -6
- package/{dist-skill/website/skills/forgecad-visual-spec.md → dist/docs-raw/skills/forgecad-image-prompt.md} +7 -7
- package/dist/docs-raw/skills/{forgecad-render-inspect.md → forgecad-inspect-model.md} +6 -6
- package/{dist-skill/website/skills/forgecad-project.md → dist/docs-raw/skills/forgecad-project-sync.md} +5 -5
- package/{dist-skill/website/skills/forgecad-3d-reconstruction.md → dist/docs-raw/skills/forgecad-reconstruct-cad-file.md} +7 -7
- package/dist/docs-raw/skills/{forgecad-image-replicator.md → forgecad-reconstruct-from-images.md} +12 -12
- package/dist/docs-raw/skills/forgecad-verify-mujoco.md +78 -0
- package/dist/docs-raw/skills/forgecad.md +24 -24
- package/dist/docs-raw/skills/index.md +9 -13
- package/dist/index.html +9 -9
- package/dist/llms.txt +7 -7
- package/dist/sitemap.xml +16 -16
- package/dist-cli/{check-compiler-SP7FAL7R.js → check-compiler-4RPB6SB5.js} +1 -1
- package/dist-cli/{check-query-propagation-BRLSHP22.js → check-query-propagation-KN3DFQTX.js} +1 -1
- package/dist-cli/{chunk-RQQ42YCP.js → chunk-UHBRMYA6.js} +30770 -29253
- package/dist-cli/forgecad.js +3277 -237
- package/dist-cli/{forgecad_geometry-7TVSNVUB.js → forgecad_geometry-2IMYCUWW.js} +0 -8
- package/dist-cli/forgecad_geometry_bg.wasm +0 -0
- package/dist-skill/CONTEXT.md +111 -73
- package/dist-skill/SKILL.md +1 -1
- package/dist-skill/docs/CLI.md +9 -7
- package/dist-skill/docs/generated/assembly.md +1 -1
- package/dist-skill/docs/generated/core.md +96 -1
- package/dist-skill/docs/generated/curves.md +8 -1
- package/dist-skill/docs/generated/output.md +0 -64
- package/dist-skill/docs/generated/runtime-names.md +6 -6
- package/dist-skill/docs/generated/viewport.md +3 -12
- package/dist-skill/docs/guides/inspection-bundles.md +1 -1
- package/dist-skill/library/README.md +9 -13
- package/dist-skill/library/{forgecad-make-a-model → forgecad-build-model}/SKILL.md +16 -6
- package/dist-skill/library/forgecad-design-spec/SKILL.md +132 -0
- package/dist-skill/library/{forgecad-prepare-prompt → forgecad-design-spec}/references/master-prompt.md +1 -1
- package/dist-skill/library/{forgecad-model-grader → forgecad-grade-model}/SKILL.md +6 -4
- package/dist-skill/library/forgecad-grade-model/agents/openai.yaml +4 -0
- package/dist-skill/library/{forgecad-visual-spec → forgecad-image-prompt}/SKILL.md +5 -5
- package/dist-skill/library/forgecad-image-prompt/agents/openai.yaml +4 -0
- package/dist-skill/library/{forgecad-render-inspect → forgecad-inspect-model}/SKILL.md +4 -4
- package/dist-skill/library/{forgecad-project → forgecad-project-sync}/SKILL.md +3 -3
- package/dist-skill/library/{forgecad-3d-reconstruction → forgecad-reconstruct-cad-file}/SKILL.md +5 -5
- package/dist-skill/library/forgecad-reconstruct-cad-file/agents/openai.yaml +4 -0
- package/dist-skill/library/{forgecad-image-replicator → forgecad-reconstruct-from-images}/SKILL.md +10 -10
- package/dist-skill/library/forgecad-reconstruct-from-images/agents/openai.yaml +4 -0
- package/dist-skill/library/forgecad-verify-mujoco/SKILL.md +66 -0
- package/dist-skill/library/forgecad-verify-mujoco/scripts/mujoco_verify.py +385 -0
- package/{dist/docs-raw/skills/forgecad-make-a-model.md → dist-skill/website/skills/forgecad-build-model.md} +18 -8
- package/dist-skill/website/skills/forgecad-design-spec.md +145 -0
- package/dist-skill/website/skills/{forgecad-model-grader.md → forgecad-grade-model.md} +8 -6
- package/{dist/docs-raw/skills/forgecad-visual-spec.md → dist-skill/website/skills/forgecad-image-prompt.md} +7 -7
- package/dist-skill/website/skills/{forgecad-render-inspect.md → forgecad-inspect-model.md} +6 -6
- package/{dist/docs-raw/skills/forgecad-project.md → dist-skill/website/skills/forgecad-project-sync.md} +5 -5
- package/{dist/docs-raw/skills/forgecad-3d-reconstruction.md → dist-skill/website/skills/forgecad-reconstruct-cad-file.md} +7 -7
- package/dist-skill/website/skills/{forgecad-image-replicator.md → forgecad-reconstruct-from-images.md} +12 -12
- package/dist-skill/website/skills/forgecad-verify-mujoco.md +78 -0
- package/dist-skill/website/skills/forgecad.md +24 -24
- package/dist-skill/website/skills/index.md +9 -13
- package/examples/analysis/clearance-fit.forge.js +31 -0
- package/examples/analysis/lever-arm-actuator.forge.js +43 -0
- package/examples/analysis/tipping-tripod.forge.js +35 -0
- package/examples/api/texture-projection.forge.js +75 -0
- package/examples/assets/uv-grid.png +0 -0
- package/examples/products/sportscar.forge.js +77 -0
- package/package.json +1 -3
- package/dist/docs-raw/skills/forgecad-blockout-model.md +0 -49
- package/dist/docs-raw/skills/forgecad-component-model.md +0 -53
- package/dist/docs-raw/skills/forgecad-high-level-spec.md +0 -101
- package/dist/docs-raw/skills/forgecad-lld.md +0 -41
- package/dist/docs-raw/skills/forgecad-prepare-prompt.md +0 -63
- package/dist/docs-raw/skills/forgecad-reconstruction-benchmark.md +0 -60
- package/dist-skill/library/forgecad-3d-reconstruction/agents/openai.yaml +0 -4
- package/dist-skill/library/forgecad-blockout-model/SKILL.md +0 -42
- package/dist-skill/library/forgecad-component-model/SKILL.md +0 -46
- package/dist-skill/library/forgecad-high-level-spec/SKILL.md +0 -94
- package/dist-skill/library/forgecad-image-replicator/agents/openai.yaml +0 -4
- package/dist-skill/library/forgecad-lld/SKILL.md +0 -34
- package/dist-skill/library/forgecad-model-grader/agents/openai.yaml +0 -4
- package/dist-skill/library/forgecad-prepare-prompt/SKILL.md +0 -50
- package/dist-skill/library/forgecad-reconstruction-benchmark/SKILL.md +0 -48
- package/dist-skill/library/forgecad-reconstruction-benchmark/agents/openai.yaml +0 -4
- package/dist-skill/library/forgecad-visual-spec/agents/openai.yaml +0 -4
- package/dist-skill/website/skills/forgecad-blockout-model.md +0 -49
- package/dist-skill/website/skills/forgecad-component-model.md +0 -53
- package/dist-skill/website/skills/forgecad-high-level-spec.md +0 -101
- package/dist-skill/website/skills/forgecad-lld.md +0 -41
- package/dist-skill/website/skills/forgecad-prepare-prompt.md +0 -63
- package/dist-skill/website/skills/forgecad-reconstruction-benchmark.md +0 -60
- /package/dist/assets/{landing-proof-driven-DiGqdtWa.js → landing-proof-driven-BxZZh5r5.js} +0 -0
- /package/dist-skill/library/{forgecad-prepare-prompt → forgecad-design-spec}/references/default-profiles.md +0 -0
- /package/dist-skill/library/{forgecad-render-inspect → forgecad-inspect-model}/summarize_manifest.py +0 -0
- /package/dist-skill/library/{forgecad-image-replicator → forgecad-reconstruct-from-images}/scripts/compare_images.py +0 -0
|
@@ -227,6 +227,13 @@
|
|
|
227
227
|
line-height: 1.3;
|
|
228
228
|
}
|
|
229
229
|
|
|
230
|
+
.fc-view-panel-control-block {
|
|
231
|
+
display: flex;
|
|
232
|
+
flex-direction: column;
|
|
233
|
+
gap: 6px;
|
|
234
|
+
min-width: 0;
|
|
235
|
+
}
|
|
236
|
+
|
|
230
237
|
.fc-view-panel-floating-tooltip {
|
|
231
238
|
position: fixed;
|
|
232
239
|
box-sizing: border-box;
|
|
@@ -350,6 +357,7 @@
|
|
|
350
357
|
}
|
|
351
358
|
|
|
352
359
|
.fc-view-panel-control-block + .fc-view-panel-control-block,
|
|
360
|
+
.fc-view-panel-control-block + .fc-view-panel-button-grid,
|
|
353
361
|
.fc-view-panel-button-grid + .fc-view-panel-button-grid,
|
|
354
362
|
.fc-view-panel-button-grid + .fc-view-panel-control-block,
|
|
355
363
|
.fc-view-panel-row + .fc-view-panel-row,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "./vendor-react-6j1Kke-Y.js";
|
|
2
|
-
import {
|
|
3
|
-
import { g as useForgeStore,
|
|
2
|
+
import { c_ as initBackendForEvaluation } from "./backendInit-6C0DLgH0.js";
|
|
3
|
+
import { g as useForgeStore, au as getExternalUrl, av as getGistId, n as fetchUrlModel, l as fetchGistModel, aA as buildShareUrl, B as BrandMark, aw as Viewport } from "./app-BsRYSfxY.js";
|
|
4
4
|
function EmbedViewer() {
|
|
5
5
|
const kernelReady = useForgeStore((s) => s.kernelReady);
|
|
6
6
|
const setKernelReady = useForgeStore((s) => s.setKernelReady);
|
package/dist/assets/{LandingPageProofDriven-DbN7o-Be.js → LandingPageProofDriven-BoVE7JGY.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports, L as Link } from "./vendor-react-6j1Kke-Y.js";
|
|
2
|
-
import { B as BrandMark } from "./app-
|
|
2
|
+
import { B as BrandMark } from "./app-BsRYSfxY.js";
|
|
3
3
|
import { L as LEGAL_COPYRIGHT_NOTICE, a as LEGAL_LINKS } from "./legalContent-ZfFGMmi4.js";
|
|
4
|
-
import { u as usePageBackground } from "./landing-proof-driven-
|
|
4
|
+
import { u as usePageBackground } from "./landing-proof-driven-BxZZh5r5.js";
|
|
5
5
|
const LINKS = {
|
|
6
6
|
glasses: {
|
|
7
7
|
share: "https://forgecad.io/m/etXaJYSZF4",
|
|
@@ -24,6 +24,24 @@ const LINKS = {
|
|
|
24
24
|
embed: "https://forgecad.io/m/E5gK32twac?embed=1"
|
|
25
25
|
}
|
|
26
26
|
};
|
|
27
|
+
const WORKFLOW_LANES = [
|
|
28
|
+
{
|
|
29
|
+
title: "Real products",
|
|
30
|
+
detail: "Adapters, enclosures, fixtures, jigs, mechanisms, and custom product components."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
title: "Manufacturing components",
|
|
34
|
+
detail: "Parametric parts with checks, reports, and STEP, STL, and 3MF export paths."
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
title: "Robotics and simulation",
|
|
38
|
+
detail: "Assemblies, joints, colliders, variants, and source-authored simulation metadata."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
title: "AI training assets",
|
|
42
|
+
detail: "Generate controlled physical model variants for spatial reasoning and robot workflows."
|
|
43
|
+
}
|
|
44
|
+
];
|
|
27
45
|
const CODE_AMS = `// AMS Lite Spool Adapter (74.5mm to 55mm)
|
|
28
46
|
// Features compressible arms and snap-fit teeth
|
|
29
47
|
|
|
@@ -202,17 +220,12 @@ function LandingPageProofDriven() {
|
|
|
202
220
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-hero-grid", children: [
|
|
203
221
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-hero-copy", children: [
|
|
204
222
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
205
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "lpd-eyebrow", children: "AI-Native
|
|
223
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "lpd-eyebrow", children: "AI-Native Physical Design" }),
|
|
206
224
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("h1", { children: [
|
|
207
|
-
"AI-
|
|
208
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "
|
|
209
|
-
] }),
|
|
210
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "lpd-hero-lead", children: [
|
|
211
|
-
"Turn prompts, product ideas, and feedback into editable parametric CAD. Every model on this page is a real",
|
|
212
|
-
" ",
|
|
213
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: ".forge.js" }),
|
|
214
|
-
" file an agent can revise, validate, inspect, and export for manufacturing."
|
|
225
|
+
"AI-native CAD ",
|
|
226
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "for real products and robotics." })
|
|
215
227
|
] }),
|
|
228
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "lpd-hero-lead", children: "ForgeCAD helps you and AI agents create editable parametric models for products, manufacturing components, robotics simulation, and AI training data, with validation checks and STEP/STL/3MF exports built in." }),
|
|
216
229
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-hero-actions", children: [
|
|
217
230
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Link, { to: "/app", className: "lpd-button lpd-button-primary", children: "Open ForgeCAD" }),
|
|
218
231
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Link, { to: "/docs/welcome", className: "lpd-button lpd-button-secondary", children: "Start Here" })
|
|
@@ -220,16 +233,16 @@ function LandingPageProofDriven() {
|
|
|
220
233
|
] }),
|
|
221
234
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-hero-facts", children: [
|
|
222
235
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-fact", children: [
|
|
223
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "
|
|
224
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "
|
|
236
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "Real products" }),
|
|
237
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Adapters, enclosures, fixtures, mechanisms, and standard components." })
|
|
225
238
|
] }),
|
|
226
239
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-fact", children: [
|
|
227
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "
|
|
228
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "
|
|
240
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "Simulation assets" }),
|
|
241
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Assemblies, joints, colliders, robot packages, and controlled variants." })
|
|
229
242
|
] }),
|
|
230
243
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-fact", children: [
|
|
231
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "
|
|
232
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "STL, 3MF,
|
|
244
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "Validated export" }),
|
|
245
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Inspection evidence plus STEP, STL, 3MF, reports, and print checks." })
|
|
233
246
|
] })
|
|
234
247
|
] })
|
|
235
248
|
] }),
|
|
@@ -256,13 +269,17 @@ function LandingPageProofDriven() {
|
|
|
256
269
|
] })
|
|
257
270
|
] })
|
|
258
271
|
] }),
|
|
272
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "lpd-workflow-lanes", "aria-label": "ForgeCAD workflow lanes", children: WORKFLOW_LANES.map((lane) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-workflow-lane", children: [
|
|
273
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: lane.title }),
|
|
274
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: lane.detail })
|
|
275
|
+
] }, lane.title)) }),
|
|
259
276
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-artifact-strip", children: [
|
|
260
277
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("a", { className: "lpd-artifact-card", href: LINKS.ams.share, target: "_blank", rel: "noopener noreferrer", children: [
|
|
261
278
|
/* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: "/landing/proof-ams-adapter.png", alt: "Rendered AMS Lite spool adapter" }),
|
|
262
279
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-artifact-copy", children: [
|
|
263
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "lpd-source-tag", children: "Printed
|
|
280
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "lpd-source-tag", children: "Printed Product" }),
|
|
264
281
|
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "AMS Lite adapter" }),
|
|
265
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "
|
|
282
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Parametric spool adapter with flexible arms and snap-fit teeth. Printed and in daily use." }),
|
|
266
283
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "lpd-source-tag", children: "ams_lite_adapter.forge.js" })
|
|
267
284
|
] })
|
|
268
285
|
] }),
|
|
@@ -271,7 +288,7 @@ function LandingPageProofDriven() {
|
|
|
271
288
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-artifact-copy", children: [
|
|
272
289
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "lpd-source-tag", children: "Everyday Mechanical" }),
|
|
273
290
|
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "Filleted enclosure" }),
|
|
274
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Shell, cavity subtraction, screw bosses, edge fillets
|
|
291
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Shell, cavity subtraction, screw bosses, and edge fillets for a normal product component." }),
|
|
275
292
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "lpd-source-tag", children: "fillet-enclosure.forge.js" })
|
|
276
293
|
] })
|
|
277
294
|
] }),
|
|
@@ -280,25 +297,26 @@ function LandingPageProofDriven() {
|
|
|
280
297
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-artifact-copy", children: [
|
|
281
298
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "lpd-source-tag", children: "Standard Parts" }),
|
|
282
299
|
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "Bolt and nut" }),
|
|
283
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Helical threads from the part library
|
|
300
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Helical threads from the part library for reusable mechanical assemblies." }),
|
|
284
301
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "lpd-source-tag", children: "bolt-and-nut.forge.js" })
|
|
285
302
|
] })
|
|
286
303
|
] }),
|
|
287
304
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("a", { className: "lpd-artifact-card", href: LINKS.gyroid.share, target: "_blank", rel: "noopener noreferrer", children: [
|
|
288
305
|
/* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: "/landing/proof-gyroid.png", alt: "Rendered gyroid sphere" }),
|
|
289
306
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-artifact-copy", children: [
|
|
290
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "lpd-source-tag", children: "
|
|
307
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "lpd-source-tag", children: "Training Assets" }),
|
|
291
308
|
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "Gyroid sphere" }),
|
|
292
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "
|
|
309
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "Controlled SDF geometry for printable lattices, simulation scenes, and generated model variants." }),
|
|
293
310
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "lpd-source-tag", children: "gyroid.forge.js" })
|
|
294
311
|
] })
|
|
295
312
|
] })
|
|
296
313
|
] }),
|
|
297
314
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-capability-band", children: [
|
|
298
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "AI
|
|
299
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "
|
|
315
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "AI-authored product models" }),
|
|
316
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Manufacturing components" }),
|
|
317
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Robotics and simulation assets" }),
|
|
318
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Spatial reasoning training data" }),
|
|
300
319
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Manufacturing feedback and inspection" }),
|
|
301
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Live parameter sliders" }),
|
|
302
320
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Assemblies and connectors" }),
|
|
303
321
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "STEP, STL, 3MF, reports" })
|
|
304
322
|
] })
|
|
@@ -369,17 +387,17 @@ function LandingPageProofDriven() {
|
|
|
369
387
|
{
|
|
370
388
|
number: "04",
|
|
371
389
|
title: "SDF and solid modeling in one language.",
|
|
372
|
-
description: "Signed distance fields let you
|
|
390
|
+
description: "Signed distance fields let you generate organic forms, controlled lattice variants, and printable solids from the same physical-design workflow.",
|
|
373
391
|
codeFile: "gyroid.forge.js",
|
|
374
392
|
codeLabel: "SDF + solid output",
|
|
375
393
|
code: CODE_GYROID,
|
|
376
394
|
imageSrc: "/landing/proof-gyroid.png",
|
|
377
395
|
imageAlt: "Rendered gyroid sphere",
|
|
378
|
-
visualDescription: "Seven lines of
|
|
396
|
+
visualDescription: "Seven lines of source produce a gyroid lattice intersected with a sphere, useful as a printable part or a generated simulation asset.",
|
|
379
397
|
facts: [
|
|
380
398
|
{ title: "7 lines of model code", detail: "Enough to explain the result." },
|
|
381
399
|
{ title: "44 x 44 x 44 mm", detail: "Measured render bounds." },
|
|
382
|
-
{ title: "One
|
|
400
|
+
{ title: "One workflow", detail: "SDF, solids, validation, and export together." }
|
|
383
401
|
],
|
|
384
402
|
linkKey: "gyroid"
|
|
385
403
|
}
|
|
@@ -387,9 +405,9 @@ function LandingPageProofDriven() {
|
|
|
387
405
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "lpd-section-break" }),
|
|
388
406
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: "lpd-cli", children: [
|
|
389
407
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-cli-header", children: [
|
|
390
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "lpd-eyebrow", children: "
|
|
391
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { children: "Generate. Validate.
|
|
392
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "ForgeCAD runs anywhere Node does.
|
|
408
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "lpd-eyebrow", children: "Validation Loop" }),
|
|
409
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { children: "Generate. Validate. Export physical models." }),
|
|
410
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "ForgeCAD runs anywhere Node does. Let an AI coding agent edit the model, then use deterministic commands to gather evidence before you manufacture a part, publish a product component, or export assets for robotics and simulation workflows." })
|
|
393
411
|
] }),
|
|
394
412
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-cli-steps", children: [
|
|
395
413
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-cli-step", children: [
|
|
@@ -457,7 +475,7 @@ function LandingPageProofDriven() {
|
|
|
457
475
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { children: [
|
|
458
476
|
"Install the ForgeCAD skill library (",
|
|
459
477
|
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: "forgecad skill install" }),
|
|
460
|
-
") and your AI coding agent gets
|
|
478
|
+
") and your AI coding agent gets the product, manufacturing, and simulation vocabulary it needs. It writes the source model; the CLI validates and exports it."
|
|
461
479
|
] })
|
|
462
480
|
] }) }),
|
|
463
481
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-cli-actions", children: [
|
|
@@ -467,11 +485,11 @@ function LandingPageProofDriven() {
|
|
|
467
485
|
] }),
|
|
468
486
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-footer-cta", children: [
|
|
469
487
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "lpd-eyebrow", children: "Start Iterating" }),
|
|
470
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { children: "From
|
|
488
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { children: "From idea to validated physical model." }),
|
|
471
489
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { children: [
|
|
472
490
|
"Open the editor, write or generate a ",
|
|
473
491
|
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: ".forge.js" }),
|
|
474
|
-
" file, and take
|
|
492
|
+
" file, and take a real product, manufacturing component, or robotics asset from AI-authored source to validation evidence and export-ready geometry."
|
|
475
493
|
] }),
|
|
476
494
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "lpd-hero-actions", children: [
|
|
477
495
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Link, { to: "/app", className: "lpd-button lpd-button-primary", children: "Open ForgeCAD" }),
|
|
@@ -484,7 +502,7 @@ function LandingPageProofDriven() {
|
|
|
484
502
|
/* @__PURE__ */ jsxRuntimeExports.jsx(BrandMark, { size: 24, decorative: true }),
|
|
485
503
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "ForgeCAD" })
|
|
486
504
|
] }),
|
|
487
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "
|
|
505
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "AI-native CAD for real products, manufacturing components, and robotics assets." }),
|
|
488
506
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "lpd-footer-copy", children: [
|
|
489
507
|
"© ",
|
|
490
508
|
LEGAL_COPYRIGHT_NOTICE
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports, L as Link } from "./vendor-react-6j1Kke-Y.js";
|
|
2
|
-
import { B as BrandMark } from "./app-
|
|
2
|
+
import { B as BrandMark } from "./app-BsRYSfxY.js";
|
|
3
3
|
import { a as LEGAL_LINKS, b as LEGAL_DOCUMENTS } from "./legalContent-ZfFGMmi4.js";
|
|
4
|
-
import { u as usePageBackground } from "./landing-proof-driven-
|
|
4
|
+
import { u as usePageBackground } from "./landing-proof-driven-BxZZh5r5.js";
|
|
5
5
|
function LegalPage({ documentId }) {
|
|
6
6
|
const document = LEGAL_DOCUMENTS[documentId];
|
|
7
7
|
usePageBackground("#f3ede4");
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { f as useNavigate, r as reactExports, j as jsxRuntimeExports, L as Link } from "./vendor-react-6j1Kke-Y.js";
|
|
2
|
-
import { u as useAuthStore, b as authFetch, B as BrandMark } from "./app-
|
|
2
|
+
import { u as useAuthStore, b as authFetch, B as BrandMark } from "./app-BsRYSfxY.js";
|
|
3
3
|
import { L as LEGAL_COPYRIGHT_NOTICE, a as LEGAL_LINKS } from "./legalContent-ZfFGMmi4.js";
|
|
4
4
|
import { C as COMMERCIAL_USE_CASES } from "./copy-DQcpKfiX.js";
|
|
5
|
-
import { u as usePageBackground } from "./landing-proof-driven-
|
|
5
|
+
import { u as usePageBackground } from "./landing-proof-driven-BxZZh5r5.js";
|
|
6
6
|
function checkoutIntentPath(interval) {
|
|
7
7
|
return `/app?checkout=${interval}`;
|
|
8
8
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports, L as Link } from "./vendor-react-6j1Kke-Y.js";
|
|
2
|
-
import { u as useAuthStore, b as authFetch, s as storageUsagePercent, f as formatStorageBytes } from "./app-
|
|
2
|
+
import { u as useAuthStore, b as authFetch, s as storageUsagePercent, f as formatStorageBytes } from "./app-BsRYSfxY.js";
|
|
3
3
|
import { C as COMMERCIAL_USE_CASES, P as PRO_STORAGE_UPGRADE_COPY } from "./copy-DQcpKfiX.js";
|
|
4
4
|
function timeAgo(dateStr) {
|
|
5
5
|
const ms = Date.now() - new Date(dateStr).getTime();
|