Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
df2f8b6
Migrate CascadeStudio from legacy script tags to ES Modules
zalo Feb 16, 2026
fbaf52c
Upgrade opencascade.js from v0.1.x (WebIDL) to v2 (Embind/OCCT 8.0)
zalo Feb 16, 2026
605ed8a
Stop vendoring node_modules — use npm + esbuild build
zalo Feb 16, 2026
2ff9047
Add class refactor, OpenSCAD mode, and agent API
zalo Feb 16, 2026
75fc2f7
Fix PR review comments, update CI, and add Playwright test suite
zalo Feb 16, 2026
014d218
Add build123d-style selector API, measurement functions, Dockview lay…
zalo Feb 16, 2026
fc4046e
Fix CI: update opencascade.js lockfile to commit with cascadestudio.wasm
zalo Feb 16, 2026
fadc91d
Fix flaky tests: wait for worker console logs before asserting
zalo Feb 16, 2026
3adc985
Fix Vercel deployment, address PR review comments, and add new bindings
zalo Feb 16, 2026
ab9e655
Fix meshing coordinate bug, add binding fallbacks, and fix CI tests
zalo Feb 16, 2026
508c322
Fix OCCT 8.0 API changes: HashCode, Normal, Mirror, STEP export
zalo Feb 18, 2026
82a52e1
Enable Circle and face type tests, remove binding gap workarounds
zalo Feb 18, 2026
06985b9
Fix normals and boolean ops for OCCT 8.0 destructive mode
zalo Feb 18, 2026
7c0bcc8
Use OCJS boolean helpers with proper fuzzy value + non-destructive mode
zalo Feb 18, 2026
c4f38a0
Fix boolean fuzz value: 0.1 → 1e-7 (OCCT default)
zalo Feb 18, 2026
6624e94
Fix inverted normals: remove incorrect normal flip for REVERSED faces
zalo Feb 18, 2026
bafaac5
Fix REVERSED face normals and remove invalid webgl2:false option
zalo Feb 19, 2026
0338af1
Fix dark 3D viewport in Playwright screenshots with Three.js r170
zalo Feb 19, 2026
9cf58ca
Remove binding fallbacks and use proper OCCT APIs
zalo Feb 20, 2026
c536ca0
Add Playwright artifacts to .gitignore
zalo Feb 20, 2026
019b229
Fix sphere mesh flattening and ensure devDependencies install
zalo Feb 20, 2026
b1979ec
Remove CDT fallback and use OCCT 8.0 normal computation
zalo Feb 20, 2026
b83446a
Add OpenSCAD and selector tests, fix transpiler and evaluate bugs
zalo Feb 20, 2026
ba35e34
Fix esbuild minification, LinearProperties binding, and scale test
zalo Feb 20, 2026
64f22c1
Consolidate tests from 32 to 11 for faster execution
zalo Feb 20, 2026
1fd4965
Use D1 tangent for _edgeDirection instead of D0 endpoint sampling
zalo Feb 20, 2026
f87e4e9
Add scrubable modeling history timeline to 3D viewport
zalo Feb 20, 2026
beb2ad2
Add timeline overflow scroll and portrait-mode responsive layout
zalo Feb 20, 2026
e29456d
Fix dockview sizing with initialHeight and make navbar scrollable
zalo Feb 20, 2026
7313851
Fix portrait panel sizing and navbar scroll
zalo Feb 20, 2026
3243d33
Match master color scheme and hide dockview tabs in portrait
zalo Feb 20, 2026
560755e
Disable Three.js color management for legacy rendering look
zalo Feb 20, 2026
70b5bed
Polish UI: refined tabs, topnav, timeline, and console styling
zalo Feb 21, 2026
99a61ed
Fix GUI panel offset and use ?code= URL format for master compat
zalo Feb 21, 2026
db6ebf6
Revert design polish: restore pre-polish fonts and accents
zalo Feb 21, 2026
ad2750e
Add comprehensive starter example, history API, and agent guide
zalo Feb 21, 2026
2d2433f
Fix starter example: hollowing and Union bugs
zalo Feb 21, 2026
0c643b4
Fix Embind enum comparisons and add 2D face offset to Offset()
zalo Feb 21, 2026
8125875
Reduce pen holder chamfer to avoid invalid geometry
zalo Feb 21, 2026
5501242
Fix label and divider positioning in starter example
zalo Feb 21, 2026
4569714
Add volume sanity checks to boolean operations
zalo Feb 21, 2026
0ee832f
Fix divider Translate not being captured in variable
zalo Feb 21, 2026
f3aed42
Add defensive checks to standard library for common pitfalls
zalo Feb 21, 2026
f64bd74
Update Offset intellisense to document face/wire/solid behavior
zalo Feb 21, 2026
1184e6a
Overhaul IntelliSense type definitions for accuracy and completeness
zalo Feb 21, 2026
24d44fc
Streamline CascadeAPI golden path and fix agent discoverability
zalo Feb 21, 2026
df5c0e5
Add modeling tips and organic/revolved examples to getQuickStart
zalo Feb 21, 2026
47cb740
Fix saveScreenshot resetting camera angle set by setCameraAngle
zalo Feb 21, 2026
79bf2be
Fix revolved example: use Polygon 3D points instead of Sketch+Rotate
zalo Feb 21, 2026
6c7f389
Add Sketch plane parameter and strategic modeling guidance
zalo Feb 21, 2026
0012310
Update README for v2 and bump version to 2.0.0
zalo Feb 22, 2026
c0d874f
Reduce Monaco editor padding on mobile and fix minor bugs
zalo Feb 23, 2026
11d05f9
Hide line numbers and disable pinch zoom on mobile
zalo Feb 23, 2026
c9ea540
Fit camera to model bounding box on first render
zalo Feb 23, 2026
16db709
Add GEB OpenSCAD starter example and transpiler improvements
zalo Feb 23, 2026
806029b
Add GEB starter example for OpenSCAD mode with text extrusion support
zalo Feb 23, 2026
43e8b03
Add GEB OpenSCAD starter example and transpiler improvements
zalo Feb 23, 2026
fa3f185
Replace GEB text example with fast bolt/nut OpenSCAD starter
zalo Feb 23, 2026
9af9f29
Fix Sketch.Fillet() call order in everything example
zalo Feb 24, 2026
6456408
Fillet all three corners in everything example Sketch
zalo Feb 24, 2026
be111f0
Allow Sketch.Fillet() before first LineTo for start corner
zalo Feb 24, 2026
4f4c55f
Fix Revolve with negative angles producing inside-out faces
zalo Feb 24, 2026
92921f1
Add cache validation test for shape operations
zalo Feb 24, 2026
ca70f54
Fix O(n²) flushHistoryStep and add re-evaluation timing test
zalo Feb 24, 2026
4963d10
Fix shape cache entries being deleted between evaluations
zalo Feb 24, 2026
2d54744
Split into cascade-core + cascade-studio monorepo
zalo Feb 24, 2026
c742a14
Revert "Split into cascade-core + cascade-studio monorepo"
zalo Feb 24, 2026
6f4e77f
Split into cascade-core + cascade-studio monorepo
zalo Feb 24, 2026
80dbb9f
Fix CI and Vercel deployment for monorepo structure
zalo Feb 24, 2026
567da71
Update README, add GitHub Pages deploy workflow, prep cascade-core fo…
zalo Feb 24, 2026
b3471ee
Add npm auto-publish workflow for cascade-core
zalo Feb 24, 2026
e8abde0
Auto-increment patch version on cascade-core publish
zalo Feb 24, 2026
297f7dd
Add README with images/examples to cascade-core, bump to v2.0.2
zalo Feb 24, 2026
8b527fb
Merge pull request #178 from zalo/monorepo-split
zalo Feb 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 27 additions & 33 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,48 +2,42 @@ name: CascadeStudio - End To End Test

on:
push:
pull_request:

jobs:
test:
name: End to End Test
runs-on: windows-latest
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
lfs: true

- name: Cache Node Modules
uses: actions/cache@v2
env:
cache-name: cache-node-modules
- name: Setup Node.js
uses: actions/setup-node@v4
with:
# npm cache files are stored in `~/.npm` on Linux/macOS
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-

- name: Install Testing Node Modules
run: |
cd test
npm install

- name: Run Server and Tests
run: |
start python "test/server.py"
cd test
npx folio --param screenshotOnFailure --param browserName=chromium

- name: Upload Failing Screenshots
uses: actions/upload-artifact@v2
if: failure()
with:
name: Screenshots
path: test/test-results
node-version: 20
cache: 'npm'

- name: Install Dependencies
run: npm ci

- name: Install Playwright Browsers
run: npx playwright install --with-deps chromium

- name: Where to go from here
- name: Build Project
run: npm run build

- name: Run Tests
run: npx playwright test

- name: Upload Test Results
uses: actions/upload-artifact@v4
if: failure()
run: echo "~~~*** Test failed! See the README.md in CascadeStudio/test for more information ***~~~"
with:
name: playwright-report
path: |
playwright-report/
test-results/
retention-days: 7
54 changes: 54 additions & 0 deletions .github/workflows/deploy-pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Deploy to GitHub Pages

on:
push:
branches: [master]

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: "pages"
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
lfs: true

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'

- name: Install Dependencies
run: npm ci

- name: Build Project
run: npm run build

- name: Setup Pages
uses: actions/configure-pages@v4

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: packages/cascade-studio/dist

deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
56 changes: 56 additions & 0 deletions .github/workflows/publish-cascade-core.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Publish cascade-core to npm

on:
push:
branches: [master]
paths:
- 'packages/cascade-core/**'

jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
lfs: true
token: ${{ secrets.GITHUB_TOKEN }}

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
registry-url: 'https://registry.npmjs.org'

- name: Install Dependencies
run: npm ci

- name: Bump patch version
id: bump
working-directory: packages/cascade-core
run: |
OLD_VERSION=$(node -p "require('./package.json').version")
npm version patch --no-git-tag-version
NEW_VERSION=$(node -p "require('./package.json').version")
echo "version=$NEW_VERSION" >> "$GITHUB_OUTPUT"
echo "Bumped $OLD_VERSION → $NEW_VERSION"

- name: Build cascade-core
run: node packages/cascade-core/scripts/build.cjs

- name: Publish to npm
working-directory: packages/cascade-core
run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

- name: Commit version bump
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add packages/cascade-core/package.json
git commit -m "cascade-core v${{ steps.bump.outputs.version }} [skip ci]"
git push
85 changes: 14 additions & 71 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@ yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# webpack bundle output file
dist/*
# Build output
build/
dist/
packages/*/dist/

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
Expand Down Expand Up @@ -41,77 +43,9 @@ bower_components
build/Release

# Dependency directories
node_modules/**/*
node_modules/
CascadeStudio/

# Three.js Build
!node_modules/three/
!node_modules/three/*/
!node_modules/three/build/*
# Three.js Controls
!node_modules/three/examples/*/
!node_modules/three/examples/js/
!node_modules/three/examples/js/*/
!node_modules/three/examples/js/controls/
!node_modules/three/examples/js/controls/*
!node_modules/three/examples/js/exporters/
!node_modules/three/examples/js/exporters/*

# Golden-Layout Scripts
!node_modules/golden-layout/
!node_modules/golden-layout/*/
!node_modules/golden-layout/index.d.ts
!node_modules/golden-layout/dist/
!node_modules/golden-layout/dist/*
# Golden-Layout Scripts
!node_modules/golden-layout/src/
!node_modules/golden-layout/src/*/
!node_modules/golden-layout/src/css/
!node_modules/golden-layout/src/css/*

# Monaco Editor Scripts
!node_modules/monaco-editor
!node_modules/monaco-editor/*
!node_modules/monaco-editor/min/
!node_modules/monaco-editor/min/**
!node_modules/monaco-editor/min-maps/
!node_modules/monaco-editor/min-maps/**

# JQuery Scripts
!node_modules/jquery/
!node_modules/jquery/*/
!node_modules/jquery/dist/
!node_modules/jquery/dist/*

# Raw Inflate and Deflate
!node_modules/rawflate/
!node_modules/rawflate/*

# OpenType.js Scripts
!node_modules/opentype.js/
!node_modules/opentype.js/*/
!node_modules/opentype.js/dist/
!node_modules/opentype.js/dist/*

# Tweakpane Bin
!node_modules/tweakpane/
!node_modules/tweakpane/*/
!node_modules/tweakpane/dist/
!node_modules/tweakpane/dist/*
!node_modules/tweakpane/dist/types/**/*

# opencascade.js Bin
!node_modules/opencascade.js/
!node_modules/opencascade.js/*/
!node_modules/opencascade.js/dist/
!node_modules/opencascade.js/dist/*
node_modules/opencascade.js/dist/opencascade.js
# Add the above line for now, can take it out if necessary

# potpack
!node_modules/potpack/
!node_modules/potpack/index.js

jspm_packages/

# TypeScript v1 declaration files
Expand Down Expand Up @@ -175,3 +109,12 @@ typings/

# TernJS port file
.tern-port

# Playwright
playwright-report/
test-results/
.playwright-mcp/

# Agent test screenshots
agent-test-*.png
chess-pawn*.png
1 change: 1 addition & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
include=dev
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
20
Loading
Loading