* Add doc comment to getThemeColorForEngine
* Add a user-level setting for highlightEdges
* Add a custom settings action to update the edge line visibility
* Make the settings pane always open to user settings first
* Refactor engineConnectionMananer.start() to take a settings object
* Revert alway open user settings
* Set highlight edges on engine start up
* fmt fml
* Fix tsc error
* Add a setting for themeColor
* Add primary-color to Tailwind, driven by themeColor setting
* Get rid of most uses of "energy" colors
* Change out the rest of the energy colors
* Tweak NetworkHealthIndicator light mode checkmarks
* Handful of other CSS tweaks while I'm here:
- remove the AppHeader bg and border
- pane margins
- better dark mode button styles
* Make Zoo logomark a badge
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Re-run CI post-snapshots
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Retrigger CI
---------
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>
* Bump ts lib
* Make engine background color driven by theme setting
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Force snapshots to dark mode, fix theme init
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Don't assume we have engineCommandManager in CameraControls,
because for some reason it's being loaded before engineConnection in test environments?
* Merge branch 'main' into change-bg-color
* Replace optional chaining with this.engineCommandManager
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Okay now all snapshot tests are actually in dark mode
* 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>
Co-authored-by: Kurt Hutten Irev-Dev <k.hutten@protonmail.ch>
* 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
* Fix import paths, etc post-merge
* Make default length units `mm` and 'metric'
* Rename to SettingsAuth*
* cargo fmt
* Revert Tauri config identifier change
* Update clientSideInfra's baseUnits from settings
* Break apart CommandBar and CommandBarProvider
* Bugfix: don't validate defaultValue when it's not configured
* Allow some TauriFS functions to no-op from browser
* Sidestep circular deps by loading context and kclManager only from React-land
* Update broken import paths
* Separate loaders from Router, load settings on every route
* Break apart settings types, utils, and constants
* Fix Jest tests by decoupling reliance on useLoaderData from SettingsAuthProvider
* Fix up Router loader data with "layout routes"
https://reactrouter.com/en/main/route/route#layout-routes
* Move settings validation and toast to custom hook so the toast renders
* fmt
* Use forks for Vitest
https://vitest.dev/guide/common-errors.html#failed-to-terminate-worker
* $APPCONFIG !== $APPDATA only on Linux
+ change the identifier back since it really doesn't seem to affect app signing
* Debugging on Linux
* Better directory validation, fix reset settings button
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* defaultDirectory can be empty in browser
* fmt
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* re-trigger CI
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Make onboarding links underlined and a different color
* Override underlined links that shouldn't be
* Update "KittyCAD" to "Zoo" camera controls, copy edits
* Copy edits through CodeEditor step, add counter to onboarding
* Notes through ParametricModeling step
* Notes through UserMenu step
* Add three-dots icon, separate Zoo logo link from project button
* Feedback through end of onboarding
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Fix ESLint warnings
* Revert cameraControls to 'KittyCAD', ensure we get type errors if that isn't correct in the future
* fmt
* Missed a reverted "Zoo" cameraControls item
---------
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
* Tweak toaster look and feel
* Add icons, tweak plus icon names
* Rename commandBarMeta to commandBarConfig
* Refactor command bar, add support for icons
* Create a tailwind plugin for aria-pressed button state
* Remove overlay from behind command bar
* Clean up toolbar
* Button and other style tweaks
* Icon tweaks follow-up: make old icons work with new sizing
* Delete unused static icons
* More CSS tweaks
* Small CSS tweak to project sidebar
* Add command bar E2E test
* fumpt
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* fix typo in a comment
* Fix icon padding (built version only)
* Update onboarding and warning banner icons padding
* Misc minor style fixes
* Get Extrude opening and canceling from command bar
* Iconography tweaks
* Get extrude kind of working
* Refactor command bar config types and organization
* Move command bar configs to be co-located with each other
* Start building a state machine for the command bar
* Start converting command bar to state machine
* Add support for multiple args, confirmation step
* Submission behavior, hotkeys, code organization
* Add new test for extruding from command bar
* Polish step back and selection hotkeys, CSS tweaks
* Loading style tweaks
* Validate selection inputs, polish UX of args re-editing
* Prevent submission with multiple selection on singlular arg
* Remove stray console logs
* Tweak test, CSS nit, remove extrude "result" argument
* Fix linting warnings
* Show Ctrl+/ instead of ⌘K on all platforms but Mac
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* Add "Enter sketch" to command bar
* fix command bar test
* Fix flaky cmd bar extrude test by waiting for engine select response
* Cover both button labels '⌘K' and 'Ctrl+/' in test
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Tweak toaster look and feel
* Add icons, tweak plus icon names
* Rename commandBarMeta to commandBarConfig
* Refactor command bar, add support for icons
* Create a tailwind plugin for aria-pressed button state
* Remove overlay from behind command bar
* Clean up toolbar
* Button and other style tweaks
* Icon tweaks follow-up: make old icons work with new sizing
* Delete unused static icons
* More CSS tweaks
* Small CSS tweak to project sidebar
* Add command bar E2E test
* fumpt
* A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu)
* fix typo in a comment
* Fix icon padding (built version only)
* Update onboarding and warning banner icons padding
* Misc minor style fixes
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* Refactor: rename CADProgram to CameraSystem
* Fix buttonDownInStream always set to 0
This is problematic because the left mouse
button ID is actually 0. If no button is
pressed we should set back to undefined.
* Fix: middle mouse button ID is 1, not 3
* Add "Trackpad Friendly" camera system setting
Signed off by Frank Noirot <frank@kittycad.io>
* Allow camera configs to be lenient on first click
* Add camera handler config object
Using definitions of camera controls of various
CAD incumbents from Onshape's onboarding.
Signed-off-by: Frank Noirot <frank@kittycad.io>
* Refactor: alphabetize settingsMachine
* Refactor: add descriptions to MouseGuards
* Refactor: don't destructure mousemove event
* Refactor: button down in stream as int, not bool
* Honor current camera control settings
* Add cameraControls to settings
* Refactor: alphabetize settings imports
* Refactor: break out cameraControls to own file
* Fix camera control setting in command bar
* Fix formatting on generated type file
* dont use "as" in App.tsx guards
Co-authored-by: Kurt Hutten <k.hutten@protonmail.ch>
* Don't use "as" in Stream.tsx
Co-authored-by: Kurt Hutten <k.hutten@protonmail.ch>
* Don't use "as" in settingsMachine.ts
Co-authored-by: Kurt Hutten <k.hutten@protonmail.ch>
* Add type to cadPrograms
Co-authored-by: Kurt Hutten <k.hutten@protonmail.ch>
* Kurt review
---------
Signed-off-by: Frank Noirot <frank@kittycad.io>
Co-authored-by: Kurt Hutten <k.hutten@protonmail.ch>
* Set named const as default project name
* Refactor: move base units into settings machine
Signed off by Frank Noirot <frank@kittycad.io>
* Reset default when creating with blank name
Signed off by Frank Noirot <frank@kittycad.io>
* Make it impossible to set empty defaultProjectName
Signed off by Frank Noirot <frank@kittycad.io>
* Make it impossible to assign empty strings
to defaultProjectName
Signed off by Frank Noirot <frank@kittycad.io>
* Fix: allow tooltips to overflow code pane
while keeping the same vertical and horizontal
scroll behavior that we've had.
Signed-off-by: Frank Noirot <frank@kittycad.io>
* Style tooltips in light and dark mode
* Fix: properly display autocomplete info as HTML
We were parsing it from md to html, but displaying
the parsed html as a string in the info box.
Signed-off-by: Frank Noirot <frank@kittycad.io>
* Fix z-index of command bar to show over code panel
* Let user set text wrapping in editor
* Style hover tooltips
* Fix failing tests
by not including line wrapping plugin in test mode
---------
Signed-off-by: Frank Noirot <frank@kittycad.io>
* Only show the Replay Onboarding button in file settings
Resolves#351. Eventually we will implement more sophisticated
logic for which settings should be shown where.
Signed-off-by: Frank Noirot <frank@kittycad.io>
* Remove unnecessary console.log
Signed-off-by: Frank Noirot <frank@kittycad.io>
* Respond to system theme changes in real-time
If the user has their "theme" setting to "system".
I tried to use the [XState invoked callback approach](https://xstate.js.org/docs/guides/communication.html#invoking-callbacks),
but I could not find any way to respond to the latest context/state values within the
media listener; I kept receiving stale state.
Signed-off-by: Frank Noirot <frank@kittycad.io>
---------
Signed-off-by: Frank Noirot <frank@kittycad.io>
* Add XState and naive ActionBar
* Add basic dialog and combobox
* Selectable commands in command bar
* Add a few (broken) file actions
* Home commands
* Add subcommand descriptions, cleanup on navigate
* Refactor: move command creation and types to lib
* Refactor to allow any machine to add commands
* Add auth to command bar, add ability to hide cmds
* Refactor: consolidate theme utilities
* Add settings as machine and command set
* Fix: type tweaks
* Fix: only allow auth to navigate from signin
* Remove zustand-powered settings
* Fix: remove zustand settings from App
* Fix: browser infinite redirect
* Feature: allow commands to be hidden per-platform
* Fix: tsc errors
* Fix: hide default project directory from cmd bar
* Polish: transitions, css tweaks
* Feature: label current value in options settings
* Fix broken debug panel UI
* Refactor: move settings toasts to actions
* Tweak: css rounding
* Fix: set default directory recursion and reload 🐞
* Refactor: move machines to their own directory
* Fix formatting
* @Irev-Dev clean-up catches, import cleanup