* Fix up message structure to match the new Engine messages
The types are still jacked up, I reckon we need to bump the node
@KittyCAD dep.
Signed-off-by: Paul Tagliamonte <paul@kittycad.io>
* update types
* fmt
* export tsc
* fmt again
---------
Signed-off-by: Paul Tagliamonte <paul@kittycad.io>
Co-authored-by: Kurt Hutten Irev-Dev <k.hutten@protonmail.ch>
In the future, this should be sent as telemetry, but at least this would
give us a bit of info about the latency sitatuion locally if we start
seeing the refresh happen a lot.
Signed-off-by: Paul Tagliamonte <paul@kittycad.io>
Because we gate a lot of things off this.foo?, leaving the closed
websocket/pc/etc in-place was causing a noisy log, and mucking with
reestablishing a broken connection.
While I was in here, I fixed a style nit from yarn.
Signed-off-by: Paul R. Tagliamonte <paul@kittycad.io>
* Build out EngineConnection's retry and timeout logic
* Migrate the EngineConnection to be an EventTarget for other parts of the
code (mostly the EngineManager, but maybe others?) to listen to, rather
than having a boolean 'done' promise, and remove callbacks in favor of
the eventListeners.
* When a WebRTC connection is online, send a 'ping' command every 10 seconds.
The UDP stream likely needs something similar, but the connection is
maintained by the WebRTC video stream for now.
* Begin to migrate code to use a more generic object "send" helper
which can handle the JSON encoding, as well as connection retry logic
in the future.
* Add a watchdog to trigger 5 seconds after a connection is initiated
to cancel and retry the connection if it's not become ready by the
time it wakes up. This won't watch an established connection yet.
Signed-off-by: Paul R. Tagliamonte <paul@kittycad.io>
* 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'
* Start to add things to updater section
* Fix public key
* Fix conf.json
* Add secrets
* Add localhost updater endpoint
* Revert "Add localhost updater endpoint"
This reverts commit e9e08868aa.
* Add localhost updater endpoint
* Bump to 0.0.4
* Back to current v0.0.3 with localhost updater
* Bump to 0.0.4 for testing purpose
* Back to 0.0.3 and ngrok https endpoint
* Bump to fake 0.0.4
* revert 19761baba6 and back to 0.0.3
* Revert "revert 19761baba6 and back to 0.0.3"
This reverts commit 763cc1ee47.
* Back to 0.0.3, new releases endpoint
* Add template static json endpoint
* Add Google Cloud actions
* Test multi-job single-workflow CI for build, test, release
* Clean up
* Reorg to comply with non-persistence
* Reshuffle to speed things up
* Clean up
* Missing node sync in build-test-web
* Further download test
* Clean up
* Test simpler name, add TODOs, preparing endpoint.json
* Draft static endpoint generation
* Fix a few things on endpoint.json
* Test google cloud upload
* Replace non-existing version with temporary
* Try to have working test upload to bucket
* Fixes, version output, first attemp at test release and endpoint upload
* Fix jq
* Try to fix json
* Fix typo
* Fix attempt
* Trying to fix the version issue
* Add back test release upload to bucket
* WIP
* parent: false
* One upload per release
* WIP
* Test bump to 0.0.4
* Back to 0.0.3 with test endpoint URL
* Bump to 0.0.4 for testing purpose
* Remove test/ dir, put back release check
* Back to 0.0.3
* Clean up
The front-end and the back-end communicate with three channels. The
first is the WebSocket connection to the Engine API. Once that
connection is online, a WebRTC connection is negotiated, which contains
one video stream from the server to us for the GUI, and a second, which
is a binary data channel from us to the server, which we send JSON over
for real-time events like mouse positioning.
The lifecycle of the WebRTC connection and the WebSocket connection are
tied, since if the WebSocket connection breaks down, the WebRTC
connection must get restarted (to get a connection to the *same* backend
that we have an open WebSocket connection to).
This starts a move to split the WebRTC and WebSocket pair to be managed
by a new class (EngineConnection), which will only start and maintain
the WebSocket and WebRTC channels. Anything using the EngineConnection
will be able to communnicate commands without needing to add control
logic for the underlying data channels.
Signed-off-by: Paul R. Tagliamonte <paul@kittycad.io>
* 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
* WIP: Add release process
Test version change in tauri.conf.json
* Add bump-jsons script
* Trigger build on release and upload artifacts there (untested)
* Test
* Revert "Test"
This reverts commit 3c0c2ae39c.
* Bump to 0.0.3
* Update README
* WIP Build jobs
* Remove 'add missing import'
* Add yarn build:wasm
* Clean up
* Trying larger runner for ubuntu
* --verbose
* Back to docs
* WIP
* upload artifacts
* WIP Windows
* WIP Windows
* WIP Windows
* WIP Windows
* WIP Windows
* Clean up
* Clean up diff
* Better upload artifact
* Clean up, upload artifacts v3
* Add sed commands back
* Add fmt back
* Add name
* Clean up
* Better name
* Update .github/workflows/build.yml
---------
Co-authored-by: Kurt Hutten <k.hutten@protonmail.ch>
* Make /settings not throw away App component
* Make App not reload for Onboarding
* Close sidebar when navigating to /settings
* Use centralized constants for route pathnames
* Clean up a few stray raw path literals
* 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