Compare commits
	
		
			155 Commits
		
	
	
		
			franknoiro
			...
			jtran/exec
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 437aacf477 | |||
| c6fb56058b | |||
| ca2fc1bf38 | |||
| 8e62f07d71 | |||
| 55ef40d136 | |||
| 3b7bbc1642 | |||
| 1a569af476 | |||
| e9fe455607 | |||
| 35387bbd7d | |||
| b26a0f98fc | |||
| b697258ad5 | |||
| 6c8aa799b4 | |||
| 9ceb247fcd | |||
| 6303130e08 | |||
| 47b1c1654a | |||
| e53bb07843 | |||
| 9d0f06b58f | |||
| 20777a60aa | |||
| 71c5451e3a | |||
| fd21850e48 | |||
| 294040b618 | |||
| ca95427f21 | |||
| 27c6f75a49 | |||
| 579151a9bb | |||
| 90f0f13d26 | |||
| 1a23d96f7e | |||
| 6595fca000 | |||
| 8b0b5a0215 | |||
| 2263958fd0 | |||
| 66e60f2ddb | |||
| 5f51a0f569 | |||
| aee1d66e56 | |||
| 1d1bb8cee0 | |||
| c7dd89e720 | |||
| 9860294eb1 | |||
| 1c393bfa84 | |||
| 95ea1427bc | |||
| f1b0e40388 | |||
| 7848d63177 | |||
| 619b059ae1 | |||
| 429fc3eb1b | |||
| 615f661cbb | |||
| 6e0675cfda | |||
| 3e79b90884 | |||
| 5a0a635995 | |||
| 93d9b10e11 | |||
| 166487433c | |||
| 5512f99997 | |||
| 01cc9e751b | |||
| bfac6b7dc8 | |||
| d1f9a02ffa | |||
| d8236dd8da | |||
| dabf256e2b | |||
| 4285e81001 | |||
| 370375c328 | |||
| 9f22882c68 | |||
| db5331d9b9 | |||
| 5cc92f0162 | |||
| 2978e80226 | |||
| 4a74c60150 | |||
| 00fa40bbc9 | |||
| 62b78840b6 | |||
| f828c36e58 | |||
| 8c5b146c94 | |||
| 61c7d9844d | |||
| 8d48c17395 | |||
| 0ff820d4da | |||
| c4ff1c2ef1 | |||
| b6aba2f29c | |||
| 7467f7ea50 | |||
| 0c6d3e0ccf | |||
| e82917ea01 | |||
| 857c1aad3d | |||
| dc73acb1b1 | |||
| 8602e937d3 | |||
| a2133d8317 | |||
| 39ce0da3e5 | |||
| f235a950b0 | |||
| 3cd3e1af72 | |||
| 8c6266e94b | |||
| 755a6016c7 | |||
| 1cbbefba97 | |||
| 8610d606f4 | |||
| 728e87a627 | |||
| 772034af68 | |||
| 957a9ca4fe | |||
| 472eb2bafe | |||
| 88216d4c76 | |||
| 8b1e4d6708 | |||
| 769c3ec785 | |||
| 1c4179a9db | |||
| 292f89859f | |||
| a00800bddc | |||
| 78ceba6d20 | |||
| 6776a350af | |||
| dd75f06f77 | |||
| 394872d84e | |||
| f9eef6397f | |||
| 900bac999c | |||
| 5b2738f826 | |||
| dab96577a7 | |||
| 25443eba31 | |||
| 0a72d7a39a | |||
| 5f8d4f8294 | |||
| 7c2cfba0ac | |||
| 5ee43bda22 | |||
| a1b6bbac7e | |||
| e61516f3c3 | |||
| e2eeec37ad | |||
| d7fcc128aa | |||
| cf266b17c1 | |||
| b3a1796da9 | |||
| 39b9a6b2c4 | |||
| 6ba4fa305c | |||
| 1d043899c8 | |||
| cb8a087d89 | |||
| f2eb7b57b8 | |||
| eba653930f | |||
| 3deb5c689a | |||
| 11ebe11111 | |||
| 9538ffb8ec | |||
| 55d1da226f | |||
| 2bfde64bf1 | |||
| 7cb9a2efd9 | |||
| 57e85d7fd0 | |||
| ca4a442cce | |||
| 46eef39d53 | |||
| dbc5f7b11f | |||
| 6797331c9d | |||
| cc80a2da3d | |||
| 54fb9c903a | |||
| e63597458a | |||
| e15c38fa23 | |||
| 906ca65611 | |||
| 805b9f48e5 | |||
| a762d741a5 | |||
| 4b8ca7f61f | |||
| 31b0a8af12 | |||
| 74b4cb9e08 | |||
| e7c6dd3698 | |||
| aa9abbe83f | |||
| b19f3bbdb0 | |||
| 892e856471 | |||
| 84fae12cdd | |||
| 3d67781039 | |||
| 114c3a2580 | |||
| 02b4aa0476 | |||
| 57f4e1b79c | |||
| 35f9b82a65 | |||
| cbddb3553d | |||
| dd754c78ab | |||
| 150f56b47a | |||
| 0eef6ab7d3 | |||
| 91d3ba3fce | |||
| 7165aa1b41 | 
| @ -2,7 +2,9 @@ NODE_ENV=development | ||||
| DEV=true | ||||
| VITE_KC_API_WS_MODELING_URL=wss://api.dev.zoo.dev/ws/modeling/commands | ||||
| VITE_KC_API_BASE_URL=https://api.dev.zoo.dev | ||||
| BASE_URL=https://api.dev.zoo.dev | ||||
| VITE_KC_SITE_BASE_URL=https://dev.zoo.dev | ||||
| VITE_KC_SKIP_AUTH=false | ||||
| VITE_KC_CONNECTION_TIMEOUT_MS=5000 | ||||
| VITE_KC_DEV_TOKEN="your token from dev.zoo.dev should go in .env.development.local" | ||||
| # ONLY add your token in .env.development.local if you want to skip auth, otherwise this token takes precedence! | ||||
| #VITE_KC_DEV_TOKEN="your token from dev.zoo.dev should go in .env.development.local" | ||||
|  | ||||
| @ -13,6 +13,8 @@ | ||||
|       "plugin:css-modules/recommended" | ||||
|     ], | ||||
|     "rules": { | ||||
|       "@typescript-eslint/no-floating-promises": "error", | ||||
|       "@typescript-eslint/no-misused-promises": "error", | ||||
|       "semi": [ | ||||
|         "error", | ||||
|         "never" | ||||
| @ -24,7 +26,6 @@ | ||||
|       { | ||||
|         "files": ["e2e/**/*.ts"], // Update the pattern based on your file structure | ||||
|         "rules": { | ||||
|           "@typescript-eslint/no-floating-promises": "warn", | ||||
|           "suggest-no-throw/suggest-no-throw": "off", | ||||
|           "testing-library/prefer-screen-queries": "off", | ||||
|           "jest/valid-expect": "off" | ||||
|  | ||||
							
								
								
									
										145
									
								
								.github/workflows/build-test-publish-apps.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										145
									
								
								.github/workflows/build-test-publish-apps.yml
									
									
									
									
										vendored
									
									
								
							| @ -44,7 +44,7 @@ jobs: | ||||
|  | ||||
|       # TODO: see if we can fetch from main instead if no diff at src/wasm-lib | ||||
|       - name: Run build:wasm | ||||
|         run: "yarn build:wasm${{ env.BUILD_RELEASE == 'true' && '-dev' || ''}}" | ||||
|         run: "yarn build:wasm" | ||||
|  | ||||
|       - name: Set nightly version | ||||
|         if: github.event_name == 'schedule' | ||||
| @ -52,7 +52,6 @@ jobs: | ||||
|           VERSION=$(date +'%-y.%-m.%-d') yarn bump-jsons | ||||
|  | ||||
|       # TODO: see if we need to inject updater nightly URL here https://dl.zoo.dev/releases/modeling-app/nightly/last_update.json | ||||
|       # TODO: see if we ned to add updater test URL here https://dl.zoo.dev/releases/modeling-app/updater-test/last_update.json | ||||
|  | ||||
|       - uses: actions/upload-artifact@v3 | ||||
|         with: | ||||
| @ -64,6 +63,17 @@ jobs: | ||||
|       - id: export_version | ||||
|         run: echo "version=`cat package.json | jq -r '.version'`" >> "$GITHUB_OUTPUT" | ||||
|  | ||||
|       - name: Prepare electron-builder.yml file for updater test | ||||
|         if: ${{ env.CUT_RELEASE_PR == 'true' }} | ||||
|         run: | | ||||
|           yq -i '.publish[0].url = "https://dl.zoo.dev/releases/modeling-app/updater-test"' electron-builder.yml | ||||
|  | ||||
|       - uses: actions/upload-artifact@v3 | ||||
|         with: | ||||
|           name: prepared-files-updater-test | ||||
|           path: | | ||||
|             electron-builder.yml | ||||
|  | ||||
|  | ||||
|   build-apps: | ||||
|     needs: [prepare-files] | ||||
| @ -81,8 +91,6 @@ jobs: | ||||
|       CSC_KEY_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} | ||||
|       CSC_KEYCHAIN: ${{ secrets.APPLE_SIGNING_IDENTITY }} | ||||
|       CSC_FOR_PULL_REQUEST: true | ||||
|       TAURI_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} | ||||
|       TAURI_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} | ||||
|       VERSION: ${{ github.event_name == 'schedule' && needs.prepare-files.outputs.version || format('v{0}', needs.prepare-files.outputs.version) }} | ||||
|       VERSION_NO_V: ${{ needs.prepare-files.outputs.version }} | ||||
|       WINDOWS_CERTIFICATE_THUMBPRINT: F4C9A52FF7BC26EE5E054946F6B11DEEA94C748D | ||||
| @ -142,41 +150,36 @@ jobs: | ||||
|       - name: List artifacts in out/ | ||||
|         run: ls -R out | ||||
|  | ||||
|       - name: Prepare the tauri update bundles (macOS) | ||||
|         if: ${{ env.BUILD_RELEASE && matrix.os == 'macos-14' }} | ||||
|         run: | | ||||
|           for ARCH in arm64 x64; do | ||||
|             TAURI_DIR=out/tauri/$VERSION/macos | ||||
|             TEMP_DIR=temp/$ARCH | ||||
|             mkdir -p $TAURI_DIR | ||||
|             mkdir -p $TEMP_DIR | ||||
|             unzip out/*-$ARCH-mac.zip -d $TEMP_DIR | ||||
|             tar -czvf "$TAURI_DIR/Zoo Modeling App-$ARCH.app.tar.gz" -C $TEMP_DIR "Zoo Modeling App.app"  | ||||
|             yarn tauri signer sign "$TAURI_DIR/Zoo Modeling App-$ARCH.app.tar.gz" | ||||
|           done | ||||
|           ls -R out | ||||
|  | ||||
|       - name: Prepare the tauri update bundles (Windows) | ||||
|         if: ${{ env.BUILD_RELEASE && matrix.os == 'windows-2022' }} | ||||
|         run: | | ||||
|           $env:TAURI_DIR="out/tauri/${env:VERSION}/nsis" | ||||
|           mkdir -p ${env:TAURI_DIR} | ||||
|           $env:OUT_FILE="${env:TAURI_DIR}/Zoo Modeling App_${env:VERSION_NO_V}_x64-setup.nsis.zip" | ||||
|           7z a -mm=Copy "${env:OUT_FILE}" ./out/*-x64-win.exe | ||||
|           yarn tauri signer sign "${env:OUT_FILE}" | ||||
|           ls -R out | ||||
|  | ||||
|       - uses: actions/upload-artifact@v3 | ||||
|         with: | ||||
|           name: out-${{ matrix.os }} | ||||
|           path: | | ||||
|             out/Zoo*.* | ||||
|             out/latest*.yml | ||||
|             out/tauri | ||||
|  | ||||
|       # TODO: add the 'Build for Mac TestFlight (nightly)' stage back | ||||
|  | ||||
|       # TODO: add the updater tests back | ||||
|       - uses: actions/download-artifact@v3 | ||||
|         if: ${{ env.CUT_RELEASE_PR == 'true' }} | ||||
|         name: prepared-files-updater-test | ||||
|  | ||||
|       - name: Copy updated electron-builder.yml file for updater test | ||||
|         if: ${{ env.CUT_RELEASE_PR == 'true' }} | ||||
|         run: | | ||||
|           ls -R prepared-files-updater-test | ||||
|           cp prepared-files-updater-test/electron-builder.yml electron-builder.yml | ||||
|  | ||||
|       - name: Build the app (updater-test) | ||||
|         if: ${{ env.CUT_RELEASE_PR == 'true' }} | ||||
|         run: yarn electron-builder --config ${{ env.BUILD_RELEASE && '--publish always' || '' }} | ||||
|  | ||||
|       - uses: actions/upload-artifact@v3 | ||||
|         if: ${{ env.CUT_RELEASE_PR == 'true' }} | ||||
|         with: | ||||
|           name: updater-test-${{ matrix.os }} | ||||
|           path: | | ||||
|             out/Zoo*.* | ||||
|             out/latest*.yml | ||||
|  | ||||
|  | ||||
|   publish-apps-release: | ||||
| @ -192,8 +195,6 @@ jobs: | ||||
|       NOTES: ${{ github.event_name == 'release' && github.event.release.body || format('Non-release build, commit {0}', github.sha) }} | ||||
|       BUCKET_DIR: ${{ github.event_name == 'schedule' && 'dl.kittycad.io/releases/modeling-app/nightly' || 'dl.kittycad.io/releases/modeling-app' }} | ||||
|       WEBSITE_DIR: ${{ github.event_name == 'schedule' && 'dl.zoo.dev/releases/modeling-app/nightly' || 'dl.zoo.dev/releases/modeling-app' }} | ||||
|       BUCKET_DIR_TAURI: 'dl.kittycad.io/releases/modeling-app/tauri-compat' | ||||
|       WEBSITE_DIR_TAURI: 'dl.zoo.dev/releases/modeling-app/tauri-compat' | ||||
|       URL_CODED_NAME: ${{ github.event_name == 'schedule' && 'Zoo%20Modeling%20App%20%28Nightly%29' || 'Zoo%20Modeling%20App' }} | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
| @ -212,7 +213,7 @@ jobs: | ||||
|         with: | ||||
|           name: out-ubuntu-22.04 | ||||
|           path: out | ||||
|        | ||||
|  | ||||
|       - name: Generate the download static endpoint | ||||
|         run: | | ||||
|           RELEASE_DIR=https://${WEBSITE_DIR} | ||||
| @ -222,8 +223,10 @@ jobs: | ||||
|             --arg notes "${NOTES}" \ | ||||
|             --arg mac_arm64_url "$RELEASE_DIR/${{ env.URL_CODED_NAME }}-${VERSION_NO_V}-arm64-mac.dmg" \ | ||||
|             --arg mac_x64_url "$RELEASE_DIR/${{ env.URL_CODED_NAME }}-${VERSION_NO_V}-x64-mac.dmg" \ | ||||
|             --arg windows_arm64_url "$RELEASE_DIR/${{ env.URL_CODED_NAME }}-${VERSION_NO_V}-arm64-win.msi" \ | ||||
|             --arg windows_x64_url "$RELEASE_DIR/${{ env.URL_CODED_NAME }}-${VERSION_NO_V}-x64-win.msi" \ | ||||
|             --arg windows_arm64_url "$RELEASE_DIR/${{ env.URL_CODED_NAME }}-${VERSION_NO_V}-arm64-win.exe" \ | ||||
|             --arg windows_x64_url "$RELEASE_DIR/${{ env.URL_CODED_NAME }}-${VERSION_NO_V}-x64-win.exe" \ | ||||
|             --arg linux_arm64_url "$RELEASE_DIR/${{ env.URL_CODED_NAME }}-${VERSION_NO_V}-arm64-linux.AppImage" \ | ||||
|             --arg linux_x64_url "$RELEASE_DIR/${{ env.URL_CODED_NAME }}-${VERSION_NO_V}-x86_64-linux.AppImage" \ | ||||
|             '{ | ||||
|               "version": $version, | ||||
|               "pub_date": $pub_date, | ||||
| @ -235,54 +238,22 @@ jobs: | ||||
|                 "dmg-x64": { | ||||
|                   "url": $mac_x64_url | ||||
|                 }, | ||||
|                 "msi-arm64": { | ||||
|                 "exe-arm64": { | ||||
|                   "url": $windows_arm64_url | ||||
|                 }, | ||||
|                 "msi-x64": { | ||||
|                 "exe-x64": { | ||||
|                   "url": $windows_x64_url | ||||
|                 }, | ||||
|                 "appimage-arm64": { | ||||
|                   "url": $linux_arm64_url | ||||
|                 }, | ||||
|                 "appimage-x64": { | ||||
|                   "url": $linux_x64_url | ||||
|                 } | ||||
|               } | ||||
|             }' > last_download.json | ||||
|             cat last_download.json | ||||
|  | ||||
|       - name: Generate the update static endpoint for tauri | ||||
|         run: | | ||||
|           TAURI_DIR=out/tauri/$VERSION | ||||
|           MAC_ARM64_SIG=`cat $TAURI_DIR/macos/*-arm64.app.tar.gz.sig` | ||||
|           MAC_X64_SIG=`cat $TAURI_DIR/macos/*-x64.app.tar.gz.sig` | ||||
|           WINDOWS_SIG=`cat $TAURI_DIR/nsis/*.nsis.zip.sig` | ||||
|           RELEASE_DIR=https://${WEBSITE_DIR_TAURI}/${VERSION} | ||||
|           jq --null-input \ | ||||
|             --arg version "${VERSION}" \ | ||||
|             --arg pub_date "${PUB_DATE}" \ | ||||
|             --arg notes "${NOTES}" \ | ||||
|             --arg mac_arm64_sig "$MAC_ARM64_SIG" \ | ||||
|             --arg mac_arm64_url "$RELEASE_DIR/macos/${{ env.URL_CODED_NAME }}-arm64.app.tar.gz" \ | ||||
|             --arg mac_x64_sig "$MAC_X64_SIG" \ | ||||
|             --arg mac_x64_url "$RELEASE_DIR/macos/${{ env.URL_CODED_NAME }}-x64.app.tar.gz" \ | ||||
|             --arg windows_sig "$WINDOWS_SIG" \ | ||||
|             --arg windows_url "$RELEASE_DIR/nsis/${{ env.URL_CODED_NAME }}_${VERSION_NO_V}_x64-setup.nsis.zip" \ | ||||
|             '{ | ||||
|               "version": $version, | ||||
|               "pub_date": $pub_date, | ||||
|               "notes": $notes, | ||||
|               "platforms": { | ||||
|                 "darwin-x86_64": { | ||||
|                   "signature": $mac_x64_sig, | ||||
|                   "url": $mac_x64_url | ||||
|                 }, | ||||
|                 "darwin-aarch64": { | ||||
|                   "signature": $mac_arm64_sig, | ||||
|                   "url": $mac_arm64_url | ||||
|                 }, | ||||
|                 "windows-x86_64": { | ||||
|                   "signature": $windows_sig, | ||||
|                   "url": $windows_url | ||||
|                 } | ||||
|               } | ||||
|             }' > last_update.json | ||||
|             cat last_update.json | ||||
|  | ||||
|       - name: List artifacts | ||||
|         run: "ls -R out" | ||||
|  | ||||
| @ -297,7 +268,7 @@ jobs: | ||||
|           project_id: ${{ env.GOOGLE_CLOUD_PROJECT_ID }} | ||||
|  | ||||
|       - name: Upload release files to public bucket | ||||
|         uses: google-github-actions/upload-cloud-storage@v2.1.3 | ||||
|         uses: google-github-actions/upload-cloud-storage@v2.2.0 | ||||
|         with: | ||||
|           path: out | ||||
|           glob: 'Zoo*' | ||||
| @ -305,31 +276,17 @@ jobs: | ||||
|           destination: ${{ env.BUCKET_DIR }} | ||||
|  | ||||
|       - name: Upload update endpoint to public bucket | ||||
|         uses: google-github-actions/upload-cloud-storage@v2.1.3 | ||||
|         uses: google-github-actions/upload-cloud-storage@v2.2.0 | ||||
|         with: | ||||
|           path: out | ||||
|           glob: 'latest*' | ||||
|           parent: false | ||||
|           destination: ${{ env.BUCKET_DIR }}  | ||||
|  | ||||
|       - name: Upload download endpoint to public bucket | ||||
|         uses: google-github-actions/upload-cloud-storage@v2.1.3 | ||||
|         with: | ||||
|           path: last_download.json | ||||
|           destination: ${{ env.BUCKET_DIR }} | ||||
|  | ||||
|       - name: Upload release files to public bucket for tauri | ||||
|         uses: google-github-actions/upload-cloud-storage@v2.1.1 | ||||
|       - name: Upload download endpoint to public bucket | ||||
|         uses: google-github-actions/upload-cloud-storage@v2.2.0 | ||||
|         with: | ||||
|           path: "out/tauri/${{ env.VERSION }}"  | ||||
|           glob: '*/Zoo*' | ||||
|           parent: false | ||||
|           destination: ${{ env.BUCKET_DIR_TAURI }}/${{ env.VERSION }} | ||||
|  | ||||
|       - name: Upload update endpoint to public bucket for tauri | ||||
|         uses: google-github-actions/upload-cloud-storage@v2.1.1 | ||||
|         with: | ||||
|           path: last_update.json | ||||
|           path: last_download.json | ||||
|           destination: ${{ env.BUCKET_DIR }} | ||||
|  | ||||
|       - name: Upload release files to Github | ||||
|  | ||||
							
								
								
									
										2
									
								
								.github/workflows/build-test-web.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/build-test-web.yml
									
									
									
									
										vendored
									
									
								
							| @ -45,7 +45,7 @@ jobs: | ||||
|       - run: yarn xstate:typegen | ||||
|       - run: yarn tsc | ||||
|       - name: Lint | ||||
|         run: yarn eslint --max-warnings 0 src e2e | ||||
|         run: yarn eslint --max-warnings 0 src e2e packages/codemirror-lsp-client | ||||
|  | ||||
|  | ||||
|   check-typos: | ||||
|  | ||||
							
								
								
									
										3
									
								
								.github/workflows/cargo-clippy.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/workflows/cargo-clippy.yml
									
									
									
									
										vendored
									
									
								
							| @ -28,6 +28,7 @@ jobs: | ||||
|         dir: ['src/wasm-lib'] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: taiki-e/install-action@just | ||||
|       - name: Install latest rust | ||||
|         uses: actions-rs/toolchain@v1 | ||||
|         with: | ||||
| @ -41,7 +42,7 @@ jobs: | ||||
|       - name: Run clippy | ||||
|         run: | | ||||
|           cd "${{ matrix.dir }}" | ||||
|           cargo clippy --all --tests --benches -- -D warnings | ||||
|           just lint | ||||
|       # If this fails, run "cargo check" to update Cargo.lock, | ||||
|       # then add Cargo.lock to the PR. | ||||
|       - name: Check Cargo.lock doesn't need updating | ||||
|  | ||||
							
								
								
									
										2
									
								
								.github/workflows/cargo-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/cargo-test.yml
									
									
									
									
										vendored
									
									
								
							| @ -4,6 +4,7 @@ on: | ||||
|       - main | ||||
|     paths: | ||||
|       - 'src/wasm-lib/**.rs' | ||||
|       - 'src/wasm-lib/**.hbs' | ||||
|       - '**/Cargo.toml' | ||||
|       - '**/Cargo.lock' | ||||
|       - '**/rust-toolchain.toml' | ||||
| @ -13,6 +14,7 @@ on: | ||||
|   pull_request: | ||||
|     paths: | ||||
|       - 'src/wasm-lib/**.rs' | ||||
|       - 'src/wasm-lib/**.hbs' | ||||
|       - '**/Cargo.toml' | ||||
|       - '**/Cargo.lock' | ||||
|       - '**/rust-toolchain.toml' | ||||
|  | ||||
							
								
								
									
										8
									
								
								.github/workflows/playwright.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/playwright.yml
									
									
									
									
										vendored
									
									
								
							| @ -34,7 +34,7 @@ jobs: | ||||
|               - 'src/wasm-lib/**' | ||||
|  | ||||
|   playwright-chrome: | ||||
|     timeout-minutes: ${{ matrix.os == 'macos-14' && 60 || 40 }} | ||||
|     timeout-minutes: ${{ matrix.os == 'macos-14' && 60 || 50 }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
| @ -232,6 +232,7 @@ jobs: | ||||
|         exit 0 | ||||
|       env: | ||||
|         CI: true | ||||
|         FAIL_ON_CONSOLE_ERRORS: true | ||||
|         NODE_ENV: development | ||||
|         VITE_KC_DEV_TOKEN: ${{ secrets.KITTYCAD_API_TOKEN_DEV }} | ||||
|         VITE_KC_SKIP_AUTH: true | ||||
| @ -262,7 +263,7 @@ jobs: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-14] | ||||
|     timeout-minutes: 30 | ||||
|     timeout-minutes: 60 | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     needs: check-rust-changes | ||||
|     steps: | ||||
| @ -381,7 +382,7 @@ jobs: | ||||
|                     echo "retried=true" >>$GITHUB_OUTPUT | ||||
|                     echo "run playwright with last failed tests and retry $retry" | ||||
|                     if [[ "$IS_UBUNTU" == "true" ]]; then | ||||
|                       xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn playwright test --config=playwright.electron.config.ts --grep=@electron || true | ||||
|                       xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn playwright test --config=playwright.electron.config.ts --last-failed --grep=@electron || true | ||||
|                     else | ||||
|                       yarn playwright test --config=playwright.electron.config.ts --grep=@electron || true | ||||
|                     fi | ||||
| @ -410,6 +411,7 @@ jobs: | ||||
|         exit 0 | ||||
|       env: | ||||
|         CI: true | ||||
|         FAIL_ON_CONSOLE_ERRORS: true | ||||
|         NODE_ENV: development | ||||
|         VITE_KC_DEV_TOKEN: ${{ secrets.KITTYCAD_API_TOKEN_DEV }} | ||||
|         VITE_KC_SKIP_AUTH: true | ||||
|  | ||||
| @ -5,6 +5,7 @@ coverage | ||||
|  | ||||
| # Ignore Rust projects: | ||||
| *.rs | ||||
| *.hbs | ||||
| target | ||||
| src/wasm-lib/pkg | ||||
| src/wasm-lib/kcl/bindings | ||||
|  | ||||
							
								
								
									
										8
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								Makefile
									
									
									
									
									
								
							| @ -7,6 +7,14 @@ XSTATE_TYPEGENS := $(wildcard src/machines/*.typegen.ts) | ||||
| dev: node_modules public/wasm_lib_bg.wasm $(XSTATE_TYPEGENS) | ||||
| 	yarn start | ||||
|  | ||||
| # I'm sorry this is so specific to my setup you may as well ignore this. | ||||
| # This is so you don't have to deal with electron windows popping up constantly. | ||||
| # It should work for you other Linux users. | ||||
| lee-electron-test: | ||||
| 	Xephyr -br -ac -noreset -screen 1200x500 :2 & | ||||
| 	DISPLAY=:2 NODE_ENV=development PW_TEST_CONNECT_WS_ENDPOINT=ws://127.0.0.1:4444/ yarn tron:test -g "when using the file tree" | ||||
| 	killall Xephyr | ||||
|  | ||||
| $(XSTATE_TYPEGENS): $(TS_SRC) | ||||
| 	yarn xstate typegen 'src/**/*.ts?(x)' | ||||
|  | ||||
|  | ||||
							
								
								
									
										19
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								README.md
									
									
									
									
									
								
							| @ -351,25 +351,6 @@ PS: for the debug panel, the following JSON is useful for snapping the camera | ||||
|  | ||||
| </details> | ||||
|  | ||||
| ### Tauri e2e tests | ||||
|  | ||||
| #### Windows (local only until the CI edge version mismatch is fixed) | ||||
|  | ||||
| ``` | ||||
| yarn install | ||||
| yarn build:wasm-dev | ||||
| cp src/wasm-lib/pkg/wasm_lib_bg.wasm public | ||||
| yarn vite build --mode development | ||||
| yarn tauri build --debug -b | ||||
| $env:KITTYCAD_API_TOKEN="<YOUR_KITTYCAD_API_TOKEN>" | ||||
| $env:VITE_KC_API_BASE_URL="https://api.dev.zoo.dev" | ||||
| $env:E2E_TAURI_ENABLED="true" | ||||
| $env:TS_NODE_COMPILER_OPTIONS='{"module": "commonjs"}' | ||||
| $env:E2E_APPLICATION=".\src-tauri\target\debug\Zoo Modeling App.exe" | ||||
| Stop-Process -Name msedgedriver | ||||
| yarn wdio run wdio.conf.ts | ||||
| ``` | ||||
|  | ||||
| ## KCL | ||||
|  | ||||
| For how to contribute to KCL, [see our KCL README](https://github.com/KittyCAD/modeling-app/tree/main/src/wasm-lib/kcl). | ||||
|  | ||||
| @ -22,8 +22,3 @@ once fixed in engine will just start working here with no language changes. | ||||
|  | ||||
| - **Chamfers**: Chamfers cannot intersect, you will get an error. Only simple | ||||
|     chamfer cases work currently. | ||||
|  | ||||
|     Sketching on the chamfered face does not currently work. | ||||
|  | ||||
| - **Shell**: Shell sometimes does not work when arcs or fillets are involved. | ||||
|     We are tracking the engine side bug on this. | ||||
|  | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										873
									
								
								docs/kcl/arc.md
									
									
									
									
									
								
							
							
						
						
									
										873
									
								
								docs/kcl/arc.md
									
									
									
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										47
									
								
								docs/kcl/arrayReduce.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								docs/kcl/arrayReduce.md
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1021
									
								
								docs/kcl/circle.md
									
									
									
									
									
								
							
							
						
						
									
										1021
									
								
								docs/kcl/circle.md
									
									
									
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1254
									
								
								docs/kcl/hole.md
									
									
									
									
									
								
							
							
						
						
									
										1254
									
								
								docs/kcl/hole.md
									
									
									
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -19,6 +19,7 @@ layout: manual | ||||
| * [`angledLineToX`](kcl/angledLineToX) | ||||
| * [`angledLineToY`](kcl/angledLineToY) | ||||
| * [`arc`](kcl/arc) | ||||
| * [`arrayReduce`](kcl/arrayReduce) | ||||
| * [`asin`](kcl/asin) | ||||
| * [`assert`](kcl/assert) | ||||
| * [`assertEqual`](kcl/assertEqual) | ||||
| @ -56,13 +57,16 @@ layout: manual | ||||
| * [`line`](kcl/line) | ||||
| * [`lineTo`](kcl/lineTo) | ||||
| * [`ln`](kcl/ln) | ||||
| * [`loft`](kcl/loft) | ||||
| * [`log`](kcl/log) | ||||
| * [`log10`](kcl/log10) | ||||
| * [`log2`](kcl/log2) | ||||
| * [`m`](kcl/m) | ||||
| * [`max`](kcl/max) | ||||
| * [`min`](kcl/min) | ||||
| * [`mirror2d`](kcl/mirror2d) | ||||
| * [`mm`](kcl/mm) | ||||
| * [`offsetPlane`](kcl/offsetPlane) | ||||
| * [`patternCircular2d`](kcl/patternCircular2d) | ||||
| * [`patternCircular3d`](kcl/patternCircular3d) | ||||
| * [`patternLinear2d`](kcl/patternLinear2d) | ||||
| @ -74,6 +78,7 @@ layout: manual | ||||
| * [`profileStart`](kcl/profileStart) | ||||
| * [`profileStartX`](kcl/profileStartX) | ||||
| * [`profileStartY`](kcl/profileStartY) | ||||
| * [`rem`](kcl/rem) | ||||
| * [`revolve`](kcl/revolve) | ||||
| * [`segAng`](kcl/segAng) | ||||
| * [`segEndX`](kcl/segEndX) | ||||
|  | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -16,20 +16,23 @@ legAngX(hypotenuse: number, leg: number) -> number | ||||
|  | ||||
| * `utilities` | ||||
|  | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| | Name | Type | Description | Required | | ||||
| |----------|------|-------------|----------| | ||||
| | `hypotenuse` | `number` |  | Yes | | ||||
| | `leg` | `number` |  | Yes | | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number`  | ||||
|  | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| legAngX(5, 3) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `hypotenuse`: `number` (REQUIRED) | ||||
| * `leg`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -16,20 +16,23 @@ legAngY(hypotenuse: number, leg: number) -> number | ||||
|  | ||||
| * `utilities` | ||||
|  | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| | Name | Type | Description | Required | | ||||
| |----------|------|-------------|----------| | ||||
| | `hypotenuse` | `number` |  | Yes | | ||||
| | `leg` | `number` |  | Yes | | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number`  | ||||
|  | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| legAngY(5, 3) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `hypotenuse`: `number` (REQUIRED) | ||||
| * `leg`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -16,20 +16,23 @@ legLen(hypotenuse: number, leg: number) -> number | ||||
|  | ||||
| * `utilities` | ||||
|  | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| | Name | Type | Description | Required | | ||||
| |----------|------|-------------|----------| | ||||
| | `hypotenuse` | `number` |  | Yes | | ||||
| | `leg` | `number` |  | Yes | | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number`  | ||||
|  | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| legLen(5, 3) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `hypotenuse`: `number` (REQUIRED) | ||||
| * `leg`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
							
								
								
									
										851
									
								
								docs/kcl/line.md
									
									
									
									
									
								
							
							
						
						
									
										851
									
								
								docs/kcl/line.md
									
									
									
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										116
									
								
								docs/kcl/loft.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								docs/kcl/loft.md
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										97
									
								
								docs/kcl/mirror2d.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								docs/kcl/mirror2d.md
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										102
									
								
								docs/kcl/offsetPlane.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								docs/kcl/offsetPlane.md
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										42
									
								
								docs/kcl/rem.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								docs/kcl/rem.md
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1008
									
								
								docs/kcl/shell.md
									
									
									
									
									
								
							
							
						
						
									
										1008
									
								
								docs/kcl/shell.md
									
									
									
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										49829
									
								
								docs/kcl/std.json
									
									
									
									
									
								
							
							
						
						
									
										49829
									
								
								docs/kcl/std.json
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	