* Start porting artifact graph creation to Rust
* Add most of artifact graph creation
* Add handling loft command from recent PR
* Refactor artifact merge code so that it errors when a new artifact type is added
* Add sweep subtype
* Finish implementation of build artifact graph
* Fix wasm.ts to use new combined generated ts-rs file
* Fix Rust lints
* Fix lints
* Fix up replacement code
* Add artifact graph to WASM outcome
* Add artifact graph to simulation test output
* Add new artifact graph output snapshots
* Fix wall field and reduce unreachable code
* Change field order for subtype
* Change subtype to be determined from the request, like the TS
* Fix plane sweep_id
* Condense code
* Change ID types to be properly optional
* Change to favor the new ID, the same as TS
* Fix to make error impossible
* Rename artifact type tag values to match TS
* Fix name of field on Cap
* Update outputs
* Change to use Rust source range
* Update output snapshots
* Add conversion to mermaid mind map and add to snapshot tests
* Add new mermaid mind map output
* Add flowchart
* Remove raw artifact graph from tests
* Remove JSON artifact graph output
* Update output file with header
* Update output after adding flowchart
* Fix flowchart to not have duplicate edges, one in each direction
* Fix not not output duplicate edges in flowcharts
* Change flowchart edge style to be more obvious when a direction is missing
* Update output after deduplication of edges
* Fix not not skip sketch-on-face artifacts
* Add docs
* Fix edge iteration order to be stable
* Update output after fixing order
* Port TS artifactGraph.test.ts tests to simulation tests
* Add grouping segments and solid2ds with their path
* Update output flowcharts since grouping paths
* Remove TS artifactGraph tests
* Remove unused d3 dependencies
* Fix to track loft ID on paths
* Add command ID to error messages
* Move artifact graph test code to a separate file since it's a large file
* Reduce function visibility
* Remove TS artifact graph code
* Fix spelling error with serde
* Add TODO for edge cut consumed ID
* Add comment about mermaid edge rank
* Fix mermaid flowchart edge cuts to appear as children of their edges
* Update output since fixing flowchart order
* Fix to always build the artifact graph even when there's a KCL error
* Add artifact graph to error output
* Change optional ID merge to match TS
* Remove redundant SourceRange definition
* Remove Rust-flavored default source range function
* Add helper for source range creation
* Update doc comment for the website
* Update docs after doc comment change
* Fix to save engine responses in execution cache
* Remove unused import
* Fix to not call WASM function before beforeAll callback is run
* Remove more unused imports
* Add failing test for current behavior
* Change stream behavior so that stream is played regardless of `isExecuting`
* Change expected pixel color
* Widen possible pixel color diff because local and CI produce slightly different colors
* Refactor ContextMenu to be able to take a guard and other event types
* refactor: break out ViewControlMenu into its own component
* Add ViewControlMenu to Stream, but only on right-click non-drag mouseup
* Fix lints
* Don't use `useCallback` for contextmenu guard
* Update context menu position on subsequent right-clicks
* Implement the functionality
* Another fmt
* Fix handler to not rely on modelingMachine's context,
because that creates an implicit race
* Write an E2E test
* Fix tsc and fmt
* Use artifactGraph helpers for more concise code
Co-authored-by: Kurt Hutten <k.hutten@protonmail.ch>
* Fix up imports and whatnot from commit 2bfc5f5c
* Make early return more clear with curly braces
* Whoops should have linted
---------
Co-authored-by: Kurt Hutten <k.hutten@protonmail.ch>
* Add a code mod for offset plane
* Add support for default plane selections to our `otherSelections` object
* Make availableVars work without a selection range
(because default planes don't have one)
* Make default planes selectable in cmdbar even if AST is empty
* Add offset plane command and activate in toolbar
* Avoid unnecessary error when sketching on offset plane by returning early
* Add supporting test features for offset plane E2E test
* Add WIP E2E test for offset plane
Struggling to get local electron test suite running properly
* Typos
* Lints
* Fix test by making it a web-based one:
I couldn't use the cmdBar fixture with an electron test for some reason.
* Update src/lib/commandBarConfigs/modelingCommandConfig.ts
* Update src/machines/modelingMachine.ts
* Revert changes to `homePageFixture`, as they were unused
* @Irev-Dev feedback: convert action to actor, fix machine layout
* Update plane icon to be not dashed, follow conventions closer
* Update CameraControls.ts
* fix static analyzer error
* A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest)
* Revert "A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest)"
This reverts commit 0b63016217.
* Don't perform sketch click operations if a camera movement interaction also matches
* Don't `stopPropogation`, make selection listener early return if `wasDragging`
+ consolidate `wasDragging` set statements, add comments
* Codespell
---------
Co-authored-by: 49fl <ircsurfer33@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Frank Noirot <frank@kittycad.io>
Co-authored-by: Frank Noirot <frank@zoo.dev>
* Add lints for floating and misued promises
* Add logging async errors in main
* Add async error catch in test-utils
* Change any to unknown
* Trap promise errors and ignore more await warnings
* Add more ignores and toSync helper
* Fix more lint warnings
* Add more ignores and fixes
* Add more reject reporting
* Add accepting arbitrary parameters to toSync()
* Fix more lints
* Revert unintentional change to non-arrow function
* Revert unintentional change to use arrow function
* Fix new warnings in main with auto updater
* Fix formatting
* Change lints to error
This is what the recommended type checked rules do.
* Fix to properly report promise rejections
* Fix formatting
* Fix formatting
* Remove unused import
* Remove unused convenience function
* Move type helpers
* Fix to not return promise when caller doesn't expect it
* Add ignores to lsp code
* migrate settingsMachine
* Guard events with properties instead
* migrate settingsMachine
* Migrate auth machine
* Migrate file machine
* Migrate depracated types
* Migrate home machine
* Migrate command bar machine
* Version fixes
* Migrate command bar machine
* Migrate modeling machine
* Migrate types, state.can, state.matches and state.nextEvents
* Fix syntax
* Pass in modelingState into editor manager instead of modeling event
* Fix issue with missing command bar provider
* Fix state transition
* Fix type issue in Home
* Make sure no guards rely on event type
* Fix up command bar submission logic
* Home machine tweaks to get things running
* Fix AST fillet function args
* Handle "Set selection" when it is called by actor onDone
* Remove unused imports
* A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest)
* Fix injectin project to the fileTree machine
* Revert "A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest)"
This reverts commit 4b43ff69d1.
* A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest)
* Re-run CI
* Restore success toasts on file/folder deletion
* Replace casting with guarding against event.type
* Remove console.log
Co-authored-by: Jonathan Tran <jonnytran@gmail.com>
* Replace all instances of event casting with guards against event.type
---------
Co-authored-by: Frank Noirot <frank@kittycad.io>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Kurt Hutten Irev-Dev <k.hutten@protonmail.ch>
Co-authored-by: Jonathan Tran <jonnytran@gmail.com>
Co-authored-by: Frank Noirot <frank@zoo.dev>
* Remove isFirstRender because isExecuting means the same and remove building scene
* add small makefile util
* Remove waiting for building scene prompt
* Add a new model state indicator
* fmt lint tsc
---------
Co-authored-by: Frank Noirot <frank@kittycad.io>
* 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>
* Move executeCode out of routeLoaders, into shared space in Stream
* Update src/components/Stream.tsx
Co-authored-by: Jonathan Tran <jonnytran@gmail.com>
* Remove unused dependency
* file switching useEffect should depend on engineConnection
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Re-run CI
* Revert "A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)"
This reverts commit d97e74a48b.
* Post-merge fix up
---------
Co-authored-by: Jonathan Tran <jonnytran@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Jess Frazelle <jessfraz@users.noreply.github.com>
Co-authored-by: Kurt Hutten Irev-Dev <k.hutten@protonmail.ch>
* Reload everything on a disconnect
* fix unit-integration tests
* Further improvements to connection manager; persist theme across reconnects
* Fix up artifactGraph.test
* Actually pass the callback
* Kurt hmmm (#3308)
* kurts attempts
* we're almost sane
* get tests working, praise be
---------
Co-authored-by: 49lf <ircsurfer33@gmail.com>
* typo
---------
Co-authored-by: Kurt Hutten Irev-Dev <k.hutten@protonmail.ch>
* Ensure that isFreezeFrame is reset by isFirstRender, because it can't be a freeze frame if it's the first render
* `restart`-type engine starts should count as first renders
* Ensure we don't see a loading spinner after network is reconnected in test
* Make `waitForPageLoad` robust against if the page has already loaded
and make it actually wait for the Start Sketch button to be enabled
---------
Co-authored-by: 49fl <ircsurfer33@gmail.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
* Reapply "Add ping pong health, remove a timeout interval, fix up netwo… (#1771)
This reverts commit 1913519f68.
* Fix build errors
* Add new error states to network status notification
* Remove unused variable
* Refactor to use Context API for network status
* Don't do any stream events if network is not ok
* Catch LSP errors on bad auth
* Show when authentication is bad (cookie header only)
* Fix formatting
* Fix up types
* Revert awaiting on lsp failure
* Fix tsc
* wip
* wip
* fmt
* Fix typing
* Incorporate ping health; yarn make:dev; faster video stream loss notice
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* run ci pls
* run ci pls
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* run ci pls again
* Remove unused variables
* Add new instructions on running Playwright anywhere
* Please the Playwright. Praise the Playwright.
* Correct a vitest
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* ci again
* Fix tests unrelated to this PR
* Fix flakiness in for segments tests
* Bump to 2 workers
* fmt
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* fmt
* fmt
* Fixups
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* ci
* Set workers to 1
* Wait for network status listeners before connecting
* Fix initial connection requirements and trying 2 workers again
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* BROKEN: start of scopes for each setting
* Clean up later: mostly-functional scoped settings!
Broken command bar, unimplemented generated settings components
* Working persisted project settings in-folder
* Start working toward automatic commands and settings UI
* Relatively stable, settings-menu-editable
* Settings persistence tweaks after merge
* Custom settings UI working properly, cleaner types
* Allow boolean command types, create Settings UI for them
* Add support for option and string Settings input types
* Proof of concept settings from command bar
* Add all settings to command bar
* Allow settings to be hidden on a level
* Better command titles for settings
* Hide the settings the settings from the commands bar
* Derive command defaultValue from *current* settingsMachine context
* Fix generated settings UI for 'options' type settings
* Pretty settings modal 💅
* Allow for rollback to parent level setting
* fmt
* Fix tsc errors not related to loading from localStorage
* Better setting descriptions, better buttons
* Make displayName searchable in command bar
* Consolidate constants, get working in browser
* Start fixing tests, better types for saved settings payloads
* Fix playwright tests
* Add a test for the settings modal
* Add AtLeast to codespell ignore list
* Goofed merge of codespellrc
* Try fixing linux E2E tests
* Make codespellrc word lowercase
* fmt
* Fix data-testid in Tauri test
* Don't set text settings if nothing changed
* Turn off unimplemented settings
* Allow for multiple "execution-done" messages to have appeared in snapshot tests
* Try fixing up snapshot tests
* Switch from .json to .toml settings file format
* Use a different method for overriding the default units
* Try to force using the new common storage state in snapshot tests
* Update tests to use TOML
* fmt and remove console logs
* Restore units to export
* tsc errors, make snapshot tests use TOML
* Ensure that snapshot tests use the basicStorageState
* Re-organize use of test.use()
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Update snapshots one more time since lighting changed
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Fix broken "Show in folder" for project-level settings
* Fire all relevant actions after settings reset
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Properly reset the default directory
* Hide settings by platform
* Actually honor showDebugPanel
* Unify settings hiding logic
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* fix first extrusion snapshot
* another attempt to fix extrustion snapshot
* Rerun test suite
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* trigger CI
* more extrusion stuff
* Replace resetSettings console log with comment
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Kurt Hutten Irev-Dev <k.hutten@protonmail.ch>
* 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>
* Add ping pong health, fix up network events
* Change the default connection state for test
---------
Co-authored-by: Jess Frazelle <jessfraz@users.noreply.github.com>
* implement dual camer sync direction
The existance of the client side scene requires two cameras to stay in sync, really these need to be a master-slave relationship, intitial this was implemented with the client side scene taking the lead and sending updates to the server using the endpoint (as it didn't require an new endpoints), but even though we added a sequence property to this endpoint and sent it over udp, it was still an abuse of this endpoint as the engine didn't have this endpoint setup with a fload of messages and low-latency in mind.
Now we have migrated back to sending mouse events to the engine instead, but with the engine replying with camera details on drag_end etc so that we can keep the client camera in sync.
The client side camera still does take the master role in sketch mode as it makes sense to keep the low latency benfits of the local camera for the locallay rendered assets in sketch mode, moving the camera in this mode already did hide the engine camera while the camera is moving so as to avoid ghoasting so this works well.
The camera controls now work by syncing in either direction depending on what's appropiate
* fmt
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* update default plane extrude numbers
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* trigger-ci
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* pull out network indicator logic
* rename callbacks
* re-execute on reconnection
* make sure tool bar is disabled on start up
* clean up
* node safety
* disable toolbar buttons properly
* grey scale action icon icons dodgy
* test tweaks
* Revert "grey scale action icon icons dodgy"
This reverts commit c3d12a0f05.
* Disable modeling commands when network is bad (#1486)
* Disable modeling commands when network is bad
* disabel on execute too
* fmt
---------
Co-authored-by: Kurt Hutten Irev-Dev <k.hutten@protonmail.ch>
* disable playwright snapshots temporarily
* disable export test instead
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
---------
Co-authored-by: Frank Noirot <frank@zoo.dev>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Rename GlobalStateContext to SettingsAuthContext
* Naive initial impl of settings persistence to file system
* Update app identifier in tauri config
* Add "show in folder" tauri command
* Load from and save to file system in Tauri app
* Add documents drive to tauri permission scope
* Add recursive prop to default dir selection dialog
* Add success toast to web restore defaults action
* Add a way to validate read-in settings
* Update imports to use separate settings lib file
* Validate localStorage-loaded settings, combine error message
* Add a e2e test for validation
* Clean up state state bugs
* Reverse validation looping so new users don't error
* update settingsMachine typegen to remove conflicts
* Fmt
* Fix TS errors