* Fix flakey tests with new toolbar.exitSketch
* tsc && lint && fmt
* Disable pw electron thing again
* Unfrig Playwright-Electron a ton; fix another ton of flakes.
* More deflaky
* Fix a ton of tests and playwright related hell
* Run jess's magic incantation to build rust kcl things
* yarn tsc
* yarn lint
* yarn fmt
* Remove double logs
* Revert to old settings spreads momentarily
* Expect error *in the fixtureSetup*, does not circumvent typechecking for regular usage
* Fix unit tests
* Add warning when using a module with no return value
* Update output files since changing source range of the pipeline argument
* Change wording of error message to not use the term unlabeled
* WIP: break out e2e snapshots
* Separate prepare-wasm job
* Force e2e to run on pierremtb/adhoc/break-out-snapshots
* Quick fix
* Quick fix2
* Quick fix3
* Quick fix4
* Quick fix5
* Remove ifs for flow tests
* Clean up for review
* Cache wasm on PR for build-apps
* Add checks on build wasm tings
* Clean up for review
Firstly, before the code "{x = 1, y = }" would give the dreaded "unexpected token" error.
Now it says "This property has a label, but no value. Put some value after the equals sign".
And points to the = symbol with no matching right-hand side value. Yay!
Second fix: before, in the code `f(1, x=)`, the error complained that an unlabeled arg was not permitted there.
Now it says "This argument has a label, but no value. Put some value after the equals sign".
Fixes https://github.com/KittyCAD/modeling-app/issues/4307
Now if you try to fillet the same edge twice in a single fillet command,
the error message is clearer, and the source range will highlight
the specific edges in the array which are duplicated.
Same goes for chamfer.
Note: although the Rust KCL interpreter sends back an array of SourceRange
for each KCL error, the frontend only puts the first one into CodeMirror
diagnostics. We should fix that: https://github.com/KittyCAD/modeling-app/issues/5754
* Allow `hidden` config to be a callback
* Hide selection type args if `nodeToEdit` is present
in workflows that have an edit flow set up
* Remove Selection from headerArguments in edit flow tests
* Make any error show on ErrorPage, not just route error responses
Closes#5620 by making any error show on the page so the user can copy
it for use in an issue. Previously, the logic was too narrow and only
showed the error on the page if `isRouterErrorResponse` was true.
* @nadr0's feedback
thanks for giving my crap work a review
* Update src/components/ErrorPage.tsx
Co-authored-by: Jonathan Tran <jonnytran@gmail.com>
* @nadr0 feedback, handle overflowing error case
---------
Co-authored-by: Jonathan Tran <jonnytran@gmail.com>
Co-authored-by: Kevin Nadro <nadr0@users.noreply.github.com>
Previous error message:
"Expected a kcl_lib::execution::geometry::SolidSet but found Sketch"
New error message:
"Expected a SolidSet but found Sketch. You can convert a sketch (2D) into a Solid (3D) by calling a function like `extrude` or `revolve`"
Two improvements:
- Don't print the fully-qualified Rust name (e.g. kcl_lib::executor::Solid) instead use the last part of that (e.g. just Solid)
- Allow specific suggestions for combinations of got/want (e.g. "You can convert a sketch (2D) into a Solid (3D) by calling a function like `extrude` or `revolve`")
Closes#5616
# Problem
Before: "unexpected token |>", highlights the |>
After: "This argument needs a label, but it doesn't have one", highlights the argument with no label
Closes#5724
# Discussion
I am trying a new approach to the parser: instead of parsing the specific correct thing we need, parse a more general form, then later, narrow it down to specifics and return a nice error if it's wrong. For example, instead of parsing labeled arguments, parse labeled OR unlabeled arguments. Then later check that the only unlabeled arg is the first one, and return a nice error if there's any other. This worked nicely for this PR, hopefully the approach will work for other "cryptic error" issues.
* cargo publish too big
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* cargo publish too big
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* updates
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* updates
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* updates
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* bunmp again
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
---------
Signed-off-by: Jess Frazelle <github@jessfraz.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Previously, `xLine`, `xLineTo`, `yLine` and `yLineTo` used positional arguments. Now:
- `xLineTo` and `yLineTo` have been removed
- `xLine` and `yLine` both use keyword arguments:
- `length`, optional (i.e. a relative distance along the X or Y axis)
- `endAbsolute` optional (i.e. an absolute point along the X or Y axis)
- `tag` optional
- Exactly one of `length` or `endAbsolute` must be given. Not both, not neither.
For example:
```
// Old way
|> xLine(6.04, %)
|> yLineTo(20, %, $base)
// New way
|> xLine(length = 6.04)
|> yLine(endAbsolute = 20, tag = $base)
```
This also improves some of the general-purpose keyword arguments code in modeling app's TS codebase.
Fixes#5625. #5142 regressed the project settings loading because it
failed to fire off a new `load.project` XState event in the case where
we were loading in the browser. It also may have had a bug with project
settings loading on refresh from the file page, as we were not properly
ensuring that the `settingsActor` was in the `idle` state before sending
our `load.project` event regardless.
* Make some things a little less public
Signed-off-by: Nick Cameron <nrc@ncameron.org>
* Rename KclValue::Array to MixedArray
Signed-off-by: Nick Cameron <nrc@ncameron.org>
* Add settings to KclValue::Function
Signed-off-by: Nick Cameron <nrc@ncameron.org>
* Remove a bunch of dead code, simplifying mock exec and meaning KclValue no longer needs to deserialize
Signed-off-by: Nick Cameron <nrc@ncameron.org>
---------
Signed-off-by: Nick Cameron <nrc@ncameron.org>
* Parse an unparse type decls (and refactor impl attributes slightly)
Signed-off-by: Nick Cameron <nrc@ncameron.org>
* Remove special treatment of geometric types from parser and executor
Signed-off-by: Nick Cameron <nrc@ncameron.org>
* Generate docs for std types
Signed-off-by: Nick Cameron <nrc@ncameron.org>
* Hover tool-tips for types and fixup the frontend
Signed-off-by: Nick Cameron <nrc@ncameron.org>
* Fixes
Signed-off-by: Nick Cameron <nrc@ncameron.org>
---------
Signed-off-by: Nick Cameron <nrc@ncameron.org>