forgecad 0.9.15 → 0.9.16

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.
Files changed (70) hide show
  1. package/dist/assets/{AdminPage-CDyGUinA.js → AdminPage-CXvls4-J.js} +1 -1
  2. package/dist/assets/{BenchmarkPage-DfPMY_-d.js → BenchmarkPage-B27zk8xL.js} +1 -1
  3. package/dist/assets/{BlogPage-kF0fkdJT.js → BlogPage-CMAVvgQL.js} +1 -1
  4. package/dist/assets/{DocsPage-B954L3YN.js → DocsPage-knf4I4h7.js} +1 -1
  5. package/dist/assets/EditorApp-BHMQlJ-D.js +14686 -0
  6. package/dist/assets/{EditorApp-CuDLxKqL.css → EditorApp-BpjZgzk0.css} +148 -0
  7. package/dist/assets/{EmbedViewer-C77B-TrF.js → EmbedViewer-D7ZGlFjx.js} +2 -2
  8. package/dist/assets/{LandingPageProofDriven-Cr6fXMDj.js → LandingPageProofDriven-CnevhTE8.js} +2 -2
  9. package/dist/assets/{LegalPage-Dzklqmmg.js → LegalPage-BPTUmqeg.js} +1 -1
  10. package/dist/assets/{PricingPage-zWXkvlwl.js → PricingPage-B0D4goG_.js} +1 -1
  11. package/dist/assets/{SettingsPage-Bz0of4KQ.js → SettingsPage-CFF-UgjI.js} +1 -1
  12. package/dist/assets/{app-D3kDkggg.js → app-T0pDcSX4.js} +1184 -218
  13. package/dist/assets/cli/{render-DSY3mMQa.js → render-C5pcIISc.js} +144 -26
  14. package/dist/assets/{constructionHistoryWorker-gpDo-uH2.js → constructionHistoryWorker-Ba2Hm58b.js} +1 -0
  15. package/dist/assets/{evalWorker-CU0Ke6DP.js → evalWorker-vkx310U2.js} +1380 -2173
  16. package/dist/assets/{inspectWorker-COyp8XXA.js → inspectWorker-BuTJDVX6.js} +252 -30
  17. package/dist/assets/{targets-B9sGB5nB.js → jointPose-B_Cgedn9.js} +71 -3
  18. package/dist/assets/{manifold-DNkrUWpA.js → manifold-BWgsjmAM.js} +1 -1
  19. package/dist/assets/{manifold-C-3h2M7p.js → manifold-D6IFSkhH.js} +2 -2
  20. package/dist/assets/{manifold-BRI5prcH.js → manifold-rZexZI0G.js} +1 -1
  21. package/dist/assets/{reportWorker-CdBz5bNg.js → reportWorker-0AGij1Ru.js} +1373 -2166
  22. package/dist/assets/{scalar-sampling-budget-wJF98aY9.js → scalar-sampling-budget-J5cuzxT1.js} +1494 -2251
  23. package/dist/assets/{scanProxyWorker-B-9VbLIs.js → scanProxyWorker-Vl4Wxa1y.js} +18 -5
  24. package/dist/cli/render.html +1 -1
  25. package/dist/docs/index.html +1 -1
  26. package/dist/docs-raw/AI/usage.md +2 -0
  27. package/dist/docs-raw/CLI.md +4 -0
  28. package/dist/docs-raw/generated/assembly.md +104 -6
  29. package/dist/docs-raw/generated/concepts.md +14 -4
  30. package/dist/docs-raw/generated/lib.md +2 -18
  31. package/dist/docs-raw/generated/output.md +14 -4
  32. package/dist/docs-raw/generated/runtime-names.md +27 -19
  33. package/dist/docs-raw/skills/forgecad-make-a-model.md +39 -38
  34. package/dist/docs-raw/skills/forgecad-project.md +2 -0
  35. package/dist/docs-raw/welcome.md +2 -0
  36. package/dist/index.html +1 -1
  37. package/dist/sitemap.xml +13 -13
  38. package/dist-cli/{check-compiler-SDX5QIXI.js → check-compiler-SYQ2PWOB.js} +1 -1
  39. package/dist-cli/{check-query-propagation-EAYEFT77.js → check-query-propagation-HIAGV62W.js} +1 -1
  40. package/dist-cli/{chunk-N4O47JLF.js → chunk-SPZE3DUY.js} +1591 -2356
  41. package/dist-cli/forgecad.js +1698 -487
  42. package/dist-skill/CONTEXT.md +117 -46
  43. package/dist-skill/docs/CLI.md +4 -0
  44. package/dist-skill/docs/generated/assembly.md +83 -5
  45. package/dist-skill/docs/generated/lib.md +2 -18
  46. package/dist-skill/docs/generated/output.md +14 -4
  47. package/dist-skill/docs/generated/runtime-names.md +18 -19
  48. package/dist-skill/library/forgecad-make-a-model/SKILL.md +39 -38
  49. package/dist-skill/library/forgecad-project/SKILL.md +2 -0
  50. package/examples/api/helix-basics.forge.js +2 -2
  51. package/examples/api/route3d-elbow.forge.js +3 -0
  52. package/examples/api/variable-sweep-test.forge.js +3 -1
  53. package/package.json +4 -1
  54. package/dist/assets/EditorApp-Beb-IZ0y.js +0 -14014
  55. package/examples/api/bolted-service-cover.forge.js +0 -17
  56. package/examples/api/cable-gland-anchor.forge.js +0 -14
  57. package/examples/api/captured-cartridge-guide.forge.js +0 -14
  58. package/examples/api/captured-linear-slide.forge.js +0 -13
  59. package/examples/api/clevis-pin-joint.forge.js +0 -13
  60. package/examples/api/datum-enclosure.forge.js +0 -16
  61. package/examples/api/hose-barb-port.forge.js +0 -14
  62. package/examples/api/knuckled-hinge-assembly.forge.js +0 -15
  63. package/examples/api/living-hinge-cover.forge.js +0 -14
  64. package/examples/api/pcb-terminal-block.forge.js +0 -22
  65. package/examples/api/pinned-lever-pivot-stack.forge.js +0 -14
  66. package/examples/api/retained-shaft-knob-stack.forge.js +0 -15
  67. package/examples/api/routed-tube-clip.forge.js +0 -15
  68. package/examples/api/seated-bearing-stack.forge.js +0 -30
  69. package/examples/api/snap-latch-cover.forge.js +0 -14
  70. package/examples/api/thumb-screw-clamp.forge.js +0 -15
@@ -182,6 +182,44 @@
182
182
  text-overflow: ellipsis;
183
183
  }
184
184
 
185
+ .fc-view-panel-button-tooltip-target {
186
+ position: relative;
187
+ display: block;
188
+ min-width: 0;
189
+ cursor: not-allowed;
190
+ }
191
+
192
+ .fc-view-panel-button-tooltip-target > .fc-view-panel-btn {
193
+ width: 100%;
194
+ }
195
+
196
+ .fc-view-panel-button-tooltip-target > .fc-view-panel-btn:disabled {
197
+ pointer-events: none;
198
+ }
199
+
200
+ .fc-view-panel-button-tooltip-target:focus-visible {
201
+ border-radius: 4px;
202
+ outline: 2px solid var(--fc-accent);
203
+ outline-offset: 1px;
204
+ }
205
+
206
+ .fc-view-panel-submit-btn.attention {
207
+ border-color: color-mix(in srgb, var(--fc-accent) 72%, #ffffff);
208
+ background: color-mix(in srgb, var(--fc-accent) 72%, #ffffff 12%);
209
+ color: #ffffff;
210
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--fc-accent) 45%, transparent);
211
+ }
212
+
213
+ .fc-view-panel-icon-btn {
214
+ flex: 0 0 24px;
215
+ width: 24px;
216
+ min-width: 24px;
217
+ height: 24px;
218
+ padding: 0;
219
+ font-size: 12px;
220
+ line-height: 1;
221
+ }
222
+
185
223
  .fc-view-panel-field-label {
186
224
  flex: 0 0 auto;
187
225
  color: var(--fc-textDim);
@@ -189,6 +227,47 @@
189
227
  line-height: 1.3;
190
228
  }
191
229
 
230
+ .fc-view-panel-floating-tooltip {
231
+ position: fixed;
232
+ box-sizing: border-box;
233
+ z-index: 2147482000;
234
+ max-width: calc(100vw - 24px);
235
+ padding: 8px 10px;
236
+ border: 1px solid var(--fc-border);
237
+ border-radius: 4px;
238
+ background: var(--fc-bgOverlay);
239
+ box-shadow: 0 12px 28px rgba(0, 0, 0, 0.3);
240
+ color: var(--fc-text);
241
+ font-size: 11px;
242
+ font-weight: 500;
243
+ line-height: 1.35;
244
+ overflow-wrap: break-word;
245
+ pointer-events: none;
246
+ white-space: normal;
247
+ }
248
+
249
+ .fc-view-panel-floating-tooltip::after {
250
+ position: absolute;
251
+ top: 12px;
252
+ width: 8px;
253
+ height: 8px;
254
+ background: var(--fc-bgOverlay);
255
+ content: "";
256
+ transform: rotate(45deg);
257
+ }
258
+
259
+ .fc-view-panel-floating-tooltip--left::after {
260
+ right: -5px;
261
+ border-top: 1px solid var(--fc-border);
262
+ border-right: 1px solid var(--fc-border);
263
+ }
264
+
265
+ .fc-view-panel-floating-tooltip--right::after {
266
+ left: -5px;
267
+ border-bottom: 1px solid var(--fc-border);
268
+ border-left: 1px solid var(--fc-border);
269
+ }
270
+
192
271
  .fc-view-panel-row {
193
272
  display: flex;
194
273
  align-items: center;
@@ -291,6 +370,46 @@
291
370
  min-width: 0;
292
371
  }
293
372
 
373
+ .fc-marker-cell-size-row {
374
+ margin-top: 6px;
375
+ }
376
+
377
+ .fc-marker-note-stack {
378
+ display: flex;
379
+ flex-direction: column;
380
+ gap: 6px;
381
+ margin-top: 6px;
382
+ min-width: 0;
383
+ }
384
+
385
+ .fc-marker-note-row {
386
+ display: grid;
387
+ grid-template-columns: 18px minmax(42px, auto) minmax(0, 1fr) 24px;
388
+ gap: 6px;
389
+ align-items: center;
390
+ min-width: 0;
391
+ }
392
+
393
+ .fc-marker-note-swatch {
394
+ width: 18px;
395
+ height: 18px;
396
+ min-width: 18px;
397
+ padding: 0;
398
+ border: 1px solid rgba(255, 255, 255, 0.32);
399
+ border-radius: 4px;
400
+ cursor: pointer;
401
+ }
402
+
403
+ .fc-marker-note-color {
404
+ min-width: 0;
405
+ color: var(--fc-textDim);
406
+ font-size: 11px;
407
+ line-height: 1.2;
408
+ overflow: hidden;
409
+ text-overflow: ellipsis;
410
+ white-space: nowrap;
411
+ }
412
+
294
413
  .fc-view-panel-color-grid {
295
414
  display: grid;
296
415
  grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -2444,6 +2563,35 @@
2444
2563
  margin-bottom: 8px;
2445
2564
  }
2446
2565
 
2566
+ .fc-mobile-joints-section-header {
2567
+ display: flex;
2568
+ align-items: center;
2569
+ justify-content: space-between;
2570
+ gap: 8px;
2571
+ margin-bottom: 8px;
2572
+ }
2573
+
2574
+ .fc-mobile-joints-section-header .fc-mobile-joints-label {
2575
+ margin-bottom: 0;
2576
+ }
2577
+
2578
+ .fc-mobile-joints-reset {
2579
+ height: 30px;
2580
+ padding: 0 10px;
2581
+ background: var(--fc-bgCard, var(--fc-bgInput, var(--fc-bg)));
2582
+ border: 1px solid var(--fc-border);
2583
+ border-radius: 8px;
2584
+ color: var(--fc-text);
2585
+ font-size: 12px;
2586
+ font-family: inherit;
2587
+ cursor: pointer;
2588
+ }
2589
+
2590
+ .fc-mobile-joints-reset:disabled {
2591
+ opacity: 0.4;
2592
+ cursor: default;
2593
+ }
2594
+
2447
2595
  .fc-mobile-joints-row {
2448
2596
  display: flex;
2449
2597
  align-items: center;
@@ -1,6 +1,6 @@
1
1
  import { r as reactExports, j as jsxRuntimeExports } from "./vendor-react-6j1Kke-Y.js";
2
- import { cB as initKernel, cC as initSolverWasm } from "./scalar-sampling-budget-wJF98aY9.js";
3
- import { g as useForgeStore, ai as getExternalUrl, aj as getGistId, l as fetchUrlModel, k as fetchGistModel, ao as buildShareUrl, B as BrandMark, ak as Viewport } from "./app-D3kDkggg.js";
2
+ import { cB as initKernel, cC as initSolverWasm } from "./scalar-sampling-budget-J5cuzxT1.js";
3
+ import { g as useForgeStore, an as getExternalUrl, ao as getGistId, l as fetchUrlModel, k as fetchGistModel, at as buildShareUrl, B as BrandMark, ap as Viewport } from "./app-T0pDcSX4.js";
4
4
  function EmbedViewer() {
5
5
  const kernelReady = useForgeStore((s) => s.kernelReady);
6
6
  const setKernelReady = useForgeStore((s) => s.setKernelReady);
@@ -1,5 +1,5 @@
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-D3kDkggg.js";
2
+ import { B as BrandMark } from "./app-T0pDcSX4.js";
3
3
  import { L as LEGAL_COPYRIGHT_NOTICE, a as LEGAL_LINKS } from "./legalContent-ZfFGMmi4.js";
4
4
  import { u as usePageBackground } from "./landing-proof-driven-DiGqdtWa.js";
5
5
  const LINKS = {
@@ -506,7 +506,7 @@ function LandingPageProofDriven() {
506
506
  ] }),
507
507
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
508
508
  /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { children: "Community" }),
509
- /* @__PURE__ */ jsxRuntimeExports.jsx("a", { href: "https://discord.gg/3jMbZtdtp", target: "_blank", rel: "noopener noreferrer", children: "Discord" }),
509
+ /* @__PURE__ */ jsxRuntimeExports.jsx("a", { href: "https://discord.gg/htJntFkBAv", target: "_blank", rel: "noopener noreferrer", children: "Discord" }),
510
510
  /* @__PURE__ */ jsxRuntimeExports.jsx("a", { href: "https://x.com/ForgeCAD", target: "_blank", rel: "noopener noreferrer", children: "ForgeCAD X" }),
511
511
  /* @__PURE__ */ jsxRuntimeExports.jsx("a", { href: "https://x.com/ruben_kostard", target: "_blank", rel: "noopener noreferrer", children: "Ruben X" })
512
512
  ] }),
@@ -1,5 +1,5 @@
1
1
  import { j as jsxRuntimeExports, L as Link } from "./vendor-react-6j1Kke-Y.js";
2
- import { B as BrandMark } from "./app-D3kDkggg.js";
2
+ import { B as BrandMark } from "./app-T0pDcSX4.js";
3
3
  import { a as LEGAL_LINKS, b as LEGAL_DOCUMENTS } from "./legalContent-ZfFGMmi4.js";
4
4
  import { u as usePageBackground } from "./landing-proof-driven-DiGqdtWa.js";
5
5
  function LegalPage({ documentId }) {
@@ -1,5 +1,5 @@
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-D3kDkggg.js";
2
+ import { u as useAuthStore, b as authFetch, B as BrandMark } from "./app-T0pDcSX4.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
5
  import { u as usePageBackground } from "./landing-proof-driven-DiGqdtWa.js";
@@ -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-D3kDkggg.js";
2
+ import { u as useAuthStore, b as authFetch, s as storageUsagePercent, f as formatStorageBytes } from "./app-T0pDcSX4.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();