cyclecad 3.10.4 → 3.12.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/.github/workflows/pages.yml +34 -0
- package/.nojekyll +0 -0
- package/CLAUDE.md +348 -3
- package/HANDOFF-2026-04-24-session-2.md +239 -0
- package/HANDOFF-2026-04-24.md +90 -0
- package/app/index.html +49 -10
- package/app/js/modules/ai-copilot.js +195 -2
- package/app/js/modules/ai-engineer.js +939 -0
- package/app/js/modules/pentacad-bridge.js +216 -0
- package/app/js/modules/pentacad-cam.js +184 -0
- package/app/js/modules/pentacad-sim.js +215 -0
- package/app/js/modules/pentacad.js +233 -0
- package/app/pentacad.html +240 -0
- package/cyclecad.html +1081 -0
- package/explodeview.html +1102 -0
- package/index-agent-first.html.bak +1306 -0
- package/index.html +1683 -1240
- package/machines/v2-50-chb/kinematics.json +51 -0
- package/mockups/cyclecad-suite-mockup.html +1746 -0
- package/package.json +1 -1
- package/pentacad.html +1097 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Deploy to GitHub Pages
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
pages: write
|
|
11
|
+
id-token: write
|
|
12
|
+
|
|
13
|
+
concurrency:
|
|
14
|
+
group: pages
|
|
15
|
+
cancel-in-progress: true
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
deploy:
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
environment:
|
|
21
|
+
name: github-pages
|
|
22
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
23
|
+
steps:
|
|
24
|
+
- name: Checkout
|
|
25
|
+
uses: actions/checkout@v4
|
|
26
|
+
- name: Setup Pages
|
|
27
|
+
uses: actions/configure-pages@v5
|
|
28
|
+
- name: Upload artifact
|
|
29
|
+
uses: actions/upload-pages-artifact@v3
|
|
30
|
+
with:
|
|
31
|
+
path: '.'
|
|
32
|
+
- name: Deploy to GitHub Pages
|
|
33
|
+
id: deployment
|
|
34
|
+
uses: actions/deploy-pages@v4
|
package/.nojekyll
ADDED
|
File without changes
|
package/CLAUDE.md
CHANGED
|
@@ -1193,9 +1193,6 @@ Pointer events on `#dialog-title` drag the whole dialog container via `position:
|
|
|
1193
1193
|
- Groq Llama 3.3 70B (free, 30 RPM — better for repeat prompts)
|
|
1194
1194
|
|
|
1195
1195
|
### Pending
|
|
1196
|
-
- Retry `npm publish cyclecad@3.10.3` (earlier attempt interrupted; registry still shows 3.10.2)
|
|
1197
|
-
- Add gear/pulley/shaft templates (Task #7)
|
|
1198
|
-
- Verify ExplodeView redirects
|
|
1199
1196
|
- The `block-only-in-chrome` user report — needs repro with actual prompt
|
|
1200
1197
|
|
|
1201
1198
|
### Collaboration notes
|
|
@@ -1204,3 +1201,351 @@ Pointer events on `#dialog-title` drag the whole dialog container via `position:
|
|
|
1204
1201
|
- Clipboard delivery via `write_clipboard` — user pastes in Terminal
|
|
1205
1202
|
- Verification via Claude-in-Chrome MCP (navigate → execute → screenshot → dom inspect)
|
|
1206
1203
|
- Terminal is tier-click, so clipboard write is BLOCKED while Terminal is frontmost — switch to Chrome first
|
|
1204
|
+
|
|
1205
|
+
## Session 2026-04-24 — GitHub Pages Pipeline Fix + Template Library Expansion
|
|
1206
|
+
|
|
1207
|
+
### What shipped
|
|
1208
|
+
- **cyclecad@3.10.3** confirmed live on npm (earlier interrupted publish actually went through)
|
|
1209
|
+
- **cyclecad@3.10.4 patch prepared** (delivery command sent via clipboard heredoc, user ran it): 3 new AI Copilot templates
|
|
1210
|
+
- `spur gear 20 teeth module 2 bore 10mm` → cylinder blank at OD with bore, correct DIN pitch math (`pitchDia = m*z`, `outsideDia = m*(z+2)`, default face width 10mm, default bore 8mm)
|
|
1211
|
+
- `pulley 80mm bore 12mm` or `v-belt pulley 100mm` or `timing pulley 60mm` → disc with center bore, V-groove noted as next step (true groove needs revolve)
|
|
1212
|
+
- `shaft 20mm dia 150mm long`, `stepped shaft 25mm 120mm`, `axle 16mm 200mm`, `spindle Ø10 80mm long` → simple or 2-step cylinder with fallback heuristic for bare `Nmm` values (smaller=dia, larger=length)
|
|
1213
|
+
- **GitHub Pages deploy pipeline migrated** — from auto-generated "Deploy from a branch" to explicit GitHub Actions workflow with `cancel-in-progress: true`
|
|
1214
|
+
|
|
1215
|
+
### Pages deploy fix details
|
|
1216
|
+
- **Root cause of failed runs #151/#152**: concurrent deployment conflict. Commit `ccacf45` pushed while `746008a` was mid-deploy → HTTP 400 "in progress deployment". Build succeeded (31s) but deploy step failed in 3s with 3 annotations.
|
|
1217
|
+
- Self-resolved for subsequent runs (#153-#166 all green) but would recur on future rapid pushes.
|
|
1218
|
+
- **Fix shipped**: Added `.github/workflows/pages.yml` with:
|
|
1219
|
+
```yaml
|
|
1220
|
+
permissions: { contents: read, pages: write, id-token: write }
|
|
1221
|
+
concurrency: { group: pages, cancel-in-progress: true }
|
|
1222
|
+
```
|
|
1223
|
+
Uses `actions/checkout@v4`, `actions/configure-pages@v5`, `actions/upload-pages-artifact@v3`, `actions/deploy-pages@v4`.
|
|
1224
|
+
- Added `.nojekyll` at repo root (harmless, prevents future Jekyll issues).
|
|
1225
|
+
- **Pages source setting flipped manually** via GitHub UI (via Chrome MCP): Settings → Pages → Source → "GitHub Actions" (was "Deploy from a branch"). Confirmed with "GitHub Pages source saved." banner.
|
|
1226
|
+
- Triggered manual `workflow_dispatch` run → Deploy #2 succeeded in 20s (13s deploy step). Deploy step output URL = `https://cyclecad.com/` confirming new pipeline is authoritative.
|
|
1227
|
+
- Old `pages build and deployment` workflow automatically stops firing once source is "GitHub Actions".
|
|
1228
|
+
- One remaining harmless warning: "Node.js 20 actions are deprecated" — affects the whole actions ecosystem, will resolve when major versions bump.
|
|
1229
|
+
|
|
1230
|
+
### Template patching pattern (for future template additions)
|
|
1231
|
+
Templates go in `matchTemplate(prompt)` in `app/js/modules/ai-copilot.js`, inserted before `return null;` (currently ~line 594, was line 514 before gear/pulley/shaft block). Each template:
|
|
1232
|
+
1. Matches user prompt with regex
|
|
1233
|
+
2. Parses params with sensible defaults
|
|
1234
|
+
3. Returns array of plan steps: `sketch.start` → `sketch.circle/rect` → `ops.extrude` → optional `ops.hole` → `view.set iso` → `view.fit`
|
|
1235
|
+
4. All solids centered at origin, Y is extrude axis
|
|
1236
|
+
|
|
1237
|
+
### Tested template prompts (all passing via Node eval)
|
|
1238
|
+
- `spur gear 20 teeth module 2` → m=2, Z=20, pitch Ø40, OD Ø44 ✓
|
|
1239
|
+
- `gear m=3 z=40 bore 10mm` → m=3, Z=40, pitch Ø120, OD Ø126, bore Ø10 ✓
|
|
1240
|
+
- `v-belt pulley 80mm bore 12` → Ø80x20 with bore Ø12 ✓
|
|
1241
|
+
- `shaft 20mm dia 150mm long` → Ø20 x 150mm ✓
|
|
1242
|
+
- `stepped shaft 25mm dia 120mm long` → main Ø25x72mm + reduced Ø21x48mm ✓ (60/40 split)
|
|
1243
|
+
- `axle 16mm 200mm` (bare Nmm heuristic) → dia=16 (min), len=200 (max) ✓
|
|
1244
|
+
- `spindle Ø10 80mm long` → Ø10 x 80mm ✓
|
|
1245
|
+
|
|
1246
|
+
### ExplodeView AI Render diagnostic (cross-reference)
|
|
1247
|
+
User reported Nano Banana v2 renders ignoring source CAD object. Three stacked problems in `docs/demo/app.js` `buildPrompt()` (line 6595):
|
|
1248
|
+
1. Prompt wrapper `Photorealistic render of an industrial/mechanical product in ${scene}...` nests user's preservation intent grammatically, weakening it
|
|
1249
|
+
2. Nano Banana v2 is generative not inpainting — reference image is style guidance, not pixel-level preservation
|
|
1250
|
+
3. Product Photo preset suffix "studio lighting, minimal shadows" fights outdoor scene prompts
|
|
1251
|
+
Fix delivered as prompt rewrite (preservation-first pattern). Code fix as v304 prepared but NOT YET SHIPPED. See explodeview CLAUDE.md for full details.
|
|
1252
|
+
|
|
1253
|
+
### Pending (next session)
|
|
1254
|
+
- Confirm cyclecad@3.10.4 publish went through (user ran command; verify with `curl -s https://registry.npmjs.org/cyclecad/latest | python3 -c 'import json,sys; print(json.load(sys.stdin)["version"])'`)
|
|
1255
|
+
- Ship ExplodeView v304 (buildPrompt fix for AI Render prompt hijacking)
|
|
1256
|
+
- Add more AI Copilot templates: mounting bracket variations, T-slot extrusions, bearing cutouts, ball/roller bearings
|
|
1257
|
+
- Eventually: true involute gear teeth via `sketch.polyline` (would require mini-executor support for polyline → geometry, currently polyline is a no-op)
|
|
1258
|
+
- Post viral LinkedIn draft (user approval pending) — see `~/explodeview/linkedin-post-viral.md`
|
|
1259
|
+
- Push ExplodeView route redirects (explodeview.com/docs/demo/ currently 404)
|
|
1260
|
+
- The `block-only-in-chrome` user report — still needs repro
|
|
1261
|
+
|
|
1262
|
+
### Collaboration lessons learned this session
|
|
1263
|
+
- **GitHub Pages 3-annotation failures** ("Failed to create deployment status: 400" + "Deployment request failed...due to in progress deployment" + "Creating Pages deployment failed") = concurrent deploy conflict, NOT build failure. Fix: explicit workflow with `concurrency: group: pages, cancel-in-progress: true`.
|
|
1264
|
+
- **GitHub API path for Pages source**: `PUT /repos/{owner}/{repo}/pages` with `-f build_type=workflow` (workflow) or `legacy` (branch). Good fallback when Chrome MCP auth is unavailable — user just runs `gh api --method PUT /repos/vvlars-cmd/cyclecad/pages -f build_type=workflow` on Mac where `gh` is authenticated.
|
|
1265
|
+
- **Password entry via Chrome MCP is prohibited** — Claude will not sign in on user's behalf under any circumstance. User must sign in themselves; Claude can then operate in authenticated sessions.
|
|
1266
|
+
- **Chrome tier "read"** blocks `computer_use` clicks in the browser itself, but Claude-in-Chrome MCP tools (`mcp__Claude_in_Chrome__*`) DO work — they go through the extension.
|
|
1267
|
+
- **Use `find` tool with aria role** (e.g., `menuitemradio "GitHub Actions"`) rather than guessing pixel coordinates — much more reliable. First click attempt at (585, 452) missed the dropdown option, second via `ref_311` landed perfectly.
|
|
1268
|
+
- **After Pages source flip**, trigger `workflow_dispatch` immediately to prove the new pipeline actually serves traffic (the existing run only built the artifact — it didn't serve until source was flipped).
|
|
1269
|
+
- **Successful Pages deploy step** shows the deploy environment URL (e.g. `https://cyclecad.com/`) as a link under the job name — that's the tell that it worked end-to-end, not just a green check.
|
|
1270
|
+
|
|
1271
|
+
## Session 2026-04-24 (continued) — ExplodeView v304 shipped + new roadmap item
|
|
1272
|
+
|
|
1273
|
+
### What shipped
|
|
1274
|
+
- **ExplodeView v1.0.22 / v304** published to npm and deployed (commit `b47d6a9`, then `41471f3` for the version bump). `buildPrompt()` in `docs/demo/app.js` rewritten with preservation-first logic:
|
|
1275
|
+
- Detects explicit preservation cues ("do not change", "preserve", "keep exactly", "same shape", etc.) → leads with strong reference-image anchor
|
|
1276
|
+
- Detects scene-descriptive prompts (>40 chars + spatial language) → passes them to the model directly with only the preamble in front, drops the rigid "render of a product in X" wrapper
|
|
1277
|
+
- Suppresses Product Photo / Technical preset suffixes when the scene has outdoor cues (forest, trail, sunset, etc.) so the studio suffix doesn't fight the scene
|
|
1278
|
+
- Adds a "No Style" preset (`presetSuffixes.none = ''`) that skips the suffix entirely; new dashed-border button in `docs/demo/index.html` at line ~2145
|
|
1279
|
+
- Version badge updated: "ExplodeView v304 — preservation-first AI Render"
|
|
1280
|
+
|
|
1281
|
+
### New roadmap item — AI Engineering Analyst (MecAgent-parity)
|
|
1282
|
+
|
|
1283
|
+
**Source**: user shared MecAgent demo screenshots in `/Users/sachin/Desktop/mec` (12 screenshots, 2026-04-24 at 11:49-11:51). The demo runs inside Inventor via MecAgent's Copilot panel and solves a complete bolted joint problem:
|
|
1284
|
+
|
|
1285
|
+
Problem statement (exact wording from screenshots):
|
|
1286
|
+
> A steel plate is secured using 4 × M12 bolts (property class 10.9) in a preloaded configuration. The joint is subjected to: a shear force of 18 kN, an axial separating force of 18 kN, an in plane moment of 420 Nm. Given: friction coefficient between contact surfaces μ = 0.16, preload per bolt 39 kN, bolt circle diameter: 96mm, required safety factor against slipping: 1.5. Question: Verify whether the joint is safe with respect to: 1. slip resistance, 2. maximum tensile load in the most loaded bolt, 3. combined tension and shear in the bolts.
|
|
1287
|
+
|
|
1288
|
+
MecAgent's response walks through three checks with full equations:
|
|
1289
|
+
- **Slip resistance**: `F_friction = z·Q_F·μ = 4·39000·0.16 = 24960 N` vs required `F_required = K_s·F_shear = 1.5·26000 = 39000 N`
|
|
1290
|
+
- **Tension with moment**: `F_axial,bolt = F_axial,total/z = 18000/4 = 4500 N`; moment contribution `F_moment = M·r/Σr² = 420·1000·48/(4·48²) = 2187.5 N`; `F_max,tensile = 6687.5 N`
|
|
1291
|
+
- **Combined**: preload adds on top → `F_tensile,total = 45687.5 N`; tensile stress `σ = F/A = 45687.5/84.3 = 542 MPa`; shear stress `τ = 6500/84.3 = 77 MPa`; Von Mises `σ_vm = √(σ²+3τ²) = 558 MPa`
|
|
1292
|
+
- Compared against 10.9 proof strength (~936 MPa) → verdict "safe"
|
|
1293
|
+
- **Critical UX detail**: cites "Analysis and Design of Machine Elements" by Wei Jiang (Wiley), page 85, with clickable "Open Document" buttons showing the exact textbook page
|
|
1294
|
+
|
|
1295
|
+
**Why this matters**: cycleCAD's existing `ai-copilot.js` generates geometry (templates for gears, bolts, flanges), `fusion-simulation.js` has stubbed FEA, and `validate.designReview` returns A-F scores from geometry heuristics. None of them answer a natural-language engineering question with analytical methods and cited sources. This is the single biggest competitive gap vs MecAgent's pitch, and closing it makes cycleCAD's "agent-first" positioning real.
|
|
1296
|
+
|
|
1297
|
+
**Scope v1 — bolted joint analysis (VDI 2230 / Shigley)**:
|
|
1298
|
+
- Module: `app/js/modules/ai-engineer.js` (~800-1200 lines)
|
|
1299
|
+
- Inputs: bolt grade (4.6–12.9), bolt count, thread size, preload, external loads (shear/tension/moment + BCD), friction coefficient, safety factor target
|
|
1300
|
+
- Outputs: slip-resistance check, per-bolt tension with moment redistribution, combined Von Mises stress, proof-strength comparison, pass/fail verdict
|
|
1301
|
+
- Rendering: LaTeX equations via KaTeX (faster than MathJax), stepwise narrative, green/red badges per check
|
|
1302
|
+
|
|
1303
|
+
**Scope v2 — other machine elements**: gear pair (AGMA bending + pitting), shaft fatigue (Goodman/Soderberg), rolling bearing L10 life, fillet weld sizing
|
|
1304
|
+
|
|
1305
|
+
**RAG / citations**:
|
|
1306
|
+
- User uploads machine-element PDF → chunk + embed in IndexedDB (no server, runs locally with @xenova/transformers MiniLM)
|
|
1307
|
+
- Bundled fallback: public-domain machine-element references + excerpts from DIN/ISO standards we can legally redistribute
|
|
1308
|
+
- Every equation in the response cites page + source
|
|
1309
|
+
|
|
1310
|
+
**LLM layer**:
|
|
1311
|
+
- Same provider stack as ai-copilot.js (Claude Sonnet 4.6 / Gemini 2.0 Flash / Groq Llama 3.3 70B)
|
|
1312
|
+
- Tool-use pattern: model writes narrative, calls deterministic analytical JS functions for every number, never fabricates results. Analytical core is pure math (no LLM) — LLM is only for problem parsing + narrative.
|
|
1313
|
+
|
|
1314
|
+
**UI**:
|
|
1315
|
+
- New "Engineer" tab in right panel alongside Properties / Chat / Guide
|
|
1316
|
+
- Reuses selected-assembly context, materials, and bolt patterns from Fastener Wizard as implicit inputs (so user doesn't have to re-enter them)
|
|
1317
|
+
|
|
1318
|
+
### Pending (next session, updated)
|
|
1319
|
+
- **AI Engineering Analyst module** (above) — the biggest pending feature
|
|
1320
|
+
- More AI Copilot templates: mounting bracket variations, T-slot extrusions, bearing cutouts, ball/roller bearings
|
|
1321
|
+
- Eventually: true involute gear teeth via `sketch.polyline` (requires mini-executor support for polyline → geometry, currently polyline is a no-op)
|
|
1322
|
+
- ExplodeView compositing render (true pixel preservation — render 3D with transparent bg, send only background region to Nano Banana, composite in canvas)
|
|
1323
|
+
- Run cyclecad test agent in Chrome (`app/test-agent.html`, 113 tests) and fix failures
|
|
1324
|
+
- Dynamic version badge in cyclecad status bar (currently hardcoded v0.9.0 but npm is 3.10.4)
|
|
1325
|
+
- Wire cyclecad splash buttons (New Sketch / Open-Import / Text-to-CAD / Inventor Project) to actually trigger their actions
|
|
1326
|
+
- 138MB STEP import — server-side conversion path (server/converter.py) is the safer route than opencascade.js v293
|
|
1327
|
+
- Text-to-CAD with live preview
|
|
1328
|
+
- Photo-to-CAD reverse engineering
|
|
1329
|
+
- Docker compose local test
|
|
1330
|
+
- The `block-only-in-chrome` user report — still needs repro
|
|
1331
|
+
|
|
1332
|
+
## Session 2026-04-24 (session 2) — Pentamachine Collaboration + Suite Positioning + Pentacad Extension
|
|
1333
|
+
|
|
1334
|
+
### Big strategic updates
|
|
1335
|
+
|
|
1336
|
+
**Suite positioning locked in:**
|
|
1337
|
+
cyclecad.com is now an umbrella brand — **cycleCAD Suite** — covering three products:
|
|
1338
|
+
- **cycleCAD** (parametric CAD modeller, existing, MIT)
|
|
1339
|
+
- **ExplodeView** (3D viewer / AR / AI render, existing, MIT)
|
|
1340
|
+
- **Pentacad** (CAM + 5-axis simulator + Kinetic Control bridge, NEW, AGPL-3 / commercial dual)
|
|
1341
|
+
|
|
1342
|
+
Pentacad is a **cycleCAD module**, NOT a separate repo. Lives at `app/js/modules/pentacad*.js` following the existing `window.CycleCAD.Pentacad` IIFE pattern.
|
|
1343
|
+
|
|
1344
|
+
**Matt / Pentamachine status — CRITICAL:**
|
|
1345
|
+
Matt agreed to send files without NDA, but he explicitly stated: *"We do provide feedback for 4+ companies that are working on similar CAM concepts to yours."*
|
|
1346
|
+
|
|
1347
|
+
Implication: Matt is a **neutral ecosystem supplier**, not a partner. JV ask is dead. Strategy is pilot-first: build in silence, ship polished demos (not source, not architecture), public launch before he asks for exclusivity. Commercial progression: Phase 0-1 silent, Phase 2 license discussion, Phase 3 exclusive EU resale if warranted, JV only if Matt raises equity first. Full tactical playbook at `~/Documents/Penta/pentacad-notes/pilot-intelligence-brief.md` (private).
|
|
1348
|
+
|
|
1349
|
+
### Pentacad extension shipped (scaffold)
|
|
1350
|
+
|
|
1351
|
+
Files added to cycleCAD repo:
|
|
1352
|
+
| File | Purpose |
|
|
1353
|
+
|---|---|
|
|
1354
|
+
| `app/js/modules/pentacad.js` | Coordinator — registers sub-modules, machine picker UI, loadMachine(id), public API |
|
|
1355
|
+
| `app/js/modules/pentacad-cam.js` | 12 CAM strategies (stubs), post-processor skeleton, emitGCode() matching Pentamachine dialect |
|
|
1356
|
+
| `app/js/modules/pentacad-sim.js` | G-code parser (works for G20/G90/G94/G93/G54, tracks modal state + A/B axes), forward-kinematics stub, soft-limit check |
|
|
1357
|
+
| `app/js/modules/pentacad-bridge.js` | WebSocket client for controller bridge — connect/disconnect/stream/jog/pause/abort, DRO event handling, auto-reconnect |
|
|
1358
|
+
| `app/pentacad.html` | Dedicated UI entry point with split-screen viewport + machine picker + workspace tabs (Machine / Design / CAM / Simulate / Control) |
|
|
1359
|
+
| `machines/v2-50-chb/kinematics.json` | Template values marked `_confirmed: false` pending Matt's real data |
|
|
1360
|
+
|
|
1361
|
+
### Suite landing mockup
|
|
1362
|
+
|
|
1363
|
+
`mockups/cyclecad-suite-mockup.html` — full animated wireframe (not yet in production).
|
|
1364
|
+
|
|
1365
|
+
Page structure:
|
|
1366
|
+
1. **Hero** — "From idea to finished part. One browser tab." with staggered fade-up, drifting orb gradients, blinking cursor
|
|
1367
|
+
2. **Lifecycle strip** — 5 stages with rainbow gradient line drawing across all chips on scroll-into-view
|
|
1368
|
+
3. **End-to-End Journeys** — 3 animated product examples showing the full business lifecycle (idea → design → market → sell → manufacture → feedback):
|
|
1369
|
+
- 🔔 Custom bike bell (consumer, 6 days, €345, 23 pre-orders)
|
|
1370
|
+
- ⚙️ Precision flange (B2B, 3 days, €2,400, 50-unit PO)
|
|
1371
|
+
- 🍺 Branded bottle-opener ring (promo, 2 days, €1,900, 100 units)
|
|
1372
|
+
- 15s loop, 2.5s per step, rows offset by one step each, hover to pause, click step to jump
|
|
1373
|
+
4. **5 stage deep-dives** — each with SVG animations (typing terminal, line-draw CAD, exploded parts, toolpath tracing, data-flow arrows)
|
|
1374
|
+
5. **Products grid** (3 cards — gold/teal/emerald per product), stats, CTA, founder note, footer
|
|
1375
|
+
|
|
1376
|
+
Old `index.html` backed up as `index-agent-first.html.bak`. Production index.html NOT yet written — mockup is the design spec.
|
|
1377
|
+
|
|
1378
|
+
### Pentamachine deliverables at `~/Documents/Penta/pentacad-deliverables/`
|
|
1379
|
+
- `ARCHITECTURE.md` — full system architecture (repo doc, shareable with Matt)
|
|
1380
|
+
- `Pentacad-Complete.pptx` — 25-slide deck (16 public architecture + 8 private intelligence brief, clearly divided)
|
|
1381
|
+
- `Pentacad-Complete.pdf` — same, non-editable
|
|
1382
|
+
- `pilot-intelligence-brief.md` — full tactical playbook
|
|
1383
|
+
|
|
1384
|
+
Plus standalone pentacad repo scaffold at `~/Documents/Penta/pentacad/` (superseded by extension approach, kept as reference).
|
|
1385
|
+
|
|
1386
|
+
### What Matt has sent (in `~/Documents/Penta/`)
|
|
1387
|
+
Marketing kit + installation guides + ONE real technical artifact: bottle-opener ring Fusion archive + 3 `.ngc` files confirming A/B kinematics, G20 imperial, G93 inverse-time feed, 40000 RPM spindle.
|
|
1388
|
+
|
|
1389
|
+
**Still blocking Phase 0**: native 3D models of V2-10/V2-50CHB/V2-50CHK + kinematics JSON per machine.
|
|
1390
|
+
|
|
1391
|
+
### Pending task inbox (tasks #10-24)
|
|
1392
|
+
|
|
1393
|
+
**AI Engineering Analyst** (biggest competitive gap vs MecAgent):
|
|
1394
|
+
- #10 v1 — bolted-joint analysis (VDI 2230 / Shigley), pure-math core tested against MecAgent numbers, KaTeX rendering, LLM tool-use, RAG
|
|
1395
|
+
- #11 v2 — gears (AGMA), shafts (Goodman/Soderberg), bearings (L10), welds (throat stress)
|
|
1396
|
+
- #12 — RAG + citations (@xenova/transformers MiniLM, IndexedDB, "Open Document" footnotes)
|
|
1397
|
+
|
|
1398
|
+
**cycleCAD quick wins** (ship 3.10.5 next):
|
|
1399
|
+
- #13 — more AI Copilot templates (brackets, T-slots 40/40 + 80/40, bearings, cutouts)
|
|
1400
|
+
- #14 — polyline → geometry in mini-executor (unblocks involute gear teeth)
|
|
1401
|
+
|
|
1402
|
+
**cycleCAD other**:
|
|
1403
|
+
- #15 dynamic version badge · #16 wire splash buttons · #17 run test-agent.html (113 tests) · #18 text-to-CAD live preview · #19 photo-to-CAD · #20 server-side 138MB STEP · #21 docker compose test
|
|
1404
|
+
|
|
1405
|
+
**ExplodeView**:
|
|
1406
|
+
- #22 compositing render (transparent background + Nano Banana + canvas composite, bypasses "generative ≠ inpainting") · #23 killer-features-test · #24 block-only-in-chrome repro
|
|
1407
|
+
|
|
1408
|
+
**Suite website**:
|
|
1409
|
+
- Port mockup into production index.html once motion is approved
|
|
1410
|
+
- Build dedicated /pentacad.html marketing page in same style
|
|
1411
|
+
|
|
1412
|
+
### Recommended next sprint
|
|
1413
|
+
#13 + #14 as warm-ups (ship 3.10.5 fast), then #10 as the big strategic work.
|
|
1414
|
+
|
|
1415
|
+
### Handoff files for next chat
|
|
1416
|
+
- `~/cyclecad/HANDOFF-2026-04-24.md` (earlier session — AI Render v304 + Pages workflow)
|
|
1417
|
+
- `~/cyclecad/HANDOFF-2026-04-24-session-2.md` (this session — Pentacad + Matt + mockup)
|
|
1418
|
+
|
|
1419
|
+
Both should be read together when resuming.
|
|
1420
|
+
|
|
1421
|
+
## Session 2026-04-24 (session 3) — cyclecad 3.10.5 ship + AI Engineering Analyst v1
|
|
1422
|
+
|
|
1423
|
+
### Sprint executed (per session-2 handoff recommendation)
|
|
1424
|
+
|
|
1425
|
+
**Task #14 — Polyline support in mini-executor** ✅
|
|
1426
|
+
- `app/js/modules/ai-copilot.js` `sketch.polyline` method: accepts `{points:[[x,z],[x,z],...]}`, min 3 points
|
|
1427
|
+
- `ops.extrude` now handles `shape==='polyline'` via `THREE.Shape` + `THREE.ExtrudeGeometry`
|
|
1428
|
+
- Coordinate math: `Shape.moveTo(x, -z)` compensates for `rotateX(-π/2)` so user input `[x,z]` maps to world X,Z correctly
|
|
1429
|
+
- `g.translate(0, 0, -d/2)` before rotate to center along extrude axis, matching `BoxGeometry` / `CylinderGeometry` convention
|
|
1430
|
+
- `SYSTEM_PROMPT` updated so LLM knows about the method
|
|
1431
|
+
- Unblocks true involute gear teeth, real T-slot cross-sections, custom 2D cams/profiles
|
|
1432
|
+
|
|
1433
|
+
**Task #13 — More AI Copilot templates** ✅
|
|
1434
|
+
Added 4 new templates to `matchTemplate()` in `app/js/modules/ai-copilot.js`:
|
|
1435
|
+
1. **Ball bearing (ISO 15 / DIN 625)** — lookup table of 20 standard deep-groove designations (608, 625, 6000-6006, 6200-6206, 6300-6304). Matches `"6200 bearing"`, `"6203 deep-groove bearing"`, `"608 bearing"`, etc.
|
|
1436
|
+
2. **Generic ball bearing with bore** — matches `"ball bearing 15mm bore"`. Uses approximation `OD ≈ 2.5·bore + 10, B ≈ 0.4·bore + 4` for 62xx-series sizing.
|
|
1437
|
+
3. **Bearing housing / pocket** — matches `"bearing housing"`, `"bearing pocket for 6204"`, `"bearing seat"`. Block with recess, shaft clearance bore, 4 mounting holes at corners. If a bearing designation is present, looks up its OD automatically.
|
|
1438
|
+
4. **T-slot aluminum extrusion** — matches `"2020 t-slot extrusion"`, `"4040 aluminum extrusion 1000mm"`, `"4080 profile"`, `"40x40 extrusion"`. Solid rect extrusion with 4 slot cuts (one per face). Double-wide profiles (4080) get extra slots on the long faces.
|
|
1439
|
+
5. **U-bracket / channel bracket** — matches `"U-bracket 60mm wide 40mm high 120mm long"`, `"channel bracket 80mm long"`. Box with rectangular pocket cut from top, leaves base + 2 side walls. Includes configurable mounting holes through base.
|
|
1440
|
+
|
|
1441
|
+
Priority/ordering details:
|
|
1442
|
+
- Housing keyword detection (`bearing housing|pocket|seat|recess|mount`) runs BEFORE the bearing code regex so `"bearing pocket for 6204"` routes to the housing template with OD=47 looked up from the 6204 spec, not built as a bearing body.
|
|
1443
|
+
- T-slot length fallback: if no `"Nmm long"` keyword, take the largest `\d+mm` value that isn't the profile code (handles `"4040 extrusion 1000mm"`).
|
|
1444
|
+
|
|
1445
|
+
### Smoke tests (run via `node /tmp/smoke.js` with stubbed globals)
|
|
1446
|
+
All 15 prompts match/reject correctly:
|
|
1447
|
+
- Specific bearing designations: `6200`, `6203`, `608` → bearing body w/ looked-up dims
|
|
1448
|
+
- Generic bearing w/ bore: `"ball bearing 15mm bore"` → approximated Ø48×10
|
|
1449
|
+
- Housing w/ explicit OD: `"bearing housing for a 32mm OD bearing"` → 48×48×15 block
|
|
1450
|
+
- Housing w/ designation: `"bearing pocket for 6204"` → 63×63×19 block (OD=47 from lookup)
|
|
1451
|
+
- T-slot variants: `2020`, `4040` (with 500mm, 1000mm, 600mm lengths)
|
|
1452
|
+
- U-bracket with/without dims and hole counts
|
|
1453
|
+
- Regression: spur gear + M8 nut still work
|
|
1454
|
+
- Unrelated prompt correctly returns `null`
|
|
1455
|
+
|
|
1456
|
+
### Key files changed in 3.10.5
|
|
1457
|
+
| File | Delta | Notes |
|
|
1458
|
+
|------|-------|-------|
|
|
1459
|
+
| `app/js/modules/ai-copilot.js` | +190 lines | 4 templates + polyline support + docs |
|
|
1460
|
+
| `package.json` | version 3.10.4 → 3.10.5 | |
|
|
1461
|
+
| `CLAUDE.md` | This block | Session 3 notes |
|
|
1462
|
+
|
|
1463
|
+
### Task #10 — AI Engineering Analyst v1 ✅ SHIPPED (3.11.0)
|
|
1464
|
+
|
|
1465
|
+
**File**: `app/js/modules/ai-engineer.js` (~570 lines).
|
|
1466
|
+
|
|
1467
|
+
**Architecture delivered:**
|
|
1468
|
+
- **Analytical core** (pure JS math, 0 deps) — `boltedJointAnalysis(params)` returns `{inputs, slipResistance, tensionCheck, combinedStress, verdict, verdictClass, notes}`. All numbers are computed deterministically — no LLM fabrication possible.
|
|
1469
|
+
- **Reference tables** (ISO/DIN data, frozen objects):
|
|
1470
|
+
- `STEEL_GRADES` — 8 ISO 898-1 property classes (4.6 through 12.9) with R_m, R_p0.2, R_el
|
|
1471
|
+
- `BOLT_STRESS_AREA` — DIN 13 A_s for 26 thread sizes M3–M56
|
|
1472
|
+
- `BOLT_MAJOR_DIA` — nominal dia per thread
|
|
1473
|
+
- `FRICTION_PRESETS` — VDI 2230 Table A6 surface conditions
|
|
1474
|
+
- **Natural-language parser** — `parseBoltedJointPrompt(text)` extracts boltCount, thread, grade, forces (kN/N), moment (Nm/kNm), preload, bcd, friction, safetyFactor. Tested against MecAgent's verbatim problem statement → all 10 params extracted correctly.
|
|
1475
|
+
- **UI** — dialog-mounted form with:
|
|
1476
|
+
- Free-text prompt → "Parse" button that auto-fills all fields
|
|
1477
|
+
- 11-field input grid with live recompute on any change
|
|
1478
|
+
- 3 preset buttons (MecAgent demo, flange M8 light, heavy M20)
|
|
1479
|
+
- Live report with verdict banner (green/yellow/red), 3 check sections (slip / tension / stress), KaTeX-rendered formulas, pass/fail messages per check
|
|
1480
|
+
- Collapsible self-test panel showing the MecAgent reference comparison
|
|
1481
|
+
- **KaTeX integration** — loaded on demand from CDN (jsdelivr), 0.16.21. Non-blocking, falls back to LaTeX source text if CDN fails.
|
|
1482
|
+
- **Menu wiring** — Tools → `🔩 AI Engineering Analyst` opens the dialog.
|
|
1483
|
+
|
|
1484
|
+
**Analytical verification (self-tests in module):**
|
|
1485
|
+
All 7 tests pass against MecAgent screenshot numbers within tolerance:
|
|
1486
|
+
```
|
|
1487
|
+
PASS: F_friction actual=24960.00 expected≈24960
|
|
1488
|
+
PASS: F_moment/bolt actual=2187.50 expected≈2187.5
|
|
1489
|
+
PASS: F_bolt_max_tang actual=6687.50 expected≈6687.5
|
|
1490
|
+
PASS: F_bolt_total actual=45687.50 expected≈45687.5
|
|
1491
|
+
PASS: σ (tensile) actual=541.96 expected≈542
|
|
1492
|
+
PASS: τ (shear) actual=79.33 expected≈79
|
|
1493
|
+
PASS: σ_vm actual=559.11 expected≈558
|
|
1494
|
+
overall: PASS
|
|
1495
|
+
```
|
|
1496
|
+
|
|
1497
|
+
Self-tests run automatically on `init()` — warnings logged if any fail. Also available as `window.CycleCAD.AIEngineer.runSelfTests()`.
|
|
1498
|
+
|
|
1499
|
+
**Verdict classification:**
|
|
1500
|
+
- `SAFE` — both slip and stress checks pass.
|
|
1501
|
+
- `SAFE (bearing-type)` — stress OK but slip fails. Bolts carry shear directly; common in practice.
|
|
1502
|
+
- `UNSAFE` — stress check fails. Bolt will yield.
|
|
1503
|
+
|
|
1504
|
+
For the MecAgent problem with defaults it correctly returns "SAFE (bearing-type)" because σ_vm=559 < R_p0.2=830 but F_friction=24960 < F_required=39000.
|
|
1505
|
+
|
|
1506
|
+
**Public API:**
|
|
1507
|
+
```js
|
|
1508
|
+
window.CycleCAD.AIEngineer = {
|
|
1509
|
+
analyze(params), // run analysis, returns structured result
|
|
1510
|
+
parsePrompt(text), // NL → params
|
|
1511
|
+
runSelfTests(), // {results[], allPass}
|
|
1512
|
+
STEEL_GRADES, BOLT_STRESS_AREA, BOLT_MAJOR_DIA, FRICTION_PRESETS,
|
|
1513
|
+
init(), getUI(),
|
|
1514
|
+
execute(cmd, params) // 'analyze' | 'parse' | 'show'
|
|
1515
|
+
};
|
|
1516
|
+
```
|
|
1517
|
+
|
|
1518
|
+
**Scope v1 limits (to address in task #11 / #12):**
|
|
1519
|
+
- Load factor Φ simplified to 1 (conservative — real VDI 2230 uses 0.1–0.3 for gasketed joints).
|
|
1520
|
+
- Bolt-circle geometry assumes uniform spacing (moment redistribution formula M / (z·r) is exact for that case).
|
|
1521
|
+
- No fatigue check.
|
|
1522
|
+
- No ball-bearing / shaft / gear / weld analysis — v2 will add these.
|
|
1523
|
+
- No RAG / textbook citations — v3.
|
|
1524
|
+
|
|
1525
|
+
### 3.11.0 files changed
|
|
1526
|
+
| File | Delta |
|
|
1527
|
+
|------|-------|
|
|
1528
|
+
| `app/js/modules/ai-engineer.js` | new, 570 lines |
|
|
1529
|
+
| `app/index.html` | +3 lines (menu entry, dispatch case, script tag) |
|
|
1530
|
+
| `package.json` | 3.10.5 → 3.11.0 |
|
|
1531
|
+
|
|
1532
|
+
### Ship commands (both 3.10.5 + 3.11.0 in a single push)
|
|
1533
|
+
|
|
1534
|
+
Commits landed in the VM:
|
|
1535
|
+
- `41d4862` — v3.10.5 (AI Copilot polyline + bearing / housing / T-slot / U-bracket templates)
|
|
1536
|
+
- HEAD (pending commit) — v3.11.0 (AI Engineering Analyst v1)
|
|
1537
|
+
|
|
1538
|
+
Push + publish in one combined command (lock-file prefix handles the VM-generated `.git/*.lock` cruft):
|
|
1539
|
+
```bash
|
|
1540
|
+
rm -f ~/cyclecad/.git/HEAD.lock ~/cyclecad/.git/index.lock && \
|
|
1541
|
+
cd ~/cyclecad && \
|
|
1542
|
+
git push origin main && \
|
|
1543
|
+
npm publish
|
|
1544
|
+
```
|
|
1545
|
+
|
|
1546
|
+
If the 3.10.5 commit was also pending as of this handoff, `git push` covers both in one shot. The `npm publish` publishes 3.11.0 (latest version in `package.json`). 3.10.5 is not separately published to npm since 3.11.0 supersedes it — users bumping from 3.10.4 get both feature sets at once.
|
|
1547
|
+
|
|
1548
|
+
### Pending after this session
|
|
1549
|
+
- #11 AI Engineering Analyst v2 — gears (AGMA bending + pitting), shafts (Goodman/Soderberg), bearings (L10), welds (throat stress)
|
|
1550
|
+
- #12 AI Engineering Analyst — RAG citations via `@xenova/transformers` MiniLM-L6-v2 + IndexedDB + "Open Document" footnote UI
|
|
1551
|
+
- All other pending tasks from session 2 handoff (#15-24)
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
# Handoff — 2026-04-24, session 2 → next chat
|
|
2
|
+
|
|
3
|
+
Drop this file into the next chat (or tell Claude to read it). Continues the earlier handoff from the same day; read both.
|
|
4
|
+
|
|
5
|
+
## Who I am
|
|
6
|
+
- **SACHIN** (vvlars@googlemail.com, GitHub vvlars-cmd)
|
|
7
|
+
- Building the **cycleCAD Suite** — now three products: cycleCAD + ExplodeView + Pentacad
|
|
8
|
+
- Working style: fast iteration, minimal clarifying questions, clipboard-paste commands via terminal, Safari private window for testing
|
|
9
|
+
- Full persistent memory: `~/cyclecad/CLAUDE.md` and `~/explodeview/CLAUDE.md`
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## THE BIG STRATEGIC UPDATES THIS SESSION
|
|
14
|
+
|
|
15
|
+
### 1. Suite positioning crystallised
|
|
16
|
+
**cycleCAD Suite** is the umbrella brand at cyclecad.com. Three products under it:
|
|
17
|
+
|
|
18
|
+
| Product | What | License | Status |
|
|
19
|
+
|---|---|---|---|
|
|
20
|
+
| **cycleCAD** | Parametric 3D CAD modeller (the core) | MIT | Live |
|
|
21
|
+
| **ExplodeView** | 3D viewer, AI render, AR, analysis | MIT | Live |
|
|
22
|
+
| **Pentacad** | CAM + 5-axis simulator + Kinetic Control bridge | AGPL-3 / commercial dual | Phase 0 scaffolded |
|
|
23
|
+
|
|
24
|
+
**Key decision**: Pentacad is built as a **cycleCAD module**, NOT a separate repo. Lives at `~/cyclecad/app/js/modules/pentacad*.js`. Follows the existing `window.CycleCAD.ModuleName` IIFE pattern used by every other cycleCAD module.
|
|
25
|
+
|
|
26
|
+
### 2. Pentamachine / Matt status — CRITICAL
|
|
27
|
+
**Matt agreed to send files without NDA**, but his reply included a red flag:
|
|
28
|
+
|
|
29
|
+
> "We do provide feedback for 4+ companies that are working on similar CAM concepts to yours."
|
|
30
|
+
|
|
31
|
+
**What this means:**
|
|
32
|
+
- Matt is a **neutral ecosystem supplier**, not a partner candidate
|
|
33
|
+
- He legally has no confidentiality obligation toward us
|
|
34
|
+
- Ideas we share with him will influence his feedback to other teams (whether he means to or not)
|
|
35
|
+
|
|
36
|
+
**Revised strategy:**
|
|
37
|
+
- **Do not lead with JV** — the equity/partnership proposal is dead until Pentacad is a proven product
|
|
38
|
+
- **Pilot-first**: build cycleCAD Suite Pentacad extension in silence, ship polished demos (not source, not architecture docs), public launch before Matt asks for exclusivity
|
|
39
|
+
- Commercial conversation sequence: Phase 0-1 = silent, Phase 2 = open license discussion, Phase 3 = exclusive EU resale if warranted, JV only if Matt proactively offers equity
|
|
40
|
+
|
|
41
|
+
**Full tactical playbook**: `~/Documents/Penta/pentacad-notes/pilot-intelligence-brief.md` (private, DO NOT share with Matt)
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## What shipped this session
|
|
46
|
+
|
|
47
|
+
### Pentacad extension inside cycleCAD (`~/cyclecad/`)
|
|
48
|
+
New files, follow the existing cycleCAD IIFE module pattern (`window.CycleCAD.Pentacad*`):
|
|
49
|
+
|
|
50
|
+
| File | Purpose |
|
|
51
|
+
|---|---|
|
|
52
|
+
| `app/js/modules/pentacad.js` | Coordinator module — registers sub-modules, machine picker UI, public API |
|
|
53
|
+
| `app/js/modules/pentacad-cam.js` | 12 CAM strategies (stubs), post-processor skeleton for Pentamachine .ngc dialect |
|
|
54
|
+
| `app/js/modules/pentacad-sim.js` | G-code parser skeleton, forward-kinematics stub for 5-axis A/B tables |
|
|
55
|
+
| `app/js/modules/pentacad-bridge.js` | WebSocket client for controller bridge — jog/stream/DRO/pause/abort scaffolding |
|
|
56
|
+
| `app/pentacad.html` | Dedicated UI entry point — split-screen viewport + machine picker + workspace tabs |
|
|
57
|
+
| `machines/v2-50-chb/kinematics.json` | Template values marked `_confirmed: false` until Matt sends real data |
|
|
58
|
+
|
|
59
|
+
Load via `<script src="./js/modules/pentacad-cam.js"></script>` etc. in `app/pentacad.html`. Coordinator auto-initialises on DOMContentLoaded unless `window.CycleCAD.SkipPentacadInit` is set.
|
|
60
|
+
|
|
61
|
+
### cyclecad.com suite landing mockup (`~/cyclecad/mockups/`)
|
|
62
|
+
- `cyclecad-suite-mockup.html` — full animated wireframe for the new suite landing page
|
|
63
|
+
- `index-agent-first.html.bak` — backup of the previous index.html (agent-first OS-of-manufacturing framing)
|
|
64
|
+
|
|
65
|
+
**Page structure** (top to bottom):
|
|
66
|
+
1. **Hero** — "From idea to finished part. One browser tab." Staggered fade-up, animated kicker dot, drifting orbs, spinning logo
|
|
67
|
+
2. **Lifecycle strip** — 5 stages (Ideate / Design / Present / CAM / Produce). Rainbow gradient line draws across all 5 chips when it scrolls into view
|
|
68
|
+
3. **End-to-End Journeys section** — 3 animated product examples:
|
|
69
|
+
- 🔔 Custom bike bell (consumer, 6 days, €345, 23 pre-orders)
|
|
70
|
+
- ⚙️ Precision flange (B2B, 3 days, €2,400, 50-unit PO)
|
|
71
|
+
- 🍺 Branded bottle-opener ring (promo, 2 days, €1,900, 100 units)
|
|
72
|
+
- Each cycles through 6 lifecycle steps (idea → design → market → sell → manufacture → feedback) on a 15s loop with 2.5s per step, rows offset by one step, hover to pause, click step to jump
|
|
73
|
+
4. **5 stage deep-dive sections** — each with SVG animations (typing terminal, line-draw CAD, exploded parts, toolpath tracing, data flow arrows)
|
|
74
|
+
5. **Products grid** — 3 cards (cycleCAD gold / ExplodeView teal / Pentacad emerald)
|
|
75
|
+
6. **Stats, CTA, founder note, footer**
|
|
76
|
+
|
|
77
|
+
Production version **not yet written** — the mockup is the design spec. When approved, port into real `/index.html`.
|
|
78
|
+
|
|
79
|
+
### Pentamachine deliverables (`~/Documents/Penta/pentacad-deliverables/`)
|
|
80
|
+
- `ARCHITECTURE.md` — full Pentacad system architecture (repo doc, shareable)
|
|
81
|
+
- `Pentacad-Complete.pptx` — 25-slide deck (16 architecture + 8 private intelligence brief + dividers)
|
|
82
|
+
- `Pentacad-Complete.pdf` — same content, non-editable
|
|
83
|
+
- `pilot-intelligence-brief.md` — full tactical playbook for managing Matt
|
|
84
|
+
|
|
85
|
+
**Separate** private notes at `~/Documents/Penta/pentacad-notes/pilot-intelligence-brief.md`.
|
|
86
|
+
|
|
87
|
+
### Standalone pentacad repo (SUPERSEDED but preserved)
|
|
88
|
+
- Located at `~/Documents/Penta/pentacad/`
|
|
89
|
+
- Full monorepo scaffold I built before the user pivoted to the "cycleCAD module" approach
|
|
90
|
+
- Keep as reference — useful pieces (LICENSE, .gitignore, README, CLAUDE.md, web-app main.js, CAM module index, strategies registry) can be copied if ever needed
|
|
91
|
+
- Do not commit as a separate repo
|
|
92
|
+
|
|
93
|
+
### Emails drafted (for Matt, Penta Machine Company)
|
|
94
|
+
1. **Short JV proposal** — not used; user went pilot-first instead
|
|
95
|
+
2. **Long-form detailed proposal** — kept in reserve
|
|
96
|
+
3. **Follow-up acknowledging 4+ competitors** — softer tone, pilot framing
|
|
97
|
+
4. **Phase 0-3 file request** — the canonical list of what Matt needs to send
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## What Matt already sent vs still missing
|
|
102
|
+
|
|
103
|
+
**In `~/Documents/Penta/` right now:**
|
|
104
|
+
- Marketing kit (logos, spec PDFs, product videos, photos)
|
|
105
|
+
- Installation guides (.docx) for V2-10 and V2-50
|
|
106
|
+
- **One real technical artifact**: `Sample Part for Demonstration/Ring Aluminum V2-50/`
|
|
107
|
+
- Fusion 360 archive (`.f3z`) with CAM setup
|
|
108
|
+
- 3 × `.ngc` files — 5-axis G-code confirming A/B kinematics, G20 imperial, G93 inverse-time feed, 40000 RPM spindle
|
|
109
|
+
|
|
110
|
+
**Still blocking Phase 0 (the foundation work):**
|
|
111
|
+
1. Native 3D models of V2-10, V2-50CHB, V2-50CHK (STEP or Fusion/Inventor) — need for digital twin
|
|
112
|
+
2. Machine kinematics JSON (A/B offsets, travel, home, tool-length zero, soft limits)
|
|
113
|
+
|
|
114
|
+
**Needed for later phases:**
|
|
115
|
+
3. LinuxCNC version / Kinetic Control fork reference + HAL / INI files
|
|
116
|
+
4. Fusion 360 post-processor (`.cps`) — to match the dialect exactly
|
|
117
|
+
5. Tool library (ER11/ER40 holders, tool numbers, max RPM)
|
|
118
|
+
6. Feeds & speeds defaults per material
|
|
119
|
+
7. Kinetic Control IPC/WebSocket API surface
|
|
120
|
+
8. Simulator source (if separate from control)
|
|
121
|
+
|
|
122
|
+
**Status**: Matt agreed to send items 1-8, awaiting delivery. Safe to continue cycleCAD and ExplodeView work in parallel.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Pending task inbox (15 items, from tracker #10-24)
|
|
127
|
+
|
|
128
|
+
### Priority strategic work
|
|
129
|
+
- **#10** · AI Engineering Analyst v1 — bolted-joint analysis. Biggest competitive gap vs MecAgent. Target: `app/js/modules/ai-engineer.js` (~800-1200 lines). Analytical-core-first (pure JS math, unit-tested against MecAgent screenshot numbers: F_friction=24960N, F_max_tensile=6687.5N, σ_vm=558MPa), then KaTeX rendering, then LLM tool-use layer, then RAG.
|
|
130
|
+
- **#11** · AI Engineering Analyst v2 — gears (AGMA), shafts (Goodman/Soderberg), bearings (L10), welds (throat stress)
|
|
131
|
+
- **#12** · AI Engineering Analyst — RAG + citations (@xenova/transformers MiniLM-L6-v2, IndexedDB, MecAgent-style "Open Document" footnotes)
|
|
132
|
+
|
|
133
|
+
### cycleCAD quick wins
|
|
134
|
+
- **#13** · Ship 3.10.5 — more AI Copilot templates (mounting brackets, T-slot extrusions 40/40 + 80/40, ball/roller bearings, bearing cutouts). Same pattern as gear/pulley/shaft block in 3.10.4.
|
|
135
|
+
- **#14** · Polyline → geometry support in mini-executor. Unblocks true involute gear teeth.
|
|
136
|
+
|
|
137
|
+
### cycleCAD
|
|
138
|
+
- **#15** · Dynamic version badge in status bar (currently hardcoded v0.9.0)
|
|
139
|
+
- **#16** · Wire splash screen buttons (New Sketch / Open-Import / Text-to-CAD / Inventor Project)
|
|
140
|
+
- **#17** · Run `app/test-agent.html` (113 tests, 15 categories), fix failures
|
|
141
|
+
- **#18** · Text-to-CAD with live preview
|
|
142
|
+
- **#19** · Photo-to-CAD reverse engineering
|
|
143
|
+
- **#20** · Server-side 138MB STEP import (FastAPI converter path, safer than opencascade.js v293)
|
|
144
|
+
- **#21** · Docker compose local test
|
|
145
|
+
|
|
146
|
+
### ExplodeView
|
|
147
|
+
- **#22** · Compositing render for guaranteed CAD preservation. Post-v304 follow-up. Render 3D with transparent background, send only cropped background region to Nano Banana, composite 3D foreground over generated background in canvas. Bypasses "generative ≠ inpainting" limitation entirely.
|
|
148
|
+
- **#23** · Run `docs/demo/killer-features-test.html`, fix failures
|
|
149
|
+
- **#24** · Repro `block-only-in-chrome` ExplodeView bug (user report, unclear trigger)
|
|
150
|
+
|
|
151
|
+
### Suite website
|
|
152
|
+
- Port the `mockups/cyclecad-suite-mockup.html` design into production `/index.html` once motion is approved
|
|
153
|
+
- Build dedicated `/pentacad.html` product marketing page in the same style
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Recommended next sprint
|
|
158
|
+
|
|
159
|
+
**Cheap high-impact**: #13 + #14. Ships 3.10.5, unlocks real gear teeth.
|
|
160
|
+
**Strategic**: #10 — AI Engineering Analyst v1. Biggest competitive moat, direct MecAgent parity.
|
|
161
|
+
**While waiting on Matt**: #22 (compositing render for ExplodeView) and #17 (run cycleCAD test agent).
|
|
162
|
+
|
|
163
|
+
Do #13 + #14 as warm-up, then go big on #10.
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Critical operational context (unchanged from earlier handoff)
|
|
168
|
+
|
|
169
|
+
- **Git lock dance**: VM commits leave stale `.git/*.lock` files. Always give ONE combined command:
|
|
170
|
+
```bash
|
|
171
|
+
rm -f ~/REPO/.git/index.lock ~/REPO/.git/HEAD.lock && cd ~/REPO && git add ... && git commit -m "..." && git push origin main
|
|
172
|
+
```
|
|
173
|
+
- **Clipboard delivery**: Commands via `mcp__computer-use__write_clipboard` → user pastes in Terminal. Must switch OFF Terminal (make Chrome or another app frontmost) before writing — Terminal is tier-"click" and blocks clipboard writes when frontmost.
|
|
174
|
+
- **Egress allowlist**: `explodeview.com` and `cyclecad.com` are NOT on the allowlist. Use `npm registry` (allowed) for version verification. For live-site checks, ask user to add domain or use Claude-in-Chrome MCP.
|
|
175
|
+
- **Deferred tools**: Schemas load on demand. Load computer-use in bulk `{query: "computer-use", max_results: 30}`, chrome `{query: "chrome", max_results: 20}`.
|
|
176
|
+
- **GitHub Pages concurrent-deploy fix**: shipped 2026-04-24 in `.github/workflows/pages.yml` with `concurrency: group: pages, cancel-in-progress: true`.
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Current npm versions
|
|
181
|
+
|
|
182
|
+
- `cyclecad`: **3.10.4** (next: 3.10.5 with AI Copilot templates, OR 3.11.0 with AI Engineering Analyst)
|
|
183
|
+
- `explodeview`: **1.0.22** / v304 (preservation-first `buildPrompt()` rewrite shipped earlier this session)
|
|
184
|
+
|
|
185
|
+
## Latest commits
|
|
186
|
+
|
|
187
|
+
- ExplodeView: `41471f3` v1.0.22 tag, `b47d6a9` v304 code
|
|
188
|
+
- cycleCAD: HEAD clean before session; **unstaged changes this session** in:
|
|
189
|
+
- `app/js/modules/pentacad.js` + `pentacad-cam.js` + `pentacad-sim.js` + `pentacad-bridge.js` (new)
|
|
190
|
+
- `app/pentacad.html` (new)
|
|
191
|
+
- `machines/v2-50-chb/kinematics.json` (new)
|
|
192
|
+
- `mockups/cyclecad-suite-mockup.html` (new)
|
|
193
|
+
- `index-agent-first.html.bak` (new)
|
|
194
|
+
- `HANDOFF-2026-04-24-session-2.md` (this file, new)
|
|
195
|
+
|
|
196
|
+
Nothing pushed yet — waiting on user to commit.
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Suggested commit + push
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
rm -f ~/cyclecad/.git/index.lock ~/cyclecad/.git/HEAD.lock && \
|
|
204
|
+
cd ~/cyclecad && \
|
|
205
|
+
git add app/js/modules/pentacad.js \
|
|
206
|
+
app/js/modules/pentacad-cam.js \
|
|
207
|
+
app/js/modules/pentacad-sim.js \
|
|
208
|
+
app/js/modules/pentacad-bridge.js \
|
|
209
|
+
app/pentacad.html \
|
|
210
|
+
machines/v2-50-chb/kinematics.json \
|
|
211
|
+
mockups/cyclecad-suite-mockup.html \
|
|
212
|
+
HANDOFF-2026-04-24-session-2.md \
|
|
213
|
+
index-agent-first.html.bak && \
|
|
214
|
+
git commit -m "Pentacad extension scaffold + suite landing mockup
|
|
215
|
+
|
|
216
|
+
- app/js/modules/pentacad*.js: 4 new modules (coordinator, CAM, sim, bridge)
|
|
217
|
+
- app/pentacad.html: dedicated Pentacad UI entry point
|
|
218
|
+
- machines/v2-50-chb/: template kinematics JSON (awaiting real data from Matt)
|
|
219
|
+
- mockups/cyclecad-suite-mockup.html: animated suite landing page with 3 end-to-end journey examples
|
|
220
|
+
- HANDOFF-2026-04-24-session-2.md: session handoff" && \
|
|
221
|
+
git push origin main
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## How to resume in the next chat
|
|
227
|
+
|
|
228
|
+
1. Read `~/cyclecad/CLAUDE.md` (has been updated with suite positioning + Matt status + Pentacad extension)
|
|
229
|
+
2. Read `~/explodeview/CLAUDE.md` (not modified this session, earlier context still current)
|
|
230
|
+
3. Read `~/cyclecad/HANDOFF-2026-04-24.md` (the earlier session today — AI Render fix, GitHub Pages workflow)
|
|
231
|
+
4. Read **this file** for session-2 context
|
|
232
|
+
5. Read `~/Documents/Penta/pentacad-notes/pilot-intelligence-brief.md` if anything Matt-related comes up
|
|
233
|
+
6. Open `~/cyclecad/mockups/cyclecad-suite-mockup.html` in Chrome to see the suite landing design
|
|
234
|
+
7. Review deliverables at `~/Documents/Penta/pentacad-deliverables/`
|
|
235
|
+
8. Ask me which of tasks #10-24 to start with, or just kick off #13 + #14 + #10 as the recommended sprint
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
*File generated at end of session 2 on 2026-04-24. Next chat picks up from here.*
|