* Make tag identifiers monotonic
Signed-off-by: Nick Cameron <nrc@ncameron.org>
* Use epochs rather than snapshots in memory
Signed-off-by: Nick Cameron <nrc@ncameron.org>
---------
Signed-off-by: Nick Cameron <nrc@ncameron.org>
* WIP: Add edit flow for Shell thickness
Would fix#5406 but not like this :sad:
* Early win with working edit on shell
* Extend to logic to walls with tags
* Remove skip
* Add wall test
* Fixing inconsistencies in code. Tests not working on win
* Refactor addShell for consitency
* Clean up
* More clean up
* Add validation on both params
* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)
* Passing tests
* Prettier
* Change from test.skip to comment
* Clean up for review
* Add review suggestions and disable thickness validator
* 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)
* Remove uneccessary changes
* Add edit flow for Shell thickness
Fixes#5406
* Enable edit step in test that works only if the start code is properly formatted
* Clean up for review
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix: add better errors for missing commas in arrays and objects
* chore: add object prop shorthand missing comma test
* fix: wording on unexpected character in arrays and objects
* fix: don't eagerly evaluate whether there is a closing brace/bracket
* feat: exit early when detecting missing commas if encountering invalid tokens
* 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)
* fix: updated reserved word in test to replace removed one
---------
Co-authored-by: Tom Pridham <pridham.tom@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Bail on cleanup after 10s; move setup even higher
* Give macos time before starting an electron instance
* Try it again
* Again
* Remove stale TODO
* Use Kolmogorov complexity instead of text for ai assertions
* Help out prompt-to-edit test with being more explicit
* Try to give Mac more time to open a window
* Fix the other var change for prompt-to-edit test
* Forgot this
* Try some crazier shit
* 🤦 I forgot the return.
* Ok things were actually just not working well at all
* Fix export test to expect smaller size
* yarn tsc && yarn lint && yarn fmt
* 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.