Compare commits
	
		
			2 Commits
		
	
	
		
			v0.21.6
			...
			kurt-remov
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| cf10557f65 | |||
| af97256ef2 | 
| @ -1,3 +1,3 @@ | ||||
| [codespell] | ||||
| ignore-words-list: crate,everytime,inout,co-ordinate,ot,nwo,absolutey,atleast | ||||
| skip: **/target,node_modules,build,**/Cargo.lock,./docs/kcl/*.md,./src-tauri/gen/schemas | ||||
| ignore-words-list: crate,everytime,inout,co-ordinate,ot,nwo | ||||
| skip: **/target,node_modules,build,**/Cargo.lock | ||||
|  | ||||
| @ -3,4 +3,4 @@ VITE_KC_API_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" | ||||
| VITE_KC_SENTRY_DSN= | ||||
|  | ||||
| @ -3,3 +3,4 @@ VITE_KC_API_BASE_URL=https://api.zoo.dev | ||||
| VITE_KC_SITE_BASE_URL=https://zoo.dev | ||||
| VITE_KC_SKIP_AUTH=false | ||||
| VITE_KC_CONNECTION_TIMEOUT_MS=15000 | ||||
| VITE_KC_SENTRY_DSN=https://a814f2f66734989a90367f48feee28ca@o1042111.ingest.sentry.io/4505789425844224 | ||||
|  | ||||
							
								
								
									
										85
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										85
									
								
								.github/ISSUE_TEMPLATE/bug_report.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,85 +0,0 @@ | ||||
| name: Bug Report | ||||
| description: File a bug report for the Zoo Modeling App | ||||
| title: "[BUG]: " | ||||
| labels: ["bug"] | ||||
| assignees: [] | ||||
| body: | ||||
|   - type: markdown | ||||
|     attributes: | ||||
|       value: "Thank you for taking the time to report a bug. Please provide as much information as possible to help us resolve it." | ||||
|  | ||||
|   - type: textarea | ||||
|     id: describe-bug | ||||
|     attributes: | ||||
|       label: Describe the bug | ||||
|       description: A clear and concise description of what the bug is. | ||||
|       placeholder: "Explain the bug..." | ||||
|     validations: | ||||
|       required: true | ||||
|  | ||||
|   - type: textarea | ||||
|     id: reproduce-bug | ||||
|     attributes: | ||||
|       label: Steps to Reproduce | ||||
|       description: Steps to reproduce the behavior. | ||||
|       placeholder: | | ||||
|         1. Go to '...' | ||||
|         2. Click on '....' | ||||
|         3. Scroll down to '....' | ||||
|         4. See error | ||||
|     validations: | ||||
|       required: true | ||||
|  | ||||
|   - type: textarea | ||||
|     id: expected-behavior | ||||
|     attributes: | ||||
|       label: Expected Behavior | ||||
|       description: Description of what you expected to happen. | ||||
|       placeholder: "I expected that..." | ||||
|     validations: | ||||
|       required: true | ||||
|  | ||||
|   - type: textarea | ||||
|     id: screenshots | ||||
|     attributes: | ||||
|       label: Screenshots and Recordings  | ||||
|       description: If applicable, add screenshots to help explain your problem. Maximum upload size is 10MB. | ||||
|       placeholder: "You can attach images or video recordings here." | ||||
|     validations: | ||||
|       required: false | ||||
|  | ||||
|   - type: input | ||||
|     id: desktop-os | ||||
|     attributes: | ||||
|       label: Desktop OS | ||||
|       description: "Your operating system" | ||||
|       placeholder: "example: Windows 10, MacOS Big Sur" | ||||
|     validations: | ||||
|       required: true | ||||
|  | ||||
|   - type: input | ||||
|     id: browser | ||||
|     attributes: | ||||
|       label: Browser | ||||
|       description: "If you are using the web version, please specify the browser you are using." | ||||
|       placeholder: "example: Chrome, Safari" | ||||
|     validations: | ||||
|       required: false | ||||
|  | ||||
|   - type: input | ||||
|     id: version | ||||
|     attributes: | ||||
|       label: Version | ||||
|       description: "The version of the Zoo Modeling App you're using." | ||||
|       placeholder: "example: v0.15.0. You can find this in the settings." | ||||
|     validations: | ||||
|       required: true | ||||
|  | ||||
|   - type: textarea | ||||
|     id: additional-context | ||||
|     attributes: | ||||
|       label: Additional Context | ||||
|       description: Add any other context about the problem here. | ||||
|       placeholder: "Anything else you want to add..." | ||||
|     validations: | ||||
|       required: false | ||||
							
								
								
									
										12
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
								
							| @ -9,27 +9,15 @@ updates: | ||||
|       directory: '/' # Location of package manifests | ||||
|       schedule: | ||||
|           interval: 'daily' | ||||
|       reviewers: | ||||
|           - franknoirot  | ||||
|           - irev-dev | ||||
|     - package-ecosystem: 'github-actions' # See documentation for possible values | ||||
|       directory: '/' # Location of package manifests | ||||
|       schedule: | ||||
|           interval: 'daily' | ||||
|       reviewers: | ||||
|           - adamchalmers | ||||
|           - jessfraz | ||||
|     - package-ecosystem: 'cargo' # See documentation for possible values | ||||
|       directory: '/src/wasm-lib/' # Location of package manifests | ||||
|       schedule: | ||||
|           interval: 'daily' | ||||
|       reviewers: | ||||
|           - adamchalmers | ||||
|           - jessfraz | ||||
|     - package-ecosystem: 'cargo' # See documentation for possible values | ||||
|       directory: '/src-tauri/' # Location of package manifests | ||||
|       schedule: | ||||
|           interval: 'daily' | ||||
|       reviewers: | ||||
|           - adamchalmers | ||||
|           - jessfraz | ||||
|  | ||||
							
								
								
									
										33
									
								
								.github/workflows/build-and-store-wasm.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										33
									
								
								.github/workflows/build-and-store-wasm.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,33 +0,0 @@ | ||||
| name: Build and Store WASM | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - main | ||||
|  | ||||
| jobs: | ||||
|   build-and-upload: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/setup-node@v4 | ||||
|         with: | ||||
|           node-version-file: '.nvmrc' | ||||
|           cache: 'yarn' | ||||
|       - name: Install dependencies | ||||
|         run: yarn | ||||
|       - name: Setup Rust | ||||
|         uses: dtolnay/rust-toolchain@stable | ||||
|       - name: Cache wasm | ||||
|         uses: Swatinem/rust-cache@v2 | ||||
|         with: | ||||
|           workspaces: './src/wasm-lib' | ||||
|       - name: build wasm | ||||
|         run: yarn build:wasm | ||||
|  | ||||
|  | ||||
|       # Upload the WASM bundle as an artifact | ||||
|       - uses: actions/upload-artifact@v3 | ||||
|         with: | ||||
|           name: wasm-bundle | ||||
|           path: src/wasm-lib/pkg | ||||
| @ -3,55 +3,48 @@ on: | ||||
|     branches: | ||||
|       - main | ||||
|     paths: | ||||
|       - 'src-tauri/**.rs' | ||||
|       - '**.rs' | ||||
|       - '**/Cargo.toml' | ||||
|       - '**/Cargo.lock' | ||||
|       - '**/rust-toolchain.toml' | ||||
|       - .github/workflows/cargo-test-tauri.yml | ||||
|       - .github/workflows/cargo-build.yml | ||||
|   pull_request: | ||||
|     paths: | ||||
|       - 'src-tauri/**.rs' | ||||
|       - '**.rs' | ||||
|       - '**/Cargo.toml' | ||||
|       - '**/Cargo.lock' | ||||
|       - '**/rust-toolchain.toml' | ||||
|       - .github/workflows/cargo-test-tauri.yml | ||||
|   workflow_dispatch: | ||||
| permissions: read-all | ||||
|       - .github/workflows/cargo-build.yml | ||||
| concurrency: | ||||
|   group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | ||||
|   cancel-in-progress: true | ||||
| name: cargo test of tauri | ||||
| name: cargo build | ||||
| jobs: | ||||
|   cargotest: | ||||
|     name: cargo test | ||||
|     runs-on: ubuntu-latest-8-cores | ||||
|   cargobuild: | ||||
|     name: cargo build | ||||
|     runs-on: ubuntu-latest | ||||
|     strategy: | ||||
|       matrix: | ||||
|         dir: ['src-tauri'] | ||||
|         dir: ['src/wasm-lib'] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
| 
 | ||||
|       - name: Install latest rust | ||||
|         uses: actions-rs/toolchain@v1 | ||||
|         with: | ||||
|             toolchain: stable | ||||
|             override: true | ||||
| 
 | ||||
|       - name: install dependencies | ||||
|         if: matrix.dir ==  'src-tauri' | ||||
|         run: | | ||||
|           sudo apt-get update | ||||
|           sudo apt-get install -y \ | ||||
|             libgtk-3-dev \ | ||||
|             libayatana-appindicator3-dev \ | ||||
|             webkit2gtk-driver \ | ||||
|             libsoup-3.0-dev \ | ||||
|             libjavascriptcoregtk-4.1-dev \ | ||||
|             libwebkit2gtk-4.1-dev \ | ||||
|             at-spi2-core \ | ||||
|             xvfb | ||||
|           sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf | ||||
|       - name: Rust Cache | ||||
|         uses: Swatinem/rust-cache@v2.6.1 | ||||
|       - name: cargo test | ||||
|         shell: bash | ||||
|         run: |- | ||||
| 
 | ||||
|       - name: Run cargo build | ||||
|         run: | | ||||
|           cd "${{ matrix.dir }}" | ||||
|           cargo test --all | ||||
|           cargo build --all | ||||
|         shell: bash | ||||
							
								
								
									
										23
									
								
								.github/workflows/cargo-clippy.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								.github/workflows/cargo-clippy.yml
									
									
									
									
										vendored
									
									
								
							| @ -9,6 +9,12 @@ on: | ||||
|       - '**.rs' | ||||
|       - .github/workflows/cargo-clippy.yml | ||||
|   pull_request: | ||||
|     paths: | ||||
|       - '**/Cargo.toml' | ||||
|       - '**/Cargo.lock' | ||||
|       - '**/rust-toolchain.toml' | ||||
|       - '**.rs' | ||||
|       - .github/workflows/cargo-build.yml | ||||
| concurrency: | ||||
|   group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | ||||
|   cancel-in-progress: true | ||||
| @ -19,7 +25,7 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     strategy: | ||||
|       matrix: | ||||
|         dir: ['src/wasm-lib', 'src-tauri'] | ||||
|         dir: ['src/wasm-lib'] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - name: Install latest rust | ||||
| @ -31,22 +37,9 @@ jobs: | ||||
|  | ||||
|       - name: install dependencies | ||||
|         if: matrix.dir ==  'src-tauri' | ||||
|         shell: bash | ||||
|         run: | | ||||
|           sudo apt-get update | ||||
|           sudo apt-get install -y \ | ||||
|             libgtk-3-dev \ | ||||
|             libayatana-appindicator3-dev \ | ||||
|             webkit2gtk-driver \ | ||||
|             libsoup-3.0-dev \ | ||||
|             libjavascriptcoregtk-4.1-dev \ | ||||
|             libwebkit2gtk-4.1-dev \ | ||||
|             at-spi2-core \ | ||||
|             xvfb | ||||
|           yarn install | ||||
|           yarn build:wasm | ||||
|           yarn build:local | ||||
|  | ||||
|           sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf | ||||
|       - name: Rust Cache | ||||
|         uses: Swatinem/rust-cache@v2.6.1 | ||||
|  | ||||
|  | ||||
| @ -7,23 +7,23 @@ on: | ||||
|       - '**/Cargo.toml' | ||||
|       - '**/Cargo.lock' | ||||
|       - '**/rust-toolchain.toml' | ||||
|       - .github/workflows/cargo-bench.yml | ||||
|       - .github/workflows/cargo-criterion.yml | ||||
|   pull_request: | ||||
|     paths: | ||||
|       - '**.rs' | ||||
|       - '**/Cargo.toml' | ||||
|       - '**/Cargo.lock' | ||||
|       - '**/rust-toolchain.toml' | ||||
|       - .github/workflows/cargo-bench.yml | ||||
|       - .github/workflows/cargo-criterion.yml | ||||
|   workflow_dispatch: | ||||
| permissions: read-all | ||||
| concurrency: | ||||
|   group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | ||||
|   cancel-in-progress: true | ||||
| name: cargo bench | ||||
| name: cargo criterion | ||||
| jobs: | ||||
|   cargo-bench: | ||||
|     name: Benchmark with iai | ||||
|   cargocriterion: | ||||
|     name: cargo criterion | ||||
|     runs-on: ubuntu-latest-8-cores | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
| @ -31,12 +31,10 @@ jobs: | ||||
|       - name: Install dependencies | ||||
|         run: | | ||||
|           cargo install cargo-criterion | ||||
|           sudo apt update | ||||
|           sudo apt install -y valgrind | ||||
|       - name: Rust Cache | ||||
|         uses: Swatinem/rust-cache@v2.6.1 | ||||
|       - name: Benchmark kcl library | ||||
|         shell: bash | ||||
|         run: |- | ||||
|           cd src/wasm-lib/kcl; cargo bench -- iai | ||||
|           cd src/wasm-lib/kcl; cargo criterion | ||||
| 
 | ||||
							
								
								
									
										31
									
								
								.github/workflows/cargo-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								.github/workflows/cargo-test.yml
									
									
									
									
										vendored
									
									
								
							| @ -3,15 +3,14 @@ on: | ||||
|     branches: | ||||
|       - main | ||||
|     paths: | ||||
|       - 'src/wasm-lib/**.rs' | ||||
|       - '**.rs' | ||||
|       - '**/Cargo.toml' | ||||
|       - '**/Cargo.lock' | ||||
|       - '**/rust-toolchain.toml' | ||||
|       - .github/workflows/cargo-test.yml | ||||
|  | ||||
|   pull_request: | ||||
|     paths: | ||||
|       - 'src/wasm-lib/**.rs' | ||||
|       - '**.rs' | ||||
|       - '**/Cargo.toml' | ||||
|       - '**/Cargo.lock' | ||||
|       - '**/rust-toolchain.toml' | ||||
| @ -21,7 +20,7 @@ permissions: read-all | ||||
| concurrency: | ||||
|   group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | ||||
|   cancel-in-progress: true | ||||
| name: cargo test of wasm-lib | ||||
| name: cargo test | ||||
| jobs: | ||||
|   cargotest: | ||||
|     name: cargo test | ||||
| @ -41,20 +40,6 @@ jobs: | ||||
|         run: | | ||||
|           sudo apt-get update | ||||
|           sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf | ||||
|       - name: Install vector | ||||
|         run: | | ||||
|           curl --proto '=https' --tlsv1.2 -sSfL https://sh.vector.dev > /tmp/vector.sh | ||||
|           chmod +x /tmp/vector.sh | ||||
|           /tmp/vector.sh -y -no-modify-path | ||||
|           mkdir -p /tmp/vector | ||||
|           cp .github/workflows/vector.toml /tmp/vector.toml | ||||
|           sed -i "s#GITHUB_WORKFLOW#${GITHUB_WORKFLOW}#g" /tmp/vector.toml | ||||
|           sed -i "s#GITHUB_REPOSITORY#${GITHUB_REPOSITORY}#g" /tmp/vector.toml | ||||
|           sed -i "s#GITHUB_SHA#${GITHUB_SHA}#g" /tmp/vector.toml | ||||
|           sed -i "s#GITHUB_REF_NAME#${GITHUB_REF_NAME}#g" /tmp/vector.toml | ||||
|           sed -i "s#GH_ACTIONS_AXIOM_TOKEN#${{secrets.GH_ACTIONS_AXIOM_TOKEN}}#g" /tmp/vector.toml | ||||
|           cat /tmp/vector.toml | ||||
|           ${HOME}/.vector/bin/vector --config /tmp/vector.toml & | ||||
|       - uses: taiki-e/install-action@cargo-llvm-cov | ||||
|       - uses: taiki-e/install-action@nextest | ||||
|       - name: Rust Cache | ||||
| @ -63,16 +48,8 @@ jobs: | ||||
|         shell: bash | ||||
|         run: |- | ||||
|           cd "${{ matrix.dir }}" | ||||
|           cargo llvm-cov nextest --all --lcov --output-path lcov.info --test-threads=1 --no-fail-fast -P ci 2>&1 | tee /tmp/github-actions.log | ||||
|           cargo nextest run --workspace --no-fail-fast -P ci | ||||
|         env: | ||||
|           KITTYCAD_API_TOKEN: ${{secrets.KITTYCAD_API_TOKEN}} | ||||
|           RUST_MIN_STACK: 10485760000 | ||||
|       - name: Upload to codecov.io | ||||
|         uses: codecov/codecov-action@v4 | ||||
|         with: | ||||
|           token: ${{secrets.CODECOV_TOKEN}} | ||||
|           fail_ci_if_error: true | ||||
|           flags: wasm-lib | ||||
|           verbose: true | ||||
|           files: lcov.info | ||||
|  | ||||
|  | ||||
							
								
								
									
										36
									
								
								.github/workflows/check-exampleKcl.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										36
									
								
								.github/workflows/check-exampleKcl.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,36 +0,0 @@ | ||||
| name: Check Onboarding KCL | ||||
|  | ||||
| on: | ||||
|   pull_request: | ||||
|     types: [opened, synchronize] | ||||
|     paths: | ||||
|       - 'src/lib/exampleKcl.ts' | ||||
|  | ||||
| permissions: | ||||
|   contents: read | ||||
|   issues: write | ||||
|   pull-requests: write | ||||
|  | ||||
| jobs: | ||||
|   comment: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: Checkout repository | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
|       - name: Comment on PR | ||||
|         uses: actions/github-script@v7 | ||||
|         with: | ||||
|           script: | | ||||
|             const message = '`src/lib/exampleKcl.ts` has been updated in this PR, please review and update the `src/routes/onboarding`, if needed.'; | ||||
|             const issue_number = context.payload.pull_request.number; | ||||
|             const owner = context.repo.owner; | ||||
|             const repo = context.repo.repo; | ||||
|  | ||||
|             // Post a comment on the PR | ||||
|             await github.rest.issues.createComment({ | ||||
|               owner, | ||||
|               repo, | ||||
|               issue_number, | ||||
|               body: message, | ||||
|             }); | ||||
							
								
								
									
										149
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										149
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							| @ -13,7 +13,7 @@ on: | ||||
|   # Will checkout the last commit from the default branch (main as of 2023-10-04) | ||||
|  | ||||
| env: | ||||
|   BUILD_RELEASE: ${{ github.event_name == 'release' || github.event_name == 'schedule' || github.event_name == 'pull_request' && (contains(github.event.pull_request.title, 'Cut release v')) }} | ||||
|   BUILD_RELEASE: ${{ github.event_name == 'release' || github.event_name == 'schedule' || github.event_name == 'pull_request' && contains(github.event.pull_request.title, 'Cut release v') }} | ||||
|  | ||||
| concurrency: | ||||
|   group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | ||||
| @ -104,11 +104,7 @@ jobs: | ||||
|         run: | | ||||
|           VERSION=$(date +'%-y.%-m.%-d') yarn bump-jsons | ||||
|           echo "$(jq --arg url 'https://dl.zoo.dev/releases/modeling-app/nightly/last_update.json' \ | ||||
|             '.plugins.updater.endpoints[]=$url' src-tauri/tauri.release.conf.json --indent 2)" > src-tauri/tauri.release.conf.json | ||||
|           echo "$(jq --arg id 'dev.zoo.modeling-app-nightly' \ | ||||
|             '.identifier=$id' src-tauri/tauri.release.conf.json --indent 2)" > src-tauri/tauri.release.conf.json | ||||
|           echo "$(jq --arg name 'Zoo Modeling App (Nightly)' \ | ||||
|             '.productName=$name' src-tauri/tauri.release.conf.json --indent 2)" > src-tauri/tauri.release.conf.json | ||||
|             '.tauri.updater.endpoints[]=$url' src-tauri/tauri.release.conf.json --indent 2)" > src-tauri/tauri.release.conf.json | ||||
|  | ||||
|       - uses: actions/upload-artifact@v3 | ||||
|         if: github.event_name == 'schedule' | ||||
| @ -129,11 +125,6 @@ jobs: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-14, ubuntu-latest, windows-latest] | ||||
|     env: | ||||
|       # Specific Apple Universal target for macos | ||||
|       TAURI_ARGS_MACOS: ${{ matrix.os == 'macos-14' && '--target universal-apple-darwin' || '' }} | ||||
|       # Only build executable on linux (no appimage or deb) | ||||
|       TAURI_ARGS_UBUNTU: ${{ matrix.os == 'ubuntu-latest' && '--bundles' || '' }} | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|  | ||||
| @ -149,16 +140,14 @@ jobs: | ||||
|  | ||||
|       - name: Install ubuntu system dependencies | ||||
|         if: matrix.os == 'ubuntu-latest' | ||||
|         run: | | ||||
|           sudo apt-get update | ||||
|           sudo apt-get install -y \ | ||||
|             libgtk-3-dev \ | ||||
|             libayatana-appindicator3-dev \ | ||||
|             webkit2gtk-driver \ | ||||
|             libsoup-3.0-dev \ | ||||
|             libjavascriptcoregtk-4.1-dev \ | ||||
|             libwebkit2gtk-4.1-dev \ | ||||
|             at-spi2-core \ | ||||
|         run: > | ||||
|           sudo apt-get update && | ||||
|           sudo apt-get install -y | ||||
|           libgtk-3-dev | ||||
|           libgtksourceview-3.0-dev | ||||
|           webkit2gtk-4.0 | ||||
|           libappindicator3-dev | ||||
|           webkit2gtk-driver | ||||
|           xvfb | ||||
|  | ||||
|       - name: Sync node version and setup cache | ||||
| @ -172,9 +161,7 @@ jobs: | ||||
|       - name: Setup Rust | ||||
|         uses: dtolnay/rust-toolchain@stable | ||||
|  | ||||
|       # TODO: re-enable for Windows builds, see https://github.com/tauri-apps/tauri/issues/9045 | ||||
|       - name: Setup Rust cache | ||||
|         if: matrix.os != 'windows-latest' | ||||
|         uses: swatinem/rust-cache@v2 | ||||
|         with: | ||||
|           workspaces: './src-tauri -> target' | ||||
| @ -237,104 +224,14 @@ jobs: | ||||
|         with: | ||||
|           includeRelease: false | ||||
|           includeDebug: true | ||||
|           args: "${{ env.TAURI_ARGS_MACOS }} ${{ env.TAURI_ARGS_UBUNTU }}" | ||||
|           args: ${{ matrix.os == 'macos-14' && '--target universal-apple-darwin' || '' }} | ||||
|  | ||||
|       - name: Build for Mac TestFlight (nightly) | ||||
|         if: ${{ github.event_name == 'schedule' && matrix.os == 'macos-14' }} | ||||
|         shell: bash | ||||
|         run: | | ||||
|           unset APPLE_SIGNING_IDENTITY | ||||
|           unset APPLE_CERTIFICATE | ||||
|           sign_app="3rd Party Mac Developer Application: KittyCAD Inc (${APPLE_TEAM_ID})" | ||||
|           sign_install="3rd Party Mac Developer Installer: KittyCAD Inc (${APPLE_TEAM_ID})" | ||||
|           profile="src-tauri/entitlements/Mac_App_Distribution.provisionprofile" | ||||
|  | ||||
|           mkdir -p src-tauri/entitlements | ||||
|           echo -n "${APPLE_STORE_PROVISIONING_PROFILE}" | base64 --decode -o "${profile}" | ||||
|  | ||||
|           echo -n "${APPLE_STORE_DISTRIBUTION_CERT}" | base64 --decode -o "dist.cer" | ||||
|           echo -n "${APPLE_STORE_INSTALLER_CERT}" | base64 --decode -o "installer.cer" | ||||
|  | ||||
|           KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db | ||||
|           KEYCHAIN_PASSWORD="password" | ||||
|  | ||||
|           # create temporary keychain | ||||
|           security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | ||||
|           security set-keychain-settings -lut 21600 $KEYCHAIN_PATH | ||||
|           security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | ||||
|  | ||||
|           # import certificate to keychain | ||||
|           security import "dist.cer" -P "$APPLE_STORE_P12_PASSWORD" -k $KEYCHAIN_PATH -f pkcs12 -t cert -A | ||||
|           security import "installer.cer" -P "$APPLE_STORE_P12_PASSWORD" -k $KEYCHAIN_PATH -f pkcs12 -t cert -A | ||||
|  | ||||
|           security set-key-partition-list -S apple-tool:,apple: -k "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | ||||
|           security list-keychain -d user -s $KEYCHAIN_PATH | ||||
|  | ||||
|           target="universal-apple-darwin" | ||||
|  | ||||
|           # Turn off the default target | ||||
|           # We don't want to install the updater for the apple store build | ||||
|           sed -i.bu "s/default =/# default =/" src-tauri/Cargo.toml | ||||
|           rm src-tauri/Cargo.toml.bu | ||||
|           git diff src-tauri/Cargo.toml | ||||
|  | ||||
|           yarn tauri build --target "${target}" --verbose --config src-tauri/tauri.app-store.conf.json | ||||
|  | ||||
|           app_path="src-tauri/target/${target}/release/bundle/macos/Zoo Modeling App.app" | ||||
|           build_name="src-tauri/target/${target}/release/bundle/macos/Zoo Modeling App.pkg" | ||||
|           cp_dir="src-tauri/target/${target}/release/bundle/macos/Zoo Modeling App.app/Contents/embedded.provisionprofile" | ||||
|           entitlements="src-tauri/entitlements/app-store.entitlements" | ||||
|  | ||||
|           cp "${profile}" "${cp_dir}" | ||||
|  | ||||
|           codesign --deep --force -s "${sign_app}" --entitlements "${entitlements}" "${app_path}" | ||||
|  | ||||
|           productbuild --component "${app_path}" /Applications/ --sign "${sign_install}" "${build_name}" | ||||
|  | ||||
|           # Undo the changes to the Cargo.toml | ||||
|           git checkout src-tauri/Cargo.toml | ||||
|  | ||||
|         env: | ||||
|           APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} | ||||
|           APPLE_STORE_PROVISIONING_PROFILE: ${{ secrets.APPLE_STORE_PROVISIONING_PROFILE }} | ||||
|           APPLE_STORE_DISTRIBUTION_CERT: ${{ secrets.APPLE_STORE_DISTRIBUTION_CERT }} | ||||
|           APPLE_STORE_INSTALLER_CERT: ${{ secrets.APPLE_STORE_INSTALLER_CERT }} | ||||
|           APPLE_STORE_P12_PASSWORD: ${{ secrets.APPLE_STORE_P12_PASSWORD }} | ||||
|  | ||||
|  | ||||
|       - name: 'Upload to Mac TestFlight (nightly)' | ||||
|         uses: apple-actions/upload-testflight-build@v1 | ||||
|         if: ${{ github.event_name == 'schedule' && matrix.os == 'macos-14' }} | ||||
|         with: | ||||
|           app-path: 'src-tauri/target/universal-apple-darwin/release/bundle/macos/Zoo Modeling App.pkg' | ||||
|           issuer-id: ${{ secrets.APPLE_STORE_ISSUER_ID }} | ||||
|           api-key-id: ${{ secrets.APPLE_STORE_API_KEY_ID }} | ||||
|           api-private-key: ${{ secrets.APPLE_STORE_API_PRIVATE_KEY }} | ||||
|           app-type: osx | ||||
|  | ||||
|  | ||||
|       - name: Clean up after Mac TestFlight (nightly) | ||||
|         if: ${{ github.event_name == 'schedule' && matrix.os == 'macos-14' }} | ||||
|         shell: bash | ||||
|         run: | | ||||
|           git status | ||||
|           # remove our target builds because we want to make sure the later build | ||||
|           # includes the updater, and that anything we changed with the target | ||||
|           # does not persist | ||||
|           rm -rf src-tauri/target | ||||
|           # Lets get rid of the info.plist for the normal mac builds since its | ||||
|           # being sketchy. | ||||
|           rm src-tauri/Info.plist | ||||
|  | ||||
|       # We do this after the apple store because the apple store build is | ||||
|       # specific and we want to overwrite it with the this new build after and | ||||
|       # not upload the apple store build to the public bucket | ||||
|       - name: Build the app (release) and sign | ||||
|         uses: tauri-apps/tauri-action@v0 | ||||
|         if: ${{ env.BUILD_RELEASE == 'true' }} | ||||
|         env: | ||||
|           TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} | ||||
|           TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} | ||||
|           TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} | ||||
|           TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} | ||||
|           APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} | ||||
|           APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} | ||||
|           APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} | ||||
| @ -343,7 +240,7 @@ jobs: | ||||
|           APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} | ||||
|           TAURI_CONF_ARGS: "--config ${{ matrix.os == 'windows-latest' && 'src-tauri\\tauri.release.conf.json' || 'src-tauri/tauri.release.conf.json' }}" | ||||
|         with: | ||||
|           args: "${{ env.TAURI_CONF_ARGS }} ${{ env.TAURI_ARGS_MACOS }} ${{ env.TAURI_ARGS_UBUNTU }}" | ||||
|           args: "${{ matrix.os == 'macos-14' && '--target universal-apple-darwin' || '' }} ${{ env.TAURI_CONF_ARGS }}" | ||||
|  | ||||
|       - uses: actions/upload-artifact@v3 | ||||
|         if: matrix.os != 'ubuntu-latest' | ||||
| @ -354,9 +251,9 @@ jobs: | ||||
|           path: "${{ env.PREFIX }}/${{ env.MODE }}/bundle/*/*" | ||||
|  | ||||
|       - name: Run e2e tests (linux only) | ||||
|         if: ${{ matrix.os == 'ubuntu-latest' && github.event_name != 'release' && github.event_name != 'schedule' }} | ||||
|         if: matrix.os == 'ubuntu-latest' | ||||
|         run: | | ||||
|           cargo install tauri-driver --force | ||||
|           cargo install tauri-driver@0.1.3 | ||||
|           source .env.${{ env.BUILD_RELEASE == 'true' && 'production' || 'development' }} | ||||
|           export VITE_KC_API_BASE_URL | ||||
|           xvfb-run yarn test:e2e:tauri | ||||
| @ -376,7 +273,6 @@ jobs: | ||||
|       NOTES: ${{ github.event_name == 'release' && github.event.release.body || format('Nightly build, commit {0}', github.sha) }} | ||||
|       BUCKET_DIR: ${{ github.event_name == 'release' && 'dl.kittycad.io/releases/modeling-app' || 'dl.kittycad.io/releases/modeling-app/nightly' }} | ||||
|       WEBSITE_DIR: ${{ github.event_name == 'release' && 'dl.zoo.dev/releases/modeling-app' || 'dl.zoo.dev/releases/modeling-app/nightly' }} | ||||
|       URL_CODED_NAME: ${{ github.event_name == 'schedule' && 'Zoo%20Modeling%20App%20%28Nightly%29' || 'Zoo%20Modeling%20App' }} | ||||
|     steps: | ||||
|       - uses: actions/download-artifact@v3 | ||||
|  | ||||
| @ -391,9 +287,9 @@ jobs: | ||||
|             --arg pub_date "${PUB_DATE}" \ | ||||
|             --arg notes "${NOTES}" \ | ||||
|             --arg darwin_sig "$DARWIN_SIG" \ | ||||
|             --arg darwin_url "$RELEASE_DIR/macos/${{ env.URL_CODED_NAME }}.app.tar.gz" \ | ||||
|             --arg darwin_url "$RELEASE_DIR/macos/Zoo%20Modeling%20App.app.tar.gz" \ | ||||
|             --arg windows_sig "$WINDOWS_SIG" \ | ||||
|             --arg windows_url "$RELEASE_DIR/msi/${{ env.URL_CODED_NAME }}_${VERSION_NO_V}_x64_en-US.msi.zip" \ | ||||
|             --arg windows_url "$RELEASE_DIR/msi/Zoo%20Modeling%20App_${VERSION_NO_V}_x64_en-US.msi.zip" \ | ||||
|             '{ | ||||
|               "version": $version, | ||||
|               "pub_date": $pub_date, | ||||
| @ -422,8 +318,8 @@ jobs: | ||||
|             --arg version "${VERSION}" \ | ||||
|             --arg pub_date "${PUB_DATE}" \ | ||||
|             --arg notes "${NOTES}" \ | ||||
|             --arg darwin_url "$RELEASE_DIR/dmg/${{ env.URL_CODED_NAME }}_${VERSION_NO_V}_universal.dmg" \ | ||||
|             --arg windows_url "$RELEASE_DIR/msi/${{ env.URL_CODED_NAME }}_${VERSION_NO_V}_x64_en-US.msi" \ | ||||
|             --arg darwin_url "$RELEASE_DIR/dmg/Zoo%20Modeling%20App_${VERSION_NO_V}_universal.dmg" \ | ||||
|             --arg windows_url "$RELEASE_DIR/msi/Zoo%20Modeling%20App_${VERSION_NO_V}_x64_en-US.msi" \ | ||||
|             '{ | ||||
|               "version": $version, | ||||
|               "pub_date": $pub_date, | ||||
| @ -440,7 +336,7 @@ jobs: | ||||
|             cat last_download.json | ||||
|  | ||||
|       - name: Authenticate to Google Cloud | ||||
|         uses: 'google-github-actions/auth@v2.1.3' | ||||
|         uses: 'google-github-actions/auth@v2.1.1' | ||||
|         with: | ||||
|           credentials_json: '${{ secrets.GOOGLE_CLOUD_DL_SA }}' | ||||
|  | ||||
| @ -471,14 +367,13 @@ jobs: | ||||
|  | ||||
|       - name: Upload release files to Github | ||||
|         if: ${{ github.event_name == 'release' }} | ||||
|         uses: softprops/action-gh-release@v2 | ||||
|         uses: softprops/action-gh-release@v1 | ||||
|         with: | ||||
|           files: 'artifact/*/Zoo*' | ||||
|            | ||||
|   announce_release: | ||||
|     needs: [publish-apps-release] | ||||
|     runs-on: ubuntu-latest | ||||
|     if: github.event_name == 'release' | ||||
|     steps: | ||||
|       - name: Check out code | ||||
|         uses: actions/checkout@v4 | ||||
|  | ||||
							
								
								
									
										37
									
								
								.github/workflows/create-release.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										37
									
								
								.github/workflows/create-release.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,37 +0,0 @@ | ||||
| name: Create Release | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - main | ||||
|  | ||||
| jobs: | ||||
|   create-release: | ||||
|     runs-on: ubuntu-latest | ||||
|     permissions: | ||||
|       contents: write | ||||
|       pull-requests: read | ||||
|     if: contains(github.event.head_commit.message, 'Cut release v') | ||||
|     steps: | ||||
|       - uses: actions/github-script@v7 | ||||
|         name: Read Cut release PR info and create release | ||||
|         with: | ||||
|           script: | | ||||
|             const { owner, repo } = context.repo | ||||
|             const pulls = await github.rest.repos.listPullRequestsAssociatedWithCommit({ | ||||
|               owner, | ||||
|               repo, | ||||
|               commit_sha: context.sha, | ||||
|             }) | ||||
|             const { title, body } = pulls.data[0] | ||||
|             const version = title.split('Cut release ')[1] | ||||
|  | ||||
|             const result = await github.rest.repos.createRelease({ | ||||
|               owner, | ||||
|               repo, | ||||
|               body, | ||||
|               tag_name: version, | ||||
|               name: version, | ||||
|               draft: true, | ||||
|             }) | ||||
|             console.log(result) | ||||
							
								
								
									
										65
									
								
								.github/workflows/generate-website-docs.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										65
									
								
								.github/workflows/generate-website-docs.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,65 +0,0 @@ | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - main | ||||
|     paths: | ||||
|       - .github/workflows/generate-website-docs.yml | ||||
|       - 'docs/**' | ||||
|   pull_request: | ||||
|     paths: | ||||
|       - .github/workflows/generate-website-docs.yml | ||||
|   workflow_dispatch: | ||||
| name: generate-website-docs | ||||
| concurrency: | ||||
|   group: docs-${{ github.ref }} | ||||
|   cancel-in-progress: true | ||||
| jobs: | ||||
|   generate-website-docs: | ||||
|     name: generate-website-docs | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: actions/create-github-app-token@v1 | ||||
|         id: app-token | ||||
|         with: | ||||
|           # required | ||||
|           app-id: ${{ secrets.GH_ORG_APP_ID }} | ||||
|           private-key: ${{ secrets.GH_ORG_APP_PRIVATE_KEY }} | ||||
|           owner: ${{ github.repository_owner }} | ||||
|       # Checkout the docs repo since we will want to update the files there. | ||||
|       - uses: actions/checkout@v4 | ||||
|         with: | ||||
|           repository: 'kittycad/documentation' | ||||
|           path: 'documentation' | ||||
|           token: ${{ steps.app-token.outputs.token }} | ||||
|       - name: move docs to docs | ||||
|         shell: bash | ||||
|         run: | | ||||
|           mkdir -p documentation/content/pages/docs/kcl/ | ||||
|           # cleanup old | ||||
|           rm -rf documentation/content/pages/docs/kcl/*.md | ||||
|           # move new | ||||
|           mv -f docs/kcl/*.md documentation/content/pages/docs/kcl/ | ||||
|       - name: commit the changes in the docs repo | ||||
|         shell: bash | ||||
|         run: | | ||||
|           cd documentation | ||||
|           git config --local user.email "github-actions[bot]@users.noreply.github.com" | ||||
|           git config --local user.name "github-actions[bot]" | ||||
|           git add . | ||||
|           git commit -am "YOYO NEW KCL DOCS!!" || exit 0 | ||||
|           git fetch origin | ||||
|           git rebase origin/main || exit 0 | ||||
|           export NEW_BRANCH="update-kcl-docs" | ||||
|           git checkout -b "$NEW_BRANCH" | ||||
|           git push -f origin "$NEW_BRANCH" | ||||
|           gh pr create --title "Update KCL docs" \ | ||||
|               --body "Updating the generated kcl docs cc @jessfraz @franknoirot merge this" \ | ||||
|               --head "$NEW_BRANCH" \ | ||||
|               --reviewer jessfraz \ | ||||
|               --reviewer irev-dev \ | ||||
|               --reviewer franknoirot \ | ||||
|               --base main || true | ||||
|         env: | ||||
|           GITHUB_TOKEN: ${{ steps.app-token.outputs.token }} | ||||
|  | ||||
							
								
								
									
										93
									
								
								.github/workflows/playwright.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										93
									
								
								.github/workflows/playwright.yml
									
									
									
									
										vendored
									
									
								
							| @ -4,82 +4,28 @@ on: | ||||
|     branches: [ main ] | ||||
|   pull_request: | ||||
|     branches: [ main ] | ||||
|  | ||||
| concurrency: | ||||
|   group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | ||||
|   cancel-in-progress: true | ||||
|  | ||||
| permissions: | ||||
|   contents: write | ||||
|   pull-requests: write | ||||
|   actions: read | ||||
|    | ||||
|  | ||||
| jobs: | ||||
|  | ||||
|   check-rust-changes: | ||||
|     runs-on: ubuntu-latest | ||||
|     outputs: | ||||
|       rust-changed: ${{ steps.filter.outputs.rust }} | ||||
|  | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|  | ||||
|       - id: filter | ||||
|         name: Check for Rust changes | ||||
|         uses: dorny/paths-filter@v3 | ||||
|         with: | ||||
|           filters: | | ||||
|             rust: | ||||
|               - 'src/wasm-lib/**' | ||||
|  | ||||
|   playwright-ubuntu: | ||||
|     timeout-minutes: 60 | ||||
|     runs-on: ubuntu-latest-8-cores | ||||
|     needs: check-rust-changes | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - uses: actions/checkout@v4 | ||||
|     - uses: actions/setup-node@v4 | ||||
|       with: | ||||
|         node-version-file: '.nvmrc' | ||||
|         cache: 'yarn' | ||||
|     - uses: KittyCAD/action-install-cli@main | ||||
|     - uses: KittyCAD/action-install-cli@v0.2.16 | ||||
|     - name: Install dependencies | ||||
|       run: yarn | ||||
|     - name: Install Playwright Browsers | ||||
|       run: yarn playwright install --with-deps | ||||
|     - name: Download Wasm Cache | ||||
|       id: download-wasm | ||||
|       if: needs.check-rust-changes.outputs.rust-changed == 'false' | ||||
|       uses: dawidd6/action-download-artifact@v3 | ||||
|       continue-on-error: true | ||||
|       with: | ||||
|         github_token: ${{secrets.GITHUB_TOKEN}} | ||||
|         name: wasm-bundle | ||||
|         workflow: build-and-store-wasm.yml | ||||
|         branch: main | ||||
|         path: src/wasm-lib/pkg | ||||
|     - name: copy wasm blob | ||||
|       if: needs.check-rust-changes.outputs.rust-changed == 'false' | ||||
|       run: cp src/wasm-lib/pkg/wasm_lib_bg.wasm public | ||||
|       continue-on-error: true | ||||
|     - name: Setup Rust | ||||
|       uses: dtolnay/rust-toolchain@stable | ||||
|     - name: Cache Wasm (because rust diff) | ||||
|       if: needs.check-rust-changes.outputs.rust-changed == 'true' | ||||
|     - name: Cache wasm | ||||
|       uses: Swatinem/rust-cache@v2 | ||||
|       with: | ||||
|         workspaces: './src/wasm-lib' | ||||
|     - name: OR Cache Wasm (because wasm cache failed) | ||||
|       if: steps.download-wasm.outcome == 'failure' | ||||
|       uses: Swatinem/rust-cache@v2 | ||||
|       with: | ||||
|         workspaces: './src/wasm-lib' | ||||
|     - name: Build Wasm (because rust diff) | ||||
|       if: needs.check-rust-changes.outputs.rust-changed == 'true' | ||||
|       run: yarn build:wasm | ||||
|     - name: OR Build Wasm (because wasm cache failed) | ||||
|       if: steps.download-wasm.outcome == 'failure' | ||||
|     - name: build wasm | ||||
|       run: yarn build:wasm | ||||
|     - name: build web | ||||
|       run: yarn build:local | ||||
| @ -134,7 +80,7 @@ jobs: | ||||
|   playwright-macos: | ||||
|     timeout-minutes: 60 | ||||
|     runs-on: macos-14 | ||||
|     needs: check-rust-changes | ||||
|     needs: playwright-ubuntu | ||||
|     steps: | ||||
|     - uses: actions/checkout@v4 | ||||
|     - uses: actions/setup-node@v4 | ||||
| @ -145,38 +91,13 @@ jobs: | ||||
|       run: yarn | ||||
|     - name: Install Playwright Browsers | ||||
|       run: yarn playwright install --with-deps | ||||
|     - name: Download Wasm Cache | ||||
|       id: download-wasm | ||||
|       if: needs.check-rust-changes.outputs.rust-changed == 'false' | ||||
|       uses: dawidd6/action-download-artifact@v3 | ||||
|       continue-on-error: true | ||||
|       with: | ||||
|         github_token: ${{secrets.GITHUB_TOKEN}} | ||||
|         name: wasm-bundle | ||||
|         workflow: build-and-store-wasm.yml | ||||
|         branch: main | ||||
|         path: src/wasm-lib/pkg | ||||
|     - name: copy wasm blob | ||||
|       if: needs.check-rust-changes.outputs.rust-changed == 'false' | ||||
|       run: cp src/wasm-lib/pkg/wasm_lib_bg.wasm public | ||||
|       continue-on-error: true | ||||
|     - name: Setup Rust | ||||
|       uses: dtolnay/rust-toolchain@stable | ||||
|     - name: Cache Wasm (because rust diff) | ||||
|       if: needs.check-rust-changes.outputs.rust-changed == 'true' | ||||
|     - name: Cache wasm | ||||
|       uses: Swatinem/rust-cache@v2 | ||||
|       with: | ||||
|         workspaces: './src/wasm-lib' | ||||
|     - name: OR Cache Wasm (because wasm cache failed) | ||||
|       if: steps.download-wasm.outcome == 'failure' | ||||
|       uses: Swatinem/rust-cache@v2 | ||||
|       with: | ||||
|         workspaces: './src/wasm-lib' | ||||
|     - name: Build Wasm (because rust diff) | ||||
|       if: needs.check-rust-changes.outputs.rust-changed == 'true' | ||||
|       run: yarn build:wasm | ||||
|     - name: OR Build Wasm (because wasm cache failed) | ||||
|       if: steps.download-wasm.outcome == 'failure' | ||||
|     - name: build wasm | ||||
|       run: yarn build:wasm | ||||
|     - name: build web | ||||
|       run: yarn build:local | ||||
|  | ||||
							
								
								
									
										21
									
								
								.github/workflows/vector.toml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								.github/workflows/vector.toml
									
									
									
									
										vendored
									
									
								
							| @ -1,21 +0,0 @@ | ||||
| [sources.github-actions-file] | ||||
| type = "file" | ||||
| data_dir = "/tmp/vector" | ||||
| include = ["/tmp/github-actions.log"] | ||||
|  | ||||
| # Modify the logs to include the action name. | ||||
| [transforms.add-action-name] | ||||
| type = "remap" | ||||
| inputs = [ "github-actions-file" ] | ||||
| source = ''' | ||||
| .action = "GITHUB_WORKFLOW" | ||||
| .repo = "GITHUB_REPOSITORY" | ||||
| .sha = "GITHUB_SHA" | ||||
| .ref = "GITHUB_REF_NAME" | ||||
| ''' | ||||
|  | ||||
| [sinks.axiom] | ||||
| type = "axiom" | ||||
| inputs = ["add-action-name"] | ||||
| token = "GH_ACTIONS_AXIOM_TOKEN" | ||||
| dataset = "github-actions" | ||||
							
								
								
									
										15
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -33,14 +33,17 @@ src/wasm-lib/bindings | ||||
| src/wasm-lib/kcl/bindings | ||||
| public/wasm_lib_bg.wasm | ||||
| src/wasm-lib/lcov.info | ||||
| src/wasm-lib/grackle/test_json_output | ||||
|  | ||||
| e2e/playwright/playwright-secrets.env | ||||
| e2e/playwright/temp1.png | ||||
| e2e/playwright/temp2.png | ||||
| # exports from snapshot-tests.spec.ts "exports of each format should work" | ||||
| e2e/playwright/export-snapshots/* | ||||
| !e2e/playwright/export-snapshots/*.png | ||||
| # exports from snapshot-tests.spec.ts | ||||
| e2e/playwright/export-snapshots/*.ply | ||||
| e2e/playwright/export-snapshots/*.obj | ||||
| e2e/playwright/export-snapshots/*.step | ||||
| e2e/playwright/export-snapshots/*.stl | ||||
| e2e/playwright/export-snapshots/*binary.gltf | ||||
| e2e/playwright/export-snapshots/*embedded.gltf | ||||
|  | ||||
|  | ||||
| /test-results/ | ||||
| @ -51,7 +54,3 @@ e2e/playwright/export-snapshots/* | ||||
|  | ||||
| ## generated files | ||||
| src/**/*.typegen.ts | ||||
| src-tauri/gen | ||||
|  | ||||
| src/wasm-lib/grackle/stdlib_cube_partial.json | ||||
| Mac_App_Distribution.provisionprofile | ||||
|  | ||||
							
								
								
									
										33
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								README.md
									
									
									
									
									
								
							| @ -60,12 +60,6 @@ followed by: | ||||
| yarn build:wasm-dev | ||||
| ``` | ||||
|  | ||||
| or if you have the gh cli installed | ||||
|  | ||||
| ``` | ||||
| ./get-latest-wasm-bundle.sh # this will download the latest main wasm bundle | ||||
| ``` | ||||
|  | ||||
| That will build the WASM binary and put in the `public` dir (though gitignored) | ||||
|  | ||||
| finally, to run the web app only, run: | ||||
| @ -74,13 +68,7 @@ finally, to run the web app only, run: | ||||
| yarn start | ||||
| ``` | ||||
|  | ||||
| If you're not an KittyCAD employee you won't be able to access the dev environment, you should copy everything from `.env.production` to `.env.development` to make it point to production instead, then when you navigate to `localhost:3000` the easiest way to sign in is to paste `localStorage.setItem('TOKEN_PERSIST_KEY', "your-token-from-https://zoo.dev/account/api-tokens")` replacing the with a real token from https://zoo.dev/account/api-tokens ofcourse, then navigate to localhost:3000 again. Note that navigating to localhost:3000/signin removes your token so you will need to set the token again. | ||||
|  | ||||
| ### Development environment variables | ||||
|  | ||||
| The Copilot LSP plugin in the editor requires a Zoo API token to run. In production, we authenticate this with a token via cookie in the browser and device auth token in the desktop environment, but this token is inaccessible in the dev browser version because the cookie is considered "cross-site" (from `localhost` to `dev.zoo.dev`). There is an optional environment variable called `VITE_KC_DEV_TOKEN` that you can populate with a dev token in a `.env.development.local` file to not check it into Git, which will use that token instead of other methods for the LSP service. | ||||
|  | ||||
| ### Developing in Chrome | ||||
| ## Developing in Chrome | ||||
|  | ||||
| Chrome is in the process of rolling out a new default which | ||||
| [blocks Third-Party Cookies](https://developer.chrome.com/en/docs/privacy-sandbox/third-party-cookie-phase-out/). | ||||
| @ -102,7 +90,6 @@ yarn test | ||||
| Which will run our suite of [Vitest unit](https://vitest.dev/) and [React Testing Library E2E](https://testing-library.com/docs/react-testing-library/intro/) tests, in interactive mode by default. | ||||
|  | ||||
| For running the rust (not tauri rust though) only, you can | ||||
|  | ||||
| ```bash | ||||
| cd src/wasm-lib | ||||
| cargo test | ||||
| @ -154,7 +141,7 @@ run `./make-release.sh` for a patch update | ||||
| run `./make-release.sh "minor"` for minor | ||||
| run `./make-release.sh "major"` for major | ||||
|  | ||||
| The PR may serve as a place to discuss the human-readable changelog and extra QA. A quick way of getting PR's merged since the last bump is to [use this PR filter](https://github.com/KittyCAD/modeling-app/pulls?q=is%3Apr+sort%3Aupdated-desc+is%3Amerged+), open up the browser console and paste in the following | ||||
| The PR may serve as a place to discuss the human-readable changelog and extra QA. A quick way of getting PR's merged since the last bump is to [use this PR filter](https://github.com/KittyCAD/modeling-app/pulls?q=is%3Apr+sort%3Aupdated-desc+is%3Amerged+), open up the browser console and past in the following | ||||
|  | ||||
| ```typescript | ||||
| console.log( | ||||
| @ -165,7 +152,6 @@ console.log( | ||||
| - `) | ||||
| ) | ||||
| ``` | ||||
|  | ||||
| grab the md list and delete any that are older than the last bump | ||||
|  | ||||
| 2. Merge the PR | ||||
| @ -195,26 +181,23 @@ $ cargo +nightly fuzz run parser | ||||
| For more information on fuzzing you can check out | ||||
| [this guide](https://rust-fuzz.github.io/book/cargo-fuzz.html). | ||||
|  | ||||
|  | ||||
| ### Playwright | ||||
|  | ||||
| First time running plawright locally, you'll need to add the secrets file | ||||
|  | ||||
| ```bash | ||||
| touch ./e2e/playwright/playwright-secrets.env | ||||
| printf 'token="your-token"\nsnapshottoken="your-snapshot-token"' > ./e2e/playwright/playwright-secrets.env | ||||
| ``` | ||||
|  | ||||
| then replace "your-token" with a dev token from dev.zoo.dev/account/api-tokens | ||||
|  | ||||
| then: | ||||
| run playwright | ||||
|  | ||||
| ``` | ||||
| yarn playwright test | ||||
| ``` | ||||
|  | ||||
| run a specific test suite | ||||
|  | ||||
| ``` | ||||
| yarn playwright test src/e2e-tests/example.spec.ts | ||||
| ``` | ||||
| @ -223,17 +206,14 @@ run a specific test change the test from `test('...` to `test.only('...` | ||||
| (note if you commit this, the tests will instantly fail without running any of the tests) | ||||
|  | ||||
| run headed | ||||
|  | ||||
| ``` | ||||
| yarn playwright test --headed | ||||
| ``` | ||||
|  | ||||
| run with step through debugger | ||||
|  | ||||
| ``` | ||||
| PWDEBUG=1 yarn playwright test | ||||
| ``` | ||||
|  | ||||
| However, if you want a debugger I recommend using VSCode and the `playwright` extension, as the above command is a cruder debugger that steps into every function call which is annoying. | ||||
| With the extension you can set a breakpoint after `waitForDefaultPlanesVisibilityChange` in order to skip app loading, then the vscode debugger's "step over" is much better for being able to stay at the right level of abstraction as you debug the code. | ||||
|  | ||||
| @ -278,6 +258,7 @@ Where `./store` should look like this | ||||
|  | ||||
| </details> | ||||
|  | ||||
|  | ||||
| However because much of our tests involve clicking in the stream at specific locations, it's code-gen looks `await page.locator('video').click();` when really we need to use a pixel coord, so I think it's of limited use. | ||||
|  | ||||
| #### Some notes on CI | ||||
| @ -300,7 +281,7 @@ https://github.com/KittyCAD/modeling-app/assets/29681384/6f5e8e85-1003-4fd9-be7f | ||||
| <details> | ||||
|  | ||||
| <summary> | ||||
| PS: for the debug panel, the following JSON is useful for snapping the camera | ||||
| Ps for the debug panel, the following JSON is useful for snapping the camera | ||||
| </summary> | ||||
|  | ||||
| ```JSON | ||||
| @ -308,7 +289,3 @@ PS: for the debug panel, the following JSON is useful for snapping the camera | ||||
| ``` | ||||
|  | ||||
| </details> | ||||
|  | ||||
| ## KCL | ||||
|  | ||||
| For how to contribute to KCL, [see our KCL README](https://github.com/KittyCAD/modeling-app/tree/main/src/wasm-lib/kcl). | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								app-icon.png
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								app-icon.png
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 120 KiB | 
| @ -1,3 +1,3 @@ | ||||
| module.exports = { | ||||
|   presets: ['@babel/preset-env'], | ||||
|   presets: ["@babel/preset-env"], | ||||
| } | ||||
|  | ||||
| @ -1,8 +1,4 @@ | ||||
| --- | ||||
| title: "KCL Known Issues" | ||||
| excerpt: "Known issues with the KCL standard library for the Zoo Modeling App." | ||||
| layout: manual | ||||
| --- | ||||
| # Known Issues | ||||
|  | ||||
| The following are bugs that are not in modeling-app or kcl itself. These bugs | ||||
| once fixed in engine will just start working here with no language changes. | ||||
| @ -10,11 +6,11 @@ once fixed in engine will just start working here with no language changes. | ||||
| - **Sketch on Face**: If your sketch is outside the edges of the face (on which you | ||||
|     are sketching) you will get multiple models returned instead of one single | ||||
|     model for that sketch and its underlying 3D object. | ||||
|     If you see a red line around your model, it means this is happening. | ||||
|  | ||||
| - **Patterns**: If you try and pass a pattern to `hole` currently only the first | ||||
|     item in the pattern is being subtracted. This is an engine bug that is being | ||||
|     worked on. | ||||
|    | ||||
| - **Import**: Right now you can import a file, even if that file has brep data | ||||
|     you cannot edit it, after v1, the engine will account for this. You also cannot | ||||
|     currently move or transform the imported objects at all, once we have assemblies | ||||
|     this will work. | ||||
|  | ||||
| - **Fillets**: Fillets cannot intersect, you will get an error. Only simple fillet cases work currently. | ||||
|     you cannot edit it. You also cannot move or transform the imported objects at | ||||
|    all. In the future, after v1, the engine will account for 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
											
										
									
								
							
							
								
								
									
										390
									
								
								docs/kcl/arc.md
									
									
									
									
									
								
							
							
						
						
									
										390
									
								
								docs/kcl/arc.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
											
										
									
								
							
										
											
												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
											
										
									
								
							
							
								
								
									
										559
									
								
								docs/kcl/hole.md
									
									
									
									
									
								
							
							
						
						
									
										559
									
								
								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
											
										
									
								
							| @ -1,81 +0,0 @@ | ||||
| --- | ||||
| title: "KCL Standard Library" | ||||
| excerpt: "Documentation for the KCL standard library for the Zoo Modeling App." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| ## Table of Contents | ||||
|  | ||||
| * [Types](kcl/types) | ||||
| * [Known Issues](kcl/KNOWN-ISSUES) | ||||
| * [`abs`](kcl/abs) | ||||
| * [`acos`](kcl/acos) | ||||
| * [`angleToMatchLengthX`](kcl/angleToMatchLengthX) | ||||
| * [`angleToMatchLengthY`](kcl/angleToMatchLengthY) | ||||
| * [`angledLine`](kcl/angledLine) | ||||
| * [`angledLineOfXLength`](kcl/angledLineOfXLength) | ||||
| * [`angledLineOfYLength`](kcl/angledLineOfYLength) | ||||
| * [`angledLineThatIntersects`](kcl/angledLineThatIntersects) | ||||
| * [`angledLineToX`](kcl/angledLineToX) | ||||
| * [`angledLineToY`](kcl/angledLineToY) | ||||
| * [`arc`](kcl/arc) | ||||
| * [`asin`](kcl/asin) | ||||
| * [`atan`](kcl/atan) | ||||
| * [`bezierCurve`](kcl/bezierCurve) | ||||
| * [`ceil`](kcl/ceil) | ||||
| * [`circle`](kcl/circle) | ||||
| * [`close`](kcl/close) | ||||
| * [`cos`](kcl/cos) | ||||
| * [`e`](kcl/e) | ||||
| * [`extrude`](kcl/extrude) | ||||
| * [`fillet`](kcl/fillet) | ||||
| * [`floor`](kcl/floor) | ||||
| * [`getEdge`](kcl/getEdge) | ||||
| * [`getNextAdjacentEdge`](kcl/getNextAdjacentEdge) | ||||
| * [`getOppositeEdge`](kcl/getOppositeEdge) | ||||
| * [`getPreviousAdjacentEdge`](kcl/getPreviousAdjacentEdge) | ||||
| * [`helix`](kcl/helix) | ||||
| * [`hole`](kcl/hole) | ||||
| * [`import`](kcl/import) | ||||
| * [`lastSegX`](kcl/lastSegX) | ||||
| * [`lastSegY`](kcl/lastSegY) | ||||
| * [`legAngX`](kcl/legAngX) | ||||
| * [`legAngY`](kcl/legAngY) | ||||
| * [`legLen`](kcl/legLen) | ||||
| * [`line`](kcl/line) | ||||
| * [`lineTo`](kcl/lineTo) | ||||
| * [`ln`](kcl/ln) | ||||
| * [`log`](kcl/log) | ||||
| * [`log10`](kcl/log10) | ||||
| * [`log2`](kcl/log2) | ||||
| * [`max`](kcl/max) | ||||
| * [`min`](kcl/min) | ||||
| * [`patternCircular2d`](kcl/patternCircular2d) | ||||
| * [`patternCircular3d`](kcl/patternCircular3d) | ||||
| * [`patternLinear2d`](kcl/patternLinear2d) | ||||
| * [`patternLinear3d`](kcl/patternLinear3d) | ||||
| * [`pi`](kcl/pi) | ||||
| * [`pow`](kcl/pow) | ||||
| * [`profileStart`](kcl/profileStart) | ||||
| * [`profileStartX`](kcl/profileStartX) | ||||
| * [`profileStartY`](kcl/profileStartY) | ||||
| * [`revolve`](kcl/revolve) | ||||
| * [`segAng`](kcl/segAng) | ||||
| * [`segEndX`](kcl/segEndX) | ||||
| * [`segEndY`](kcl/segEndY) | ||||
| * [`segLen`](kcl/segLen) | ||||
| * [`sin`](kcl/sin) | ||||
| * [`sqrt`](kcl/sqrt) | ||||
| * [`startProfileAt`](kcl/startProfileAt) | ||||
| * [`startSketchAt`](kcl/startSketchAt) | ||||
| * [`startSketchOn`](kcl/startSketchOn) | ||||
| * [`tan`](kcl/tan) | ||||
| * [`tangentialArc`](kcl/tangentialArc) | ||||
| * [`tangentialArcTo`](kcl/tangentialArcTo) | ||||
| * [`tau`](kcl/tau) | ||||
| * [`toDegrees`](kcl/toDegrees) | ||||
| * [`toRadians`](kcl/toRadians) | ||||
| * [`xLine`](kcl/xLine) | ||||
| * [`xLineTo`](kcl/xLineTo) | ||||
| * [`yLine`](kcl/yLine) | ||||
| * [`yLineTo`](kcl/yLineTo) | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -1,35 +0,0 @@ | ||||
| --- | ||||
| title: "legAngX" | ||||
| excerpt: "Returns the angle of the given leg for x." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Returns the angle of the given leg for x. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| legAngX(hypotenuse: number, leg: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `utilities` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| legAngX(5, 3) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `hypotenuse`: `number` (REQUIRED) | ||||
| * `leg`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,35 +0,0 @@ | ||||
| --- | ||||
| title: "legAngY" | ||||
| excerpt: "Returns the angle of the given leg for y." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Returns the angle of the given leg for y. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| legAngY(hypotenuse: number, leg: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `utilities` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| legAngY(5, 3) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `hypotenuse`: `number` (REQUIRED) | ||||
| * `leg`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -1,35 +0,0 @@ | ||||
| --- | ||||
| title: "legLen" | ||||
| excerpt: "Returns the length of the given leg." | ||||
| layout: manual | ||||
| --- | ||||
|  | ||||
| Returns the length of the given leg. | ||||
|  | ||||
|  | ||||
|  | ||||
| ```js | ||||
| legLen(hypotenuse: number, leg: number) -> number | ||||
| ``` | ||||
|  | ||||
| ### Tags | ||||
|  | ||||
| * `utilities` | ||||
|  | ||||
| ### Examples | ||||
|  | ||||
| ```js | ||||
| legLen(5, 3) | ||||
| ``` | ||||
|  | ||||
| ### Arguments | ||||
|  | ||||
| * `hypotenuse`: `number` (REQUIRED) | ||||
| * `leg`: `number` (REQUIRED) | ||||
|  | ||||
| ### Returns | ||||
|  | ||||
| `number` | ||||
|  | ||||
|  | ||||
|  | ||||
							
								
								
									
										371
									
								
								docs/kcl/line.md
									
									
									
									
									
								
							
							
						
						
									
										371
									
								
								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
											
										
									
								
							
										
											
												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
											
										
									
								
							
										
											
												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
											
										
									
								
							
							
								
								
									
										28728
									
								
								docs/kcl/std.json
									
									
									
									
									
								
							
							
						
						
									
										28728
									
								
								docs/kcl/std.json
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										9766
									
								
								docs/kcl/std.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9766
									
								
								docs/kcl/std.md
									
									
									
									
									
										Normal file
									
								
							
										
											
												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
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -1,8 +1,4 @@ | ||||
| --- | ||||
| title: "KCL Types" | ||||
| excerpt: "Documentation of types for the KCL standard library for the Zoo Modeling App." | ||||
| layout: manual | ||||
| --- | ||||
| # Types | ||||
|  | ||||
| `KCL` defines the following types and keywords the language. | ||||
|  | ||||
|  | ||||
										
											
												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
											
										
									
								
							
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 224 KiB After Width: | Height: | Size: 193 KiB | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 224 KiB After Width: | Height: | Size: 193 KiB | 
							
								
								
									
										3056
									
								
								e2e/playwright/export-snapshots/gltf-standard-2.gltf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3056
									
								
								e2e/playwright/export-snapshots/gltf-standard-2.gltf
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	