We can store Rust types like `SketchGroup` as their own variant of `KclValue`, or as `KclValue::UserVal`. Sometimes we store in one and try to read from the other, which fails. This causes bugs, like #3338.
Instead, we should use either ::SketchGroup or ::UserVal, and stop using the other. If we stopped using ::UserVal, we'd need a new variant for every Rust type we wanted to build, including user-defined types. So I don't think that's practical.
Instead, we should store every KCL value by de/serializing it into UserVal. This is a first step along that path, removing just the SketchGroup variants. If it goes well, we can remove the other specialized variants too.
My only concern is there might be performance implications from how frequently we convert between serde_json::Value and Rust types via Serde. But I'm not too worried -- there's no parsing JSON strings, just traversing serde_json::Value trees. This isn't great for performance but I think it'll probably be miniscule in comparison to doing all the API calls.
* Get electron building something at all
* Merge Frank test setup work (#3418)
* Working window.electron.getPath
* Loading project-specific settings in electron tests
* Simplify test until we can get snapshots/traces working in electron tests
* test tweaks
---------
Co-authored-by: Frank Noirot <frank@kittycad.io>
* add test #3375 and #3420
* put kcl files together
* move files
* can sort projects #3362
* File in the file pane should open with a single click #3385
* pressing delete on home screen should do nothing #3387
* add aria labels to icons
* Rename and delete projects, also spam arrow keys when renaming #3364#3365#3259
* Fix up paths
* Update flake.nix to support Electron
* Remove a layer of indirection
* Work without a web server
* Fix settings#projectDir link on home
* Fix login (requires new @kittycad/lib WHICH IS NOT INCLUDED HERE)
* Lee: Tests are broken because auth skip needs to happen
* get setting override envs passed through
* tweak eletron CI
* yml tweak
* fmt
* NUKE tauri shit post merge with main
* another test auth tweak
* Revert "another test auth tweak"
This reverts commit b2254b10af.
* try CI again
* CI tweaks
* SKIP_AUTH true now on playwright
* Skipping auth when NODE_ENV=development now
* fmt
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* Use BASE_URL()
* fix exists
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* fix foldername for macos
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* update for windows
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* fix version in lower right
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* cleanup unused imports
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* progress on is playwright
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* fix test folders
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* fix fmt
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* remove tauri from actions bullshit
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* remove tauri dir
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* fixups the coredump async shit
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* updates
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* node env dev
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* fix cancellable
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* cleanup unnessary things
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* fix
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* env vars
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* Bring back fix for NOT using hardcoded main.kcl
* env
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* fmt
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* updates
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* Revert "updates"
This reverts commit da5d9f1043eb94404e8b3f8044088e990e34a4ef.
* updates
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* remove tauri clippuy
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* less retries for now, no debug
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* updates
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* tsconfig
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* small tsc fix
* update some tsc
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* tsc env
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* fix other tsc
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* small change for routeLoaders
* rm old screenshot
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* fix auth
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* fix last onew
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* auth clean up
* fix package.json
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* fix
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* dissmissed screen on tests
* add waits between files being written
* put back retried
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* fix weird programMemory Map issue
* put private back
* Revert "put private back"
This reverts commit d311b978ca.
* Revert "fix weird programMemory Map issue"
This reverts commit 6c387bdf62.
* remove serde-wasm-bindgen
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* add env
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* fix tests
* more test tweaks
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* another tweak
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* more test tweaks
* more tweaks
* increase macos timeout
* try fix macos
* disable macos playwright tests
---------
Signed-off-by: Jess Frazelle <github@jessfraz.com>
Co-authored-by: Kurt Hutten <k.hutten@protonmail.ch>
Co-authored-by: Frank Noirot <frank@kittycad.io>
Co-authored-by: Adam Sunderland <iterion@gmail.com>
Co-authored-by: Jess Frazelle <github@jessfraz.com>
Co-authored-by: Jess Frazelle <jessfraz@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* adjust engine connection to opt out of webRTC connection
* refactor start and test setup
* add env to unit test
* spell config update
* fix beforeAll order bug
* initial integration of new artifact map with tests passing
* remove old artifact map and clean up
* graph artifact map
* have graph commited
* have graph commited
* remove bad file
* install playwright
* fmt
* commit permissions
* typo
* flesh out tests more
* Look at this (photo)Graph *in the voice of Nickelback*
* multi highlight
* redo image logic
* add in solid 2d data into artifactMap
* fix snapshots
* stabiles graph images
* Look at this (photo)Graph *in the voice of Nickelback*
* tweak tests
* rename blend to edgeCut
* Look at this (photo)Graph *in the voice of Nickelback*
* fix playw tests
* start of artifact map rename to graph
* rename file
* rename test
* rename clearup
* comments
* docs
* docs proof read
* few tweaks here and there
* typos
* delete get parent logic
* nit, combine if statements
* remove unused param
* fix silly test bug
* rename surfId to sufaceId
* rename types
* update comments
* add comment
* add extra check
* Look at this (photo)Graph *in the voice of Nickelback*
* pull out merge artifact function
* update comments
* fix test
* fmt
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Refactor line tool and rectangle tool to share same "no points" code path
* Remove console.log
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Re-run CI
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* seperate out artifactmap functions into seperate file, change types quiet a bit with e2e still passing
* more type changes
* another increment
* cull artifact map
* remove excessive parentIds
* rename props
* final clean up
* unused vars
* start of seperating pending message from artifact map
* continue migration to sendCommandVersion2
* mostly massage types
* process artifact after the fact
* clean up
* Fix to allow variable shadowing inside functions
* Implement closures
* Fix KCL test code to not reference future tag definition
* Remove tag declarator from function parameters
This is an example where the scoping change revealed a subtle issue
with TagDeclarators. You cannot bind a new tag using a function
parameter.
The issue is that evaluating a TagDeclarator like $foo binds an
identifier to its corresponding TagIdentifier, but returns the
TagDeclarator. If you have a TagDeclarator passed in as a parameter
to a function, you can never get its corresponding TagIdentifier.
This seems like a case where TagDeclarator evaluation needs to be
revisited, especially now that we have scoped tags.
* Fix to query return, functions, and tag declarator AST nodes correctly
* Rough impl of line lengths, still duplicating
* Make sure the labels get cleared along with the rest of the sketch
* Show current units in segment length indicators
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Re-run CI after snapshots
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Re-run CI
* Make sure `close` segments get insert segment handles
* Skip engine connection tests on Safari with a todo
* Fmt
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* inital migration with a couple lingering concerns
* move is stream ready back
* put htmlRef back in useStore
* final tidy of useStore
* test tweaks
* tweak more
* more test tweaks
* fmt
* test tweaks
* attempts at fixing 'Basic default modeling and sketch hotkeys work'
* more tries
* 😭
* try again
* fmt
* Start of basic test (not yet failing)
* Add a little logging to get the lay of the scene object land
* Move test colors to utility, test broken
* Get accurate test that is only broken with highlighted color behavior
* Working implementation but now initial segment color sticks around too long
* Make sure segment base color is always the theme color
* Remove console logs, refactor a couple lines to use if statements instead of inline booleans
* Fix new test
* Make origin color update like the other segment types
* fmt
* Fix issue where initially-selected segments lose highlight after hover
* Undo this tweaking of the selection logic, this is really only about the clientSideEntities
* Remove unused exports
* Remove unnecessary code change from ModelingMachineProvider
* Remove newline
* Update src/clientSideScene/sceneEntities.ts
Co-authored-by: Kurt Hutten <k.hutten@protonmail.ch>
---------
Co-authored-by: Kurt Hutten <k.hutten@protonmail.ch>
Co-authored-by: Jess Frazelle <jessfraz@users.noreply.github.com>
* allow for editing a sketch where extrude or revolve is in the same pipe
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* update tests
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* add playwright test for extrude
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* add test for revolve
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* remove log
Signed-off-by: Jess Frazelle <github@jessfraz.com>
---------
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* Make sketch and extrude produce separate top-level constants
* Fix most tests
* Add a breaking test for sketch on face AST mod
* Use `extrude` instead of `part`
* Implement @Irev-Dev's branch changes from https://github.com/KittyCAD/modeling-app/pull/2472
* Get extrude on face working
* Update incorrect sketch on face test
* Update unit tests
* Fix up E2E test changes
* fmt
* Fix a couple of goofed up test updates
* More specific names for paths to node sent to modelingMachine
* Bump down playwright workers for now
* Slightly more explicit type coercion
* Update snapshot tests
* Missed one other new flow test that wasn't updated to use "sketch001"
* Typo
* Damn missed one more sorry
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Re-run CI
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* I think the multiple sketches test reverted from under me
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* start of overlay work
* add new icons
* add constraint symbols
* add three dots
* add primary colours
* refactor how we get constraint info for overlays
* refactor how we get constraint info for overlays
* get symbols working for tangential arc too
* extra data on constraint info
* add initial delete
* fix types and circular dep issue after rebase
* fix quirk with horz vert line overlays
* fix setup and tear down of overlays
* remove overlays that are too small
* throttle overlay updates and prove tests selecting html instead of hardcoded px coords
* initial show overaly on segment hover
* remove overlays when tool is equipped
* dounce overlay updates
* tsc
* make higlighting robust to small changes in source ranges
* replace with variable for unconstrained values, and improve styles for popover
* background tweak
* make overlays unconstrain inputs
* fix small regression
* write query for finding related tag references
* make delete segment safe
* typo
* un used imports
* test deleteSegmentFromPipeExpression
* add getConstraintInfo test
* test removeSingleConstraintInfo
* more tests
* tsc
* add tests for overlay buttons
* rename tests
* fmt
* better naming structure
* more reliablity
* more test tweaks
* fix selection test
* add delete segments with overlays tests
* dependant tag tests for segment delet
* typo
* test clean up
* fix some perf issus
* clean up
* clean up
* make things a little more dry
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* trigger ci
* Make constraint hover popovers readable on light mode
* Touch up the new variable dialog
* Little touch-up to three-dot menu style
* fix highlight issue
* fmt
* use optional chain
* Revert "A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)"
This reverts commit be3d61e4a3.
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* disable var panel in sketch mode
* fix overlay tests after mergi in main
* test tweak
* try fix ubuntu
* fmt
* more test tweaks
* tweak
* tweaks
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Frank Noirot <frank@kittycad.io>
* Revert "Revert "client side sketch updating properly with direct changes to t… (#2286)"
This reverts commit e7ab645267.
* rejig out side of xstate
* test tweak
* more test tweak
* refactor some codeManager stuff
* tsc
* try and fix tests
* revert small uneeded change
* fix
* snapshot tweak
* more test tweak
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* small tweak
* disable bad test
* fmt
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* use engine animations for sketch on face, but not default planes
* massage things
* fix type issue
* small problem in playwright test<
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* some tests fixes
* more test tweaks
* more test tweaks
* clean up
* more tidy
* tests are a pain
* more test stuff
* test stuff again
* fix micro think axes in sketch mode
* more test shit
* more test shit more
* more test tweaks
* more test tweaks
* more test stuff
* trigger ci
* clean up
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* strongly type all websocket requests to the engine so we cant send a bad one
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* udpates
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* use new lib
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* updates to lint
Signed-off-by: Jess Frazelle <github@jessfraz.com>
---------
Signed-off-by: Jess Frazelle <github@jessfraz.com>
* Initial draft rectangle appear on screen
* rectangle tool extra
* Fix draft lines in all quadrants
* Wait for first click to set up draft rectangle
* Working rectangle commit
* Update toolbar icon and disabling logic
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* fmt
* Working tool, one remaining bug around naively updating sketch nodes
* Break out rectangle AST utilities
* Remove unused imports
* Disable Rectangle tool if sketch is not empty
* Use existing tools for generating tag names
* Add snapshot test for tool
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Rerun CI
* Add comments, remove unrelated changes
* fix rectangle bug from bad ast
* Make rectangle tool equippable when the line tool is equipped
* Change snapshot test to check the draft rectangle instead of commited one
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Rerun CI
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Rerun CI
---------
Co-authored-by: Kurt Hutten Irev-Dev <k.hutten@protonmail.ch>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* dynamic cursor depending on mouse scene state
* hover stuff
* bump min length
* clean up
* sketch on face failing randomly
* more time out for extrude snapshots
* Update src/clientSideScene/sceneEntities.ts
Co-authored-by: Frank Noirot <frank@zoo.dev>
* move for profileStart handle, and select when no tool equiped
---------
Co-authored-by: Frank Noirot <frank@zoo.dev>
* get branch up to where it was before
* setup dots properly
* only show extra handle on hover
* use partical texture for plus button
* fix regression
* fix deleted line
* fix sketch on face test
* caluclate segment length in screen-space/in-pixels
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* side small segment handles on resize
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Make sure this works on setup and update of segments
* Add to tangential arcs
* Revert "A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)"
This reverts commit 5dc1adacae.
* Revert "A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)"
This reverts commit b8ceea179c.
* try and fix sketch on face in CI
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* more test fix
* convert scaling to be based on pixels
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* trigger ci
* Revert "A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)"
This reverts commit 6287c943dd.
* Revert "A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)"
This reverts commit 1baa3819db.
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Update src/clientSideScene/segments.ts
Co-authored-by: Frank Noirot <frank@zoo.dev>
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* reduce line thickness
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* trigger CI
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* trigger CI
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* trigger CI
* try putting init script back in
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Frank Noirot <frank@zoo.dev>
* always enter edit mode
* initial blocking of extra code-mirror updates
* dry out code
* rejig selections
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* clean up
* stream clean up
* update export
* sketch mode can be entered and exited for extrude faces
But has bugs
* startSketchOn working in some cases, editsketch animation working but not orientation of instersection plane etc
* Revert "A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)"
This reverts commit 406fca4c55.
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* remove comment
* add sketch on face e2e test
* tweenCamToNegYAxis should respect reduced motion
* initial sketch on face working with test
* remove temporary toolbar button and xState flow
* un-used vars
* snapshot test tweak
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* type tidy up
* Revert "A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)"
This reverts commit c39b8ebf95.
* Revert "A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)"
This reverts commit fecf6f490a.
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* rename
* sketch on sketch on sketch
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* typo
* startSketchOn Endcaps
end works, start is weird still
* clear selections for entity_ids that are not recognised
* fix sketch on end cap of second order extrustion
* tiny clean up
* fix sketch on close segment/face
* clean up 'lastCodeMirrorSelectionUpdatedFromScene'
* add code mode test for sketchOnExtrudedFace
* make end cap selection more robust
* update js artifacts for extrudes
* update kcl docs
* clean up
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>