cyclecad 0.8.5 → 0.8.6

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 (2) hide show
  1. package/app/index.html +53 -28
  2. package/package.json +1 -1
package/app/index.html CHANGED
@@ -1387,13 +1387,13 @@
1387
1387
  <!-- Token Engine — Initialize early so window.cycleCAD.tokens is available -->
1388
1388
  <script src="./js/token-engine.js"></script>
1389
1389
  <!-- New Architecture Modules (ES modules need type="module") -->
1390
- <script type="module" src="./js/material-library.js?v=62"></script>
1390
+ <script type="module" src="./js/material-library.js?v=63"></script>
1391
1391
  <script src="./js/dfm-analyzer.js"></script>
1392
- <script type="module" src="./js/cam-pipeline.js?v=62"></script>
1392
+ <script type="module" src="./js/cam-pipeline.js?v=63"></script>
1393
1393
  <script src="./js/connected-fabs.js"></script>
1394
- <script type="module" src="./js/ai-copilot.js?v=62"></script>
1395
- <script type="module" src="./js/collaboration.js?v=62"></script>
1396
- <script type="module" src="./js/collaboration-ui.js?v=62"></script>
1394
+ <script type="module" src="./js/ai-copilot.js?v=63"></script>
1395
+ <script type="module" src="./js/collaboration.js?v=63"></script>
1396
+ <script type="module" src="./js/collaboration-ui.js?v=63"></script>
1397
1397
  <!-- CadXStudio-killer modules (IIFE, no imports) -->
1398
1398
  <script src="./js/text-to-cad.js"></script>
1399
1399
  <script src="./js/cam-operations.js"></script>
@@ -1419,7 +1419,7 @@
1419
1419
  <span class="splash-logo-cycle">cycle</span><span class="splash-logo-cad">CAD</span>
1420
1420
  </div>
1421
1421
  <p class="splash-subtitle">Parametric 3D CAD Modeler for the Mechanical Designer</p>
1422
- <p style="color: rgba(255,255,255,0.45); font-size: 0.8rem; margin: 4px 0 0 0; letter-spacing: 1px;">v0.8.5</p>
1422
+ <p style="color: rgba(255,255,255,0.45); font-size: 0.8rem; margin: 4px 0 0 0; letter-spacing: 1px;">v0.8.6</p>
1423
1423
  </div>
1424
1424
  <div class="splash-options">
1425
1425
  <button class="splash-button splash-button-primary" id="btn-empty-project" style="grid-column: 1 / -1;">
@@ -1760,25 +1760,25 @@
1760
1760
  <script type="module">
1761
1761
  import * as THREE from 'https://cdn.jsdelivr.net/npm/three@0.170.0/build/three.module.js';
1762
1762
  const _v = '50';
1763
- import { initViewport, setView, addToScene, removeFromScene, getScene, getCamera, getControls, toggleGrid as vpToggleGrid, fitToObject, fitAll } from './js/viewport.js?v=62';
1764
- import { startSketch, endSketch, setTool, getEntities, clearSketch } from './js/sketch.js?v=62';
1765
- import { extrudeProfile, createPrimitive, rebuildFeature, createMaterial } from './js/operations.js?v=62';
1766
- import { initChat, parseCADPrompt, addMessage } from './js/ai-chat.js?v=62';
1767
- import { initTree, addFeature, selectFeature, onSelect } from './js/tree.js?v=62';
1768
- import { initParams, showParams, onParamChange } from './js/params.js?v=62';
1769
- import { exportSTL, exportOBJ, exportJSON } from './js/export.js?v=62';
1770
- import { initShortcuts } from './js/shortcuts.js?v=62';
1771
- import { createReverseEngineerPanel, importFile, analyzeGeometry, reconstructFeatureTree, createWalkthrough } from './js/reverse-engineer.js?v=62';
1772
- import { createInventorPanel, parseInventorFile } from './js/inventor-parser.js?v=62';
1773
- import { loadProject, showFolderPicker, parseIPJ } from './js/project-loader.js?v=62';
1774
- import { initProjectBrowser, showBrowser, hideBrowser, setProject, onFileSelect } from './js/project-browser.js?v=62';
1775
- import { generateGuide, renderGuide, exportGuideHTML } from './js/rebuild-guide.js?v=62';
1776
- import { solveConstraints, addConstraint, removeConstraint, autoDetectConstraints, isFullyConstrained, getAllConstraints, clearAllConstraints } from './js/constraint-solver.js?v=62';
1777
- import { createSweep, createLoft, createBend, createFlange, createTab, createSlot, unfoldSheetMetal, createSpring, createThread } from './js/advanced-ops.js?v=62';
1778
- import Assembly from './js/assembly.js?v=62';
1779
- import { exportSketchToDXF, exportProjectionToDXF, exportMultiViewDXF, export3DDXF, downloadDXF } from './js/dxf-export.js?v=62';
1780
- import { initAgentAPI } from './js/agent-api.js?v=62';
1781
- import { initTokenDashboard } from './js/token-dashboard.js?v=62';
1763
+ import { initViewport, setView, addToScene, removeFromScene, getScene, getCamera, getControls, toggleGrid as vpToggleGrid, fitToObject, fitAll } from './js/viewport.js?v=63';
1764
+ import { startSketch, endSketch, setTool, getEntities, clearSketch } from './js/sketch.js?v=63';
1765
+ import { extrudeProfile, createPrimitive, rebuildFeature, createMaterial } from './js/operations.js?v=63';
1766
+ import { initChat, parseCADPrompt, addMessage } from './js/ai-chat.js?v=63';
1767
+ import { initTree, addFeature, selectFeature, onSelect } from './js/tree.js?v=63';
1768
+ import { initParams, showParams, onParamChange } from './js/params.js?v=63';
1769
+ import { exportSTL, exportOBJ, exportJSON } from './js/export.js?v=63';
1770
+ import { initShortcuts } from './js/shortcuts.js?v=63';
1771
+ import { createReverseEngineerPanel, importFile, analyzeGeometry, reconstructFeatureTree, createWalkthrough } from './js/reverse-engineer.js?v=63';
1772
+ import { createInventorPanel, parseInventorFile } from './js/inventor-parser.js?v=63';
1773
+ import { loadProject, showFolderPicker, parseIPJ } from './js/project-loader.js?v=63';
1774
+ import { initProjectBrowser, showBrowser, hideBrowser, setProject, onFileSelect } from './js/project-browser.js?v=63';
1775
+ import { generateGuide, renderGuide, exportGuideHTML } from './js/rebuild-guide.js?v=63';
1776
+ import { solveConstraints, addConstraint, removeConstraint, autoDetectConstraints, isFullyConstrained, getAllConstraints, clearAllConstraints } from './js/constraint-solver.js?v=63';
1777
+ import { createSweep, createLoft, createBend, createFlange, createTab, createSlot, unfoldSheetMetal, createSpring, createThread } from './js/advanced-ops.js?v=63';
1778
+ import Assembly from './js/assembly.js?v=63';
1779
+ import { exportSketchToDXF, exportProjectionToDXF, exportMultiViewDXF, export3DDXF, downloadDXF } from './js/dxf-export.js?v=63';
1780
+ import { initAgentAPI } from './js/agent-api.js?v=63';
1781
+ import { initTokenDashboard } from './js/token-dashboard.js?v=63';
1782
1782
 
1783
1783
  // ========== Application State ==========
1784
1784
  const APP = {
@@ -1979,7 +1979,7 @@
1979
1979
 
1980
1980
  // Initialize Agent API — the primary interface
1981
1981
  await tryStepAsync('agentAPI', async () => {
1982
- const agentImports = await import('./js/agent-api.js?v=62');
1982
+ const agentImports = await import('./js/agent-api.js?v=63');
1983
1983
  const agentSession = initAgentAPI({
1984
1984
  viewport: {
1985
1985
  getCamera,
@@ -3609,7 +3609,32 @@
3609
3609
  // Use init() which sets innerHTML AND attaches event listeners
3610
3610
  mod.init(body);
3611
3611
  } else if (mod?.getUI) {
3612
- body.innerHTML = mod.getUI();
3612
+ // Strip position:fixed and z-index from module HTML — our wrapper handles positioning
3613
+ let html = mod.getUI();
3614
+ html = html.replace(/position:\s*fixed;?/gi, 'position:relative;')
3615
+ .replace(/z-index:\s*\d+;?/gi, '')
3616
+ .replace(/right:\s*0;?/gi, '')
3617
+ .replace(/top:\s*44px;?/gi, '')
3618
+ .replace(/height:\s*calc\([^)]+\);?/gi, 'height:auto;')
3619
+ .replace(/width:\s*400px;?/gi, 'width:100%;');
3620
+ body.innerHTML = html;
3621
+ // Wire up tab switching for modules that use .tab-btn
3622
+ body.querySelectorAll('.tab-btn').forEach(btn => {
3623
+ btn.addEventListener('click', () => {
3624
+ const tab = btn.dataset.tab;
3625
+ body.querySelectorAll('.tab-btn').forEach(b => {
3626
+ b.style.color = '#888';
3627
+ b.style.borderBottom = 'none';
3628
+ b.classList.remove('active');
3629
+ });
3630
+ btn.style.color = '#58a6ff';
3631
+ btn.style.borderBottom = '2px solid #58a6ff';
3632
+ btn.classList.add('active');
3633
+ body.querySelectorAll('.tab-content').forEach(c => c.style.display = 'none');
3634
+ const target = body.querySelector(`.tab-content.${tab}`);
3635
+ if (target) target.style.display = 'block';
3636
+ });
3637
+ });
3613
3638
  } else if (mod?.getStatus) {
3614
3639
  const status = mod.getStatus();
3615
3640
  body.innerHTML = `<div style="color:var(--text-secondary);line-height:1.8;">${JSON.stringify(status, null, 2).replace(/\n/g, '<br>')}</div>`;
@@ -4374,6 +4399,6 @@
4374
4399
  </div>
4375
4400
  </div>
4376
4401
 
4377
- <span id="version-badge" style="position:fixed;bottom:42px;left:50%;transform:translateX(-50%);z-index:999;font-size:0.9rem;color:rgba(255,255,255,0.9);letter-spacing:0.1em;white-space:nowrap;padding:6px 16px;user-select:all;pointer-events:auto;font-family:monospace;font-weight:700;background:rgba(0,0,0,0.7);border:1px solid rgba(88,166,255,0.4);border-radius:6px;text-shadow:0 1px 3px rgba(0,0,0,0.5);" title="cycleCAD version">cycleCAD v0.8.5</span>
4402
+ <span id="version-badge" style="position:fixed;bottom:42px;left:50%;transform:translateX(-50%);z-index:999;font-size:0.9rem;color:rgba(255,255,255,0.9);letter-spacing:0.1em;white-space:nowrap;padding:6px 16px;user-select:all;pointer-events:auto;font-family:monospace;font-weight:700;background:rgba(0,0,0,0.7);border:1px solid rgba(88,166,255,0.4);border-radius:6px;text-shadow:0 1px 3px rgba(0,0,0,0.5);" title="cycleCAD version">cycleCAD v0.8.6</span>
4378
4403
  </body>
4379
4404
  </html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cyclecad",
3
- "version": "0.8.5",
3
+ "version": "0.8.6",
4
4
  "description": "Browser-based parametric 3D CAD modeler with AI-powered tools, native Inventor file parsing, and smart assembly management. No install required.",
5
5
  "main": "index.html",
6
6
  "bin": {