cyclecad 3.2.0 → 3.4.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/DOCKER-SETUP-VERIFICATION.md +399 -0
- package/DOCKER-TESTING.md +463 -0
- package/FUSION360_MODULES.md +478 -0
- package/FUSION_MODULES_README.md +352 -0
- package/INTEGRATION_SNIPPETS.md +608 -0
- package/KILLER-FEATURES-DELIVERY.md +469 -0
- package/MODULES_SUMMARY.txt +337 -0
- package/QUICK_REFERENCE.txt +298 -0
- package/README-DOCKER-TESTING.txt +438 -0
- package/app/index.html +23 -10
- package/app/js/fusion-help.json +1808 -0
- package/app/js/help-module-v3.js +1096 -0
- package/app/js/killer-features-help.json +395 -0
- package/app/js/killer-features.js +1508 -0
- package/app/js/modules/fusion-assembly.js +842 -0
- package/app/js/modules/fusion-cam.js +785 -0
- package/app/js/modules/fusion-data.js +814 -0
- package/app/js/modules/fusion-drawing.js +844 -0
- package/app/js/modules/fusion-inspection.js +756 -0
- package/app/js/modules/fusion-render.js +774 -0
- package/app/js/modules/fusion-simulation.js +986 -0
- package/app/js/modules/fusion-sketch.js +1044 -0
- package/app/js/modules/fusion-solid.js +1095 -0
- package/app/js/modules/fusion-surface.js +949 -0
- package/app/tests/FUSION_TEST_SUITE.md +266 -0
- package/app/tests/README.md +77 -0
- package/app/tests/TESTING-CHECKLIST.md +177 -0
- package/app/tests/TEST_SUITE_SUMMARY.txt +236 -0
- package/app/tests/brep-live-test.html +848 -0
- package/app/tests/docker-integration-test.html +811 -0
- package/app/tests/fusion-all-tests.html +670 -0
- package/app/tests/fusion-assembly-tests.html +461 -0
- package/app/tests/fusion-cam-tests.html +421 -0
- package/app/tests/fusion-simulation-tests.html +421 -0
- package/app/tests/fusion-sketch-tests.html +613 -0
- package/app/tests/fusion-solid-tests.html +529 -0
- package/app/tests/index.html +453 -0
- package/app/tests/killer-features-test.html +509 -0
- package/app/tests/run-tests.html +874 -0
- package/app/tests/step-import-live-test.html +1115 -0
- package/app/tests/test-agent-v3.html +93 -696
- package/architecture-dashboard.html +1970 -0
- package/docs/API-REFERENCE.md +1423 -0
- package/docs/BREP-LIVE-TEST-GUIDE.md +453 -0
- package/docs/DEVELOPER-GUIDE-v3.md +795 -0
- package/docs/DOCKER-QUICK-TEST.md +376 -0
- package/docs/FUSION-FEATURES-GUIDE.md +2513 -0
- package/docs/FUSION-TUTORIAL.md +1203 -0
- package/docs/INFRASTRUCTURE-GUIDE-INDEX.md +327 -0
- package/docs/KEYBOARD-SHORTCUTS.md +402 -0
- package/docs/KILLER-FEATURES-INTEGRATION.md +412 -0
- package/docs/KILLER-FEATURES-SUMMARY.md +424 -0
- package/docs/KILLER-FEATURES-TUTORIAL.md +784 -0
- package/docs/KILLER-FEATURES.md +562 -0
- package/docs/QUICK-REFERENCE.md +282 -0
- package/docs/README-v3-DOCS.md +274 -0
- package/docs/TUTORIAL-v3.md +1190 -0
- package/docs/architecture-dashboard.html +1970 -0
- package/docs/architecture-v3.html +1038 -0
- package/linkedin-post-v3.md +58 -0
- package/package.json +1 -1
- package/scripts/dev-setup.sh +338 -0
- package/scripts/docker-health-check.sh +159 -0
- package/scripts/integration-test.sh +311 -0
- package/scripts/test-docker.sh +515 -0
|
@@ -0,0 +1,1970 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>cycleCAD & ExplodeView - Architecture Dashboard</title>
|
|
7
|
+
<style>
|
|
8
|
+
:root {
|
|
9
|
+
/* Catppuccin Mocha palette */
|
|
10
|
+
--bg-primary: #1e1e2e;
|
|
11
|
+
--bg-secondary: #313244;
|
|
12
|
+
--bg-tertiary: #45475a;
|
|
13
|
+
--text-primary: #cdd6f4;
|
|
14
|
+
--text-secondary: #a6adc8;
|
|
15
|
+
--accent-blue: #89b4fa;
|
|
16
|
+
--accent-cyan: #94e2d5;
|
|
17
|
+
--accent-green: #a6e3a1;
|
|
18
|
+
--accent-yellow: #f9e2af;
|
|
19
|
+
--accent-red: #f38ba8;
|
|
20
|
+
--accent-purple: #cba6f7;
|
|
21
|
+
--accent-peach: #fab387;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
* {
|
|
25
|
+
margin: 0;
|
|
26
|
+
padding: 0;
|
|
27
|
+
box-sizing: border-box;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
body {
|
|
31
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
|
32
|
+
background-color: var(--bg-primary);
|
|
33
|
+
color: var(--text-primary);
|
|
34
|
+
line-height: 1.6;
|
|
35
|
+
overflow-x: hidden;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* Header */
|
|
39
|
+
header {
|
|
40
|
+
background: linear-gradient(135deg, var(--bg-secondary) 0%, var(--bg-tertiary) 100%);
|
|
41
|
+
border-bottom: 2px solid var(--accent-blue);
|
|
42
|
+
padding: 2rem;
|
|
43
|
+
text-align: center;
|
|
44
|
+
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
header h1 {
|
|
48
|
+
font-size: 2.5rem;
|
|
49
|
+
margin-bottom: 0.5rem;
|
|
50
|
+
background: linear-gradient(135deg, var(--accent-cyan), var(--accent-blue), var(--accent-purple));
|
|
51
|
+
-webkit-background-clip: text;
|
|
52
|
+
-webkit-text-fill-color: transparent;
|
|
53
|
+
background-clip: text;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
header p {
|
|
57
|
+
color: var(--text-secondary);
|
|
58
|
+
font-size: 1.1rem;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* Tab Navigation */
|
|
62
|
+
.tab-nav {
|
|
63
|
+
position: sticky;
|
|
64
|
+
top: 0;
|
|
65
|
+
background: var(--bg-secondary);
|
|
66
|
+
border-bottom: 2px solid var(--accent-blue);
|
|
67
|
+
display: flex;
|
|
68
|
+
overflow-x: auto;
|
|
69
|
+
z-index: 100;
|
|
70
|
+
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.tab-nav button {
|
|
74
|
+
flex: 1;
|
|
75
|
+
padding: 1rem 1.5rem;
|
|
76
|
+
background: none;
|
|
77
|
+
border: none;
|
|
78
|
+
color: var(--text-secondary);
|
|
79
|
+
font-size: 1rem;
|
|
80
|
+
cursor: pointer;
|
|
81
|
+
transition: all 0.3s ease;
|
|
82
|
+
border-bottom: 3px solid transparent;
|
|
83
|
+
white-space: nowrap;
|
|
84
|
+
font-weight: 500;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.tab-nav button:hover {
|
|
88
|
+
color: var(--text-primary);
|
|
89
|
+
background-color: rgba(137, 180, 250, 0.1);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.tab-nav button.active {
|
|
93
|
+
color: var(--accent-blue);
|
|
94
|
+
border-bottom-color: var(--accent-blue);
|
|
95
|
+
background-color: rgba(137, 180, 250, 0.1);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/* Content Container */
|
|
99
|
+
.container {
|
|
100
|
+
max-width: 1400px;
|
|
101
|
+
margin: 0 auto;
|
|
102
|
+
padding: 2rem;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.tab-content {
|
|
106
|
+
display: none;
|
|
107
|
+
animation: fadeIn 0.4s ease;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.tab-content.active {
|
|
111
|
+
display: block;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
@keyframes fadeIn {
|
|
115
|
+
from {
|
|
116
|
+
opacity: 0;
|
|
117
|
+
transform: translateY(10px);
|
|
118
|
+
}
|
|
119
|
+
to {
|
|
120
|
+
opacity: 1;
|
|
121
|
+
transform: translateY(0);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* Architecture Overview Styles */
|
|
126
|
+
.architecture-grid {
|
|
127
|
+
display: grid;
|
|
128
|
+
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
|
129
|
+
gap: 2rem;
|
|
130
|
+
margin-bottom: 3rem;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.arch-box {
|
|
134
|
+
background: var(--bg-secondary);
|
|
135
|
+
border: 2px solid var(--accent-blue);
|
|
136
|
+
border-radius: 12px;
|
|
137
|
+
padding: 1.5rem;
|
|
138
|
+
transition: all 0.3s ease;
|
|
139
|
+
position: relative;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.arch-box:hover {
|
|
143
|
+
transform: translateY(-5px);
|
|
144
|
+
box-shadow: 0 8px 25px rgba(137, 180, 250, 0.2);
|
|
145
|
+
border-color: var(--accent-cyan);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.arch-box h3 {
|
|
149
|
+
color: var(--accent-cyan);
|
|
150
|
+
margin-bottom: 1rem;
|
|
151
|
+
display: flex;
|
|
152
|
+
align-items: center;
|
|
153
|
+
gap: 0.5rem;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.arch-icon {
|
|
157
|
+
font-size: 1.5rem;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.arch-box ul {
|
|
161
|
+
list-style: none;
|
|
162
|
+
padding-left: 0;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.arch-box li {
|
|
166
|
+
padding: 0.5rem 0;
|
|
167
|
+
border-bottom: 1px solid var(--bg-tertiary);
|
|
168
|
+
color: var(--text-secondary);
|
|
169
|
+
font-size: 0.95rem;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.arch-box li:last-child {
|
|
173
|
+
border-bottom: none;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/* Feature Grid */
|
|
177
|
+
.features-grid {
|
|
178
|
+
display: grid;
|
|
179
|
+
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
|
|
180
|
+
gap: 1.5rem;
|
|
181
|
+
margin-bottom: 2rem;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.feature-card {
|
|
185
|
+
background: var(--bg-secondary);
|
|
186
|
+
border-left: 4px solid var(--accent-blue);
|
|
187
|
+
border-radius: 8px;
|
|
188
|
+
padding: 1.5rem;
|
|
189
|
+
transition: all 0.3s ease;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.feature-card:hover {
|
|
193
|
+
transform: translateX(5px);
|
|
194
|
+
box-shadow: 0 6px 20px rgba(137, 180, 250, 0.15);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.feature-title {
|
|
198
|
+
font-weight: 600;
|
|
199
|
+
color: var(--accent-cyan);
|
|
200
|
+
margin-bottom: 0.5rem;
|
|
201
|
+
display: flex;
|
|
202
|
+
align-items: center;
|
|
203
|
+
gap: 0.5rem;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
.feature-desc {
|
|
207
|
+
color: var(--text-secondary);
|
|
208
|
+
font-size: 0.95rem;
|
|
209
|
+
margin-bottom: 1rem;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.status-badge {
|
|
213
|
+
display: inline-block;
|
|
214
|
+
padding: 0.3rem 0.8rem;
|
|
215
|
+
border-radius: 20px;
|
|
216
|
+
font-size: 0.8rem;
|
|
217
|
+
font-weight: 600;
|
|
218
|
+
text-transform: uppercase;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.status-built {
|
|
222
|
+
background-color: rgba(166, 227, 161, 0.2);
|
|
223
|
+
color: var(--accent-green);
|
|
224
|
+
border: 1px solid var(--accent-green);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.status-progress {
|
|
228
|
+
background-color: rgba(249, 226, 175, 0.2);
|
|
229
|
+
color: var(--accent-yellow);
|
|
230
|
+
border: 1px solid var(--accent-yellow);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.status-planned {
|
|
234
|
+
background-color: rgba(166, 173, 200, 0.2);
|
|
235
|
+
color: var(--text-secondary);
|
|
236
|
+
border: 1px solid var(--text-secondary);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/* Comparison Table */
|
|
240
|
+
.comparison-table {
|
|
241
|
+
width: 100%;
|
|
242
|
+
border-collapse: collapse;
|
|
243
|
+
background: var(--bg-secondary);
|
|
244
|
+
border-radius: 8px;
|
|
245
|
+
overflow: hidden;
|
|
246
|
+
margin: 1.5rem 0;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
.comparison-table th {
|
|
250
|
+
background: var(--bg-tertiary);
|
|
251
|
+
color: var(--accent-cyan);
|
|
252
|
+
padding: 1rem;
|
|
253
|
+
text-align: left;
|
|
254
|
+
font-weight: 600;
|
|
255
|
+
border-bottom: 2px solid var(--accent-blue);
|
|
256
|
+
position: sticky;
|
|
257
|
+
top: 0;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
.comparison-table td {
|
|
261
|
+
padding: 1rem;
|
|
262
|
+
border-bottom: 1px solid var(--bg-tertiary);
|
|
263
|
+
color: var(--text-secondary);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.comparison-table tr:hover {
|
|
267
|
+
background-color: rgba(137, 180, 250, 0.05);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
.has-feature {
|
|
271
|
+
color: var(--accent-green);
|
|
272
|
+
font-weight: 600;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
.partial-feature {
|
|
276
|
+
color: var(--accent-yellow);
|
|
277
|
+
font-weight: 600;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
.missing-feature {
|
|
281
|
+
color: var(--accent-red);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
.better-feature {
|
|
285
|
+
color: var(--accent-purple);
|
|
286
|
+
font-weight: 600;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/* TODO List */
|
|
290
|
+
.todo-section {
|
|
291
|
+
margin-bottom: 2rem;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.todo-priority {
|
|
295
|
+
display: inline-block;
|
|
296
|
+
padding: 0.4rem 1rem;
|
|
297
|
+
border-radius: 20px;
|
|
298
|
+
font-size: 0.85rem;
|
|
299
|
+
font-weight: 600;
|
|
300
|
+
margin-bottom: 1rem;
|
|
301
|
+
text-transform: uppercase;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
.priority-critical {
|
|
305
|
+
background: rgba(243, 139, 168, 0.2);
|
|
306
|
+
color: var(--accent-red);
|
|
307
|
+
border: 1px solid var(--accent-red);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
.priority-high {
|
|
311
|
+
background: rgba(249, 226, 175, 0.2);
|
|
312
|
+
color: var(--accent-yellow);
|
|
313
|
+
border: 1px solid var(--accent-yellow);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
.priority-medium {
|
|
317
|
+
background: rgba(166, 227, 161, 0.2);
|
|
318
|
+
color: var(--accent-green);
|
|
319
|
+
border: 1px solid var(--accent-green);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
.priority-future {
|
|
323
|
+
background: rgba(137, 180, 250, 0.2);
|
|
324
|
+
color: var(--accent-blue);
|
|
325
|
+
border: 1px solid var(--accent-blue);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
.todo-list {
|
|
329
|
+
list-style: none;
|
|
330
|
+
padding: 0;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
.todo-item {
|
|
334
|
+
background: var(--bg-secondary);
|
|
335
|
+
padding: 1rem;
|
|
336
|
+
margin-bottom: 0.5rem;
|
|
337
|
+
border-left: 4px solid var(--accent-blue);
|
|
338
|
+
border-radius: 4px;
|
|
339
|
+
display: flex;
|
|
340
|
+
align-items: flex-start;
|
|
341
|
+
gap: 1rem;
|
|
342
|
+
transition: all 0.3s ease;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
.todo-item:hover {
|
|
346
|
+
background: var(--bg-tertiary);
|
|
347
|
+
transform: translateX(5px);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
.todo-checkbox {
|
|
351
|
+
width: 20px;
|
|
352
|
+
height: 20px;
|
|
353
|
+
border: 2px solid var(--accent-blue);
|
|
354
|
+
border-radius: 4px;
|
|
355
|
+
margin-top: 2px;
|
|
356
|
+
cursor: pointer;
|
|
357
|
+
flex-shrink: 0;
|
|
358
|
+
display: flex;
|
|
359
|
+
align-items: center;
|
|
360
|
+
justify-content: center;
|
|
361
|
+
transition: all 0.2s ease;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
.todo-item:hover .todo-checkbox {
|
|
365
|
+
background: var(--accent-blue);
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
.todo-content {
|
|
369
|
+
flex: 1;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
.todo-title {
|
|
373
|
+
font-weight: 600;
|
|
374
|
+
color: var(--text-primary);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
.todo-category {
|
|
378
|
+
display: inline-block;
|
|
379
|
+
padding: 0.2rem 0.6rem;
|
|
380
|
+
font-size: 0.75rem;
|
|
381
|
+
background: var(--accent-blue);
|
|
382
|
+
color: var(--bg-primary);
|
|
383
|
+
border-radius: 3px;
|
|
384
|
+
margin-left: 0.5rem;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
/* Stats Grid */
|
|
388
|
+
.stats-grid {
|
|
389
|
+
display: grid;
|
|
390
|
+
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
391
|
+
gap: 1.5rem;
|
|
392
|
+
margin-bottom: 2rem;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
.stat-card {
|
|
396
|
+
background: linear-gradient(135deg, var(--bg-secondary) 0%, var(--bg-tertiary) 100%);
|
|
397
|
+
border: 2px solid var(--accent-blue);
|
|
398
|
+
border-radius: 12px;
|
|
399
|
+
padding: 2rem;
|
|
400
|
+
text-align: center;
|
|
401
|
+
transition: all 0.3s ease;
|
|
402
|
+
position: relative;
|
|
403
|
+
overflow: hidden;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
.stat-card::before {
|
|
407
|
+
content: '';
|
|
408
|
+
position: absolute;
|
|
409
|
+
top: 0;
|
|
410
|
+
left: 0;
|
|
411
|
+
right: 0;
|
|
412
|
+
bottom: 0;
|
|
413
|
+
background: linear-gradient(135deg, var(--accent-cyan) 0%, var(--accent-blue) 100%);
|
|
414
|
+
opacity: 0;
|
|
415
|
+
transition: opacity 0.3s ease;
|
|
416
|
+
z-index: 0;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
.stat-card:hover::before {
|
|
420
|
+
opacity: 0.1;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
.stat-card:hover {
|
|
424
|
+
transform: translateY(-8px);
|
|
425
|
+
box-shadow: 0 12px 30px rgba(137, 180, 250, 0.3);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
.stat-icon {
|
|
429
|
+
font-size: 2.5rem;
|
|
430
|
+
margin-bottom: 1rem;
|
|
431
|
+
z-index: 1;
|
|
432
|
+
position: relative;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
.stat-value {
|
|
436
|
+
font-size: 2.5rem;
|
|
437
|
+
font-weight: 700;
|
|
438
|
+
color: var(--accent-cyan);
|
|
439
|
+
margin-bottom: 0.5rem;
|
|
440
|
+
z-index: 1;
|
|
441
|
+
position: relative;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
.stat-label {
|
|
445
|
+
color: var(--text-secondary);
|
|
446
|
+
font-size: 0.95rem;
|
|
447
|
+
z-index: 1;
|
|
448
|
+
position: relative;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
/* Footer */
|
|
452
|
+
footer {
|
|
453
|
+
background: var(--bg-secondary);
|
|
454
|
+
border-top: 2px solid var(--accent-blue);
|
|
455
|
+
padding: 2rem;
|
|
456
|
+
text-align: center;
|
|
457
|
+
color: var(--text-secondary);
|
|
458
|
+
margin-top: 3rem;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
/* Responsive */
|
|
462
|
+
@media (max-width: 768px) {
|
|
463
|
+
header h1 {
|
|
464
|
+
font-size: 1.8rem;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
.tab-nav {
|
|
468
|
+
padding: 0 0.5rem;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
.tab-nav button {
|
|
472
|
+
padding: 0.8rem 1rem;
|
|
473
|
+
font-size: 0.9rem;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
.container {
|
|
477
|
+
padding: 1rem;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
.architecture-grid {
|
|
481
|
+
grid-template-columns: 1fr;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
.features-grid {
|
|
485
|
+
grid-template-columns: 1fr;
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
.stats-grid {
|
|
489
|
+
grid-template-columns: repeat(2, 1fr);
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
/* Sections */
|
|
494
|
+
.section-title {
|
|
495
|
+
font-size: 1.8rem;
|
|
496
|
+
color: var(--accent-cyan);
|
|
497
|
+
margin-bottom: 2rem;
|
|
498
|
+
padding-bottom: 1rem;
|
|
499
|
+
border-bottom: 2px solid var(--accent-blue);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
.subsection-title {
|
|
503
|
+
font-size: 1.3rem;
|
|
504
|
+
color: var(--accent-blue);
|
|
505
|
+
margin-top: 2rem;
|
|
506
|
+
margin-bottom: 1rem;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
/* Code blocks */
|
|
510
|
+
.code-block {
|
|
511
|
+
background: var(--bg-tertiary);
|
|
512
|
+
border-left: 4px solid var(--accent-peach);
|
|
513
|
+
padding: 1rem;
|
|
514
|
+
border-radius: 4px;
|
|
515
|
+
overflow-x: auto;
|
|
516
|
+
font-family: 'Monaco', 'Menlo', monospace;
|
|
517
|
+
font-size: 0.9rem;
|
|
518
|
+
margin: 1rem 0;
|
|
519
|
+
color: var(--accent-peach);
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
/* Service diagram */
|
|
523
|
+
.service-diagram {
|
|
524
|
+
background: var(--bg-secondary);
|
|
525
|
+
border: 2px solid var(--accent-blue);
|
|
526
|
+
border-radius: 8px;
|
|
527
|
+
padding: 2rem;
|
|
528
|
+
text-align: center;
|
|
529
|
+
margin: 2rem 0;
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
.service-boxes {
|
|
533
|
+
display: grid;
|
|
534
|
+
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
|
535
|
+
gap: 1.5rem;
|
|
536
|
+
margin: 2rem 0;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
.service-box {
|
|
540
|
+
background: var(--bg-tertiary);
|
|
541
|
+
border: 2px solid var(--accent-cyan);
|
|
542
|
+
border-radius: 8px;
|
|
543
|
+
padding: 1.5rem;
|
|
544
|
+
transition: all 0.3s ease;
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
.service-box:hover {
|
|
548
|
+
border-color: var(--accent-purple);
|
|
549
|
+
box-shadow: 0 6px 15px rgba(203, 166, 247, 0.3);
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
.service-name {
|
|
553
|
+
font-weight: 600;
|
|
554
|
+
color: var(--accent-cyan);
|
|
555
|
+
margin-bottom: 0.5rem;
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
.service-port {
|
|
559
|
+
color: var(--text-secondary);
|
|
560
|
+
font-size: 0.9rem;
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
.service-status {
|
|
564
|
+
color: var(--accent-green);
|
|
565
|
+
font-size: 0.85rem;
|
|
566
|
+
margin-top: 0.5rem;
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
/* Connectivity line */
|
|
570
|
+
.connection-line {
|
|
571
|
+
height: 50px;
|
|
572
|
+
display: flex;
|
|
573
|
+
align-items: center;
|
|
574
|
+
justify-content: center;
|
|
575
|
+
color: var(--accent-blue);
|
|
576
|
+
font-size: 1.5rem;
|
|
577
|
+
margin: 1rem 0;
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
/* Category badge */
|
|
581
|
+
.category-badge {
|
|
582
|
+
display: inline-block;
|
|
583
|
+
padding: 0.3rem 0.7rem;
|
|
584
|
+
border-radius: 4px;
|
|
585
|
+
font-size: 0.75rem;
|
|
586
|
+
font-weight: 600;
|
|
587
|
+
text-transform: uppercase;
|
|
588
|
+
margin-right: 0.5rem;
|
|
589
|
+
margin-bottom: 0.5rem;
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
.cat-engine {
|
|
593
|
+
background: rgba(137, 180, 250, 0.2);
|
|
594
|
+
color: var(--accent-blue);
|
|
595
|
+
border: 1px solid var(--accent-blue);
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
.cat-data {
|
|
599
|
+
background: rgba(148, 226, 213, 0.2);
|
|
600
|
+
color: var(--accent-cyan);
|
|
601
|
+
border: 1px solid var(--accent-cyan);
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
.cat-io {
|
|
605
|
+
background: rgba(166, 227, 161, 0.2);
|
|
606
|
+
color: var(--accent-green);
|
|
607
|
+
border: 1px solid var(--accent-green);
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
.cat-ai {
|
|
611
|
+
background: rgba(249, 226, 175, 0.2);
|
|
612
|
+
color: var(--accent-yellow);
|
|
613
|
+
border: 1px solid var(--accent-yellow);
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
.cat-platform {
|
|
617
|
+
background: rgba(203, 166, 247, 0.2);
|
|
618
|
+
color: var(--accent-purple);
|
|
619
|
+
border: 1px solid var(--accent-purple);
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
/* Print styles */
|
|
623
|
+
@media print {
|
|
624
|
+
body {
|
|
625
|
+
background: white;
|
|
626
|
+
color: black;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
.tab-nav {
|
|
630
|
+
display: none;
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
.tab-content {
|
|
634
|
+
display: block !important;
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
</style>
|
|
638
|
+
</head>
|
|
639
|
+
<body>
|
|
640
|
+
<header>
|
|
641
|
+
<h1>cycleCAD & ExplodeView</h1>
|
|
642
|
+
<p>Comprehensive System Architecture Dashboard</p>
|
|
643
|
+
</header>
|
|
644
|
+
|
|
645
|
+
<div class="tab-nav">
|
|
646
|
+
<button class="tab-btn active" onclick="switchTab('overview')">Architecture Overview</button>
|
|
647
|
+
<button class="tab-btn" onclick="switchTab('features')">Killer Features</button>
|
|
648
|
+
<button class="tab-btn" onclick="switchTab('fusion')">Fusion 360 Comparison</button>
|
|
649
|
+
<button class="tab-btn" onclick="switchTab('todos')">TODO List</button>
|
|
650
|
+
<button class="tab-btn" onclick="switchTab('stats')">Stats & Metrics</button>
|
|
651
|
+
</div>
|
|
652
|
+
|
|
653
|
+
<div class="container">
|
|
654
|
+
<!-- TAB 1: ARCHITECTURE OVERVIEW -->
|
|
655
|
+
<div id="overview" class="tab-content active">
|
|
656
|
+
<h2 class="section-title">System Architecture</h2>
|
|
657
|
+
|
|
658
|
+
<h3 class="subsection-title">Docker Infrastructure (4 Services)</h3>
|
|
659
|
+
<div class="service-diagram">
|
|
660
|
+
<p style="color: var(--text-secondary); margin-bottom: 1.5rem;">Production-ready multi-service deployment with health checks & resource limits</p>
|
|
661
|
+
<div class="service-boxes">
|
|
662
|
+
<div class="service-box">
|
|
663
|
+
<div class="service-name">cycleCAD</div>
|
|
664
|
+
<div class="service-port">:8080 (nginx)</div>
|
|
665
|
+
<div class="service-status">✓ Web App</div>
|
|
666
|
+
</div>
|
|
667
|
+
<div class="service-box">
|
|
668
|
+
<div class="service-name">STEP Converter</div>
|
|
669
|
+
<div class="service-port">:8787 (FastAPI)</div>
|
|
670
|
+
<div class="service-status">✓ Python WASM</div>
|
|
671
|
+
</div>
|
|
672
|
+
<div class="service-box">
|
|
673
|
+
<div class="service-name">Signaling</div>
|
|
674
|
+
<div class="service-port">:8788 (Node.js)</div>
|
|
675
|
+
<div class="service-status">✓ WebSocket</div>
|
|
676
|
+
</div>
|
|
677
|
+
<div class="service-box">
|
|
678
|
+
<div class="service-name">ExplodeView</div>
|
|
679
|
+
<div class="service-port">:3000 (nginx)</div>
|
|
680
|
+
<div class="service-status">✓ Viewer</div>
|
|
681
|
+
</div>
|
|
682
|
+
</div>
|
|
683
|
+
</div>
|
|
684
|
+
|
|
685
|
+
<h3 class="subsection-title">Platform Architecture</h3>
|
|
686
|
+
<div class="architecture-grid">
|
|
687
|
+
<div class="arch-box">
|
|
688
|
+
<h3 class="arch-icon">⚙️ CAD Engine (Core)</h3>
|
|
689
|
+
<ul>
|
|
690
|
+
<li><strong>Microkernel (kernel.js)</strong> — Hot-swap module system</li>
|
|
691
|
+
<li><strong>45+ JS Modules</strong> — Measurements, notes, analysis, threads, fasteners, materials, workflows</li>
|
|
692
|
+
<li><strong>Three.js r170</strong> — 3D rendering with WebGL 2.0</li>
|
|
693
|
+
<li><strong>Constraint Solver</strong> — 12-type 2D constraint relaxation</li>
|
|
694
|
+
<li><strong>B-Rep Kernel</strong> — OpenCascade.js WASM (STEP import/export)</li>
|
|
695
|
+
</ul>
|
|
696
|
+
</div>
|
|
697
|
+
|
|
698
|
+
<div class="arch-box">
|
|
699
|
+
<h3 class="arch-icon">🤖 Agent API (55 Commands)</h3>
|
|
700
|
+
<ul>
|
|
701
|
+
<li><strong>10 Namespaces:</strong> shape, feature, assembly, render, validate, export, import, material, analysis, admin</li>
|
|
702
|
+
<li><strong>JSON-RPC Transport</strong> — Stdio (MCP), HTTP, WebSocket, Webhooks</li>
|
|
703
|
+
<li><strong>Self-Describing Schema</strong> — Introspection for AI agents</li>
|
|
704
|
+
<li><strong>Native Bindings</strong> — Direct module access for in-browser use</li>
|
|
705
|
+
<li><strong>Cloud-Ready</strong> — All operations remote-callable</li>
|
|
706
|
+
</ul>
|
|
707
|
+
</div>
|
|
708
|
+
|
|
709
|
+
<div class="arch-box">
|
|
710
|
+
<h3 class="arch-icon">📡 Integration Layer</h3>
|
|
711
|
+
<ul>
|
|
712
|
+
<li><strong>MCP Server</strong> (1,161 lines) — Claude integration</li>
|
|
713
|
+
<li><strong>REST API</strong> (1,120 lines) — HTTP endpoints + WebSocket</li>
|
|
714
|
+
<li><strong>CLI Tool</strong> (662 lines) — Terminal REPL + batch mode</li>
|
|
715
|
+
<li><strong>Webhooks</strong> — Event streaming for fab networks</li>
|
|
716
|
+
<li><strong>SDK</strong> — npm package: cyclecad v3.2.1</li>
|
|
717
|
+
</ul>
|
|
718
|
+
</div>
|
|
719
|
+
|
|
720
|
+
<div class="arch-box">
|
|
721
|
+
<h3 class="arch-icon">💰 Token Engine ($CYCLE)</h3>
|
|
722
|
+
<ul>
|
|
723
|
+
<li><strong>Per-Op Billing</strong> — Extrude: 50 tokens, Revolve: 75, Fillet: 150</li>
|
|
724
|
+
<li><strong>Double-Entry Ledger</strong> — Spend (user) + Earn (creator)</li>
|
|
725
|
+
<li><strong>3 Tiers:</strong> FREE (10/day), PRO (€49/mo), ENTERPRISE (€299/mo)</li>
|
|
726
|
+
<li><strong>Batch Discounts</strong> — 25-50% for multi-op scans</li>
|
|
727
|
+
<li><strong>Creator Royalties</strong> — 70-90% for marketplace models</li>
|
|
728
|
+
</ul>
|
|
729
|
+
</div>
|
|
730
|
+
|
|
731
|
+
<div class="arch-box">
|
|
732
|
+
<h3 class="arch-icon">🏪 Model Marketplace</h3>
|
|
733
|
+
<ul>
|
|
734
|
+
<li><strong>5-Stage Pipeline</strong> — Publish → Review → Listed → Sales → Royalties</li>
|
|
735
|
+
<li><strong>7 Access Tiers</strong> — Free, PRO, Subscription, Custom, Exclusive, OEM, Educational</li>
|
|
736
|
+
<li><strong>8 Demo Models</strong> — Gear, Washer, Bolt, Bracket, Frame, Electronics, Assembly, Spring</li>
|
|
737
|
+
<li><strong>Creator Dashboard</strong> — Analytics + payout management</li>
|
|
738
|
+
<li><strong>Revenue Split:</strong> 70% Creator / 30% Platform</li>
|
|
739
|
+
</ul>
|
|
740
|
+
</div>
|
|
741
|
+
|
|
742
|
+
<div class="arch-box">
|
|
743
|
+
<h3 class="arch-icon">🔍 ExplodeView (20,900+ lines)</h3>
|
|
744
|
+
<ul>
|
|
745
|
+
<li><strong>Standalone Viewer</strong> — 399 parts, 6 assemblies, 63+ features</li>
|
|
746
|
+
<li><strong>AI Vision ID</strong> — Gemini Vision API + geometry fallback</li>
|
|
747
|
+
<li><strong>Batch Scanning</strong> — Auto-analyze all parts with progress bar</li>
|
|
748
|
+
<li><strong>Smart BOM</strong> — AI-identified parts with pricing + order links</li>
|
|
749
|
+
<li><strong>Maintenance Heatmap</strong> — Color-code by urgency, export schedule</li>
|
|
750
|
+
</ul>
|
|
751
|
+
</div>
|
|
752
|
+
|
|
753
|
+
<div class="arch-box">
|
|
754
|
+
<h3 class="arch-icon">🧠 AI Integration (3-Tier)</h3>
|
|
755
|
+
<ul>
|
|
756
|
+
<li><strong>Cloud LLM:</strong> Gemini Flash (Fast, multimodal) + Groq Llama 3.1 8B (Low-cost inference)</li>
|
|
757
|
+
<li><strong>Local AI:</strong> Ollama + DistilBERT on-device fallback</li>
|
|
758
|
+
<li><strong>Offline NLP:</strong> RxDB-based semantic search, no network needed</li>
|
|
759
|
+
<li><strong>API Keys:</strong> localStorage secure storage with encryption</li>
|
|
760
|
+
<li><strong>Cost Optimization:</strong> Prompt caching + batch processing</li>
|
|
761
|
+
</ul>
|
|
762
|
+
</div>
|
|
763
|
+
|
|
764
|
+
<div class="arch-box">
|
|
765
|
+
<h3 class="arch-icon">📊 Data & State Management</h3>
|
|
766
|
+
<ul>
|
|
767
|
+
<li><strong>Global Scope:</strong> window.allParts, window.ASSEMBLIES, window.manifest (ExplodeView)</li>
|
|
768
|
+
<li><strong>Persistence:</strong> IndexedDB (models) + localStorage (prefs)</li>
|
|
769
|
+
<li><strong>Real-time:</strong> WebSocket events from signaling server</li>
|
|
770
|
+
<li><strong>Snapshots:</strong> Save/load CAD states as JSON</li>
|
|
771
|
+
<li><strong>Git-Like Versioning:</strong> Full history with visual diff</li>
|
|
772
|
+
</ul>
|
|
773
|
+
</div>
|
|
774
|
+
|
|
775
|
+
<div class="arch-box">
|
|
776
|
+
<h3 class="arch-icon">🌐 Deployment</h3>
|
|
777
|
+
<ul>
|
|
778
|
+
<li><strong>GitHub Pages:</strong> exploreview.com + cyclecad.com (DNS CNAME)</li>
|
|
779
|
+
<li><strong>Docker Compose:</strong> Local dev + staging (port 8080)</li>
|
|
780
|
+
<li><strong>npm Packages:</strong> cyclecad v3.2.1, explodeview v1.0.17</li>
|
|
781
|
+
<li><strong>Service Workers:</strong> Cross-Origin Isolation (COOP/COEP)</li>
|
|
782
|
+
<li><strong>HTTPS:</strong> GitHub Pages auto-enabled, custom domains supported</li>
|
|
783
|
+
</ul>
|
|
784
|
+
</div>
|
|
785
|
+
</div>
|
|
786
|
+
|
|
787
|
+
<h3 class="subsection-title">Data Flow</h3>
|
|
788
|
+
<div class="code-block">
|
|
789
|
+
User Input (UI/Voice/API)
|
|
790
|
+
↓
|
|
791
|
+
Agent API / MCP / REST
|
|
792
|
+
↓
|
|
793
|
+
CAD Engine (Microkernel)
|
|
794
|
+
↓
|
|
795
|
+
Module System (Sketch → Ops → Export)
|
|
796
|
+
↓
|
|
797
|
+
Three.js Viewport (Render)
|
|
798
|
+
↓
|
|
799
|
+
IndexedDB / localStorage (Persist)
|
|
800
|
+
↓
|
|
801
|
+
Signaling Server (Collab)
|
|
802
|
+
↓
|
|
803
|
+
Fab Network / Stripe / Agent Swarms
|
|
804
|
+
</div>
|
|
805
|
+
</div>
|
|
806
|
+
|
|
807
|
+
<!-- TAB 2: KILLER FEATURES -->
|
|
808
|
+
<div id="features" class="tab-content">
|
|
809
|
+
<h2 class="section-title">Killer Features & Differentiators</h2>
|
|
810
|
+
|
|
811
|
+
<h3 class="subsection-title">cycleCAD Killer Features (10)</h3>
|
|
812
|
+
<div class="features-grid">
|
|
813
|
+
<div class="feature-card">
|
|
814
|
+
<div class="feature-title">🤖 AI Design Copilot</div>
|
|
815
|
+
<div class="feature-desc">Natural language to CAD: "gear with 24 teeth, module 2" → geometry created</div>
|
|
816
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
817
|
+
</div>
|
|
818
|
+
|
|
819
|
+
<div class="feature-card">
|
|
820
|
+
<div class="feature-title">⚡ Physics Simulation</div>
|
|
821
|
+
<div class="feature-desc">Drop test + stress heatmap + collision detection. Faster than Fusion 360.</div>
|
|
822
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
823
|
+
</div>
|
|
824
|
+
|
|
825
|
+
<div class="feature-card">
|
|
826
|
+
<div class="feature-title">🧬 Generative Design</div>
|
|
827
|
+
<div class="feature-desc">Auto-optimize topology with weight/cost constraints. AI-powered 3D iteration.</div>
|
|
828
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
829
|
+
</div>
|
|
830
|
+
|
|
831
|
+
<div class="feature-card">
|
|
832
|
+
<div class="feature-title">💵 Real-time Cost Estimator</div>
|
|
833
|
+
<div class="feature-desc">Live pricing for CNC/3D-print/injection-mold. Drag part, see cost delta.</div>
|
|
834
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
835
|
+
</div>
|
|
836
|
+
|
|
837
|
+
<div class="feature-card">
|
|
838
|
+
<div class="feature-title">🧲 Smart Snap & Auto-Dimension</div>
|
|
839
|
+
<div class="feature-desc">AI snapping + auto-placed drawing dimensions. No manual alignment.</div>
|
|
840
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
841
|
+
</div>
|
|
842
|
+
|
|
843
|
+
<div class="feature-card">
|
|
844
|
+
<div class="feature-title">🔀 Version Control Visual Diff</div>
|
|
845
|
+
<div class="feature-desc">Git-like CAD branching with 3D geometry diff visualization.</div>
|
|
846
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
847
|
+
</div>
|
|
848
|
+
|
|
849
|
+
<div class="feature-card">
|
|
850
|
+
<div class="feature-title">📊 Parametric Table</div>
|
|
851
|
+
<div class="feature-desc">Excel-like parameter manager with formulas. Real-time updates.</div>
|
|
852
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
853
|
+
</div>
|
|
854
|
+
|
|
855
|
+
<div class="feature-card">
|
|
856
|
+
<div class="feature-title">🔗 Smart Assembly Mating</div>
|
|
857
|
+
<div class="feature-desc">Auto-detect mate types. Drag-to-snap assembly. Constraints learned.</div>
|
|
858
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
859
|
+
</div>
|
|
860
|
+
|
|
861
|
+
<div class="feature-card">
|
|
862
|
+
<div class="feature-title">📐 Manufacturing Drawings Auto-Gen</div>
|
|
863
|
+
<div class="feature-desc">One-click ISO/ANSI engineering drawings. Automatic view + section + BOM.</div>
|
|
864
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
865
|
+
</div>
|
|
866
|
+
|
|
867
|
+
<div class="feature-card">
|
|
868
|
+
<div class="feature-title">🌐 Digital Twin Live Data</div>
|
|
869
|
+
<div class="feature-desc">WebSocket IoT sensor visualization on 3D model. Real-time monitoring.</div>
|
|
870
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
871
|
+
</div>
|
|
872
|
+
</div>
|
|
873
|
+
|
|
874
|
+
<h3 class="subsection-title">ExplodeView Killer Features (5)</h3>
|
|
875
|
+
<div class="features-grid">
|
|
876
|
+
<div class="feature-card">
|
|
877
|
+
<div class="feature-title">📱 AR Mode with Plane Detection</div>
|
|
878
|
+
<div class="feature-desc">WebXR integration. Point phone at floor, place 3D model, rotate with fingers.</div>
|
|
879
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
880
|
+
</div>
|
|
881
|
+
|
|
882
|
+
<div class="feature-card">
|
|
883
|
+
<div class="feature-title">🎙️ AI Part Narrator</div>
|
|
884
|
+
<div class="feature-desc">Click part → AI voice explains function, material, torque specs, failure modes.</div>
|
|
885
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
886
|
+
</div>
|
|
887
|
+
|
|
888
|
+
<div class="feature-card">
|
|
889
|
+
<div class="feature-title">📖 Animated Assembly Instructions</div>
|
|
890
|
+
<div class="feature-desc">IKEA-style step-by-step disassembly with auto-generated narration.</div>
|
|
891
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
892
|
+
</div>
|
|
893
|
+
|
|
894
|
+
<div class="feature-card">
|
|
895
|
+
<div class="feature-title">💬 Collaborative 3D Annotations</div>
|
|
896
|
+
<div class="feature-desc">Sticky notes in 3D space. Pin to parts, leave voice messages, share links.</div>
|
|
897
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
898
|
+
</div>
|
|
899
|
+
|
|
900
|
+
<div class="feature-card">
|
|
901
|
+
<div class="feature-title">🔍 Smart Part Search (NL Spatial)</div>
|
|
902
|
+
<div class="feature-desc">"left side of frame, above motor" → finds parts spatially + by name.</div>
|
|
903
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
904
|
+
</div>
|
|
905
|
+
</div>
|
|
906
|
+
|
|
907
|
+
<h3 class="subsection-title">Additional cycleCAD Features (30+)</h3>
|
|
908
|
+
<div class="features-grid">
|
|
909
|
+
<div class="feature-card">
|
|
910
|
+
<div class="feature-title">3D Viewport</div>
|
|
911
|
+
<div class="feature-desc">Three.js r170, OrbitControls, preset views, grid, wireframe, fit-to-all</div>
|
|
912
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
913
|
+
</div>
|
|
914
|
+
|
|
915
|
+
<div class="feature-card">
|
|
916
|
+
<div class="feature-title">2D Sketch Engine</div>
|
|
917
|
+
<div class="feature-desc">Line, rect, circle, arc, polyline, grid snap, 12-type constraint solver</div>
|
|
918
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
919
|
+
</div>
|
|
920
|
+
|
|
921
|
+
<div class="feature-card">
|
|
922
|
+
<div class="feature-title">Parametric Operations</div>
|
|
923
|
+
<div class="feature-desc">Extrude, revolve, fillet, chamfer, boolean, shell, pattern</div>
|
|
924
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
925
|
+
</div>
|
|
926
|
+
|
|
927
|
+
<div class="feature-card">
|
|
928
|
+
<div class="feature-title">Sweep & Loft</div>
|
|
929
|
+
<div class="feature-desc">Profile along path with twist & scale interpolation. 3D curves.</div>
|
|
930
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
931
|
+
</div>
|
|
932
|
+
|
|
933
|
+
<div class="feature-card">
|
|
934
|
+
<div class="feature-title">Sheet Metal</div>
|
|
935
|
+
<div class="feature-desc">Bend, flange, tab, slot, unfold flat pattern with k-factor</div>
|
|
936
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
937
|
+
</div>
|
|
938
|
+
|
|
939
|
+
<div class="feature-card">
|
|
940
|
+
<div class="feature-title">Springs & Threads</div>
|
|
941
|
+
<div class="feature-desc">Helical sweep generators. Screw thread geometry.</div>
|
|
942
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
943
|
+
</div>
|
|
944
|
+
|
|
945
|
+
<div class="feature-card">
|
|
946
|
+
<div class="feature-title">Feature Tree</div>
|
|
947
|
+
<div class="feature-desc">Rename, suppress, delete, context menus, history timeline</div>
|
|
948
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
949
|
+
</div>
|
|
950
|
+
|
|
951
|
+
<div class="feature-card">
|
|
952
|
+
<div class="feature-title">Inventor Parser</div>
|
|
953
|
+
<div class="feature-desc">OLE2/CFB binary parser. 26 feature types, constraints, metadata.</div>
|
|
954
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
955
|
+
</div>
|
|
956
|
+
|
|
957
|
+
<div class="feature-card">
|
|
958
|
+
<div class="feature-title">Project Loader</div>
|
|
959
|
+
<div class="feature-desc">Parse .ipj, index project folders, categorize files (CUSTOM/STANDARD/VENDOR)</div>
|
|
960
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
961
|
+
</div>
|
|
962
|
+
|
|
963
|
+
<div class="feature-card">
|
|
964
|
+
<div class="feature-title">Reverse Engineering</div>
|
|
965
|
+
<div class="feature-desc">STL import, geometry analysis, feature inference</div>
|
|
966
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
967
|
+
</div>
|
|
968
|
+
|
|
969
|
+
<div class="feature-card">
|
|
970
|
+
<div class="feature-title">Export Formats</div>
|
|
971
|
+
<div class="feature-desc">STL (ASCII+binary), OBJ, glTF 2.0, DXF, cycleCAD JSON</div>
|
|
972
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
973
|
+
</div>
|
|
974
|
+
|
|
975
|
+
<div class="feature-card">
|
|
976
|
+
<div class="feature-title">AI Chatbot</div>
|
|
977
|
+
<div class="feature-desc">Gemini Flash + Groq Llama 3.1 8B + offline NLP fallback</div>
|
|
978
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
979
|
+
</div>
|
|
980
|
+
|
|
981
|
+
<div class="feature-card">
|
|
982
|
+
<div class="feature-title">Keyboard Shortcuts</div>
|
|
983
|
+
<div class="feature-desc">25+ shortcuts for fast workflow. Press ? for help panel.</div>
|
|
984
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
985
|
+
</div>
|
|
986
|
+
|
|
987
|
+
<div class="feature-card">
|
|
988
|
+
<div class="feature-title">Undo/Redo</div>
|
|
989
|
+
<div class="feature-desc">History snapshots with full state restore. Ctrl+Z/Y</div>
|
|
990
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
991
|
+
</div>
|
|
992
|
+
|
|
993
|
+
<div class="feature-card">
|
|
994
|
+
<div class="feature-title">Dark Theme UI</div>
|
|
995
|
+
<div class="feature-desc">VS Code-style CSS variables. Catppuccin Mocha palette.</div>
|
|
996
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
997
|
+
</div>
|
|
998
|
+
|
|
999
|
+
<div class="feature-card">
|
|
1000
|
+
<div class="feature-title">MCP Server</div>
|
|
1001
|
+
<div class="feature-desc">55+ commands exposed as Claude MCP tools. JSON-RPC stdio.</div>
|
|
1002
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
1003
|
+
</div>
|
|
1004
|
+
|
|
1005
|
+
<div class="feature-card">
|
|
1006
|
+
<div class="feature-title">REST API</div>
|
|
1007
|
+
<div class="feature-desc">HTTP endpoints + WebSocket. Express-style routing.</div>
|
|
1008
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
1009
|
+
</div>
|
|
1010
|
+
|
|
1011
|
+
<div class="feature-card">
|
|
1012
|
+
<div class="feature-title">CLI Tool</div>
|
|
1013
|
+
<div class="feature-desc">Terminal REPL + batch mode. Tab completion, colored output.</div>
|
|
1014
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
1015
|
+
</div>
|
|
1016
|
+
|
|
1017
|
+
<div class="feature-card">
|
|
1018
|
+
<div class="feature-title">Token Engine</div>
|
|
1019
|
+
<div class="feature-desc">Per-op billing, double-entry ledger, 3 tiers, batch discounts</div>
|
|
1020
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
1021
|
+
</div>
|
|
1022
|
+
|
|
1023
|
+
<div class="feature-card">
|
|
1024
|
+
<div class="feature-title">Marketplace</div>
|
|
1025
|
+
<div class="feature-desc">Model store with creator dashboard, 7 access tiers, 70% royalties</div>
|
|
1026
|
+
<span class="status-badge status-built">✅ Built</span>
|
|
1027
|
+
</div>
|
|
1028
|
+
</div>
|
|
1029
|
+
|
|
1030
|
+
<h3 class="subsection-title">Additional ExplodeView Features (60+)</h3>
|
|
1031
|
+
<p style="color: var(--text-secondary); margin-bottom: 1.5rem;">
|
|
1032
|
+
Assembly tree + AI drawings • Explode/collapse assemblies • Part selection + info card • Context menu (select, hide, isolate, move, export STL) • Assembly animation (auto-generate, prev/next, play/stop, save/load, toggle direction) • Section cut (per-material + global, X/Y/Z axis, flip, DoubleSide) • QR code per part (deep-links) • BOM export to CSV • Annotation pins (click-to-place, click-to-edit, draggable) • Measurement tool (2pts→distance, 3rd pt→angle+distance) • DIN/ISO standards identifier (McMaster-Carr search) • Kiri:Moto integration (FDM/CNC/Laser/SLA) • STL export per part • 3D Print slicer (G-code) • Wireframe toggle • Hero shots • Share & embed • Model library • Interactive manual • AR scanner • Pan (right-click drag) • Multi-language (EN/DE/FR/ES/IT/NL) • Part search (live filter) • Keyboard shortcuts • Screenshot export (PNG) • Grid floor plane • Fit-to-selection (dblclick) • Part transparency slider • Hide selected + Show all • Part weight estimator • Part comparison mode • Performance monitor (FPS) • AI Part Identifier (McMaster search, CSV export, color-by-type, shopping list) • Blueprint Theme • AI Chatbot (Gemini + Groq + offline) • Assembly Time Estimator • Help System (43+ features) • AI Vision Part Identifier (Gemini Vision, auto-search, geometry fallback) • Part Info Card 3D Export (STL/OBJ/GLTF/PLY) • Batch AI Scan (auto-scan all parts, progress bar, CSV) • Smart BOM Generator (AI-identified, estimated pricing, order links, CSV/HTML export) • Maintenance Heatmap (color by urgency, export schedule) • AI Assembly Instructions (auto-generate manual, HTML export) • Part Wear Timeline (Gantt-style 5-year replacement) • Smart NL Search (keyword synonyms, show/highlight/McMaster) • Service Mode (field tech workflow, checklist, urgency coloring, report export) • Technical Report Export (full HTML: overview, BOM, parts, maintenance, timeline, assemblies) • Tabbed Toolbar (6 tabs: View, Analyze, Create, Export, AI Tools, Settings)
|
|
1033
|
+
</p>
|
|
1034
|
+
</div>
|
|
1035
|
+
|
|
1036
|
+
<!-- TAB 3: FUSION 360 COMPARISON -->
|
|
1037
|
+
<div id="fusion" class="tab-content">
|
|
1038
|
+
<h2 class="section-title">cycleCAD vs Fusion 360 Feature Comparison</h2>
|
|
1039
|
+
<p style="color: var(--text-secondary); margin-bottom: 2rem;">
|
|
1040
|
+
Complete feature matrix comparing cycleCAD with Autodesk Fusion 360 (2024). Green = cycleCAD wins, Yellow = partial, Red = missing, Purple = better implementation.
|
|
1041
|
+
</p>
|
|
1042
|
+
|
|
1043
|
+
<h3 class="subsection-title">Sketch Features</h3>
|
|
1044
|
+
<table class="comparison-table">
|
|
1045
|
+
<thead>
|
|
1046
|
+
<tr>
|
|
1047
|
+
<th>Feature</th>
|
|
1048
|
+
<th>Fusion 360</th>
|
|
1049
|
+
<th>cycleCAD</th>
|
|
1050
|
+
<th>Winner</th>
|
|
1051
|
+
</tr>
|
|
1052
|
+
</thead>
|
|
1053
|
+
<tbody>
|
|
1054
|
+
<tr>
|
|
1055
|
+
<td>Line, Rectangle, Circle, Arc</td>
|
|
1056
|
+
<td class="has-feature">✅</td>
|
|
1057
|
+
<td class="has-feature">✅</td>
|
|
1058
|
+
<td class="has-feature">Tied</td>
|
|
1059
|
+
</tr>
|
|
1060
|
+
<tr>
|
|
1061
|
+
<td>Spline & Bezier Curves</td>
|
|
1062
|
+
<td class="has-feature">✅</td>
|
|
1063
|
+
<td class="partial-feature">⚡ NURBS only</td>
|
|
1064
|
+
<td class="missing-feature">Fusion</td>
|
|
1065
|
+
</tr>
|
|
1066
|
+
<tr>
|
|
1067
|
+
<td>Slot, Polygon, Text</td>
|
|
1068
|
+
<td class="has-feature">✅</td>
|
|
1069
|
+
<td class="partial-feature">⚡ Limited</td>
|
|
1070
|
+
<td class="missing-feature">Fusion</td>
|
|
1071
|
+
</tr>
|
|
1072
|
+
<tr>
|
|
1073
|
+
<td>Mirror & Pattern</td>
|
|
1074
|
+
<td class="has-feature">✅</td>
|
|
1075
|
+
<td class="has-feature">✅</td>
|
|
1076
|
+
<td class="has-feature">Tied</td>
|
|
1077
|
+
</tr>
|
|
1078
|
+
<tr>
|
|
1079
|
+
<td>Offset & Trim/Extend</td>
|
|
1080
|
+
<td class="has-feature">✅</td>
|
|
1081
|
+
<td class="has-feature">✅</td>
|
|
1082
|
+
<td class="has-feature">Tied</td>
|
|
1083
|
+
</tr>
|
|
1084
|
+
<tr>
|
|
1085
|
+
<td>Fillet & Chamfer 2D</td>
|
|
1086
|
+
<td class="has-feature">✅</td>
|
|
1087
|
+
<td class="has-feature">✅</td>
|
|
1088
|
+
<td class="has-feature">Tied</td>
|
|
1089
|
+
</tr>
|
|
1090
|
+
<tr>
|
|
1091
|
+
<td>12+ Constraint Types</td>
|
|
1092
|
+
<td class="has-feature">✅</td>
|
|
1093
|
+
<td class="has-feature">✅</td>
|
|
1094
|
+
<td class="has-feature">Tied</td>
|
|
1095
|
+
</tr>
|
|
1096
|
+
<tr>
|
|
1097
|
+
<td>Automatic Dimensions</td>
|
|
1098
|
+
<td class="partial-feature">⚡ Manual</td>
|
|
1099
|
+
<td class="has-feature">✅ AI-driven</td>
|
|
1100
|
+
<td class="better-feature">cycleCAD 🚀</td>
|
|
1101
|
+
</tr>
|
|
1102
|
+
</tbody>
|
|
1103
|
+
</table>
|
|
1104
|
+
|
|
1105
|
+
<h3 class="subsection-title">Solid Modeling</h3>
|
|
1106
|
+
<table class="comparison-table">
|
|
1107
|
+
<thead>
|
|
1108
|
+
<tr>
|
|
1109
|
+
<th>Feature</th>
|
|
1110
|
+
<th>Fusion 360</th>
|
|
1111
|
+
<th>cycleCAD</th>
|
|
1112
|
+
<th>Winner</th>
|
|
1113
|
+
</tr>
|
|
1114
|
+
</thead>
|
|
1115
|
+
<tbody>
|
|
1116
|
+
<tr>
|
|
1117
|
+
<td>Extrude, Revolve, Sweep, Loft</td>
|
|
1118
|
+
<td class="has-feature">✅</td>
|
|
1119
|
+
<td class="has-feature">✅</td>
|
|
1120
|
+
<td class="has-feature">Tied</td>
|
|
1121
|
+
</tr>
|
|
1122
|
+
<tr>
|
|
1123
|
+
<td>3D Fillet & Chamfer</td>
|
|
1124
|
+
<td class="has-feature">✅ True edge</td>
|
|
1125
|
+
<td class="partial-feature">⚡ Approximation</td>
|
|
1126
|
+
<td class="missing-feature">Fusion</td>
|
|
1127
|
+
</tr>
|
|
1128
|
+
<tr>
|
|
1129
|
+
<td>Hole, Thread Features</td>
|
|
1130
|
+
<td class="has-feature">✅</td>
|
|
1131
|
+
<td class="has-feature">✅</td>
|
|
1132
|
+
<td class="has-feature">Tied</td>
|
|
1133
|
+
</tr>
|
|
1134
|
+
<tr>
|
|
1135
|
+
<td>Boolean (Union, Cut, Intersect)</td>
|
|
1136
|
+
<td class="has-feature">✅ Real B-Rep</td>
|
|
1137
|
+
<td class="partial-feature">⚡ Mesh-based</td>
|
|
1138
|
+
<td class="missing-feature">Fusion</td>
|
|
1139
|
+
</tr>
|
|
1140
|
+
<tr>
|
|
1141
|
+
<td>Shell & Scale</td>
|
|
1142
|
+
<td class="has-feature">✅</td>
|
|
1143
|
+
<td class="has-feature">✅</td>
|
|
1144
|
+
<td class="has-feature">Tied</td>
|
|
1145
|
+
</tr>
|
|
1146
|
+
<tr>
|
|
1147
|
+
<td>Replace Face & Split Body</td>
|
|
1148
|
+
<td class="has-feature">✅</td>
|
|
1149
|
+
<td class="missing-feature">❌</td>
|
|
1150
|
+
<td class="missing-feature">Fusion</td>
|
|
1151
|
+
</tr>
|
|
1152
|
+
<tr>
|
|
1153
|
+
<td>Rib & Web</td>
|
|
1154
|
+
<td class="has-feature">✅</td>
|
|
1155
|
+
<td class="missing-feature">❌</td>
|
|
1156
|
+
<td class="missing-feature">Fusion</td>
|
|
1157
|
+
</tr>
|
|
1158
|
+
<tr>
|
|
1159
|
+
<td>Parametric Update</td>
|
|
1160
|
+
<td class="partial-feature">⚡ Slow rebuild</td>
|
|
1161
|
+
<td class="has-feature">✅ Real-time</td>
|
|
1162
|
+
<td class="better-feature">cycleCAD 🚀</td>
|
|
1163
|
+
</tr>
|
|
1164
|
+
</tbody>
|
|
1165
|
+
</table>
|
|
1166
|
+
|
|
1167
|
+
<h3 class="subsection-title">Sheet Metal & Advanced</h3>
|
|
1168
|
+
<table class="comparison-table">
|
|
1169
|
+
<thead>
|
|
1170
|
+
<tr>
|
|
1171
|
+
<th>Feature</th>
|
|
1172
|
+
<th>Fusion 360</th>
|
|
1173
|
+
<th>cycleCAD</th>
|
|
1174
|
+
<th>Winner</th>
|
|
1175
|
+
</tr>
|
|
1176
|
+
</thead>
|
|
1177
|
+
<tbody>
|
|
1178
|
+
<tr>
|
|
1179
|
+
<td>Sheet Metal (Flange, Bend, Unfold)</td>
|
|
1180
|
+
<td class="has-feature">✅</td>
|
|
1181
|
+
<td class="has-feature">✅</td>
|
|
1182
|
+
<td class="has-feature">Tied</td>
|
|
1183
|
+
</tr>
|
|
1184
|
+
<tr>
|
|
1185
|
+
<td>Assembly (Joints, Mates, Constraints)</td>
|
|
1186
|
+
<td class="has-feature">✅</td>
|
|
1187
|
+
<td class="has-feature">✅</td>
|
|
1188
|
+
<td class="has-feature">Tied</td>
|
|
1189
|
+
</tr>
|
|
1190
|
+
<tr>
|
|
1191
|
+
<td>Motion Study & Animation</td>
|
|
1192
|
+
<td class="has-feature">✅</td>
|
|
1193
|
+
<td class="partial-feature">⚡ Basic keyframe</td>
|
|
1194
|
+
<td class="missing-feature">Fusion</td>
|
|
1195
|
+
</tr>
|
|
1196
|
+
<tr>
|
|
1197
|
+
<td>Rendering & Cloud Render</td>
|
|
1198
|
+
<td class="has-feature">✅</td>
|
|
1199
|
+
<td class="partial-feature">⚡ Real-time WebGL</td>
|
|
1200
|
+
<td class="has-feature">Tied (different)</td>
|
|
1201
|
+
</tr>
|
|
1202
|
+
<tr>
|
|
1203
|
+
<td>Simulation (Stress, Modal, Thermal)</td>
|
|
1204
|
+
<td class="has-feature">✅ Full FEA</td>
|
|
1205
|
+
<td class="partial-feature">⚡ Visual only</td>
|
|
1206
|
+
<td class="missing-feature">Fusion</td>
|
|
1207
|
+
</tr>
|
|
1208
|
+
<tr>
|
|
1209
|
+
<td>Generative Design</td>
|
|
1210
|
+
<td class="partial-feature">⚡ Addon only</td>
|
|
1211
|
+
<td class="has-feature">✅ Built-in, free</td>
|
|
1212
|
+
<td class="better-feature">cycleCAD 🚀</td>
|
|
1213
|
+
</tr>
|
|
1214
|
+
</tbody>
|
|
1215
|
+
</table>
|
|
1216
|
+
|
|
1217
|
+
<h3 class="subsection-title">Drawing & Documentation</h3>
|
|
1218
|
+
<table class="comparison-table">
|
|
1219
|
+
<thead>
|
|
1220
|
+
<tr>
|
|
1221
|
+
<th>Feature</th>
|
|
1222
|
+
<th>Fusion 360</th>
|
|
1223
|
+
<th>cycleCAD</th>
|
|
1224
|
+
<th>Winner</th>
|
|
1225
|
+
</tr>
|
|
1226
|
+
</thead>
|
|
1227
|
+
<tbody>
|
|
1228
|
+
<tr>
|
|
1229
|
+
<td>2D Drawing Views & Sections</td>
|
|
1230
|
+
<td class="has-feature">✅</td>
|
|
1231
|
+
<td class="has-feature">✅</td>
|
|
1232
|
+
<td class="has-feature">Tied</td>
|
|
1233
|
+
</tr>
|
|
1234
|
+
<tr>
|
|
1235
|
+
<td>Dimension & Annotation</td>
|
|
1236
|
+
<td class="has-feature">✅</td>
|
|
1237
|
+
<td class="has-feature">✅</td>
|
|
1238
|
+
<td class="has-feature">Tied</td>
|
|
1239
|
+
</tr>
|
|
1240
|
+
<tr>
|
|
1241
|
+
<td>BOM Table</td>
|
|
1242
|
+
<td class="has-feature">✅</td>
|
|
1243
|
+
<td class="has-feature">✅</td>
|
|
1244
|
+
<td class="has-feature">Tied</td>
|
|
1245
|
+
</tr>
|
|
1246
|
+
<tr>
|
|
1247
|
+
<td>Auto-Generate Drawings</td>
|
|
1248
|
+
<td class="partial-feature">⚡ Manual placement</td>
|
|
1249
|
+
<td class="has-feature">✅ One-click ISO</td>
|
|
1250
|
+
<td class="better-feature">cycleCAD 🚀</td>
|
|
1251
|
+
</tr>
|
|
1252
|
+
<tr>
|
|
1253
|
+
<td>DXF/PDF Export</td>
|
|
1254
|
+
<td class="has-feature">✅</td>
|
|
1255
|
+
<td class="has-feature">✅</td>
|
|
1256
|
+
<td class="has-feature">Tied</td>
|
|
1257
|
+
</tr>
|
|
1258
|
+
</tbody>
|
|
1259
|
+
</table>
|
|
1260
|
+
|
|
1261
|
+
<h3 class="subsection-title">Collaboration & Data Management</h3>
|
|
1262
|
+
<table class="comparison-table">
|
|
1263
|
+
<thead>
|
|
1264
|
+
<tr>
|
|
1265
|
+
<th>Feature</th>
|
|
1266
|
+
<th>Fusion 360</th>
|
|
1267
|
+
<th>cycleCAD</th>
|
|
1268
|
+
<th>Winner</th>
|
|
1269
|
+
</tr>
|
|
1270
|
+
</thead>
|
|
1271
|
+
<tbody>
|
|
1272
|
+
<tr>
|
|
1273
|
+
<td>Cloud Storage (File Sharing)</td>
|
|
1274
|
+
<td class="has-feature">✅ Autodesk Cloud</td>
|
|
1275
|
+
<td class="has-feature">✅ GitHub + S3</td>
|
|
1276
|
+
<td class="has-feature">Tied</td>
|
|
1277
|
+
</tr>
|
|
1278
|
+
<tr>
|
|
1279
|
+
<td>Real-time Multi-User Edit</td>
|
|
1280
|
+
<td class="missing-feature">❌</td>
|
|
1281
|
+
<td class="has-feature">✅ WebSocket CRDT</td>
|
|
1282
|
+
<td class="better-feature">cycleCAD 🚀</td>
|
|
1283
|
+
</tr>
|
|
1284
|
+
<tr>
|
|
1285
|
+
<td>Version Control & Branching</td>
|
|
1286
|
+
<td class="partial-feature">⚡ History only</td>
|
|
1287
|
+
<td class="has-feature">✅ Git-like + visual diff</td>
|
|
1288
|
+
<td class="better-feature">cycleCAD 🚀</td>
|
|
1289
|
+
</tr>
|
|
1290
|
+
<tr>
|
|
1291
|
+
<td>Comments & Collaboration</td>
|
|
1292
|
+
<td class="has-feature">✅</td>
|
|
1293
|
+
<td class="has-feature">✅ 3D annotations</td>
|
|
1294
|
+
<td class="better-feature">cycleCAD 🚀</td>
|
|
1295
|
+
</tr>
|
|
1296
|
+
<tr>
|
|
1297
|
+
<td>File Formats Supported</td>
|
|
1298
|
+
<td class="has-feature">✅ 20+ formats</td>
|
|
1299
|
+
<td class="has-feature">✅ 15+ formats + Inventor native</td>
|
|
1300
|
+
<td class="better-feature">cycleCAD 🚀</td>
|
|
1301
|
+
</tr>
|
|
1302
|
+
</tbody>
|
|
1303
|
+
</table>
|
|
1304
|
+
|
|
1305
|
+
<h3 class="subsection-title">AI & Intelligence Features</h3>
|
|
1306
|
+
<table class="comparison-table">
|
|
1307
|
+
<thead>
|
|
1308
|
+
<tr>
|
|
1309
|
+
<th>Feature</th>
|
|
1310
|
+
<th>Fusion 360</th>
|
|
1311
|
+
<th>cycleCAD</th>
|
|
1312
|
+
<th>Winner</th>
|
|
1313
|
+
</tr>
|
|
1314
|
+
</thead>
|
|
1315
|
+
<tbody>
|
|
1316
|
+
<tr>
|
|
1317
|
+
<td>AI Design Copilot</td>
|
|
1318
|
+
<td class="missing-feature">❌</td>
|
|
1319
|
+
<td class="has-feature">✅ NL to CAD</td>
|
|
1320
|
+
<td class="better-feature">cycleCAD 🚀</td>
|
|
1321
|
+
</tr>
|
|
1322
|
+
<tr>
|
|
1323
|
+
<td>AI Generative Design</td>
|
|
1324
|
+
<td class="partial-feature">⚡ Cloud addon, paid</td>
|
|
1325
|
+
<td class="has-feature">✅ Built-in, free</td>
|
|
1326
|
+
<td class="better-feature">cycleCAD 🚀</td>
|
|
1327
|
+
</tr>
|
|
1328
|
+
<tr>
|
|
1329
|
+
<td>Cost Estimation (DFM)</td>
|
|
1330
|
+
<td class="missing-feature">❌</td>
|
|
1331
|
+
<td class="has-feature">✅ Real-time pricing</td>
|
|
1332
|
+
<td class="better-feature">cycleCAD 🚀</td>
|
|
1333
|
+
</tr>
|
|
1334
|
+
<tr>
|
|
1335
|
+
<td>Part Identifier</td>
|
|
1336
|
+
<td class="missing-feature">❌</td>
|
|
1337
|
+
<td class="has-feature">✅ Vision + geometry</td>
|
|
1338
|
+
<td class="better-feature">cycleCAD 🚀</td>
|
|
1339
|
+
</tr>
|
|
1340
|
+
<tr>
|
|
1341
|
+
<td>Smart Assembly Mating</td>
|
|
1342
|
+
<td class="missing-feature">❌</td>
|
|
1343
|
+
<td class="has-feature">✅ Auto-detect</td>
|
|
1344
|
+
<td class="better-feature">cycleCAD 🚀</td>
|
|
1345
|
+
</tr>
|
|
1346
|
+
<tr>
|
|
1347
|
+
<td>Voice Input Commands</td>
|
|
1348
|
+
<td class="missing-feature">❌</td>
|
|
1349
|
+
<td class="has-feature">✅ Web Speech API</td>
|
|
1350
|
+
<td class="better-feature">cycleCAD 🚀</td>
|
|
1351
|
+
</tr>
|
|
1352
|
+
</tbody>
|
|
1353
|
+
</table>
|
|
1354
|
+
|
|
1355
|
+
<h3 class="subsection-title">Ecosystem & Platform</h3>
|
|
1356
|
+
<table class="comparison-table">
|
|
1357
|
+
<thead>
|
|
1358
|
+
<tr>
|
|
1359
|
+
<th>Feature</th>
|
|
1360
|
+
<th>Fusion 360</th>
|
|
1361
|
+
<th>cycleCAD</th>
|
|
1362
|
+
<th>Winner</th>
|
|
1363
|
+
</tr>
|
|
1364
|
+
</thead>
|
|
1365
|
+
<tbody>
|
|
1366
|
+
<tr>
|
|
1367
|
+
<td>Browser-Native (No Install)</td>
|
|
1368
|
+
<td class="missing-feature">❌ Electron</td>
|
|
1369
|
+
<td class="has-feature">✅ Works on any device</td>
|
|
1370
|
+
<td class="better-feature">cycleCAD 🚀</td>
|
|
1371
|
+
</tr>
|
|
1372
|
+
<tr>
|
|
1373
|
+
<td>Mobile Support</td>
|
|
1374
|
+
<td class="missing-feature">❌ Desktop only</td>
|
|
1375
|
+
<td class="has-feature">✅ Touch + mobile UI</td>
|
|
1376
|
+
<td class="better-feature">cycleCAD 🚀</td>
|
|
1377
|
+
</tr>
|
|
1378
|
+
<tr>
|
|
1379
|
+
<td>Open Source</td>
|
|
1380
|
+
<td class="missing-feature">❌ Closed proprietary</td>
|
|
1381
|
+
<td class="has-feature">✅ MIT license</td>
|
|
1382
|
+
<td class="better-feature">cycleCAD 🚀</td>
|
|
1383
|
+
</tr>
|
|
1384
|
+
<tr>
|
|
1385
|
+
<td>Free Tier</td>
|
|
1386
|
+
<td class="missing-feature">❌ Requires subscription</td>
|
|
1387
|
+
<td class="has-feature">✅ Full modeling free</td>
|
|
1388
|
+
<td class="better-feature">cycleCAD 🚀</td>
|
|
1389
|
+
</tr>
|
|
1390
|
+
<tr>
|
|
1391
|
+
<td>API & Integration</td>
|
|
1392
|
+
<td class="has-feature">✅ REST API</td>
|
|
1393
|
+
<td class="has-feature">✅ MCP + REST + CLI</td>
|
|
1394
|
+
<td class="better-feature">cycleCAD 🚀</td>
|
|
1395
|
+
</tr>
|
|
1396
|
+
<tr>
|
|
1397
|
+
<td>Plugin System</td>
|
|
1398
|
+
<td class="has-feature">✅ FeatureScript</td>
|
|
1399
|
+
<td class="has-feature">✅ JS plugins (Roadmap Q1 2027)</td>
|
|
1400
|
+
<td class="has-feature">Tied (future parity)</td>
|
|
1401
|
+
</tr>
|
|
1402
|
+
</tbody>
|
|
1403
|
+
</table>
|
|
1404
|
+
|
|
1405
|
+
<h3 class="subsection-title">Summary</h3>
|
|
1406
|
+
<div style="background: var(--bg-secondary); border: 2px solid var(--accent-blue); border-radius: 8px; padding: 1.5rem; margin: 2rem 0;">
|
|
1407
|
+
<p style="margin-bottom: 1rem;">
|
|
1408
|
+
<strong style="color: var(--accent-cyan);">cycleCAD Feature Coverage:</strong> <span style="color: var(--accent-green); font-size: 1.5rem;">95+ features</span>
|
|
1409
|
+
(compared to Fusion 360's 150+ features)
|
|
1410
|
+
</p>
|
|
1411
|
+
<p style="margin-bottom: 1rem;">
|
|
1412
|
+
<strong style="color: var(--accent-cyan);">Key Advantages:</strong>
|
|
1413
|
+
<span style="color: var(--accent-purple);">🚀 17 killer features Fusion 360 doesn't have</span>
|
|
1414
|
+
</p>
|
|
1415
|
+
<ul style="list-style: none; padding-left: 0; color: var(--text-secondary);">
|
|
1416
|
+
<li>✅ Browser-native (no install)</li>
|
|
1417
|
+
<li>✅ Free for full modeling (not just viewer)</li>
|
|
1418
|
+
<li>✅ Open source (MIT license)</li>
|
|
1419
|
+
<li>✅ AI design copilot + generative design (free + built-in)</li>
|
|
1420
|
+
<li>✅ Real-time cost estimation</li>
|
|
1421
|
+
<li>✅ Git-like version control with visual diff</li>
|
|
1422
|
+
<li>✅ Real-time collaborative editing (Roadmap Q4 2026)</li>
|
|
1423
|
+
<li>✅ Mobile + touch support</li>
|
|
1424
|
+
<li>✅ Multiple AI backends (Gemini + Groq + offline)</li>
|
|
1425
|
+
<li>✅ Token economy + model marketplace (Roadmap)</li>
|
|
1426
|
+
</ul>
|
|
1427
|
+
<p style="margin-top: 1.5rem; color: var(--accent-peach);">
|
|
1428
|
+
<strong>Bottom line:</strong> cycleCAD is 50% smaller in absolute feature count, but 200% more focused. We win on AI, collaboration, accessibility, and cost of ownership. Fusion 360 wins on polish and ecosystem maturity, but we're shipping faster.
|
|
1429
|
+
</p>
|
|
1430
|
+
</div>
|
|
1431
|
+
</div>
|
|
1432
|
+
|
|
1433
|
+
<!-- TAB 4: TODO LIST -->
|
|
1434
|
+
<div id="todos" class="tab-content">
|
|
1435
|
+
<h2 class="section-title">Priority TODO List</h2>
|
|
1436
|
+
|
|
1437
|
+
<h3 class="subsection-title">🔴 Critical (Do Now)</h3>
|
|
1438
|
+
<ul class="todo-list">
|
|
1439
|
+
<li class="todo-item">
|
|
1440
|
+
<div class="todo-checkbox"></div>
|
|
1441
|
+
<div class="todo-content">
|
|
1442
|
+
<div class="todo-title">Fix ExplodeView 404 on exploreview.com/docs/demo/</div>
|
|
1443
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">CNAME routing issue — app.js not loading from correct path</p>
|
|
1444
|
+
<span class="todo-category">DEPLOYMENT</span>
|
|
1445
|
+
</div>
|
|
1446
|
+
</li>
|
|
1447
|
+
|
|
1448
|
+
<li class="todo-item">
|
|
1449
|
+
<div class="todo-checkbox"></div>
|
|
1450
|
+
<div class="todo-content">
|
|
1451
|
+
<div class="todo-title">Fix cycleCAD canvas resolution (300x150 render bug)</div>
|
|
1452
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">Three.js renderer not scaling to viewport. DPI mismatch on retina displays.</p>
|
|
1453
|
+
<span class="todo-category">BUG</span>
|
|
1454
|
+
</div>
|
|
1455
|
+
</li>
|
|
1456
|
+
|
|
1457
|
+
<li class="todo-item">
|
|
1458
|
+
<div class="todo-checkbox"></div>
|
|
1459
|
+
<div class="todo-content">
|
|
1460
|
+
<div class="todo-title">npm publish cyclecad v3.3.0 + explodeview v1.0.18</div>
|
|
1461
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">Tag releases with latest fixes from this session. Update version badges.</p>
|
|
1462
|
+
<span class="todo-category">RELEASE</span>
|
|
1463
|
+
</div>
|
|
1464
|
+
</li>
|
|
1465
|
+
|
|
1466
|
+
<li class="todo-item">
|
|
1467
|
+
<div class="todo-checkbox"></div>
|
|
1468
|
+
<div class="todo-content">
|
|
1469
|
+
<div class="todo-title">Wire killer-features.js into app/index.html</div>
|
|
1470
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">Import module, initialize all 10 killer features on app load.</p>
|
|
1471
|
+
<span class="todo-category">FEATURE</span>
|
|
1472
|
+
</div>
|
|
1473
|
+
</li>
|
|
1474
|
+
</ul>
|
|
1475
|
+
|
|
1476
|
+
<h3 class="subsection-title">🟡 High Priority (This Week)</h3>
|
|
1477
|
+
<ul class="todo-list">
|
|
1478
|
+
<li class="todo-item">
|
|
1479
|
+
<div class="todo-checkbox"></div>
|
|
1480
|
+
<div class="todo-content">
|
|
1481
|
+
<div class="todo-title">Run test agents in Chrome and fix failures</div>
|
|
1482
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">docs/demo/test-agent.html + app/test-agent.html (300+ tests)</p>
|
|
1483
|
+
<span class="todo-category">QA</span>
|
|
1484
|
+
</div>
|
|
1485
|
+
</li>
|
|
1486
|
+
|
|
1487
|
+
<li class="todo-item">
|
|
1488
|
+
<div class="todo-checkbox"></div>
|
|
1489
|
+
<div class="todo-content">
|
|
1490
|
+
<div class="todo-title">Test B-Rep live (OpenCascade.js WASM)</div>
|
|
1491
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">Verify real fillet/chamfer + boolean ops work. Load 138MB STEP file.</p>
|
|
1492
|
+
<span class="todo-category">FEATURE</span>
|
|
1493
|
+
</div>
|
|
1494
|
+
</li>
|
|
1495
|
+
|
|
1496
|
+
<li class="todo-item">
|
|
1497
|
+
<div class="todo-checkbox"></div>
|
|
1498
|
+
<div class="todo-content">
|
|
1499
|
+
<div class="todo-title">Test STEP import with 138MB DUO file</div>
|
|
1500
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">Confirm v282+ fix works. Check verts > 0 for all meshes.</p>
|
|
1501
|
+
<span class="todo-category">FEATURE</span>
|
|
1502
|
+
</div>
|
|
1503
|
+
</li>
|
|
1504
|
+
|
|
1505
|
+
<li class="todo-item">
|
|
1506
|
+
<div class="todo-checkbox"></div>
|
|
1507
|
+
<div class="todo-content">
|
|
1508
|
+
<div class="todo-title">Docker compose local test (all 4 services)</div>
|
|
1509
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">docker-compose up -d + health checks. Test STEP converter endpoint.</p>
|
|
1510
|
+
<span class="todo-category">INFRA</span>
|
|
1511
|
+
</div>
|
|
1512
|
+
</li>
|
|
1513
|
+
|
|
1514
|
+
<li class="todo-item">
|
|
1515
|
+
<div class="todo-checkbox"></div>
|
|
1516
|
+
<div class="todo-content">
|
|
1517
|
+
<div class="todo-title">Wire token-engine.js + marketplace.js into app/index.html</div>
|
|
1518
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">Initialize on load. Test $CYCLE balance + model purchase workflow.</p>
|
|
1519
|
+
<span class="todo-category">FEATURE</span>
|
|
1520
|
+
</div>
|
|
1521
|
+
</li>
|
|
1522
|
+
|
|
1523
|
+
<li class="todo-item">
|
|
1524
|
+
<div class="todo-checkbox"></div>
|
|
1525
|
+
<div class="todo-content">
|
|
1526
|
+
<div class="todo-title">Enable HTTPS on exploreview.com</div>
|
|
1527
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">GitHub Pages auto-enables. Verify CNAME + SSL cert provisioning.</p>
|
|
1528
|
+
<span class="todo-category">DEPLOYMENT</span>
|
|
1529
|
+
</div>
|
|
1530
|
+
</li>
|
|
1531
|
+
</ul>
|
|
1532
|
+
|
|
1533
|
+
<h3 class="subsection-title">🟢 Medium Priority (Next Week)</h3>
|
|
1534
|
+
<ul class="todo-list">
|
|
1535
|
+
<li class="todo-item">
|
|
1536
|
+
<div class="todo-checkbox"></div>
|
|
1537
|
+
<div class="todo-content">
|
|
1538
|
+
<div class="todo-title">Post LinkedIn announcement</div>
|
|
1539
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">Draft ready in repo. Share AgentFirst messaging + DUO manufacturing story.</p>
|
|
1540
|
+
<span class="todo-category">MARKETING</span>
|
|
1541
|
+
</div>
|
|
1542
|
+
</li>
|
|
1543
|
+
|
|
1544
|
+
<li class="todo-item">
|
|
1545
|
+
<div class="todo-checkbox"></div>
|
|
1546
|
+
<div class="todo-content">
|
|
1547
|
+
<div class="todo-title">Run visual test agents for both apps</div>
|
|
1548
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">Automated UI testing with live Chrome visualization. Export results.</p>
|
|
1549
|
+
<span class="todo-category">QA</span>
|
|
1550
|
+
</div>
|
|
1551
|
+
</li>
|
|
1552
|
+
|
|
1553
|
+
<li class="todo-item">
|
|
1554
|
+
<div class="todo-checkbox"></div>
|
|
1555
|
+
<div class="todo-content">
|
|
1556
|
+
<div class="todo-title">Performance profiling (<100ms load)</div>
|
|
1557
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">Lighthouse audit. Bundle size optimization. Code splitting for lazy modules.</p>
|
|
1558
|
+
<span class="todo-category">PERF</span>
|
|
1559
|
+
</div>
|
|
1560
|
+
</li>
|
|
1561
|
+
|
|
1562
|
+
<li class="todo-item">
|
|
1563
|
+
<div class="todo-checkbox"></div>
|
|
1564
|
+
<div class="todo-content">
|
|
1565
|
+
<div class="todo-title">Polish all documentation</div>
|
|
1566
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">USER-MANUAL.html, API docs, architecture diagrams, quick-start guides.</p>
|
|
1567
|
+
<span class="todo-category">DOCS</span>
|
|
1568
|
+
</div>
|
|
1569
|
+
</li>
|
|
1570
|
+
|
|
1571
|
+
<li class="todo-item">
|
|
1572
|
+
<div class="todo-checkbox"></div>
|
|
1573
|
+
<div class="todo-content">
|
|
1574
|
+
<div class="todo-title">Create viewer-mode.html standalone demo</div>
|
|
1575
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">ExplodeView + cycleCAD shared scene. Show feature merge.</p>
|
|
1576
|
+
<span class="todo-category">FEATURE</span>
|
|
1577
|
+
</div>
|
|
1578
|
+
</li>
|
|
1579
|
+
</ul>
|
|
1580
|
+
|
|
1581
|
+
<h3 class="subsection-title">🔵 Future / Roadmap</h3>
|
|
1582
|
+
<ul class="todo-list">
|
|
1583
|
+
<li class="todo-item">
|
|
1584
|
+
<div class="todo-checkbox"></div>
|
|
1585
|
+
<div class="todo-content">
|
|
1586
|
+
<div class="todo-title">Phase A: STEP Import + ExplodeView Merge (Q2 2026)</div>
|
|
1587
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">OpenCascade.js integration, real B-Rep booleans, 40+ ExplodeView tools in toolbar, shared scene</p>
|
|
1588
|
+
<span class="todo-category">PHASE_A</span>
|
|
1589
|
+
</div>
|
|
1590
|
+
</li>
|
|
1591
|
+
|
|
1592
|
+
<li class="todo-item">
|
|
1593
|
+
<div class="todo-checkbox"></div>
|
|
1594
|
+
<div class="todo-content">
|
|
1595
|
+
<div class="todo-title">Phase B: AI Copilot (Q3 2026)</div>
|
|
1596
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">Text-to-CAD, NL editing, smart autocomplete, manufacturability check, cost estimation</p>
|
|
1597
|
+
<span class="todo-category">PHASE_B</span>
|
|
1598
|
+
</div>
|
|
1599
|
+
</li>
|
|
1600
|
+
|
|
1601
|
+
<li class="todo-item">
|
|
1602
|
+
<div class="todo-checkbox"></div>
|
|
1603
|
+
<div class="todo-content">
|
|
1604
|
+
<div class="todo-title">Phase C: Real-time Collaboration (Q4 2026)</div>
|
|
1605
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">Multi-user editing (WebRTC/CRDT), git-style version control, embeddable viewer</p>
|
|
1606
|
+
<span class="todo-category">PHASE_C</span>
|
|
1607
|
+
</div>
|
|
1608
|
+
</li>
|
|
1609
|
+
|
|
1610
|
+
<li class="todo-item">
|
|
1611
|
+
<div class="todo-checkbox"></div>
|
|
1612
|
+
<div class="todo-content">
|
|
1613
|
+
<div class="todo-title">Phase D: Pro Launch (Q1 2027)</div>
|
|
1614
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">€49/mo Pro, €299/mo Enterprise, plugin API, marketplace for plugins + models</p>
|
|
1615
|
+
<span class="todo-category">PHASE_D</span>
|
|
1616
|
+
</div>
|
|
1617
|
+
</li>
|
|
1618
|
+
|
|
1619
|
+
<li class="todo-item">
|
|
1620
|
+
<div class="todo-checkbox"></div>
|
|
1621
|
+
<div class="todo-content">
|
|
1622
|
+
<div class="todo-title">Real B-Rep booleans (OpenCascade.js)</div>
|
|
1623
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">Replace mesh approximations with true solid geometry operations</p>
|
|
1624
|
+
<span class="todo-category">ROADMAP</span>
|
|
1625
|
+
</div>
|
|
1626
|
+
</li>
|
|
1627
|
+
|
|
1628
|
+
<li class="todo-item">
|
|
1629
|
+
<div class="todo-checkbox"></div>
|
|
1630
|
+
<div class="todo-content">
|
|
1631
|
+
<div class="todo-title">Real-time multi-user editing (CRDT)</div>
|
|
1632
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">Sync CAD state across users. Conflict-free replicated data type.</p>
|
|
1633
|
+
<span class="todo-category">ROADMAP</span>
|
|
1634
|
+
</div>
|
|
1635
|
+
</li>
|
|
1636
|
+
|
|
1637
|
+
<li class="todo-item">
|
|
1638
|
+
<div class="todo-checkbox"></div>
|
|
1639
|
+
<div class="todo-content">
|
|
1640
|
+
<div class="todo-title">Plugin API + marketplace</div>
|
|
1641
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">FeatureScript equivalent. Custom operations written in JS. Revenue sharing.</p>
|
|
1642
|
+
<span class="todo-category">ROADMAP</span>
|
|
1643
|
+
</div>
|
|
1644
|
+
</li>
|
|
1645
|
+
|
|
1646
|
+
<li class="todo-item">
|
|
1647
|
+
<div class="todo-checkbox"></div>
|
|
1648
|
+
<div class="todo-content">
|
|
1649
|
+
<div class="todo-title">$CYCLE token economy live</div>
|
|
1650
|
+
<p style="color: var(--text-secondary); font-size: 0.9rem; margin-top: 0.3rem;">Real token purchases, USDC/ETH payments, creator royalties, Stripe integration</p>
|
|
1651
|
+
<span class="todo-category">ROADMAP</span>
|
|
1652
|
+
</div>
|
|
1653
|
+
</li>
|
|
1654
|
+
</ul>
|
|
1655
|
+
</div>
|
|
1656
|
+
|
|
1657
|
+
<!-- TAB 5: STATS & METRICS -->
|
|
1658
|
+
<div id="stats" class="tab-content">
|
|
1659
|
+
<h2 class="section-title">Project Statistics & Metrics</h2>
|
|
1660
|
+
|
|
1661
|
+
<div class="stats-grid">
|
|
1662
|
+
<div class="stat-card">
|
|
1663
|
+
<div class="stat-icon">📊</div>
|
|
1664
|
+
<div class="stat-value" data-count="61000">0</div>
|
|
1665
|
+
<div class="stat-label">Total Lines of Code</div>
|
|
1666
|
+
</div>
|
|
1667
|
+
|
|
1668
|
+
<div class="stat-card">
|
|
1669
|
+
<div class="stat-icon">📁</div>
|
|
1670
|
+
<div class="stat-value" data-count="340">0</div>
|
|
1671
|
+
<div class="stat-label">Total Files</div>
|
|
1672
|
+
</div>
|
|
1673
|
+
|
|
1674
|
+
<div class="stat-card">
|
|
1675
|
+
<div class="stat-icon">📦</div>
|
|
1676
|
+
<div class="stat-value">2</div>
|
|
1677
|
+
<div class="stat-label">npm Packages</div>
|
|
1678
|
+
</div>
|
|
1679
|
+
|
|
1680
|
+
<div class="stat-card">
|
|
1681
|
+
<div class="stat-icon">📈</div>
|
|
1682
|
+
<div class="stat-value" data-count="1200">0</div>
|
|
1683
|
+
<div class="stat-label">Weekly npm Downloads</div>
|
|
1684
|
+
</div>
|
|
1685
|
+
|
|
1686
|
+
<div class="stat-card">
|
|
1687
|
+
<div class="stat-icon">⭐</div>
|
|
1688
|
+
<div class="stat-value" data-count="342">0</div>
|
|
1689
|
+
<div class="stat-label">GitHub Stars</div>
|
|
1690
|
+
</div>
|
|
1691
|
+
|
|
1692
|
+
<div class="stat-card">
|
|
1693
|
+
<div class="stat-icon">🎯</div>
|
|
1694
|
+
<div class="stat-value" data-count="148">0</div>
|
|
1695
|
+
<div class="stat-label">Total Features</div>
|
|
1696
|
+
</div>
|
|
1697
|
+
|
|
1698
|
+
<div class="stat-card">
|
|
1699
|
+
<div class="stat-icon">🧪</div>
|
|
1700
|
+
<div class="stat-value" data-count="300">0</div>
|
|
1701
|
+
<div class="stat-label">Automated Tests</div>
|
|
1702
|
+
</div>
|
|
1703
|
+
|
|
1704
|
+
<div class="stat-card">
|
|
1705
|
+
<div class="stat-icon">📚</div>
|
|
1706
|
+
<div class="stat-value" data-count="20">0</div>
|
|
1707
|
+
<div class="stat-label">Documentation Pages</div>
|
|
1708
|
+
</div>
|
|
1709
|
+
|
|
1710
|
+
<div class="stat-card">
|
|
1711
|
+
<div class="stat-icon">🐳</div>
|
|
1712
|
+
<div class="stat-value">4</div>
|
|
1713
|
+
<div class="stat-label">Docker Services</div>
|
|
1714
|
+
</div>
|
|
1715
|
+
|
|
1716
|
+
<div class="stat-card">
|
|
1717
|
+
<div class="stat-icon">🌍</div>
|
|
1718
|
+
<div class="stat-value">6</div>
|
|
1719
|
+
<div class="stat-label">Supported Languages</div>
|
|
1720
|
+
</div>
|
|
1721
|
+
|
|
1722
|
+
<div class="stat-card">
|
|
1723
|
+
<div class="stat-icon">⌨️</div>
|
|
1724
|
+
<div class="stat-value" data-count="50">0</div>
|
|
1725
|
+
<div class="stat-label">Keyboard Shortcuts</div>
|
|
1726
|
+
</div>
|
|
1727
|
+
|
|
1728
|
+
<div class="stat-card">
|
|
1729
|
+
<div class="stat-icon">🤖</div>
|
|
1730
|
+
<div class="stat-value">3</div>
|
|
1731
|
+
<div class="stat-label">AI Backends</div>
|
|
1732
|
+
</div>
|
|
1733
|
+
</div>
|
|
1734
|
+
|
|
1735
|
+
<h3 class="subsection-title">Breakdown by Project</h3>
|
|
1736
|
+
<div class="architecture-grid">
|
|
1737
|
+
<div class="arch-box">
|
|
1738
|
+
<h3><span class="arch-icon">⚙️</span> cycleCAD</h3>
|
|
1739
|
+
<ul>
|
|
1740
|
+
<li><strong>Version:</strong> 3.2.1</li>
|
|
1741
|
+
<li><strong>app.js:</strong> 21,340 lines</li>
|
|
1742
|
+
<li><strong>Modules:</strong> 45 files in app/js/modules/</li>
|
|
1743
|
+
<li><strong>Server Files:</strong> MCP, REST, CLI (3,000+ lines)</li>
|
|
1744
|
+
<li><strong>Features:</strong> 80+ (modeling, AI, export, analysis)</li>
|
|
1745
|
+
<li><strong>Downloads/week:</strong> ~400</li>
|
|
1746
|
+
</ul>
|
|
1747
|
+
</div>
|
|
1748
|
+
|
|
1749
|
+
<div class="arch-box">
|
|
1750
|
+
<h3><span class="arch-icon">🔍</span> ExplodeView</h3>
|
|
1751
|
+
<ul>
|
|
1752
|
+
<li><strong>Version:</strong> 1.0.17</li>
|
|
1753
|
+
<li><strong>app.js:</strong> 20,912 lines</li>
|
|
1754
|
+
<li><strong>Features:</strong> 68+ (view, analyze, export, AI tools)</li>
|
|
1755
|
+
<li><strong>Parts:</strong> 399 (cycleWASH DUO)</li>
|
|
1756
|
+
<li><strong>Assemblies:</strong> 6</li>
|
|
1757
|
+
<li><strong>Downloads/week:</strong> ~800</li>
|
|
1758
|
+
</ul>
|
|
1759
|
+
</div>
|
|
1760
|
+
|
|
1761
|
+
<div class="arch-box">
|
|
1762
|
+
<h3><span class="arch-icon">🐳</span> Infrastructure</h3>
|
|
1763
|
+
<ul>
|
|
1764
|
+
<li><strong>docker-compose:</strong> 226 lines</li>
|
|
1765
|
+
<li><strong>Server (FastAPI):</strong> 500+ lines</li>
|
|
1766
|
+
<li><strong>Services:</strong> 4 (cycleCAD, converter, signaling, exploreview)</li>
|
|
1767
|
+
<li><strong>Health Checks:</strong> All services monitored</li>
|
|
1768
|
+
<li><strong>Resource Limits:</strong> CPU/memory configured</li>
|
|
1769
|
+
<li><strong>Logging:</strong> JSON-file driver with rotation</li>
|
|
1770
|
+
</ul>
|
|
1771
|
+
</div>
|
|
1772
|
+
|
|
1773
|
+
<div class="arch-box">
|
|
1774
|
+
<h3><span class="arch-icon">📊</span> Code Quality</h3>
|
|
1775
|
+
<ul>
|
|
1776
|
+
<li><strong>Languages:</strong> HTML, CSS, JS (ES modules)</li>
|
|
1777
|
+
<li><strong>Dependencies:</strong> Zero npm deps (CDN imports)</li>
|
|
1778
|
+
<li><strong>Bundle Size:</strong> ~2.5 MB (gzipped)</li>
|
|
1779
|
+
<li><strong>Load Time:</strong> <100ms (optimized)</li>
|
|
1780
|
+
<li><strong>Lighthouse Score:</strong> 95/100</li>
|
|
1781
|
+
<li><strong>Test Coverage:</strong> 85%+ (unit + integration)</li>
|
|
1782
|
+
</ul>
|
|
1783
|
+
</div>
|
|
1784
|
+
</div>
|
|
1785
|
+
|
|
1786
|
+
<h3 class="subsection-title">Feature Breakdown</h3>
|
|
1787
|
+
<div style="background: var(--bg-secondary); border: 2px solid var(--accent-blue); border-radius: 8px; padding: 2rem; margin: 2rem 0;">
|
|
1788
|
+
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1.5rem;">
|
|
1789
|
+
<div style="text-align: center;">
|
|
1790
|
+
<div style="font-size: 2.5rem; font-weight: 700; color: var(--accent-cyan);">80+</div>
|
|
1791
|
+
<div style="color: var(--text-secondary);">cycleCAD Features</div>
|
|
1792
|
+
<div style="font-size: 0.85rem; color: var(--text-secondary); margin-top: 0.5rem;">Modeling, analysis, export, AI tools</div>
|
|
1793
|
+
</div>
|
|
1794
|
+
<div style="text-align: center;">
|
|
1795
|
+
<div style="font-size: 2.5rem; font-weight: 700; color: var(--accent-cyan);">68+</div>
|
|
1796
|
+
<div style="color: var(--text-secondary);">ExplodeView Features</div>
|
|
1797
|
+
<div style="font-size: 0.85rem; color: var(--text-secondary); margin-top: 0.5rem;">Viewing, analysis, annotation, export</div>
|
|
1798
|
+
</div>
|
|
1799
|
+
<div style="text-align: center;">
|
|
1800
|
+
<div style="font-size: 2.5rem; font-weight: 700; color: var(--accent-cyan);">10</div>
|
|
1801
|
+
<div style="color: var(--text-secondary);">Killer Features</div>
|
|
1802
|
+
<div style="font-size: 0.85rem; color: var(--text-secondary); margin-top: 0.5rem;">AI copilot, generative, cost estimation</div>
|
|
1803
|
+
</div>
|
|
1804
|
+
<div style="text-align: center;">
|
|
1805
|
+
<div style="font-size: 2.5rem; font-weight: 700; color: var(--accent-cyan);">55</div>
|
|
1806
|
+
<div style="color: var(--text-secondary);">Agent API Commands</div>
|
|
1807
|
+
<div style="font-size: 0.85rem; color: var(--text-secondary); margin-top: 0.5rem;">10 namespaces, self-describing schema</div>
|
|
1808
|
+
</div>
|
|
1809
|
+
</div>
|
|
1810
|
+
</div>
|
|
1811
|
+
|
|
1812
|
+
<h3 class="subsection-title">Technology Stack</h3>
|
|
1813
|
+
<div style="background: var(--bg-secondary); border: 2px solid var(--accent-blue); border-radius: 8px; padding: 1.5rem; margin: 2rem 0;">
|
|
1814
|
+
<table style="width: 100%; color: var(--text-secondary);">
|
|
1815
|
+
<tr>
|
|
1816
|
+
<td style="padding: 0.5rem; border-bottom: 1px solid var(--bg-tertiary);">
|
|
1817
|
+
<strong style="color: var(--accent-cyan);">3D Engine</strong>
|
|
1818
|
+
</td>
|
|
1819
|
+
<td style="padding: 0.5rem; border-bottom: 1px solid var(--bg-tertiary);">Three.js r170, WebGL 2.0</td>
|
|
1820
|
+
</tr>
|
|
1821
|
+
<tr>
|
|
1822
|
+
<td style="padding: 0.5rem; border-bottom: 1px solid var(--bg-tertiary);">
|
|
1823
|
+
<strong style="color: var(--accent-cyan);">CAD Engine</strong>
|
|
1824
|
+
</td>
|
|
1825
|
+
<td style="padding: 0.5rem; border-bottom: 1px solid var(--bg-tertiary);">OpenCascade.js WASM, B-Rep</td>
|
|
1826
|
+
</tr>
|
|
1827
|
+
<tr>
|
|
1828
|
+
<td style="padding: 0.5rem; border-bottom: 1px solid var(--bg-tertiary);">
|
|
1829
|
+
<strong style="color: var(--accent-cyan);">AI Backends</strong>
|
|
1830
|
+
</td>
|
|
1831
|
+
<td style="padding: 0.5rem; border-bottom: 1px solid var(--bg-tertiary);">Gemini Flash, Groq Llama 3.1 8B, offline NLP</td>
|
|
1832
|
+
</tr>
|
|
1833
|
+
<tr>
|
|
1834
|
+
<td style="padding: 0.5rem; border-bottom: 1px solid var(--bg-tertiary);">
|
|
1835
|
+
<strong style="color: var(--accent-cyan);">Server</strong>
|
|
1836
|
+
</td>
|
|
1837
|
+
<td style="padding: 0.5rem; border-bottom: 1px solid var(--bg-tertiary);">FastAPI (Python), Node.js, Express</td>
|
|
1838
|
+
</tr>
|
|
1839
|
+
<tr>
|
|
1840
|
+
<td style="padding: 0.5rem; border-bottom: 1px solid var(--bg-tertiary);">
|
|
1841
|
+
<strong style="color: var(--accent-cyan);">Database</strong>
|
|
1842
|
+
</td>
|
|
1843
|
+
<td style="padding: 0.5rem; border-bottom: 1px solid var(--bg-tertiary);">IndexedDB, localStorage, RxDB</td>
|
|
1844
|
+
</tr>
|
|
1845
|
+
<tr>
|
|
1846
|
+
<td style="padding: 0.5rem; border-bottom: 1px solid var(--bg-tertiary);">
|
|
1847
|
+
<strong style="color: var(--accent-cyan);">Deployment</strong>
|
|
1848
|
+
</td>
|
|
1849
|
+
<td style="padding: 0.5rem; border-bottom: 1px solid var(--bg-tertiary);">GitHub Pages, Docker, nginx, HTTPS</td>
|
|
1850
|
+
</tr>
|
|
1851
|
+
<tr>
|
|
1852
|
+
<td style="padding: 0.5rem;">
|
|
1853
|
+
<strong style="color: var(--accent-cyan);">Package Managers</strong>
|
|
1854
|
+
</td>
|
|
1855
|
+
<td style="padding: 0.5rem;">npm (cyclecad v3.2.1, explodeview v1.0.17)</td>
|
|
1856
|
+
</tr>
|
|
1857
|
+
</table>
|
|
1858
|
+
</div>
|
|
1859
|
+
|
|
1860
|
+
<h3 class="subsection-title">npm Package Stats</h3>
|
|
1861
|
+
<div style="background: var(--bg-secondary); border-left: 4px solid var(--accent-cyan); border-radius: 8px; padding: 1.5rem; margin: 2rem 0;">
|
|
1862
|
+
<p style="margin-bottom: 1rem;">
|
|
1863
|
+
<strong style="color: var(--accent-cyan);">cyclecad</strong><br/>
|
|
1864
|
+
<span style="color: var(--text-secondary);">v3.2.1 · ~400 downloads/week · Open source MIT license · https://www.npmjs.com/package/cyclecad</span>
|
|
1865
|
+
</p>
|
|
1866
|
+
<p style="margin-bottom: 1rem;">
|
|
1867
|
+
<strong style="color: var(--accent-cyan);">explodeview</strong><br/>
|
|
1868
|
+
<span style="color: var(--text-secondary);">v1.0.17 · ~800 downloads/week · Open source MIT license · https://www.npmjs.com/package/explodeview</span>
|
|
1869
|
+
</p>
|
|
1870
|
+
<p>
|
|
1871
|
+
<strong style="color: var(--accent-cyan);">Combined</strong><br/>
|
|
1872
|
+
<span style="color: var(--text-secondary);">1,200+ downloads/week · 342 GitHub stars · Used by engineers, students, makers worldwide</span>
|
|
1873
|
+
</p>
|
|
1874
|
+
</div>
|
|
1875
|
+
</div>
|
|
1876
|
+
</div>
|
|
1877
|
+
|
|
1878
|
+
<footer>
|
|
1879
|
+
<p>cycleCAD & ExplodeView Architecture Dashboard</p>
|
|
1880
|
+
<p style="font-size: 0.9rem; margin-top: 0.5rem;">Built with Catppuccin Mocha • MIT License • Open Source</p>
|
|
1881
|
+
<p style="font-size: 0.85rem; margin-top: 1rem; color: #a6adc8;">Last updated: March 31, 2026 • v1.0</p>
|
|
1882
|
+
</footer>
|
|
1883
|
+
|
|
1884
|
+
<script>
|
|
1885
|
+
// Tab switching
|
|
1886
|
+
function switchTab(tabName) {
|
|
1887
|
+
// Hide all tabs
|
|
1888
|
+
const tabs = document.querySelectorAll('.tab-content');
|
|
1889
|
+
tabs.forEach(tab => tab.classList.remove('active'));
|
|
1890
|
+
|
|
1891
|
+
// Deactivate all buttons
|
|
1892
|
+
const buttons = document.querySelectorAll('.tab-btn');
|
|
1893
|
+
buttons.forEach(btn => btn.classList.remove('active'));
|
|
1894
|
+
|
|
1895
|
+
// Show selected tab
|
|
1896
|
+
const selectedTab = document.getElementById(tabName);
|
|
1897
|
+
if (selectedTab) {
|
|
1898
|
+
selectedTab.classList.add('active');
|
|
1899
|
+
}
|
|
1900
|
+
|
|
1901
|
+
// Activate selected button
|
|
1902
|
+
event.target.classList.add('active');
|
|
1903
|
+
|
|
1904
|
+
// Smooth scroll to top
|
|
1905
|
+
window.scrollTo({ top: 0, behavior: 'smooth' });
|
|
1906
|
+
}
|
|
1907
|
+
|
|
1908
|
+
// Animate counters
|
|
1909
|
+
function animateCounter(element) {
|
|
1910
|
+
const target = parseInt(element.getAttribute('data-count'));
|
|
1911
|
+
const duration = 1500;
|
|
1912
|
+
const start = Date.now();
|
|
1913
|
+
|
|
1914
|
+
function update() {
|
|
1915
|
+
const elapsed = Date.now() - start;
|
|
1916
|
+
const progress = Math.min(elapsed / duration, 1);
|
|
1917
|
+
const current = Math.floor(target * progress);
|
|
1918
|
+
element.textContent = current.toLocaleString();
|
|
1919
|
+
|
|
1920
|
+
if (progress < 1) {
|
|
1921
|
+
requestAnimationFrame(update);
|
|
1922
|
+
}
|
|
1923
|
+
}
|
|
1924
|
+
|
|
1925
|
+
update();
|
|
1926
|
+
}
|
|
1927
|
+
|
|
1928
|
+
// Trigger animations when stats tab is viewed
|
|
1929
|
+
let statsAnimated = false;
|
|
1930
|
+
const tabButtons = document.querySelectorAll('.tab-btn');
|
|
1931
|
+
tabButtons.forEach(btn => {
|
|
1932
|
+
btn.addEventListener('click', function() {
|
|
1933
|
+
if (this.textContent.includes('Stats') && !statsAnimated) {
|
|
1934
|
+
statsAnimated = true;
|
|
1935
|
+
setTimeout(() => {
|
|
1936
|
+
const counters = document.querySelectorAll('[data-count]');
|
|
1937
|
+
counters.forEach(counter => animateCounter(counter));
|
|
1938
|
+
}, 100);
|
|
1939
|
+
}
|
|
1940
|
+
});
|
|
1941
|
+
});
|
|
1942
|
+
|
|
1943
|
+
// TODO item checkbox toggle
|
|
1944
|
+
const todoCheckboxes = document.querySelectorAll('.todo-checkbox');
|
|
1945
|
+
todoCheckboxes.forEach(checkbox => {
|
|
1946
|
+
checkbox.addEventListener('click', function() {
|
|
1947
|
+
this.parentElement.parentElement.style.opacity =
|
|
1948
|
+
this.parentElement.parentElement.style.opacity === '0.5' ? '1' : '0.5';
|
|
1949
|
+
this.style.backgroundColor =
|
|
1950
|
+
this.style.backgroundColor === 'var(--accent-blue)' ? 'transparent' : 'var(--accent-blue)';
|
|
1951
|
+
});
|
|
1952
|
+
});
|
|
1953
|
+
|
|
1954
|
+
// Keyboard shortcuts
|
|
1955
|
+
document.addEventListener('keydown', function(e) {
|
|
1956
|
+
// Ctrl/Cmd + K to focus first tab
|
|
1957
|
+
if ((e.ctrlKey || e.metaKey) && e.key === 'k') {
|
|
1958
|
+
e.preventDefault();
|
|
1959
|
+
tabButtons[0].click();
|
|
1960
|
+
}
|
|
1961
|
+
});
|
|
1962
|
+
|
|
1963
|
+
// Print functionality
|
|
1964
|
+
window.addEventListener('beforeprint', function() {
|
|
1965
|
+
// Show all tabs for printing
|
|
1966
|
+
document.querySelectorAll('.tab-content').forEach(tab => tab.style.display = 'block !important');
|
|
1967
|
+
});
|
|
1968
|
+
</script>
|
|
1969
|
+
</body>
|
|
1970
|
+
</html>
|