diff --git a/e2e/playwright/can-create-sketches-on-all-planes-and-their-back-sides.spec.ts b/e2e/playwright/can-create-sketches-on-all-planes-and-their-back-sides.spec.ts index a518ce6ad..9e2fee320 100644 --- a/e2e/playwright/can-create-sketches-on-all-planes-and-their-back-sides.spec.ts +++ b/e2e/playwright/can-create-sketches-on-all-planes-and-their-back-sides.spec.ts @@ -4,6 +4,7 @@ import { uuidv4 } from '@src/lib/utils' import type { HomePageFixture } from '@e2e/playwright/fixtures/homePageFixture' import type { SceneFixture } from '@e2e/playwright/fixtures/sceneFixture' +import type { ToolbarFixture } from '@e2e/playwright/fixtures/toolbarFixture' import { getUtils } from '@e2e/playwright/test-utils' import { expect, test } from '@e2e/playwright/zoo-test' diff --git a/e2e/playwright/point-click.spec.ts b/e2e/playwright/point-click.spec.ts index ec4aeead3..f0d01efd0 100644 --- a/e2e/playwright/point-click.spec.ts +++ b/e2e/playwright/point-click.spec.ts @@ -5,7 +5,7 @@ import path from 'node:path' import type { EditorFixture } from '@e2e/playwright/fixtures/editorFixture' import type { SceneFixture } from '@e2e/playwright/fixtures/sceneFixture' import type { ToolbarFixture } from '@e2e/playwright/fixtures/toolbarFixture' -import { getUtils, orRunWhenFullSuiteEnabled } from '@e2e/playwright/test-utils' +import { orRunWhenFullSuiteEnabled } from '@e2e/playwright/test-utils' import { expect, test } from '@e2e/playwright/zoo-test' // test file is for testing point an click code gen functionality that's not sketch mode related diff --git a/e2e/playwright/test-utils.ts b/e2e/playwright/test-utils.ts index 49daaca3e..3396e38b1 100644 --- a/e2e/playwright/test-utils.ts +++ b/e2e/playwright/test-utils.ts @@ -910,7 +910,6 @@ export async function setup( theme: 'dark', }, ...TEST_SETTINGS.project, - project_directory: testDir, onboarding_status: 'dismissed', }, project: { diff --git a/src/App.tsx b/src/App.tsx index 57ebfca2e..7c86dd8d6 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -6,6 +6,7 @@ import { useLoaderData, useNavigate, useRouteLoaderData, + useSearchParams, } from 'react-router-dom' import { AppHeader } from '@src/components/AppHeader' @@ -15,7 +16,6 @@ import Gizmo from '@src/components/Gizmo' import { LowerRightControls } from '@src/components/LowerRightControls' import { useLspContext } from '@src/components/LspProvider' import { ModelingSidebar } from '@src/components/ModelingSidebar/ModelingSidebar' -import { Stream } from '@src/components/Stream' import { UnitsMenu } from '@src/components/UnitsMenu' import { useAbsoluteFilePath } from '@src/hooks/useAbsoluteFilePath' import { useCreateFileLinkQuery } from '@src/hooks/useCreateFileLinkQueryWatcher' @@ -34,14 +34,15 @@ import { } from '@src/lib/singletons' import { maybeWriteToDisk } from '@src/lib/telemetry' import { type IndexLoaderData } from '@src/lib/types' -import { useSettings, useToken } from '@src/machines/appMachine' +import { engineStreamActor, useSettings, useToken } from '@src/machines/appMachine' +import { EngineStreamTransition } from '@src/machines/engineStreamMachine' import { commandBarActor } from '@src/machines/commandBarMachine' import { onboardingPaths } from '@src/routes/Onboarding/paths' maybeWriteToDisk() .then(() => {}) .catch(() => {}) -import { EngineStream } from 'components/EngineStream' +import { EngineStream } from '@src/components/EngineStream' export function App() { const { project, file } = useLoaderData() as IndexLoaderData diff --git a/src/Toolbar.tsx b/src/Toolbar.tsx index e795f4933..4dc0e82ff 100644 --- a/src/Toolbar.tsx +++ b/src/Toolbar.tsx @@ -12,6 +12,7 @@ import { NetworkHealthState } from '@src/hooks/useNetworkStatus' import { useKclContext } from '@src/lang/KclProvider' import { isCursorInFunctionDefinition } from '@src/lang/queryAst' import { isCursorInSketchCommandRange } from '@src/lang/util' +import { EngineConnectionStateType } from '@src/lang/std/engineConnection' import { isDesktop } from '@src/lib/isDesktop' import { openExternalBrowserIfDesktop } from '@src/lib/openWindow' import { editorManager, kclManager } from '@src/lib/singletons' @@ -25,6 +26,7 @@ import { toolbarConfig } from '@src/lib/toolbar' import { isArray } from '@src/lib/utils' import { commandBarActor } from '@src/machines/commandBarMachine' + export function Toolbar({ className = '', ...props diff --git a/src/clientSideScene/CameraControls.ts b/src/clientSideScene/CameraControls.ts index c8efe0ead..a7a500c61 100644 --- a/src/clientSideScene/CameraControls.ts +++ b/src/clientSideScene/CameraControls.ts @@ -1,4 +1,4 @@ -import type { CameraDragInteractionType_type } from '@kittycad/lib/dist/types/src/models' +import type { CameraViewState_type, CameraDragInteractionType_type } from '@kittycad/lib/dist/types/src/models' import * as TWEEN from '@tweenjs/tween.js' import { Euler, @@ -39,6 +39,7 @@ import { uuidv4, } from '@src/lib/utils' import { deg2Rad } from '@src/lib/utils2d' +import { engineStreamActor } from '@src/machines/appMachine' const ORTHOGRAPHIC_CAMERA_SIZE = 20 const FRAMES_TO_ANIMATE_IN = 30 diff --git a/src/components/CommandBar/CommandBar.tsx b/src/components/CommandBar/CommandBar.tsx index d347f8e61..6dcc25011 100644 --- a/src/components/CommandBar/CommandBar.tsx +++ b/src/components/CommandBar/CommandBar.tsx @@ -12,6 +12,8 @@ import { commandBarActor, useCommandBarState, } from '@src/machines/commandBarMachine' +import { EngineConnectionStateType } from '@src/lang/std/engineConnection' +import { useNetworkContext } from '@src/hooks/useNetworkContext' export const COMMAND_PALETTE_HOTKEY = 'mod+k' diff --git a/src/components/EngineStream.tsx b/src/components/EngineStream.tsx index f4ec100a2..81bcc6e13 100644 --- a/src/components/EngineStream.tsx +++ b/src/components/EngineStream.tsx @@ -1,27 +1,29 @@ -import { MouseEventHandler, useEffect, useRef } from 'react' -import { useAppState } from 'AppState' -import { useModelingContext } from 'hooks/useModelingContext' -import { useNetworkContext } from 'hooks/useNetworkContext' -import { NetworkHealthState } from 'hooks/useNetworkStatus' -import { ClientSideScene } from 'clientSideScene/ClientSideSceneComp' -import { btnName } from 'lib/cameraControls' -import { sendSelectEventToEngine } from 'lib/selections' -import { kclManager, engineCommandManager, sceneInfra } from 'lib/singletons' -import { EngineCommandManagerEvents } from 'lang/std/engineConnection' -import { useRouteLoaderData } from 'react-router-dom' -import { PATHS } from 'lib/paths' -import { IndexLoaderData } from 'lib/types' -import { err, reportRejection, trap } from 'lib/trap' -import { getArtifactOfTypes } from 'lang/std/artifactGraph' -import { ViewControlContextMenu } from './ViewControlMenu' -import { useSettings, engineStreamActor } from 'machines/appMachine' -import { useCommandBarState } from 'machines/commandBarMachine' +import { useAppState } from '@src/AppState' +import { useModelingContext } from '@src/hooks/useModelingContext' +import { useNetworkContext } from '@src/hooks/useNetworkContext' +import { NetworkHealthState } from '@src/hooks/useNetworkStatus' +import { ClientSideScene } from '@src/clientSideScene/ClientSideSceneComp' +import { btnName } from '@src/lib/cameraControls' +import { sendSelectEventToEngine } from '@src/lib/selections' +import { kclManager, engineCommandManager, sceneInfra } from '@src/lib/singletons' +import { EngineCommandManagerEvents } from '@src/lang/std/engineConnection' +import { PATHS } from '@src/lib/paths' +import type { IndexLoaderData } from '@src/lib/types' +import { err, reportRejection, trap } from '@src/lib/trap' +import { getArtifactOfTypes } from '@src/lang/std/artifactGraph' +import { ViewControlContextMenu } from '@src/components/ViewControlMenu' +import { useSettings, engineStreamActor } from '@src/machines/appMachine' +import { useCommandBarState } from '@src/machines/commandBarMachine' import { EngineStreamState, EngineStreamTransition, -} from 'machines/engineStreamMachine' +} from '@src/machines/engineStreamMachine' +import { REASONABLE_TIME_TO_REFRESH_STREAM_SIZE } from '@src/lib/timings' + import { useSelector } from '@xstate/react' -import { REASONABLE_TIME_TO_REFRESH_STREAM_SIZE } from 'lib/timings' +import { useRouteLoaderData } from 'react-router-dom' +import { useEffect, useRef } from 'react' +import type { MouseEventHandler } from 'react' export const EngineStream = (props: { pool: string | null diff --git a/src/components/ModelStateIndicator.tsx b/src/components/ModelStateIndicator.tsx index d0a7725ab..0d7d77571 100644 --- a/src/components/ModelStateIndicator.tsx +++ b/src/components/ModelStateIndicator.tsx @@ -1,6 +1,6 @@ -import { CustomIcon } from '@src/components/CustomIcon' -import { useEngineCommands } from '@src/components/EngineCommands' -import { Spinner } from '@src/components/Spinner' +import { EngineStreamState } from '@src/machines/engineStreamMachine' +import { engineStreamActor } from '@src/machines/appMachine' +import { useSelector } from '@xstate/react' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { faPlay, faPause, faSpinner } from '@fortawesome/free-solid-svg-icons' diff --git a/src/components/ModelingMachineProvider.tsx b/src/components/ModelingMachineProvider.tsx index 9a67cf03d..e573e7362 100644 --- a/src/components/ModelingMachineProvider.tsx +++ b/src/components/ModelingMachineProvider.tsx @@ -8,7 +8,7 @@ import React, { } from 'react' import toast from 'react-hot-toast' import { useHotkeys } from 'react-hotkeys-hook' -import { useLoaderData, useNavigate, useSearchParams } from 'react-router-dom' +import { useLoaderData, useNavigate } from 'react-router-dom' import type { Actor, ContextFrom, Prop, SnapshotFrom, StateFrom } from 'xstate' import { assign, fromPromise } from 'xstate' @@ -45,7 +45,6 @@ import { useSketchModeMenuEnableDisable, } from '@src/hooks/useMenu' import { useNetworkContext } from '@src/hooks/useNetworkContext' -import { useSetupEngineManager } from '@src/hooks/useSetupEngineManager' import useStateMachineCommands from '@src/hooks/useStateMachineCommands' import { useKclContext } from '@src/lang/KclProvider' import { updateModelingState } from '@src/lang/modelingWorkflows' diff --git a/src/lang/KclSingleton.ts b/src/lang/KclSingleton.ts index 28a299da8..5b4762ef1 100644 --- a/src/lang/KclSingleton.ts +++ b/src/lang/KclSingleton.ts @@ -16,6 +16,7 @@ import { import { executeAst, executeAstMock, lintAst } from '@src/lang/langHelpers' import { getNodeFromPath, getSettingsAnnotation } from '@src/lang/queryAst' import type { EngineCommandManager } from '@src/lang/std/engineConnection' +import { CommandLogType } from '@src/lang/std/engineConnection' import { topLevelRange } from '@src/lang/util' import type { ArtifactGraph, diff --git a/src/lib/selections.ts b/src/lib/selections.ts index 163274e5e..1ce2c667f 100644 --- a/src/lib/selections.ts +++ b/src/lib/selections.ts @@ -44,6 +44,7 @@ import { uuidv4, } from '@src/lib/utils' import type { ModelingMachineEvent } from '@src/machines/modelingMachine' +import { engineStreamActor } from '@src/machines/appMachine' export const X_AXIS_UUID = 'ad792545-7fd3-482a-a602-a93924e3055b' export const Y_AXIS_UUID = '680fd157-266f-4b8a-984f-cdf46b8bdf01' diff --git a/src/lib/settings/initialSettings.tsx b/src/lib/settings/initialSettings.tsx index fd7a4f7a7..b816a98dd 100644 --- a/src/lib/settings/initialSettings.tsx +++ b/src/lib/settings/initialSettings.tsx @@ -1,4 +1,4 @@ -import { useRef } from 'react' +import { useRef, useState } from 'react' import type { CameraOrbitType } from '@rust/kcl-lib/bindings/CameraOrbitType' import type { CameraProjectionType } from '@rust/kcl-lib/bindings/CameraProjectionType' @@ -6,6 +6,7 @@ import type { NamedView } from '@rust/kcl-lib/bindings/NamedView' import type { OnboardingStatus } from '@rust/kcl-lib/bindings/OnboardingStatus' import { CustomIcon } from '@src/components/CustomIcon' +import { Toggle } from '@src/components/Toggle/Toggle' import Tooltip from '@src/components/Tooltip' import type { CameraSystem } from '@src/lib/cameraControls' import { cameraMouseDragGuards, cameraSystems } from '@src/lib/cameraControls' @@ -264,7 +265,7 @@ export function createSettings() { offLabel="Off" onLabel="On" checked={settingValueInStorage !== undefined} - onChange={(event) => { + onChange={(event: React.SyntheticEvent) => { if (timeoutId) { return } diff --git a/src/lib/settings/settingsUtils.test.ts b/src/lib/settings/settingsUtils.test.ts index a6c31ed51..586e25acc 100644 --- a/src/lib/settings/settingsUtils.test.ts +++ b/src/lib/settings/settingsUtils.test.ts @@ -1,3 +1,4 @@ +import type { ProjectConfiguration } from '@rust/kcl-lib/bindings/ProjectConfiguration' import type { Configuration } from '@rust/kcl-lib/bindings/Configuration' import { createSettings } from '@src/lib/settings/initialSettings' diff --git a/src/machines/appMachine.ts b/src/machines/appMachine.ts index 2178b3d03..b1d072849 100644 --- a/src/machines/appMachine.ts +++ b/src/machines/appMachine.ts @@ -5,6 +5,7 @@ import { createSettings } from '@src/lib/settings/initialSettings' import { authMachine } from '@src/machines/authMachine' import { ACTOR_IDS } from '@src/machines/machineConstants' import { settingsMachine } from '@src/machines/settingsMachine' +import { engineStreamContextCreate, engineStreamMachine } from '@src/machines/engineStreamMachine' const { AUTH, SETTINGS, ENGINE_STREAM } = ACTOR_IDS const appMachineActors = { diff --git a/src/machines/engineStreamMachine.ts b/src/machines/engineStreamMachine.ts index 310d734bf..6e4b5c223 100644 --- a/src/machines/engineStreamMachine.ts +++ b/src/machines/engineStreamMachine.ts @@ -1,12 +1,12 @@ -import { jsAppSettings } from 'lang/wasm' -import { MutableRefObject } from 'react' +import { jsAppSettings } from '@src/lib/settings/settingsUtils' +import type { MutableRefObject } from 'react' import { setup, assign, fromPromise } from 'xstate' import { rustContext, kclManager, sceneInfra, engineCommandManager, -} from 'lib/singletons' +} from '@src/lib/singletons' export enum EngineStreamState { Off = 'off', @@ -192,7 +192,7 @@ export const engineStreamMachine = setup({ window.requestAnimationFrame(() => { engineCommandManager.start({ setMediaStream: event.onMediaStream, - setIsStreamReady: (isStreamReady) => { + setIsStreamReady: (isStreamReady: boolean) => { event.setAppState({ isStreamReady }) }, width,