* chore: cleanup to get named views released! * fix: fixed gizmo, client side camera sync and remove DEV flag * yarp * chore: implementing E2E tests for creating a named view * fix: cleaning up and commenting E2E tests for named views * fix: we did it bois, the skip ceral i zation bricked my E2E test :( * fix: auto formatter * fix: snapshot uuid matching because rust will randomly generate thme * fix: auto fmt * fix: trying to resolve typescript issues * fix: handling NamedView vs CameraViewState type checking * fix: no idea I just mapped export to 3d export because we have no 2d export yet... * fix: random file I wrote because my editor was too slow * fix: git merge did not do what I wanted * A snapshot a day keeps the bugs away! 📷🐛 * fix: linter errors * A snapshot a day keeps the bugs away! 📷🐛 --------- Co-authored-by: 49fl <ircsurfer33@gmail.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Pierre Jacquier <pierre@zoo.dev>
kcl-lib
Our language for defining geometry and working with our Geometry Engine efficiently. Short for KittyCAD Language, named after our Design API.
Contributing a standard library function
We've built a lot of tooling to make contributing to KCL easier. If you are interested in contributing a new standard library function to KCL, here is the rough process:
- Open just the folder in your editor of choice. VS Code, for example, struggles to run rust-analyzer on the entire modeling-app directory because it's such a turducken of TS and Rust code.
- Find the definition for similar standard library functions in
./kcl/src/std
and place your new one near it or in the same category file. - Add your new code. A new standard library function consists of:
- A
pub async
of the actual standard library function in Rust - A doc comment block containing at least one example using your new standard library function (the Rust compiler will error if you don't provide an example our teammates are dope)
- A
stdlib
macro providing the name that will need to be written by KCL users to use the function (this is usually a camelCase version of your Rust implementation, which is named with snake_case) - An inner function that is published only to the crate
- Add your new standard library function to the long list of CORE_FNS in mod.rs
- Get a production Zoo dev token and run
export KITTYCAD_API_TOKEN=your-token-here
in a terminal - Run
TWENTY_TWENTY=overwrite cargo nextest run --workspace --no-fail-fast
to take snapshot tests of your example code running in the engine - Run
just redo-kcl-stdlib-docs
to generate new Markdown documentation for your function that will be used to generate docs on our website. - Create a PR in GitHub.
Bumping the version
If you bump the version of kcl-lib and push it to crates, be sure to update the repos we own that use it as well. These are: