* Redo how Spans are used from the Engine
I don't like all the Sentry-specific stuff we've got to work around, and
I want to add a bunch more spans and more cleanly end the transaction.
This isn't generic enough to pull out of this code (yet?), but we
clearly need some class of abstraction due to the highly async pattern
in the WebRTC code.
I want to add in more tags, but there are a lot of events we need to
wait on. I'd like to hook into the <video> 'play' eventListener, but
it's hard to do from all the way down in the Engine.
Signed-off-by: Paul R. Tagliamonte <paul@kittycad.io>
* 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 basic Popover functionality
* Fix up light mode of basic bar
* Add support for 2D and 3D mode styling
* Turn toolbar buttons back on
* Remove ActionButton until after tool logic refactor
* Add transitions
* Add styles to always center toolbar in header
* 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>
* Start to clean up Sentry now that the app is back up again.
Remove Sentry from local development I thought .env.development
was for dev.kc.io, not just local dev. Someone can add this to .local
if they need to test the Sentry stuff for now.
Signed-off-by: Paul Tagliamonte <paul@kittycad.io>
Collect WebRTC Statistical Information
Add in some instrumentation to track the duration of the setup phase,
and set up a job to make periodic use of the WebRTC Statistics API
to collect information about the connection (specifically, each track),
including transport-level information, timing information and bandwidth
information.
Sentry isn't the best place for that information, but it'll work until we
can work out a good long-term solution for it.
Signed-off-by: Paul Tagliamonte <paul@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
* 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