* Fix up camera step copy and pane opacity for step
* Fix broken onboarding redirect with double slash
* Fix pane height for web bug from blur filter
I found a bug with browser behavior, at least on Chrome.
If you use `backdrop-filter: blur()` at all, you can't
have any children that overflow. The browser will ignore
any attempt and make those children max full-height.
This broke our side panels after I added blur, but
only in Chrome/browser target.
Signed-off-by: Frank Noirot <frank@kittycad.io>
* Fix bug with unit system
Changing the unit system didn't also change the
base unit in the onboarding anymore. It needed
updated to use XState the same way as `/settings`
Signed-off-by: Frank Noirot <frank@kittycad.io>
* Fix AppHeader item spacing when there's no toolbar
---------
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
* Remove scroll handling, honor zoom on drag + ctrl
* Add back ability to zoom with mouse wheel, but properly
* Add TODO for 'any' removal
* Update kittycad lib to remove 'any'
* Light mode style fixes
* Fix dismissing onboarding for nested routes
* Refactor: move export button to user side panel
* Refactor: add project data to modeling page loader
* Add new ProjectSidebarMenu
* Convert AppHeader to use ProjectSidebarMenu
* Move ExportButton to ProjectSidebarMenu
* Fix: hide default dir setting in Web
* Add DownloadAppBanner when in Prod
* Add unit tests to ProjectSidebarMenu
* Tiny CSS rounding tweak to sidebars
* Fix formatting in unit tests
* Update icons and logos to use full-color Kitt
* Fix: dim UI on camera drag, not click
* Bugfix: don't toast on every change of defaultDir
* Refactor app to live under /file/:id
* Stub out Tauri-only home page
* home reads and writes blank files to defaultDir
* Fix initial directory creation
* Make file names editable
* Refactor onboarding to use normal fns for load issues
* Feature: load and write files to and from disk
* Feature: Add file deletion, break out FileCard component
* Fix settings close URLs to be relative, button types
* Add filename and link to AppHeader
* Style tweaks: scrollbar, header name, card size
* Style: add header, empty state to Home
* Refactor: load file in route loader
* Move makePathRelative to lib to fix tests
* Fix App test
* Use '$nnn' default name scheme
* Fix type error on ActionButton
* Fix type error on ActionButton
* @adamchalmers review
* Fix merge mistake
* Refactor: rename all things "file" to "project"
* Feature: migrate to <project-name>/main.kcl setup
* Fix tsc test
* @Irev-Dev review part 1: renames and imports
* @Irev-Dev review pt 2: simplify file list refresh
* @Irev-Dev review pt 3: filter out non-projects
* @Irev-review pt 4: folder conventions + home auth
* Add sort functionality to new welcome page (#255)
* Add todo for Sentry
* Feature: settings auto-save as they are updated
* Refactor: get rid of temporary settings states
* Feature: add escape hotkey to settings
* Style: layout tweaks
* Feature: setting unit system updates base unit too
Right now, if the executor throws a KCLError (e.g. for "variable name is not defined" errors), they aren't being caught by the .catch or the try/catch block in asyncWrap. This PR fixes it.
Co-authored-by: Kurt Hutten Irev-Dev <k.hutten@protonmail.ch>
* working without clean up
* clean up dependencies
* use test not dev
* add tests for kclErrToDiagnostic
* remove jest config
* remove unneeded @ts-ignore
* Basic transparent pane styling
* HTML and static asset cleanup
* Convert to collapsibles
* Polish up DebugPanel
* Add hotkey support, remove allotment
* Remove allotment css dependency
* Merge in from main
* Add a different resizable package
* Fix tsc errors introduced by merge
* Stream has to have at least z-index of 0
* App header has to be above stream z-index
* Applied z-index to the wrong element
* Scrollable logs, disable UI while dragging
* Fix test errors from importing CSS Modules in Jest
* Persist open panes configuration
* Style tweaks and fix camera step in onboarding
* Kurt review, make click-drag handler declarative
* Add passive dark mode to everything but codemirror
* Add dark theme support for Codemirror
* Make theme a user setting
* Fix button text size
* guard against undefined window
* Formatting and test fix
Currently, syntax/semantic errors in the user's source code result in vanilla JS exceptions being thrown, so they show up in the console. Instead, this PR:
- Adds a new type KCLError
- KCL syntax/semantic errors when parsing/executing the source code now throw KCLErrors instead of vanilla JS exceptions.
- KCL errors are caught and logged to a new "Errors" panel, instead of the browser console.
* Basic CRA to Vite conversion
* Restore ESLint support
* Remove semicolons from vite config
* Add vite client types to tsconfig
* Migrate to Vitest for testing (not working on Mac)
* some test progress (#175)
* some test progress
* something maybe working
* remove local lib
* small clean up
* tweaks
* fix dependency
* clean up deps
* remove vitest import
* vitest config is needed even though we're not using vitest
* more tweaks to vite config
---------
Co-authored-by: Kurt Hutten <k.hutten@protonmail.ch>
* Add theme colors from Figma
* Rough-in of AppHeader
* Add styled ActionButton
* Add react-router and placeholder Settings page
* Add ability to set persistent defaultDir
* Add react-hot-toast for save success message
* Add defaultProjectName setting
* Handle case of stale empty defaultDir in storage
* Wrap app in BrowserRouter
* Wrap test App in BrowserRouter
* Don't need BrowserRouter outside of testing
because we use RouterProvider
* Intital async of executor
The execture now sends websocket message instead of calling functions
directly from the engine, When it does so it holds onto the id.
The engine is still returning geo/polys directly but I'm working make it
so that the UI doesn't need to know about that, so that we can switch
over the streaming ui.
Things left to do:
- it is still making both direct function calls and websockets, and the former should be removed.
- It does highlighting of segments and sourceRanges not through websockets and that needs to be fixed.
- Tests have not been adjusted for these changes.
- Selecting the head of a segment is not working correctly again yet.
* Rough engine prep changes (#135)
* rough changes for engine prep
* mouse movements working again
* connect to engine for startsketch, line, close and extrude
* button style tweak
* Remove duplication constraint ast transforms
* giveSketchFnCallTag to return if line already had a tag
* remove duplication
* update tag name to referenceSegName
* Update transform shape to return key details about the transform
* add modal to hor vert distance workflow
* fix browser env stuff from breaking tests
* fmt
* add segLen help to lang std
* adding helpers functions to sketchConstraints
* update tokeniser tests because they were annoying me not being 100%
* compare async lexer with sync lexer instead
* add helper functions
* remove unneeded nesting
* update add ast modifier function for angledLine
* initial equal ast modification
It adds a tag to the primary line, and converts any secondary lines to angledLine, but doesn't reference the taged/primary line yet
* Update fn call with refernce to previous line using segLen
* add test for giveSketchFnCallTag
* fix excutor bug, executing call expression in array expression
* fix small issue in executor
* add CallExpressions to BinaryExpressions
* add unary Expressions
* tweaks to unaryExpression logic
* add recasting for unaryExpressions and CallExpressions in BinaryExpressions
* ensure pipe substitution info is passed down to unary expressions and others
* allow binary expressions in function argumentns
* inital setup, new way of organising sketch fn transforms
Starting with equal length
* overhaul equalLength button
* add equal length support for angledLine
* line with one variable supports signed legLength
* fix indentation when recasting long arrayExpressions in a pipeExpression
* improve modifyAst consision
* further modify ast tidy
* equalLength transfroms far angledLineOfXLength
* add transforms for line-yRelative
* add equal constraint for angledLineOfYLength
* quick test fix
* add equal length constrain transforms for lineTo
* add equal length constraints for angledLineToX
* add equalLength constraints for angledLineToY
* test tidy
* setup new vertical-horizontal constraints
* Add equal Length constraints for vertical/horizontal lines
* migrate old tests, and refactor callback tag
* tweaks and refactor horzVert component
* fix leg len with small negative leg length
* update execution of callExpressions
* tweak types to store multiple cursor ranges and hook up with artifact highlighting
* multi-cursor from 3d scene
Working but has to be capslock for the time being
* tweak pannel headers
* add issue to todo comment
* functional sketch working
With old sketch block still there
* get all version of lines working with add line and update line
* remove old ui state types
* some clean up
* rename some things
* add todo for multi cursor
* shorten useStore repitition
* small type improvement
* big overhaul to group sketch function and they ast modifying helpers together
* unneeded tweak
* ruthlessly rip out sketch logic
* clean up path keyword
* getting sketch on face working again with all the new sketch line types
* add a bunch of tests and re-arrage file structure