From 77dd459b2ec30e8254d32f07c9da8b2216bfb208 Mon Sep 17 00:00:00 2001 From: Samuel K Date: Fri, 15 May 2026 09:55:41 -0500 Subject: [PATCH 01/10] feat(desktop): replace Tauri with Electron desktop app Complete Electron desktop app with Svelte 5 frontend, replacing the previous Tauri + React implementation. - Add Electron app with electron-vite build system, node-pty terminal, and xterm.js, using Svelte 5 with Tailwind CSS and bits-ui - Replace all Tauri references across release.yml, act.yml, pr-ci.yml, Taskfile.yml, and CONTRIBUTING.md for Electron builds - Add desktop-ci.yml for PR-level desktop testing across Linux, macOS, and Windows with electron-builder packaging and Playwright e2e tests - Update flatpak manifests to use Electron BaseApp and .deb extraction - Remove Rust toolchain, Tauri signing keys, yarn, and webkit deps from all CI workflows --- .github/workflows/act.yml | 135 +- .github/workflows/desktop-ci.yml | 205 + .github/workflows/lint.yml | 4 +- .github/workflows/pr-ci.yml | 224 +- .github/workflows/release.yml | 254 +- .gitignore | 5 +- CONTRIBUTING.md | 58 +- Taskfile.yml | 76 +- biome.json | 31 +- cmd/agent/workspace/docker_darwin_test.go | 73 + cmd/agent/workspace/up.go | 28 + desktop/.gitignore | 34 +- desktop/.npmrc | 1 - desktop/.nvmrc | 1 + desktop/.prettierignore | 4 - desktop/.prettierrc | 9 - desktop/.vscode/extensions.json | 3 - desktop/README.md | 73 - desktop/build/entitlements.mac.plist | 16 + desktop/devpod.png | Bin 234515 -> 0 bytes desktop/e2e/app.e2e.ts | 57 + desktop/e2e/contexts.e2e.ts | 69 + desktop/e2e/electron-app.ts | 48 + desktop/e2e/fixtures/mock-devpod | 4 + desktop/e2e/fixtures/mock-devpod.cjs | 403 + desktop/e2e/integration.e2e.ts | 411 + desktop/e2e/navigation.e2e.ts | 67 + desktop/e2e/providers.e2e.ts | 84 + desktop/e2e/workspaces.e2e.ts | 103 + desktop/electron-builder.yml | 88 + desktop/electron.vite.config.ts | 48 + desktop/eslint.config.js | 121 - desktop/flatpak/Devsy.desktop | 12 +- desktop/flatpak/Devsy.metainfo.xml | 53 - desktop/flatpak/dev.devsy.app.yml | 46 + desktop/flatpak/devsy-wrapper | 77 +- desktop/flatpak/sh.devsy.devsy.yml | 54 - desktop/index.html | 14 - desktop/package-lock.json | 9278 +++++++++++++++++ desktop/package.json | 133 +- desktop/playwright.config.ts | 13 + desktop/public/tauri.svg | 6 - desktop/public/vite.svg | 1 - desktop/{src-tauri => resources}/bin/.gitkeep | 0 desktop/resources/box-icon-app.svg | 8 + desktop/resources/icon.icns | Bin 0 -> 61491 bytes desktop/resources/icon.ico | Bin 0 -> 370070 bytes desktop/resources/icon.png | Bin 0 -> 33086 bytes desktop/resources/icons/128x128.png | Bin 0 -> 3677 bytes desktop/resources/icons/32x32.png | Bin 0 -> 1009 bytes desktop/resources/tray/icon-tray-dark.png | Bin 0 -> 361 bytes desktop/resources/tray/icon-tray-dark@2x.png | Bin 0 -> 645 bytes desktop/resources/tray/icon-tray-light.png | Bin 0 -> 332 bytes desktop/resources/tray/icon-tray-light@2x.png | Bin 0 -> 606 bytes desktop/resources/tray/icon-trayTemplate.png | Bin 0 -> 332 bytes .../resources/tray/icon-trayTemplate@2x.png | Bin 0 -> 606 bytes desktop/src-tauri/.gitignore | 4 - desktop/src-tauri/Cargo.lock | 7616 -------------- desktop/src-tauri/Cargo.toml | 102 - desktop/src-tauri/Info.plist | 21 - desktop/src-tauri/build.rs | 3 - desktop/src-tauri/capabilities/migrated.json | 94 - desktop/src-tauri/capabilities/updater.json | 16 - desktop/src-tauri/dmg-background.png | Bin 15288 -> 0 bytes desktop/src-tauri/entitlements.plist | 16 - desktop/src-tauri/icons/128x128.png | Bin 7995 -> 0 bytes desktop/src-tauri/icons/128x128@2x.png | Bin 20486 -> 0 bytes desktop/src-tauri/icons/32x32.png | Bin 1767 -> 0 bytes desktop/src-tauri/icons/Square107x107Logo.png | Bin 6404 -> 0 bytes desktop/src-tauri/icons/Square142x142Logo.png | Bin 9077 -> 0 bytes desktop/src-tauri/icons/Square150x150Logo.png | Bin 9853 -> 0 bytes desktop/src-tauri/icons/Square284x284Logo.png | Bin 23892 -> 0 bytes desktop/src-tauri/icons/Square30x30Logo.png | Bin 1677 -> 0 bytes desktop/src-tauri/icons/Square310x310Logo.png | Bin 31182 -> 0 bytes desktop/src-tauri/icons/Square44x44Logo.png | Bin 2396 -> 0 bytes desktop/src-tauri/icons/Square71x71Logo.png | Bin 4253 -> 0 bytes desktop/src-tauri/icons/Square89x89Logo.png | Bin 5372 -> 0 bytes desktop/src-tauri/icons/StoreLogo.png | Bin 2973 -> 0 bytes .../icons/android/mipmap-hdpi/ic_launcher.png | Bin 2884 -> 0 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 10962 -> 0 bytes .../android/mipmap-hdpi/ic_launcher_round.png | Bin 2884 -> 0 bytes .../icons/android/mipmap-mdpi/ic_launcher.png | Bin 2819 -> 0 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 6628 -> 0 bytes .../android/mipmap-mdpi/ic_launcher_round.png | Bin 2819 -> 0 bytes .../android/mipmap-xhdpi/ic_launcher.png | Bin 5810 -> 0 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 15719 -> 0 bytes .../mipmap-xhdpi/ic_launcher_round.png | Bin 5810 -> 0 bytes .../android/mipmap-xxhdpi/ic_launcher.png | Bin 9076 -> 0 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 29736 -> 0 bytes .../mipmap-xxhdpi/ic_launcher_round.png | Bin 9076 -> 0 bytes .../android/mipmap-xxxhdpi/ic_launcher.png | Bin 13283 -> 0 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 49975 -> 0 bytes .../mipmap-xxxhdpi/ic_launcher_round.png | Bin 13283 -> 0 bytes desktop/src-tauri/icons/icon.icns | Bin 427093 -> 0 bytes desktop/src-tauri/icons/icon.ico | Bin 31743 -> 0 bytes desktop/src-tauri/icons/icon.png | Bin 68465 -> 0 bytes desktop/src-tauri/icons/icon_system_tray.png | Bin 1136 -> 0 bytes .../icons/icon_system_tray_color.png | Bin 1353 -> 0 bytes .../icons/icon_warning_system_tray.png | Bin 1586 -> 0 bytes .../icons/icon_warning_system_tray_color.png | Bin 2120 -> 0 bytes .../src-tauri/icons/ios/AppIcon-20x20@1x.png | Bin 921 -> 0 bytes .../icons/ios/AppIcon-20x20@2x-1.png | Bin 2178 -> 0 bytes .../src-tauri/icons/ios/AppIcon-20x20@2x.png | Bin 2178 -> 0 bytes .../src-tauri/icons/ios/AppIcon-20x20@3x.png | Bin 3224 -> 0 bytes .../src-tauri/icons/ios/AppIcon-29x29@1x.png | Bin 1526 -> 0 bytes .../icons/ios/AppIcon-29x29@2x-1.png | Bin 3126 -> 0 bytes .../src-tauri/icons/ios/AppIcon-29x29@2x.png | Bin 3126 -> 0 bytes .../src-tauri/icons/ios/AppIcon-29x29@3x.png | Bin 5010 -> 0 bytes .../src-tauri/icons/ios/AppIcon-40x40@1x.png | Bin 2178 -> 0 bytes .../icons/ios/AppIcon-40x40@2x-1.png | Bin 4455 -> 0 bytes .../src-tauri/icons/ios/AppIcon-40x40@2x.png | Bin 4455 -> 0 bytes .../src-tauri/icons/ios/AppIcon-40x40@3x.png | Bin 7062 -> 0 bytes .../src-tauri/icons/ios/AppIcon-512@2x.png | Bin 205902 -> 0 bytes .../src-tauri/icons/ios/AppIcon-60x60@2x.png | Bin 7062 -> 0 bytes .../src-tauri/icons/ios/AppIcon-60x60@3x.png | Bin 11719 -> 0 bytes .../src-tauri/icons/ios/AppIcon-76x76@1x.png | Bin 4229 -> 0 bytes .../src-tauri/icons/ios/AppIcon-76x76@2x.png | Bin 9397 -> 0 bytes .../icons/ios/AppIcon-83.5x83.5@2x.png | Bin 10895 -> 0 bytes desktop/src-tauri/icons/pending.png | Bin 999 -> 0 bytes desktop/src-tauri/icons/running.png | Bin 1083 -> 0 bytes desktop/src-tauri/icons/stopped.png | Bin 1054 -> 0 bytes desktop/src-tauri/sign.bat | 18 - desktop/src-tauri/src/action_logs.rs | 132 - desktop/src-tauri/src/commands.rs | 10 - desktop/src-tauri/src/commands/config.rs | 72 - desktop/src-tauri/src/commands/constants.rs | 19 - .../src/commands/delete_pro_instance.rs | 40 - .../src-tauri/src/commands/delete_provider.rs | 37 - .../src/commands/list_pro_instances.rs | 47 - .../src-tauri/src/commands/list_workspaces.rs | 46 - .../src-tauri/src/commands/start_daemon.rs | 55 - .../src-tauri/src/community_contributions.rs | 24 - desktop/src-tauri/src/custom_protocol.rs | 476 - desktop/src-tauri/src/daemon.rs | 56 - desktop/src-tauri/src/daemon/client.rs | 299 - desktop/src-tauri/src/file_exists.rs | 8 - desktop/src-tauri/src/fix_env.rs | 57 - desktop/src-tauri/src/get_env.rs | 4 - desktop/src-tauri/src/install_cli.rs | 320 - desktop/src-tauri/src/logging.rs | 26 - desktop/src-tauri/src/main.rs | 276 - desktop/src-tauri/src/providers.rs | 88 - desktop/src-tauri/src/resource_watcher.rs | 615 -- desktop/src-tauri/src/server.rs | 214 - desktop/src-tauri/src/settings.rs | 105 - desktop/src-tauri/src/system_tray.rs | 150 - desktop/src-tauri/src/ui_messages.rs | 285 - desktop/src-tauri/src/ui_ready.rs | 12 - desktop/src-tauri/src/updates.rs | 353 - desktop/src-tauri/src/util.rs | 154 - desktop/src-tauri/src/window.rs | 266 - desktop/src-tauri/tauri.conf.json | 68 - desktop/src-tauri/tauri.linux.conf.json | 15 - desktop/src-tauri/tauri.macos.conf.json | 26 - desktop/src-tauri/tauri.windows.conf.json | 16 - desktop/src/App/App.tsx | 86 - desktop/src/App/Changelog.tsx | 51 - desktop/src/App/OSSApp.tsx | 272 - desktop/src/App/ProApp.tsx | 303 - desktop/src/App/constants.ts | 5 - desktop/src/App/index.ts | 1 - desktop/src/App/useAppReady.tsx | 492 - desktop/src/App/useChangelogModal.tsx | 70 - desktop/src/App/usePreserveLocation.tsx | 37 - desktop/src/ProRoot.tsx | 5 - desktop/src/Theme/ThemeProvider.tsx | 41 - desktop/src/Theme/button.ts | 146 - desktop/src/Theme/card.ts | 18 - desktop/src/Theme/checkbox.ts | 18 - desktop/src/Theme/form.ts | 23 - desktop/src/Theme/index.ts | 2 - desktop/src/Theme/input.ts | 26 - desktop/src/Theme/menu.ts | 38 - desktop/src/Theme/modal.ts | 19 - desktop/src/Theme/popover.ts | 52 - desktop/src/Theme/radio.ts | 10 - desktop/src/Theme/select.ts | 46 - desktop/src/Theme/switch.ts | 20 - desktop/src/Theme/tabs.ts | 98 - desktop/src/Theme/tag.ts | 25 - desktop/src/Theme/text.ts | 12 - desktop/src/Theme/textarea.ts | 12 - desktop/src/Theme/theme.ts | 159 - desktop/src/Theme/themeHooks.tsx | 5 - desktop/src/assets/fonts.css | 15 - desktop/src/assets/fonts/AUTHORS.txt | 10 - .../src/assets/fonts/JetBrainsMono-Bold.woff2 | Bin 94588 -> 0 bytes .../fonts/JetBrainsMono-BoldItalic.woff2 | Bin 98152 -> 0 bytes .../fonts/JetBrainsMono-ExtraBold.woff2 | Bin 93692 -> 0 bytes .../fonts/JetBrainsMono-ExtraBoldItalic.woff2 | Bin 96864 -> 0 bytes .../fonts/JetBrainsMono-ExtraLight.woff2 | Bin 92712 -> 0 bytes .../JetBrainsMono-ExtraLightItalic.woff2 | Bin 95816 -> 0 bytes .../assets/fonts/JetBrainsMono-Italic.woff2 | Bin 95864 -> 0 bytes .../assets/fonts/JetBrainsMono-Light.woff2 | Bin 93856 -> 0 bytes .../fonts/JetBrainsMono-LightItalic.woff2 | Bin 97280 -> 0 bytes .../assets/fonts/JetBrainsMono-Medium.woff2 | Bin 93824 -> 0 bytes .../fonts/JetBrainsMono-MediumItalic.woff2 | Bin 97808 -> 0 bytes .../assets/fonts/JetBrainsMono-Regular.woff2 | Bin 92164 -> 0 bytes .../assets/fonts/JetBrainsMono-SemiBold.woff2 | Bin 94472 -> 0 bytes .../fonts/JetBrainsMono-SemiBoldItalic.woff2 | Bin 98124 -> 0 bytes .../src/assets/fonts/JetBrainsMono-Thin.woff2 | Bin 90612 -> 0 bytes .../fonts/JetBrainsMono-ThinItalic.woff2 | Bin 94316 -> 0 bytes desktop/src/assets/fonts/OFL.txt | 93 - desktop/src/client/client.ts | 421 - desktop/src/client/command.ts | 258 - desktop/src/client/commandCache.ts | 93 - desktop/src/client/constants.ts | 75 - desktop/src/client/context/client.ts | 20 - desktop/src/client/context/contextCommands.ts | 59 - desktop/src/client/context/index.ts | 1 - desktop/src/client/ides/client.ts | 20 - desktop/src/client/ides/ideCommands.ts | 56 - desktop/src/client/ides/index.ts | 1 - desktop/src/client/index.ts | 5 - desktop/src/client/pro/client.ts | 480 - desktop/src/client/pro/index.ts | 1 - desktop/src/client/pro/proCommands.ts | 307 - desktop/src/client/providers/client.ts | 128 - desktop/src/client/providers/index.ts | 1 - .../src/client/providers/providerCommands.ts | 266 - desktop/src/client/repo.ts | 21 - desktop/src/client/tauriClient/index.ts | 1 - desktop/src/client/types.ts | 7 - desktop/src/client/workspaces/client.ts | 310 - desktop/src/client/workspaces/index.ts | 1 - .../client/workspaces/workspaceCommands.ts | 229 - desktop/src/components/Animation/Ripple.tsx | 30 - desktop/src/components/Animation/index.ts | 1 - .../components/AutoComplete/AutoComplete.tsx | 159 - desktop/src/components/AutoComplete/index.ts | 1 - .../BottomActionBar/BottomActionBar.tsx | 167 - .../src/components/BottomActionBar/index.ts | 1 - .../CardHeader/WorkspaceCardHeader.tsx | 109 - desktop/src/components/CardHeader/index.ts | 1 - .../DeleteWorkspacesModal.tsx | 71 - .../components/DeleteWorkspacesModal/index.ts | 1 - desktop/src/components/DevsyOSSBadge.tsx | 17 - .../src/components/Error/ErrorMessageBox.tsx | 27 - desktop/src/components/Error/index.ts | 1 - desktop/src/components/ExampleCard.tsx | 128 - desktop/src/components/Form/Form.tsx | 27 - desktop/src/components/Form/index.ts | 1 - desktop/src/components/IDEGroup/IDEGroup.tsx | 93 - desktop/src/components/IDEGroup/index.ts | 1 - desktop/src/components/IDEIcon/IDEIcon.tsx | 151 - desktop/src/components/IDEIcon/index.ts | 1 - .../Layout/NavigationViewLayout.tsx | 30 - .../src/components/Layout/Notifications.tsx | 192 - desktop/src/components/Layout/ProLayout.tsx | 69 - desktop/src/components/Layout/ProSwitcher.tsx | 340 - desktop/src/components/Layout/Sidebar.tsx | 133 - desktop/src/components/Layout/StatusBar.tsx | 254 - desktop/src/components/Layout/Toolbar.tsx | 48 - desktop/src/components/Layout/index.ts | 8 - desktop/src/components/Layout/types.ts | 8 - .../ListSelection/ListSelection.tsx | 87 - desktop/src/components/ListSelection/index.ts | 1 - .../components/Section/CollapsibleSection.tsx | 118 - desktop/src/components/Section/index.ts | 1 - desktop/src/components/Steps/Steps.tsx | 121 - desktop/src/components/Steps/index.ts | 1 - desktop/src/components/Tag/IconTag.tsx | 28 - desktop/src/components/Tag/index.ts | 1 - desktop/src/components/Terminal/Terminal.tsx | 254 - .../components/Terminal/TerminalSearchBar.tsx | 181 - desktop/src/components/Terminal/index.ts | 3 - .../Terminal/useStreamingTerminal.tsx | 163 - .../components/Terminal/useTerminalSearch.tsx | 406 - .../components/Warning/WarningMessageBox.tsx | 52 - desktop/src/components/Warning/index.ts | 1 - .../WorkspaceOwnerFilter.tsx | 45 - .../components/WorkspaceOwnerFilter/index.ts | 1 - .../WorkspaceSorter/WorkspaceSorter.tsx | 46 - .../src/components/WorkspaceSorter/index.ts | 1 - .../WorkspaceStatusFilter.tsx | 105 - .../components/WorkspaceStatusFilter/index.ts | 1 - desktop/src/components/index.ts | 22 - desktop/src/components/useInstallCLI.tsx | 146 - desktop/src/constants.ts | 31 - .../DevsyProvider/DevsyContext.tsx | 7 - .../DevsyProvider/DevsyProvider.tsx | 51 - .../DevsyContext/DevsyProvider/index.ts | 3 - .../DevsyContext/Pro/ContextSwitcher.tsx | 292 - .../contexts/DevsyContext/Pro/ProProvider.tsx | 211 - .../contexts/DevsyContext/Pro/constants.ts | 1 - .../src/contexts/DevsyContext/Pro/index.ts | 6 - .../DevsyContext/Pro/useProContext.ts | 21 - .../contexts/DevsyContext/Pro/useProHost.ts | 7 - .../DevsyContext/Pro/useProjectClusters.tsx | 21 - .../contexts/DevsyContext/Pro/useTemplates.ts | 42 - .../DevsyContext/Pro/workspaceInstance.ts | 49 - .../contexts/DevsyContext/action/action.ts | 110 - .../DevsyContext/action/actionHistory.ts | 66 - .../src/contexts/DevsyContext/action/index.ts | 9 - .../contexts/DevsyContext/action/useAction.ts | 107 - .../src/contexts/DevsyContext/constants.ts | 3 - desktop/src/contexts/DevsyContext/helpers.ts | 70 - desktop/src/contexts/DevsyContext/index.ts | 28 - .../proInstances/ProInstancesProvider.tsx | 34 - .../DevsyContext/proInstances/context.ts | 7 - .../DevsyContext/proInstances/index.ts | 5 - .../proInstances/useProInstanceManager.ts | 80 - .../proInstances/useProInstances.tsx | 11 - .../src/contexts/DevsyContext/useProvider.ts | 10 - .../DevsyContext/useProviderManager.ts | 116 - .../src/contexts/DevsyContext/useProviders.ts | 11 - .../workspaceStore/WorkspaceStoreProvider.tsx | 16 - .../DevsyContext/workspaceStore/context.ts | 7 - .../DevsyContext/workspaceStore/index.ts | 4 - .../workspaceStore/useWorkspaceStore.ts | 9 - .../workspaceStore/workspaceStore.ts | 276 - .../contexts/DevsyContext/workspaces/index.ts | 10 - .../workspaces/useAllWorkspaceActions.ts | 17 - .../workspaces/usePollWorkspaces.ts | 62 - .../DevsyContext/workspaces/useWorkspace.ts | 370 - .../DevsyContext/workspaces/useWorkspaces.ts | 12 - .../SettingsContext/SettingsContext.tsx | 114 - desktop/src/contexts/SettingsContext/index.ts | 3 - .../contexts/SettingsContext/useSettings.ts | 19 - .../ToolbarContext/ToolbarContext.tsx | 30 - desktop/src/contexts/ToolbarContext/index.ts | 2 - .../src/contexts/ToolbarContext/useToolbar.ts | 16 - desktop/src/contexts/index.ts | 4 - desktop/src/gen/Asset.ts | 16 - desktop/src/gen/Author.ts | 22 - desktop/src/gen/ColorMode.ts | 3 - desktop/src/gen/DaemonState.ts | 3 - desktop/src/gen/DaemonStatus.ts | 8 - desktop/src/gen/Release.ts | 24 - desktop/src/gen/Settings.ts | 35 - desktop/src/gen/SidebarPosition.ts | 3 - desktop/src/gen/Zoom.ts | 3 - desktop/src/gen/index.ts | 10 - desktop/src/icons/ArrowCycle.tsx | 15 - desktop/src/icons/ArrowDown.tsx | 11 - desktop/src/icons/ArrowLeft.tsx | 15 - desktop/src/icons/ArrowPath.tsx | 15 - desktop/src/icons/ArrowUp.tsx | 11 - desktop/src/icons/Bell.tsx | 15 - desktop/src/icons/BellDuotone.tsx | 19 - desktop/src/icons/Briefcase.tsx | 20 - desktop/src/icons/CPU.tsx | 30 - desktop/src/icons/CheckCircle.tsx | 15 - desktop/src/icons/CircleDuotone.tsx | 19 - desktop/src/icons/CircleWithArrow.tsx | 11 - desktop/src/icons/Clock.tsx | 18 - desktop/src/icons/Close.tsx | 18 - desktop/src/icons/Code.tsx | 15 - desktop/src/icons/Cog.tsx | 15 - desktop/src/icons/CogDuotone.tsx | 28 - desktop/src/icons/CogOutlined.tsx | 11 - desktop/src/icons/CommandLine.tsx | 15 - desktop/src/icons/Connect.tsx | 18 - desktop/src/icons/Dashboard.tsx | 11 - desktop/src/icons/Database.tsx | 11 - desktop/src/icons/Devpod.tsx | 20 - desktop/src/icons/DevsyProBadge.tsx | 21 - desktop/src/icons/DevsyWordmark.tsx | 51 - desktop/src/icons/Ellipsis.tsx | 14 - desktop/src/icons/ExclamationCircle.tsx | 15 - desktop/src/icons/ExclamationTriangle.tsx | 15 - desktop/src/icons/File.tsx | 11 - desktop/src/icons/Folder.tsx | 11 - desktop/src/icons/Form.tsx | 18 - desktop/src/icons/Git.tsx | 18 - desktop/src/icons/GitBranch.tsx | 11 - desktop/src/icons/GitCommit.tsx | 18 - desktop/src/icons/GitPR.tsx | 18 - desktop/src/icons/GitSubPath.tsx | 11 - desktop/src/icons/Globe.tsx | 11 - desktop/src/icons/Gold.tsx | 11 - desktop/src/icons/History.tsx | 11 - desktop/src/icons/Image.tsx | 11 - desktop/src/icons/Laptop.tsx | 11 - desktop/src/icons/LockDuotone.tsx | 23 - desktop/src/icons/Loft.tsx | 43 - desktop/src/icons/LoftDevpodPro.tsx | 30 - desktop/src/icons/MatchCase.tsx | 21 - desktop/src/icons/Memory.tsx | 24 - desktop/src/icons/NotFound.tsx | 15 - desktop/src/icons/Parameters.tsx | 11 - desktop/src/icons/Pause.tsx | 11 - desktop/src/icons/Play.tsx | 11 - desktop/src/icons/Plus.tsx | 11 - desktop/src/icons/Preset.tsx | 11 - desktop/src/icons/ProfileDuotone.tsx | 23 - desktop/src/icons/ProviderPlaceholder.tsx | 25 - desktop/src/icons/Search.tsx | 20 - desktop/src/icons/Sleep.tsx | 22 - desktop/src/icons/Stack3D.tsx | 22 - desktop/src/icons/Status.tsx | 11 - desktop/src/icons/Stop.tsx | 9 - desktop/src/icons/Template.tsx | 11 - desktop/src/icons/Trash.tsx | 15 - desktop/src/icons/User.tsx | 11 - desktop/src/icons/WholeWord.tsx | 15 - desktop/src/icons/WorkspaceStatus.tsx | 14 - desktop/src/icons/defaultProps.tsx | 3 - desktop/src/icons/index.ts | 63 - desktop/src/images/aws_white.svg | 6 - desktop/src/images/community.svg | 20 - desktop/src/images/custom.svg | 3 - desktop/src/images/disconnected.svg | 1 - desktop/src/images/disconnected_dark.svg | 99 - desktop/src/images/empty_default.svg | 394 - desktop/src/images/empty_default_dark.svg | 349 - desktop/src/images/empty_workspace.svg | 16 - desktop/src/images/empty_workspaces.svg | 1 - desktop/src/images/empty_workspaces_dark.svg | 102 - desktop/src/images/index.ts | 53 - desktop/src/images/none.svg | 11 - desktop/src/images/none_dark.svg | 11 - desktop/src/images/vscodebrowser.svg | 32 - desktop/src/lib/debugSettings.ts | 94 - desktop/src/lib/eventManager.ts | 137 - desktop/src/lib/helpers.ts | 177 - desktop/src/lib/index.ts | 25 - desktop/src/lib/modals/index.ts | 5 - .../lib/modals/useDeleteWorkspaceModal.tsx | 58 - desktop/src/lib/modals/useLoginProModal.tsx | 362 - .../lib/modals/useRebuildWorkspaceModal.tsx | 48 - .../src/lib/modals/useResetWorkspaceModal.tsx | 50 - .../src/lib/modals/useStopWorkspaceModal.tsx | 44 - desktop/src/lib/platform.ts | 3 - desktop/src/lib/pro/constants.ts | 15 - desktop/src/lib/pro/index.ts | 6 - desktop/src/lib/pro/name.ts | 39 - desktop/src/lib/pro/parameters.tsx | 88 - desktop/src/lib/pro/source.ts | 40 - desktop/src/lib/pro/time.ts | 16 - desktop/src/lib/pro/useConnectionStatus.tsx | 29 - desktop/src/lib/randomWords.ts | 2011 ---- desktop/src/lib/releases.ts | 15 - desktop/src/lib/result.ts | 65 - desktop/src/lib/sortWorkspaceConstants.ts | 43 - desktop/src/lib/store.ts | 171 - desktop/src/lib/systemInfo.ts | 38 - desktop/src/lib/types.ts | 13 - desktop/src/lib/useDownloadLogs.ts | 52 - desktop/src/lib/useFormErrors.ts | 19 - desktop/src/lib/useHover.ts | 42 - desktop/src/lib/useSelection.ts | 107 - desktop/src/lib/useSortWorkspaces.tsx | 43 - desktop/src/lib/useStoreTroubleshoot.ts | 97 - desktop/src/lib/useUpdate.ts | 62 - desktop/src/lib/useVersion.ts | 14 - desktop/src/lib/validation.ts | 6 - desktop/src/main.tsx | 69 - .../workspaceStore/types.ts => main/.gitkeep} | 0 desktop/src/main/__tests__/cli.test.ts | 110 + desktop/src/main/__tests__/log-store.test.ts | 72 + desktop/src/main/__tests__/state.test.ts | 93 + desktop/src/main/cli.ts | 134 + desktop/src/main/index.ts | 118 + desktop/src/main/ipc.ts | 639 ++ desktop/src/main/log-store.ts | 102 + desktop/src/main/pty.ts | 139 + desktop/src/main/state.ts | 88 + desktop/src/main/tray.ts | 141 + desktop/src/main/watcher.ts | 169 + desktop/src/preload/.gitkeep | 0 desktop/src/preload/index.ts | 14 + desktop/src/queryKeys.ts | 64 - desktop/src/renderer/components.json | 16 + desktop/src/renderer/index.html | 16 + .../public/icons/ides}/antigravity.svg | 0 .../public/icons/ides}/bob.svg | 0 .../public/icons/ides}/clion.svg | 0 .../public/icons/ides}/codium.svg | 0 .../public/icons/ides}/codium_insiders.svg | 0 .../public/icons/ides}/cursor.svg | 0 .../public/icons/ides}/dataspell.svg | 0 .../public/icons/ides}/fleet.svg | 0 .../public/icons/ides}/goland.svg | 0 .../public/icons/ides}/intellij.svg | 0 .../public/icons/ides}/jupyter.svg | 0 .../public/icons/ides}/jupyter_dark.svg | 0 .../public/icons/ides}/marimo.svg | 0 .../public/icons/ides}/phpstorm.svg | 0 .../public/icons/ides}/positron.svg | 0 .../public/icons/ides}/pycharm.svg | 0 .../public/icons/ides}/rider.svg | 0 .../public/icons/ides}/rstudio.svg | 0 .../public/icons/ides}/rubymine.svg | 0 .../public/icons/ides}/rustrover.svg | 0 .../public/icons/ides}/vscode.svg | 0 .../public/icons/ides}/vscode_insiders.svg | 0 .../public/icons/ides}/webstorm.svg | 0 .../public/icons/ides}/windsurf.svg | 0 .../public/icons/ides}/zed.svg | 0 .../public/icons/ides}/zed_dark.svg | 0 .../public/icons/languages}/cpp.svg | 0 .../public/icons/languages}/dotnet.svg | 0 .../public/icons/languages}/go.svg | 0 .../public/icons/languages}/go_dark.svg | 0 .../public/icons/languages}/java.svg | 0 .../public/icons/languages}/nodejs.svg | 0 .../public/icons/languages}/php.svg | 0 .../public/icons/languages}/php_dark.svg | 0 .../public/icons/languages}/python.svg | 0 .../public/icons/languages}/ruby.svg | 0 .../public/icons/languages}/rust.svg | 0 .../public/icons/languages}/rust_dark.svg | 0 .../public/icons/providers}/aws.svg | 0 .../public/icons/providers}/azure.svg | 0 .../public/icons/providers}/civo.svg | 0 .../public/icons/providers}/digitalocean.svg | 0 .../public/icons/providers}/docker.svg | 0 .../public/icons/providers}/gcp.svg | 0 .../public/icons/providers}/kubernetes.svg | 0 .../icons/providers}/provider_placeholder.svg | 0 .../public/icons/providers}/ssh.svg | 0 .../public/icons/providers}/terraform.svg | 0 desktop/src/renderer/src/App.svelte | 128 + desktop/src/renderer/src/app.css | 154 + desktop/src/renderer/src/css.d.ts | 1 + desktop/src/renderer/src/lib/.gitkeep | 0 .../src/renderer/src/lib/__mocks__/setup.ts | 40 + .../src/renderer/src/lib/__mocks__/tauri.ts | 24 + .../components/context/ContextSheet.svelte | 446 + .../lib/components/layout/Breadcrumbs.svelte | 51 + .../components/layout/CommandPalette.svelte | 179 + .../components/layout/ConfirmDialog.svelte | 51 + .../layout/NotificationHistory.svelte | 68 + .../src/lib/components/layout/Sidebar.svelte | 174 + .../components/layout/ThemeSwitcher.svelte | 18 + .../src/lib/components/log/LogTable.svelte | 49 + .../lib/components/machine/MachineCard.svelte | 112 + .../components/provider/ProviderCard.svelte | 52 + .../components/provider/ProviderIcon.svelte | 33 + .../components/provider/ProviderSheet.svelte | 364 + .../lib/components/terminal/Terminal.svelte | 216 + .../ui/accordion/accordion-content.svelte | 27 + .../ui/accordion/accordion-item.svelte | 17 + .../ui/accordion/accordion-trigger.svelte | 32 + .../components/ui/accordion/accordion.svelte | 19 + .../src/lib/components/ui/accordion/index.ts | 16 + .../ui/alert/alert-description.svelte | 23 + .../components/ui/alert/alert-title.svelte | 20 + .../src/lib/components/ui/alert/alert.svelte | 44 + .../src/lib/components/ui/alert/index.ts | 15 + .../src/lib/components/ui/badge/index.ts | 26 + .../ui/breadcrumb/breadcrumb-ellipsis.svelte | 23 + .../ui/breadcrumb/breadcrumb-item.svelte | 20 + .../ui/breadcrumb/breadcrumb-link.svelte | 31 + .../ui/breadcrumb/breadcrumb-list.svelte | 23 + .../ui/breadcrumb/breadcrumb-page.svelte | 23 + .../ui/breadcrumb/breadcrumb-separator.svelte | 27 + .../ui/breadcrumb/breadcrumb.svelte | 21 + .../src/lib/components/ui/breadcrumb/index.ts | 25 + .../button-group-separator.svelte | 23 + .../ui/button-group/button-group-text.svelte | 31 + .../ui/button-group/button-group.svelte | 46 + .../lib/components/ui/button-group/index.ts | 17 + .../lib/components/ui/button/button.svelte | 92 + .../src/lib/components/ui/button/index.ts | 17 + .../lib/components/ui/card/card-action.svelte | 20 + .../components/ui/card/card-content.svelte | 15 + .../ui/card/card-description.svelte | 20 + .../lib/components/ui/card/card-footer.svelte | 20 + .../lib/components/ui/card/card-header.svelte | 23 + .../lib/components/ui/card/card-title.svelte | 20 + .../src/lib/components/ui/card/card.svelte | 23 + .../src/lib/components/ui/card/index.ts | 25 + .../ui/collapsible/collapsible-content.svelte | 8 + .../ui/collapsible/collapsible-trigger.svelte | 8 + .../ui/collapsible/collapsible.svelte | 11 + .../lib/components/ui/collapsible/index.ts | 13 + .../ui/command/command-dialog.svelte | 45 + .../ui/command/command-empty.svelte | 17 + .../ui/command/command-group.svelte | 32 + .../ui/command/command-input.svelte | 34 + .../components/ui/command/command-item.svelte | 25 + .../ui/command/command-link-item.svelte | 20 + .../components/ui/command/command-list.svelte | 17 + .../ui/command/command-loading.svelte | 8 + .../ui/command/command-separator.svelte | 17 + .../ui/command/command-shortcut.svelte | 20 + .../lib/components/ui/command/command.svelte | 25 + .../src/lib/components/ui/command/index.ts | 37 + .../components/ui/dialog/dialog-close.svelte | 11 + .../ui/dialog/dialog-content.svelte | 48 + .../ui/dialog/dialog-description.svelte | 17 + .../components/ui/dialog/dialog-footer.svelte | 32 + .../components/ui/dialog/dialog-header.svelte | 20 + .../ui/dialog/dialog-overlay.svelte | 17 + .../components/ui/dialog/dialog-portal.svelte | 7 + .../components/ui/dialog/dialog-title.svelte | 17 + .../ui/dialog/dialog-trigger.svelte | 11 + .../lib/components/ui/dialog/dialog.svelte | 8 + .../src/lib/components/ui/dialog/index.ts | 34 + .../components/ui/drawer/drawer-close.svelte | 8 + .../ui/drawer/drawer-content.svelte | 40 + .../ui/drawer/drawer-description.svelte | 17 + .../components/ui/drawer/drawer-footer.svelte | 20 + .../components/ui/drawer/drawer-header.svelte | 20 + .../components/ui/drawer/drawer-nested.svelte | 12 + .../ui/drawer/drawer-overlay.svelte | 20 + .../components/ui/drawer/drawer-portal.svelte | 7 + .../components/ui/drawer/drawer-title.svelte | 17 + .../ui/drawer/drawer-trigger.svelte | 8 + .../lib/components/ui/drawer/drawer.svelte | 12 + .../src/lib/components/ui/drawer/index.ts | 37 + .../dropdown-menu-checkbox-group.svelte | 16 + .../dropdown-menu-checkbox-item.svelte | 43 + .../dropdown-menu-content.svelte | 33 + .../dropdown-menu-group-heading.svelte | 22 + .../dropdown-menu/dropdown-menu-group.svelte | 8 + .../dropdown-menu/dropdown-menu-item.svelte | 27 + .../dropdown-menu/dropdown-menu-label.svelte | 24 + .../dropdown-menu/dropdown-menu-portal.svelte | 7 + .../dropdown-menu-radio-group.svelte | 16 + .../dropdown-menu-radio-item.svelte | 34 + .../dropdown-menu-separator.svelte | 17 + .../dropdown-menu-shortcut.svelte | 20 + .../dropdown-menu-sub-content.svelte | 17 + .../dropdown-menu-sub-trigger.svelte | 29 + .../ui/dropdown-menu/dropdown-menu-sub.svelte | 8 + .../dropdown-menu-trigger.svelte | 10 + .../ui/dropdown-menu/dropdown-menu.svelte | 8 + .../lib/components/ui/dropdown-menu/index.ts | 54 + .../lib/components/ui/input-group/index.ts | 22 + .../ui/input-group/input-group-addon.svelte | 57 + .../ui/input-group/input-group-button.svelte | 51 + .../ui/input-group/input-group-input.svelte | 20 + .../ui/input-group/input-group-text.svelte | 19 + .../input-group/input-group-textarea.svelte | 20 + .../ui/input-group/input-group.svelte | 24 + .../src/lib/components/ui/input/index.ts | 7 + .../src/lib/components/ui/input/input.svelte | 54 + .../src/lib/components/ui/kbd/index.ts | 10 + .../lib/components/ui/kbd/kbd-group.svelte | 20 + .../src/lib/components/ui/kbd/kbd.svelte | 25 + .../src/lib/components/ui/label/index.ts | 3 + .../src/lib/components/ui/label/label.svelte | 26 + .../src/lib/components/ui/popover/index.ts | 19 + .../ui/popover/popover-close.svelte | 8 + .../ui/popover/popover-content.svelte | 31 + .../ui/popover/popover-portal.svelte | 7 + .../ui/popover/popover-trigger.svelte | 17 + .../lib/components/ui/popover/popover.svelte | 8 + .../src/lib/components/ui/progress/index.ts | 7 + .../components/ui/progress/progress.svelte | 27 + .../src/lib/components/ui/resizable/index.ts | 13 + .../ui/resizable/resizable-handle.svelte | 30 + .../ui/resizable/resizable-pane-group.svelte | 20 + .../lib/components/ui/scroll-area/index.ts | 3 + .../ui/scroll-area/scroll-area.svelte | 40 + .../src/lib/components/ui/select/index.ts | 25 + .../ui/select/select-content.svelte | 32 + .../components/ui/select/select-item.svelte | 34 + .../ui/select/select-trigger.svelte | 26 + .../src/lib/components/ui/separator/index.ts | 3 + .../components/ui/separator/separator.svelte | 26 + .../src/lib/components/ui/sheet/index.ts | 37 + .../ui/sheet/resizable-sheet-content.svelte | 84 + .../components/ui/sheet/sheet-close.svelte | 8 + .../components/ui/sheet/sheet-content.svelte | 62 + .../ui/sheet/sheet-description.svelte | 17 + .../components/ui/sheet/sheet-footer.svelte | 20 + .../components/ui/sheet/sheet-header.svelte | 20 + .../components/ui/sheet/sheet-overlay.svelte | 20 + .../components/ui/sheet/sheet-portal.svelte | 7 + .../components/ui/sheet/sheet-title.svelte | 17 + .../components/ui/sheet/sheet-trigger.svelte | 8 + .../src/lib/components/ui/sheet/sheet.svelte | 8 + .../lib/components/ui/sidebar/constants.ts | 6 + .../components/ui/sidebar/context.svelte.ts | 58 + .../src/lib/components/ui/sidebar/index.ts | 75 + .../ui/sidebar/sidebar-content.svelte | 24 + .../ui/sidebar/sidebar-footer.svelte | 21 + .../ui/sidebar/sidebar-group-action.svelte | 35 + .../ui/sidebar/sidebar-group-content.svelte | 21 + .../ui/sidebar/sidebar-group-label.svelte | 34 + .../ui/sidebar/sidebar-group.svelte | 21 + .../ui/sidebar/sidebar-header.svelte | 21 + .../ui/sidebar/sidebar-input.svelte | 21 + .../ui/sidebar/sidebar-inset.svelte | 24 + .../ui/sidebar/sidebar-menu-action.svelte | 42 + .../ui/sidebar/sidebar-menu-badge.svelte | 29 + .../ui/sidebar/sidebar-menu-button.svelte | 105 + .../ui/sidebar/sidebar-menu-item.svelte | 21 + .../ui/sidebar/sidebar-menu-skeleton.svelte | 35 + .../ui/sidebar/sidebar-menu-sub-button.svelte | 43 + .../ui/sidebar/sidebar-menu-sub-item.svelte | 21 + .../ui/sidebar/sidebar-menu-sub.svelte | 25 + .../components/ui/sidebar/sidebar-menu.svelte | 21 + .../ui/sidebar/sidebar-provider.svelte | 52 + .../components/ui/sidebar/sidebar-rail.svelte | 39 + .../ui/sidebar/sidebar-separator.svelte | 19 + .../ui/sidebar/sidebar-trigger.svelte | 36 + .../lib/components/ui/sidebar/sidebar.svelte | 106 + .../ui/skeleton/CardSkeleton.svelte | 15 + .../components/ui/skeleton/Skeleton.svelte | 10 + .../ui/skeleton/TableSkeleton.svelte | 20 + .../src/lib/components/ui/skeleton/index.ts | 1 + .../src/lib/components/ui/sonner/index.ts | 1 + .../lib/components/ui/sonner/sonner.svelte | 11 + .../src/lib/components/ui/spinner/index.ts | 1 + .../lib/components/ui/spinner/spinner.svelte | 16 + .../src/lib/components/ui/switch/index.ts | 1 + .../lib/components/ui/switch/switch.svelte | 27 + .../src/lib/components/ui/table/index.ts | 28 + .../lib/components/ui/table/table-body.svelte | 20 + .../components/ui/table/table-caption.svelte | 20 + .../lib/components/ui/table/table-cell.svelte | 23 + .../components/ui/table/table-footer.svelte | 20 + .../lib/components/ui/table/table-head.svelte | 23 + .../components/ui/table/table-header.svelte | 20 + .../lib/components/ui/table/table-row.svelte | 23 + .../src/lib/components/ui/table/table.svelte | 22 + .../src/lib/components/ui/tabs/index.ts | 21 + .../components/ui/tabs/tabs-content.svelte | 17 + .../lib/components/ui/tabs/tabs-list.svelte | 40 + .../components/ui/tabs/tabs-trigger.svelte | 23 + .../src/lib/components/ui/tabs/tabs.svelte | 19 + .../src/lib/components/ui/textarea/index.ts | 7 + .../components/ui/textarea/textarea.svelte | 23 + .../src/lib/components/ui/tooltip/index.ts | 17 + .../ui/tooltip/tooltip-content.svelte | 30 + .../workspace/CreateWorkspaceSheet.svelte | 498 + .../components/workspace/LanguageIcon.svelte | 63 + .../components/workspace/WorkspaceCard.svelte | 153 + .../src/lib/hooks/is-mobile.svelte.ts | 9 + desktop/src/renderer/src/lib/ipc/bridge.ts | 62 + .../src/renderer/src/lib/ipc/commands.test.ts | 265 + desktop/src/renderer/src/lib/ipc/commands.ts | 244 + desktop/src/renderer/src/lib/ipc/events.ts | 71 + desktop/src/renderer/src/lib/ipc/mock.ts | 302 + .../src/renderer/src/lib/ipc/terminal.test.ts | 73 + desktop/src/renderer/src/lib/ipc/terminal.ts | 71 + desktop/src/renderer/src/lib/ipc/types.ts | 1 + desktop/src/renderer/src/lib/router.ts | 46 + .../src/lib/stores/command-palette.test.ts | 28 + .../src/lib/stores/command-palette.ts | 16 + .../renderer/src/lib/stores/contexts.test.ts | 114 + .../src/renderer/src/lib/stores/contexts.ts | 50 + .../renderer/src/lib/stores/machines.test.ts | 142 + .../src/renderer/src/lib/stores/machines.ts | 81 + .../renderer/src/lib/stores/providers.test.ts | 102 + .../src/renderer/src/lib/stores/providers.ts | 37 + .../renderer/src/lib/stores/settings.test.ts | 70 + .../src/renderer/src/lib/stores/settings.ts | 353 + .../src/lib/stores/terminal-instances.ts | 40 + .../renderer/src/lib/stores/terminals.test.ts | 98 + .../src/renderer/src/lib/stores/terminals.ts | 30 + .../renderer/src/lib/stores/toasts.test.ts | 80 + desktop/src/renderer/src/lib/stores/toasts.ts | 67 + .../src/lib/stores/workspaces.test.ts | 176 + .../src/renderer/src/lib/stores/workspaces.ts | 84 + desktop/src/renderer/src/lib/types/index.ts | 132 + desktop/src/renderer/src/lib/utils.ts | 17 + desktop/src/renderer/src/lib/utils/error.ts | 16 + .../src/renderer/src/lib/utils/log-parser.ts | 126 + .../src/renderer/src/lib/utils/time.test.ts | 81 + desktop/src/renderer/src/lib/utils/time.ts | 30 + desktop/src/renderer/src/main.ts | 8 + .../renderer/src/pages/ContextsPage.svelte | 199 + .../renderer/src/pages/DashboardPage.svelte | 152 + .../src/pages/MachineDetailPage.svelte | 272 + .../renderer/src/pages/MachinesPage.svelte | 104 + .../renderer/src/pages/NotFoundPage.svelte | 17 + .../renderer/src/pages/ProviderAddPage.svelte | 211 + .../src/pages/ProviderDetailPage.svelte | 328 + .../renderer/src/pages/ProvidersPage.svelte | 137 + .../renderer/src/pages/SettingsPage.svelte | 484 + .../src/renderer/src/pages/SshKeysPage.svelte | 212 + .../renderer/src/pages/TerminalsPage.svelte | 248 + .../src/pages/WorkspaceDetailPage.svelte | 702 ++ .../renderer/src/pages/WorkspacesPage.svelte | 280 + desktop/src/renderer/tsconfig.json | 21 + desktop/src/routes.constants.ts | 125 - desktop/src/routes.tsx | 77 - desktop/src/runner.ts | 609 -- desktop/src/types.ts | 324 - desktop/src/useCommunityContributions.ts | 21 - desktop/src/useIDEs.ts | 82 - desktop/src/useWelcomeModal.tsx | 183 - desktop/src/views/Actions/Action.tsx | 85 - desktop/src/views/Actions/Actions.tsx | 16 - desktop/src/views/Actions/index.ts | 2 - desktop/src/views/Actions/useActionTitle.tsx | 51 - desktop/src/views/Pro/BackToWorkspaces.tsx | 15 - .../Pro/CreateWorkspace/CreateWorkspace.tsx | 251 - .../CreateWorkspace/CreateWorkspaceForm.tsx | 388 - .../Pro/CreateWorkspace/DevContainerInput.tsx | 161 - .../views/Pro/CreateWorkspace/IDEInput.tsx | 89 - .../InfrastructureTemplateInput.tsx | 410 - .../views/Pro/CreateWorkspace/PresetInput.tsx | 89 - .../views/Pro/CreateWorkspace/RunnerInput.tsx | 23 - .../views/Pro/CreateWorkspace/SourceInput.tsx | 410 - .../Pro/CreateWorkspace/UpdateWorkspace.tsx | 145 - .../src/views/Pro/CreateWorkspace/index.ts | 2 - .../src/views/Pro/CreateWorkspace/types.ts | 34 - .../Pro/Credentials/AddGitHTTPCredentials.tsx | 266 - .../Pro/Credentials/AddGitSSHCredentials.tsx | 166 - .../src/views/Pro/Credentials/Credentials.tsx | 310 - desktop/src/views/Pro/Credentials/index.ts | 1 - desktop/src/views/Pro/ListWorkspaces.tsx | 268 - desktop/src/views/Pro/ProInstance.tsx | 68 - desktop/src/views/Pro/Profile.tsx | 13 - .../views/Pro/SelectPreset/SelectPreset.tsx | 207 - desktop/src/views/Pro/SelectPreset/index.ts | 1 - desktop/src/views/Pro/Settings.tsx | 15 - .../src/views/Pro/Workspace/Configuration.tsx | 6 - desktop/src/views/Pro/Workspace/Logs.tsx | 285 - desktop/src/views/Pro/Workspace/Tabs.tsx | 77 - desktop/src/views/Pro/Workspace/Workspace.tsx | 214 - .../Pro/Workspace/WorkspaceCardHeader.tsx | 366 - .../views/Pro/Workspace/WorkspaceDetails.tsx | 729 -- .../Pro/Workspace/WorkspaceInstanceCard.tsx | 173 - .../views/Pro/Workspace/WorkspaceStatus.tsx | 102 - desktop/src/views/Pro/Workspace/index.ts | 3 - desktop/src/views/Pro/Workspace/status.ts | 70 - desktop/src/views/Pro/Workspace/types.ts | 10 - .../src/views/Pro/Workspace/useTemplate.ts | 30 - desktop/src/views/Pro/helpers.ts | 5 - desktop/src/views/Pro/index.ts | 8 - .../ConfigureProviderOptionsForm.tsx | 626 -- .../AddProvider/LoadingProviderIndicator.tsx | 43 - .../Providers/AddProvider/OptionFormField.tsx | 200 - .../AddProvider/SetupClonedProvider.tsx | 123 - .../AddProvider/SetupProviderSourceForm.tsx | 576 - .../AddProvider/SetupProviderSteps.tsx | 110 - .../views/Providers/AddProvider/helpers.ts | 20 - .../src/views/Providers/AddProvider/index.ts | 5 - .../src/views/Providers/AddProvider/types.ts | 19 - .../Providers/AddProvider/useAddProvider.ts | 62 - .../AddProvider/useProviderOptions.ts | 82 - .../Providers/AddProvider/useSetupProvider.ts | 105 - desktop/src/views/Providers/ListProviders.tsx | 45 - desktop/src/views/Providers/Provider.tsx | 36 - desktop/src/views/Providers/ProviderCard.tsx | 265 - desktop/src/views/Providers/Providers.tsx | 18 - desktop/src/views/Providers/helpers.ts | 68 - desktop/src/views/Providers/index.ts | 8 - .../Providers/useDeleteProviderModal.tsx | 66 - .../src/views/Providers/useProviderTitle.tsx | 65 - .../views/Providers/useSetupProviderModal.tsx | 106 - desktop/src/views/Settings/ClearableInput.tsx | 75 - desktop/src/views/Settings/Settings.tsx | 607 -- desktop/src/views/Settings/index.ts | 1 - .../src/views/Settings/useContextOptions.tsx | 274 - desktop/src/views/Settings/useIDESettings.tsx | 28 - .../src/views/Settings/useSettingsOptions.tsx | 167 - .../CreateWorkspace/CreateWorkspace.tsx | 554 - .../ProviderOptionsPopover.tsx | 216 - .../CreateWorkspace/WorkspaceSourceInput.tsx | 350 - .../Workspaces/CreateWorkspace/constants.ts | 69 - .../views/Workspaces/CreateWorkspace/index.ts | 1 - .../views/Workspaces/CreateWorkspace/types.ts | 37 - .../useCreateWorkspaceForm.tsx | 320 - .../src/views/Workspaces/ListWorkspaces.tsx | 246 - .../src/views/Workspaces/WorkspaceCard.tsx | 384 - .../views/Workspaces/WorkspaceControls.tsx | 318 - .../views/Workspaces/WorkspaceStatusBadge.tsx | 102 - desktop/src/views/Workspaces/Workspaces.tsx | 16 - desktop/src/views/Workspaces/index.ts | 3 - .../views/Workspaces/useWorkspaceTitle.tsx | 58 - desktop/src/views/index.ts | 5 - desktop/src/vite-env.d.ts | 7 - desktop/tsconfig.json | 32 +- desktop/tsconfig.node.json | 9 - desktop/update-window/index.html | 14 - desktop/update-window/src/main.tsx | 41 - desktop/vite.config.ts | 42 - desktop/vitest.config.ts | 18 + desktop/yarn.lock | 5669 ---------- 868 files changed, 27075 insertions(+), 50354 deletions(-) create mode 100644 .github/workflows/desktop-ci.yml create mode 100644 cmd/agent/workspace/docker_darwin_test.go delete mode 100644 desktop/.npmrc create mode 100644 desktop/.nvmrc delete mode 100644 desktop/.prettierignore delete mode 100644 desktop/.prettierrc delete mode 100644 desktop/.vscode/extensions.json delete mode 100644 desktop/README.md create mode 100644 desktop/build/entitlements.mac.plist delete mode 100644 desktop/devpod.png create mode 100644 desktop/e2e/app.e2e.ts create mode 100644 desktop/e2e/contexts.e2e.ts create mode 100644 desktop/e2e/electron-app.ts create mode 100755 desktop/e2e/fixtures/mock-devpod create mode 100755 desktop/e2e/fixtures/mock-devpod.cjs create mode 100644 desktop/e2e/integration.e2e.ts create mode 100644 desktop/e2e/navigation.e2e.ts create mode 100644 desktop/e2e/providers.e2e.ts create mode 100644 desktop/e2e/workspaces.e2e.ts create mode 100644 desktop/electron-builder.yml create mode 100644 desktop/electron.vite.config.ts delete mode 100644 desktop/eslint.config.js delete mode 100644 desktop/flatpak/Devsy.metainfo.xml create mode 100644 desktop/flatpak/dev.devsy.app.yml delete mode 100644 desktop/flatpak/sh.devsy.devsy.yml delete mode 100644 desktop/index.html create mode 100644 desktop/package-lock.json create mode 100644 desktop/playwright.config.ts delete mode 100644 desktop/public/tauri.svg delete mode 100644 desktop/public/vite.svg rename desktop/{src-tauri => resources}/bin/.gitkeep (100%) create mode 100644 desktop/resources/box-icon-app.svg create mode 100644 desktop/resources/icon.icns create mode 100644 desktop/resources/icon.ico create mode 100644 desktop/resources/icon.png create mode 100644 desktop/resources/icons/128x128.png create mode 100644 desktop/resources/icons/32x32.png create mode 100644 desktop/resources/tray/icon-tray-dark.png create mode 100644 desktop/resources/tray/icon-tray-dark@2x.png create mode 100644 desktop/resources/tray/icon-tray-light.png create mode 100644 desktop/resources/tray/icon-tray-light@2x.png create mode 100644 desktop/resources/tray/icon-trayTemplate.png create mode 100644 desktop/resources/tray/icon-trayTemplate@2x.png delete mode 100644 desktop/src-tauri/.gitignore delete mode 100644 desktop/src-tauri/Cargo.lock delete mode 100644 desktop/src-tauri/Cargo.toml delete mode 100644 desktop/src-tauri/Info.plist delete mode 100644 desktop/src-tauri/build.rs delete mode 100644 desktop/src-tauri/capabilities/migrated.json delete mode 100644 desktop/src-tauri/capabilities/updater.json delete mode 100644 desktop/src-tauri/dmg-background.png delete mode 100644 desktop/src-tauri/entitlements.plist delete mode 100644 desktop/src-tauri/icons/128x128.png delete mode 100644 desktop/src-tauri/icons/128x128@2x.png delete mode 100644 desktop/src-tauri/icons/32x32.png delete mode 100644 desktop/src-tauri/icons/Square107x107Logo.png delete mode 100644 desktop/src-tauri/icons/Square142x142Logo.png delete mode 100644 desktop/src-tauri/icons/Square150x150Logo.png delete mode 100644 desktop/src-tauri/icons/Square284x284Logo.png delete mode 100644 desktop/src-tauri/icons/Square30x30Logo.png delete mode 100644 desktop/src-tauri/icons/Square310x310Logo.png delete mode 100644 desktop/src-tauri/icons/Square44x44Logo.png delete mode 100644 desktop/src-tauri/icons/Square71x71Logo.png delete mode 100644 desktop/src-tauri/icons/Square89x89Logo.png delete mode 100644 desktop/src-tauri/icons/StoreLogo.png delete mode 100644 desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png delete mode 100644 desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png delete mode 100644 desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png delete mode 100644 desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png delete mode 100644 desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png delete mode 100644 desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png delete mode 100644 desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png delete mode 100644 desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png delete mode 100644 desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png delete mode 100644 desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png delete mode 100644 desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png delete mode 100644 desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png delete mode 100644 desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png delete mode 100644 desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png delete mode 100644 desktop/src-tauri/icons/icon.icns delete mode 100644 desktop/src-tauri/icons/icon.ico delete mode 100644 desktop/src-tauri/icons/icon.png delete mode 100644 desktop/src-tauri/icons/icon_system_tray.png delete mode 100644 desktop/src-tauri/icons/icon_system_tray_color.png delete mode 100644 desktop/src-tauri/icons/icon_warning_system_tray.png delete mode 100644 desktop/src-tauri/icons/icon_warning_system_tray_color.png delete mode 100644 desktop/src-tauri/icons/ios/AppIcon-20x20@1x.png delete mode 100644 desktop/src-tauri/icons/ios/AppIcon-20x20@2x-1.png delete mode 100644 desktop/src-tauri/icons/ios/AppIcon-20x20@2x.png delete mode 100644 desktop/src-tauri/icons/ios/AppIcon-20x20@3x.png delete mode 100644 desktop/src-tauri/icons/ios/AppIcon-29x29@1x.png delete mode 100644 desktop/src-tauri/icons/ios/AppIcon-29x29@2x-1.png delete mode 100644 desktop/src-tauri/icons/ios/AppIcon-29x29@2x.png delete mode 100644 desktop/src-tauri/icons/ios/AppIcon-29x29@3x.png delete mode 100644 desktop/src-tauri/icons/ios/AppIcon-40x40@1x.png delete mode 100644 desktop/src-tauri/icons/ios/AppIcon-40x40@2x-1.png delete mode 100644 desktop/src-tauri/icons/ios/AppIcon-40x40@2x.png delete mode 100644 desktop/src-tauri/icons/ios/AppIcon-40x40@3x.png delete mode 100644 desktop/src-tauri/icons/ios/AppIcon-512@2x.png delete mode 100644 desktop/src-tauri/icons/ios/AppIcon-60x60@2x.png delete mode 100644 desktop/src-tauri/icons/ios/AppIcon-60x60@3x.png delete mode 100644 desktop/src-tauri/icons/ios/AppIcon-76x76@1x.png delete mode 100644 desktop/src-tauri/icons/ios/AppIcon-76x76@2x.png delete mode 100644 desktop/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png delete mode 100644 desktop/src-tauri/icons/pending.png delete mode 100644 desktop/src-tauri/icons/running.png delete mode 100644 desktop/src-tauri/icons/stopped.png delete mode 100644 desktop/src-tauri/sign.bat delete mode 100644 desktop/src-tauri/src/action_logs.rs delete mode 100644 desktop/src-tauri/src/commands.rs delete mode 100644 desktop/src-tauri/src/commands/config.rs delete mode 100644 desktop/src-tauri/src/commands/constants.rs delete mode 100644 desktop/src-tauri/src/commands/delete_pro_instance.rs delete mode 100644 desktop/src-tauri/src/commands/delete_provider.rs delete mode 100644 desktop/src-tauri/src/commands/list_pro_instances.rs delete mode 100644 desktop/src-tauri/src/commands/list_workspaces.rs delete mode 100644 desktop/src-tauri/src/commands/start_daemon.rs delete mode 100644 desktop/src-tauri/src/community_contributions.rs delete mode 100644 desktop/src-tauri/src/custom_protocol.rs delete mode 100644 desktop/src-tauri/src/daemon.rs delete mode 100644 desktop/src-tauri/src/daemon/client.rs delete mode 100644 desktop/src-tauri/src/file_exists.rs delete mode 100644 desktop/src-tauri/src/fix_env.rs delete mode 100644 desktop/src-tauri/src/get_env.rs delete mode 100644 desktop/src-tauri/src/install_cli.rs delete mode 100644 desktop/src-tauri/src/logging.rs delete mode 100644 desktop/src-tauri/src/main.rs delete mode 100644 desktop/src-tauri/src/providers.rs delete mode 100644 desktop/src-tauri/src/resource_watcher.rs delete mode 100644 desktop/src-tauri/src/server.rs delete mode 100644 desktop/src-tauri/src/settings.rs delete mode 100644 desktop/src-tauri/src/system_tray.rs delete mode 100644 desktop/src-tauri/src/ui_messages.rs delete mode 100644 desktop/src-tauri/src/ui_ready.rs delete mode 100644 desktop/src-tauri/src/updates.rs delete mode 100644 desktop/src-tauri/src/util.rs delete mode 100644 desktop/src-tauri/src/window.rs delete mode 100644 desktop/src-tauri/tauri.conf.json delete mode 100644 desktop/src-tauri/tauri.linux.conf.json delete mode 100644 desktop/src-tauri/tauri.macos.conf.json delete mode 100644 desktop/src-tauri/tauri.windows.conf.json delete mode 100644 desktop/src/App/App.tsx delete mode 100644 desktop/src/App/Changelog.tsx delete mode 100644 desktop/src/App/OSSApp.tsx delete mode 100644 desktop/src/App/ProApp.tsx delete mode 100644 desktop/src/App/constants.ts delete mode 100644 desktop/src/App/index.ts delete mode 100644 desktop/src/App/useAppReady.tsx delete mode 100644 desktop/src/App/useChangelogModal.tsx delete mode 100644 desktop/src/App/usePreserveLocation.tsx delete mode 100644 desktop/src/ProRoot.tsx delete mode 100644 desktop/src/Theme/ThemeProvider.tsx delete mode 100644 desktop/src/Theme/button.ts delete mode 100644 desktop/src/Theme/card.ts delete mode 100644 desktop/src/Theme/checkbox.ts delete mode 100644 desktop/src/Theme/form.ts delete mode 100644 desktop/src/Theme/index.ts delete mode 100644 desktop/src/Theme/input.ts delete mode 100644 desktop/src/Theme/menu.ts delete mode 100644 desktop/src/Theme/modal.ts delete mode 100644 desktop/src/Theme/popover.ts delete mode 100644 desktop/src/Theme/radio.ts delete mode 100644 desktop/src/Theme/select.ts delete mode 100644 desktop/src/Theme/switch.ts delete mode 100644 desktop/src/Theme/tabs.ts delete mode 100644 desktop/src/Theme/tag.ts delete mode 100644 desktop/src/Theme/text.ts delete mode 100644 desktop/src/Theme/textarea.ts delete mode 100644 desktop/src/Theme/theme.ts delete mode 100644 desktop/src/Theme/themeHooks.tsx delete mode 100644 desktop/src/assets/fonts.css delete mode 100755 desktop/src/assets/fonts/AUTHORS.txt delete mode 100644 desktop/src/assets/fonts/JetBrainsMono-Bold.woff2 delete mode 100644 desktop/src/assets/fonts/JetBrainsMono-BoldItalic.woff2 delete mode 100644 desktop/src/assets/fonts/JetBrainsMono-ExtraBold.woff2 delete mode 100644 desktop/src/assets/fonts/JetBrainsMono-ExtraBoldItalic.woff2 delete mode 100644 desktop/src/assets/fonts/JetBrainsMono-ExtraLight.woff2 delete mode 100644 desktop/src/assets/fonts/JetBrainsMono-ExtraLightItalic.woff2 delete mode 100644 desktop/src/assets/fonts/JetBrainsMono-Italic.woff2 delete mode 100644 desktop/src/assets/fonts/JetBrainsMono-Light.woff2 delete mode 100644 desktop/src/assets/fonts/JetBrainsMono-LightItalic.woff2 delete mode 100644 desktop/src/assets/fonts/JetBrainsMono-Medium.woff2 delete mode 100644 desktop/src/assets/fonts/JetBrainsMono-MediumItalic.woff2 delete mode 100644 desktop/src/assets/fonts/JetBrainsMono-Regular.woff2 delete mode 100644 desktop/src/assets/fonts/JetBrainsMono-SemiBold.woff2 delete mode 100644 desktop/src/assets/fonts/JetBrainsMono-SemiBoldItalic.woff2 delete mode 100644 desktop/src/assets/fonts/JetBrainsMono-Thin.woff2 delete mode 100644 desktop/src/assets/fonts/JetBrainsMono-ThinItalic.woff2 delete mode 100644 desktop/src/assets/fonts/OFL.txt delete mode 100644 desktop/src/client/client.ts delete mode 100644 desktop/src/client/command.ts delete mode 100644 desktop/src/client/commandCache.ts delete mode 100644 desktop/src/client/constants.ts delete mode 100644 desktop/src/client/context/client.ts delete mode 100644 desktop/src/client/context/contextCommands.ts delete mode 100644 desktop/src/client/context/index.ts delete mode 100644 desktop/src/client/ides/client.ts delete mode 100644 desktop/src/client/ides/ideCommands.ts delete mode 100644 desktop/src/client/ides/index.ts delete mode 100644 desktop/src/client/index.ts delete mode 100644 desktop/src/client/pro/client.ts delete mode 100644 desktop/src/client/pro/index.ts delete mode 100644 desktop/src/client/pro/proCommands.ts delete mode 100644 desktop/src/client/providers/client.ts delete mode 100644 desktop/src/client/providers/index.ts delete mode 100644 desktop/src/client/providers/providerCommands.ts delete mode 100644 desktop/src/client/repo.ts delete mode 100644 desktop/src/client/tauriClient/index.ts delete mode 100644 desktop/src/client/types.ts delete mode 100644 desktop/src/client/workspaces/client.ts delete mode 100644 desktop/src/client/workspaces/index.ts delete mode 100644 desktop/src/client/workspaces/workspaceCommands.ts delete mode 100644 desktop/src/components/Animation/Ripple.tsx delete mode 100644 desktop/src/components/Animation/index.ts delete mode 100644 desktop/src/components/AutoComplete/AutoComplete.tsx delete mode 100644 desktop/src/components/AutoComplete/index.ts delete mode 100644 desktop/src/components/BottomActionBar/BottomActionBar.tsx delete mode 100644 desktop/src/components/BottomActionBar/index.ts delete mode 100644 desktop/src/components/CardHeader/WorkspaceCardHeader.tsx delete mode 100644 desktop/src/components/CardHeader/index.ts delete mode 100644 desktop/src/components/DeleteWorkspacesModal/DeleteWorkspacesModal.tsx delete mode 100644 desktop/src/components/DeleteWorkspacesModal/index.ts delete mode 100644 desktop/src/components/DevsyOSSBadge.tsx delete mode 100644 desktop/src/components/Error/ErrorMessageBox.tsx delete mode 100644 desktop/src/components/Error/index.ts delete mode 100644 desktop/src/components/ExampleCard.tsx delete mode 100644 desktop/src/components/Form/Form.tsx delete mode 100644 desktop/src/components/Form/index.ts delete mode 100644 desktop/src/components/IDEGroup/IDEGroup.tsx delete mode 100644 desktop/src/components/IDEGroup/index.ts delete mode 100644 desktop/src/components/IDEIcon/IDEIcon.tsx delete mode 100644 desktop/src/components/IDEIcon/index.ts delete mode 100644 desktop/src/components/Layout/NavigationViewLayout.tsx delete mode 100644 desktop/src/components/Layout/Notifications.tsx delete mode 100644 desktop/src/components/Layout/ProLayout.tsx delete mode 100644 desktop/src/components/Layout/ProSwitcher.tsx delete mode 100644 desktop/src/components/Layout/Sidebar.tsx delete mode 100644 desktop/src/components/Layout/StatusBar.tsx delete mode 100644 desktop/src/components/Layout/Toolbar.tsx delete mode 100644 desktop/src/components/Layout/index.ts delete mode 100644 desktop/src/components/Layout/types.ts delete mode 100644 desktop/src/components/ListSelection/ListSelection.tsx delete mode 100644 desktop/src/components/ListSelection/index.ts delete mode 100644 desktop/src/components/Section/CollapsibleSection.tsx delete mode 100644 desktop/src/components/Section/index.ts delete mode 100644 desktop/src/components/Steps/Steps.tsx delete mode 100644 desktop/src/components/Steps/index.ts delete mode 100644 desktop/src/components/Tag/IconTag.tsx delete mode 100644 desktop/src/components/Tag/index.ts delete mode 100644 desktop/src/components/Terminal/Terminal.tsx delete mode 100644 desktop/src/components/Terminal/TerminalSearchBar.tsx delete mode 100644 desktop/src/components/Terminal/index.ts delete mode 100644 desktop/src/components/Terminal/useStreamingTerminal.tsx delete mode 100644 desktop/src/components/Terminal/useTerminalSearch.tsx delete mode 100644 desktop/src/components/Warning/WarningMessageBox.tsx delete mode 100644 desktop/src/components/Warning/index.ts delete mode 100644 desktop/src/components/WorkspaceOwnerFilter/WorkspaceOwnerFilter.tsx delete mode 100644 desktop/src/components/WorkspaceOwnerFilter/index.ts delete mode 100644 desktop/src/components/WorkspaceSorter/WorkspaceSorter.tsx delete mode 100644 desktop/src/components/WorkspaceSorter/index.ts delete mode 100644 desktop/src/components/WorkspaceStatusFilter/WorkspaceStatusFilter.tsx delete mode 100644 desktop/src/components/WorkspaceStatusFilter/index.ts delete mode 100644 desktop/src/components/index.ts delete mode 100644 desktop/src/components/useInstallCLI.tsx delete mode 100644 desktop/src/constants.ts delete mode 100644 desktop/src/contexts/DevsyContext/DevsyProvider/DevsyContext.tsx delete mode 100644 desktop/src/contexts/DevsyContext/DevsyProvider/DevsyProvider.tsx delete mode 100644 desktop/src/contexts/DevsyContext/DevsyProvider/index.ts delete mode 100644 desktop/src/contexts/DevsyContext/Pro/ContextSwitcher.tsx delete mode 100644 desktop/src/contexts/DevsyContext/Pro/ProProvider.tsx delete mode 100644 desktop/src/contexts/DevsyContext/Pro/constants.ts delete mode 100644 desktop/src/contexts/DevsyContext/Pro/index.ts delete mode 100644 desktop/src/contexts/DevsyContext/Pro/useProContext.ts delete mode 100644 desktop/src/contexts/DevsyContext/Pro/useProHost.ts delete mode 100644 desktop/src/contexts/DevsyContext/Pro/useProjectClusters.tsx delete mode 100644 desktop/src/contexts/DevsyContext/Pro/useTemplates.ts delete mode 100644 desktop/src/contexts/DevsyContext/Pro/workspaceInstance.ts delete mode 100644 desktop/src/contexts/DevsyContext/action/action.ts delete mode 100644 desktop/src/contexts/DevsyContext/action/actionHistory.ts delete mode 100644 desktop/src/contexts/DevsyContext/action/index.ts delete mode 100644 desktop/src/contexts/DevsyContext/action/useAction.ts delete mode 100644 desktop/src/contexts/DevsyContext/constants.ts delete mode 100644 desktop/src/contexts/DevsyContext/helpers.ts delete mode 100644 desktop/src/contexts/DevsyContext/index.ts delete mode 100644 desktop/src/contexts/DevsyContext/proInstances/ProInstancesProvider.tsx delete mode 100644 desktop/src/contexts/DevsyContext/proInstances/context.ts delete mode 100644 desktop/src/contexts/DevsyContext/proInstances/index.ts delete mode 100644 desktop/src/contexts/DevsyContext/proInstances/useProInstanceManager.ts delete mode 100644 desktop/src/contexts/DevsyContext/proInstances/useProInstances.tsx delete mode 100644 desktop/src/contexts/DevsyContext/useProvider.ts delete mode 100644 desktop/src/contexts/DevsyContext/useProviderManager.ts delete mode 100644 desktop/src/contexts/DevsyContext/useProviders.ts delete mode 100644 desktop/src/contexts/DevsyContext/workspaceStore/WorkspaceStoreProvider.tsx delete mode 100644 desktop/src/contexts/DevsyContext/workspaceStore/context.ts delete mode 100644 desktop/src/contexts/DevsyContext/workspaceStore/index.ts delete mode 100644 desktop/src/contexts/DevsyContext/workspaceStore/useWorkspaceStore.ts delete mode 100644 desktop/src/contexts/DevsyContext/workspaceStore/workspaceStore.ts delete mode 100644 desktop/src/contexts/DevsyContext/workspaces/index.ts delete mode 100644 desktop/src/contexts/DevsyContext/workspaces/useAllWorkspaceActions.ts delete mode 100644 desktop/src/contexts/DevsyContext/workspaces/usePollWorkspaces.ts delete mode 100644 desktop/src/contexts/DevsyContext/workspaces/useWorkspace.ts delete mode 100644 desktop/src/contexts/DevsyContext/workspaces/useWorkspaces.ts delete mode 100644 desktop/src/contexts/SettingsContext/SettingsContext.tsx delete mode 100644 desktop/src/contexts/SettingsContext/index.ts delete mode 100644 desktop/src/contexts/SettingsContext/useSettings.ts delete mode 100644 desktop/src/contexts/ToolbarContext/ToolbarContext.tsx delete mode 100644 desktop/src/contexts/ToolbarContext/index.ts delete mode 100644 desktop/src/contexts/ToolbarContext/useToolbar.ts delete mode 100644 desktop/src/contexts/index.ts delete mode 100644 desktop/src/gen/Asset.ts delete mode 100644 desktop/src/gen/Author.ts delete mode 100644 desktop/src/gen/ColorMode.ts delete mode 100644 desktop/src/gen/DaemonState.ts delete mode 100644 desktop/src/gen/DaemonStatus.ts delete mode 100644 desktop/src/gen/Release.ts delete mode 100644 desktop/src/gen/Settings.ts delete mode 100644 desktop/src/gen/SidebarPosition.ts delete mode 100644 desktop/src/gen/Zoom.ts delete mode 100644 desktop/src/gen/index.ts delete mode 100644 desktop/src/icons/ArrowCycle.tsx delete mode 100644 desktop/src/icons/ArrowDown.tsx delete mode 100644 desktop/src/icons/ArrowLeft.tsx delete mode 100644 desktop/src/icons/ArrowPath.tsx delete mode 100644 desktop/src/icons/ArrowUp.tsx delete mode 100644 desktop/src/icons/Bell.tsx delete mode 100644 desktop/src/icons/BellDuotone.tsx delete mode 100644 desktop/src/icons/Briefcase.tsx delete mode 100644 desktop/src/icons/CPU.tsx delete mode 100644 desktop/src/icons/CheckCircle.tsx delete mode 100644 desktop/src/icons/CircleDuotone.tsx delete mode 100644 desktop/src/icons/CircleWithArrow.tsx delete mode 100644 desktop/src/icons/Clock.tsx delete mode 100644 desktop/src/icons/Close.tsx delete mode 100644 desktop/src/icons/Code.tsx delete mode 100644 desktop/src/icons/Cog.tsx delete mode 100644 desktop/src/icons/CogDuotone.tsx delete mode 100644 desktop/src/icons/CogOutlined.tsx delete mode 100644 desktop/src/icons/CommandLine.tsx delete mode 100644 desktop/src/icons/Connect.tsx delete mode 100644 desktop/src/icons/Dashboard.tsx delete mode 100644 desktop/src/icons/Database.tsx delete mode 100644 desktop/src/icons/Devpod.tsx delete mode 100644 desktop/src/icons/DevsyProBadge.tsx delete mode 100644 desktop/src/icons/DevsyWordmark.tsx delete mode 100644 desktop/src/icons/Ellipsis.tsx delete mode 100644 desktop/src/icons/ExclamationCircle.tsx delete mode 100644 desktop/src/icons/ExclamationTriangle.tsx delete mode 100644 desktop/src/icons/File.tsx delete mode 100644 desktop/src/icons/Folder.tsx delete mode 100644 desktop/src/icons/Form.tsx delete mode 100644 desktop/src/icons/Git.tsx delete mode 100644 desktop/src/icons/GitBranch.tsx delete mode 100644 desktop/src/icons/GitCommit.tsx delete mode 100644 desktop/src/icons/GitPR.tsx delete mode 100644 desktop/src/icons/GitSubPath.tsx delete mode 100644 desktop/src/icons/Globe.tsx delete mode 100644 desktop/src/icons/Gold.tsx delete mode 100644 desktop/src/icons/History.tsx delete mode 100644 desktop/src/icons/Image.tsx delete mode 100644 desktop/src/icons/Laptop.tsx delete mode 100644 desktop/src/icons/LockDuotone.tsx delete mode 100644 desktop/src/icons/Loft.tsx delete mode 100644 desktop/src/icons/LoftDevpodPro.tsx delete mode 100644 desktop/src/icons/MatchCase.tsx delete mode 100644 desktop/src/icons/Memory.tsx delete mode 100644 desktop/src/icons/NotFound.tsx delete mode 100644 desktop/src/icons/Parameters.tsx delete mode 100644 desktop/src/icons/Pause.tsx delete mode 100644 desktop/src/icons/Play.tsx delete mode 100644 desktop/src/icons/Plus.tsx delete mode 100644 desktop/src/icons/Preset.tsx delete mode 100644 desktop/src/icons/ProfileDuotone.tsx delete mode 100644 desktop/src/icons/ProviderPlaceholder.tsx delete mode 100644 desktop/src/icons/Search.tsx delete mode 100644 desktop/src/icons/Sleep.tsx delete mode 100644 desktop/src/icons/Stack3D.tsx delete mode 100644 desktop/src/icons/Status.tsx delete mode 100644 desktop/src/icons/Stop.tsx delete mode 100644 desktop/src/icons/Template.tsx delete mode 100644 desktop/src/icons/Trash.tsx delete mode 100644 desktop/src/icons/User.tsx delete mode 100644 desktop/src/icons/WholeWord.tsx delete mode 100644 desktop/src/icons/WorkspaceStatus.tsx delete mode 100644 desktop/src/icons/defaultProps.tsx delete mode 100644 desktop/src/icons/index.ts delete mode 100644 desktop/src/images/aws_white.svg delete mode 100644 desktop/src/images/community.svg delete mode 100644 desktop/src/images/custom.svg delete mode 100644 desktop/src/images/disconnected.svg delete mode 100644 desktop/src/images/disconnected_dark.svg delete mode 100644 desktop/src/images/empty_default.svg delete mode 100644 desktop/src/images/empty_default_dark.svg delete mode 100644 desktop/src/images/empty_workspace.svg delete mode 100644 desktop/src/images/empty_workspaces.svg delete mode 100644 desktop/src/images/empty_workspaces_dark.svg delete mode 100644 desktop/src/images/index.ts delete mode 100644 desktop/src/images/none.svg delete mode 100644 desktop/src/images/none_dark.svg delete mode 100644 desktop/src/images/vscodebrowser.svg delete mode 100644 desktop/src/lib/debugSettings.ts delete mode 100644 desktop/src/lib/eventManager.ts delete mode 100644 desktop/src/lib/helpers.ts delete mode 100644 desktop/src/lib/index.ts delete mode 100644 desktop/src/lib/modals/index.ts delete mode 100644 desktop/src/lib/modals/useDeleteWorkspaceModal.tsx delete mode 100644 desktop/src/lib/modals/useLoginProModal.tsx delete mode 100644 desktop/src/lib/modals/useRebuildWorkspaceModal.tsx delete mode 100644 desktop/src/lib/modals/useResetWorkspaceModal.tsx delete mode 100644 desktop/src/lib/modals/useStopWorkspaceModal.tsx delete mode 100644 desktop/src/lib/platform.ts delete mode 100644 desktop/src/lib/pro/constants.ts delete mode 100644 desktop/src/lib/pro/index.ts delete mode 100644 desktop/src/lib/pro/name.ts delete mode 100644 desktop/src/lib/pro/parameters.tsx delete mode 100644 desktop/src/lib/pro/source.ts delete mode 100644 desktop/src/lib/pro/time.ts delete mode 100644 desktop/src/lib/pro/useConnectionStatus.tsx delete mode 100644 desktop/src/lib/randomWords.ts delete mode 100644 desktop/src/lib/releases.ts delete mode 100644 desktop/src/lib/result.ts delete mode 100644 desktop/src/lib/sortWorkspaceConstants.ts delete mode 100644 desktop/src/lib/store.ts delete mode 100644 desktop/src/lib/systemInfo.ts delete mode 100644 desktop/src/lib/types.ts delete mode 100644 desktop/src/lib/useDownloadLogs.ts delete mode 100644 desktop/src/lib/useFormErrors.ts delete mode 100644 desktop/src/lib/useHover.ts delete mode 100644 desktop/src/lib/useSelection.ts delete mode 100644 desktop/src/lib/useSortWorkspaces.tsx delete mode 100644 desktop/src/lib/useStoreTroubleshoot.ts delete mode 100644 desktop/src/lib/useUpdate.ts delete mode 100644 desktop/src/lib/useVersion.ts delete mode 100644 desktop/src/lib/validation.ts delete mode 100644 desktop/src/main.tsx rename desktop/src/{contexts/DevsyContext/workspaceStore/types.ts => main/.gitkeep} (100%) create mode 100644 desktop/src/main/__tests__/cli.test.ts create mode 100644 desktop/src/main/__tests__/log-store.test.ts create mode 100644 desktop/src/main/__tests__/state.test.ts create mode 100644 desktop/src/main/cli.ts create mode 100644 desktop/src/main/index.ts create mode 100644 desktop/src/main/ipc.ts create mode 100644 desktop/src/main/log-store.ts create mode 100644 desktop/src/main/pty.ts create mode 100644 desktop/src/main/state.ts create mode 100644 desktop/src/main/tray.ts create mode 100644 desktop/src/main/watcher.ts create mode 100644 desktop/src/preload/.gitkeep create mode 100644 desktop/src/preload/index.ts delete mode 100644 desktop/src/queryKeys.ts create mode 100644 desktop/src/renderer/components.json create mode 100644 desktop/src/renderer/index.html rename desktop/src/{images => renderer/public/icons/ides}/antigravity.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/bob.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/clion.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/codium.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/codium_insiders.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/cursor.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/dataspell.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/fleet.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/goland.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/intellij.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/jupyter.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/jupyter_dark.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/marimo.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/phpstorm.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/positron.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/pycharm.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/rider.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/rstudio.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/rubymine.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/rustrover.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/vscode.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/vscode_insiders.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/webstorm.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/windsurf.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/zed.svg (100%) rename desktop/src/{images => renderer/public/icons/ides}/zed_dark.svg (100%) rename desktop/src/{images => renderer/public/icons/languages}/cpp.svg (100%) rename desktop/src/{images => renderer/public/icons/languages}/dotnet.svg (100%) rename desktop/src/{images => renderer/public/icons/languages}/go.svg (100%) rename desktop/src/{images => renderer/public/icons/languages}/go_dark.svg (100%) rename desktop/src/{images => renderer/public/icons/languages}/java.svg (100%) rename desktop/src/{images => renderer/public/icons/languages}/nodejs.svg (100%) rename desktop/src/{images => renderer/public/icons/languages}/php.svg (100%) rename desktop/src/{images => renderer/public/icons/languages}/php_dark.svg (100%) rename desktop/src/{images => renderer/public/icons/languages}/python.svg (100%) rename desktop/src/{images => renderer/public/icons/languages}/ruby.svg (100%) rename desktop/src/{images => renderer/public/icons/languages}/rust.svg (100%) rename desktop/src/{images => renderer/public/icons/languages}/rust_dark.svg (100%) rename desktop/src/{images => renderer/public/icons/providers}/aws.svg (100%) rename desktop/src/{images => renderer/public/icons/providers}/azure.svg (100%) rename desktop/src/{images => renderer/public/icons/providers}/civo.svg (100%) rename desktop/src/{images => renderer/public/icons/providers}/digitalocean.svg (100%) rename desktop/src/{images => renderer/public/icons/providers}/docker.svg (100%) rename desktop/src/{images => renderer/public/icons/providers}/gcp.svg (100%) rename desktop/src/{images => renderer/public/icons/providers}/kubernetes.svg (100%) rename desktop/src/{images => renderer/public/icons/providers}/provider_placeholder.svg (100%) rename desktop/src/{images => renderer/public/icons/providers}/ssh.svg (100%) rename desktop/src/{images => renderer/public/icons/providers}/terraform.svg (100%) create mode 100644 desktop/src/renderer/src/App.svelte create mode 100644 desktop/src/renderer/src/app.css create mode 100644 desktop/src/renderer/src/css.d.ts create mode 100644 desktop/src/renderer/src/lib/.gitkeep create mode 100644 desktop/src/renderer/src/lib/__mocks__/setup.ts create mode 100644 desktop/src/renderer/src/lib/__mocks__/tauri.ts create mode 100644 desktop/src/renderer/src/lib/components/context/ContextSheet.svelte create mode 100644 desktop/src/renderer/src/lib/components/layout/Breadcrumbs.svelte create mode 100644 desktop/src/renderer/src/lib/components/layout/CommandPalette.svelte create mode 100644 desktop/src/renderer/src/lib/components/layout/ConfirmDialog.svelte create mode 100644 desktop/src/renderer/src/lib/components/layout/NotificationHistory.svelte create mode 100644 desktop/src/renderer/src/lib/components/layout/Sidebar.svelte create mode 100644 desktop/src/renderer/src/lib/components/layout/ThemeSwitcher.svelte create mode 100644 desktop/src/renderer/src/lib/components/log/LogTable.svelte create mode 100644 desktop/src/renderer/src/lib/components/machine/MachineCard.svelte create mode 100644 desktop/src/renderer/src/lib/components/provider/ProviderCard.svelte create mode 100644 desktop/src/renderer/src/lib/components/provider/ProviderIcon.svelte create mode 100644 desktop/src/renderer/src/lib/components/provider/ProviderSheet.svelte create mode 100644 desktop/src/renderer/src/lib/components/terminal/Terminal.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/accordion/accordion-content.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/accordion/accordion-item.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/accordion/accordion-trigger.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/accordion/accordion.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/accordion/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/alert/alert-description.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/alert/alert-title.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/alert/alert.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/alert/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/badge/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-ellipsis.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-item.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-link.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-list.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-page.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-separator.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/breadcrumb/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/button-group/button-group-separator.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/button-group/button-group-text.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/button-group/button-group.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/button-group/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/button/button.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/button/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/card/card-action.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/card/card-content.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/card/card-description.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/card/card-footer.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/card/card-header.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/card/card-title.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/card/card.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/card/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/collapsible/collapsible-content.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/collapsible/collapsible-trigger.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/collapsible/collapsible.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/collapsible/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/command/command-dialog.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/command/command-empty.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/command/command-group.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/command/command-input.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/command/command-item.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/command/command-link-item.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/command/command-list.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/command/command-loading.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/command/command-separator.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/command/command-shortcut.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/command/command.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/command/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/dialog/dialog-close.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dialog/dialog-content.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dialog/dialog-description.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dialog/dialog-footer.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dialog/dialog-header.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dialog/dialog-overlay.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dialog/dialog-portal.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dialog/dialog-title.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dialog/dialog-trigger.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dialog/dialog.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dialog/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/drawer/drawer-close.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/drawer/drawer-content.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/drawer/drawer-description.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/drawer/drawer-footer.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/drawer/drawer-header.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/drawer/drawer-nested.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/drawer/drawer-overlay.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/drawer/drawer-portal.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/drawer/drawer-title.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/drawer/drawer-trigger.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/drawer/drawer.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/drawer/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/dropdown-menu/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/input-group/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/input-group/input-group-addon.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/input-group/input-group-button.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/input-group/input-group-input.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/input-group/input-group-text.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/input-group/input-group-textarea.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/input-group/input-group.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/input/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/input/input.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/kbd/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/kbd/kbd-group.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/kbd/kbd.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/label/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/label/label.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/popover/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/popover/popover-close.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/popover/popover-content.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/popover/popover-portal.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/popover/popover-trigger.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/popover/popover.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/progress/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/progress/progress.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/resizable/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/resizable/resizable-handle.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/resizable/resizable-pane-group.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/scroll-area/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/scroll-area/scroll-area.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/select/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/select/select-content.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/select/select-item.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/select/select-trigger.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/separator/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/separator/separator.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sheet/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/sheet/resizable-sheet-content.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sheet/sheet-close.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sheet/sheet-content.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sheet/sheet-description.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sheet/sheet-footer.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sheet/sheet-header.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sheet/sheet-overlay.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sheet/sheet-portal.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sheet/sheet-title.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sheet/sheet-trigger.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sheet/sheet.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/constants.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/context.svelte.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-content.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-footer.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-group-action.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-group-content.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-group-label.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-group.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-header.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-input.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-inset.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-menu-action.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-menu-badge.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-menu-button.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-menu-item.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-menu-skeleton.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-menu-sub-button.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-menu-sub-item.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-menu-sub.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-menu.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-provider.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-rail.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-separator.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar-trigger.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/sidebar/sidebar.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/skeleton/CardSkeleton.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/skeleton/Skeleton.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/skeleton/TableSkeleton.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/skeleton/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/sonner/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/sonner/sonner.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/spinner/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/spinner/spinner.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/switch/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/switch/switch.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/table/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/table/table-body.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/table/table-caption.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/table/table-cell.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/table/table-footer.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/table/table-head.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/table/table-header.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/table/table-row.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/table/table.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/tabs/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/tabs/tabs-content.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/tabs/tabs-list.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/tabs/tabs-trigger.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/tabs/tabs.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/textarea/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/textarea/textarea.svelte create mode 100644 desktop/src/renderer/src/lib/components/ui/tooltip/index.ts create mode 100644 desktop/src/renderer/src/lib/components/ui/tooltip/tooltip-content.svelte create mode 100644 desktop/src/renderer/src/lib/components/workspace/CreateWorkspaceSheet.svelte create mode 100644 desktop/src/renderer/src/lib/components/workspace/LanguageIcon.svelte create mode 100644 desktop/src/renderer/src/lib/components/workspace/WorkspaceCard.svelte create mode 100644 desktop/src/renderer/src/lib/hooks/is-mobile.svelte.ts create mode 100644 desktop/src/renderer/src/lib/ipc/bridge.ts create mode 100644 desktop/src/renderer/src/lib/ipc/commands.test.ts create mode 100644 desktop/src/renderer/src/lib/ipc/commands.ts create mode 100644 desktop/src/renderer/src/lib/ipc/events.ts create mode 100644 desktop/src/renderer/src/lib/ipc/mock.ts create mode 100644 desktop/src/renderer/src/lib/ipc/terminal.test.ts create mode 100644 desktop/src/renderer/src/lib/ipc/terminal.ts create mode 100644 desktop/src/renderer/src/lib/ipc/types.ts create mode 100644 desktop/src/renderer/src/lib/router.ts create mode 100644 desktop/src/renderer/src/lib/stores/command-palette.test.ts create mode 100644 desktop/src/renderer/src/lib/stores/command-palette.ts create mode 100644 desktop/src/renderer/src/lib/stores/contexts.test.ts create mode 100644 desktop/src/renderer/src/lib/stores/contexts.ts create mode 100644 desktop/src/renderer/src/lib/stores/machines.test.ts create mode 100644 desktop/src/renderer/src/lib/stores/machines.ts create mode 100644 desktop/src/renderer/src/lib/stores/providers.test.ts create mode 100644 desktop/src/renderer/src/lib/stores/providers.ts create mode 100644 desktop/src/renderer/src/lib/stores/settings.test.ts create mode 100644 desktop/src/renderer/src/lib/stores/settings.ts create mode 100644 desktop/src/renderer/src/lib/stores/terminal-instances.ts create mode 100644 desktop/src/renderer/src/lib/stores/terminals.test.ts create mode 100644 desktop/src/renderer/src/lib/stores/terminals.ts create mode 100644 desktop/src/renderer/src/lib/stores/toasts.test.ts create mode 100644 desktop/src/renderer/src/lib/stores/toasts.ts create mode 100644 desktop/src/renderer/src/lib/stores/workspaces.test.ts create mode 100644 desktop/src/renderer/src/lib/stores/workspaces.ts create mode 100644 desktop/src/renderer/src/lib/types/index.ts create mode 100644 desktop/src/renderer/src/lib/utils.ts create mode 100644 desktop/src/renderer/src/lib/utils/error.ts create mode 100644 desktop/src/renderer/src/lib/utils/log-parser.ts create mode 100644 desktop/src/renderer/src/lib/utils/time.test.ts create mode 100644 desktop/src/renderer/src/lib/utils/time.ts create mode 100644 desktop/src/renderer/src/main.ts create mode 100644 desktop/src/renderer/src/pages/ContextsPage.svelte create mode 100644 desktop/src/renderer/src/pages/DashboardPage.svelte create mode 100644 desktop/src/renderer/src/pages/MachineDetailPage.svelte create mode 100644 desktop/src/renderer/src/pages/MachinesPage.svelte create mode 100644 desktop/src/renderer/src/pages/NotFoundPage.svelte create mode 100644 desktop/src/renderer/src/pages/ProviderAddPage.svelte create mode 100644 desktop/src/renderer/src/pages/ProviderDetailPage.svelte create mode 100644 desktop/src/renderer/src/pages/ProvidersPage.svelte create mode 100644 desktop/src/renderer/src/pages/SettingsPage.svelte create mode 100644 desktop/src/renderer/src/pages/SshKeysPage.svelte create mode 100644 desktop/src/renderer/src/pages/TerminalsPage.svelte create mode 100644 desktop/src/renderer/src/pages/WorkspaceDetailPage.svelte create mode 100644 desktop/src/renderer/src/pages/WorkspacesPage.svelte create mode 100644 desktop/src/renderer/tsconfig.json delete mode 100644 desktop/src/routes.constants.ts delete mode 100644 desktop/src/routes.tsx delete mode 100644 desktop/src/runner.ts delete mode 100644 desktop/src/types.ts delete mode 100644 desktop/src/useCommunityContributions.ts delete mode 100644 desktop/src/useIDEs.ts delete mode 100644 desktop/src/useWelcomeModal.tsx delete mode 100644 desktop/src/views/Actions/Action.tsx delete mode 100644 desktop/src/views/Actions/Actions.tsx delete mode 100644 desktop/src/views/Actions/index.ts delete mode 100644 desktop/src/views/Actions/useActionTitle.tsx delete mode 100644 desktop/src/views/Pro/BackToWorkspaces.tsx delete mode 100644 desktop/src/views/Pro/CreateWorkspace/CreateWorkspace.tsx delete mode 100644 desktop/src/views/Pro/CreateWorkspace/CreateWorkspaceForm.tsx delete mode 100644 desktop/src/views/Pro/CreateWorkspace/DevContainerInput.tsx delete mode 100644 desktop/src/views/Pro/CreateWorkspace/IDEInput.tsx delete mode 100644 desktop/src/views/Pro/CreateWorkspace/InfrastructureTemplateInput.tsx delete mode 100644 desktop/src/views/Pro/CreateWorkspace/PresetInput.tsx delete mode 100644 desktop/src/views/Pro/CreateWorkspace/RunnerInput.tsx delete mode 100644 desktop/src/views/Pro/CreateWorkspace/SourceInput.tsx delete mode 100644 desktop/src/views/Pro/CreateWorkspace/UpdateWorkspace.tsx delete mode 100644 desktop/src/views/Pro/CreateWorkspace/index.ts delete mode 100644 desktop/src/views/Pro/CreateWorkspace/types.ts delete mode 100644 desktop/src/views/Pro/Credentials/AddGitHTTPCredentials.tsx delete mode 100644 desktop/src/views/Pro/Credentials/AddGitSSHCredentials.tsx delete mode 100644 desktop/src/views/Pro/Credentials/Credentials.tsx delete mode 100644 desktop/src/views/Pro/Credentials/index.ts delete mode 100644 desktop/src/views/Pro/ListWorkspaces.tsx delete mode 100644 desktop/src/views/Pro/ProInstance.tsx delete mode 100644 desktop/src/views/Pro/Profile.tsx delete mode 100644 desktop/src/views/Pro/SelectPreset/SelectPreset.tsx delete mode 100644 desktop/src/views/Pro/SelectPreset/index.ts delete mode 100644 desktop/src/views/Pro/Settings.tsx delete mode 100644 desktop/src/views/Pro/Workspace/Configuration.tsx delete mode 100644 desktop/src/views/Pro/Workspace/Logs.tsx delete mode 100644 desktop/src/views/Pro/Workspace/Tabs.tsx delete mode 100644 desktop/src/views/Pro/Workspace/Workspace.tsx delete mode 100644 desktop/src/views/Pro/Workspace/WorkspaceCardHeader.tsx delete mode 100644 desktop/src/views/Pro/Workspace/WorkspaceDetails.tsx delete mode 100644 desktop/src/views/Pro/Workspace/WorkspaceInstanceCard.tsx delete mode 100644 desktop/src/views/Pro/Workspace/WorkspaceStatus.tsx delete mode 100644 desktop/src/views/Pro/Workspace/index.ts delete mode 100644 desktop/src/views/Pro/Workspace/status.ts delete mode 100644 desktop/src/views/Pro/Workspace/types.ts delete mode 100644 desktop/src/views/Pro/Workspace/useTemplate.ts delete mode 100644 desktop/src/views/Pro/helpers.ts delete mode 100644 desktop/src/views/Pro/index.ts delete mode 100644 desktop/src/views/Providers/AddProvider/ConfigureProviderOptionsForm.tsx delete mode 100644 desktop/src/views/Providers/AddProvider/LoadingProviderIndicator.tsx delete mode 100644 desktop/src/views/Providers/AddProvider/OptionFormField.tsx delete mode 100644 desktop/src/views/Providers/AddProvider/SetupClonedProvider.tsx delete mode 100644 desktop/src/views/Providers/AddProvider/SetupProviderSourceForm.tsx delete mode 100644 desktop/src/views/Providers/AddProvider/SetupProviderSteps.tsx delete mode 100644 desktop/src/views/Providers/AddProvider/helpers.ts delete mode 100644 desktop/src/views/Providers/AddProvider/index.ts delete mode 100644 desktop/src/views/Providers/AddProvider/types.ts delete mode 100644 desktop/src/views/Providers/AddProvider/useAddProvider.ts delete mode 100644 desktop/src/views/Providers/AddProvider/useProviderOptions.ts delete mode 100644 desktop/src/views/Providers/AddProvider/useSetupProvider.ts delete mode 100644 desktop/src/views/Providers/ListProviders.tsx delete mode 100644 desktop/src/views/Providers/Provider.tsx delete mode 100644 desktop/src/views/Providers/ProviderCard.tsx delete mode 100644 desktop/src/views/Providers/Providers.tsx delete mode 100644 desktop/src/views/Providers/helpers.ts delete mode 100644 desktop/src/views/Providers/index.ts delete mode 100644 desktop/src/views/Providers/useDeleteProviderModal.tsx delete mode 100644 desktop/src/views/Providers/useProviderTitle.tsx delete mode 100644 desktop/src/views/Providers/useSetupProviderModal.tsx delete mode 100644 desktop/src/views/Settings/ClearableInput.tsx delete mode 100644 desktop/src/views/Settings/Settings.tsx delete mode 100644 desktop/src/views/Settings/index.ts delete mode 100644 desktop/src/views/Settings/useContextOptions.tsx delete mode 100644 desktop/src/views/Settings/useIDESettings.tsx delete mode 100644 desktop/src/views/Settings/useSettingsOptions.tsx delete mode 100644 desktop/src/views/Workspaces/CreateWorkspace/CreateWorkspace.tsx delete mode 100644 desktop/src/views/Workspaces/CreateWorkspace/ProviderOptionsPopover.tsx delete mode 100644 desktop/src/views/Workspaces/CreateWorkspace/WorkspaceSourceInput.tsx delete mode 100644 desktop/src/views/Workspaces/CreateWorkspace/constants.ts delete mode 100644 desktop/src/views/Workspaces/CreateWorkspace/index.ts delete mode 100644 desktop/src/views/Workspaces/CreateWorkspace/types.ts delete mode 100644 desktop/src/views/Workspaces/CreateWorkspace/useCreateWorkspaceForm.tsx delete mode 100644 desktop/src/views/Workspaces/ListWorkspaces.tsx delete mode 100644 desktop/src/views/Workspaces/WorkspaceCard.tsx delete mode 100644 desktop/src/views/Workspaces/WorkspaceControls.tsx delete mode 100644 desktop/src/views/Workspaces/WorkspaceStatusBadge.tsx delete mode 100644 desktop/src/views/Workspaces/Workspaces.tsx delete mode 100644 desktop/src/views/Workspaces/index.ts delete mode 100644 desktop/src/views/Workspaces/useWorkspaceTitle.tsx delete mode 100644 desktop/src/views/index.ts delete mode 100644 desktop/src/vite-env.d.ts delete mode 100644 desktop/tsconfig.node.json delete mode 100644 desktop/update-window/index.html delete mode 100644 desktop/update-window/src/main.tsx delete mode 100644 desktop/vite.config.ts create mode 100644 desktop/vitest.config.ts delete mode 100644 desktop/yarn.lock diff --git a/.github/workflows/act.yml b/.github/workflows/act.yml index 29dc7fe94..c20488713 100644 --- a/.github/workflows/act.yml +++ b/.github/workflows/act.yml @@ -72,27 +72,19 @@ jobs: - name: setup Node uses: actions/setup-node@v6 with: - node-version: "24" + node-version: "22" - name: install dependencies working-directory: ./desktop - run: corepack enable yarn && yarn install - - - name: lint - working-directory: ./desktop - run: yarn lint:ci + run: npm ci - - name: format + - name: check working-directory: ./desktop - run: yarn format:check + run: npm run check - - name: type check + - name: test working-directory: ./desktop - run: yarn types:check - - - name: build - working-directory: ./desktop - run: yarn build + run: npm run test build-desktop: name: Build Desktop App @@ -103,81 +95,48 @@ jobs: - name: setup Node uses: actions/setup-node@v6 with: - node-version: "24" - - - name: install desktop dependencies - working-directory: ./desktop - run: corepack enable yarn && yarn install + node-version: "22" - uses: actions/setup-go@v6 with: go-version-file: go.mod - - uses: goreleaser/goreleaser-action@v7 - with: - distribution: goreleaser - version: "~> v2" - args: build --id devsy-linux --snapshot + - name: build CLI binary + run: | + GOOS=linux GOARCH=amd64 go build -o desktop/resources/bin/devsy . + chmod +x desktop/resources/bin/devsy - - name: setup Rust - uses: dtolnay/rust-toolchain@stable + - uses: actions/setup-python@v6 with: - targets: x86_64-unknown-linux-gnu + python-version: "3.12" - - name: setup Rust cache - uses: swatinem/rust-cache@v2 - with: - workspaces: "./desktop/src-tauri -> target" + - name: install setuptools + run: pip install setuptools - - name: setup executable - shell: bash - working-directory: ./desktop/src-tauri - run: | - mkdir -p ./bin/ - find "../../dist" -type f -name "devsy-*" -exec mv {} ./bin \; - find ./bin -type f -name "devsy-*" -exec chmod +x {} \; + - name: install dependencies + working-directory: ./desktop + run: npm ci - - name: rename binaries for desktop build - shell: bash - working-directory: ./desktop/src-tauri - run: find ./bin -type f -name "devsy-linux-amd64" -exec mv {} ./bin/devsy-x86_64-unknown-linux-gnu \; + - name: install xvfb + run: sudo apt-get update && sudo apt-get install -y xvfb - - name: install linux dependencies - run: | - sudo apt-get update && sudo apt-get install -y \ - libayatana-appindicator3-dev \ - libgtk-3-dev \ - librsvg2-dev \ - libwebkit2gtk-4.1-dev \ - patchelf - - - name: generate signing key and update config - id: generate + - name: build and test working-directory: ./desktop - shell: bash run: | - # throwaway signing key for test CI builds - yarn tauri signer generate --ci -w ./app.key -p "github-actions" - TAURI_PUBKEY=$(cat ./app.key.pub) - jq --arg pubkey "$TAURI_PUBKEY" '.plugins.updater.pubkey = $pubkey' src-tauri/tauri.conf.json > tmp.json && mv tmp.json src-tauri/tauri.conf.json + npm run electron:build + xvfb-run npx playwright test - - name: tauri build - uses: tauri-apps/tauri-action@v0.6 - with: - projectPath: "./desktop" - args: --target x86_64-unknown-linux-gnu --bundles deb - assetNamePattern: "[name]_[platform]_[arch][ext]" + - name: package with electron-builder + working-directory: ./desktop + run: npx electron-builder --linux --config electron-builder.yml env: - GITHUB_TOKEN: ${{ github.token }} - TAURI_SIGNING_PRIVATE_KEY: "${{ github.workspace }}/desktop/app.key" - TAURI_SIGNING_PRIVATE_KEY_PASSWORD: "github-actions" - CI: true + GH_TOKEN: ${{ github.token }} - name: upload desktop linux artifact for flatpak - uses: actions/upload-artifact@v4 # pin to v4 for act support, see https://nektosact.com/usage/index.html?highlight=artif#action-artifacts + uses: actions/upload-artifact@v4 # pin to v4 for act support with: name: devsy-flatpak - path: ./desktop/src-tauri/target/x86_64-unknown-linux-gnu/release/bundle/deb/Devsy_*_amd64.deb + path: desktop/release/*.deb build-flatpak: name: Build Flatpak @@ -189,37 +148,25 @@ jobs: steps: - uses: actions/checkout@v6 - - name: clone shared-modules - run: git clone https://github.com/flathub/shared-modules.git desktop/flatpak/shared-modules - - name: download desktop linux artifact - uses: actions/download-artifact@v4 # pin to v4 for act support, see https://nektosact.com/usage/index.html?highlight=artif#action-artifacts + uses: actions/download-artifact@v4 # pin to v4 for act support with: name: devsy-flatpak - path: /tmp/devsy/ + path: desktop/flatpak/ - # Use GITHUB_WORKSPACE in containers because the path differs from github.workspace - # for more details, see https://github.com/actions/checkout/issues/785 - - name: prepare flatpak manifest for PR build - shell: bash + - name: find and rename .deb file + working-directory: desktop/flatpak run: | - sed -i "s|url: https://github.com/devsy-org/devsy/releases/download/\${VERSION}/Devsy_linux_amd64.deb|path: /tmp/devsy/Devsy_0.0.0_amd64.deb|" "$GITHUB_WORKSPACE/desktop/flatpak/sh.devsy.devsy.yml" - sed -i "s|url: https://github.com/devsy-org/devsy/releases/download/\${VERSION}/Devsy.desktop|path: $GITHUB_WORKSPACE/desktop/flatpak/Devsy.desktop|" "$GITHUB_WORKSPACE/desktop/flatpak/sh.devsy.devsy.yml" - sed -i "s|url: https://github.com/devsy-org/devsy/releases/download/\${VERSION}/Devsy.metainfo.xml|path: $GITHUB_WORKSPACE/desktop/flatpak/Devsy.metainfo.xml|" "$GITHUB_WORKSPACE/desktop/flatpak/sh.devsy.devsy.yml" - sed -i "/sha256: \${SHA256}/d" "$GITHUB_WORKSPACE/desktop/flatpak/sh.devsy.devsy.yml" - sed -i "/sha256: \${DESKTOP_SHA256}/d" "$GITHUB_WORKSPACE/desktop/flatpak/sh.devsy.devsy.yml" - sed -i "/sha256: \${META_SHA256}/d" "$GITHUB_WORKSPACE/desktop/flatpak/sh.devsy.devsy.yml" - - - name: update flatpak metadata version and date - run: | - DATE=$(date +%Y-%m-%d) - VERSION="v0.0.0" - - sed -i "s/__VERSION__/${VERSION}/g" "$GITHUB_WORKSPACE/desktop/flatpak/Devsy.metainfo.xml" - sed -i "s/__DATE__/${DATE}/g" "$GITHUB_WORKSPACE/desktop/flatpak/Devsy.metainfo.xml" + DEB=$(find . -maxdepth 1 -name '*.deb' -print -quit) + if [ -n "$DEB" ]; then + mv "$DEB" devsy-desktop.deb + else + echo "No .deb file found" + exit 1 + fi - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 with: bundle: Devsy.flatpak - manifest-path: desktop/flatpak/sh.devsy.devsy.yml + manifest-path: desktop/flatpak/dev.devsy.app.yml upload-artifact: false diff --git a/.github/workflows/desktop-ci.yml b/.github/workflows/desktop-ci.yml new file mode 100644 index 000000000..e63f111a3 --- /dev/null +++ b/.github/workflows/desktop-ci.yml @@ -0,0 +1,205 @@ +name: Desktop CI + +on: + push: + branches: [electron-ui, main] + paths: + - "desktop/**" + - ".github/workflows/desktop-ci.yml" + pull_request: + paths: + - "desktop/**" + - ".github/workflows/desktop-ci.yml" + workflow_dispatch: + +concurrency: + group: desktop-ci-${{ github.ref }} + cancel-in-progress: true + +jobs: + lint-and-test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + + - uses: actions/setup-node@v6 + with: + node-version: 22 + cache: npm + cache-dependency-path: desktop/package-lock.json + + - name: Install dependencies + working-directory: desktop + run: npm ci + + - name: Type check + working-directory: desktop + run: npm run check + + - name: Unit tests + working-directory: desktop + run: npm run test + + build-desktop: + needs: lint-and-test + strategy: + fail-fast: false + matrix: + include: + - os: macos-latest + go-os: darwin + go-arch: universal + builder-args: --mac + - os: windows-2022 + go-os: windows + go-arch: amd64 + builder-args: --win + - os: ubuntu-latest + go-os: linux + go-arch: amd64 + builder-args: --linux + + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v6 + + - uses: actions/setup-go@v6 + with: + go-version-file: go.mod + + - uses: actions/setup-node@v6 + with: + node-version: 22 + cache: npm + cache-dependency-path: desktop/package-lock.json + + # ── Build Go CLI binary ── + - name: Build CLI (unix) + if: runner.os != 'Windows' + run: | + if [ "${{ matrix.go-arch }}" = "universal" ]; then + # macOS universal binary: build both architectures and lipo them + GOOS=darwin GOARCH=amd64 go build -o devsy-amd64 . + GOOS=darwin GOARCH=arm64 go build -o devsy-arm64 . + lipo -create -output desktop/resources/bin/devsy devsy-amd64 devsy-arm64 + rm devsy-amd64 devsy-arm64 + else + GOOS=${{ matrix.go-os }} GOARCH=${{ matrix.go-arch }} go build -o desktop/resources/bin/devsy . + fi + chmod +x desktop/resources/bin/devsy + + - name: Build CLI (windows) + if: runner.os == 'Windows' + shell: pwsh + run: | + $env:GOOS = "windows" + $env:GOARCH = "amd64" + go build -o desktop/resources/bin/devsy.exe . + + # ── Windows native build tools ── + - name: Configure Windows build tools + if: runner.os == 'Windows' + shell: pwsh + run: echo "GYP_MSVS_VERSION=2022" >> $env:GITHUB_ENV + + # ── Setup Python for native module builds ── + - name: Setup Python + uses: actions/setup-python@v6 + with: + python-version: "3.12" + + - name: Install setuptools + run: pip install setuptools + + # ── Install Electron dependencies ── + - name: Install dependencies + working-directory: desktop + run: npm ci + + # ── Install xvfb on Linux for e2e tests ── + - name: Install xvfb + if: runner.os == 'Linux' + run: sudo apt-get update && sudo apt-get install -y xvfb + + # ── E2E tests ── + - name: Run e2e tests (Linux) + if: runner.os == 'Linux' + working-directory: desktop + run: | + npm run electron:build + xvfb-run npx playwright test + + - name: Run e2e tests (macOS/Windows) + if: runner.os != 'Linux' + working-directory: desktop + run: | + npm run electron:build + npx playwright test + + # ── Package ── + - name: Package with electron-builder + working-directory: desktop + run: npx electron-builder ${{ matrix.builder-args }} --config electron-builder.yml + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # macOS signing (set these secrets when ready): + # CSC_LINK: ${{ secrets.CSC_LINK }} + # CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} + # APPLE_ID: ${{ secrets.APPLE_ID }} + # APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }} + # APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} + + # ── Upload artifacts ── + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: desktop-${{ matrix.os }} + path: | + desktop/release/*.dmg + desktop/release/*.zip + desktop/release/*.exe + desktop/release/*.AppImage + desktop/release/*.deb + desktop/release/*.rpm + if-no-files-found: warn + + build-flatpak: + needs: build-desktop + runs-on: ubuntu-latest + container: + image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-48 + options: --privileged + + steps: + - uses: actions/checkout@v6 + + - name: Download Linux .deb artifact + uses: actions/download-artifact@v4 + with: + name: desktop-ubuntu-latest + path: desktop/flatpak/ + + - name: Find and rename .deb file + working-directory: desktop/flatpak + run: | + DEB=$(find . -maxdepth 1 -name '*.deb' -print -quit) + if [ -n "$DEB" ]; then + mv "$DEB" devsy-desktop.deb + else + echo "No .deb file found" + exit 1 + fi + + - name: Build Flatpak + uses: flatpak/flatpak-github-actions/flatpak-builder@v6 + with: + manifest-path: desktop/flatpak/dev.devsy.app.yml + bundle: Devsy.flatpak + cache-key: flatpak-builder-${{ github.sha }} + + - name: Upload Flatpak artifact + uses: actions/upload-artifact@v4 + with: + name: desktop-flatpak + path: Devsy.flatpak diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index f09e8c896..11e3d75ad 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -12,6 +12,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 + with: + fetch-depth: 0 - name: setup Go uses: actions/setup-go@v6 @@ -22,7 +24,7 @@ jobs: uses: golangci/golangci-lint-action@v9 with: version: latest - only-new-issues: true + args: ${{ github.event_name == 'pull_request' && '--new-from-rev=origin/main' || '' }} - name: megalinter uses: oxsecurity/megalinter@v9 diff --git a/.github/workflows/pr-ci.yml b/.github/workflows/pr-ci.yml index a5e3fd371..aade43fce 100644 --- a/.github/workflows/pr-ci.yml +++ b/.github/workflows/pr-ci.yml @@ -20,6 +20,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 + with: + fetch-depth: 0 - name: setup Go uses: actions/setup-go@v6 @@ -30,7 +32,8 @@ jobs: uses: golangci/golangci-lint-action@v9 with: version: latest - only-new-issues: true + only-new-issues: false + args: ${{ github.event_name == 'pull_request' && '--new-from-rev=origin/main' || '' }} can-read-secret: name: Can Read Secret @@ -47,38 +50,6 @@ jobs: echo "secret-set=true" >> "$GITHUB_OUTPUT" fi - build-ui: - name: User Interface Build - needs: [precommit, lint-gate] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v6 - - - name: setup Node - uses: actions/setup-node@v6 - with: - node-version: "latest" - - - name: install dependencies - working-directory: ./desktop - run: yarn install --frozen-lockfile - - - name: lint - working-directory: ./desktop - run: yarn lint:ci - - - name: format - working-directory: ./desktop - run: yarn format:check - - - name: type check - working-directory: ./desktop - run: yarn types:check - - - name: build - working-directory: ./desktop - run: yarn build - build-cli: name: Build CLI Binary on ${{ matrix.runner }} needs: [precommit, lint-gate] @@ -588,190 +559,3 @@ jobs: - name: verify docker is installed if: matrix.label == 'docker-install' && (matrix.requires-secret == false || needs.can-read-secret.outputs.secret-set == 'true') run: docker --version && docker ps - - build-desktop: - name: Build Desktop App for ${{ matrix.arch }} on ${{ matrix.runner }} - needs: build-cli - strategy: - matrix: - include: - - arch: amd64 - target: x86_64-unknown-linux-gnu - runner: ubuntu-22.04 - tauri_include_updater_json: true - tauri_ci: true - - - arch: amd64 - target: x86_64-apple-darwin - runner: macos-latest - tauri_include_updater_json: true - tauri_ci: true - - - arch: arm64 - target: aarch64-apple-darwin - runner: macos-latest - tauri_include_updater_json: true - tauri_ci: false # https://github.com/tauri-apps/tauri/issues/3055 - - - arch: amd64 - target: x86_64-pc-windows-msvc - runner: windows-latest - tauri_include_updater_json: true - tauri_ci: true - runs-on: ${{ matrix.runner }} - steps: - - uses: actions/checkout@v6 - - - name: setup Node - uses: actions/setup-node@v6 - with: - node-version: "latest" - - - name: setup Rust - uses: dtolnay/rust-toolchain@stable - with: - targets: ${{ matrix.target }} - - - name: Rust cache - uses: swatinem/rust-cache@v2 - with: - workspaces: "./desktop/src-tauri -> target" - shared-key: "desktop-${{ matrix.runner }}" - cache-bin: "false" - - - name: get operating system lowercase - id: os - shell: bash - run: | - OS=$(echo "${{ runner.os }}" | tr '[:upper:]' '[:lower:]') - if [ "$OS" == "macos" ]; then - OS="darwin" - fi - echo "runner_os=$OS" >> "$GITHUB_OUTPUT" - - - name: download CLI artifacts - uses: actions/download-artifact@v8 - with: - pattern: devsy-* - path: ${{ runner.temp }}/devsy-bin/ - merge-multiple: true - - - name: setup executable - shell: bash - working-directory: ./desktop/src-tauri - run: | - TEMP_DIR="${{ runner.temp }}" - if [ "${{ runner.os }}" == "Windows" ]; then - TEMP_DIR="${TEMP_DIR//\\//}" - fi - - ls -R "$TEMP_DIR/devsy-bin/" - mkdir -p ./bin/ - find "$TEMP_DIR/devsy-bin/" -type f -name "devsy-*" -exec cp {} ./bin \; - find ./bin -type f -name "devsy-*" -exec chmod +x {} \; - - find ./bin -type f -name "devsy-linux-amd64" -exec mv {} ./bin/devsy-x86_64-unknown-linux-gnu \; - find ./bin -type f -name "devsy-linux-arm64" -exec mv {} ./bin/devsy-aarch64-unknown-linux-gnu \; - find ./bin -type f -name "devsy-darwin-amd64" -exec mv {} ./bin/devsy-x86_64-apple-darwin \; - find ./bin -type f -name "devsy-darwin-arm64" -exec mv {} ./bin/devsy-aarch64-apple-darwin \; - find ./bin -type f -name "devsy-windows-amd64.exe" -exec mv {} ./bin/devsy-x86_64-pc-windows-msvc.exe \; - find ./bin -type f -name "devsy-windows-arm64.exe" -exec mv {} ./bin/devsy-aarch64-pc-windows-msvc.exe \; - - ls -R ./bin/ - - # Linux prerequisites: https://tauri.app/start/prerequisites/#linux - - name: install linux dependencies - if: runner.os == 'Linux' - run: | - sudo apt-get update && sudo apt-get install -y \ - libwebkit2gtk-4.1-dev \ - build-essential \ - curl \ - wget \ - file \ - libxdo-dev \ - libssl-dev \ - libayatana-appindicator3-dev \ - librsvg2-dev - - - name: install desktop dependencies - working-directory: ./desktop - run: yarn install --frozen-lockfile - - - name: generate signing key and update config - id: generate - working-directory: ./desktop - shell: bash - run: | - # throwaway signing key for test CI builds - yarn tauri signer generate --ci -w ./app.key -p "github-actions" - TAURI_PUBKEY=$(cat ./app.key.pub) - jq --arg pubkey "$TAURI_PUBKEY" '.plugins.updater.pubkey = $pubkey' src-tauri/tauri.conf.json > tmp.json && mv tmp.json src-tauri/tauri.conf.json - - - name: tauri build - uses: tauri-apps/tauri-action@v0.6 - with: - projectPath: "./desktop" - args: "--target ${{ matrix.target }}" - includeUpdaterJson: ${{ matrix.tauri_include_updater_json }} - assetNamePattern: "[name]_[platform]_[arch][ext]" - retryAttempts: 1 - env: - GITHUB_TOKEN: ${{ github.token }} - TAURI_SIGNING_PRIVATE_KEY: "${{ github.workspace }}/desktop/app.key" - TAURI_SIGNING_PRIVATE_KEY_PASSWORD: "github-actions" - CI: ${{ matrix.tauri_ci }} - - - name: upload artifacts - uses: actions/upload-artifact@v7 - with: - name: desktop-${{ matrix.runner }}-${{ matrix.arch }} - path: desktop/src-tauri/target/${{ matrix.target }}/release/bundle/**/* - - build-flatpak: - name: Build Flatpak - # Use Ubuntu 22.04 to build the flatpak for compatibility with older glibc versions. - # For more details, see https://v2.tauri.app/distribute/appimage/ - runs-on: ubuntu-22.04 - needs: [build-desktop] - container: - image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-48 - options: --privileged - steps: - - uses: actions/checkout@v6 - - - name: clone shared-modules - run: git clone https://github.com/flathub/shared-modules.git desktop/flatpak/shared-modules - - - name: download desktop linux artifact - uses: actions/download-artifact@v8 - with: - name: desktop-ubuntu-22.04-amd64 - path: /tmp/devsy/ - - # Use GITHUB_WORKSPACE in containers because the path differs from github.workspace - # for more details, see https://github.com/actions/checkout/issues/785 - - name: prepare flatpak manifest for PR build - shell: bash - run: | - sed -i "s|url: https://github.com/devsy-org/devsy/releases/download/\${VERSION}/Devsy_linux_amd64.deb|path: /tmp/devsy/deb/Devsy_0.0.0_amd64.deb|" "$GITHUB_WORKSPACE/desktop/flatpak/sh.devsy.devsy.yml" - sed -i "s|url: https://github.com/devsy-org/devsy/releases/download/\${VERSION}/Devsy.desktop|path: $GITHUB_WORKSPACE/desktop/flatpak/Devsy.desktop|" "$GITHUB_WORKSPACE/desktop/flatpak/sh.devsy.devsy.yml" - sed -i "s|url: https://github.com/devsy-org/devsy/releases/download/\${VERSION}/Devsy.metainfo.xml|path: $GITHUB_WORKSPACE/desktop/flatpak/Devsy.metainfo.xml|" "$GITHUB_WORKSPACE/desktop/flatpak/sh.devsy.devsy.yml" - sed -i "/sha256: \${SHA256}/d" "$GITHUB_WORKSPACE/desktop/flatpak/sh.devsy.devsy.yml" - sed -i "/sha256: \${DESKTOP_SHA256}/d" "$GITHUB_WORKSPACE/desktop/flatpak/sh.devsy.devsy.yml" - sed -i "/sha256: \${META_SHA256}/d" "$GITHUB_WORKSPACE/desktop/flatpak/sh.devsy.devsy.yml" - - - name: update flatpak metadata version and date - run: | - DATE=$(date +%Y-%m-%d) - VERSION="v0.0.0" - - sed -i "s/__VERSION__/${VERSION}/g" "$GITHUB_WORKSPACE/desktop/flatpak/Devsy.metainfo.xml" - sed -i "s/__DATE__/${DATE}/g" "$GITHUB_WORKSPACE/desktop/flatpak/Devsy.metainfo.xml" - - - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 - with: - bundle: Devsy.flatpak - manifest-path: desktop/flatpak/sh.devsy.devsy.yml - cache-key: flatpak-builder-${{ github.sha }} - upload-artifact: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 243ebf66e..a69c1be5a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -50,56 +50,39 @@ jobs: path: dist/devsy-${{ steps.os.outputs.runner_os }}_*/devsy-${{ steps.os.outputs.runner_os }}-* build-desktop: - name: Build Desktop App for ${{ matrix.arch }} on ${{ matrix.runner }} + name: Build Desktop App on ${{ matrix.os }} needs: build-cli permissions: contents: write strategy: + fail-fast: false matrix: include: - - arch: amd64 - target: x86_64-unknown-linux-gnu - runner: ubuntu-22.04 - tauri_include_updater_json: true - tauri_ci: true - - - arch: amd64 - target: x86_64-apple-darwin - runner: macos-latest - tauri_include_updater_json: true - tauri_ci: true - - - arch: arm64 - target: aarch64-apple-darwin - runner: macos-latest - tauri_include_updater_json: true - tauri_ci: false # https://github.com/tauri-apps/tauri/issues/3055 - - - arch: amd64 - target: x86_64-pc-windows-msvc - runner: windows-latest - tauri_include_updater_json: true - tauri_ci: true - runs-on: ${{ matrix.runner }} + - os: ubuntu-22.04 + go-os: linux + go-arch: amd64 + builder-args: --linux + - os: macos-latest + go-os: darwin + go-arch: universal + builder-args: --mac + - os: windows-latest + go-os: windows + go-arch: amd64 + builder-args: --win + runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v6 - - name: setup Node - uses: actions/setup-node@v6 + - uses: actions/setup-node@v6 with: - node-version: "latest" + node-version: 22 + cache: npm + cache-dependency-path: desktop/package-lock.json - - name: setup Rust - uses: dtolnay/rust-toolchain@stable - with: - targets: ${{ matrix.target }} - - - name: setup Rust cache - uses: swatinem/rust-cache@v2 + - uses: actions/setup-go@v6 with: - workspaces: "./desktop/src-tauri -> target" - shared-key: "desktop-${{ matrix.runner }}" - cache-bin: "false" + go-version-file: go.mod - name: get operating system lowercase id: os @@ -118,78 +101,84 @@ jobs: path: ${{ runner.temp }}/devsy-bin/ merge-multiple: true - - name: setup executable + - name: setup CLI binary (unix) + if: runner.os != 'Windows' shell: bash - working-directory: ./desktop/src-tauri run: | TEMP_DIR="${{ runner.temp }}" - if [ "${{ runner.os }}" == "Windows" ]; then - TEMP_DIR="${TEMP_DIR//\\//}" + mkdir -p desktop/resources/bin + + if [ "${{ matrix.go-arch }}" = "universal" ]; then + # macOS: use both arch binaries for universal build + cp "$TEMP_DIR/devsy-bin/devsy-darwin-amd64" desktop/resources/bin/devsy + chmod +x desktop/resources/bin/devsy + else + cp "$TEMP_DIR/devsy-bin/devsy-${{ matrix.go-os }}-${{ matrix.go-arch }}" desktop/resources/bin/devsy + chmod +x desktop/resources/bin/devsy fi - ls -R "$TEMP_DIR/devsy-bin/" - mkdir -p ./bin/ - find "$TEMP_DIR/devsy-bin/" -type f -name "devsy-*" -exec cp {} ./bin \; - find ./bin -type f -name "devsy-*" -exec chmod +x {} \; - mkdir ../../dist/ && cp ./bin/* ../../dist/ - ls -R ./bin/ + # Also stage binaries for dist/ upload and provider generation + mkdir -p dist/ + find "$TEMP_DIR/devsy-bin/" -type f -name "devsy-*" -exec cp {} dist/ \; + + - name: setup CLI binary (windows) + if: runner.os == 'Windows' + shell: pwsh + run: | + New-Item -ItemType Directory -Force -Path desktop/resources/bin + Copy-Item "${{ runner.temp }}/devsy-bin/devsy-windows-amd64.exe" desktop/resources/bin/devsy.exe - name: generate pro provider if: runner.os == 'Linux' working-directory: ./hack/pro - run: go run ./main.go ${{ inputs.tag || github.ref_name }} ../../desktop/src-tauri/bin > ../../dist/provider.yaml + run: go run ./main.go ${{ inputs.tag || github.ref_name }} ../../desktop/resources/bin > ../../dist/provider.yaml - - name: rename binaries for desktop build - shell: bash - working-directory: ./desktop/src-tauri - run: | - find ./bin -type f -name "devsy-linux-amd64" -exec mv {} ./bin/devsy-x86_64-unknown-linux-gnu \; - find ./bin -type f -name "devsy-linux-arm64" -exec mv {} ./bin/devsy-aarch64-unknown-linux-gnu \; - find ./bin -type f -name "devsy-darwin-amd64" -exec mv {} ./bin/devsy-x86_64-apple-darwin \; - find ./bin -type f -name "devsy-darwin-arm64" -exec mv {} ./bin/devsy-aarch64-apple-darwin \; - find ./bin -type f -name "devsy-windows-amd64.exe" -exec mv {} ./bin/devsy-x86_64-pc-windows-msvc.exe \; - find ./bin -type f -name "devsy-windows-arm64.exe" -exec mv {} ./bin/devsy-aarch64-pc-windows-msvc.exe \; - ls -R ./bin/ + - name: configure Windows build tools + if: runner.os == 'Windows' + shell: pwsh + run: echo "GYP_MSVS_VERSION=2022" >> $env:GITHUB_ENV - - name: install linux dependencies - if: runner.os == 'Linux' - run: | - sudo apt-get update && sudo apt-get install -y \ - libwebkit2gtk-4.1-dev \ - build-essential \ - curl \ - wget \ - file \ - libxdo-dev \ - libssl-dev \ - libayatana-appindicator3-dev \ - librsvg2-dev + - uses: actions/setup-python@v6 + with: + python-version: "3.12" + + - name: install setuptools + run: pip install setuptools + + - name: install dependencies + working-directory: desktop + run: npm ci - - name: install desktop dependencies + - name: set version shell: bash - working-directory: ./desktop + working-directory: desktop run: | - yarn install --frozen-lockfile VERSION=${{ inputs.tag || github.ref_name }} VERSION="${VERSION#v}" - yarn version --new-version "$VERSION" --no-git-tag-version + npm version "$VERSION" --no-git-tag-version - - name: tauri build - uses: tauri-apps/tauri-action@v0.6 - with: - projectPath: "./desktop" - args: "--target ${{ matrix.target }}" - tagName: ${{ inputs.tag || github.ref_name }} - releaseName: "Devsy ${{ inputs.tag || github.ref_name }}" - releaseDraft: true - generateReleaseNotes: true - includeUpdaterJson: ${{ matrix.tauri_include_updater_json }} - assetNamePattern: "[name]_[platform]_[arch][ext]" + - name: install xvfb + if: runner.os == 'Linux' + run: sudo apt-get update && sudo apt-get install -y xvfb + + - name: package with electron-builder + working-directory: desktop + run: npx electron-builder ${{ matrix.builder-args }} --config electron-builder.yml env: - GITHUB_TOKEN: ${{ github.token }} - TAURI_SIGNING_PRIVATE_KEY: "${{ secrets.DEVSY_TAURI_PRIVATE_SIGNING_KEY }}" - TAURI_SIGNING_PRIVATE_KEY_PASSWORD: "${{ secrets.DEVSY_TAURI_PRIVATE_SIGNING_KEY_PASSWORD }}" - CI: ${{ matrix.tauri_ci }} + GH_TOKEN: ${{ github.token }} + + - name: upload release assets + uses: softprops/action-gh-release@v3 + with: + tag_name: ${{ inputs.tag || github.ref_name }} + draft: true + files: | + desktop/release/*.dmg + desktop/release/*.zip + desktop/release/*.exe + desktop/release/*.AppImage + desktop/release/*.deb + desktop/release/*.rpm - name: upload cli assets uses: softprops/action-gh-release@v3 @@ -205,13 +194,11 @@ jobs: uses: actions/upload-artifact@v7 with: name: devsy-flatpak - path: ./desktop/src-tauri/target/x86_64-unknown-linux-gnu/release/bundle/deb/Devsy_*_amd64.deb + path: desktop/release/*.deb build-flatpak: name: Build Flatpak - # Use Ubuntu 22.04 to build the flatpak for compatibility with older glibc versions. - # For more details, see https://v2.tauri.app/distribute/appimage/ - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest needs: [build-desktop] container: image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-48 @@ -219,76 +206,28 @@ jobs: steps: - uses: actions/checkout@v6 - - name: clone shared-modules - run: git clone https://github.com/flathub/shared-modules.git desktop/flatpak/shared-modules - - name: download desktop linux artifact uses: actions/download-artifact@v8 with: name: devsy-flatpak - path: /tmp/devsy/ + path: desktop/flatpak/ - - name: update flatpak metadata version and date - shell: bash - run: | - DATE=$(date +%Y-%m-%d) - VERSION="${{ inputs.tag || github.ref_name }}" - - sed -i "s/__VERSION__/${VERSION}/g" ./desktop/flatpak/Devsy.metainfo.xml - sed -i "s/__DATE__/${DATE}/g" ./desktop/flatpak/Devsy.metainfo.xml - - - name: copy flatpak files to build workspace - shell: bash + - name: find and rename .deb file + working-directory: desktop/flatpak run: | - mkdir -p "$GITHUB_WORKSPACE/desktop/flatpak-build/" - cp -R ./desktop/flatpak/* "$GITHUB_WORKSPACE/desktop/flatpak-build/" - - - name: prepare flatpak assets - shell: bash - run: | - DEB_SHA256=$(sha256sum /tmp/devsy/Devsy_*_amd64.deb | cut -d' ' -f1) - META_SHA256=$(sha256sum ./desktop/flatpak/Devsy.metainfo.xml | cut -d' ' -f1) - DESKTOP_SHA256=$(sha256sum ./desktop/flatpak/Devsy.desktop | cut -d' ' -f1) - - sed -i "s/\${VERSION}/${VERSION}/g" ./desktop/flatpak/sh.devsy.devsy.yml - sed -i "s/\${SHA256}/${DEB_SHA256}/g" ./desktop/flatpak/sh.devsy.devsy.yml - sed -i "s/\${DESKTOP_SHA256}/${DESKTOP_SHA256}/g" ./desktop/flatpak/sh.devsy.devsy.yml - sed -i "s/\${META_SHA256}/${META_SHA256}/g" ./desktop/flatpak/sh.devsy.devsy.yml - - - name: upload flatpak assets - uses: softprops/action-gh-release@v3 - with: - tag_name: ${{ inputs.tag || github.ref_name }} - draft: true - files: | - ./desktop/flatpak/Devsy.metainfo.xml - ./desktop/flatpak/Devsy.desktop - ./desktop/flatpak/sh.devsy.devsy.yml - - - name: restore flatpak manifest for build - shell: bash - run: | - rm -rf "$GITHUB_WORKSPACE/desktop/flatpak/" - mv "$GITHUB_WORKSPACE/desktop/flatpak-build/" "$GITHUB_WORKSPACE/desktop/flatpak/" - - # Use GITHUB_WORKSPACE in containers because the path differs from github.workspace - # for more details, see https://github.com/actions/checkout/issues/785 - - name: prepare flatpak manifest for build - shell: bash - run: | - VERSION="${{ inputs.tag || github.ref_name }}" - VERSION="${VERSION#v}" - sed -i "s|url: https://github.com/devsy-org/devsy/releases/download/\${VERSION}/Devsy_linux_amd64.deb|path: /tmp/devsy/Devsy_${VERSION}_amd64.deb|" "$GITHUB_WORKSPACE/desktop/flatpak/sh.devsy.devsy.yml" - sed -i "s|url: https://github.com/devsy-org/devsy/releases/download/\${VERSION}/Devsy.desktop|path: $GITHUB_WORKSPACE/desktop/flatpak/Devsy.desktop|" "$GITHUB_WORKSPACE/desktop/flatpak/sh.devsy.devsy.yml" - sed -i "s|url: https://github.com/devsy-org/devsy/releases/download/\${VERSION}/Devsy.metainfo.xml|path: $GITHUB_WORKSPACE/desktop/flatpak/Devsy.metainfo.xml|" "$GITHUB_WORKSPACE/desktop/flatpak/sh.devsy.devsy.yml" - sed -i "/sha256: \${SHA256}/d" "$GITHUB_WORKSPACE/desktop/flatpak/sh.devsy.devsy.yml" - sed -i "/sha256: \${DESKTOP_SHA256}/d" "$GITHUB_WORKSPACE/desktop/flatpak/sh.devsy.devsy.yml" - sed -i "/sha256: \${META_SHA256}/d" "$GITHUB_WORKSPACE/desktop/flatpak/sh.devsy.devsy.yml" + DEB=$(find . -maxdepth 1 -name '*.deb' -print -quit) + if [ -n "$DEB" ]; then + mv "$DEB" devsy-desktop.deb + else + echo "No .deb file found" + exit 1 + fi - - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 + - name: build flatpak + uses: flatpak/flatpak-github-actions/flatpak-builder@v6 with: bundle: Devsy.flatpak - manifest-path: desktop/flatpak/sh.devsy.devsy.yml + manifest-path: desktop/flatpak/dev.devsy.app.yml cache-key: flatpak-builder-${{ github.sha }} upload-artifact: true @@ -299,7 +238,6 @@ jobs: draft: true files: | ./Devsy.flatpak - ./Devsy-x86_64.flatpak.zip prerelease: name: Publish Prerelease diff --git a/.gitignore b/.gitignore index 486c41d42..9c9f3d725 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,7 @@ /package-lock.json /tagsvendor/ node_modules/ -desktop/src-tauri/gen/schemas +desktop/dist/ +desktop/release/ +desktop/playwright-report/ +desktop/test-results/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0d8d1506e..b13e33232 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,20 +13,9 @@ Thank you for your interest in contributing to Devsy! This guide will help you g **Desktop Application Development:** -- [NodeJS + yarn](https://nodejs.org/en/) -- [Rust](https://www.rust-lang.org/tools/install) +- [Node.js 22+](https://nodejs.org/en/) (with npm) - [Go 1.20+](https://go.dev/doc/install) - -**Linux Desktop Dependencies:** - -```bash -sudo apt-get install libappindicator3-1 libgdk-pixbuf2.0-0 libbsd0 libxdmcp6 \ - libwmf-0.2-7 libwmf-0.2-7-gtk libgtk-3-0 libwmf-dev libwebkit2gtk-4.0-37 \ - librust-openssl-sys-dev librust-glib-sys-dev - -sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev \ - libayatana-appindicator3-dev librsvg2-dev -``` +- [Python 3.12+](https://www.python.org/) (for native module builds) ### Initial Setup @@ -71,25 +60,25 @@ The binary will be output as `devsy` in the current directory. **Using Task (recommended):** ```bash -# Setup Tauri environment (first time only) -task desktop:tauri:setup +# Setup Electron environment (first time only) +task desktop:setup # Run in development mode -task desktop:tauri:dev +task desktop:dev # Build the application -task desktop:tauri:build-app +task desktop:build ``` **Manual build:** ```bash cd desktop -yarn install --frozen-lockfile -yarn desktop:build:dev +npm ci +npm run build ``` -The application will be in `desktop/src-tauri/target/release` +The packaged application will be in `desktop/release/` ## Development Workflow @@ -114,25 +103,16 @@ task cli:build:dev ```bash # Install dependencies cd desktop -yarn install --frozen-lockfile +npm ci -# Check code quality +# Check code quality (type check + svelte-check) task desktop:check -# Run linters -yarn lint:ci - -# Check formatting -yarn format:check - -# Type check -yarn types:check - -# Generate TypeScript types from Rust -task desktop:tauri:generate-types +# Run unit tests +task desktop:test -# Update dependencies -task desktop:update-deps +# Run e2e tests +task desktop:test:e2e ``` ### E2E Testing @@ -283,8 +263,10 @@ task cli:tidy # Tidy go.mod and go.sum # Desktop tasks task desktop:build # Build desktop application task desktop:check # Check code quality -task desktop:tauri:dev # Run in development mode -task desktop:tauri:setup # Setup Tauri environment +task desktop:dev # Run in development mode +task desktop:setup # Setup Electron environment +task desktop:test # Run unit tests +task desktop:test:e2e # Run e2e tests # E2E testing task cli:test:e2e # Run all e2e tests @@ -296,7 +278,7 @@ task cli:test:e2e:focus # Run focused tests - `/cmd` - CLI command implementations - `/pkg` - Core packages and libraries -- `/desktop` - Desktop application (Tauri + React) +- `/desktop` - Desktop application (Electron + Svelte) - `/e2e` - End-to-end tests - `/docs` - Documentation website - `/examples` - Example devcontainer configurations diff --git a/Taskfile.yml b/Taskfile.yml index e03421dbb..5470e2fbc 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -127,71 +127,43 @@ tasks: desc: run e2e tests using act with focus cmd: act workflow_dispatch -W .github/workflows/act.yml -j e2e-test --input test_focus={{ .CLI_ARGS }} - desktop:build: - desc: build devsy Desktop application - dir: desktop - cmds: - - cmd: yarn install --frozen-lockfile - - task: desktop:check - - cmd: yarn build - - desktop:check: - desc: check desktop application + desktop:setup: + desc: setup Electron desktop application dir: desktop cmds: - - cmd: yarn lint:ci - - cmd: yarn format:check - - cmd: yarn types:check + - task: cli:build:dev + - cmd: mkdir -p resources/bin + - cmd: cp ../dist/devsy-dev_linux_amd64_v1/devsy-linux-amd64 ./resources/bin/devsy + - cmd: chmod +x ./resources/bin/devsy + - cmd: npm ci - desktop:update-deps: - desc: update yarn dependencies + desktop:dev: + desc: run desktop application in dev mode dir: desktop - cmd: yarn upgrade --latest + cmd: npm run electron:dev - desktop:tauri:setup: - desc: setup tauri desktop application + desktop:build: + desc: build desktop application dir: desktop cmds: - - task: cli:build:dev - - cmd: cp ../dist/devsy-dev_linux_amd64_v1/devsy-linux-amd64 ./src-tauri/bin/devsy-x86_64-unknown-linux-gnu - - cmd: yarn install --frozen-lockfile + - cmd: npm ci + - task: desktop:check + - cmd: npm run build - desktop:tauri:generate-types: - desc: generate desktop types - dir: desktop/src-tauri - cmds: - - rm -rf ../src/gen && mkdir -p ../dist - - touch ../dist/index.html - - cargo test - - mkdir -p ../src/gen - - cp -r bindings/* ../src/gen/ - - rm -rf bindings - - | - touch ../src/gen/index.ts - for f in ../src/gen/*.ts; do - echo "export * from './$(basename "$f" .ts)'" >> ../src/gen/index.ts - done - - cd ../ && yarn prettier --write src/gen - - desktop:tauri:generate-signing-keys: - desc: Generate Tauri signing keys + desktop:check: + desc: check desktop application dir: desktop - cmd: yarn tauri signer generate --ci -w ../app.key + cmd: npm run check - desktop:tauri:dev: - desc: run tauri application in dev mode + desktop:test: + desc: run desktop unit tests dir: desktop - cmd: yarn desktop:dev + cmd: npm run test - desktop:tauri:build-app: - desc: build tauri application + desktop:test:e2e: + desc: run desktop e2e tests dir: desktop - cmd: yarn desktop:build:dev - - desktop:tauri:update-deps: - desc: update tauri dependencies - dir: desktop/src-tauri - cmd: cargo update + cmd: npm run test:e2e desktop:act:build:ui: desc: build desktop ui using act diff --git a/biome.json b/biome.json index 35b32151d..5b4e4880f 100644 --- a/biome.json +++ b/biome.json @@ -3,9 +3,38 @@ "formatter": { "indentStyle": "space" }, + "css": { + "parser": { + "cssModules": true, + "tailwindDirectives": true + } + }, "javascript": { "formatter": { "semicolons": "asNeeded" } - } + }, + "overrides": [ + { + "includes": ["**/*.svelte"], + "assist": { + "actions": { + "source": { + "organizeImports": "off" + } + } + }, + "linter": { + "rules": { + "correctness": { + "noUnusedImports": "off", + "noUnusedVariables": "off" + }, + "style": { + "useImportType": "off" + } + } + } + } + ] } diff --git a/cmd/agent/workspace/docker_darwin_test.go b/cmd/agent/workspace/docker_darwin_test.go new file mode 100644 index 000000000..0f1519ab0 --- /dev/null +++ b/cmd/agent/workspace/docker_darwin_test.go @@ -0,0 +1,73 @@ +//go:build darwin + +package workspace + +import ( + "os" + "path/filepath" + "strings" + "testing" +) + +func TestFindDarwinDocker_FoundAtKnownPath(t *testing.T) { + // Create a temp directory with a fake docker binary. + tmpDir := t.TempDir() + fakeBin := filepath.Join(tmpDir, "docker") + if err := os.WriteFile(fakeBin, []byte("#!/bin/sh\n"), 0o755); err != nil { + t.Fatalf("failed to create fake docker binary: %v", err) + } + + // Override the package-level path list so that our temp path is checked. + original := darwinDockerPaths + darwinDockerPaths = []string{fakeBin} + t.Cleanup(func() { darwinDockerPaths = original }) + + path, err := findDarwinDocker() + if err != nil { + t.Fatalf("expected no error, got: %v", err) + } + if path != fakeBin { + t.Fatalf("expected path %q, got %q", fakeBin, path) + } +} + +func TestFindDarwinDocker_NotFound(t *testing.T) { + // Point at paths that definitely don't exist. + original := darwinDockerPaths + darwinDockerPaths = []string{"/nonexistent/path/docker"} + t.Cleanup(func() { darwinDockerPaths = original }) + + _, err := findDarwinDocker() + if err == nil { + t.Fatal("expected an error when no docker binary exists") + } + if !strings.Contains(err.Error(), "Docker Desktop") { + t.Fatalf("error should mention Docker Desktop, got: %v", err) + } + if strings.Contains(err.Error(), "unsupported OS") { + t.Fatalf("error must NOT mention unsupported OS, got: %v", err) + } +} + +func TestFindDarwinDocker_PrefersFirstPath(t *testing.T) { + tmpDir := t.TempDir() + first := filepath.Join(tmpDir, "docker-first") + second := filepath.Join(tmpDir, "docker-second") + for _, p := range []string{first, second} { + if err := os.WriteFile(p, []byte("#!/bin/sh\n"), 0o755); err != nil { + t.Fatalf("failed to create fake binary: %v", err) + } + } + + original := darwinDockerPaths + darwinDockerPaths = []string{first, second} + t.Cleanup(func() { darwinDockerPaths = original }) + + path, err := findDarwinDocker() + if err != nil { + t.Fatalf("expected no error, got: %v", err) + } + if path != first { + t.Fatalf("expected first path %q, got %q", first, path) + } +} diff --git a/cmd/agent/workspace/up.go b/cmd/agent/workspace/up.go index 95efd8838..903ffcf09 100644 --- a/cmd/agent/workspace/up.go +++ b/cmd/agent/workspace/up.go @@ -8,6 +8,7 @@ import ( "os" "os/exec" "path/filepath" + "runtime" "strconv" "github.com/devsy-org/devsy/cmd/flags" @@ -418,6 +419,10 @@ func (w *workspaceInitializer) ensureDockerInstalled() (string, error) { return path, nil } + if dockerCmd == "docker" && runtime.GOOS == "darwin" { + return findDarwinDocker() + } + if w.isDockerInstallDisabled() { log.Debug( "docker not found but installation was disabled, installing anyway as it is required", @@ -430,6 +435,29 @@ func (w *workspaceInitializer) ensureDockerInstalled() (string, error) { return dockerPath, err } +// darwinDockerPaths are well-known locations where Docker Desktop installs +// the docker CLI on macOS. Declared as a variable so tests can override. +var darwinDockerPaths = []string{ + "/usr/local/bin/docker", + "/opt/homebrew/bin/docker", + "/Applications/Docker.app/Contents/Resources/bin/docker", +} + +// findDarwinDocker checks well-known macOS Docker Desktop paths and returns +// the first one that exists. If none are found it returns an error directing +// the user to install Docker Desktop. +func findDarwinDocker() (string, error) { + for _, path := range darwinDockerPaths { + if _, err := os.Stat(path); err == nil { + log.Debugf("found docker at %s", path) + return path, nil + } + } + return "", fmt.Errorf( + "docker Desktop not found; on macOS, install Docker Desktop from https://www.docker.com/products/docker-desktop", + ) +} + func (w *workspaceInitializer) getDockerCommand() string { if w.workspaceInfo.Agent.Docker.Path != "" { log.Debugf("using custom docker path %s", w.workspaceInfo.Agent.Docker.Path) diff --git a/desktop/.gitignore b/desktop/.gitignore index ad347ae3f..3b4d0e74b 100644 --- a/desktop/.gitignore +++ b/desktop/.gitignore @@ -1,27 +1,7 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? - -src-tauri/bin/* -.DS_Store +node_modules/ +dist/ +build/* +!build/entitlements.mac.plist +resources/bin/devsy +resources/bin/devsy.exe +*.tsbuildinfo diff --git a/desktop/.npmrc b/desktop/.npmrc deleted file mode 100644 index cffe8cdef..000000000 --- a/desktop/.npmrc +++ /dev/null @@ -1 +0,0 @@ -save-exact=true diff --git a/desktop/.nvmrc b/desktop/.nvmrc new file mode 100644 index 000000000..2bd5a0a98 --- /dev/null +++ b/desktop/.nvmrc @@ -0,0 +1 @@ +22 diff --git a/desktop/.prettierignore b/desktop/.prettierignore deleted file mode 100644 index 89dcc0e24..000000000 --- a/desktop/.prettierignore +++ /dev/null @@ -1,4 +0,0 @@ -/src-tauri -/public -/.vscode -/dist diff --git a/desktop/.prettierrc b/desktop/.prettierrc deleted file mode 100644 index 8356cea87..000000000 --- a/desktop/.prettierrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "trailingComma": "es5", - "printWidth": 100, - "tabWidth": 2, - "semi": false, - "singleQuote": false, - "bracketSpacing": true, - "bracketSameLine": true -} diff --git a/desktop/.vscode/extensions.json b/desktop/.vscode/extensions.json deleted file mode 100644 index 24d7cc6de..000000000 --- a/desktop/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["tauri-apps.tauri-vscode", "rust-lang.rust-analyzer"] -} diff --git a/desktop/README.md b/desktop/README.md deleted file mode 100644 index 0f098da93..000000000 --- a/desktop/README.md +++ /dev/null @@ -1,73 +0,0 @@ -# Devsy Desktop - -[Open Example Devsy](devsy://open?workspace=vscode-remote-try-go&source=https://github.com/Microsoft/vscode-remote-try-go&provider=docker) - -## Development - -1. Install [NodeJS](https://nodejs.org/en/) -2. Install [Yarn](https://yarnpkg.com/getting-started/install) and make sure you - use yarn v1, by running `yarn set version 1.22.1` -3. Install [Rust](https://www.rust-lang.org/tools/install) -4. Install [Go](https://go.dev/doc/install) -5. Run `./hack/rebuild.sh` from the root directory of the repo -6. Install dependencies with `yarn` in the `desktop` directory -7. Run `yarn tauri dev` in the `desktop` directory - -### Build dependencies - -To build the app on Linux, you will need the following dependencies: - -```bash -sudo apt-get install libappindicator3-1 libgdk-pixbuf2.0-0 libbsd0 libxdmcp6 \ - libwmf-0.2-7 libwmf-0.2-7-gtk libgtk-3-0 libwmf-dev libwebkit2gtk-4.0-37 \ - librust-openssl-sys-dev librust-glib-sys-dev -sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev \ - libayatana-appindicator3-dev librsvg2-dev file build-essential -``` - -### Additional Information - -Make sure all of your dependencies are installed and up to date by running `yarn` -and `cd src-tauri && cargo update`. - -Frontend code lives in `src` -Backend code lives in `src-tauri` - -Entrypoint for the application is the `main` function in `src-tauri/main.rs`. -It instructs tauri to set up the application, bootstrap the webview and serve our -static assets. As of now, we just bundle all of the javascript into one file, so -we don't have any prerendering or code splitting going on. - -To spin up the application in development mode, run `yarn tauri dev`. It will -report both the frontend webserver output (vite) and the backend logs to your -current terminal. -Tauri should automatically restart the app if your backend code changes and vite -is responsible for hot module updates in the frontend. -Enable debug logging to stdout during development with `DEBUG=true yarn tauri dev`. - -If you just want to preview the project locally, make sure to disabled the auto -update feature by setting `desktop/src-tauri/tauri.conf.json->updater.active=false`. -Please be careful not to commit this change later on. -Once you're happy with the current state, give it a spin in release mode by running -`yarn tauri build`. You can find the packaged version of the application in the -`src-tauri/target/release/{PLATFORM}` folder. - -## Check Type Errors - -Run `yarn types:check` to check for errors - -## Versioning - -The apps version is determined by the one in `package.json`. Be careful not to add -one in `tauri.conf.json` as it override the current one. -You can upgrade the version manually or run `yarn version ...` - -## Build desktop app - -If your development environment is setup successfully and you're able to run -`yarn desktop:dev` without problems, you also should be able to build the app -locally by runnning `yarn desktop:build:dev`. -Notice the `:dev` suffix, if you omit this it'll try to build with the updater -enabled. This won't work on your machine as it requires sensitive information. - -The output of the command can be found in `desktop/src-tauri/target/release/bundle`. diff --git a/desktop/build/entitlements.mac.plist b/desktop/build/entitlements.mac.plist new file mode 100644 index 000000000..c614ab520 --- /dev/null +++ b/desktop/build/entitlements.mac.plist @@ -0,0 +1,16 @@ + + + + + com.apple.security.cs.allow-jit + + com.apple.security.cs.allow-unsigned-executable-memory + + com.apple.security.cs.allow-dyld-environment-variables + + com.apple.security.network.client + + com.apple.security.device.audio-input + + + diff --git a/desktop/devpod.png b/desktop/devpod.png deleted file mode 100644 index 6b8e32563d8595aeb6d6f095a4d8ec81f045985a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234515 zcmeFYWmDW?^CgTs!7aEu1d`w|Xdt+|ySv-q9$bP23liKN2AALv+}+)Ec9Q#k_SyXg z`{G~4@SB>NnyT)r`<&BqMJmcmqNBV=fr5fU|0*S}3 zrrd7Pjg)KOOJXXSwv5o@Cw>l^R0R}Mp;bh`B&^jCG*xLrUleOy1clwST#Je+v)tE1 zxCk7)Ul?$GA~X%jWI1M(atTM;fm+hNssRfu>B$VWYy2PgPacU~PW{%I@yj&N*Z9Bq zo$)@`&FQ*S@D486RJg<uKOXph*aP=OOc0ow=sFjw4Zpm4y3dPj z_x(x&z(240x?>g%-nvcIWEp=R;ll^oj|;j#N;U!ePJD)yw631sOLrz)&uNfo0DUWE zkQomZwozpozuWR+y zN9dRDcD(KKPw$u0?nmE*&dMxqd-rsLFI{~noLVH^2nqQ{#DIW;_Wg$YN%rvV68#bF zFS_T0akf*mh@mf2?`0zJsYVt@mHZLr<|co*nkkN6tJeZ8@`Glodz zkPg02OA~X@8@C-4a(#S`j=N>0L<(w#KF`uc4r)$n7TPcn?;TN)&~Isf{r(XAd<%-x z3+Y#|4^plSD!4_7y72@mWwZ+AYL=AAiQ66VJNyW;rsuk5Lf>7=cUPNoo(YcMxW?|; zAfl61w)&_}SyYmIT`ezi8u~+>(m;YVa#2r^AJ)u6l9b#|(en)n*vQk_a^#y!=;vtJ z1{gKXkrssOzbsguN<+Epg;f;*vka)k&9-D$-G7O_RI$&HkH_8ctm~^eg&rHM+6!!4 z!Ed`8EbG{uXsvwed$&Z7h!GntHnaZ_&%?JqIsAG>qTygtySmf)3BE}!yUuO~VF1h$ zcscO^Lcat?<^VvdH+#eM$erH2H~VSewHKYV`78>Gh-Y-XAc`~iN{lCWzafC0`sKvc z$1RK(40e>QK{ifNr4@%(o$JlbC^4*#$WQQE@cG25dy{q13pu;z4eUdW$FKp*Ekay< zZ7o}~W%jgR3j1u4Mzi&zDMk>#TTb0X2G!r_^g7*2YSYXU*K}CxgWqWoH&Tlqd4Kz< zS4vy&fM2$-BmQhLv?{PXA&hc9TO?l@Hi5`of{7qB?PRO`4xAx9d&xvSl*E$vx~ut8N<@ zVlCFyR`Dmkc$=aoPubOZo?_5%R?7fN=4x^8220jIx5qlw9>eky;>^-7C_6@EPQg4p zyr}aZI8`9dD(!QIscb6%=ERt8oCH6pE*BnU2MNed`9f7X6(8e#i$MfrvLMMHcq0Ns@&;VD1$N$HSD-TJ$a+0`yjnL?-caCW6vp(xfWX6w z^~)Ny&*L&x92+~p3Hd-{e7U!?-B-{<_=fRF<{^(K371ig1)D%S%xXPi z^+LqLjo#_j9yec5>@{mRtzRf}YXRWGpLn;D>V2$F+fVW??N3!@-aPh=-G&<*`m?y* zh|{})4gvznSkJLbOCAG=03xA9K|hj8GWWKNZlcORkMWvd?u(y|V0f63cVzI_`mi~> zUJgULmjhfJZ_B|kK&-#8;S&pPVygmqA2uET>;gSS44L?c1W?#>t3rT6ty$;-{7v9B zc{n(y1@5Altq=U6>16M2L=CMQ-vHN@BI`Zldub9|2T`)nRKk33{!}Kv+3M($b?Y%T z^hH70ymPF0I{Y8$^3#R|3bGm7Fml-JGVV=TZ1IV zZSj$f%(Yy7Xg|uJ|H~6#YkIolABGwbf&t$jKqPDK$P2KK!Epk+Ay6VKTqT%rm!iGo z4^5{pAV}{SI7e`+va@45u_qOmnyIJ(5Lwq(n zryAQ_`F$L;i1h;t65_^(TJa))a0&(*yZ+K2V##jOYa0V@rhZ( z6Kb8a8l_?@!Q9BR0n9%tLTN65tjFG{%>q@_UCepS4Ys#@oK0x-XL^CT%Sa5U$)Xz0 z_YM0hmlv?xIS_~(ktf+NJ#-RA+Y> zFnn;HsLPDscZTGX9#bYgg~Uytdcix?L2{v}jdNlXo4?mQOPep(ZWbjBMRb;?-7VIU zI~gw*6=0RJWU0LAqkq6!{gf@5R*Ht)j z{)2(VS;iPJ0sGr}>&o@Q&LMf$PWSdmNLS`x)8QfPppT>rDg&oQf||(W zoIl&gH26csJJZFGdU!mMlar*Xby~v4^aOKlNvDiYcxsIP6!gL*LmC~QEQQr%tE*sM zO8v%(d%Q4rnVY^1jIJ)hr;eWT*~(5wT#C(MU9GweNG+r*{Al$A4cck3%DA` zjyu=H%TRfW8$GE%*7{AbmBX2;@~pN4usymQiMr&-!N<^D!lr8x3=6)%1GSf5#%_oh zI1G;}H3btaKP)y9amOYBs~EKex~F9l8^O7Mf>W}*$)bwk*j3U7youZ8eJM(xmR>Go zR4Yb;V@SMV2h4A61olq)*kTK#ph+A?j*Mp!>>S7R(0|cRTBdZPT>47s2t|>&#R^3n z&oxgU{q|J+q|rzC?e;@`pF6@W?(08j$hkDQU2Av%U&|1IfGr2}yhOs79e zXIDVy@xq~&)Aak`;xMWk7Y^uTPuJbpl8`Tn4_?VKkKtRWDDL~!miOJ@?as8<^u-JW zi#EBbN!R&NAqEYhX)Ln{WG}N5h*%ZG-a9*1v*5f z9%M|>>AWISO_(Z>M+2m@$W~#4u7$hUt~v#+I3+xgZI&^(BWeh#U!mv;`4{PV&$wsUX!?y`qs~kLLe~tHzSC^%9p^WtKHi)A*w6H7YXPfPw-!md=5Lt2VOgz z15ZVr*&PtMf6up|HI~nP!ViS$vGotcMBWtD~qdT!b|IgyconAWjm*7gmEjwKUx2<%>ES-`at~n*S=bepCQv7bDhOjXu@PcAn zDk2rS#*L}L9j0c*oUfa+S9urvpN#uE!idr^%|B0dcb9S)h_4@N&od9t?V|?f=C7)r zN1n>Iefm#|I1+bd)+VL(2%LUB##F}=^?GXcc|X292w^smPSCkD%oTl`^oJZc=(qVl zgCm>dsX*+`Pt)v|^KeL8e!(arnCFaF#4oe*;KGB)q-Bv~yj*Ns+6dREIsC}I`8mW&|XzrnucmHfjyuZYU$QL%&mc3gWs6C|#;E^&Wwey)+n0#qF$!ji;g8m3^j9Dg5u!}Fxj_WeW0 zASCsOs*7Cjk7DWMgOe)6Yt4TLyA1?lwExH2d;T{C=U2@D|2O9ygI8<-l`zCuNTz!# zD3-mN=X8qCNmk*yV>f6gNKNHSgdWdW@>{hK?=ZjFCe(Fh9Iewqg4-%ou() z?#dS?sGi=U$d$>K+}c0Ttb~$^cVWfF{e^0ai-+YGtBLLnz@A=^Pr+6d+GJN@$@dhE zoK3m^jbn`&Z-H%Gu(PBuHRSBFOg_y>hW297b@jAK&Qj*f6dl%WvP{7ESVmlHzp4|) zZr1PFqgIYT+LA$a{oEuHBl95STOek-@0LbQf7;Yy=2hDPiruhq>?Ubh^_Lk16Da8mXYN_~oOv7&eE>x#!C%p%yAuo!^$_wf$|qlbw{;?|Mz4xh}=RENT!lc-D>I$y@Lg02_9fJV68EU2%qz zb%OCHeM6Q^V+bisya{HmVMAed!Qq(;WBUh-?Up%1{ zC<@Cez;j&M=&{Q2rBxu%Q&XZo!mwrJI$jvC1&dR8a7u2kOqm9=7H5OoX5Ta1!HiJr zZx#LFZHDU~?L)#MU<*7p0yGeKtU_#OgcA|K`CA@GtOkRmfsXR<>V&3E%JIep4P+5{ ze>^G78>!UhQ*hW38nyP&o^xNzXGHUN(qQ5F&m-_F*@;YKwj27*I^)9fC~OiDMU-Gl zJ5^Db``mvF>|4RB6_<-%S{BMJeW};b5l2OuVS(zoJ#Lj0U2g*1-qelUp5N=3Cn zJ!yTBE-%wtvddk-E3+6VxuE+*TP=g(<$KyzhJuqoP8$D9@XWH0-Y(AQVuWiid=Qt1f2C zw&jJif}Nm^frGHsY@6&4=))+PbHh_|yxgV7B4d5ZmIOfpf&qYM7UT&u+BP`3X+UiC z13=NkAZGh{AaYWxTb&#y%{aVLnvt)HpNCFGDp4h{ z-)T*qta8tiZ@a(0A|Fk~GlD3R4pS&AdTEEa{ly$`qE6Et;oDM)CI?u;+?mps5y?K^ zwbZSY5@Dw_#88j1PC@s3?`IUf5o!VBs*Jow-0!+*7zEQ|8**2$ffL_J7mnf5o4UyU z!5q)clGNlsECA^RvBrQ$9=X|zK^Jl4pc@HFr2N0<8@BFsv(q3W)$Z^0c=6=l#0LkH z3rEo|xr-%EgpGa1zw}1f6l1fi`RR|KB7W9-QVz=!b|1nYCP$|xyz}l9mUMqYw_KjC z6qc;1b7EI|bEwuz>j2A@NGV>+c`}4MCe=@`#&#wP9XJ-f<{f#RUMpMpffDJNr-Da0 z4X=*nW7+v$^lbBu6HXRp8tHkgSEr%T2t>TQPtOoMltII7DpE%H#IAea+);N3J!A@C zCuCZTnc2#GqVNLIepP;2BaN&Q#gW*eid9ec?BaC5{&9QdiN_T3jhWxJN~(%xl_pWW zt*t^VH}BwPdD^2!ZqgL=s{X7%;+_X3S}Fd?wqYz-($A5GWOANgDNkj^2)sg(FR2HE zfvPmFk5t*oSM6qTt)$1JANORssC*KB>-iZ|!us8DW##xw=-a!_c}vMV zFM(lKJ?E8Fqqr{E&@NcFeX*se5ABeGwY3uPzxi8Z@u1dV)R@)T;(m%gh~lFWLM&mf zkxK{|R6?uVJ*t6nN<1sO`e851g{vN(I$9G^*XjPt0;_(TkLG5Ti6|oQs!-Z5gli;9 z^d0=~tuky8XNu-n@e540YEG`cqmnDduFREq4>eb?){I+Lg+Cv5Um0QVQuz;I#h)06 zF*S`(Skl-rNd?Cu$>-t+F|0%wx>Vu$K0fDUuT;4Je9Cn{wS{Qw>jaR4YfF8?6MsH z`vVE{42Khof)}wQql#i=dCqLsYjHHFE(2E!W~{$eJ0?1J9i9xSv9@wqLV?w^hT}OL z!7;guFlxz0z;lt~qzgDV-{3LtEn(y~HmSe~S9rSYwxWOUGyt^#O5a&Fvym-#mw<|K z@H-2D!qU&S-$h_?*l)Y&uXoedgAwdNVGKqHUYH6{)A{H-=Cq*=}`bA*YItf;`S&ZN-I`+ha!xd9*giNlU z?s|*w^0?X9$$3R0va>fcj~4u@_`x3W zCC(uAZYStVS(3R{`#bt+8Ra3GmN(xbFlcTULzh6pHxA^g$^xU&lYGs!vBoL#}kqlkK`gw1^k-C4g3*nuTH zi$iwNA5UmxRHj6TQ=nop7q>W(ZEdTsrPp>3$sY)`$PM8Jk8$nZ=$CY37n=Zr4?J%-WZK9Jbhc_Umox_O&QYRWx8X%X?a%x!LqHdaAQg5o>i&Ox=%- zN`?xHIixt99_@3=4 znsosEDB~RAA{)iH@%xyWl-tzn>)g`&UWJ}|cYPC)a_iygpt>uV-N$|*9I`w01iHqY zF?@KpM5?*CP_tb1?oM1e%H*Kqx*wl3(S`wseE8T!Ly9)gSR*KhP36kRF5$0ZLymSo zWY)FHnReXNjR$E*N??e8?QSuscsH0Z=QorS$Cm{mH15~_kU|a9wX$Sw{2HrVPTR8- zt6nXZ)kvr(uKg_Pl!DP`I7{7-3p=mr-{!1s*F0IImlR#-5+kNkFS&d|sPU#hQrx+e zG|s4ZGDV|}p_mz?N-9`r7Tq9M!Lm&?hR{PTTAoo<8hre3V)j=_KJ=^XY=q-Lz05?;pHb zahaF1)95A`KzHfJey<+>+aG0v&X;j)`AA^vz^uYfpJ~Po&c8XBT`e1hiWy4KkR*-J zbNUuGKFOLcMcp!IiPucMYF)Lf%ZDkb7YAf8q>uo1;hEtzfl_&iS6qW4-WQH1F;0O; z7VLaJcqV>vL1Ws4GX9H7k+X&8(zeTif-P50lkBz3)DoT;Oe9IG#wtEvp0_tetND*~ zJ&rG~Z^Z5Wxibv|y~1hhd%@WY=$QJkT%eQe0- zsC+Wu)Wt)F`TO71=kY!L`K>{^dMLFTfwb?K zmve1<`4rK1q9h(ap-lOj1TizS{)~DlAk&-BVs0v7AW^*ivj6NI`82K_+)#S@nNOqP z)7SP;cTcy&tFt2g!(J}b8(`-I$H{4+KQae{qUf528&gC{bICyN0tsEs?4s#A@)5lH zODom5=m#{XFqDWJwMmH@lo6KI-1pMC%pTkD;(42dA@(Kr|5cR}4+gfF1K_r3;PY_t z-Ol>kctMi^K~OU_gq?L_*ZoW}au$-fO`j7%3D?{_fqL(EZ8YPXx6rw}4xO;+re|0503*E>pKhXQx>0DK~Orcg#iTx<80-Z~I z-qwONE)+TQwDfw(7;9uw&qox^Cb5QXJfVI(6n}JKf8U_a+jUZ1V7)2_!olh@Cj_?Kf5^*tmJ5Bp>0AyxXh4KDWN7#oS3&!i;8{dSi`1DL z%4xZq6soUczyaWWbvQD5lB4T!?|xpJ%%4J4nk%Vv%m-;DoMlq{gK&NoqAht6*2>CNM>5kZ zOF70Ls&evkWfX5R-SVWGgI`=)D0iaz!KEyxT*tQJNO83aP^mqQM}jG3x_l96+dp5- zroo>dqXY1VR_pmMbIPQvor^ZB7>%a6cuAxWM{3}b-1e_Do-~eumIY&1Gy~!{P3quc z4;e?h0qrA~Z?nlQ3+easQp|NGht(eN`}=$*5yTHY)38BtM9iOVe*9{{j!twrP!;e( zhqQ$cSu(Jv^gmDNcp1A+nrDxEbdk@C z^%t}l#F7{0p^lq>pPWyd^<-~@qC`};j5E)vAd#&2bM(-ep(*z0yH#3-OjTSZCHL%Y zAjV8~UNT9pVwxM^WA*|}H=Hore!MPy48}zh4>PyX|;;DGudV*Av{)x#lMgdKBmG1%t z=>+95P?NNnks5BV`&Tja-o{J>K#{!XVYP)P&G?>)W(`wtpkIscvZuD)eTpAXXsTgo z@BqAA(=jz$G~oqm|0nwz?fMXd(}4c34mtWyJ?uhrO(7KaL=XZ_-Si;$d)`#>y4aN| z@?Vgox3XJ&Jc;B7oghV8zNJv@bvX9iix_9}Sc|gpjS#$jtJU1wF~AjGs#{aDV8BHV z!`ACd-;i7=Dq$iXJes7roho|S%EHEwggF>;C|f50k}Xpo=tQztXYBSJE1@Ide+Q*G zdN*1;mr<668>r`5Ai~AT;UBDQH(DcaQKFgRNiwjRB6*kHmA``SW^ny9=^kE>MrM|P zhzGPXmNO+P&Ih->$ohi#R!^1)UCQ>4RD(b@@||;@2sq^~ zV9~%}xk=E<)a>*B0;~94K&*a;!0eYRHxkmv5%x=KiLEdFsY~zqWQg-gDqM4HT|>C=hFbVmsFdZr*&#YtJeHjr)~lTy710kl*XN z9cl3-1=Ojnmo&Zt253+Qvm?sgo2g4Z2Y|Q8|GYJE{FiL*+1}Xa^+3T#3jWXAz-wLz zqQXHcTKH!BM=-P3)f4TqKbuMuTiq@ChQ+aJoPm2ic1p}ut`sUQjPc3A8zr!j$(eTB zeB-x#RK#&jotB>vhqOXiIOqNDb_d-;)ORb7HdA^SCp=-ptLLsa{pzmtXG;kKRnFSJ zsf01gc=5Q``g#%R67$zteAc!m=9(PVmr@yywJI5dqZe6+#?R_stVM(eQAA6+F|lf} z(_~cZPA9HTs|%Jj-O2Q#VR6poHkV;e_d0c-i%ui1&y)}C#wnXk@4OyXgrkKJ7eJ2` zczP2Y+#TW1r;IRPX^&`ac0FUpb$Xmg^ZX;l` zS%_=c4O-G~1f3iVZlY=Cc=;mE%wg7%T9V~yZZJg(ZGz-Zcz50eawC|&Dt|h6Z|q~P zt+h;(rOfZu2UBgQ2-oN%j+V$&ybC;N-O^N4HKLGryIpj7twWi_^jE4pN{|X}^Dy3G zLY7B#Gl*_|i&A<`tugee{em-dnjIP4SK@IYd3eR@WxS#7kl(4FfI_rH?D#?K1%zo`M7yae)I z>|@*<(gP1KB_U&W&%ka-YOsIuKb~5S`>`McboP4uee1`XkBbdSJFTFNPvE@E`6;obL__+@<684e= zy6;8rgt6COkjfZ|(+6T68eZxi?nW_HB{CY5?UenY&dDl&*Ta3&*muf)w78emMqe(k z43&-$(Y2no^*}bRW+!lB`3h3c+(N-4X9RM0d@?glroOvDnKQ1akjZ|B`h8dt`pSb0lWVT0QT8q2f5GgaE-8gh$N`DG~B z%(}F|G5Al3|5fA|Nkm|F5bW%7%s|Co&!Rsvkvi2fqL1U()tgSWM2$JY)NjsrI7gQKZL zwkZpIMHQc9;hF~AoJ1&?pBvkc^unx;tIhZm44`Q9B=L2k?~ht5J=Qz_e9|&-w91)% zXx|zK&{?jhNU^8=VDV@@T=SS@WSr|^-2~idAZO^B)oOYj?y})p&5k$;q_-`R_SrZ$ z!z8?xhMO4PoHJAj+E*Wac&$Tg=?^WNW-;)}UR*0Yn~rAG_)_P#9>PZvwoIxZ_6hZd z(Q{PU)0_NWG7kL+?;uz&Gwv0?W-;}dws7CaHgba}*69=`9TF=917J(8e;!HG!2;6@ zzAgd0M$h3X^dYN{eW)SFX|H}GYi}JgYcJx7uZauMxySo{FM|dz##%$G-n3?Ts%mt) zGtM-qFkXo?l*6al4>Pl>;+UWOucoGrd6-AUhFE+dD+Ht;L{IEpPOqgi}&?r5R&*EjAni$5?rh3k*0y`wnA{RG}$bIE{<)|VaEL(Y7pg_S8e{y3T1m8)IbXSbn z@<;HBK+pG>tV>eBT(p)NQtsozf0oUyY&eb9>yYLSJ(w)lc|EMd=LqVlJi!w@8RTUv zU!q0TZYS&vuL0_X@?vOlou}u!5w}s=4|uXuetd2U(JmiSCI4E*B7LCd+a+AcpM~gz z>!esF#Yq+-+|BXU4HKzM2v&psZz7CTM1i>hKP~)uDK2{g)}e*lF(0xe*S-76-*z`! zmkf2D8dm7iP1W~B%cXL{`7eb{{oq^s0Y5gBDAF~m3*X+hsK2vL>{MAv646u?6!Abm zf06|(n*$Sb=l9x8Cu16!r53q@GDBv7)>?GDa*`vx#hl{dUS)DoJQZ)LJa7g`FBQNZ z_9Cqx^92+nbwt{?);x5>Am80SvbRRZs64`j7o8K^ONWMTc5Ymi&ur4NM~=C>f?ROL zjT5yoSAIj;Y6tTj8)+v=)L7|$ANl*k&MUVJOl~b!R2-BY?SZU*4Ac2vjrb2R-4@w% z`;YU4mD7H?rt6h`G0;Jv3R$lWRd)fO+-baa=e5N{QX-8h9P;1dr9g}j-1Ow7oGdwy<+*Mnw6g%UL@}BXNGX5$WFy++8i05 ztwe&S%DU`xQdg75Ec;~TAH0#8wTyJxwq)WmruSR5Clb(MCC+J$M$hWkNee2T5lEF$ zi^^Xbl$>VIhWwlNyDXG*dP8f72h(O_78`d(#GK5G8?ctyYFXCOPt@r>wk?6@N{f@_ z!91t4HCFuFz=i&QwDGs>V7rHezfKye(Dg_h;N@8qlbiw~u3`IbGvC+?F6PxmWn%hH zezj>Ryc?QIa;A4MfF&_kJPh6GciC#qQ01uM0;8~~L%p^3 z3DNG)66C<}<@x*{EWlJ4D(uj?z#K%P^N<}XxY8;X_h&DY_AlIfT8n$ut(9BYud`c! z92c40U5^%m=of967VbsX6eVJtY?%}9wpwg;?$Do5Ll2nx94rUFZMl&0eMTTK01!;l z^{T~SW-x@Isr%$^sjZA5#=$Cu{g(E|#V`ul|M2#2pac51zzp`m23r?TfUn5?4p1Rx zVy^M#VfOjN94q|%{sRE&5D{^L)$+W%VbwznGNp{grv6bbGbHO&-8PTk!{i+Cte$`J zgdYXhrq0P%>d;|<=YaU}T%QrUIvQ#WJ7eQVODhFOW+zI0d9jr8(-Sqh-5xT-T&o!f zMk$AO_K+Gmtck@yJdD-&ITfnR8(M6U)~gAu^Xd2A_z^0Ojg$74)aM2)tKkkhP`CL(F5`anm9p)jiZYveP2-nonaovJc@!nZ0d*83FkVV-fN^_ zr-}{gnZ^?yPIJA2D2bCzLA77L|`}MZE{8cuk(YqW%qstT z4fgbNmy{j9ag7Yah6V0oqig-|zhYr82_l)}4!UIl`DdXx6apETVz@?n{@^UDFCxl4 z@}jL2UKoK%ECRo|eofTk_1k_rVQ@iv$%`R2c1crA#SGW)gZds%`j)`B8VS>Y+}n=IxA!e?XEpX6 ze@tvpT>9~F{(r_w9eV&dT(X1i6u<`#fA#*qltqkKf9dmBYku*v^D#-HHN#d)+@M)F z?Z;*22&}lw{|c@6u`Q7*|GWxE@lrZVVzku{OI|I@_0-IAKB+O{Onk+fIx2bTz5B0S z-Ss=&*%gXEirEit5#S-_VQ z?0hYH?1L@lfr46Tk2AP@*kuUjExa;WHjSt($lV_z9gx?rTB$C0@Kk5^@D8ODQgHxT zqcYquNY6I3;-*M}r-1L@xZON-EkZvx{>)yjZlyO>CPdi5=sDkE{@9Q~wJY<>c?3&lpucusk*RZmaEoA5{xupw1|nvJlFt%7CGMF6~!eOEV$cG@0m+_Q<-` z{Bw}4ow9hwV|N>Zu=uv;5bU$wl{K$|KsiTkFY>S-^bgt);kPlBa>~E@;zrTMe+8$-yHZ#oc7J)~C_8Q(DEFHVowz9;volduBp&v@ zG-Qg(#ZSso>}(erWO+l;9gBY|q|%EEheE|3Onf$n(v3>eAng8u9J-3+7X8K0!>1Oj>Zr3Gb z@60BbK~?f3;&NED$ospbb^5$9BCY+CxTpcZSqB+egt)d{cNmIt@|bCYi2TsuVDSAO z!hPYf-gm|*Qyo0DRDzy7xVXMnkw3^DDeOAA%%#_PUe|#}NLv#1`p2%_-(akG5w|qI z_*%{<)K-XNLc}0@4De9M_@5l^d8qo`)VVbX9dSg)r9qDd+s9O;4oTn5m}+(o`xG$*{Y&Gx1@p!Qfb z`fgnQ~0GK}X5Qp+# z{r`7HbN-<5icJr(8?vi)DU{dvDubhmJ*~%p*@ zmN}+YB&?jOe5*F8lKH_tVcbqY{p+eYK5%2?fs$8v513 zNtboJuNrf6YGz+kz4X4mQ-rg^xoi8$F3J)3!H&`66MjA^cEboJ-Sb^TuwlFKBJ1S4 zf!HoLKVnKw?dIwMSyNy)C#1K!WIHThFG>t>h-^(t7w6my&&L9_=pWPv`$ zQ-eJgydOz{+%+0yyeb#Cyj)m|-xt^9dOU)w$!hXo%#xc(*fo|C;w|H3Ib1rD|!tPO+mi_uG`XvT6&e=QNAkjVPsKE2TQ>gz~ z{hA6nUoaVD9ReLl74K;PsqW4>{EuhP+x@4Aa@dt>G5sc5CExTSm~m{@0XVk#aqQNV z6Nnw(Ntb`M5iR!X4^3;=-6)x3;f*_UOIkCB%3qlj!bOVa%2&TLPr0U>6l?psC!wio z(nptf))&99HKL_JQc_XGFyM?=xV)BF5~4imw@mmZ3u9oHeCMirys8EaW?u1EI9uJv?HO*Ee6 z^&Rs$I`WG=Ya*lZxSf4`e^N*p70v8YCBjc?PV;b=Mt5xj?_H94^gWyWWU5nr8A8*H z+Y**?YX6q;xO#LQ;ebND_spN0d#1mO3yDjR)L4J0S8K4C2%MBDY5B#Uk0PUD>iVp* z@G0DjvG`!C<_WWcY15O8moYRA*gv6z=(rwi-flQOBYP+T(8Tfe9zWLP!l^pn{gvN>5)v5$HJuHr{AP+q%nFVX+&EgG1ABften3rn`}yL;U8!*@lWkql-o~m6#uca(rx83lQs;FP1C<SP< zy&2$*m;rXsgAio%Yn^`W;d$MA_a<*9js5Y+EDM^n$4F#v@KgeG>-NFO`JPx-p*7o9 z*>Ou@8o$m2HVJAxLCS`22{H#eqno z@+ks8Yp6QtyZfmxoZRT*sjBNT<@fx7M#fLuB|nH?lm`j~{bBr);F@p(62*VOIMJWj zA0**Zcv~J%JyIQ%p~`2JnOwy##dAe80OM@?IW(6fMLmKs-vd{_7F1FuUw97w(f@T~ zmqm44G*5N>TWU5X$Lv4V-GA_{W;O=g(CI-AzMFfznWhI^KZJKeD9jI{UOF*e&I%j= zFXLLBzMJ5C(li;!9pxLF^C{-4ldic^=uWqe0P)vy|0vW|<5L*d13IGLN7OUbnd3l6<&hlKpE> zYpc~NA=@=)qtiiq=dkFu_esin1m`sd(uNP!--ME}v@GeDKC>SyQMvD+{sTG;x7cg1 zzl*jOFXWwz%N@NPv0&~A`W9Ij-yJ#12oGdPu%~%$UtLsLJYSg+3buCwD7~PIxwrvf zw-vNx>~I9=xv6e~`RB%S%fLRq%9LT)XV&EFC2T3r7Zwq=3agv0)X(c>CrJLuI3@#HCmLfJMw z$sUi@T0{xfaXDz1Z6myhg3-{05!6Yl zH4-d?g+7}OhZX;etG95Ay6e7&1xZOs0g>(!5D*ZMZcrML?if-!1_9|tI;DHap&6yS zVdzG3=&tz<_x(K2`@P#CW8*v8(}EjEu^U)~3SDTAU=lxyayI&B?~>$t3%VQHh4XbC|N_mIYma zOQHEWTA5EhIMetM*oblG&lLZ3H6rRca5=FgX~QvRN@Dz=!Atn78M2=eGs=TTdV zas>SQA9)M(KQVOs2s<*r7n>>qo_RkVNyankWn#axX~@kqmT4<(>L+4?%N~a93Di`d z%#6{LfenKTZ+G5&>DH7PS+`;L1i9O-B&D)N0%C5qvJDf}s==>~#!*5+N#a6R;2UiB zPrP*&p%kD2g+FyL{Z)LKo23u4oR%@Q0XlnHJz_$3QFB-2&lsX~rW2BlTuJ;s^kRED z41TLw#4zwl64@W2kWB^`mNetsd$&iY^3>f)zPpgeLauOG(mn32vF+XF>clfCgVeJp z)11Zon_kc5Zw^msp8pQ$zPM*0Ru(dGY>7A%%x!TF`>q~rMhT>ZOe-|7#IEw z-yfOg3$8sf=ilt8aes!66rMpdUgH1^#F*so=z)zElcaAY0ky3J6mKW(_`_HoBxo$# zV{@cCOSdGHU%t9%DxvvZ3E|LRWU!JAWw#u)A(_c5s7!0eP9u~Js0F)CrA2Fzy@gVB zt!(K;40wsrAD^9NlpJeHdXY?Xr5&x}eoaTU6qoNhO_-Srj|ymzCj9 zuT>e@Bt=`6@;K|BANA*c(U@jU`M5A{D5|3Iu2&;<5~km^yWTQgiO(p4mPf!&*K2JP z_J)w-h11te+g4dBuTk~~7R8pbOn$AyOFzAhYE+6R6;334?nRH-&)@&_$iTNJ4oq!+ zEUO3^xO?a}qi%rQdGcew?BuSO%n~2S+zCdcQr3I%mOUT` zc7tT*CtM42Qd0e)pL?jIoN&9kUgBaD9(*8>l7;4_Fazmc>dh7jy;ztFzv><3ujumH zT$ql|yZU5ZKfcnva$M?=u!yCMiBxlW_Sv^AX6%ujZSTUXBc4{v&h}0Xug3t3RS-YY z@#sBc$mP{TFdOwKI!1-vTpeEw)uKCd_ypCRUzO|P_ff6!&ZntX<)454M&Kfr=#x@$ z1+kK`&x3hfdvE@1J#(EBS3Cg!W}WHr*48U2Cam<$OLSyDOpE3X+lyF_UOsB6_zdtV zZs>aKN25#NRROzOUhq5?PU8w@hvrx<#(ocfg)16hiJld=Yf!68rH&G_iSj#Xa^3HE zd?H5`EdqgRiqI>WxVrlO-!Z=k7*E6&5OeFAS$C=B2%|B#v$a?3dNa;GF&2%!+hq@X zUo_Mfax| z>nn-ek3gdnxTdi0c0#u2{pUxXXD45e5!y@lAT9%lRoCVkA1Xk8jP*ocy~v!lwS!QN zs`i>m)RDHJCL3uF z4C|Ijv=zFKcP$wjsH1>^Ghng#RaqWwO}bYKd7y}-H6_0p5uhbmfBr&tTQWd)LQ?I^ zpssJ+MT=s5(~`IKXxuX;ICQtzkpjpfV|Uqa6C(fh!;j7{qZSbgF@r=L%VAo9%m&)t zd-aVU7df@9jel$&SHhdx1N{GOFysO!FVnFGwbJMt{jE`WmR{dN-$s_uli(0;vEq}8O zbGuvNQ5TG;#cYS9);7e7%0#`Wbx9Q)Dav4!rvH))#X=8y8f}N~1~%v8FvQE0>_&)v zywMeySyq*s-^nQL9V4pl;lGPj<$KG(-(H}4ayz+oJU3x1aFLzJD3`8*_*r;~x8g#6 zwpwCglp<__;aD7!;beF)|I#I;>Lzr?6`534*YJNDzWb(z+aK7-}<^U+Q7 zI9GlhA~I3Jq6BzG3THr)(&xC5ic!iO!fag&l@v-`lkxRl704Zr>rWw)mlIMt*ZvUh zJo5G4Z*>BFVv(o(x4+~D1nQMaOVhdyi+}AoTg(ny?vpe#V150Zx%8R*^6yH4<1CLh zE{+)JQXX-tc)8dysRPxc62!sk=Vp%j3nUHtBT&o}O&WnkyI4rM`eE9VskzXhG4Vld z^M+7TEf%&&Z5xPtri^0xUVOqYOwWhdXP1KAAsS>YG_*(&E&5~r7>yckOUP$#R{Bk+ zbEku`{HtN$Z@s1O1svzDm%RUp`6nF=qAT?LwE>(w)W+dLaeDq9>Ej}X2oO=zc|4gH zhHAPl*+#WJGMS{=X2QkDJy|jS(AQEju5z2=bQNpj)Wnpi9^$eY`{}ArnyqP8X)(_D zMsxn*b@u)Ad52`5$J92111xB`tM=_(u0;)q%XV;{RU?hP$6Ir^B1ZZfV<48YWxWmc z`th=dgOP~Gr!RlZt@$mxUD9&^E2ssXfGuAAy{HvPcM_v->S$K>LT2HXo3o z{jAgzg+~(ca0GcRj`Vdj;1)%4el#lhE&Su&RP)6);X07Z3^&aO4wQHI0@C6JOtk74 z3m=jtWIEokbyRv04Y4>8#AANohN;cn3|{?Ihz7wbU9g3qL~HC(GC#Tk4BBt^9YYGh zxK6^g(l7Y)i$6m|A4-x2d)`E8BCwZSLag!}{D0teZkH@etfEaX!2+sxkMrv7;vPtTEdB+=m zk@Kz>VEt{9o65{6YI{NUx-T!<9>C%Jg8}n9nduL(eKx5&0Qr#22&WVauKR-IYE-^= zWH5yoccln}jDABi8zBd<0%P5=phOr8?yy)RaoZi9w(3W$_LAlTM;|=0+ z-Lj{~o_lw!ZE?L@(47pIzw#5=*?*0}dT}?fMW~p_Cw7&*Wuep;8A~p)RQQI9g?v@0 zm7>R!=JvPIH=D1d!?t?&^<9k-NVWihp5s@f|8~mvPp#0^(^50stqZQ_CUkQ5ER?eG zx&N&A=%sfu{l(h^Ws6$2unaaN&47JOyKNr66r{xWKl7^|k{i5ee`b_Kp<-$(4&KmtB2VSsx$Fo56gV{2Tua!X%mMup&hNU_Htkr9s&Ga za5T5YXxk^k6v|76C~9V=?-|AdtCY;@nV*#FimhWUiEL-t%ek=?0#YMMhJ@2%^iT;^Pf?C=# z{5rgC=jhaA;m<$K;*-?usbO|N$hgZ@VK_9Qs0h4;)_%Ts*#y@H3&j1*i1h&`oqc8) zg0w>RQ4& z_5O%v&M~E1_%|w#ggWF>Z7m5^ZRoGT3BtJ^qR2CmbQj0OKuVSMCr)< z?&%E^3Fz1JQ30Z+am-j9Zm7;4V|`2cii2WU{U~uFF61Jv<8Tjc?|%W@h#_S zNzTJw5cpt*)M!U&capZhR#Pw~V%dLBY^5%gzgH{B_-A=Bk$JXL*ie4oe=OfC0R(Lx zEVN2*P`p&s8q=Pu%z)u>CB+Zw0Mfl9@;KZgK7NSIF}=sTdaBs}W#J=0n{M5Z57pTZ zL+}ea1Qx|dEQH{1pC!Av8V!;p&R0w@GfrnvYGF#mGv;Qj@qfjQRk=>>>)~r^Lwt&@ ziLT8}2SD*nj6yh7UHrGWk65Wgoq9aj-llWZk8*pVx2ieiQD;NW!Fn{h4wL0juCacv z56K|LFQm{bo6~0gah%=LVBZd@)v!2w{vfTv0zXA0-Pkl z${1bYPebs|Hc{k6d+8CzU(ZS`ohV`~g%k8sllzO$PS>+i++M$lJ)owM9sO`QVr^fO z31g(NS0ZAwLpG8sVTSUtdD=e8bC<){qkT^%{kQCxtRA$`3cuvmx0+_&xcUnkl7*lU zYbY3ZcPXDt7|m2)xb+{}`rl1+?i_uxN|U8_vTlLFjhBY z0O~by$#Vt8xF&G;vQneBB$0p8^^0Di);NLvw4}_(`pThb=mE@s#j`{GxdbT&OF+wH zASWT$9wEO$F;B~+o*9-$Rg>V?k{wd$E3EpcH)*6OpEChc^DI4h{_~&26Y<}@#+B-8 zQs1p8ZODx$4Mv>#Z~Q9)Xa)TA{JtKhOi;OV?KdfBKw_r7nApT2KXfFLN?j|3q`TNR znR-kssi+W04J~B>g$V`7m4{7f&d z9fpjx$D<)JBZXLl*wS6dRXePqza4(0&Lr_{u0x;4^sBhEqFm|9(oJS#`3;85pEt&R z-bHj+Ic>DO(TeukUwy#Sp7UM($H{Ury=w#3-cj1e)zKRS9n4&VlUqg zCz$&H{115nv|P`oLZuEuz(KYVRY>a=W_=nV_&)dLe(HU`MVRhj6jr%s9Z1-A2z-0* z^+<6gzr4!Df7-XZx!91n;z7`>?A$(&kSJ*;itM-Pnx&%ddjU5xVy(v;vZY0IEmeBv z6=38SGsD8CD;8dX)Jv*g+9`xEl@01nELE_ z8ScdMlp>nn`IOX0sgo8Y48BkiQhRv0y}%-E^wy2v`_!S5mVUhBq;Bv=vE{?JpKB?x zkL4y{_1sJw({46}&?`YtJXyUN4>>7l54#uWmDTm&T{GCSu%eU_Px(|CnbLUpV#NdK?8XeQX}~`}pN0B)f*lOxN&+JXEm1t&jZ?jI6w8cQ@s=$PlB@ zQ0cR~fxZ_Y+GV=sF^ET>yCZQ2n00FQ>%^R5en~9q+3CSYRUyt~Xk6&LHuOUo z5=+Z5L97>T0`elkyi<()7%WE}Uq!3AKSK#Mrs&t?KkTP8th*jJpBACfC=!4M2?2*} z5<~QuTdX5F+b2?A7u)41BuK)Z*|O3bv8kFgJ&tt8&#jiUiYaFJS?hj+SzlQ>V3ytG zaxSit5fx6C9}~}Nwxgsg)ct_(wFbm7gy)E`+@@`#JpAah^{%H=igMZ$ow{r?(jD98 z`5}&3#{OL9`ZLwxqe67Wfh?%(_O_4F;nQdDJJvxoptk8l8Xs<%pW=5bz}kpb>SOm~ zDgS?v=D!IU!gK;pcJ?~1MUX9V0zVp)S8@Hlv3+mPFBHi=Zqjhx@c@Qs6&bmhPBNqu zmADp4Qh>u|Uz->$dw8uChZH5q;%gT^>5Q8{gmoNHH-((<-0uegtRv3ZofZj$w&{tL zi4+5@y(-AAQW8nZHn@{nSF>4LUt3O#I*7$W#Q9aQS_?}lgTkO?fF2wi&0RP?)c}n&$-zh2tGt9%u( z3@R&RT^N-TE57vPg66iN`|drwK76(waGR4Q3E37w2pIG;E5U$7jCp@r#zqH$==;dX z#9yt14}O#H>&KI~e3G+_*{*4abQQ)(GRIVHm(2ay-&hIDklI>T2`UZFd|O;UD~0#{ zixPluNP7@s(x(#eq7OBY;{x`u`36%UI2~BrRO*L0cP)H_j=G#E0+M% zIv7Y-UfV^=yz3IF6DpF@Uo_8M%jFvc8VsRDpF)j(9-zCpD8=#d?;ne4(5G#D0p{j- zofufRS4S=_jH36M2@Qx&`*81UBs8~S!1w+&{=v?jBu#Cl6vtob%;wkDdeL6iq+Hr} zD#)~wJ({e&CMF!VGnQM%!d6WG;e`L&<{v5ELs;;Z9}z>R#~nS1MYdzQXIJ=$4;_Xw zym>Sp)N~=Cr-E^~`l)3;i>EeOuRSwZOczx6?$pp)MjNOa@bT2eAr(^TFbd_8sV?3= z9lepbHTa$Y@v2Cj_u1 z{WXU&k)tBK!{aBV*Bp6~6j6$uY$--W2R-yFRch-hYc{dp(fVxc)9-dJ_FHwnh2?T& z(y7RJV|fL?j%bQ^a^P-jUAnC$)f-E^`Jrsx3;wd1p{W*Mm6 zk3HtwXZ3%dRz2ELf%Pw)hC8@T1U-U$3$~#&fSj?KHuF3n+xuD{d8%J<8=m;$G7piIr`ro zcr)<9+2m2ektI&$rp9*rg8TY(ca*G2q{jLkysZ=QH}rjQtI~=DV$U6u)1a zD4Qtl>uED1m(i$?t-3P2`OV}9vCzY@>|`>ogEY(;4V$Bni8U?1lq%$Q!OC76B)`|Q zo%dpT*U;Usl^o_dh8J-#hs%2YD+>fUIjFtfgP@k*n9HkOG#ZsW4!Vg0i&Ea6J80AO z*#}EStRwxf@)afS_t7Ppy%pA?wi)^k=f!o#PL&WLS0S!id#x29ztA}N$7Zr=`SI<0 zQ{4R-Cwm6?LF1n7#TF+S9csGa z9vkBVRQk>cxGErT0M5?Td_|&%92RN8BO23CiGoe5WIs@|dePkR3B~P`tVMN=X*o%s z84rNq>}v?`q2KpS*%yFb*J)homT~m`p^Ky-m)?vHOKRfdwEqlrGZ7;`0FEgm{&xIFs~x!it-f$Q_i!2;5u!%{m1BxfC*lFrEiRvAXm z`@B<;4*sodd_LsVez|n(wU{@ksyDX`HfN{m8Ld=C2aLFdMH;1V?bfXRzD|~0`PU~H zN$j683NKh}A%{DIRsH_P0MD!OuaFVp5M!hYivpmHC4?{_anPsr7ZZFMB417+asdk* zPHvKxK=em1KFr3VjtFVo-c}LIbAd#v7Ni)PY=>||xczWXm+E!0>!(?H6Sxdo7;j+B za>wG2hq4J7FF_Dwv+6mzFTCwrF^TuCFA|AfttMPH6h6O{(%3YrB8a`BT^qf$PSTgk z6&m@)X7pi4L1wqN{JCXLi{7n6qWN?oo&5AAr3qW%rOLkFB?9CK^zq7<( z+eLb7il5x9=y4|A8@5|)CK4KBy&)26sQU+x!*1Pw$hGJG?n&*7;`abGhyO_fmJ9!A z4B-zE@WC=D;(z``bBMZpeGT-15ga;f-gTx9+S-q8aDUGSd0r4x#BtO{d{3OBcL1AG ztWMQBF>G;cYtGxQ{}l9Yx6L~cd)`pXZKpWVIv1HYXZ*5uj@k|y$2E{-1wBr`7!m}t z>7IRh-<1q|M%L*{z(-kklOvL6x8lyYv%S3}d^now)NfpSE)EJ0H4Fe$4GRm*g#a?P z!SKMlEy3C=P7ycfzUDWtwaF38@PkIE_jdu&#|qHgMLHaW0UiN}r!Hot-gm1X zyH)V+aKEHR%4Pkyo}9W}*ywNe80r0%g|4YTt#y)Mv{4w_dwCLZzKK0(uERtfotqBZ(u+~lZfKzaRJ(Nhh;~BIxn?2ZpjGK>o?!L&!5lha zn76X%5bs76RW^O(yxN=607NhrFdSoZH|pTUdAf;{FT*Td*HnH@x4!2z3KT0=(aHHy4L>+=^o>^ zh(G9YLDH3{dU2xeB!m|R&W7olqttq}Pi%e}WeC`&%>$5T_@mJEPi4*vxUZi;|E>TC zBbYa9lm&@uKtb;jlNnf5a<@wK2qVjD$kL< zwKHLw4Z{@dk-P6w4v+Rc%D4LAXD=KAQQNj@r|g*OO|4|uz9z9swb2tD8u5d*;}phx zu5N?s@L_(Yd4E_)W!Lq6A@un>z*F*Sfc~fV!@GRC-Nr+myg-s;gO5KNCmSCRvPFFF z29qlvb(B=tj)UNU@IYNFqe9!|&PvWdLA4d=;(z2NTivhq%QUAgb(a;2)db$~!*mj)S~Rv4^Kbz5<5m$!h+ANA+mT|9R! z>+}2!50Bb=XEMzp4K63j6+Rdv`A35gGKPhmN>P$X(K~wgHtVsx&6SinPB&Bz#^Lq- z6aqmnyb%n|v5H!U zq$xJweQyx!)*>4~OZ*MPCuieiNkoZryoVIvWj)fnBP{|P(SPgr-t-r789#iYw|vL# zZsttbk3A+8_8~v+GdqFN2#E{9SDn*ISrg(kjjb7BMVj{mR*3_yy^lPMXHHmxX4xh2AH}p}(GM8&%-f$ZSp| zv;OZN=IOWYgXra=1d@^0QzlF^HA!9n(cU-6%!pHHhs=L4SnxU%v+FoK0^87;qu|y@by6?C>pk z8dwX(jt^p=1BF(cRnMhuoblfmY7B4wY@OV+5?@RCFRqn<__}e?{NJ?z<3d2X*hss1&(V={8Fa@(C*iK*?Bl z>t8#OA3le7;9T=VbTK{KZWo{80kpOce`@+dlp}%XXd8yVNe~`ngV&Is$8!R2d^gN# z4%y!$IVPWMHs5mLvB9p(bLOaRRdMHUUj3y>e^;)imLYie&XnY}Y#e=Sqx#<}j&V0> zO~lq)0QCugx6N}1#j>S-znrT(u6s{WPZdCFcFew@7V(ZHxY(LjliHoWdt{cMQqb6h z<+%~VZ=suz(Ai7R?<=vPD7aymD%^P(;goR+u`De^*My%f#NpENJg{J{9?P{Z?P)OA1Npfh z!ZBy|53{fW=6O7Fx`(i<8r+uSyOXeXWp;sYfqsb85$d-iTU8eKl{(ot;OF1ti$hF$ z;Ew=-tm=^>f>fpkBaVDg+p0Lng7(jD6)hv^)r#h#KItKQ5#|$zj8c#fkl&=XpM-lY zgqG?lAW@n{!;cAX=fOpl%pF~BmUM3XvweMlGrl=n!th&HMMFDGu~6=JdJjsmkjj0% zQ!6=aiUGO@L*-9a-u1+GU3dmyu9_eVZwJRZGT+b*(`fZ`s_4y|H+N85*35#X6}9t4 z*OA9LQwl;3gF@mZ&xlz;Rzj&x98)fa&(XGafp_)NLD+hiuD?V)ME(yfKpX~~0Pc`^ zt^drO1knmcA*&m%7S2g`D7SaJn?Fy(vO|*z;!9rVnK~lSK8AE<=AHY7aF%p8 z0zGNq`QTCN(%aero_@^`r6!vtZspT8m=4akx_yL84GizBJMv7kE+aDs)Ie{{aRy#8wKwZW+fIXx?{g z4L^btO2^`k&3+&w-U2>xV7x1q4{Vz`FOlzl9ob^9KA#TH|6`!~LbmJ#YQockWQzA- zW<|Ck=3shnS@3@tg_xw*Jz|KYYFv!(jtiZJpG`JEd@%20%-2(Zgo27+k5Fs-_*$qR zF3N2-*Eku992z!To!TziTw?2SxLW|e^1PEHBR`6v&H*kW)$2pTLn;(?YQe)<`8a)! z-!A}bA!*^niJ<<;VgmgD-Lm1rZD=xmRTnS27 z{@8C=CPMlgoGqs0Olcm{R+Pd45~m{+pqgyjb6gEP+&ENxDTwb`E5bl)#P^qS4y?)F ze(Y{|%4?@PisSveUXW40)I%6G$fEm~Ce@`*W%Jah_fKl&+Bg5)hJWE=5g+==C?X<= z5D|gyBR$W9iwCBfvvQ8(p-~`Jnc+i*jW{gjXWDQ zP1@88e}$6gsdZ+-TOOyj2S$l6h!YWo@k(3|i*F)uNN^L#A=D%2M z*bDSvA0VlI;UDNI(-%9>=EsRp3b4zLQ1CnE?pJnYuZe8ulKqW}EFs~ws8e3G*;r*D zGDgHQ-Rq`xaK!1^`0ZL;spmi_a;c_AOH!TMgK#k?Ybsg3?n}ECwgCV96f=X zE}}XLAowJ~`<`C-scmwlZ^}ymU2pntlH#SI@@Y76LLL*S&+md@^g_fy62F!`GKJKF zc34+MZ=~W=6~{iQHEq`hD}xg4ZoR&9kX&CzpI$*% zg9X#zHs^ZPbXnz9VLc-TiPMDOX5Z>~V9#hq#p#(J+KoQ0&l2Nx0RzuH`$(g^?(yKG?o_3-{Fe{K=j}mJV{VQW9wKQBNc*Ty68Ri9U*uT+jU98nC;Tj&`@XI5kWYgS|d6`dOwcY zG9f)Y@OQ|GzUpmW0}mM|`>ceAk@iUwF-sWAwnq(NS-yQ7egXU8We;k+xhAbv2@yFP zY1}KmiUI!1I|KhJJBNhoN&8BI9Xk+atlqiA2&djjNzztU`Jj7v$6zpY;poph<8tkI z-^BdLFvCu!nTPf!P34|&sjG_OH*byMLn?Z~em0PLrdGZ39j;O1s3JUEn+Lk-sU$WORMBB%*H9MA>0Lb1gx`ajMhNEsXKT%OYqVGk>Go`eUre` z)7pwEp6SDXt)>5$EZ_+L^{umoB4|*fI)cNe>|{_gP_X8vHtZPr!x~Ue~_#iQY8zdP4^j zmx&C?vMCce-sh(dCpB^7(M^k7a)IL5Ght)|!YOlE zAH!bemkJ6~X~|@hflKbdnK{ZnH>32}ieDdcmN{FfZt6$_(=H!=v` zG*`-pn}>Z{V&$0tog>mznPHdUsiR%3=)ItWFviqBId7@6Q$A&F)9vnGH@y}=y;6Hi zDf5VH%&m46f6yyp-Px)iW0!fg%WgijdfCQmieyYG_$QNpkDrus2mFh40Hy9FmVJj) zrJceTuH7pkKQB!Aw<(h8W6@;`7Da<&oVM3IuUJYPU@PZPw+~>tkw>nGb;Ud)6pO6D zTLD@nd z7U}o$O&9-yx&z4xXM5?kf-@t$*gN!HK5$-oRJpOo}7A(mCn@G_BUo#y+>pqkG zKzjjWIOXu|=@Ef<*FGwqXT(K=)AGP1BlEEs+y^E8Q%3s3txC zradt6<&R8&bwwIyJazBxtEu_Y9xwK5t9{IqDGr1hwthit4E!gJgD>jsaSC!tu;sw= z=NQ5Mq-zYxwEOypm*0OnX-QNzcbd)OiOS-1{fCwO&q1wRKd!?|X7?o)$q;20+2O-& zPv_a>B$QfA*a>jddte$TwbC|ZNBhHhnQSe`yq) zhL)^!{|U-tx&Q#*;%ade(6VitpbfLEICs)&oTEW-fPj3#4|K-pL!wuFvVZ-R1pt9vxs^dNHPSJ*{dGFfq8}`NiZ86>cYf=i) zd;93lpLNiMD6S}o7?5>D6jxvGU-P`13*K_HSspfStsu65-8&O4ci9BKg@qfdd^i> z^&+#gjZRu-WI6fM_ToCJzzA#>eQHe zJ4u4?>6@=56jQsHWk>tz7>|?iRZNT@7R%Q121tEWt=B|PTn&#}NXUG9k20enKY0NA zLiOIUA_=bmwe!^=k3vnxTElA*n%63VcUiFS6Q3NdBQdE>->D+(R!$9(^SsdhzCrD8AqT4fI7&>4Pn8`VMH zRW_`b2MT7cCWtmjL8=X={Dh}bwv{=Dy}AAheTFJD>adD^Fy~W+koTg^i9KeWwY-45 zUS<8N={*zyT6=)g{~E&VGjE7tnchRv5zd2;JLZ2*_-O1!5ZIL|2c+0jj5c1uqD|}c zjkV15Ihs!^gKOv`pQmShDXM=f@Xj>T$l^p=ntviqexw*=22tJlo{)79wo_e6x8@*p z8INBuwNFm!Sppx>ckzs8nlRtr0L;t8-=liX@Bo%$gi)+N| zrCU#BgK{a8h3#tjGCcBwA`Gy8@Zu60(11qxMn_ zjG3_OW=P;!v^e~QGP24zov+)pH-A?1nV^hkv+#CM0kSfp*P?3U9f8-xSK zA`x_lL{|T}@R;;+{reMY4c~s;uh!_OYJ1atUa?DOHprY`xDmMd@D?++Hh$XC1PM=AMjh?KqRjAr&th^=I|M@0FZk7h&tM$L|S;2i`MvvU@ z#olLLoBKDsX6>rzrif`jIh|xG0(yrn#Ap#T(*|m9G<*VKtb3EZo9*Lqx*KwJmWc%@ z*~$K4_0Y#FQrNLpIn}1`ucNoLRgrRR3Ha+-rI%qV}H69o`sb}Reh7QEm%~4hDZ{& z)W)0`5+%YlB%;F<$BnXE1rVeGpEs=Di-C`jtf{154Dnu3Q9Mj#oF<%uawUd9aFH0H#UUu4YbbR2K^5MgCS^g)QK}nz`D< zz8Dw{9Q$Zof6PMR65N~)66|sI@l0myr$#bRl{Pei6e95iNk-Sc(knT3#?DuD+i2>> zKQA*9Y;&B@)Qx5#br`9%7(0TVfYe4*UdC_8pwcRE`>j%i!OQEMHEKzvBe;SyJqR!t zd-s{2m_o~YOZd}O`d1aX(t8cO>0dZa!*3wTc-GiGmf&-HOKK@0V%qI_k&m@@#C=d( z8;f0#FeO7z64oIzGuP&CrWsUzoy{Z;F&~m~>*xtm>v6bp)lc2QQBkDld^u~vN1$hR ztyBo`Wi%N^Gon@Id`96O#0PQ^Xwpxk$I>Dazgo(&5;<~<)2d5=CGFutS(1K~@_yCg z4r7qF{aNs3y-VNT73ggA_nJV!gb%TZV-9Jm7+)?gMEM#&HsX{7=)Yol{U@2E*Vpa` z|M&#!n#FlS0|#LGCyvm7Cl_k3^c~MWx$AZK zmy6DkU^nLf!-yeN=}+Mj16S0&=lQLNO}wtP9woctaeW@WjG>MZO2;k`=9u){(kv7625G?1on9a_I!st(9m4GDZ?qbf_#dO0w&;w44bRA1p5 zNz%4o37Z@pzbNd)-FK64-<_AuiwP0uuI#uZPp@ety3ZNE9i|t4qrSGXSR-g}*y|id z4QqDu+gbkJ=1NOfdAVU){+03;9e~78FAQ9r$XEGo_d^;i_SVY8Yj+GJxdlT}GL9V@!E@ug4gpfpJN`RfhP)??h1=#W0UfD6EKI_j2I-|^eb-m6kGf<6>qU>Xm~{Za@Gb#yB& zp<%%54-Hw(<}89Ozcl9G-!OEl6G)qcg(e{eZ*0p z&6msfLM7+uceK0Owl`q(jvT&n8*%30)z}KMh1_wJ!Q0Q2w?p`xalz5yl~qi$P*I79-ij?j5eAs9Ds{u4-j@4JQ84|T~7&g^Dl1D6p-MaYjJ z3oN@&wzQ61*20ptMr2`HisG*79ip9BB6?Tt1GM+{nkuy+sulerm}tzTck^aW^w)Yd zIPyY==!*);n=9!49vFxRct76v#f+*-Kklfu-l@vpn*HV%&w)aq@_`Ny5XP0;TlJff zhDsnP0n>6hG|nn6*tjM_C4?pK|nUn1X^DyMlt_k+WV$`5z+A~ z+z-6Voo&{qPhC_cMs@C+u{8j>_-KS?Q9F)9&yd@5CN=OljzyCsJ;TT!daK8 zb8(Me+DE9LgV%$}vahdn+DC5IlvXUIi#qOaWXf-Cfmmxmu*CTn*2-ts z;nW!G%NrqnQd>ulQ-LrD-B%{0$^;bn8V?KN_~`!tuWO6EGO4c*1)}a%A0e6d4i~@! zrp(*l`96G9qSF(RUewEWGlz7p3{iqqc{a+yt)p{&Qyc7R7{Qmq}^^vEUSyg73y9wpN{1MXXseH}tuZJFftQWle$d!qX zDy$ZvrKHsBByVCM{AN;;$&P;1L_gh?q2%vNMS`T0Zb4-<7k(bd`vOAD;|?X~v;vLX zdMD*s=e8Rn%treduMs~^`DYKN#(J1o`_qvsi#7D49;kpl{;Q;_ff>^offdlQ!&UB^ zQnG{edkhl{1+MR(By&+-m8)9msU<+=H>zV^zN%}&OJbN$7GaG4+HB7iOoc>^cuDps zE&&;lzA}-4Cy7i>!HAFoa$iGmh*Bnt+YpT5|6}PI+w0((Zfv8mZQE*`G`7{owi+~z zZ8f%S+g4-S&dGUC@8|un|G>J|UbALq&z@cjJD!)y+98q=*O&p}Fn_*XNi?NFNwU+} z;AxnRJe)U-V4+)zFSP--tH0f++1O06_M~HB@;Z6nfPL~$&%*aF1r7*KHoZh(El8SR8sN?L&zrAuDcL=^imMGym*T1Retg40@T@Zk# z - - - - com.apple.security.cs.allow-unsigned-executable-memory - - com.apple.security.cs.allow-jit - - com.apple.security.cs.disable-library-validation - - com.apple.security.hypervisor - - com.apple.security.virtualization - - - diff --git a/desktop/src-tauri/icons/128x128.png b/desktop/src-tauri/icons/128x128.png deleted file mode 100644 index 4f9c5fe903d7ac27f99ab28414d2cd7a557b53f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7995 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 z 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 diff --git a/desktop/src-tauri/icons/32x32.png b/desktop/src-tauri/icons/32x32.png deleted file mode 100644 index 1a9a611b2d36176cbb427a06f97c95e28b896c85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1767 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

uo_WV|rRum%`*Kz6JHA3efCmV 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 S$?QG=0000A;9XDu8TJ#|)laP&Al9>b5r^c8q# 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 diff --git a/desktop/src-tauri/icons/Square150x150Logo.png b/desktop/src-tauri/icons/Square150x150Logo.png deleted file mode 100644 index e996e03f3a30f7993fa293b44cc6e7e2a0468a01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9853 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 diff --git a/desktop/src-tauri/icons/Square30x30Logo.png b/desktop/src-tauri/icons/Square30x30Logo.png deleted file mode 100644 index 85cb7c85c41eb29ca3ee6e705c114449bacef117..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1677 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 b{PCU4iMw9V8HfDiX$F!Ikrl2M)DQeWU`|qQ diff --git a/desktop/src-tauri/icons/Square44x44Logo.png b/desktop/src-tauri/icons/Square44x44Logo.png deleted file mode 100644 index aa09e90ed057d362b8815ca997846b13cb74d5c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2396 zcmV-i38VIjP)bcHwkDZ z;EZY7YQR}_u!g~fWzqGHmcHIy>-zgQHf)LFeLu26oxe|bLJp5(WUr<#j=woKG&DB< z`iau9>jLaPaC`WZJztMLf22EdPt4E&JHI*1YKX$ZIG#)VbNGev#~+(mIx|`gG^+;o zuGRzlzq9jCM@{T4WuM=eBOlSP93jB-Avm!!PE?g`3Vk*%QmDJ z1ehTPh960{UHVr@Gna7eXj3e9l$|-qhVN2nkrg zjzb~X(0$|iW*z}wdMyX%{*Zyi|8fX4GdTb;?naHqMtjqDMEd#(F!NBO6*Q)3Umv(V zYV#b~I1|V&RW83dO3;REk}KA7ik*6^6DVleti#?%8{narBe44`e#kCcU|aa3#+`BG zSd1_b7B99Uzy+N$KLO*Sa%IjF8j?&}thX}VAqMBmaozjE4DSDK8210P38QC2K8H6M zFN}p42uqoZmEPdOd5AueRp;Y$QY5$=C^TW3EOAD_yB-L@foEGJXbT;zXgtB8CSU=@ zv-Dn5=(5Y)ZMdewZ2{i#NtFcL&I{<+?v6=V>Sws53IuG~7R297J7!;w zSlA_%J1#&2(e_DGz`aFB*QGYw2STvzKm()}&{8zJD#J!ahQSHHCt2KQ6at{9Z?I{VYxIX|hz+hvyA9j7Q8P-SrQVw2Abg%DwyanDlo6aAfQh88`elEPC;{wBC6-js))+#I>vP@qS zgA1=GVDgP5bln$*TY7?!nzQ6HP-Q1ec}l~LR3HLy{Mjjp_BBFyy}2R}rm2Z<><-}M z7$zy@81-q`v9)SWV3UtFVyAfv#)jr#^yr+_t{G&jZb2nzjL71w1?T^|0DB*5!-ZK` z2UJ3>287x)NWEvtc-I8Xos1^gVs1E?CoD>UjB+)Fz`*u-j<+z63$45@c>7S7DU#9_U;hmQZ|et+cgU%j4B>mkR^>TR+oe* z)o_We6~N+#e$j&Vo-iDEYBO~1YLxer(>Zu+aHc?PRcSEkIBi{lNUP7mE?SreOZX5VVwrs`dS=IV-8Vj@h#8g zVPQHAhK@T%UT>xYt8%8ZEUB+AJ+oDUrL^iU7U`u@=4_c5@tjAsx2vYb{Er zg^3Ea{bXwY5NI?Y-0G7ongJc!w>QE)58eu$cQ&g@d7tHKoWxWH-a2*_$3e@qRitX$ zn#Uy!bOTyo8@fX9*>7xtXsi{&ZT^+TS1uzmpsoT|SDOd|V z+%Pp5dF?9vXl>F4NdlWVR#x|c;XbU6H7|RwpAun&Qyma@a-y_$2~%@#eh5RZ7b-^5*5!PXmCSQ ze$1W22A65sADuxtfpl5cvF5Wjy!zbRaO}u=dEfBq>SdG_WQhkW*{XomAqu{R=i=k^ zU~q#j)^7?sI@DH4(`pvMW}k8ip)#4_SNBbSvG!*sm*DKHSK#FDF2U5rMF>TFIJl5j z28Gm3r&lnSjgNb=m852+(23-kp}j2!pG+_1wckH;R%%StIBliyF3x6D(!lg+VAg%- zjcYLY+^Dofjw~GR1&AZa<@qf5gSabOXJBM(D3vP4NV9krCYDYQd9hVcn0gm@ zaP!kA+Z(!LiNt)K$pfa^g_v$=boRFtas--9S)NSD1~Ys~xgu=$_m zvEf%PA1*tpDmh!zbex@y2N*qvx_&Z3`&2rh)9L~(iryd?9d(jiyzhlV6lKN=K8|O3 zK9eB6^zM^)&SWM>TufCMrZYATk2pD<4euZ5{MJ$I0J3~p;+BN2)MU1)YISO+Ym(}{KY)oXiG3PeqeJo3`4gpM z*A2L!Y4L&mDWg`srg=5HCcs|c^#6_!H|cLLr|;E(t_kpmseI)A3H=`#*Wz5~6zV+y O0000 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 diff --git a/desktop/src-tauri/icons/Square89x89Logo.png b/desktop/src-tauri/icons/Square89x89Logo.png deleted file mode 100644 index 78518fd36998999835affa66875969c6b75a1465..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5372 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 i>QMLwXg9>43jGI8FH1+3%nwxn0000$M diff --git a/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png b/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png deleted file mode 100644 index 7602acde06a7cad710db30ee7e72e2c434ca2b9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10962 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%0D{+^kit6Fe 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 UKJVv0Rux1>LQ%X<)HwM60Qpoak^lez diff --git a/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png b/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png deleted file mode 100644 index 32f9207f1b77a5989b7e58499cafb95ece8ad5fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2884 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 i>QMLwXg9>43jGI8FH1+3%nwxn0000$M diff --git a/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png b/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index a4882df23df737498ab2c9b1075401aa8be2d9a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2819 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 V96(J2s$c*B002ovPDHLkV1lE#T~h!6 diff --git a/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png b/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png deleted file mode 100644 index d9f629e8a0a86e386252bbc6d73a8ab4b4a6c2a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6628 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 V96(J2s$c*B002ovPDHLkV1lE#T~h!6 diff --git a/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png b/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 22021301454a880d36fa64d6fb9845341247942e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5810 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 diff --git a/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png b/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png deleted file mode 100644 index 74093b2bb5901e0f173ae5be7890febce7a924c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15719 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 BkwyRj diff --git a/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png b/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png deleted file mode 100644 index 22021301454a880d36fa64d6fb9845341247942e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5810 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 diff --git a/desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png b/desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 158ecdb784d6abef690ab392a0534d9dac536a93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9076 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 KVm05=p8p5XEqadt diff --git a/desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png b/desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png deleted file mode 100644 index 158ecdb784d6abef690ab392a0534d9dac536a93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9076 zcmV-)Ba7ULP)$6vJOFvkYaW2S<^jlS9)P^&0my4!^8nvV1x0~sq*jGVMS#(Xu>YJmR8c6>sj_6M7=Q%g zUe0b)prohCBY<~kIOc1<=0E#A*=s<7$SXcMxzCDMB-rur+;Ju9p z2RHAMXk0&si6h(3i%C~rA%&Tm}3=)!TIx@l4K)z^*>Po5tTRAH>J zACji+UF{sTd1B*DXql;!Z+{4?b*{faBuGc~?-+wg*T|tA+k0Pr=I!H8{%&XAYg=_v zBaoOxDhrTE>2H8q8>Nn_s;(ISnU7sH=}ULbu3vhkD5!*pD-xrZB5CL2Pm*p#6DY5~ z&vn0Y_XlxAvGH3A;1m6V4}v~*!0qbWurd?e z+FeW{ZMO2@i~f+908L4-jG_r2Kp=mWpr`{jF>?UdvNl%SOaK+J>kGp`{rxn{wnyB0kC^wioJ z%Ld{xd`_8-2+{MpMqwb?7{C|BfXB&%)-9uDE-_ zUtS6dfrb%jIPMete#mIo80`sS8IM%kOSHdehVNy1ylj>-g|n+a$$iYJPb4B@O(3Sk z2Oivh-BsI8zxZw`K;$Zb^bRu5>hiBIeC{>&KqM|l6Fx!oCr`4YgB=aCc}Lmkp3AGE zHlNSN{;f`20I8N=hUpE~zTZ zYn5ooTp46ZBmt4xob-Wh*Q{ca=sh=WB3A&UTl#I0_DT0G-}C`PdA+2>Jn&RWW4w_> zA;>_J=)ZTS$%7Y0OhwxWFY0o7PNr{lJ z&fhhpFI&dBBP#KX0G)@ck=VKel!-(a#KKF_4c-TBzHa$wfBq z&)3vA*ZPBDlbAdb9~W+$9QHMb-#`7_D?0DML31R5bTQc8c=^(M7r(w~R34-(!sGb5 zMLk6|MFy(3KP*xtL&R54?%Vp2WjlJ;ZFZ{497!PbvhdfJ=Kc1G=HR61k`k4fRCFak z=(Q3-iFx=eq$0G{w9k31>u0}Kc}R+eyHGUpSaOv8QZ62M^VRJQ7p)$V`dCQa7$l@c zZcu{nRiZz%D*J-+_QEoOCgJA*F+{Q~6&8ffW%29cM;=Z)1OI6jvBAo4L^RPYlOP?%3w4A1KVebnPR-D&Ex={x4nSUZF~n_0i|O61}0 zzBjk(JS_`=SQl_?DJ#d^coS9+Vpg3pGNn^B(`TCf9D@*oV_S-HBZ#~}*65|&7pmto*nzrH% zLDkPd)boJ^$2LoFe4E5U#WV=`BZPrT6DUgl^vRTUBN@J9cMarOOc{asO;=vaVtD_- z;zCj}?qk6K!m4hC!FOuyqV}=j8S~?^3Lt8@ajrp-bI@p#9Q^}i05&W)Bh`*0Y5{?u zf~0k}k8kZa1R*g>q5FLa4!jzN!*3;EkVz>75uV4{rxYtx3ZyaP8uD&zXvX|0wF}z! z4{X@QVnqe3v4R1l7Jn(q^tz?X140C1@~|X;=xWNsn1j|qgTJdDKwu+HsVZUgvQ&SV zz~l@4e2WcG4y2t=MY&``J1I~@lIQ0GSO=P$u$YjnhYcFA%C5Gg{970h^D(oC*d zumlU3sBXL&Iq!5JlN5c<_|hS*hM5=vrLibjPoVw!Am0wX5r-|0jY8+f1c*Vxfu_hb z_w!T8J_>Vu6?r&?@sj=d8(IXh3kMKYAu}d4eKt$ZY5kHuo zeBwYNDv*3EZnW~w8u;X|nxJ)#4@OSQeBLg#4NBStA2ZS4vLWvn50RJ1Qz*i!D$*>a zIAtW1>@H1NiugCp1s7`gObw4jGsRQSoyLJgRj+f*91+$&-VBRA9fr|%V-Xh_ZHP-@_pezwZXq8uSd-jm*00v7X&W_Ba3v9dHnnOcnKbFran6IE%1fV%vi zdKfd;53hZaE-WqSR{Txc3iS7#U|<6GXy6)H=%#H~y>@!p#DUYAal&>2_z)ly*R7XA;N` z$y9frX!-^;ul;W5=Cc_@jZ;Lp;gJ^bv#2#zEAaR+rG;&)H2f#AOB$sr=6mOZ|ward%12jqAO+trSk776jRgRMzC3pZR>+rJO)M( zDM7ie_nJM3+Li`k%{Q7LHiY49YH@6oGS}oQv<-+DY0kf{2A14X3nRTUGq#N;0GN1TE0?HqFS>XML=EbPTGUXcePDAA z*q_4z#MIZR1Fo+JaMm=vI$`y{H^aom0VauLo@b-fLeCtuhe{aHRwb407G^TA)1%LJ z=ime4i0axARf*-T9+VCsE%kxz@4ndrLI6~ok)%hcZE0U|8>ndaF^_*NY%higbbk5O-d3KOiIZYmotJ$70)XefX1~4SfpCk)LVW*TPG68Q7R*8 z#k;9qEJfAG=pBC^fc9%@)s+(+N*=t#V7COvcg1+t+YKfovx2n(L|S}MJ4WOMVMKcf zy?Cso)s#d9ECT7GFEqi^U+&_mj$FV{dFM<56`xF{MiAwEKK(1HeY`Nl{vngIP#94# zSa$f`5jeVG6eeE~P7P* zq$kP0^v^_-a_b*C1)uumBwWMRF|l#3R*(um~}5hMNSC6AJ8j zrXL=^?Fc;kpWQIjBXRJQD!R^r$u2#efwpaNhy`I~&f#<(SYttD29POSSb}W4bwh#& z7*pQ(pC0Jm83msfiFF1dcbx!Zd_@Nsf<4qAfS-Aj+n(x!U*32KK74sFscuSPWb5_Q z3qM(}=E+EoY`jA?<}4BokUcP1L;x|P!vdK8SP`KYL9bG*0qEBBms(7&8WKE8@me<7|u!fx#jIh?$Nf zBQP#B&=rR#?>L+UQ8DT)RmMJgy-lh?sjicp?Fh z-+mA_J$YIS43cC3FRx)m!Il1GFikVM1-dlCn9&12^WW}-C+;{1M>mgfFNk|0M0II(&q_}- zP=m&$F7+oD;4%V`bpq$Zzj)shk6q5>OO`}e&u0DE5_U}8G}Z3`nXk!`Irf>1Zc&uu4cp?V(- zosyEZ#BTN{wJ*PQj8KxIoBzS{eX#6PEllM^xD;|DTCJyjCd?0WNo1!Yla7P~8_2=D zuuM9X+MJi^`;g}`n)Mugg*FV`BY%cYCSb>Ny|DeSy?k{r%uR`WQ71h=rGm~(RQLK* z$h9y|gAwcvPn=``ngVW3XwuV$O_Kvq%Z&D+lTupl&#ZpS3?QQwU+5yAPDqsPyZVa9 z++7X`sg>dsHO-Ku6CtMhqEhuIpN6Rvl#ct?4?zF1I5bQQB$K|*5Ttf4SnGrOiGJu~ z;SXOxu;83=kW|Qsw$_y747^br?B-ZZthAjVhfFptSp^I9YZHq{Ao~kfIjw=aTZ7_GQroru8Ht`+27RWb*7Q z)gQ}e{7! z%OU+5)N-o!2hrUr!*#9a*ioD4MQQ1W)u?X;`eR2QqQ-4deZ@y*BdoxU##Lg{hzFAx z0Ebe@femCM0y8Z}WB5j@D$a7qG%_rIP?~<-E8H# zp3P?Bf4D!vfZ}5j-5Qv&ssSc1u7#GVA&4~l!5>tEXz1a^yN`4s>|c0^D0#rRb~JggKvdCD=q47mcKPsgf}1QOF)!Q6LYL^ng(TPjz!@Aht$ux%Yi+b&QdjV>Xbb8>B-)V; zlro~B>Y&K56*&lA8Fyo zP}g(3Xr&xkuTy0USz%^=+6DDGu3eQteO)m%g+tR5-%fex*aj+VAd#vr=_s>x#?7vQ zTYoYS8ryJrsJ39IeIT(S1!Z6iBx;|H z$BZ3JKW6=oUDcoET2xIsjt)vNVO|aV%WoHQ@L*BBS~OPZ`;G1Uk#B$Oe`kxS*wcpx z5ScWczM=tIr-e231YVV{1uoqJr#q+?Ow z(a1+>9+_7cRh;EgC^<(55-{iTW|(zJlNJkdM}6r)JhpQPqQer@H2UqU5*<1bjtj~t zxJ+c5h5^D6X7^nGtywUBP7TNj%B$;~g1?d$5ULkhD}2BDYcmX7cQ>(ka8ti&`jtHo zE0_y|5;Fn86CFyx3}z!-cuSia4D>rCvbmh9C;))7VS|!ps3#6Le0w&Gn^oiPq6?ZN z!+~~qb3dQKf^i_4g@9pD4gUPYf>nbQ@fB>m(ixcXP!K-Tvv=F#tV>h9STr+?1y0_BaJd1tZaEE}$Eg zT*k^h0pmRhn7XVHW?kIuu8m+SOUd39a;r zg9ANLSb0+$ti69;>X}@OI_v5Sqx3u1^?*O5&px4PeR9JDah?maVL&co=CcpkC^7KV zw)kPrrD~+vEkdWyIL)U&#WeL5#i&lu+rl)(C+?jMm)$Y7G~j`hivRG9Q_#I{h$m;2 zTNMMp=*$CBUqUTHxAyW<%S&x>VRqa9h@;X!PzMI{2J3bM)E5 zA8MbWFFk;?o12Qt^uU`<+>M%C7HTNmvza=fF+kv}ZYVI35j;6sU0oW^Ab)6v{uqvt zccJ1%_~D35IGhdt|0 z@p2WOR5s{lYKYmd2Ry@UniTA%;+^Fxqe z*?o*LndX?$%z~i20HWqm?1Ut`7{_QS8h$lR0hqj?9wyAKgQkgLn72k9xy0wbX`3?$ zO4LQXBMp97`@Q*$AwG2)wWTX4F#{11YMTSlFg^(3dcToBoQXVNSHk7?b;)*Ub02Jf z={SVzd>@gt;6$FzT=k_NpU4d6R%n?Lu?`ZK1GF@+{^KqA zDjGooi>?`;|J60n=+8(>DRnFZ@r57l(N-=Ia)u~qC1+(&<1%iB3Otg|E7MLrmV+ZZ z+8>9Rt6JeBcb>#Gr%w2AeGix7IF*@@T!XNJk!VvYgZ6w*XJ{3?(HAHwFCOPN162TYYQo4ekKBziUg>N zR0c^Sys@hS1J7`8jH#>^_}nj6viyvXFT{=Wv&sn^`@S3dY#}>!F6K+s5GXh(-+b&K zY<{Mb8Sy~_c!=SNjFTNx`zl%!ZHysMk|{S$lVzwQ%-)&4yb137^(qb;UJT|hM=rh?%uN7MYayIvy%tKW#IKH~S7P>cjl!?~Z6og=k2))mLuVO4 zlzi5Tm2-e)v2h!GX&pyb_~!2~fttoZ(qpJBc=QJV+cJkF-Kq15cdmm+8+=igBKheZ z@9^Yos8&o>8|IsAqy{Bksh6!}Tgq3jV;*Kk^JTZqfb&+gR0VkSzFUjtX_n`x8t`Zn z2ryOh$n9^zvEBVFwBX}wXXm@jusy$uZ?4QtwT+8lDMnO*=E-6B=$GcGX!TW(|4Z|z zCLsDsu+=d2M>Ci)V*ki(Z^6MWr+J+-IwIL-!e-0RRJ5ekxio%OCOfwT6{?xG`B^PWd>CQAIKC7vKuIsFrsy-gH(I-i39M*?`-8X4>E%}37))K zw(@`Kc!`%H%Q=X|wwQf3UhOc(B<5Z^HpQZ)y%6q8~2*eA^>Ic#JIXLOd8nu*CX)s{oCMF$1qDz1huuVl@zek zo+zKEwsKRQQX|pW0P+-UmydH5K-@DC*v;gj#OY(Lp=nF0R+VL3hmhAYv#@&WWNn?E zszi{vlFS$jB_tharD}TohUWs=?;|^U;jcg34m;L$K_KkonRQ&b!xRkEmuLhtd6T8G z`i~svaP7e&y^NP#jHjHpw7~aR7Y-nnDyQroeetfn0v`>EmbKQNO(0x<*S26`RlwBw zYC@3Rw4NlSjEpD&fVi|#)D({{aXLTjhjl;O4IBP)gcsIDn2V16NanVznF*65u|8dX z=itJ30{D=ZdyKp-DS-5LV)VckJ&H+*IirpCPq!H+- z`br}D+k$qlKMw1Ew;#5@dW3-h(KOu9HA4@gIkJyyn+Elsk*A* z@#y}I2_=T;5W(;=a(%v-o+w2ykt*@Pczv*sq`j*m7XtK>6a5-l-{xdwoL-Sg%w})L zu0GiIN(XFtp#wU0_VWIOYW>Lt5NLsKFQmmCNBt!xlql^U-M7)m+tLC^Tb8nC^w2IQ z`gSw~#?6T4(& zXi!C=ji|ns)2;Vh<{+4r7K|D}5)h6IZGA?e66dMri51j};wjFzM6^z-Ie*dG>EC%j zu8h*udhkRCcq&h0m+LUzo#r@Z*XvwL-*{ciJy5Nvk}=oCQ(wksp;=BhzG6yOcQ_AT zWU3tB)1^z|q&-A!YF~2H58D5oX>Lp#t!e(d0AEfX*U#lqKEfRtzC2lGp1*t zU1WM?to5BD#*Nh2}UC3cSNdhKuBzql9ptL}<_ z;kct5xj+Pt-2V9S?eiM1_`FOL#QxnlUaOLZ5Mp+QpS;-l@QnkBo-Tq3HU|kmpR?Xj ziq?C7yt^|j)`ch6EVzW(LJUQu%8EC3h%aqjt+YG`!J{MszEFVKJe!_7`p{bD#wU4KX#imk z#mCT1JBD{Y*WPsb9X=vPSZqN8RXkRPV#NlF&cgmMDI+npX0H-J2I zV*9uXAkb79>sa53=z&+~G+g{yRAU&J(y~4l8j`dbq55&2?EQd1nPWB$H)_tE3geXq}MxcGK~ zfk*}^L6QZn)P`JkL$jFST1?XO?Cy`k!k;1${lLNVgVjfdw!MWsDkkDwasXLCbbux3 zUYJ?Ga;=|)A`*?oRcqh#&dStSq(@>lPdLETR{yg{AG-YL@boedXyfp=rxTr2!l^G6RwbUMn4Pn7zY(`9fknITby!>4lCTU4JUp(NPNUU@M8c ztw|!0fu?U~-|LUEuz6%cWcDS@xE2x=v#Z)l*wm!1^)K58#`4LDWm`j-7I4m))*rR9 z2VXBt{X$6ekpS6t`o#yH@A&Vv!^~hVHc^^SE2&E1mcC}JO^nQ4x@zp&2iqd;t7Vq` z#ncBrv{o(Sskb7=sg^8}G405JLzt%pT_by5f2ZdUcd;DTW-AZQH~^_PAVl@ZxM+ph z4HsQ~e&d?EnMAr$AR){p^F*;MDdp;c3fTf|Hlj`^V0Xh>a6O!C%i#3#FC4 z0#3yM zl)5o{UiL#*Z5EK>NJDSU^VrlTQJkM)6F62?6)45l^PI5&vICPg%Y$kmc29>{$i$ru zqL!>x5;SJsRWZS;xNntcRXL!%vJ0;{YMzbZH4i{u^8n;E4?te?0OU2Vc>wa72OzI` m0P>m#Ag_7N1CZBB+x{Qxi;nqUfzsaq0000VZQHi(q+|QWwrzBrbjMc5PRAYFxv}$qZ~Twm8`P<_YEr8P zwQH|BwWC#(q`x8JBSJtxe3O-tQ2WpK|Bu1L{`ac=vxkF#V6T>y5Y_NrzYIWVC(_K` z0aaf;K61V(Y01FLql+dJFudK+4LDeHyj4IX!KbpH1mjpJ^=#w)}gmzN*XoOTu)`R9XG$HuF_@cTEjo z9d?EkCnpZUHG_>Ji^u|)MUhzr;hII^kw*L z_{rR4$-gpB=4y0Q$5+nW&xTy!EyOJNsMGK?;xyA|rtgcZPDSt8d?Gar7}h~fvYwUt zshfsGr!Pdf^mS#rIZ82>$oEEOi`EU>1Iw_4^^8u5!Rn!Ie)KnwuMZ{GDj_6@{X+PP;E$|?cO)0-DU~sSk?C=k;brxKY#wYc* z1G!$hOpW$wYxo!Ma5yRTx(F=(a@0NT*+Qq;P+=R(b>?Q@*c1qH&x3in~hMc zLOH06_S-VL+r}-7)2gYVeCxcx+rDwOwS;TzxJS|r&GLQxDJx14flXZ^x{MiN^(_zb zS>|zPc_p&I+hV`z?Hc5;GanC=?u6>DP0HVl&Y4f91|%)D5F3DzdfvMS zVGey17~hGEpVd1G1+>ajX)DVyOQu-TW*-GSPG?3v zOm?*!I?Q%g98YJO8S$xa6;&BAt3)J*$!QVWM^w;Qq>6yaNovtjB(!;KnWf9Dq!`;EOM$^CP(-6dJtbmGhs zsrSA3JR|U_J}pddBzBFwjaD9g*!dq|6Yb~fVw#N%riOs;Q+=)wcx-^=Gh=~l^E4XQ zz%5y({sD?}&zh)b_n@mcU^=DY(?*T9;?6F(_BERF7yJ+_p>n?f-*9ra_8rV^)oz|{ zrr~0NUYbwGwHK&@AEG>7?;4u(JJ*7!8HN@n`Bp!-5@>I0v2*5QOvTY4`MaG$X^qfh z^sUB-P4x;K>j5>}=f4hF!4W!|cE%-|zV)xEfUoYCd~FQFxuRsf#|o|CS*<{+cWZ%{ zlPaR)ZfhQ4Etw*X!JDwNAfiUMyTF`dSf77GlVS;k1*e{UxLrnX`mhBb z`@&AWH|X&QWqP_%c7qV^8>P4Tt+&FR6?gxh;tob{5z-W19x#1;(k0wzUoSkF4@B8l zQP@~Nv38YVjLa@4+o*EY_2CN16mDj6*hEkGAkyFNy^}x!`{RDfm)@g?6yfvTacZ<+ z4aMW2i2srY#R#U#arG71uEnHZ;?xJ8-Q+)+Vy93RH-eLY%ymG=qrXp0@H+~5EyD?O z8{ih3DOaz*b!5L!b=7Pe_T2OLA^J2wbSlSzJf795#^^A@|4h>>UCJ;kVf=Y!T_C{M zz&T?=rGrwDhFcqnxz2w2gJSsmfW(o4URX28GAdt>H7Z+V0{iz_PQvdQ5+-0@>yLvD zZklhl1&1mS;cIwwL(@O_EU%`|xgDsl^?x2EMtx_%Z8n#m14jwRmltt_BniB>;LIAV zv4cm7SssGt2$i5sAD~PDT~?g`d(?ujg*BhB|E?vISZc$f^MikL6N7mwa_aNp-iY4M*&wWrh96#0!9VG5vhD zosqM4<3wPzot=Vzgyz*2Q{?)GI|^P}RZmlA_P;ubLHLp}SxQOQA8$Cy##@E_ENJ&k zs3*upleU>tUEoCmD}%tzGB&LPgi9^1DhBphl5<@yyWtd7yp5&naNDR-FkVP+pDHvg z!EWekCL8MKvo=UE`wOqCUBzD3vo#*`75M`9^L$eD8WO-n2=qxyT6i{Iaq_j5Ix6#k z;jGcY?Y}~LiZKW48HJfk8JzP1Cn%{q$LJ%|7m(RlJ7$0!$_Z@U_GZB8L9-4o#*ytn zlm&sUK%HzKX0&Ol!zGC{;4p(18 zNPKmo5U6FY6EY3~Plwv9kpff+5MkwKKZh*+hG#CT#*zzFOvk&}oYx<0c~pbY1ucW3 zg@6=-h`{dh!G0zfSTA}OU!Cwlc#>R+2zHoK-i#1K+j+z%uosnGUrlT~k*)+5K6X?6 z`7J#ylt>US1%MTzB%y(v(e&4^%l9Yr1el|H*Apgh{G&#bs77nQWhsncnz>DpYM%+^ zco7T_8d^%WsGb}v$SKmU?S)v*5z>8@X6_oF1b#tT-vR zrd_zcxkYOvXnc5-9%{AIUc+W?i+x0f;>3vd_sUt#f_>&mKskh80Zo4}4q_bM&tSf_ zvEL0%d){v>s!#sPe&VqX9_2Xox_|xG$N3`)*Q8F7;82Ot;Gt}+lss%FH)g0RlsT&6 zur0C2wYL@+YX$|)=6vgj-=a7-;J%o$G)>oojc$hxH3%bs7W=+w(ROqYMWPxg(5 z_zYDDG!7S)rQ1+n9zK)Ls zm_FTx0n6>togc8Ak@)7&;jgOb&TA-oy9?K?Vv`04RIr#-^%)nwMsBdJ+Y)Zq&C%h@H(oZCu|REL|*iQ18PZjnxvwxp_+(Uu%wdY z`3GgM<%T%>u7W%Y?ZXBs!PKZAsFcm)5kJN!ueuY*wAO{Nk#%)9K92R+LFA$;E}e2b z|M#gm zej953jZ`J685J>IrsZzAd?&})V{l@UjfM4RzHSJIJgUjL|0*NK>I`~$p}kYTJuSx~ zime$k1me^*i3LrVg{s$Oej`XkWlNRjx}7>}1lhK=ISU~K%1TP{W|MR+XeY&~ZGfSK zLg3>=bx&fyNve8}Wfa-XNq0Gq%aP0h_aEl!AkhJG&}3WNud9qtGvJk{YTJ`pInNeg z5Nf=PAn&t@s{OqcIcc0PZ`N$O`OKos`B$Wt84wT}^-S%qHj_EWszBq3{Ju0B zfyWi7h1l&jQ@3Fhk#nXxF~|u@d@n)b%N(1sCe`%}K{Z-638%S&pb~1V9rfJe)>#{U z+HqTHq|;%2SxG?1u^PKc=I=5csfIR%49`_%Oo6~gVkgBmn5Jt<3T&(ol#T;145BQp zvPzZUx_roRc4>t*rP?lPw8LIt!|CUGKQstp&~S_?h0r@)N7P#)jK$koso8(GWUzp< zr)3D6rtgUgj5~+C5KrP}uNz-QkBNdgZ#m&+2sB;f9Pw!N3pyQV{hNef5s#op`8?O> zC4Me|ce_ug9jE99waR6j;X_|I$@V(1i_0s98Z5WoX*oU8DhSzc+vAmV(G)*#&tNSO zTEM6EGz6zCKs7g9Oz(JZX1esJTaPU+H22xO5Y*H}QM)N9L!a~q;mE4qJps$r3P3{u z4SvFe%OM~TkIxP|h0dZGmTkY!V0tWwl<%4k#>kKATbZPT9fu#df@ojoN!O!^+1Ty_psf5%V~{i|anc?Iy!+u4tef*gU);2vw5Y!02< z{jJ<@q0YO#tsk?=)|kVyGolD(28`pgENXR>khJ{L@{A3xWhA~V^4e``nQg$boeppAw4W0g&vPT z+mQEYl|+LX6nwJ}V$!x3YJXUkm)ODll0ACxp0CST?l@iJKo}B~bPWGFKvg6yw|r2p zf(G>)CxB#45!pqc%FO>$F~11+Gn?)>L%dM|pW`LA>ll;lWC>efJ!V5i(%ZiXeuD&W zDT>`6vC8()whp(xoRsNkID+B`s*LB?{lp!<>5HUdhBw)loBah8jSUg$PAL7964Tt` zi(=oYQ&YK=!ixj+t`gsIS3zGDYtck1ck5>$=Cbkj%(^si=7+u+A-Y3jEhY4N=ePJ1{vkQ($1^_-8+F;dPjxaw5AFC)KO~^P>-QY2nT& z=S`|U3-@*!6_CFuUeHOS6K>UPTVQ>0bWtxmpv$%KZ~%?xTQNu zm`+h8X93D^kzr%W7Dj7Qt~#icyI(1&a9I^$5gc{u*X*)ba^BuR~0Fq1v87g8$^c zx6h^Z3_!s=pQF41E8vk%dNd_rH2&G z8_}n{F||`>_ICDRs0T-P3S?{@mEi=$heNfm@Ip2v9?NRTS`;I{iS8x_G_wm-<3lYx zol-?dOGGDl>#HwCGzd$P`V)lX`T#tKYv@s2Q_*DyO@6 zwSzMUwZss%e0_meFaH9$ZbZ+Z_hd$PZoK@0fA(BvEAUbqb9qcQg6jiA5$wLn+#y@9 zTj;ndQ5^g}$^%@p#x|ncCmccFobTtmo`h2HrtgbH=j+LN3iHEyePjv_i=`cd&x3tb zhW>0XDxVR_^<#%r;32GfdkG7CT#o`nYT+0_+OeK25zOyRTalz>W&RLOW=|=Pn+j%u zgvUw_wgQMPNrW4`2z~9I+})pZjV?dAl=pMx`T*})_Z1<+upm(?$EQkiv`2`c zU=h(ovTb^_-GcMNYkBp9Nrx#3>u@fwvIW5G2LZ?7j{Kbh?L zWyxt^f1BSP6$`- z!}k~z8IzV%6|yv8qgvtgy;X_Vf{?&QarSgj8Dh4Y%5L^X;^5IXa4^QJwLj;nZRnjn zCksJSAh_I*!b1Dj#o@-Qvv6g(8o&-z5gsU%&Z22P+gr~0gM6ygQ>pj2W%UU>=w$1uH(G^#4FX7CYYKNL8n$m@+5` zUgnjxu}S}?I?h+Ts`abX^I18Zj%J3<1ykr_pQ7=$L`&%%Fjc?}b<<~P5vOnUeQk!G zI+-L4$}+Tns5riRC+O;!CuqmXlp#3sDAagSh62KR2&5OF637FFkm@=FCuga8~7-_=g& zP3m$}6XS%7R<_t(SK{CuB2z%D$oiMcGd2u3LAXUno(S|&WJC8!$^LGj>TBibDG>}F zAg6ZC9n2~NlD&X@ZJxE=h>m0>a<8tffkpbZVuj*4y>g$^IvEj{AgvZ>&5Hz^za9|w zx+}FN!o*sIj`Ik+B}?;FhNnV%4+DqLu3j$L$n9#K2~@sr;L2_%ofbJ{)&A}4XDB41 z%$@!t7oJ~&NWZl>8$bWj`FH-1U6&Acyw}uh8?u6MQwyc~JV79p>F=+|ZnQspbx1O= zyp+P(H(Gtq4-#wK$p7(uRQX0XVqw;*}9Km3ZxAQ zSfhkXv%M>-hzIjsW}Y)o=+yXwvMmRG>12Ezfb$EtFXhnd?_cSN{m6HeZ%V>z6M8ri z%mZL-u9PBjM6F9ejyg6eI%H6~Vta-&Z2kj8$(T}V0?>6ohf#%2Vs3^_0IyF+xKLr! zfY*F=i-$_1-Fb5us}v8aLU{UtPN<*%iiwCxrCVHlMgHDYP6*bW3pYBUW7j!hV;{qN zL*Q1ad{F$6Ahpv=B^oWmw8kQYZa6kKARy3#4^{mUMgHlIMj({du#4+#vc%DyXTbA( z$VtggBduz2)V%gFAuZl7By;n7F52R^t4{r5e$}HNQZ1`V*Hd&zpQCX$E}hu4$WZ7R zNhcOO{~QW)zJ9%#R0II{fumoyzAAL?sHA8h6neDVPg>BtfFjebW&#M-y^5b4KMor* z_LCv25veOakQm;P5ibA386($7EN|R;q%qYnvUgxBhyD>3AlTmt@ydS3GKwlTm?B(F z>(A%5;30$gJ{8H$9kaDk3L$i=D}Is&pu%TUEU#pVeWBD zwn=lRLrVDVy@pD3YTwOH=@YkKk9;&+HY99El5|#wRJA)+9T>Oqw8M%U2*q#_Hv4;s zX5d&lmI0P#lTv)+g0gv9QT+S@lcSY7dr3_BqUb@y7}QLXa5W*u#+W@={3EfCyFF3( zPyYJh4_Lhw8%!ohXJKgOoh4ysSQ-bjvC{Oy>;6A7Q2`39p0>=WPR&@t!o`gWO&Qs= zI)O$641#S$M}^D4e58f26U$NS$IEH4*=5#NU$gSZXKgO|z3X=Oc-ie#75X{a@6w5? zDgVCZo5EWsdxq`e8%kf!h1Vj6%fcMhJ4UcK_m%C__;~C1DEOn)Y#J{n&P;6#o4P?- zl0pL?UeSa6u(wiT+K9;8b^sRO;vN;~`<{HWi{&Gk7Tt>!+7|PK+E5 zf-x1^-F3oACM;F@NDw~tC952))r^CiQR(|F=uX=AnO(G>W{_JAj@fR__4zhkpM_ zlK@&U<`r{Sv+^62B9QL3mZuM@{$qenhI?`( zMz|b`V+sq$|Dl-gy>6vlH#Bb{eqwtuAYn;mTBh-K5ILTV)P2r8KEl`4;z>0MKxSI4 ztdYlJ?ksV!$*{r)v2Y`@ig&l{FcwnBVT}XxiKYoL!(9{=3v7i1XRq^bAY>JmB{`1HYy!iOp4NJ0O*`YA^|Yv z;iBSWZ{{Cj_u(PyV*L5^#J`y3#^8$=K8&M78Ej=h76$}fK?cB(TW1By<( zTMCYnMT?jM5uM?74s6h{>wbj(ZpcM?^=g4I1PC=+raeO-&aEcjGt3eApuvYC!Re1~ z9ne2aA_g+ZXxX1wB%mDa5`lh0Wc2h(-Ke?LEi8<-1ebDTx%i|AQ6T*A)^U_S3nNiLga=smde1kJkjl0qdGlbK|5It^M z&`!29EjuIs`&w!*Llj}r;If46KZGy&g{V-l(c=T#;TmR0FOt1w-V@Ma89LHj+h>RT z#dNW>t%Yhr_nf=BIw~l)t*cHVnZTa^?ACZ2!qk4mUnycJB5u90AD}WupF}<*W6+$f z1pRCd?qALXFbpR?q#;&%dx187-`SCFon2mfOpf?m8~2;N{AlgjH@Wd5VYY_L&N`Lr zrc9L#Li_SDyx|tsozzzmEQ(NKHheFh|GiOgVa}=9RN}keu$W~Oz~T!uA+_Ow$je_Z zzm_!gM2d4(15B@|g;bIuR~lAtv=qaVYK74M*|s%!7uc+F{7L-4=gI(gF2n&>|F(rs z5&wHxuEEI1cjY(K@TV|xc1D=0>IMSHP0jxR!%QO1Uca*64k3i?u@P2Xf5T)TzbX3< zeADqLmX5bC!IaTjEvv}4i*=JWXwB$8Y^4*vK{2?jptU5cGs1mMVy2HXw)PVwd2jue z$6+U_k3%>Vu-eJkhNlg7P>2+DSend5sQ_R7EkCnr@Z_RKy@4+m%31X$9rZ8M|FFQ1 ze?EZl*T&B*(OQP)ytj9C{oNR++OSkEcib9v#XrPE>J#n<9RY7tCZoo$?cRFhyZ*S! zQ0zAF8)>5yb((pcu_Gny8%4`I`F}6tK`lkcY>RJLRGMRon8oIfPzL_{vd*8C*m%^U z%a%*rxIwX{1lO0r;9^J)FDjp8Kp~A!w(R)~gcL8q#ZDP5f6l+@;L=PT954nKr?iv- zZ|c`LB{%x-ojjR63`SlY6ra%*uHaf|;vmgms|70+D^uk-TK zU2#V&b=%+k=a%qjSjyh_E~D00`WQo-W%>})ANgg!IErMbhO@MV;W)9iiSI&KJg4mT zY-7HU60}sz4ady9e4FE=a3EgDQT!!HvHA`4@lCRjc!4`xePS6tYk*Tm$duMT69 z9a$N~dMiO`v{`uiabX#ge44euq#ZwY46=cz98K}PrgQi5O8V{YB}R+G^PoT0twXit z(_u6V!_65CeJSGHhA-4^nezSS(mcCf%ywaSLadRiFUS4wOLeF) z{i{Tv%Fo*@3nPyN$V~v{+N4YHf689d5og(E#fJ4$303<&ee7;+;*|AX0`lv`s03V?oz`?w_w^xpQeR+(!e}je zc;!B_=)KG)5%KGcr&YF{jUwU#NdO9~#44f&T|z98tC_-`^;y#6h>g?CK}orMOznqc zp*|uG$R%6!Sz%9X*1F*9%jO8?6r8lPWnM9G?% z-L%JZAWO5H^KSycefZwMN;uo_Fs%qm-kfj(E!7Cg|Nf{&Va7VFLEAZM)zhiLma^LM z!u7#L`rSRfa#(qYIS@3-MGUU`NesQqX~i=!;Cx7^r?`wGoS3NxbZvYT{Jm@5Rsc91 zf!0?ntIA-i0$^z5pjqK2y4)Zd8H(msy!AGPvkXvjw0xKM{6cgz(f`@Ew}e~v|D{K zzVw+Nhd_bW1mKB90sAG66>?ux`TvOA{3vY>o~cR!#s&X@V$B9SS61jZ5+f6`PhV&U zO<~B2buOwiuLchWAwF9^NKS=0A3`BE1h4IT#5Q}|rNaCfPp?S=^hM=H3M`YdZlfh_ z;ii9oVeCQaX0SRwz+bn@aoABM8we|)rzu;RcRgc?4&M+VeeRh3u;-Q=yYSja;Vx4O z(+~zq_ThbbW!xrQcxPTlT;a8oKXSr9HN0p`v`AAWQGWka(e82>_iVt#w6T%xf7s^# z?HG+e01VRRpusjq4{_CAbo^mDgBj>K6x(RM2*H7oTB)W{=N?Qn0^lDGLpY&6QAOm@ zoebi=Y}V@oqS#s=57&f%FKF`~9tsjINKd|`Vf zJhJo$QW1*%rx~K8&)JpX%|>n;OGHt$^c7nl$qfl>ggl<9dVtLhP=pk&yxMTJPK@b0 zwlC@6`0;cYZpk^~B9d0qq6h5V&AC%Ikon^if}^$kc^5kdzhBKj*2SW9Z_Gj^02l&j zw~3sKlKK~AUCpoUz=W+~#gyBp$Dee`g9e)V%3J0PwgIZLhb|b(YPQ!ZgE#MQM7?*6 zjlzQqT&S)WiS#w6pI6`+r?BM3ew3ol?PG`*Nq)s)!NT6zc@mOUjbkxi^332>dWs-5 z5w>4rEhZxLQ<%uBjL@+mvQYaoU8(F{ZwSMpY~A8_zt4%vSX$WFE90HUIf|>SWBW&O zV?mFjuZMJ}5LGr?RrI{F1;MWEIfIn4PbSBv73mTKe*r^PsUqKLv9Yo`!ZH~(Dmz{l z1rjZ{0!59Id>CpA_I=TXOm)Jw9Zjrh60vuh_&xhE`c@GzhJ2`Q=eRVs+V-9NVbzV} z*;EcC{iZJmu-PImo|+obM$pl)sFuJ&az8{L1cPo*fQGa+aYs@}0dM#im$8@z!!ja- z7m3(JtGsP!3CuLSgDjq{L2J_i%PeQ>kcR&EcGFQR|KWpx->jqeg*E@qYA>sejUw3D zYO$JmaGPRtvE|F?Qqf!jmlO~-@~Ex{<=IYO@QaOb3|XX=3c+0Sa+b(Dz;S=#?rxYg zEN?K5IuMyE4J*RkY@2)79_(%Br^XCm?~ zSn@Sp6Sl=KVaN>76G8~nx{zC~bg}LYEclux_I^+nWbx;iR8!7QsWDT&tB9=}D)sPS zd=P_@rbdX*wqZgC7NLN5FLGybT!^0|VuZbnG?e}-tS+gvF?8L9}T|Kt0{a4KC=bmV+J{CLb60S`TI zf-53^WaIhNn*2UrHyu60seyu;-Y}4pE3zaI>mQrnJ5|IFZluM5$V5PJRH^=TGk&QX`S6Fqz~i)0m&7<*1G+8KwP@ck0d{=K)P6 zPs@=f-2HGfT<<_w1J4SRHW1D}iudd=+Eis2JDW$qMYeTL={(Zllo795{M%ma{g{mAMOYb2X3=VExGAlhS zD@Zg#tg+w<-)A?tB|r0B`BtlS9fnt><@*xpkop&x>caa9p4mP&$(eAv5HS2b?O**J zYis=so$(U|hGMkmc1GYb^9-~OF2aP{p~8LW16ZbiCSH0s*r{)DLYR+NipS99C9eP= zqJ0~kEWoarfO5EM?8~L6O5Z3CE-9vJ#wV!ZuQ*#VXRQ;XP1$7rJZgpSx=Yw-=fC7$ zXSW!vPiwvMvf;w|M7-6)9jA#F?tOn_ZvAduNBtV4mLei=xMCiR=u^(Iq68P?Lqur# zZ{6Mi`=3T3(MO!`g~-;38{>%YIeVPBmK+JYL~t3jcD$36@KQtq0;m?}v)s2xquBBx zWz35HJcCHR!`mLA04PFO6;;~^H~ywt*pwnd>%#*&IPCJ;Y%aKf81oG3Pa~akwm}$Y z6K#AR*}?G2<9@?9NBSdM(mj^Jg?X|pZ>j7nvfexeiw41e(jhlWNt8&bTcw^op)j<1 zFD$61vmI_*bpjcT_MO=?7s`ks^&0+WrM)VBWy z#DvpamAGk^32w+Rzz+D2^PBFL+2q%NO;6vf}{ zUA&)!UZPMT4hQZ@(EX-s1p_Qy)wtqe4nbF`nrahla}}A{k{_UHG)~uA{nX@*wttOi z@u1D_8hgJ&;T6zpZMN|vtwK(870nvL@Jcu>!0r6KLY>RK?6{7ux&u-yrS=aT`DV7E znQcuI2Ew_5eghgaPdR-ZQsG#T1Kq^=POlh5>q#KyJ_+4t6s|zJn4F^mao+0d+mhk-gk!6$3sjqivO~v^S@ zdrvd3nd`tMzLW$ruMLd*RkfS=^G~D931ySdPBJLq^Q1?(gdZR%gen#`2jzn5WmURa z$}Gs$=5ly;bw8+%bS6>o%0x6e?_lupJfA$;(_KprkL`Cn0D9;Z zCVbvH9{5P>I30rM?n4)B!N0~0eC_3pubDZOW7ZL^mGH6fz!-H7fkgAW{T99aHyB(8 z@^{{DtKX4?p{&9_9JG@N!u^3KkcRLXdI5dxZi!t><4lz_X!&@yuTtv}3LJ_BubA`L z=!8Z;Gm{niv}(gs&GNAY4M6{zfp){!sxL^^?asJ>rfVP=r)YndoYihc(q^~Z5%sjJ zT;(^w*uR!Rp<^tV%d(NbAlY!;zJ3I~A;v!+lBy9=j6uL+H0GPU-56g{WrWkc6_p30I~j&WCk+V4(1X07J$FH?&ggp#td z@v`K5ai0%k%nbootAbxRSwI8+rcv8wyLS`pc_j>@nEX>8xBo7@t2S^r>N?`GWP>l@ zVWM@TlMZas?|yXr95JIQfuUY^?Mh5N1P>1tS`tjsWGhU@JDb=~iYpWK-myb<6o?Ce z2-AF*M(ew@Gx+%KpRYKHu6wNlp0L`QDZ6mcHiP2inrsx$6HM^|HPXe>@Rj9Mxb*jz z8-Ks%wjGGQpNZf8tss%3WfVDp?(1?ga@7brg}wJtOlRS728Ve7FNPfv7q-CV2;s5%Ryu}?^*!xi4 zyS>d-4E$Z9)$FJtC{ZB87KD6+6-+bsjk?YF2CV6D98f{Q=|xmSE0+~)1(OV5BA<3I z`wmMUnfynFBM`8`++qir|v0a#~nOi?4or9(n zdQBCwmF_nM^-fm_@Jd5EWkta}OAB-^MJJHf4)7mn>Z2%if8G?#YZLSE^gh7wN$1^^ zL+_?`j=wHO0BYk%=iikn&_a;!r>0U;tvMO^yXb#Ai~HHl&v_L9sK z8vW9dOt_i;h!wcm;q`s>^fA$pa#Tvy);2FG{jc#D%f#_^d?D+9CAOeSzi**P13@{i zg%m&*HdR9WJdKgpaeC@3X1lfGP7xc`JZelR9W<&gW<1kCN;LHna^1;mXh_*yjOm%# zY7|9+gUSF`Iaxrx&@5?03?Nh$+Nv|p=~P1ae>5&bV9ip2|Fxv$|5w5A1n+!7P1^rt WYO>Kb{!hFEAuFjQQ7>i^^8Wx+8jAq{ diff --git a/desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png b/desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png deleted file mode 100644 index 471ab8dee6beb07f9248abf41136953f36ae9a25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49975 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 WYO>Kb{!hFEAuFjQQ7>i^^8Wx+8jAq{ diff --git a/desktop/src-tauri/icons/icon.icns b/desktop/src-tauri/icons/icon.icns deleted file mode 100644 index 4468c3fbe487f4f378216a05b5354d3633cff327..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427093 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�RbOWfb32o{4WmOhFSrgcBD-CGkyJ9`upNFLA$RVe9;u`{?}w zGbZ^cOK>3TeW>h-O5k4S|9qdZ`|A8S({t5YeQ~J`EGJJN7K)+kNOj6a7;T&590P`a@kfV|%z79|15AKQ3{vu;o4Ra+*xTOmFc@^6)wr)#uitmj;Ep{=F+S+?opU&9#$?_qa7fgvjE*tCW7!FMSk zkH1c^w?bgbj8r!R-ee@25Pevp!V>l2d320GvhCDW&bpbHkko0yQxOcN0nR%v1~rVA zH@c>PB`aKxvg|8QnDe5a$2>RDEIh_bA>z@|c`8gmtbADFV~3Jh1I-BFuj2 zO-uoVw^?MVh_25)FZSAgCLl)FkA3i-zXNswk5A_#pO5x~K&e9*kk{2XFYu=Je&ZH$ zI^G5_rvhogzpE%fZD)l@jXl@`g|uN1BB){)cz%>nM+T4IwB{wzG%MoU;AY(Q*7FcF z&OhG0uljt=?a+nyM`m*`8PZm76+H)&VdVMP z%R3{+63tY(OwdS7*Q2t|k~cQGZ*w^)r!7+L0k1Z$19H5sJVtNyS$0u{Ks-$Z+3iL!88O`wkei z_n-E^T^F(vdg|M5Xldy*zItDhdiwzE0kz!F|Ljwq;~h`4@C6M+KdV}}*%Nbl1tS-< zQg6jSAK*>l=2YcX^#$&6Rtcmr`{)jxy)VFm^DcXxJ1~{aQiA^3B2)*RXI(l1w`Ap< z7+Rw3+scpi0_pK;_FW-H@{ax`@J@oronlpTFlkT~@-hX9jKGuqw9xDKf>!{7CR;4C z>iQi8Yg6h?|1djh=V@4df3D#jh(S=B>#m7Pe)K+c^YCG=3Y-Pm=(s`%3}c=Ea$%gK zMicDb#tgcI;(1_zYlK zdNflDg;tCxDE!_5;Tf-vM%w>Eax`>Q!M~`;lim*-7h@yWwTX5<8I4XjH`tL1QScd! z!HDA<=u|%>wuUtdQn-E4Rg_Z^Eld=Go>Jea#}(@RfCVdpAZ-EmYXsEK2xVBj*4#zY ztU*ElhfA&E8v@1aV?TQKx$)xmV~siQTVW}61PmxI-j(|2K@5s$cC;xu3&m{L-L?hw zLs`$62{e#`)6XXT`S+a4))nL{_$&0vSb;W)@(HNoD2RFFy9%*l=&xEN69*OyDcmOwKR%z{uCnoQ ze2DNgci4mpzyi~wHR2Fg6jL2QdIQ4Hf?36mDANnW6IRq4LRmGP-;MzPWVtkLKdtMb z&AL7OZSRZEk+YJ zWL)#a^p9Miq^#)JbR^^Gn;sp|niz{J0v9_I%R6AJiC0OfOyx`Dz+7`{(X>UgOP1Lj zWGP|fl6zsq+Z;u9#4=@}j1|in*j-4-#XE)9z<8<|Amm+3pn-fJx*LuOx^4EI^wt3X zaHx%rR{nFe>$Fpp;p7_V+gkR~gWvaip5XB$jl5%0ADeUQMKNX;t&xKf26}9z6(8@G z7JKxM1Z0n|(nj;X98+C(yUzCs6z{{$wYcl-HqA}y?xqA6Pe8u?Yz|ELoh*rOkQ;)51VIz!Xz(|UIp^a9-Hcc{B`<=!MuiE#M zVMR{Pz)Is=#%hzYG#>5=2OY6V%2!vZNr(SO)LTYn)j!|E zG)RMVcXyYhG>V9HOLuo%Al=>F(%s$N4bsxx&3P{G@9)2!bzYx0v*t6i_nu0%_@o!J zrnz0(;x;@(#54!R%tP$E9zYe*$C6*Swk(`k6<3lFQ5bBLi!6h{DJB`9K!7(c4>wU3 z;dT!R_re@lgslJaE-FIarhynC4cxT+B*s(zH5`D0g+Ot5jgX(s@heiHQb=NDSB#kO ztLCBFSDS;W_svb@t=dG z!M-8seuG{>H) zHZtFU<3kP&Fhum?hE4g1LwM|UhM>T3!8th7&QeiqycE%u4~LE!)a{50Z(o3nk!dXc zp+HG^tK=wNkX_Z;n5`1Gy6kk3&bY%cgT(vHWV8e7K!qcX=7A9raGR2i$B6mjv zKF@6=O_M)#0GZVbP#19XV!P@C5>1*U_RgEuJ-X3fYHj6$Pd3lzP1BnHY*$9SB?NzMWM4(eepjr@Rv5EzBKy$}g(a*#rYJ7-Qg< z2TPS&dW#kB?Q}kLia0kIEZb4#R_{y}$;@Yv|A%Zy?q07MIbNK=n7m(~5{3{N&~4pJ zfq`Kf5XPp!?&tef$#|)gd}t>X*|hZ`-oCGAYG7oV0^UTUsw85`P)s>4Hovh^SGlE% zE-q>D$1FZazm%}$b9YYEM70co1v+KVQDOr!QiDEz$j-`jG_A;e%VVf55aL~w2wAxd zmeza#)=uE&&+vYxIMMOw5lzs&b;ta-?YIOofd)N~YQE#E^ z+h|$u>UDBbu?h0j{eQ*Xx?5uJAChrMT;5qqZDu&b1?hYN2NjO!xlPpm$nc>l8Ac4C zM;9MsdlDNH)n_;3BynP_AZ+6|rpxcFvHd#hCOG&XEODL(X%Vo}8h;en2DF5knOeZ- z+mA~s-@$#BG^BP@3#y;S@ZOi9XAI@1(3%Wx4WSnp_w0aGz;R9*iQPL&xE8qadDbw1 ztQ4|kVvTnUGBKWEtLpeMNhzi@T2U@h3(*SlD>5t&CBkESH-8>%aTpN)D2(- zgRB2Uj|n&g_85OT($UEAIm#`Z1$ueC57~h@A8JU74}Yl+?rwGFX{6nbAB`76bIr=g zJ=w=MkRp%8kvJrKafAun) z3&D+*Tm(#ut`yZhRmLtO$X>;EBqD|Xk+^VX0}zC+4tLM;hMXjdwHc$g=hIE_9(w-d z1TdbL(dxRr`sZguzZ_O6eI&+l7Ou-tj&_lheXRj%vsN@dTJP?_6cIbq3RQVN5xLe@ zo0iVWOeJ}OZZ}^IUT-d5&MFn!#83W3c~cL7cn4K>+)Vw@lboVHk1&=2MH3Z*-5*1h zZhR|AvD*xOXD(N_iQU5C(+yDNeK>a?-Fddu_P6w`^pyC*6AVQTw*PM!mJi7uX9Bq) zg5A9$zAyQ%Sf57aJAKv5z;Lzb7=F%#=3E$0j61_&cOH#0r}VMVjz__kOqAL8TPi=< zmhVkz%cM(!(xkYIXZsj`zNElQP$DY9ZQ8k|?`&D1TEcsI# zy^xeSeuU_G;0?h}4Ea9AC?VF9QE9IvDETAWCugRhyh$#?{#AbZ{a;)ADP50>A`9OZ zEE{})mp4$*L$)>10|%6m8db#yWAAYbbjI9>NXD3c3=N;2r$6}SkgyVeISG!-^;TX% zQd*hvl>!LUF3c`8(BS4j_kVjL{sHz0QD8gZt$7{~<;F>KP_fqy3L34JXXO4v@Dd~g z1BMVXv?ecMe;riD#fU$3fu>dvvOi3wG@+0W<=jVO^6a}(4KH&7d`X?dEcF11G=IN9 zb()W~F|9xJzbhS79yYLHAr^BE-tjxtSi|TUj-0AtI&PB$ot2eA%^1v4u*E-?2g?&% z=h)gq=9E-c3htTZSWkEgWWf&i2FPiI7EJst^L*?VP^Q?RgjKa2wu_puqF6^PLqc_* zr&LolytbbXm-Z{C2mD_GlLu?ONBAh@@t>!M?*f1_G@n|32sP7y^Y&8Pom!JLWO&qp9p=}>njMTA1EAw$lJ)M9zMZ)9X_g*18;A-;xDDlN)!{4H_c zx>)hO(V)I!tUKAW2da!gM*ydyv_kD4mix986wR}L^B|sfM4&}pg3SLOTJuMhTvzp^3g!trt>&6T|G!eqMoZ=?ju!i>bi=GirGPq9So-~~Te)(8jA_;j$` zLUEb~m<0$qp3HK7$scla?a^@qlKeH~$MU6sXyWxk9H!{D^%rfcko=74;Q7Rfbmpl+ z^*=GE)K1Ir_siSbyQz+O>=`TaD77$Igl0o&aX#Bg#eGxbX@7Pig-kI_uAj+{?I9&d z{Kzm0*kQ`Y7{1CZ|J6Mt-m1HCjD%_a`oGw9^?vY_L^Y@R6J3+Mj`m@3Iv8p$@Fx68 z9h;mf=P+kj+n0n&%(dbMNJYPlfO%X%^M3xFFR8UwSDT1@nf34j5P_-Be^xV9$7-ug zZ33c_(QWUGj3YqU;{seIM?ksozAOVzIlMrY~|}OHO;#7Yu4OR9_)u;xaU8 z-AoD8Ad`5XhCE;UG;}u>yOO{>ZafaS2&55(nA*=SRjDC!a2ba)?@r#->!z>H0%$lN zq-dBRhTB=PvABOj@$On8fIBTbhB=NbYnVSzG7AFwuOaKOq3{1Jx3ke9~cSn&& z!K)k6*UYREo0hwm%?seh9jKdvo~)GBDc^qy(2T>1Pe~M|-Dc@ZH~($sJXom9!{|`u z{SKUhR|gz*z05ogWV`S1K}%_^Io5+${GKXyJj8;rSKrJ3?e!?{tWOQYOC_JsNacgWfCv6&TPkF4u?fk|pt zo6q4YHITfzA@u=XI&!YiJvY|z1CdszMmhG_qp8D|OzJkKTM7F0!_7QcMpsgVr5o4^i=Dte7kO+BwJ`Mn{FCIyJ2p;vZ;x!@6s6Y^PiiksZmmySxE`&Vzl5{UMs%vF;B4!HR>o z_k%BtEZ+1s)MbV!r+nzv-P@R~ml}ldb$(?LHlbc4^Q@%ZvBFahR6psZW}rSp06SM^eI&945&22{tcFur zEbxunN~|AlEN~pblG{PXTtZ6lyWN-udFem~c`Ex(X~8Oeflw&MxK)aPtLj~~y#U`t zKIh>LZWUh52h(fT;q#xWg=G{PYF=!`NndPx2eD3nR;W|0M8tV(kfYV@{5kldP8&X> z)k-?tQcvPOZk5Ub{e!2#CQ^}nq?Ri2AaAmo|JCbtu!gQ%s+Pb+^XyuIqm{D6cFIYI z(7#O##ai^BH!h{f=xy_s#V??|y_opZKI`@09*m zqabvUIqYak@ldXMW)8{SdO83E11CeLOhe#;FX0&&ca1;4fm|+t24U!?1+d=5R`xAb zG?R9PXK5#Q+i&Mn{ODLY)$F`mBn(G*{9S(T48W+0o zUQpJ#AxMgLuhA|fZ@&s0JF%koY%${Od!#I0*V18E9_w>F)X*qVF#Qqfan3CNi>~yZ zhJ?hy@hcCBaED%g@K-8B`_Iw|Su`atv{= zLUJ|=$4bmobh?FD25Cq>^m)icW|oKDG>7t~Kln2R7X%7L2>L$a`hW{~XS4nddkO7D zstgYXNn@<2Nd%&q9!Ar79A*2Ht80#=S;!g^Lnybk`qLaiKh(ec2qsLoG* zJ`ymR8N&e|Y-5@#h@YQade7P%&gMF9$1O&=uVIm2)JR|den~n8pQ^&Po*I09yLbQs zJAmBr`bJL@EbL#W*_bfsLF~UolagebiEa%oynxFq}GNv+jSelpb+`;z?LE{Ti zx)dv@z8XbohYa|;yk@j<6NB8I599{r$|5pl=n(k+KKLPuYfqfYuzriP7wyGI2nU~- z4zwxc)~tnyO+vm>G9KxkwC>Eh7v;zgyVI;xAA3pDqlO!4Zjvh5M4WL1wy@H4CH#Q}=%!75?^Km1siCDrT`R(rjIUpZZHa6e~44_Q!^+`#Uhdn_ZXvc)wXq zOLD>9cy_-G?2CBxgG1E*!~ga(Kx-{06#9MS7nD%a#t+`*>F}q@_9Fp(urKceId(VV zOG0+xIo4W0Yo_x88-c|NYI@j)$W^%uwesS2rqp zpVr-f1XgUhe%xK+{1<{GL4brorHP=GWi8M04*~HF2ntM>o0szs{~U!M;ZpH^ELt4}5&=-!VJ)KfSByb6dV(`=I$4~>$q2SeRCjLU?MKz%t zjEIsXPB79y9&4whAYc00O*k+mg-WwVd6{RUYd}U3J~tR#Rzl(ueX3{Q6M7B_64@24 z3Qzp>mKNhKnJQ^`yd*^IQR8;8Hh&-=Fkwki+c@!{ew@jCy5k*RysO-G#}7z@UN%?3 zl|I*svqg=6g3B6`JHT08PsML-E}p5(z4fEg@SK3Wh$~&w0sa60_imc*fGZZ1;F_M+ zDf5M!br)cP<^$$+KmTnhC^^MMMD9aaW4Hg?NIZ|QT)v^`ZQv*ZnPKuHMo^{^nOoFY zCe1GaAA{>PV<(()w#%Bae1;PXF?K}!YwLLR!g>mH?ZTcmTmv6eg{tPUFem29yz=#& zJ2vK(kr5{*RasPrA_})SDSX4d|6~V=+O-#QaPLt(xJUJa2PSW=;B0BR>CPNL{NqLGRNOcNRpcc-1xli zcRfkGfPc^eTZGU`65{q{>ZJV=40`^p5&In9s-zG%0`*CHtS`*#qsYdBG|j~Ca6V@f zAFCt-Ow(DO3NwY-W6_zXin1%B-xfAhKOO!ot6JL%grv!&b7~dWncQGeiDE6V8d)PR z5y?Yn{%%!-6~K0Ub?#)DPLC3Il07x_Lok=WCzXFPJ$ts zCpn}RooPpaD582*kyCpdG17Yc+g1zc$t$RlxV09QK4VPL+v>C4K8mjjLAL|@YG4xkFZuj8hr;D7BMJpY5G{uOvywhcq;~3NCc>*IfG0sa9xfTQU$Bv$+Y(nY?8J}J;xdT2frpqWMR+{^o zk6Eg(ky8pxS&ttP6K7q~ccxONZ*gV;*4X-0p-y9e9>h0lj~l~S&+Gzd-mApw<22ZA z3vCcOELgNYn~cdf#+yNJgr^Or4`4w36-MvpIeV4Gb6m0c=T3QF^ zb@L6N(ePh8jVUHIk@Q=OR6)v-Guj$rk zO&g$MjhbWC@HKajQbprmr|EX6YGvZZVrojMz8^!-2IHpdCmZC_P$mcQO6!!R*DCih zVx{<{FMT#tAFdcX8Fkd5^JyT;S@O|M31lK)606^XOXw37v)iFVZHJ9lH}W!2cNy+5 z>zeq86y@01Q2$fVwletAD2$ZIVJg>C_|cyB$)59bMPI^;e7geHSI<&)pZYvWkL2^jkY4ey2PRDt}iHxaF57$PIA$o~|$qYdCs;iaIF z>IC+N;QrjqY?_K;O#T5N000l52g(ZMX&1MD)XNmC2H$|AEi$-1ux-^o__d{A+{`os zy#-046i&FfJ*4jmIeR(ody}%5Tp*-Cbikll(!iWz#ry~lQTv>}D{4AdlY`!z!{m6k z6|(?J;cTeA)0)ut7Os6mO`BpWnj@=cSO;v;?rZiUPogN2kRDNujQ z`wFvq;?A0>dh1oohm9tvmUMG__(POS%C)WbKU#|hOj&EyPg))(FdA2|dCAiU=8M#J zfDb8KBxw!rkY|@+7A}q@%CaoUi)j$*XE^5}lL?DItC86me`)mJ{xSstlDn__gIgtY z$WC5b^mYEQZLRCMM{!w%U$9IE^YS`6@4p;{*#+P~X+)>g20M@{FS0L#Z>}CiJ-ph^ zy#n(e;LR!CYTH<3C4hc)6N4V6*k zgC7PEBc|~4QvD;wj+UO5T~~6uLn$mZrZz5t-iq!Tn^qR5C72 zzTdTKhiUKWL{q?o<_fvEV!S&=!o_^0KLU4Vl7U&tey=(Jmj zPZ)gU_~cL#JfvTIeHCg*Ae3OCXuYRaQa2y=R*NrxzCCP$G8ML}JTKf&JMJ|Zm!4Jk zlT$HMR_Q7$>=O7OD-Ci@_mxoR-z{@n)|$S)P$}C4ozCshK+##hs%Rm{U{oOWQ^vBo zM(dhf$&nr0V28r9NtC8V(M0+sAj2v!RdSG!OB;4v((1!CzF#tbvS9v(-@wn z8i^D{q1Je{Kb-}T4^S7_ClM|5Z<@4;(*;JqQ{M%P0lFSnc+a}t4)p3{V=2e7d6IQ00dC*78Srm|fR9 zC)}&pm>zM*JkR~gf~cQSO#+?c@1>KjM5JM|SD8&7rP}MlS@+CO{RfREp@RLS)a!AE z7QCSX9t5aMs6L46w0WhWUp-4&Xz;Z{c-^3a`09o2^VZqZL-|4W7U-7k=TAXvd-=tM z8*4;8p(Dxe*%&KJxGW9jzzMK(v&6Kx+u-4KbayQUHWR5Dph86=VODPpQG2*ZmHtM` z(7p+P-ja1A6&1gC$3l*srdJ39?kf0X(`~KF}$@wN~c3(l#9wwwQ=ky zACoJ5oc8Rb*L&TW-#*=hrZNy^D}JQci8{H{CQ6VoKk!4v-S*T+j2n(q6BBtJ)v|sS z`Ek_%Ud@W{yvDH$ z<%Tsw3a~u{hHH$FA>iZ3^Q`tJWX}SwaaS(~a#YQe1Y)p~-61pK3K4!DBgF}mhNio5 zYqd)>GNM|v^^?y0Qa&-|R^gOaBZ_5Zm-WH4(v?z9VcTY>FsmwGM{dVd%<$h23;VLF z_rb1W!G5nV_Bj1QMRhT6s`0k!&^}iQ-$oA6wwT6Nqi-+MB3d@VoNYTHy&$L}8KzS$ zAjL3p$-U2#N+$TB;?9^ma??>LXnlE=3a}c)500`u5xaBI^d`eWb(xwEI{oHy?l|kD z>nTW9AvwRk`Uj;VOw};`Tm;_kjMg}zYF+OM!tz=}&q_`nPd1|V64>D>fws1!x5OE-m=uLDB|^U*!1=)B zDuHOndZ~k;MyVtb+BADEZ~0YSkCDaI@e8chff1a47-4;w*=uqOtMwX+?LeEHNy_wQ z2 zhJXtUqB###A%ASeM}dbw)_aEr3KH?_^%G7&YIxm;01Ei!g@IpQciaZvG&5vr-pmFso-!Yd{%E>d zuN+1P&!+m$=Z_Yv;<*XU%Sd>uGj1MR3}ZJVu1zl3bboM|@}!oW$P30Pc&pv@>#3z}zUgc%cV~J`>`??iva&Ts zBy*v6aPiEuY~GP5xEqE#WgG>KUoK^9Je=$I8R>7~hcEB7wcU2v%9pc=3mNCbRJEzU zY>^$s9D=t6S$$mizPBXvjPYmJqY~UYOVI)**{tvdMasP^l>tB3yCY5W-eIH_OjmaF zeBROsw;b>FfP-v8f|HL40zabOqu)tofri56Da_Lu$NebB!g>lhav0g4N@}CSVqNDvanyjM${Uq+Njgce%PChsBVBc z91TwpkXyr@>~(YgllocK!vdilYXp(Jv6g$`*RKdMg1)w*jcc5?(NcyrQ*m55mo$|m zF^N1D+g%BW))hmsY(&f^Dm7d&gHPds^A{AG%Z!BBsH~IYi*PaH04y5fqs@jy`>!32 zgp@jgJU+vu84+gNc$FvOzNV9bVo%wk0Ez1!FA{K8^|8@0RwJx{&2 zS*~=)y6RH=_YBK`<=wy|%M;H!z>saj1^}@Y4F;%05`EEq9d=y{-vo5>0YR`&#esdw zZYOoC59Z^2j4aiOokuH=@9uZjfTcB`kU8^64-}*7N;OBwuzCH>c8SWuY6>W?7y~d(zd3=7%L0P8_vETMp+04|K^=mP7CA1O4}F{f3L?-KzMb zS0M}TlJRT3w9XVrB1X~K%5NZ&Or<4>72vDB8g!Y!oS}sfZa(EIxx0Cwj5Rw}+TMDweL)J>akF+Uno$CFWY% zShSSiF~M#B1as?1%8P^OTjrI<6;vXNchF_j*H$~srA0Q>9hqH76X;oe3#CV?l$JMC z*eO+-6*<#T<5r4P*6d%t>BDSub+E5iZjOBrUB z6h%hhKLndF+F!yFkdZW0TD~`&-X!)rM>(j;$q0p+h5jSi!3(aahl4u4tT8hYQKMTX z*IJ!h8cfd7&HZC;uMw=(#}pQJY1*VbOhfQa%#ixXuo<0hNw#O~vfL$QSWG|K!Q^iP zXIZe#Cv4Lkbpp&qsWgJx8A_jM5lixwA~wq$JY;-v`e?=^8Xsv`-&|SHXx}WYBs%Uc zZ-^v!*Po}2w0(bVo6igEXuaBcEXkx}pH#yg*(eqVv!>ee-82&s@#J`ax64`}9@7dx zD4FU<`Cb*8_~$RlO5WH__I9iaL6!heAi@{yuHC;q6gKr`%66Rq9bE)TyBw}KF4k;A71*v)F!wTz&9F_Iubrw2Tl?f!g zFV$KtP6F7uD^W@1tUX#SS6c>jb;Qr>a)cjM^5jXO*fFf{2E>eSN??w4f(N5uzd~62 z;JLfp6Rv~2UEVB)Xz4SQZ6!n{4>@U&GDW?5%q-iA3>ew2R)MdQK`YTJ^Y!QdY-fYe z;)pL}9UT?bztFR$75}|9VEZv-otby+T3h91Lc#n%HQPzyH%-^wSk(~gd&j0b8;sYa zF7O9zwvQhO-$>s;Ja-^)VgLc48+pA45Vs1X6e?A+gRjUXX@~9Yrd6ao9)Ae<*@k>i zAPhK!5kezZI!`?RDw>}xS-qaJ6UCg-vb zBRQUkRg=(0gFSymHtT|;*ZTd-46f9cbz&k_T&>Y@P1)FkO2WfIM=FdaXI^b~OtqXw zZ`@%3*NW4gwUe@)q_+XE`04raGod1@-N%TPFXyauzjw+Fd)QkVFR~hb8=A~|SP>|} zQ%EPf-K_q&F0`~Sx6W0|SbR0Zj#1#@0<+VBsZRrVgPjncn5P7#c=k(VA#{=y;?)mj zR_*#{ANHypQ56|SHdZ!ksH6MC2sZmdWS|pOZ}lWEyx5>!xgtn^W*sb+K<4mI0kke;Bf}y^xw+dWVM97NeW+=TjJs zh1RFT>)(HmRS7@2<;@8G>Z#cd*&TO5TAt*fHwl3x`}R=2ge4BkBgAoHD1VI!(I%%G zr>^W4#(YjsY&WpQTx6SZWe+)@W2Z7`R~jy3@{7CO8k4U zG}wHI-Bjnl^Rz68&7=>t(aR}POra$-)mrI9mo92)>J2!*M1H9X#wf_@Fe`7cBQJ4k z3@yy?$RP-&8C$= zM90eD6@61xh6#6L!Zho-xr-6k`C5#FTy~BE9CFfF^V(sNdom4?r*O%4>S&Cfa4O^# zc6htg$T6n#HrsKAFdv{HFFR}6FR6dspj|OYHd_no(V3lbKulPR3$7ggGE)m;BQ7;s zO0(6$c;x9!IwjyZ=s~bAnRH?P;h=TAVe@u2u{F^#r}f7rXY{2h59qoY z1ML7zjxew9RiGz)^@*%|O@U{TXW)DW04Ln1ci@@yZ6)yo8;1i-3mZh1=Qh{#lpH-J zd>lIjkpe{$M9#^@UHHex7McbQGTfzpio(K)>wWC!6xqb_G-sV%o(XKLD<~SQg|NDW zL==tEz&H!$BGz&t$2+&gZ-^uWMFHXzKfXEeGMXvn9}>$El$R-%BYL%4K zE3KT2=XG?$VCbNwsJ+?ZoUTNc&(>pUK>AH-XHbr<2WK6uY4WI`mkE4DVr-vD+~WEe z;p>+>pvmW{;V~JwbUo91@7oNgCw+85I{MG|l>hnO;0t(J*ciyP>dWx_Fy!Aj_$`TK zHt_vILb&cLFc}R_ShFt+w2enKfL24%E1dR+jUgKJmZSyF3c;c_$@`n{o*hc#i4_G%{ZT24`)1SjS1 zyjJ?`7)@Z|^uvjWl%zd53~SkHR=S-(I&la?>ncp3NA{ujG@B&2 zWQhM9;co!X@qt@{bCgrFy`(y%xP+YoTT)d}T#`SVTNBCAMznboBUAjv2JUYGG~u^B zM#3#z;M~;e8itAEpSQ6rfxXT40*YrQwa#bc2V6}X}~?nh}q^61=s%+Vl>^jP!Xj1HAGr7e&0)uQ)TH6f}( z+JF8c#4T^fn^H2v1>@G0^Vfo!Pha)0sVJZyG7GL2yYIrZT;1wegV5Sj9^LLQ`gQXAK2km~LqRNs`j5Bgguo-}7VA$K$oAHIYkop=i0y3F_7TzA z%f@8*-82A!GQCNt=#r1`XL2Dw!t_+>78IeXSa;{4T9dx9rngZq?uYnV&N8AnXrs%ag*7ip z@2votP_}|)(u1Yhcs0SeMEtI5&<68~d%E)Mh(%}0(juZ@PMow;h*aoqA?X@s;h>R~ z=a}}~Tq@~%n++G)VXfO;r=bX2hg$#flzGq(8a9sj`_pILPp;01r;bAlGStn4ScB!KGfe3GED8zT6bT5 zyg33aLAR#wtE^of#?bAzu@{Ze-q&yUYVY@B_x>XHK5dj>dGM`E{w@1$lVwn`s~iNn zGgv3Ych~&x4$*m;%6p*;7JR7tz=98*%5WaxuKv+i##VJS|EJ>nBAz=cl~77~%S<|R zcgJSCavrhder3c=QSePX@bz(3pT38g@_qAgsfJT0%FQk#V>)N+oIlvI0n^fz;T5mr zMoTL58lvRk-;CkSaVT{qAS0Pu6zwihW%hEq|0*w;YIjiCGzqz$UTIc$h@hQgT4&r6 zYeBUq;rd>!;UQ5cZ+xYSKiZ|$!FEAvU9)DT!|=H6l)^M8yV%PFpRLSx3QDj#q5rKg z)IFm+sb*y*s@&2I%6+JvX+n*39CZZ76;Q^nll;$`L5mP-tK!5dTu~JQ$x1 z9CJVy&!DLnpzE0xIID&Ld(LaO|F-unu+HB&Rf`P0rC-}aPd`pi!8OT5M!=MZB>nBj z^rU|w%d1iG#Lp!;5Z))eyi-9%x#A;hesLtEqdW=3@5bcJ7oin3m7Ub7rKW{@y6vp5 z105P-*jP)34zag542X)8E3Sh>F=+FV&`pao-5?g=lc}}spKz|}#$o62_Vugl7u6G$ zN{x*-}Om125(P=*7Qk! zFUdQW&7{XOeIxL*B303-bo9&7#Gj35E?bi`$kH^+_ zEqyJkxV-mOOv;oWj1@M1=T)Sof8rHGF*9lkKTGk6;SY>@+F~G?L!;{n1X}R90mIY- zJ+CS36t7p?PJNNbk%yIVQum8F-S>?d=YJdtEXQ^}087F^5_pVp3}gvhi9B{1GJm6V zr6zstcgzP2!vr(HcwZliY;aO|5Hmh1_Vq7$?ig15`Qb6_8C4>XkA9-6sj?dWWlsP{kPsZ*LiVU8-()R{p z=Mni8=iFfuhJJ3kgNCm6RWj%x@|reGyh_8daj;lqU9bg;x_Mxoq10=XsS-<#+vUMG z+P{Hz{PvIw2;iLfDf3=VD@gq z$Of~-f4`q#i}3gvQV{MY^ai@Qt9rV4JwCYtbMmw2)MOH52-26Dhk+rV)3^7_Io;>O zwjQ#7&I)!{u&)*atRSoG*B8)CHfa0P)NC*JHA@`$!9(W*AK~oy{_%m&bp$76uskX? zSg%IUyHFLnvL)9i0fCU$1(eB?E`7#{>{#s%=rp+_3Qo>EexE9sqBRsNs6v`^g{z*I z!!5^-aLht$81NY|S|$BEAhh-}&7~B}(t04waemQX^@NkM#LEz-Tb}w3#1Hpe>i3p& zLJI5ubV|w_fkt}a&VIM5fIB%R4%aTfNvZWd(hhIsyH{_dE~83gdZ)2ZZj})%pA z^$Du6NCvdqElpdJYAsO~55v`}V>00S7yD|uLI%9a3(Q?=O|Xlb>N0B*hE6V*Rr;nd z)+a3EY!&uF^h4qeNk?kWyOQz#lEU(}=F>z6V#6tBgX_gPK-Jr}+HS*C$KF3!>)?H~ z2k+ng&~g3BZQK3ez2p8eJ(S%w$SKVE4|9M`3hoF?*LzO$eolU0e%}RM_CT|Ir+gqw z78083aI0L(9iu3-s#w3~w5BCE)Y>&qDd6yz%h`455ZdF|%DX^b8{?W) zKGIVBxOcrHrWE#cz-DW-^VigG&|?g;(31JmP2b_Asg|}o$7a0oR@qMr@{V6Dg zAvKaa@1~i-k*OWjvZyC`8?p8oj3sjRO)*y)9YM78&Cioi!b%07`@Ck~85Q$9WX5(i z?N@sOEQ-tS2y}w+lS}NV5l|K^%*hF&e9o;vgr z(-8beW=XF98F&-yv!J8RCtBeBVf9~-O?uq|-TJ(YgEf|=|EuoJP~lM|v!{)?OALO~ z^WD0>I{{^GhYo-I&NWHr%tZ;$N(9t+qoTVNLfm62s^w6MD$>c{1W?h!cJ>tx1Vn~6GmTT5{PfIRcQr&} zW-znUmD;L(q}FFs+f;U&GSRP)Z=aM}d_jZKG&Kz@G}}$QzDto$g^#1p&4|NOCkvmq zh<>}R3n24N5$JP!p39qFjcdvrv5`nAe5F-;W6RC2NH>CxXVL$G4q6A_Iov9f)8O3L z#P=-qUWQf*7oTA1hdEntj^Lh0s{r&~$J2eD9#-`7ziP8w=0<}Qg&um3EU=oZVT9cb zklG)!%KWxk&@xC!-P%_Eafw6V6iCM1^fFY3pj1@z*^0ktni9r?IM)QEQK|nGYvzRy z#If5u&tcR%`yDay%p-T1r-Ru`s*x%;Vv-7ECe9mDhEFQ@+^-o}SlFc!vIM?0c!cGx z{W@;J=cmMtv+&@be2pNZsHzaLB`lM!xXW#DTU90bO^mGY3H>^gkUBH$xd1+U1E# zl6(tC=hECDH-PYyCrtafLMTs1rIx&M%zhYNY)(}CtEGSEV4{L7+y83Tn|WpcfevO> zAT_x4lDm77x^iGnN*;Ej`(__fP|us7O?ct65p0^iwIp#;QK?($W?i8L{9(@p9Ih!*kqliD;& z9Gg}PZxTa2Dr_3c9+(3=xyUk*FLV~`ze-52tp;y;gW1Kw`{}kLD5&V_`DwHl(<#2$ zW{D>S#Q2QX`u;y}TmMJIuAI9PB;LwEFUDZFXw_1^1D4~XsEUt%8Ojdem13u>+AjZ% zX%Ya+v z(|ZJ3-PB-6J?{6GIag<*G>OOG*0Wv z^*1-cRf(1tj>gYHa)#lEcAXUp%?&RV?xR|PUxl=I${Z@vh%El{`_HZU<2$ZqXwgWc zD1CxI=l?Hs{mT!4(JjCW+EcVL`fEN+&2`@UtIhWR$}{?y;Y+{UWuh`BqcT~JQjR|J z*WF?+2syliHix`(97v-nECzMt$DJM_Uur)=_Hr2b&c~4$-!MqLBra_ zaVJZrwX^RpTzEYNQ=@wPz{VWfKn3e#e(O2?bUiIiC-2w*zB6e76#tPmwruY=iah0t z^Z4B=eO&70YUy1vj3WDG_W$21Fn7R%$eZzte=vxWQc=R^a!A;2=^4bj`&vE>megqd zKrG-Ph0jkU@u+I=D6}jKfuD74SqNJaKliR)>(R6^z<<@DtLjudopCYO(Zih9Q5K9> zSt-yKA=o{6i4LeAEBh$kq0|3piVNcxjB4DoLxtYyf!&CdnM6$>T&Vr}wFb^5FyRN} z<41_LhLcm`h_w5b2C1C44IvLn*@`P3y)^e)7q=rMcDZ2KZocl)k?n%t-Q#XHWx=e7 z?3}2{>5>rL^j>8JW?z$R3f-;)osojB7EQl1zjWG+Q@)* zuUZSTe6%R6GoW=SF0qAK$_9bKn~v-mfy6^|+b&S%T=yul{D}5D z0#se_aT4EyY`A8Y=^zA>$9Vl%yCUd>s9SxA7exWItD) zY2C$g_IPla$DW^Pk?5y!b?tF{7VrP>9pE&%c1$drLEQ6`NlMX9PX&th13|`+*IMZ-&9Q@5jC(Rs#d*r8p zq!T9RB&t`{q(&*>3Q225smzAZ3isY5#xQ`MvYLo%^Eg|7gi$X{?8di-gb1q2(fm$* zC|OKHVVYuZn4km6Ai8BMi^w;mss4}H&#sX_{~uM~99?(YbR9NMlg74fG*)BVw(Z8Y zZQDL^)7WTio|tXYB;V=%JkQtrUDsOY|KFUsW@hi%Ggp?gICPxYN;=4hs~_% zo_V&FCTjp@&l2-H4+BVp`klgSs~l*@3=XiMW7t^bGmegE>IwXHMwBhl+P1d(MD1h9 zBZ#YLXBL^81a+@=H^jP`0LED#<~dqzzp&}#`tQ969p-Y6mA>N*0kGYpr7+l;4 z4%DaV=8osJpC`X#ipTHl89!LpyWCzK$$Xd-zd3fl!$vDQN?T15=NH6in-J>dUwF)Q z@p^gAJ6T1NkKa~sK1EoQt?bDDPO zNj1rJrNOQMqG0+zWjS)Aqq831JZm|Bf(dPZDpSQzl6dW6=B?y{^Qz2eh$Z{+ z{VSlU3H`2()hcs8p5XLR!a1$VIdrCA#0Kgk;;x-hs=wb%IY_CvT}+pMZ4yR4?Db-nCU$g=U9Zbp10Z?kmgQED7!e>t zI6by=O_#`Yw<`S76B9DgueDF#%grq&(jJe|Ei;wdTs$raZ%0!_s$t4s`9-np;K_lP z+)*03KyGS0Zfg%h*esun?sMr|3 zvYwxFPiug)_ihLFe7ipYzeEU?-sZBffLTz5Z;tlue1&yZi7;jFoSa-$b|Lx5R+Y>n zMIkC8bb3f33taQY4A{~`DrsLZoobH*m*5^PQ%iV;Tfqg!ini9J4Bn2w(;N#Q65gpg zU!!SZ2d~DJ%bQI_y3tfv+=??;#K}5RZV+fE(PmqGz>!eRn>%H9kGp<*mU#* zvl5(zE@h63v8vp4)^T(>i>YW*qvVxh%^kZevUdqfwMV)M@VbA{MZ;}w-4;Q?l>0@D&;p z-dLi9SB@a!?=Dns4{SVKyY!Cd))y1i6xR%3-3KbhIJ8_2@+GjV&(PRv84PPPE4+$` z15LtTWxLv-6hZ`$Fey~tbp*=05wLB4qUsHH&7a&~yiAK3A4=c#XLW+xTYVK3F={mJ z93<6sGhkfpy_sui=rV;jFit>=IpUxCR;v}=)b2Ft*c+L#3BWW*C8D#%teV=b3E{tH352?MiBaR zhhp(!b;Vxd)GE+b$~<5&bnDA>Y3voFFqtep)wP*$Z<_r+t7rh9#YKDYCr;xI%BNCl z;+K11POO7DR4pW?41DditP`Yt`I|Sox>T&+@R*q0u~0$x~aI)RF<@4mpsq%)miS7F3R#b}Hwo4Ca(7f0VTwIR4KG@DSr+j`d?Uv_oYAcj zGO9gxh3I;$LG{tp#8j(P)3vMN)w+<%IoQsNRRgnm#CV=Z+dz0ebUef^{>YcsF}g*? z>nPLB*10S)VoKzY&SYTHJ58=NfXWR0((^HFna(I<+4E@YgM#VQINt+$D}A5=8$&vD z?$0@j&{(Iej+3yl%Kihkuwb#PtLiTu4%+&wc8VBWYk>(1l_x*A5sVQ<+C;u)^E>^u z%oyi3$>KORE^;~D=ydPdAB1_yw+9^H=`0NS8jU}DY)j-&(8w z-cF=^;8-Gf*MNG6l)_a|{i8t?nQbzpdbfhFg?mxqT9}X0DZ^SzDt*_gB0im}g%07Wg)SNXgor$CiDx2hs&c_#P@V4`k9WKF| z1|`OoGud`7o$}>yaM3e8T6asQ5b$$cXAGW&2XA=a(gGIXuN%YXP)SaEQl3>C6?out zO%DswtOH0+%5MD;)RE@PWWg*MD&E{Blt+A8jUvpJVc%O=lO99^e_dWTPuFg8tNY9e z-1tVqi~t*y7TNt2jvYy_`+kebQ&w|2LD{-X@O+kU@K|5Lkys*|62J|HX;{0G-j zV(d}okwvkp0!5|M*}*Cr_*;N|0EQ=6!On!Ab}Q)p^5tNOT4I_leR5*mrr^Z{)>W>Q z-ZS1I`Yk@YlVMAPmasCZp^1KD;#J>U;r*CXIy=7NLm@Nyq0`^P&t&>Qj(n!0b0Mg- zK!HI7SPXCBnc)PNE*s-0v@-8kqdHAo!1~u~M!6+BVhPpRO)F06Y>DfXCwilLZ#IFSW>+S!$U4}AR*#?$QXv+poR*7gAsug7c3T{nQODJQe^P^0$}{>Wp0 z&Voca(C*@ax$#4Bn^y<}Mt_8DPWW84bS_@tyMOn;*X zK&=rJ+vxnZv|(caDXQeYrHhLqsKTsG%?q`G!D!5^oBx6-g5h=-ydbu?F=y(_*9s~< z7KQ^K)jg>S#}8FJB%XztQ=G2)aOn+fP!AM$CUziXqDn({&?+Hgi-`V$Oq@z6DV5dA z|J}<<1Dnlh!cS;sn1uM+_sHlqWzJ^J^Wq~_9^vw;$0;yk9sOYR>EP=AZfvJMi@1NA zhiXAa)8*7#uYN!3(QT@8T)^#O;v0fmcCJi#5g|s#GH>6r(GG63ZLTx^zw&48y940H zEt@&uPmU10&U*ntmm!c_#8EQdL@ML0@WNmiA}@1_(Re2c6|;yYM$pQ>7h*b)huz>RyNC?koDJ}2skAnVZyH{(aY4tVbXq8Hc9k=ZQ0yBQ2KO; z{srUC2(Pe8f&f=z3`UkXt~crBjwHvcRrh6tKr0I&OmE}^%jA6lbn{G2IE~ToDl_i2 zj<8y^4nhrSK88FkCV1!R{4#BNm+VEGCq79nf*)CV;$BV6GXNN&h#tXFAMiGrdQAJne3GtYoA=Uc9E_uelw?U52ZCYwmy)HB zwBHj{mFwAg)v+QtwjTYLGl)t*esd^Pc{?M*RpLUU-^-L$h#*~hkGPx*Lvi;qdKPI( zqV`|}sUV1VPq6Vy#r^IL*yW>-NUuli)W0SOzHsH&TSFSJDk&4uX+KTjm`2!IDKhvh z9m1aM%l`cX@mT5!Av@@OK67$~tDQqKY!h&+rE+StBR7Tc_;O^}A0;gxx|t#^o9y7O zbemd|*-6gelpqI>1s5&C@~{(&w_U)O`kESNlE(HOhs-jYfm!vx8K?=*_0r* z{V0Yig&Vdvmk#tm0-N5%?Nj|78XCD;cYluI4_9*&YTU0iwf3X1XCthv`eGo!5WGVE zN>!jwK*@VZmoH=Gw~6?-HAN*a+S+lZ8#qW{2WVq#%s>S@rC;Zq8NfKc`e4QQ8ELDy z4o}!TTeDO_s&9(;_~HsSH;jAe01ypr?fG_}AQ927ny&!=Wunr~tg$sjAE%YTE<4(L zN>(9sujKaVqNZ5$dh1`;tsdl0hG3p|vGwbtqb8#;2EX#U7v5iRHZ4R!NKmNoxQK-r zI2DpE%bpU}A;-A_VY~iY$Bjv`wK?Xih^Y1g&%l~Sv>MY?GMJqX_@EIK`Oj*LBC;|j zsKSpLPu*{)xBeX=90SSyC>yeVMWDajY4lrUYi+#-Vh1!BeqDU0q90iibX(9Uot;L5 z#xG5@<04tL&F$gODO*iYpsG6<#^HX{-TalU|0S2ZEbr)l*KO|o`||r3B=fE2?e77K%U{2yH)*JvVycQ@1YuyQM6hJkTYZ7K?lo26p0vRu{*821fY{4LLx1m6XkAV|Tqf0D z*HMsrr~24GYBC06;I+MZ`VNS_nKSz{<^_QTRw8UufU(A+ObqTWQm>TH6`9NC>ACS) zg{pnS^5zSe<3y`m9i&9wFiz%hL6~>ZxTtAXe~M8l<1`0n5bsC)}Mv3b&E?q z7V!gOm&$scKK@kml|m)}{qe?YIQ7WOXA{9xi@0`ieFkzuXFulWwd)O3h;gGpv-5Nd zV;0YDlnI*%v`1-zI`tjrrqquhIaFA5Xj-#;9Y2r7W9|kjjx@$~3pK2Y7q%IZ1|P1T z3fRL0{mWHW-e>+($7A1az{q=)zk9Iv%!GizU%(#2xGDx83b>T0;cWmp=K>urBl*5! zAPMAB1)?urYy}_r96!2c^01)&*L1Qn73p93uAfrtDVn1mZ7S51)*ME@O(3Fcd0~1M z+;UMjrpjsONst=oRSZ3_+#<}`|9JlNSzMx5yIP$xuO2??5J#kPae}=3n4N8Q zZJzQO~?KjVZzVT$iWRo_AL^fBjI29T6KQ+*uJ<*Kg_t4+79CE*}_KJSo%HdjQA9rObZ|oB~PB(ujpM3Au0KA|A>&VvAwr({NA8 zv!O+UQL-j->uz@7V^-TTs^l%Q=%*}@hbbS`8bv6#D5E8ScSXSvh~rVpU@}DZrL(j< zu6o?nNa-sxm$ZW^y7>ik2FcKUU zIv7=VdtZ8fJ7dm{b*K}FJ!o4`Sz|Hc-ge}ih5%p5R;VdkY*rYwx^tDrCPuzz;o3DP^v$v%f#ST0-sYSC{b0i0ycGE#jr2{$*6xlSl@cD!ESl>+oNn zC@*{Odj}@N7#@sG{88+H?n$>3e!dw9+02OnkYiY(LRGwSMmln9L{y#f*QuUGL{u@I zMy^6ltmRgrzjLHSXaZ!t$y*9ZB`JTvM??3pFto8VYVY@pr({$cL$`A zv6SlB=QAA{g*meNN5U!6nvZ#JIYkL+D^;-p8N8D!|Yg$=SnkComdlx}UU;h2Ldst z@z;!4*=$$7QC=2quFAf+d8BfFnbL4D;^v~DCX`O9)L?$(I^+y%$6KT_o$bw$C8Ffiicf|FJ z=^;QqKp(u3s;*v~_|$xrR`1q5le8mqOe)l1Pa182z#rO)cKSy9WmT)P-P2vWtTvZ1 zr??Z~U$?f&11*v(fyqCx@Ccs%^pkITWw98hiuHap;Fael7LStkYccT7MBilW!0dtD z_;f}EjTnI&!rwV^E(*H8yoCWgKQR{7MRBJuP-cjYP0Q$YD=WS>vwSQf%>c z=+3T3r$9P2T}HQIU-L$xLnwW+SDT$=8WE9V;EG$GC=;BB?W}e+l_Z=#zCTKpB=?kf zmy#em-D^lS$5mF*)l8Z=Q3YI`DU>86TBzWc&ZL?|0V-XxFYGWMLNy|jWxCAa^{EP0 z3e4r1e@?Q-b$XpL_T@R=T5^nv%JAVNxvwln@=0kXif7B9;Y@vdmCDMkhR)6V9OPX| zeK@yHv0)O~X_H+nyZnFd3`nS<0RqA-2LPs=eL7T) zOqZ_rIKa-%$QBIF z&c-XIRG=L%sT+l?9hxxu*U$``wZ;{HW>%=wvnUrb#Et%5G+5@-zOLyW&NBnb6n<3L>7a#}--bi6H9@rikNKt?L zmko;F9sE!EBmxq@B!2YU^SP9M-(Cv-g*g7F&pRgOs*E^O+l3Oir6sMpS<_z0lsk}5 z&wF&XvnR5vg;^pHh(5KERBsq2+iN&wSy6p#n*VK;nE@z6@ z54B45`Goxr)66b5FO3(xt5{mU`DK`;#tP?KHk#TsD-u?N5auuZZp$g9xGRv`)5vh>>^I z`*#ErFl;ZePEdF6pV>^qd20%om>{gc@IrdqAXZr$%6$t-PgHc>-l3P-)|yr4 zz^?f2)|4I6t!HVjge;i#tMp#(RwG+`+?C^?C7csnrEiUpXFS5e&Exj>^_d|ddkJl_ zP*hj7IaSlY=08d=vFnmH(5$HA;O=i2r{LVIIVabb_c&|C{_W4`y}l1R#Dl~#V-qqf z(qK;|?_^*8Y39Phas})ei<$r|9E2L3Iiwgj-D}tI2_kum#1}FbPwo#5Y;@lEH1=b5 zD9JML=cMKyE!k8y#(ru;r}m-PlW3GToraS{Qe1#`(pY;PT0ANygMjIm7zJ&&AFzqCTmv$h~#5AGGJO zAf{8RN;RqtoVvw}Q$#pHii$2``0mt#)l1V`qN`FpqDmj2@-pfynC=wyNXRxnFYHlT zK6e1@;iP4D`h71zg1JviA|l7xm%QF`nB;<`eyx3a7#x&E|(p>cbp_?N#+<8l%QVKkdA^ zdx1G%eSozXDgJ0m5m$lc# zZBl12KV$XFS@kW+=i>c7jG3ANUzmc=aH*M*$#DS98ZfPMos6k6QH%?&kWe~)DeGa$ z{n9i5{bh?8FcFKrUM8z1@-F3hm*iRNMeg^PHHLkDPhIIV|09?J38j*nSinG0@(VIK zC{>g|#rmI`z(wvt0gwW!qt;F34(Kqx-+T^O%S26y&@18h?QX=8NuZwW7B6u5Md41E z2`oK5m1*ZO2Dx5p8ifna zZOMP3w0oQ5YRIGX$Q>EyYX7>))x=?sRyX;fD>qwD%&8a%NO=1Ita+q|_9oDExGO-m zybs7bZ1|wJ+anUmSuNW`nIEW}V!@OzcpHEd^QSU>^QS>WOwDGhIxX7&Bpwa4@q2To*=meP`^*=xSL4|5p=mD{^X zf#g|H4%ww-Y;Kk>yJ}U?2XU0del#I%3AXVBzHr+bgoz3QZvE05rHtH*WmPxxP27svQ~lv)_UzugnE1=0{)ou_bKYAX-VyR&$2}Ro znRZPI@ z_7sJ1Ot-k+%8%$Y?sM$HU)J$|7u#}}(^_Kl^t)GiO0*;zDBjg(TE@i&#HD_}6yWVD ztJ%PNT73vaB^VMRASmE+uxN82q61#oHue$~POA_)3jIO~5Ww$W>*$kHUz1N<*x{Vd zC3}|mkvH`$(fJf3ZO}Y*(fY3vqWaz7CzkKGc**Bz)JSH)xG|UTQ~73)!`g6ZLcLxLnC!Ys zf&uj3u~$(7=*TzMWcZXO$E`;f)&JI(3U8TCj^S~KptQj>&ZUsW93nSB_=<3$`y$vq zlkUmhDkf8j8wYM2LgCr&vtoNiGC^?e{p!NblsIBOAsh)q6&SpfSwsiEGX-zCaztuY z2gluRS!u8H4)lfZ?yQ8+>@v;K4%UhGIs5zdUuHq-Tyqi7*Z1(fgGxq;ce{W7@Zhnn zED0)cFGlx~!6}#GKu&$INrY?H0(9^2i!-EzhhZMKc)v;GH%IWVnytfXt+!lQMV0wF z?gh|}G+GN33~X4#7-mdxMJR%5UisY&Y}htSY)%X&h4-r`sjU=kDuFO(#cSTV5%2}d z*OEVoz^ASCt2OX!T2`LtxZ+c%qwBp}2^$;Ej1Y7_e}CDgqmI@iTJ#G!(hkvuIl*J+$aIcjeJ^Q;&1HUWIxMpF-kcty)#LnDBJAV->r3akV>zb z7|GS$yxAM$JE}@DxmeJNP;4Y9_zKIdL)V;aZj#6c+t-K)uzy(dhzk@zBrNIqcT*M3 zd(|?qf`4l3h5JbG ze6DCG*pbkX@Nj(88RH^bPSoQQ82BLvo?Z46!WO-#0;chOo{r~Y|?&?;5h zWr>rVlR3-Pe}*8p_Gbyle@=YSA20wECJ)?hLi=;^WDDYN zYBzt8{IL*~Xm_q<+nTrRd(+D8NjdvN~8bPIOveg`-)%Txsb_tRQh1 zXI={*Z*fiqnKVo}c*~}mS1tBx0^9#ZGMT-8wLt{w@-;!zIzCtbg3?jyWk`B-eUnxUi4&4cQK0hzV$FXJNz@IG-!x<& z1tXJyKLs4$t|wK&B4)oe`FJ;0Yj;iJ92*V1dBDKOCraWXhxl(e2%r5k5B5*`PwMh! z0wsUqKO_s(SQr`L<7I$n>xYC~S|?{6`O2_N&YXizl>YN6h^hYgQx?=2_wdM1AV9c-6vUZN_TGoQTWkXP$jAt^^bjk{XMO2``gu zMxNrI*;s(FZY-({XkU$I+CBGEdQ#CFszWv@Q`Oo;rP7$x!E8Sqz}zz4=4wLLTXui$ z%wYd^!qsO5#5RMX&&^ywpJR`iBty#MR2e1L6(x32o>m~E$B5Bzrv|zjmoLvl1*BXd zPrty3sLe@MkW z^Yc=U&Eu~hJ=pLZNSzkVg?LX8)rf1y!r~xu`CDa!JqxnlmKpNWoGO?SW|m zaE7xFh%i6&a1SuD^5Cv2&@{ z=YN8?jP$RUS>ge{dSk|D6ZRQu99ENxvt>3KeX7p%Z=FI#$qcDX8-_@QGsII{a-UqX zHhF*pm=K$K1%9y_3gZ9-G|NO-$$Up@vH>6ksc(Mx4CP3>qNV}QN>lbg51o*fGCuIa z(M22VH6UBvXu!{TPBgjGT33U1o%!I}Tyc25@pHUc8b#s&mOu)Is%e{a-lh9XG=Kqx z$*oZ9YwUinS8-3&&Y8=YdzH`vv!j~fml1B1`Kfb*LC2|d=OGU$q`wh}Nci30Wh3Md zNbSUW?MuJ$RsX}=p;L48V90)KJ-8!YXYpuL<~7WS8FNiOpCW{ntoex1H@fRUg8fiR z`B7R~Ey7a2m{HD91wq+601Ap?XUL;xFV8xd>7z7;?gu^2*aUr?X21e8PTQKb@*LBV z)e8*UY;hN!lj`!I7v#x8HdkE_Tw{!$R8#x##elNWs`mn7m9Wg|)I81M#$XYBYb%oG z>M2Du9$K})g6CL{41+9NUovV+Mnq7H(E|f!&C%7GrJ;GPs;1cxa@vM-3hmj?)a>X=zEqLu${qi;0L9i5q>- z-Zp^?H`o8=tbdl@B||xaI6VFP_cw{hAOBo0`fNk<67k*&h>!9w+{Qm9YbYErqo}wf zHmFR|Or6WUKN?ikdpRH3jsZ*y#~KjFQu`sqd&?Xj+HwG&(hfqcag5MFBV}Vj&<*PW z;8u;gu%Vy3z?m5nj8&)3MXsNJi3GYK%G3+zBIpIi9O0~GtyE~xhY}cyFOdxVVqJsj zPqEv9r!$!bC94gfp%PWuU$ zdVNYwm{QmmjhSd5L}(eAQTn}JMoP?D-G#FK_*f-|Mw%1`-EVo~K=Y$y%C+UInzzsC zF^eQdQ6e{?;iyOr_N;2v43)_xlj`rw#PoUe^^cL@KV)aEfn6sipn1Hzir7TdNtfgk zKtiJ#Pr9F5ZWLG9r_6!R(ph+5y7n^XZ0WBwA7#A)H_k|HBKBEykA;JV6{k6Rq#GBr z>I&=x@F;UU5$>j&w3anPrnh$h|Hn~4<1E^3_+U?k?@ug6GjX7nndK*jaVmz@!z9=d zmaJJ9_ySmm2$mR0MQCCjbphTaOhJTxxh*t4LSy3dmPiUzjpLGD<7)TDbF2(gfGuoA zzD(?at-UheXPj}0PFOGvr;-irExY@~4d!_&u%|S%csft>R}zk|yc5Nm47~+}68yVI zE!8#OlALHgnZXd0P4G{p#KJJ>i;}9lJ|(8cPr!Y<$pvdd@bEX@SVQAky^x|+;N(Kt)0lw ziU+W_j8S;0Sc=us<90Dy!P}VXI!D@#Ly4reR)dwNT~~>>DCa(f9najkCC#hLu`0YeB|ZXtRuqJBCD&Gt@z^jY5!- z))IeVe8bS7&BCZhAV%gGbK?HNnMMbDTv;|E%7s~tc*YtF%tNYCdswG>F7bI1Pt8{WeJ8TYSIK($R`A{G5p z(SOHVumOAnhjdV2gVCl1LRvP)bbuvrqrf>KKckxxujYy_`hxX+9zORq zFr)Y%N{G>)Zb{$Kba3K*t7el5u?4;kE$wNFr$>1r07yeO2!WC*n% zUeBh6e{wKkht1U>vwvuEku1WF3$*Iey4kAuJjL58CqyccygeX`){Dazye^ECT;lmH zHG?jY{Ih=anYLT`Bmc3om+cbX>7r_Vfa5@4Zspkk_Tt|%ro8?gB;F_fYliVUjXuz7 z;SVPX$h3u#MUKa}q@C>!ZEnRZc)6J3yLD$iNulJ9;N0R-Be0@ImcLMcTqpk^&%@Ea zlEWJCrUVa)Rzl@&ux9fCeo3M`q}fFhlA=v3OZuq=dgW%Gh8Szv*b+b5?YFitqtvv> z8}(cCyf)@m1A}eV?rY(K&dP#ayO(f_*<9@q19B&9kBqIl=zv)^B?_xJ2z9L)zut{;`;~2+}Qi zj3|vcV=Ib~T-e>(HNac%R^FAL-hZWZM4;uV-uploXB@9R=l>r{p;qIf;%ErrxCwMm z1p}O7@EA10zRWwF*eWYV`$$jYshvNo(JHJqVYljWg6k?p&3^FfJ(BBgtLIUHy@XoC zI59R<`DxsmqT1hq!iY`Msep)+KN*T#x}tTe#JJzsZSXeVgW93PGf?zg5^p3f;;oZk zJhJ?dr+d<@-#SKs*YCi-MhW$UDusQWG7ji>jcv^`JtJ*&nGmS)k>Ihk=g8{eTz5Ok z(0cXvH5kMgo4LCCXaWq zx84NS^EZbUHj7LDa)p|AgJ1J2N3*QAA&0n~ZbYD*Lj9-9Os+k;i&-5hlHJe%hlGrg zLr%|8nY(F}yxfhH0-J#pgsmZj87orac!JrlY-7qvitc)Y7i&wtg3!u~sToUK3&k|| zxTOW){3-uD^{CUP@!^VgWf3gc{`pzfzO4xB&Mbp{qO!I{?*P(8k7>e2m20k}W3#kRj8;U7xEl@@zFgXBsmaXIG!HKWDzi zDchR^c01LKiP#*?(On+1W}Maw<}8nQR@Y+s*Q`(fpQ@F7_)6-(gm4Cwq6ju!0936j3488uh-OR#{(0lZJUkly zqI>WLb7*2Cp%^s-Q4u1H4s_}m%Vjq+siak{y&fCXm_hBS5^K6~C{)P@XZ58zR^PQf zDd*;}rgniding4m*l8q+Tjbb~)|2z<+Q{h_sYG>Da-u;yyh0XyIf}8RSPG4*`i%^` zwG*v*Q^Ru>P1l9|aQ7pr;nE)(-CrRG=Xl3!z$wKvIjtQ->vrwCE^;WQk_8%u)AYVZ zz$ETtFz9-}ct2ETj^$Lv)|dw_6K!`%&j|3ur@zvZbK#ap=mZy9icBex!PQM3lXxGh zv&;}KdHju(Fmqq?cMd^a#O~R5AKY0BVGu#W?c|wU(?pNpi||lr%6pO~yz;r#;)Oyn z-KrEVw*%Fn-XqS%Ut{oV3OWtu-7F_GP0_=`T~<`-HEwj6mVmidrI($j`aTo~(DXI;r*7N3K)I+YN*eF7EjfX=baHd^U? z9Oxdj;595ZT=o_u9V6?9?MF7snTD)D1|xT!aDYkmmQn+0`|J;EWeANz#O`)6jR$XD zDCmP@Sh^kvn;#FB;<#woJe(7I^g`6Az-+<5DP zJ@&#{MKXx<*gcs(p-ai>Hwmqj$Y(ZFXAqb7YkUiwSK6lps-u+7$K{ z^jDcdId^5q^5kamQCuOEcmlTIQo9>YLU$w_2o?s6(0`aU?xuN&XTi|f@ppd~5dds0 zyjxuxO@trlgpeV&ke71CUCyU3!3yxcun^$X1xSN0yYpOiX#OT%y_h@FRB)v*NOFL% z8T$=c1nT`0ok6Uck}j|vOrVi9t9$0hi+`t_;`&iA-570Xz|FY?dj`KD1-^v3<_?SE z2A-hL$1pq1{t$Y5cS&s&`psMcx~dxv5A(^j5hBa+0_^-zN;2WI)Hti!#|}5< z=my9zT8=lZV ztUqwfRJLns@rkZ{%&6FPbG1rm;mm3s!CPbJBOEX$8eJ$hVe(U2 zytWP?W5Gu|Pz4Th#5w$hyH;oKE=+$G6pX>+KZBNj{dat}gp-{Q??(=;>ij9HR233u zuVrKbF=|$)r*QOVU_Ogt9dmZ}RWh(58d8WxNmCo#ObMYd|M`eO^y1L`VUe?5N(|l> zgEWqyZlBcM?#^pkRh#e%eBW7ilkIN}`+3 z*hg&CkcbJIn4U4YbMP@N)ogntrlhfP!OC#% zY=0c;IuiSO>3-3QKN|!NrX8YP#WgoO#7ErW`+e~uKz!?0rnaTW(}_tctTjxCUcXoT z06_QUV0eNgJmWI5kc#cp06L^urbR;CCZ3{Vfkhk#H<;`4Sy!uWMCU6O8V^9Q8)@E}%o+fD9LisJHqeaw?+Z3YojKm&2m{3o(#at!>08bG|Ff zgpBsLY=-H8Gu!8x2(OI-=4J6K6UwLlhcz)20<0O8;lF`^1r!M2KuBZI*#Y#I`}8VB&|L!C=vtn2uwLSDSU}D?NS4|st15hz!36iN_myYDW7-H zyPNB}F+Hp}TomrO&GVA={CUDtSpfg6C%Ug_ZL8pdwghLMQpc9yjejG{a6bK{eu0;# z!(+SiON1?c;^^6{3T}tHcP%7e)pU) z+^Ylzxg(baq^)d^&@4Z5RyPzJ=afdKX%5MdO_zM?_ATebE*Q5qu6fRuN^W`5^}Zjm zAbjKIa-60i*VQ5b)ZzWhW!LB0ua!d}W|oS@l3y zXnBzMycFC{oD;pH!HB?w~9-yqQ_KHnZ3Zh=TW&=au% z#gPZgJ(Bl!Rzxe!4XD94iCvw$+AHt5I0?<(F1MfXsC$gk>!Av>D%-zrg{~nxeN1y7 z)Jx!hdB%At7grcH$xTCF!+G|#EVvlJU7m3vS!i}C?(+qn+fbbcKyU3^l=dtlITEx{ z;;elVHw&w+?GD-!4u64{2P|hNK_0F3HjBwqHn8hf3bf928K3{QyL%@GQs5YJFe|rFK%a8Obo%`%=Y@oGAy*+sl&PP zqWL&k$flnnbw--}OERGOEQkoAT^Q>9E*ZK%gV6LJb*|+nWBqk_Th1?{W}KKU%EGDa zNmyku<|zxm^ku|j?cuB^3azdj_lPx#U@;}i z;M4Y3Hw*d}0<$<)G~LF;iLfWIoyyx=XIctlCLf(%?OW`PB)n|;@t+#%tymF4r~)vu;PL%XSo zvGY^xyJ^`nZum>O~}b3VnMXAJpVyt6Z2g zJ&9M(K{ zcWtW9c0T-%D2xmnH_hWO5LX)!-L+Y&7GJc;dx*B)K_gl8H`4{7UfXe|ajwT(wSCnb zzYcrn#IlQ{sS-#WAdZ}Sa~6EaE*i~5Z)+)E9wko;Y;P7YI~s=Yp51>N`W+%#x7ilN ziT;r1cN-lRU{N z6N6u5^k7-Va$Ux4gOqjA;-u(jExY`X*kdjk12MdP$L(c8#1j=AAy8zv%S` z0(C4(vEeA%+_WS3+4(gCMsN8a-8(LNlx5)Sssx9bGUBB08gvVyr+g%6=z*Hzb54E= zL3$ig>E4~Z?O2-JDrQ)C>O!55D91@aPLu1be(mgb=n1-)q>fay!k&L1XgIQ06R96x@XAtQd2ARzt2n zituC}=A9@vT?jG^HaYo~Wdm?r*#DkX@Xa*Vy!%k9P6$Wr`vmy#=9tT2SH0)@3wg!# zX4gZ=^MUUX{Kq(aT(^}aBO{GM%*|m|dGWSKZ|gS38rCQS-Us}>x9abAsk%OZ!%RPz z!8>)%*yD!T=hg_Tp#gIKhEG{%pQ_d*E3_syGdI?6pla=HRrZ#pWko4 zfcT3i8IWc-*y5u5H?G0Ub!6Z5+%cwRopv%pfEFb4oEzq|a+l+;gLfd-yW@YV%*XdD z&37u8{?X+07f@}n|3{ucZFrRO@~z6yP8FhZV^&6_4bD~%VYI214L?pi3W z#oc{zcQ2IUZpGc*-QC^Yi#v4LZ+Y*%-(Sd+laov)GXXuKw%Nl^M%pe=YObwT@r)3V z%Bb=zCW*(RW%0isrt2t>e%MN_Gtg=>O{0{ls@n)2a|#F&+pb1jG8)6F{~V*KpF@=( zHq+YdqD)*8&99mo9c%71&1Z7cWO&fO+ckzZGqa*9v5k1*mGuVZ6V=NKL{)y!JmWFI48Hp;F8icB6dBfR(|RLv z;8_N5AapJ+Z0n+?OK^1E25_De@_q$vAZ@z}uK1rMJ?V9rzu)#>p;f%sQ z!h4;7%I#{PEyYM1R4BYx_v_E96)nLeGsn(H%RIw|TF(_PVGibGR}qDszG;0yJE&hx z7MELCnA0U!zv78_E_|H@40i;V&+R@zRX?vd6=RRPXQ=1&e+@`Rw%#`TGia25(mA(t z|7_H6v_kWZsB-G8?*6l)4SMF_w+K|rDwFAcsmW;gwoLZ0^d=$rozAR;`>nGgI?l;E z(@DGGUAFYne<$Fmy=~t)jDU#WuKRo63uA=rNnQuuZ1@jIJn27VXi2~-w4n86kV!Rw z{0i=6jKHA#gHoF~apq=Px;B40cdhI*?jhkGkP<39CL5p3Q<$jkLtUCt{ySnmSiKctgy zeP%X{n}>{F2rf1~iDyZ!*H+=SIB?}Q!?D(uhDS;nfxDYu_3i+7Q-u+CUQ;|bUSP(b z*m;k`h1GYLz6^wJv#t376`e#AC->cK41;`1v-KuuMTxgIn7O3FF7whfV&rnU^tm&) zutadZ|0Mh_^tMalzk9X{>Lu~+)qg*!$HY9Zl+&YoD*O3 zM-lq?C1xhXbGGYQ)V!zKVi8<9(3MB(M^LvJp65J6f8PFa%)cJM63M@k|CYP6efSzK zdo57Bm-Mv{^P&kG`L5S4E?YbML9zs;H>D9z(E3FXBhk6KBw3%?h3y=nwe468`nUVH zcqx|s)$;IP)dY$U$6VDM4yzb{n%{~QD+BasZiU+Mxtn3^Mtbe)!mw>D-X2P@V77`z zi%w80JZT#@>Cn@i6AG$0Yf{4+MtB`;o7p>Ut#DVpX8VT3o4=DlskUDjx<1~Lf$w@i zy^38s!uO-N7hys#ee7UcD=I+g|BqPaDTuPb%Je{bT%+sW0t`d_@Ay1`pz`nAr8@>9 zR+sh$N1j9dXEw{?4h^zg3FQbrj#LalxJf=kn=zK!ylrD)IW?`IIR9FCsfL`OZBfph z_FU#>{+H6s%MPJkAS@31!Ys>l~5^{R%oJUUC+JZR#Vyf}5 z4dC7`N_Pow@zxaMm3?&eG;icM&#^w5NjXn2>%IF!qH{mnYt-On!Jvci8Myh~lj#56 zBmd%moZirmhoR-(QmR96N6{j!!;%eohN9qB|f(di6}Bg2;n{fUa662 zvJuAtDoxHXQNPfZM+ZDl>^QMF+fz%Z^lwKa5vri*#GvWXWpLPH3kd;c>q@{YROtwvrO_c=2!}A%}hH zUnl(N14T>@Nci8*E@+_mJ;-;D+MrA6b-OY7rAO+2&Urr`<0+^f>yqQvW-Md*8PxJ$ z{Q@`dv2_ClaS1C4fB*^H3&47{mBrQ4t?f4&FXJ=^vD=>X6optp@ni(&rUKQ$ z`AE@UP(G)u9|X5v4mF)?}MG$~-& zqn-)XlcYkAFN_Ydj)f^HK?lf>piJ*JVK%JLr3R&qdJ#P3@fKx6W5Ql+4?*yDO?bWW zk%oqii_WfM%wlH(Z4lb9Otd^v0beW&if*F;{pF4(M-~bLM`_OTS=j1#b?@eT%(GAs zHeOLK^)SGNw;vTp_5sSaOP%4HfQ4-Ir|;P?V#=NY3}a4;>37lRpr1>iv3{^BEb!v0 zvwA@Nf6!jAS=y&p(5_+!NCathr2WU1&pyE1QSyKH0K4Bi#Le=}sii0E zVK&kPrT=cpgo>N!t{>ls1R#)BmC5nb=OV1St}8~>dPjJFl8t6ii0>bc^dlR1Ka?qq z$XPBtd#@Z&ziXw1Sn7gKEA<|KuH=NoU7y7{gqrpdph~nx$eBo~C`U!a%L1*9CK*>i zkH6Y}O25(DC!=KZZv1ZATWWEhN2pA$3!xTZNJSu%>Egfw6{q(0Jy7dJL4{NfYD4{; z+gSW&<&-SGbt?<YWt3u}#`T3FC;z7^V>j7tU*ZmgH!f)+R0UJ=VX7 z)2-#L;wyKcbr6v0i>Kf%l>F51py1OGR87;8aXU8t@UO% z)wSI7e_ZRL`bZ5C=+`>U_MYWcPez>3fBVNj3knPN``4KLuHWtP#;gx|)0h4j3Blw! z+eeVQ9Eh1xK@v=!Wog~=1-mxJfg>Y{?RujNQm3r{daw}mnZAVv5tXSHLitk%BqM5y zIUh}ZQz;Z;ZdB8>qaJ~E5)wiyP1i!e4~83Y5jYg;V|%mQdmSW15Ac2&9zB+~4T}dJ zJ}0Ft5B{$6%sVL2uqB6F#}Nv7SA&coZrg^rUKSe(y|Th%VZ3>Y?4f^AJ}<%!S_}_U zv1bg1c``UYAAv=oZKX?h@xe21HfPsrUTjWOQim(OBv{O5alpxgUd-d}cT@0aG*$DY zAj=G1dHem%qak6xjOtN0Z=f*Yn=am(NCC%HJP5as7e#?z;PJf`R@qH;tfYf; zH#%0-uAVF|YMpcc4?geiX049_Zg2x0oD_e2a>E??PwAiofEJCpiJ!;K!WmJ9mk?Nm z!5lkraA5H$m42kq_V^ypOy$uv`=>u3avdgj)Im!x5htRoCBY}WFzNWK2V^K3F^_h) z#FOrcJFz}LF8OjGE&^&)re7s&S9##ZG2#>f4n`fFh%73ynw@N~D)dT0CM!^55n|ec zRIO>EBX|3NhcPStajoBV`fPMufP=qU(X6miYa5csqRhcXZ+{<0)@|~s&gJ-+WX*{S zZ{|+SiRG(at7ke>c<1>|N`B0%UBo+4d@OaUgWU06a~Y`G=gjOaJo{xN=~CFqgzV!} z^T$00KQcvgkiX*z2)vax@Z1N~6>UaQ?`9c2wH)>6t7)E$$DGBqB0Xm(G%JaxY(m@AbYv6P&)B{gm56mc!*&zwsRy{0Xx zpRtdKp1-`7GF6KmG>mmcU2rDyAz9ASWV zz_D+fMz_~cbm!Hyah-O|T+?CK;w-x3o(FvhUI8DnU#>TY9{u^*UhVTiS8N}R`REmh z#Lo-^A{u<_bPm>G(EINIbY>rtvcj7l=8u{_xwL7b*`L3El`*xkSAxD}uLO*@VovnJ z#Hy<0DWP+SE(d+CR)UlGYL&FPGkBEWB7jc35CYN4NTEzsLiduhxs~9kCEKm%?XF++ z_;xm8`Q(CDYcJ$;jYX{_q(^41PjY3@fp@+x8wxyy@2? zl;3X4%F@O|1+`=x@foSJFi03!$=7gopJlq({Q4x}8MQ4_C##gjsK8m|XB`yxlnS5F(TK6^lyu!PD zS={7R^YORaKRB8}73C)s7-Kh<(B+3Ts1k(SvTLZtbaEHrndI9m9|tO0M-}FfG%I=4 zxqw0boayxK9PY8Sh_Q7;>*@?m3HRxtLHyp%9rd&sDtd1~%;sV+gdOuey|RIPLgH{` zZG5;XW2vm`-rO=`SA}~#^nE(QG)mRf=0C^!tfYa?2}-V;!55T(}}Z2MRJz1v}DplF7IkB@Hp4_KES zt@>m#SO=S?<$r)%22K8%;9W-ePXRy@b=o4CwqEakKB#x(8>y7!svtg%e` zkr7FhRq14;xgF3=2WF*VnmB{E%5iOl1rpLsYW~m%@E${V27r319gba@FN}k>kjq%+ zY$*#WU!kShQl$H;T;r<8$;Ns2Ez0eyJK-IMyD>B4f~bgD>)BW(*}T1ZsV1LoynfB# zZJsgI7fvz~whK5tD7&Bm;3c?e>7sr3Z87_OwKX(obfd9!i&D8aPV)D9%rFX=cbu+4 z8NyFM=WGArIN|Y>@Rv1~^$H;mnBTLTnPczu#qH zVXR@%LlKkE(DssIapm#qK^Q9`hB!)KUui{+o=w-CaKPgnN-HxXIFW@v_}(on$iv1S z!j3`bXnAv9S~hZ2scOAwlc#C_!d^(T(F_z}C^0JJHB-r(&D^P-QJp_omcz7@V;DH} zZP&lPI^orxpxi;v;&Tb9?lw=z@K#75Up$r{`b-U*se^$=P`eO;5^dzGbYcWhu6sn5 zCFy@VL8-~E_LX2^KFp4!CeTg?%*&K9X6I~KWYeo*5%b+3JP4}(=~O6hA(ng99hEd? z+seBgMTg?xSr*ZFAT$_z2Ht}%w@J=U`8!iTMlxaOR}x#yOd!bW64d`uU0Me~&5ft1 z_uCTxkq7dy6pIUOC607*+tZjFs(3i7Fy5vkZ@3Y1B$+M~E-$nhfrF$7>Y;E5?~ z6`Q`@QK$7fV^;cvFIuNO)hVbHE{pShlaX005Mk{kujm4M1vKNtLs` zp))&SK@C{kqJvGzGEfTrc{aH_8b12>2u)bui{~1&Y4H3+f()_m>NT7)`;jui=iQDP z$vf+-pzNb}VZaSoR0)s-ah(O;v3y+L1xqWH6TRhq>5^ro#7UsE^}sjrqYi5EZPNYs z&PB#YG?66__+ITO0{2$XI$%qMNeii^zX;)CMTMnAYbdh5NFz?bgBBh*VYc%Lb*UPe7KUAQ7?^LO+48O&`UT0UXQH_chYWyPwEi-QXmC7<{ zKx>ZT>So~YX(MJ}$92uKUkrW!#y3+u6Q_KdVZ_I{Jk&$$1wzOYQ%h{Fl!iOm_{72kTEMSfgvQ0Yb?$C2hT|4<&%Q2|RNZHxt&m zvmSiM8@#sd5FXLk^&YL`T6JvP&c=A1qCmmcPmf3c4rt+(?J1d0FWUW@2Psb*krzt8 za_BJ!E6bW2OAV??tGOC4Lai;I^Fczsw!RK-s>?9GVu{Uva~YH<9dv~hC2arRvVqgF z=lLUeGIjTh9J5U;s*@~Dg`ZUGsD6{j8U>H-Y2so0c*1WAIRBLEu0&dlHQzlHj)3`aTh3k*Z+VudG6!I?Vkw8FAp;{^j1&VAmo8- z(&=B2@csTrSt9g&_yXl%@ak_N=HtODk4q>AqgXa-_eR+kFCHt3@FbpEV8%61)6NEc z)Tqa-Af#A$6%t$`l5ib8SBmborCwC>)102H?trzH{#hAK%`8gB<`7$AbWk?djw7Mi zl)KSVJQcIvyJ4^@e-++$@9SqcAd2B%x|`U>27-oYmrI*zdfS_`6DdxB4Gl%R>BabLDb0srkJFqiy+ES;r1(L=P{?dzpfZ3O7 z07+KT)at7yRqm%6LVdT$+EKt#d<1N~RX@S7TMF-&wg8M~bf+EBe``l6cUcy{pOEww zjn_pW&^oUkv!n|fkZS&Y0_{~#?SgJ_RsUIl_a-2#Q~!*Z=Sb&J_1|saO11V5`uAze zL|A|ftk^_R?fX9Yp%@=L!U7RZ9aTs5m*en&#p`y0Gk8`&0s`ucvLq?cW{L(`45Z7n&HzYmY z5-6$(^(y)A%cL$BM%6&>4SUxQVJ71(bV*s6MCnagyF#8pBP?l^q z@C{(3x^(Z9FTiFI5ejD~(eG`0B+SKIGM0suO>NoXQF6WLdsR@U8Z79ygkKr7l>4kr z338K7XjSE2`@eM3b4Ta2&!kfq!T!MYjOw>BwNG!OLKi(>-#xOaoNAdsot#p~so%Ix zO#_R#M4MH7x2>!7qDM;3KS}i_HIS^XqWWXb>Tx%7ovX2R3_1n9Cxt)wdm)v6uuH(} zfn~J$y7-Lw@TTCb@GWytb1@i|+*9%2r9oOAAsQ*q_CFT_i|(_qkwJtd7%ERMSo0(@ zDWBT?F)CZO*Fx%|#XDB7AT&hBEz@QB1<(8Y@w1HV*TwCnuP=T0KDbDln8_CpLQQ9e(jnwaYr>*umH}SUY z-PJ4J^x&0emsm}6a6&4gamxTj?zVBJI5tG4c24b7OKz@KRRne2%y=y-$@yP@(g8NM z&*@+JOoAyf>HM>$KMt78+1pZ!4Ux_~1Sj7bt=<(TpAOCHP#+$~KDlO5lA>JPIe{_@ zb@A{E2`Cj##&4EM1l~ar{*S_`{h)b$`Hv!>9rSLG40(<_NW-orA{9_YNnrX20>=mq z2u`?zN$xH;pnEkqqdpv_Z(s;C5=GfmqBI&TLp3nImO4`!eA}X}rJ<`Fb`GQ5XEQ(p zgr}D45pgd9nBwXq4Hq+H>L?=2(3QRxZw(caOI`onMu$_jKc^K?XAX|_H0y=U=D_^a zuHP!dA$|{Fkw8@367dxLJ}6mfQ?-KP@s}n_hTE>R{P0Z%^U?5!(}P`Y!_s4)R)?dM z%pr=KiJ`k~;c>Z-e{NXbSl@t<`vnu>pOAE-@n3C0JSy5v_aQ8?VyN2Ufk-#VW|17n znLJXJ4~tGav+pQYRH*K)lwS1mW{=?Y?jfk&|J4zs19}cC?${1A{di=o_rj($hy~d_ z{GUkwATlh%sq~zmS_=6*Ll(k$bLeRn2&ah7WXG!ZAo8_4+{+%=*mF7w4FM0g~9W> z*>+;0o3RimeJmD8)O3;kaeMo9(LU$@KWJ(z)gvW7}XR5IbJ3 zxTD!MHuyLO>*$=iIuT?*I0lOQFJWr$4S1o5>xe9V^8F3#Z4C-p{fBz-0}KhBy@ST^ zY$d^(ugC#!;Bh133gPaX};Fu#h?nANn zWT}senW`qjI4V04GVm)8r8Rj{cp&J6tYW@$R4Yi@2PSA%uB%$EAgI~_5i;`7>j?2V zpa2%^t)zXErhG{|V#@YX?REP_Zr3%xL@oOJZdwo}9xm)B~UJVwvRwR0y;ow5{$ub0VAMJu23W{9rr`=65lV}X_a9EqU* z{}vzQC*6T1RT3Dh!+i~^xR2Ymks3{de?c*wpzeQQe~U1%bSHa#MU=qX?ayhSQzme2 z)@1wj5D*`jq2oK59LKIrk&&oA7C?}EI{-)RStv7&Ep_{)!h``!?Tk~F65UkI1YVGF zK3E&_5S~fApt23OI9Xj%FCeinBz>j`DbEyvO4sGqP)vXs3M+PZJ<1m=cQ!4;!;In* z_|q)~HYLh--x&dd@f-l@2P>Am7;$^m(Iq5B(CPC@K;NUMN2V&Z>PwHv?ta%-}C^|*9&WN!_?z;YMqyt z%Qnvah=~^4>JNX~h%stL1-d-mK=b~uDHr|Oc-J1^zeT=%j3$^f{!LK?#kn~+S!G9~ zk87nXC=?0bgO9-(_4qFQ@z9dFw|U0@Ix2l%b7?_7IJ_9QJQH5eX zE(d8ze!+l-^sjTzzLSa&L`LsD;Pg3`Ym}#FA8QGICMQZ=>WZn_)y~L z^Li>UL88WVw7|?jSN7}Xvp!^gWr!4wCZmp#AIm07rVIZ4@5Hk+1%Qmw87VSSLf{?^ zBO{+p@eOt`#&v1GDUgvd29YM^v+BK$Htl3hY*{mO=rr8mcDy)hGmK!v8y?}E0I>kM_hUd-YSR3cOWz^X%RuWl7a=Z`K0 z&5$q4T-T4bw?~lWsoVkbmMCxMH!Ax0hzgjBjc0tbmt|G2C&F2vw)IM*#B6HEu0 z|F>F&LOk2;lWavzD1T zbIttoR6D8H9Df;H0dEuAnN>B0`Xt%|>4B<)Z+!Wz0Y21RfFh3G1`q29JJ*2rpLpVk zdrMAR7Tr99b$sUY2PqDMJb%mroniKmpdUk@{NTe^^s=^JmjkR_2)n|iTfC7qV#1HM zZm;#evfa3838!M2M1{8y?l7#GH(pRR*W05PAl2CARAsfY?KT`o-O`RSh1(6>ZJy;; z`YL>_nNWV|N<@Df&3;P-QiD4g+XMW#k6F}R31rVn(hJ)h`NhxsyUPXu$yw+bTyI-I zplfP_x(`b(W}hR)^^gwg|NXK(>H?IhNR5L`=g66v4bG7>YHMsuHzl+h7`dk0dg=<@ zjiIIoR3=-KN`=gb!p(pV6wssM(inj~5HB-{0JwS04O{QumW$U`5!nwta|FcrLR7t( zUBvM)C4sSx613KulJ`}0P<;Snob%i^xMbB6XH|FIyXGPMWNm4sh744h*&z3-Wl_5f zgakP=i-nfKWKMMw74IA!OYb0j9s9M{swffoB#q)tCQn?E^a7n29W)JWdnu9q0~eDq zZNEm(Lzbq4ro}(d9i}YTeGpT};Glq3`nySL;w&UTG;FqMfyL zWZyDUn6`a2Kfif1Z7~>sGe{|*dr`faiL_iV`};Qxe~tZy*b3c z?cOFLq3I;Y8+LKFB^TK9<8JPN`n2HC%(~6v<;LA_SJ>nFeR>z9mGEDlh=OXV2{tEA zre8CGyNg+z)ua&JNZf`f*lGX07m}CLtNITYKjGI4=IzS&?uf95v_vrUBah=R%HoKw z-`8z>x4{sQR8`ORD|C)J>KB_0TG9QM*4JWxzKKVD+>S2oXG1}oZ?$lW8TvK7on~oSGAc(HHWxLT9*q8wYs2OJa-*4nWh~Rw2uU6} zQe+ybn%*4@=Agh2mi?^25U@M6A)4`APNj27JX*#|ze%!a07$Kk#xD=%Wf1e&p8njZa{#%z(2hD?s#lB82(S(Qz zgU~V(*fZqiz=Wk>FNd-4=MNCX`UoNcuGd$^2z2S9f;~0fAO0^qs8rW9SVSclHt-I# z>11UZ;-4g8c_R<{MTwg>RM9sL<}+Za zs!XTt?S$b@(GXy_xHX}eu0k!sO2GQqT+z?aLsSihLo|>BRd)fX6^|@#5Q^q4V(D! zti@qILBmS>gW&agRqs?*@ABbGK3rSc-lJ#Y*I<*{>iNz^B*~Q0EZWgE_tBlbtM|TP z5&;l2Mz+-l=@o?fK;r$wtGuzoz%xnbM568+6gI?IYT%s^o7eKT;JO>$y6{`K;4aV~ zxgG4Lst?@I0o!Fh@tzGQeMtOUzgg$x1~bMI5jfNmpJU4PI5y6zVGun$V*Sb&)e*Vr z$ZCLF;UAk_nIF803wV(DOSgS)+uTu#)K6!Z*tT}r7=h09&?7C13k4Pl zCOqVjqK0>C;Xvri%;Jh{)OmAB(CJxcIMz?5*Z5*-QM*X?y>GuNgIdTGdpUyut;2N> zZgHr_M{CFtlxgsc=7S2lLi{fvP2hm!c%6=M^$FR%$!oJ1j~dq`6$St7NlxFAHjMR4 z1(H1Z7{7t_CQi}Tz^l>s(`p5BcWQ%Ya0zPs*p3#ZKFpfVD}`e-*kf4}b8G(@y3wt7 zw>#6npOaYJVDoKTLg1`sle8N=TuuLW6}p&IrtdORWOFJ`XOB_$5b6|rmQK*scIZl9 zlM22FMd5s-w35gv<5L$Hz1R?{-ifNVmDOtt>Bt&)Q~Tu=nFocut!&P&IrfXbkTESH zBD(YJxXgWn-U<7$ap~yyXdNZhVud%cn1Io*A6puidFVXaPlHa^-`uU|IHq~wlE0iz z-4d!V4q|@(#KnlR(r_EPSRd@9b4(2RvUJ=M?PZtHB_OtmOF)hWNu}oO^FXXH0cy9V z{ot~In(qC9U6}*7fw&Eg+Va{A+(aC_u^DBB^3|87sBGd6Ks5c}N-&Hd& zIb)6RecSB6=I-L8yAFF`WHtdGD?{w)o7=DawV>zh3^K_5I)$Rg^S_{S;&uM!|9YGT zlJ}br6Dz9`T)#KPD{at~QDipdhZ4c}riOdA(q)qb30Rp)Yb}xaCJTs$DD!1Etrkak z(_q;2v#l4uph}KbcR)6oySg4vTjk7z6t3Q{CYR5&ErlULqrVNr+sl(Gn-bKB7EpYV z93mSTQUZ3=Wf$eGIwo@vX099_D_M)C43!keZ9bh#?ay_YW@?NP_qb~ton5r;-OwqT zz%Iy;=rQ}cNw*iO{NB;nk6)x$*OhIkn%CyOLf!GSBu*9iT-|sDgON{Ql7U`t(wa7MZwX;94Jz-vH2$jHRJ|wC;%X8P z^V20cETq#*nW^gH`VX4f>Wu>I?0Xha*aF1g00NCv+>k3ue{eJ(sk8m>s{Wh2Kh}e? zTZx3(P^meeS{o;1I5L~PMytjpJad%*(iMB5A(~4S!O4kV&kqZ3hb#d>Mo5Am8%7#ev4KZFD-Oasut5T)ct@clp*l!z!DB2^0Q^ge~vp*pK@EIvUKhfo%@0r zQUKgMoxSjv)Usu%HyGo|NrHiqb2=Bdh|kuv)rh3nNphn*ab-Lrn9T8BwPkv`r#4q6 z&V_eNDl#MmjPXFK-Rf|qMeS0o`6>DaIN`Esz>kQ=4)rXIGlyLf(!iDNA=&Sw;Ec02 zR&5_7JBfplV%n18B`RJcWdT5REtdautfe!bLS8cC+v4eXxJH*7mNU$5sP?;&nNM0i z$4_s1lcM4ptwA-QGOi+rI3C|u`9z^PgZZ2`%Rjm@GlR%QHrmfZ{XR79bI|(+3Z8z< zV|CK`=%KsA-_N_SH&4Dkzz?$IX1#ZWQaeMm!lVEb(JUj=N=$?O%yoRgb*UBHDNOs@ z=*E&O%KJUdSFdmWFRNS<%KWNK~k2HYLR`}129z>=&A5#V7FB|gn>d%4)GZ{pZS3%pWKoGcL6b4gWis`!FPM34IpUVGFTYc<&#+ujO zp7dXhCkq>SZ5VV*Ri zVG4y1_n5I%j~2&NC8u^2el{a>@?%ozL-(RABnMp0%z%n`A+{GoFDr9&yiq(>#7il{ z{bm~38bxR$3gFHR1~WiywbW3FEviLa<|x-xIQf*Z;^qgO#$&E*c5vd~y*Ow}cl;e0 zwWU4(>FE(fp6T1>{75xywTi^p5ZteEa6 zB>z)M6RgQbqzMD_&6Gp!|w@}j%Y0{Q0vJjmMK_GqNBt8iS$MEsH`g^9`Som zqvvSH55Y-~RmOcR^adt<%itVJ0daKdX5l34vpFW8qNK*(9SiDWqYWpRH2y`KKl%GN zF*;*06Uun%N`Dv5A(+zZa}|K(1k5>!GqPo;@sgIl;QWZK_~SNj{4+j1vPwjm;-)T_ z#RG|Xad1N_qJq4i*2dsSh8VUhnRI8FzF(BVgbBE7M2I>c*z*}4$b}~QpetG^e#Y=u zVUY?&N=%#kT55G_NG93MLs(yrYdA&t_79NR|EBu+j(Ott$qwh(`omTo4JfG%Ij-z7 zdwSeRqOUL1Dk%%2x1Q>4%tVKQ*F5iW+7pztnee z23RP1HOzU$LjK09JY&V~>yuCOuyXEg87jiDWCIw+7fKE&)9RBq zFd*_y;@9Mt1}izqnFAi8on*15n{JT*Ga7T^Og|GO`PG8*$IhaA**{$eZ|rkRbK;!S zm!D$}jzi{Wg5K^heej~Uu=m%n@}FxU!Ha$c!AN5;spu-dXa8pYw=aeY(`r^K5EaMh`o`+AX#Fy5~h;&Pt?xjaX+{*b)xrt#s zcy@8?XT&SBz>}%B?+81x5Z|KPS5eUl@f{=o_ncH_8{nb~SDb zWf;U`-I0u~S!P~J_jKCf2H#0_h`i~vmwm(#4a zh~M#1SH~s%1&jb~*^|4IeSnAZAj)pBcwEtJ1by?miBx`2@i0Q}B?Y*nt;(YJ+grkkZ%c`AN*e z#uH;K_|J0W7fz2qTqUOvLJ!#bMDRs{M!N0DQBqW2MObx%)F*8!&Bh)?doLb_@ulSp z1aBGcpH=HH`x(gs<9l-C#7#6{wG?#gDe7b(E4d@ALMkcSkYAKJG}H#GU#*Oa&McU? z`DZ2Q!_enx4i5qG&J$@(0$TBJ|IDAi2&m?48>^53*hE2?gBl5<3VmPc=Nz0dZbSVf zDykZUE9X;`&29q%PQGLjVAvx;M1O9$_>Air#Ai>rmDf&=vUHdI?+{w4Ust@K1Ngswk>FjT@0pz^Iof5=FW;!j;Tq)4=IC}uCOKzEt`LJs=g_Z zcNz8Y_vuBxpwZ`l%1focmP&u;vKC2a_CeQHL-@oAbaX{et)PB7&ZB3e(v0tdcd8`2 zyOk>(rb9#je(ZCp!qqI&mZMq|z3S6r(qWL(p4zfvPU!o$IIn4uk!Cgcx{IZmWJbB2Aw4- zt-(Yh5X=aLQ7o6?X)>~o_{k%FlPU_!5$yRnSbM2(+BANXznf#j4yFh5H-cYr(o@tE zSWbHU!=d^8q`6z*)gC;}qioEhMyPdmP54#gLA zL515c^LQ(n1#X9|{sximm(X*w6S7J#dI_XR|1o$%%t=(4<2dJYC2=kMDP2-@3NTVe zikLQ~s>ZdnwIt?g)y$*s#Kch#A1@1r_0&78=9>>r$~n@dRNqNQJYcEnszkf5W0A

fx}8 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 z%0D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 diff --git a/desktop/src-tauri/icons/icon_warning_system_tray_color.png b/desktop/src-tauri/icons/icon_warning_system_tray_color.png deleted file mode 100644 index 5d835cdab99fc01450195d0784b48995802f7edc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2120 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 diff --git a/desktop/src-tauri/icons/ios/AppIcon-20x20@2x-1.png b/desktop/src-tauri/icons/ios/AppIcon-20x20@2x-1.png deleted file mode 100644 index 75ddbc7f40fee5313a568bc082356272d3fbb93d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2178 zcmV-|2z~d7P)AG%1i{0voq6kt-GuPb6 zS}x|785oaZv51+eS%mc2?E+tW5TVMQQA2Aj|OQnU9B}n12rsphIDQDG&%Rl4INV4TL z3G>?kR#ie2WLHaK)WgV=Z-L#NVyTG1^uzJdH+04s5QR9;yQ6)^B_{gscj32ED8`L> zG+NQfUsqVT5@TtOvOz|`%L)s!Y=@BuD3n_8!sul^_`Ly91CU8%T3M}y^L@}!9?Yvk zwCXKdbmZ$fv~H2Ntck^|3YY&J;=<_wQ?G?)lhWahYQr+yTG4qF&-WS(tZv4{8AGN3 zd2lMhVorpr07Zxt34Ht>>TP0v+|JJBq?wBohSM^L|EftGNW1&X(dp$h(^G#@K)8x{~sG03( zCZRfI)|9s@aLghvPzXY-%+=3@%ofK~^)w6$3qBo=Ck)7rdt7|%iB3etsKVZcmBhG` zWUo!~vio5{Ma3AG#+I;kU&a`8((FUF|2w{fU{M)R<)fv`LGRuST;D1;bvc7nk;e9s zEOvjY1%E%afaVU@*sg}OKEN^;dO6^4r{*#I$sD?ee8YlttPuYAgK5lMEKmxe_tYv| z(iP~~O8M=}T^K&vW@0f-^di~d{^RXFNz(yE^-wv8OnJ7)SS>xul0H?op1us8+!={wP-OMI$ZqxQAY`xbxsm;I0aZ9RtZS{>fEoV@yfF^ki?`zEK;Q+kf^ONv2}GA zMtJ2nvp6z*PYGB$x(9s{8d+AV5rB#S#z_o{+G4A$Vx5deNUeyb`rOpwtO}$~CNhk< z3e%UC648lLt>%&GpkVft@j`2iXjCN0L8$_tAf-h(_T8P>_vtP6+1M8JI7(HI8i1^H z6Pu*a4<6fG;o5XePb^W4hG?oyD)mKz#8A2riy+9y*!7Vv1I_@GqQsywKMc@PVsc#4 zqJ>3e7&`LJA@sk$&9YY&gO^^OBO}~6H0WXrP#LAMv6ZD53)2Di9@$k2t#TGjNu+K- z2^ZlCcPh5A;0<*2W^we}Lpb=z-R8X%9ES_9edF>9F8$?(=@Yr-ZvbGFG?U77&xOSZ z1N%1N@QDHJ_|T@L_E!3ci#)eZLB4=JhkLN^!Mjn&M`+#bqyK#!@LQaUDq`c1NTW^s z>FG)2ZwAP9`quVF0J%AktS1T_cI87)?7_%q`pX4Z6GN;{(@@aqs&`iodp_Dz`F*S_ z>U2yA-SOyn@z*)Lc=B~*+9aYl+PKu|#9eG`d8vR0zO&naGwO}>nuoVi*TaoyU|EQY zc7x1ZJ#Y(C0iJpMT&dME<&|x(2hip)3hKoIh7NXOZ(AQu}9)d17$jGntT zL$(*Rm~q9Hp;r5V?_i@LWO9BXB|E-d%WYb9&iwUd{B!&|UN|{{iLZW-LY4 zX~Ti9IL7vxS0AM`kX+!LeCiCwemDqm=2^ONn3p1L4sK_#IZi)*r_x*Z`*`3>hXga%@bz0dsxL67r)EsYaYrsN zJpF diff --git a/desktop/src-tauri/icons/ios/AppIcon-20x20@2x.png b/desktop/src-tauri/icons/ios/AppIcon-20x20@2x.png deleted file mode 100644 index 75ddbc7f40fee5313a568bc082356272d3fbb93d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2178 zcmV-|2z~d7P)AG%1i{0voq6kt-GuPb6 zS}x|785oaZv51+eS%mc2?E+tW5TVMQQA2Aj|OQnU9B}n12rsphIDQDG&%Rl4INV4TL z3G>?kR#ie2WLHaK)WgV=Z-L#NVyTG1^uzJdH+04s5QR9;yQ6)^B_{gscj32ED8`L> zG+NQfUsqVT5@TtOvOz|`%L)s!Y=@BuD3n_8!sul^_`Ly91CU8%T3M}y^L@}!9?Yvk zwCXKdbmZ$fv~H2Ntck^|3YY&J;=<_wQ?G?)lhWahYQr+yTG4qF&-WS(tZv4{8AGN3 zd2lMhVorpr07Zxt34Ht>>TP0v+|JJBq?wBohSM^L|EftGNW1&X(dp$h(^G#@K)8x{~sG03( zCZRfI)|9s@aLghvPzXY-%+=3@%ofK~^)w6$3qBo=Ck)7rdt7|%iB3etsKVZcmBhG` zWUo!~vio5{Ma3AG#+I;kU&a`8((FUF|2w{fU{M)R<)fv`LGRuST;D1;bvc7nk;e9s zEOvjY1%E%afaVU@*sg}OKEN^;dO6^4r{*#I$sD?ee8YlttPuYAgK5lMEKmxe_tYv| z(iP~~O8M=}T^K&vW@0f-^di~d{^RXFNz(yE^-wv8OnJ7)SS>xul0H?op1us8+!={wP-OMI$ZqxQAY`xbxsm;I0aZ9RtZS{>fEoV@yfF^ki?`zEK;Q+kf^ONv2}GA zMtJ2nvp6z*PYGB$x(9s{8d+AV5rB#S#z_o{+G4A$Vx5deNUeyb`rOpwtO}$~CNhk< z3e%UC648lLt>%&GpkVft@j`2iXjCN0L8$_tAf-h(_T8P>_vtP6+1M8JI7(HI8i1^H z6Pu*a4<6fG;o5XePb^W4hG?oyD)mKz#8A2riy+9y*!7Vv1I_@GqQsywKMc@PVsc#4 zqJ>3e7&`LJA@sk$&9YY&gO^^OBO}~6H0WXrP#LAMv6ZD53)2Di9@$k2t#TGjNu+K- z2^ZlCcPh5A;0<*2W^we}Lpb=z-R8X%9ES_9edF>9F8$?(=@Yr-ZvbGFG?U77&xOSZ z1N%1N@QDHJ_|T@L_E!3ci#)eZLB4=JhkLN^!Mjn&M`+#bqyK#!@LQaUDq`c1NTW^s z>FG)2ZwAP9`quVF0J%AktS1T_cI87)?7_%q`pX4Z6GN;{(@@aqs&`iodp_Dz`F*S_ z>U2yA-SOyn@z*)Lc=B~*+9aYl+PKu|#9eG`d8vR0zO&naGwO}>nuoVi*TaoyU|EQY zc7x1ZJ#Y(C0iJpMT&dME<&|x(2hip)3hKoIh7NXOZ(AQu}9)d17$jGntT zL$(*Rm~q9Hp;r5V?_i@LWO9BXB|E-d%WYb9&iwUd{B!&|UN|{{iLZW-LY4 zX~Ti9IL7vxS0AM`kX+!LeCiCwemDqm=2^ONn3p1L4sK_#IZi)*r_x*Z`*`3>hXga%@bz0dsxL67r)EsYaYrsN zJpF diff --git a/desktop/src-tauri/icons/ios/AppIcon-20x20@3x.png b/desktop/src-tauri/icons/ios/AppIcon-20x20@3x.png deleted file mode 100644 index db55a232fb3133bea430dd819cfa9ffb86749498..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3224 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 diff --git a/desktop/src-tauri/icons/ios/AppIcon-29x29@2x-1.png b/desktop/src-tauri/icons/ios/AppIcon-29x29@2x-1.png deleted file mode 100644 index 1c1db0aac56c3c8a49cf7330a5c742772c5a1ddb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3126 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 QNdN!<07*qoM6N<$g8qyZ-~a#s diff --git a/desktop/src-tauri/icons/ios/AppIcon-29x29@2x.png b/desktop/src-tauri/icons/ios/AppIcon-29x29@2x.png deleted file mode 100644 index 1c1db0aac56c3c8a49cf7330a5c742772c5a1ddb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3126 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 QNdN!<07*qoM6N<$g8qyZ-~a#s diff --git a/desktop/src-tauri/icons/ios/AppIcon-29x29@3x.png b/desktop/src-tauri/icons/ios/AppIcon-29x29@3x.png deleted file mode 100644 index fd5393ef4bc5ac1afa795237d2cee1b3e1f942bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5010 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 diff --git a/desktop/src-tauri/icons/ios/AppIcon-40x40@1x.png b/desktop/src-tauri/icons/ios/AppIcon-40x40@1x.png deleted file mode 100644 index 75ddbc7f40fee5313a568bc082356272d3fbb93d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2178 zcmV-|2z~d7P)AG%1i{0voq6kt-GuPb6 zS}x|785oaZv51+eS%mc2?E+tW5TVMQQA2Aj|OQnU9B}n12rsphIDQDG&%Rl4INV4TL z3G>?kR#ie2WLHaK)WgV=Z-L#NVyTG1^uzJdH+04s5QR9;yQ6)^B_{gscj32ED8`L> zG+NQfUsqVT5@TtOvOz|`%L)s!Y=@BuD3n_8!sul^_`Ly91CU8%T3M}y^L@}!9?Yvk zwCXKdbmZ$fv~H2Ntck^|3YY&J;=<_wQ?G?)lhWahYQr+yTG4qF&-WS(tZv4{8AGN3 zd2lMhVorpr07Zxt34Ht>>TP0v+|JJBq?wBohSM^L|EftGNW1&X(dp$h(^G#@K)8x{~sG03( zCZRfI)|9s@aLghvPzXY-%+=3@%ofK~^)w6$3qBo=Ck)7rdt7|%iB3etsKVZcmBhG` zWUo!~vio5{Ma3AG#+I;kU&a`8((FUF|2w{fU{M)R<)fv`LGRuST;D1;bvc7nk;e9s zEOvjY1%E%afaVU@*sg}OKEN^;dO6^4r{*#I$sD?ee8YlttPuYAgK5lMEKmxe_tYv| z(iP~~O8M=}T^K&vW@0f-^di~d{^RXFNz(yE^-wv8OnJ7)SS>xul0H?op1us8+!={wP-OMI$ZqxQAY`xbxsm;I0aZ9RtZS{>fEoV@yfF^ki?`zEK;Q+kf^ONv2}GA zMtJ2nvp6z*PYGB$x(9s{8d+AV5rB#S#z_o{+G4A$Vx5deNUeyb`rOpwtO}$~CNhk< z3e%UC648lLt>%&GpkVft@j`2iXjCN0L8$_tAf-h(_T8P>_vtP6+1M8JI7(HI8i1^H z6Pu*a4<6fG;o5XePb^W4hG?oyD)mKz#8A2riy+9y*!7Vv1I_@GqQsywKMc@PVsc#4 zqJ>3e7&`LJA@sk$&9YY&gO^^OBO}~6H0WXrP#LAMv6ZD53)2Di9@$k2t#TGjNu+K- z2^ZlCcPh5A;0<*2W^we}Lpb=z-R8X%9ES_9edF>9F8$?(=@Yr-ZvbGFG?U77&xOSZ z1N%1N@QDHJ_|T@L_E!3ci#)eZLB4=JhkLN^!Mjn&M`+#bqyK#!@LQaUDq`c1NTW^s z>FG)2ZwAP9`quVF0J%AktS1T_cI87)?7_%q`pX4Z6GN;{(@@aqs&`iodp_Dz`F*S_ z>U2yA-SOyn@z*)Lc=B~*+9aYl+PKu|#9eG`d8vR0zO&naGwO}>nuoVi*TaoyU|EQY zc7x1ZJ#Y(C0iJpMT&dME<&|x(2hip)3hKoIh7NXOZ(AQu}9)d17$jGntT zL$(*Rm~q9Hp;r5V?_i@LWO9BXB|E-d%WYb9&iwUd{B!&|UN|{{iLZW-LY4 zX~Ti9IL7vxS0AM`kX+!LeCiCwemDqm=2^ONn3p1L4sK_#IZi)*r_x*Z`*`3>hXga%@bz0dsxL67r)EsYaYrsN zJpF diff --git a/desktop/src-tauri/icons/ios/AppIcon-40x40@2x-1.png b/desktop/src-tauri/icons/ios/AppIcon-40x40@2x-1.png deleted file mode 100644 index 4749ab8f6856918a50870ba0770631838d4691f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4455 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 A*Z=?k diff --git a/desktop/src-tauri/icons/ios/AppIcon-512@2x.png b/desktop/src-tauri/icons/ios/AppIcon-512@2x.png deleted file mode 100644 index 93f5ad35c9348b5dbf0a375bcd0b19f66f09df7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205902 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 O!_7|0 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%0D-R%=GG!(+mqv+$w4>T#g{WHdXnX1UDs9ma=*m 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 A*Z=?k diff --git a/desktop/src-tauri/icons/ios/AppIcon-60x60@3x.png b/desktop/src-tauri/icons/ios/AppIcon-60x60@3x.png deleted file mode 100644 index 7a9168007878cbba8834495327c7a6ab480ae558..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11719 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 KOI1sl1phCqR78#d diff --git a/desktop/src-tauri/icons/ios/AppIcon-76x76@1x.png b/desktop/src-tauri/icons/ios/AppIcon-76x76@1x.png deleted file mode 100644 index 7a7f1c8581902ec79881c7a7a23ea407843edc61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4229 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 bD~~?{F`2?|#D7mm00000NkvXXu0mjfRbV=n diff --git a/desktop/src-tauri/icons/ios/AppIcon-76x76@2x.png b/desktop/src-tauri/icons/ios/AppIcon-76x76@2x.png deleted file mode 100644 index e2e948e9d3860e9e96922d1d5141089c135de79e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9397 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 diff --git a/desktop/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png b/desktop/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png deleted file mode 100644 index aa326c753feb6ed8bd0bf5b124fe68e820a024e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10895 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 T_4*Gqg^&=D75*!z7x2FTKysHx diff --git a/desktop/src-tauri/icons/pending.png b/desktop/src-tauri/icons/pending.png deleted file mode 100644 index 7b12f4ad73ced48dcd0b3fe7fc3177605311c5ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 999 zcmV*|i3Kc4p2@eI~=q-XU#C_?mdmb84s7t>d|GO=c zT1ufM{X^f!r_HCjKQSg&;OI3TDGv{YaKq(0k$fx)y}$PyA20#NRzNJ?P$BlE8|aB- zrlkd7aUNKh1H{VkW0z#Z_u`A@C@b5VxdSeNw zEnX4MgYzzM)&ctAfXF-e*b~=k!vRhT(9cyLALXkJT70z@k)H(rE`XEs!JjS9$F|G< z$gO}TAL6rg16uvoYGnN)z*YEtI#>-SC2}c1w-NG3(hcUtzw0Z-kxxMKf6k(P!VNAf zyq(9L^3vEvZ24)BCphQLWNw8Ggj!}MGFL!{NnoEoe|v2@yg<`7 zK9i1$tgkohw8;~cL0MY1ufwzzR!X!!V%M28+PHwSVq*ngA`V7a6_68lhwVxYGe=@D zkEgr^MgCbn3aV@wk$@&G{(FFDpJ6oLFhCg6}Ic9F*bVoBbOUy(eS)sE~8MQeT#uj z0ez7Q6-q-Y=`mjFY@0YzAVg_Mk{#yLrZGkZMEOIu`g&Uu2C@}?n8uhDP&j7G9JVa< zV%cKMrfG~(0hT`4G664ZA9Q-dTt>mDfKKT=G`W#FUCbOz`t>H3?97&4TEnQPaKM&{ z_pHH+1;N^pZCvIt_4N(D^Hg42o?T8bs8mSwx%&)vY-2MIGOv%vY)?})oN0nGPOq%L zmo+|90p_G!M*3r_^f47AIVrXu09W65tw>*PbpOKUK z0Vlrf7rzpTF6%85n5X0j(3DSrNq zVzvu-Fp@aGp&^MBYA|X_%oS@|d?G0LP(42tw1n|;Eq7T3YihF{l7oY(V z@@MaMW;cdFT%&FI))P@4A1F8xr zsEk+X&~+OT+w|*P=J42V?6e^P%&ow)ldo@y@EZVChj_4Q@#c^1-On%wW>(<&_g39i z>X3+6^+bq(g#w6t4j@M#VF3y=y^;z*x}Y2f)QCQV0d17>rfQSa!K{kJR-krzR1r?$ z0}*(yC$I#F)m0*2ydxY1vfl@Jdke~yh6v&(nHwC~jlB-UKr97nr>!cEw$aI^?tThUNqvwM`Q&Id3DMz!&bMRRJ8Sz0Pli()$w*CmJ*Q^V7I|h;X;!q z|F+iF5+m{ zd~Z0EnDI#IK`LOwt*jU>Xt+#6kPB_;c{sO831Vfuwon_sGJZEG*QxTzFRs*(&+CC= zvF;}lv;$TCLb3Rx(+?ACSNvpx*qMh?RDk0ECb>*OitLg>kOC%=k`hwGebM8a)CDMj z`XQB~0uyVu{bc+VP;jnClisERH5!dC;J2TQuLATEw0V@HG!-ywqrx*k8D9mYgU5QL z0z9oakb|KamEkfCz6#hoT+)%|6iBi^fMtV=ey$0ais3RHA=#+ za-kL3=E=8TToZ_L8LZNBY698oQ>WsFFWVQ}yHA5;!z(g$_w}S~k!8dJts%Rn%|g~c z2on!gfNN3&+2mMoI-SKTL38sO+_j^~YuXXIb&*mDnRh+{w>r4szPetF64K1=^@gCU z*9=AU#uimYXx%rqa+OMQiJoV9ud(G)V{0eD#+HXkC3M9^weq}y%>m0kKW_HYE{naW zP#a31j@7Gx=Mx&88ZBz_zT?%x$oK=e7yhw002ovPDHLkV1n55 B_N4#- diff --git a/desktop/src-tauri/icons/stopped.png b/desktop/src-tauri/icons/stopped.png deleted file mode 100644 index 8531be83076fca48a3494da7ab4814fb33a718a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1054 zcmV+(1mXLMP)6p^`r--Pj%P%(pw9*_jaK$dMz*EFmZ*99vecCuLKTSkjs- zzE$-MGcc zL?mP!A-GLod?jV$0nGK7=fvF5fnA2qIM2o+0G}s+l9ORE!@5-09@<(u-26AR6_(Jv&T3atGLWZzb@;PTP2(PEuJTNQ^k5 z9Pv5JBxfWbsNcl6FazU(;ArC6B8yF; z0za{le?0#ujMlOL*D#hd2%RR3gl%J14qIODAvr?=azX;P0$~KabNNW&kvT?m8*79} z0{s~haE7|Mo;Dziz#;zh{fcQ8==r)ipq!Xw%uz_|Hb&I2v%*lf5VlDsB#f#S#v28A zrhsnG7By&@WQ+vrw%rjVY#9H?pD0V54;N0fVT(yFG>p1hy~o()!aHlAV*x0wcEaQ$ zv(%Tyi(?*Y4=R<+YJ!nYMd#VUr^PVY$V8^Jc#ZLlSH#KSU4V|W;p*${DEUYNb$id& zf_C7KKe+WVO%g$S1-hWKZbx_PVjU$a%H3jLYdaj5Pp3ozbDoa$hM+UfbFm04+IH8~ z?iwaWa!Gq9f|c(L8(VGzI^#T>u(fD$)2ZM!xYBGb!smmKsq|niENtGy7|mU)+LMJX zp~)-w(XjxLBz1F;TVQ<9+=b7>ZQ`zcfUytzN7l+Z?}FE{!}TQXbwoM@3mO9xS1TY= z5OM<@j3mz?%Og?7i8SH!qy)Slyyi_b15i)(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.to_string().as_ref()) - } -} - -#[tauri::command] -pub fn write_action_log( - app_handle: AppHandle, - action_id: String, - data: String, -) -> Result<(), ActionLogError> { - let mut path = get_actions_dir(&app_handle).map_err(|_| ActionLogError::NoDir)?; - path.push(format!("{}.log", &action_id)); - - let mut file = OpenOptions::new() - .create(true) - .append(true) - .open(path) - .map_err(ActionLogError::FileOpen)?; - - file.write_all(format!("{}\n", data).as_bytes()) - .map_err(ActionLogError::Write)?; - - Ok(()) -} - -#[tauri::command] -pub fn get_action_logs( - app_handle: AppHandle, - action_id: String, -) -> Result, ActionLogError> { - let mut path = get_actions_dir(&app_handle).map_err(|_| ActionLogError::NoDir)?; - path.push(format!("{}.log", &action_id)); - - let lines = fs::read_to_string(path) - .map_err(ActionLogError::FileOpen)? - .lines() - .map(|s| s.to_string()) - .collect(); - - Ok(lines) -} - -#[tauri::command] -pub fn get_action_log_file( - app_handle: AppHandle, - action_id: String, -) -> Result { - let mut path = get_actions_dir(&app_handle).map_err(|_| ActionLogError::NoDir)?; - path.push(format!("{}.log", &action_id)); - - Ok(path.to_string_lossy().into()) -} - -pub fn setup(app_handle: &AppHandle) -> anyhow::Result<()> { - let dir_path = get_actions_dir(app_handle)?; - let _ = fs::create_dir_all(&dir_path); // Make sure we have the action logs dir - - // delete all actions older than a month - let now = SystemTime::now(); - let dir = fs::read_dir(dir_path); - let paths_to_delete = dir?.filter_map(|r| { - if !r.is_ok() { - return None; - } - let entry = r.unwrap(); - let path = entry.path(); - - let metadata = entry.metadata(); - if !metadata.is_ok() { - return None; - }; - let created = metadata.unwrap().created(); - if !created.is_ok() { - return None; - }; - - let elapsed = now.duration_since(created.unwrap()); - if !elapsed.is_ok() || elapsed.unwrap() < THIRTY_DAYS { - return None; - } - return Some(path); - }); - - for path in paths_to_delete { - info!("Deleting {:?}", path); - let _ = fs::remove_file(path); - } - - Ok(()) -} - -fn get_actions_dir(app_handle: &AppHandle) -> anyhow::Result { - let mut dir_path = app_handle - .path() - .app_data_dir() - .context("App data dir not found")?; - dir_path.push(ACTION_LOGS_DIR); - - Ok(dir_path) -} diff --git a/desktop/src-tauri/src/commands.rs b/desktop/src-tauri/src/commands.rs deleted file mode 100644 index 43f318452..000000000 --- a/desktop/src-tauri/src/commands.rs +++ /dev/null @@ -1,10 +0,0 @@ -mod config; -pub mod constants; -pub use config::{DevsyCommandConfig, DevsyCommandError}; -pub use constants::DEVSY_BINARY_NAME; - -pub mod delete_provider; -pub mod delete_pro_instance; -pub mod list_workspaces; -pub mod list_pro_instances; -pub mod start_daemon; diff --git a/desktop/src-tauri/src/commands/config.rs b/desktop/src-tauri/src/commands/config.rs deleted file mode 100644 index 70470904e..000000000 --- a/desktop/src-tauri/src/commands/config.rs +++ /dev/null @@ -1,72 +0,0 @@ -use std::collections::HashMap; - -use tauri::AppHandle; -use tauri_plugin_shell::{process::Command, ShellExt}; -use thiserror::Error; - -use crate::commands::constants::DEVSY_BINARY_NAME; - -use super::constants::DEVSY_UI_ENV_VAR; - -pub struct CommandConfig<'a> { - pub(crate) binary_name: &'static str, - pub(crate) args: Vec<&'a str>, -} - -impl<'a> CommandConfig<'_> { - pub fn binary_name(&self) -> &'static str { - self.binary_name - } - - pub fn args(&self) -> &Vec<&str> { - &self.args - } -} - -#[derive(Error, Debug)] -pub enum DevsyCommandError { - #[error("unable to parse command response")] - Parse(#[from] serde_json::Error), - #[error("unable to find sidecar binary")] - Sidecar, - #[error("unable to collect output from command")] - Output, - #[error("command failed")] - Failed(#[from] tauri_plugin_shell::Error), - #[error("command exited with non-zero code")] - Exit, - #[error("error")] - Any(#[from] anyhow::Error) -} -impl serde::Serialize for DevsyCommandError { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.to_string().as_ref()) - } -} -pub trait DevsyCommandConfig { - fn config(&self) -> CommandConfig<'_> { - CommandConfig { - binary_name: DEVSY_BINARY_NAME, - args: vec![], - } - } - fn exec_blocking(self, app_handle: &AppHandle) -> Result; - - fn new_command(&self, app_handle: &AppHandle) -> Result { - let config = self.config(); - let env_vars: HashMap = - HashMap::from([(DEVSY_UI_ENV_VAR.into(), "true".into())]); - - let cmd = app_handle - .shell() - .sidecar(config.binary_name()) - .map_err(|_| DevsyCommandError::Sidecar)? - .envs(env_vars) - .args(config.args()); - - Ok(cmd) - } -} diff --git a/desktop/src-tauri/src/commands/constants.rs b/desktop/src-tauri/src/commands/constants.rs deleted file mode 100644 index b59e6c2f6..000000000 --- a/desktop/src-tauri/src/commands/constants.rs +++ /dev/null @@ -1,19 +0,0 @@ -// Binaries -pub const DEVSY_BINARY_NAME: &str = "devsy"; - -// Commands -pub(super) const DEVSY_COMMAND_LIST: &str = "list"; -pub(super) const DEVSY_COMMAND_PROVIDER: &str = "provider"; -pub(super) const DEVSY_COMMAND_PRO: &str = "pro"; -pub(super) const DEVSY_COMMAND_DELETE: &str = "delete"; -pub(super) const DEVSY_COMMAND_DAEMON: &str = "daemon"; -pub(super) const DEVSY_COMMAND_START: &str = "start"; - -// Flags -pub(super) const FLAG_OUTPUT_JSON: &str = "--output=json"; -pub(super) const FLAG_HOST: &str = "--host"; -pub(super) const FLAG_DEBUG: &str = "--debug"; -pub(super) const FLAG_IGNORE_NOT_FOUND: &str = "--ignore-not-found"; - -// Env vars -pub(super) const DEVSY_UI_ENV_VAR: &str = "DEVSY_UI"; diff --git a/desktop/src-tauri/src/commands/delete_pro_instance.rs b/desktop/src-tauri/src/commands/delete_pro_instance.rs deleted file mode 100644 index f6dd8829a..000000000 --- a/desktop/src-tauri/src/commands/delete_pro_instance.rs +++ /dev/null @@ -1,40 +0,0 @@ -use tauri::AppHandle; - -use super::{ - config::{CommandConfig, DevsyCommandConfig, DevsyCommandError}, - constants::{ - DEVSY_BINARY_NAME, DEVSY_COMMAND_DELETE, DEVSY_COMMAND_PRO, FLAG_IGNORE_NOT_FOUND, - }, -}; - -pub struct DeleteProInstanceCommand { - pro_id: String, -} -impl DeleteProInstanceCommand { - pub fn new(pro_id: String) -> Self { - DeleteProInstanceCommand { pro_id } - } -} -impl DevsyCommandConfig<()> for DeleteProInstanceCommand { - fn config(&self) -> CommandConfig<'_> { - CommandConfig { - binary_name: DEVSY_BINARY_NAME, - args: vec![ - DEVSY_COMMAND_PRO, - DEVSY_COMMAND_DELETE, - &self.pro_id, - FLAG_IGNORE_NOT_FOUND, - ], - } - } - - fn exec_blocking(self, app_handle: &AppHandle) -> Result<(), DevsyCommandError> { - let cmd = self.new_command(app_handle)?; - - tauri::async_runtime::block_on(async move { cmd.status().await }) - .map_err(DevsyCommandError::Failed)? - .success() - .then_some(()) - .ok_or_else(|| DevsyCommandError::Exit) - } -} diff --git a/desktop/src-tauri/src/commands/delete_provider.rs b/desktop/src-tauri/src/commands/delete_provider.rs deleted file mode 100644 index e79580689..000000000 --- a/desktop/src-tauri/src/commands/delete_provider.rs +++ /dev/null @@ -1,37 +0,0 @@ -use tauri::AppHandle; - -use super::{ - config::{CommandConfig, DevsyCommandConfig, DevsyCommandError}, - constants::{DEVSY_BINARY_NAME, DEVSY_COMMAND_DELETE, DEVSY_COMMAND_PROVIDER}, -}; - -pub struct DeleteProviderCommand { - provider_id: String, -} -impl DeleteProviderCommand { - pub fn new(provider_id: String) -> Self { - DeleteProviderCommand { provider_id } - } -} -impl DevsyCommandConfig<()> for DeleteProviderCommand { - fn config(&self) -> CommandConfig<'_> { - CommandConfig { - binary_name: DEVSY_BINARY_NAME, - args: vec![ - DEVSY_COMMAND_PROVIDER, - DEVSY_COMMAND_DELETE, - &self.provider_id, - ], - } - } - - fn exec_blocking(self, app_handle: &AppHandle) -> Result<(), DevsyCommandError> { - let cmd = self.new_command(app_handle)?; - - tauri::async_runtime::block_on(async move { cmd.status().await }) - .map_err(DevsyCommandError::Failed)? - .success() - .then_some(()) - .ok_or_else(|| DevsyCommandError::Exit) - } -} diff --git a/desktop/src-tauri/src/commands/list_pro_instances.rs b/desktop/src-tauri/src/commands/list_pro_instances.rs deleted file mode 100644 index 80c87139d..000000000 --- a/desktop/src-tauri/src/commands/list_pro_instances.rs +++ /dev/null @@ -1,47 +0,0 @@ -use tauri::AppHandle; -use crate::resource_watcher::ProInstance; - -use super::{ - config::{CommandConfig, DevsyCommandConfig, DevsyCommandError}, - constants::{DEVSY_BINARY_NAME, DEVSY_COMMAND_LIST, DEVSY_COMMAND_PRO, FLAG_OUTPUT_JSON}, -}; - -pub struct ListProInstancesCommand {} -impl ListProInstancesCommand { - pub fn new() -> Self { - ListProInstancesCommand {} - } - - fn deserialize(&self, d: Vec) -> Result, DevsyCommandError> { - serde_json::from_slice(&d).map_err(DevsyCommandError::Parse) - } -} -impl DevsyCommandConfig> for ListProInstancesCommand { - fn config(&self) -> CommandConfig<'_> { - CommandConfig { - binary_name: DEVSY_BINARY_NAME, - args: vec![DEVSY_COMMAND_PRO, DEVSY_COMMAND_LIST, FLAG_OUTPUT_JSON], - } - } - - fn exec_blocking(self, app_handle: &AppHandle) -> Result, DevsyCommandError> { - let cmd = self.new_command(app_handle)?; - - let output = tauri::async_runtime::block_on(async move { cmd.output().await }) - .map_err(|_| DevsyCommandError::Output)?; - - self.deserialize(output.stdout) - } -} -impl ListProInstancesCommand { - pub async fn exec( - self, - app_handle: &AppHandle, - ) -> Result, DevsyCommandError> { - let cmd = self.new_command(app_handle)?; - - let output = cmd.output().await.map_err(|_| DevsyCommandError::Output)?; - - self.deserialize(output.stdout) - } -} diff --git a/desktop/src-tauri/src/commands/list_workspaces.rs b/desktop/src-tauri/src/commands/list_workspaces.rs deleted file mode 100644 index 786d3d851..000000000 --- a/desktop/src-tauri/src/commands/list_workspaces.rs +++ /dev/null @@ -1,46 +0,0 @@ -use tauri::AppHandle; - -use crate::resource_watcher::Workspace; - -use super::{ - config::{CommandConfig, DevsyCommandConfig, DevsyCommandError}, - constants::{DEVSY_BINARY_NAME, DEVSY_COMMAND_LIST, FLAG_OUTPUT_JSON}, -}; - -pub struct ListWorkspacesCommand {} -impl ListWorkspacesCommand { - pub fn new() -> Self { - ListWorkspacesCommand {} - } - - fn deserialize(&self, d: Vec) -> Result, DevsyCommandError> { - serde_json::from_slice(&d).map_err(DevsyCommandError::Parse) - } -} -impl DevsyCommandConfig> for ListWorkspacesCommand { - fn config(&self) -> CommandConfig<'_> { - CommandConfig { - binary_name: DEVSY_BINARY_NAME, - args: vec![DEVSY_COMMAND_LIST, FLAG_OUTPUT_JSON], - } - } - - fn exec_blocking(self, app_handle: &AppHandle) -> Result, DevsyCommandError> { - let cmd = self.new_command(app_handle)?; - - let output = tauri::async_runtime::block_on(async move { cmd.output().await }) - .map_err(|_| DevsyCommandError::Output)?; - - self.deserialize(output.stdout) - } -} - -impl ListWorkspacesCommand { - pub async fn exec(self, app_handle: &AppHandle) -> Result, DevsyCommandError> { - let cmd = self.new_command(app_handle)?; - - let output = cmd.output().await.map_err(|_| DevsyCommandError::Output)?; - - self.deserialize(output.stdout) - } -} diff --git a/desktop/src-tauri/src/commands/start_daemon.rs b/desktop/src-tauri/src/commands/start_daemon.rs deleted file mode 100644 index 5355adb6a..000000000 --- a/desktop/src-tauri/src/commands/start_daemon.rs +++ /dev/null @@ -1,55 +0,0 @@ -use tauri::AppHandle; -use tauri_plugin_shell::process::Command; - -use super::{ - config::{CommandConfig, DevsyCommandConfig, DevsyCommandError}, - constants::{DEVSY_BINARY_NAME, DEVSY_COMMAND_PRO, DEVSY_COMMAND_DAEMON, DEVSY_COMMAND_START, FLAG_DEBUG, FLAG_HOST}, -}; - -pub struct StartDaemonCommand { - host_flag: String, - debug_flag: String, -} -impl StartDaemonCommand { - pub fn new(host: String, debug: bool) -> Self { - let debug_flag = match debug { - true => format!("{}=true", FLAG_DEBUG), - false => "".to_string(), - }; - - return StartDaemonCommand { - host_flag: format!("{}={}", FLAG_HOST, host), - debug_flag: debug_flag.to_string(), - }; - } -} - -impl DevsyCommandConfig<()> for StartDaemonCommand { - fn exec_blocking(self, app_handle: &AppHandle) -> Result<(), DevsyCommandError> { - let cmd = self.new_command(app_handle)?; - - tauri::async_runtime::block_on(async move { cmd.output().await }) - .map_err(|_| DevsyCommandError::Output)?; - - return Ok(()); - } - - fn config(&self) -> CommandConfig<'_> { - return CommandConfig { - binary_name: DEVSY_BINARY_NAME, - args: vec![ - DEVSY_COMMAND_PRO, - DEVSY_COMMAND_DAEMON, - DEVSY_COMMAND_START, - &self.host_flag, - &self.debug_flag, - ], - }; - } -} - -impl StartDaemonCommand { - pub fn command(self, app_handle: &AppHandle) -> Result { - return self.new_command(app_handle); - } -} diff --git a/desktop/src-tauri/src/community_contributions.rs b/desktop/src-tauri/src/community_contributions.rs deleted file mode 100644 index ce0d2601e..000000000 --- a/desktop/src-tauri/src/community_contributions.rs +++ /dev/null @@ -1,24 +0,0 @@ -use crate::AppState; - -const RAW_COMMUNITY_YAML: &str = include_str!("../../../community.yaml"); - -#[derive(Debug, PartialEq, Clone, serde::Serialize, serde::Deserialize)] -pub struct CommunityContributions { - providers: Vec, -} - -#[derive(Debug, PartialEq, Clone, serde::Serialize, serde::Deserialize)] -struct CommunityProvider { - repository: String, -} - -pub fn init() -> anyhow::Result { - serde_yaml::from_str(RAW_COMMUNITY_YAML).map_err(|e| anyhow::anyhow!(e)) -} - -#[tauri::command] -pub fn get_contributions(state: tauri::State<'_, AppState>) -> Result { - let community_contributions = state.community_contributions.lock().unwrap(); - - Ok(community_contributions.clone()) -} diff --git a/desktop/src-tauri/src/custom_protocol.rs b/desktop/src-tauri/src/custom_protocol.rs deleted file mode 100644 index 646a9cc58..000000000 --- a/desktop/src-tauri/src/custom_protocol.rs +++ /dev/null @@ -1,476 +0,0 @@ -use crate::ui_messages::{ - send_ui_message, ImportWorkspaceMsg, OpenWorkspaceMsg, SetupProMsg, - UiMessage, -}; -#[cfg(target_os = "linux")] -use crate::ui_messages::{ShowToastMsg, ToastStatus}; -use crate::AppState; -use log::{info, warn}; -use serde::{Deserialize, Serialize}; -#[cfg(target_os = "linux")] -use std::env; -use tauri::{AppHandle, Manager, State}; -use tauri_plugin_deep_link::DeepLinkExt; -use thiserror::Error; -use url::Url; - -// Should match the one from "tauri.config.json" and "Info.plist" -const APP_IDENTIFIER: &str = "sh.devsy.devsy"; - -pub struct CustomProtocol; - -pub struct Request { - host: String, - query: String, -} - -pub struct UrlParser {} - -impl UrlParser { - const ALLOWED_METHODS: [&'static str; 3] = ["open", "import", "pro"]; - - fn get_host(url: &Url) -> String { - url.host_str().unwrap_or("no host").to_string() - } - - fn parse_raw_url(url_scheme: &str) -> Result { - Url::parse(url_scheme).map_err(|_| ParseError::InvalidQuery(url_scheme.to_string())) - } - - fn is_allowed_method(host_str: &str) -> bool { - Self::ALLOWED_METHODS.contains(&host_str) - } - - fn parse_query(url: &Url) -> String { - url.query().unwrap_or("").to_string() - } - - pub fn parse(url_scheme: &str) -> Result { - let url = Self::parse_raw_url(url_scheme)?; - let host_str = Self::get_host(&url); - - if !Self::is_allowed_method(&host_str) { - return Err(ParseError::UnsupportedHost(host_str)); - } - return Ok(Request { - host: host_str, - query: Self::parse_query(&url), - }); - } -} - -pub struct OpenHandler {} - -impl OpenHandler { - pub async fn handle(msg: Result, app_state: State<'_, AppState>) { - match msg { - Ok(msg) => Self::handle_ok(msg, app_state).await, - Err(err) => Self::handle_error(err, app_state).await, - } - } - - async fn handle_ok(msg: OpenWorkspaceMsg, app_state: State<'_, AppState>) { - // try to send to UI if ready, otherwise buffer and let ui_ready handle - send_ui_message( - app_state, - UiMessage::OpenWorkspace(msg), - "Failed to broadcast custom protocol message", - ) - .await; - } - - async fn handle_error(err: ParseError, app_state: State<'_, AppState>) { - #[cfg(not(target_os = "windows"))] - send_ui_message( - app_state, - UiMessage::CommandFailed(err), - "Failed to broadcast invalid custom protocol message", - ) - .await; - } -} - -pub struct ImportHandler {} - -impl ImportHandler { - pub async fn handle( - msg: Result, - app_state: State<'_, AppState>, - ) { - match msg { - Ok(msg) => Self::handle_ok(msg, app_state).await, - Err(err) => Self::handle_error(err, app_state).await, - } - } - - async fn handle_ok(msg: ImportWorkspaceMsg, app_state: State<'_, AppState>) { - // try to send to UI if ready, otherwise buffer and let ui_ready handle - send_ui_message( - app_state, - UiMessage::ImportWorkspace(msg), - "Failed to broadcast custom protocol message", - ) - .await; - } - - async fn handle_error(err: ParseError, app_state: State<'_, AppState>) { - #[cfg(not(target_os = "windows"))] - send_ui_message( - app_state, - UiMessage::CommandFailed(err), - "Failed to broadcast invalid custom protocol message", - ) - .await; - } -} - -pub struct ProHandler {} - -impl ProHandler { - pub async fn handle(msg: Result, app_state: State<'_, AppState>) { - match msg { - Ok(msg) => Self::handle_ok(msg, app_state).await, - Err(err) => Self::handle_error(err, app_state).await, - } - } - - async fn handle_ok(msg: SetupProMsg, app_state: State<'_, AppState>) { - // try to send to UI if ready, otherwise buffer and let ui_ready handle - send_ui_message( - app_state, - UiMessage::SetupPro(msg), - "Failed to broadcast custom protocol message", - ) - .await; - } - - async fn handle_error(err: ParseError, app_state: State<'_, AppState>) { - #[cfg(not(target_os = "windows"))] - send_ui_message( - app_state, - UiMessage::CommandFailed(err), - "Failed to broadcast invalid custom protocol message", - ) - .await; - } -} - -async fn handle_deep_link_url(app_handle: &AppHandle, url: &url::Url) { - info!("App opened with URL: {:?}", url.to_string()); - - let request = UrlParser::parse(&url.to_string()); - let app_state = app_handle.state::(); - if let Err(err) = request { - warn!("Failed to broadcast custom protocol message: {:?}", err); - return; - } - let request = request.unwrap(); - - match request.host.as_str() { - "open" => { - let msg = CustomProtocol::parse(&request); - OpenHandler::handle(msg, app_state).await - } - "import" => { - let msg = CustomProtocol::parse(&request); - ImportHandler::handle(msg, app_state).await - } - "pro" => { - let msg = CustomProtocol::parse(&request); - ProHandler::handle(msg, app_state).await - } - _ => {} - } -} - -impl CustomProtocol { - pub fn new() -> Self { - Self {} - } - - pub fn forward_deep_link() { - #[cfg(target_os = "linux")] - { - use std::{ - fs::{remove_file}, - io::{ErrorKind, Write}, - os::unix::net::{UnixStream} - }; - - let addr = format!("/tmp/{}-deep-link.sock", APP_IDENTIFIER); - - match UnixStream::connect(&addr) { - Ok(mut stream) => { - if let Err(io_err) = stream.write_all(std::env::args().nth(1).unwrap_or_default().as_bytes()) - { - log::error!( - "Error sending message to primary instance: {}", - io_err.to_string() - ); - }; - } - Err(err) => { - log::error!("Error creating socket listener: {}", err.to_string()); - if err.kind() == ErrorKind::ConnectionRefused { - let _ = remove_file(&addr); - } - } - }; - } - - #[cfg(target_os = "windows")] - { - use std::io::Write; - use interprocess::local_socket::{LocalSocketListener, LocalSocketStream}; - - if let Ok(mut conn) = LocalSocketStream::connect(APP_IDENTIFIER) { - if let Err(io_err) = conn.write_all(std::env::args().nth(1).unwrap_or_default().as_bytes()) - { - log::error!( - "Error sending message to primary instance: {}", - io_err.to_string() - ); - }; - let _ = conn.write_all(b"\n"); - } - } - - } - - pub fn setup(&self, app: AppHandle) { - // Handle URLs from cold-start (app launched via deep link) - if let Ok(Some(urls)) = app.deep_link().get_current() { - let app_handle = app.clone(); - tauri::async_runtime::spawn(async move { - for url in urls { - handle_deep_link_url(&app_handle, &url).await; - } - }); - } - - // Handle URLs received while the app is running - let app_handle = app.clone(); - app.deep_link().on_open_url(move |event| { - for url_scheme in event.urls() { - let app_handle = app_handle.clone(); - tauri::async_runtime::block_on(async { - handle_deep_link_url(&app_handle, &url_scheme).await; - }); - } - }); - - // Register all configured URL schemes at runtime (Linux/Windows only; macOS uses Info.plist) - #[cfg(any(target_os = "linux", target_os = "windows"))] - let result = app.deep_link().register_all(); - - #[cfg(target_os = "windows")] - { - if let Err(error) = result { - log::warn!("Custom protocol setup failed on Windows: {}", error); - } - } - - #[cfg(target_os = "linux")] - { - match result { - Ok(..) => {} - Err(error) => { - let is_flatpak = env::var("FLATPAK_ID").is_ok(); - - if !is_flatpak { - let msg = "Either update-desktop-database or xdg-mime are missing. Please make sure they are available on your system"; - log::warn!("Custom protocol setup failed; {}: {}", msg, error); - - tauri::async_runtime::block_on(async { - let app_state = app.state::(); - let show_toast_msg = ShowToastMsg::new( - "Custom protocol handling needs to be configured".to_string(), - msg.to_string(), - ToastStatus::Warning, - ); - if let Err(err) = app_state - .ui_messages - .send(UiMessage::ShowToast(show_toast_msg)) - .await - { - log::error!( - "Failed to broadcast show toast message: {:?}, {}", - err.0, - err - ); - }; - }) - } - } - }; - } - } - - fn parse<'a, Msg>(request: &'a Request) -> Result - where - Msg: Deserialize<'a>, - { - serde_qs::from_str::(&request.query) - .map_err(|_| ParseError::InvalidQuery(request.query.clone())) - } -} - -#[derive(Error, Debug, Clone, Serialize)] -pub enum ParseError { - #[error("Unsupported host: {0}")] - UnsupportedHost(String), - #[error("Unsupported query arguments: {0}")] - InvalidQuery(String), -} - -#[cfg(test)] -mod tests { - mod url_parser { - use super::super::*; - - #[test] - fn should_parse() { - let url_str = "devsy://open?workspace=workspace"; - let request = UrlParser::parse(&url_str).unwrap(); - - assert_eq!(request.host, "open".to_string()); - assert_eq!(request.query, "workspace=workspace".to_string()); - } - - #[test] - fn should_parse_with_empty_query() { - let url_str = "devsy://import"; - let request = UrlParser::parse(&url_str).unwrap(); - - assert_eq!(request.host, "import".to_string()); - assert_eq!(request.query, "".to_string()); - } - - #[test] - #[should_panic] - fn should_fail_on_invalid_method() { - let url_str = "devsy://something"; - let _ = UrlParser::parse(&url_str).unwrap(); - } - - #[test] - #[should_panic] - fn should_fail_on_invalid_scheme() { - let url_str = "invalid-scheme"; - let _ = UrlParser::parse(&url_str).unwrap(); - } - } - - mod custom_handler_open { - use crate::custom_protocol::OpenWorkspaceMsg; - - use super::super::*; - - #[test] - fn should_parse_full() { - let url_str = - "devsy://open?workspace=workspace&provider=provider&source=https://github.com/test123&ide=vscode"; - let request = UrlParser::parse(&url_str).unwrap(); - let got: OpenWorkspaceMsg = CustomProtocol::parse(&request).unwrap(); - - assert_eq!(got.workspace_id, Some("workspace".to_string())); - assert_eq!(got.provider_id, Some("provider".into())); - assert_eq!(got.source, Some("https://github.com/test123".to_string())); - assert_eq!(got.ide, Some("vscode".into())); - } - - #[test] - fn should_parse_workspace() { - let url_str = "devsy://open?workspace=some-workspace"; - let request = UrlParser::parse(&url_str).unwrap(); - let got: OpenWorkspaceMsg = CustomProtocol::parse(&request).unwrap(); - - assert_eq!(got.workspace_id, Some("some-workspace".to_string())); - assert_eq!(got.provider_id, None); - assert_eq!(got.source, None); - assert_eq!(got.ide, None) - } - - #[test] - fn should_parse() { - let url_str = "devsy://open?source=some-source"; - let request = UrlParser::parse(&url_str).unwrap(); - let got: OpenWorkspaceMsg = CustomProtocol::parse(&request).unwrap(); - - assert_eq!(got.workspace_id, None); - assert_eq!(got.provider_id, None); - assert_eq!(got.source, Some("some-source".to_string())); - assert_eq!(got.ide, None) - } - } - - mod custom_handler_import { - use crate::custom_protocol::ImportWorkspaceMsg; - - use super::super::*; - - #[test] - fn should_parse_full() { - let url_str = - "devsy://import?workspace-id=workspace&workspace-uid=uid&devsy-pro-host=devsy.pro&other=other&project=foo"; - let request = UrlParser::parse(&url_str).unwrap(); - - let got: ImportWorkspaceMsg = CustomProtocol::parse(&request).unwrap(); - - assert_eq!(got.workspace_id, "workspace".to_string()); - assert_eq!(got.workspace_uid, "uid".to_string()); - assert_eq!(got.project, "foo".to_string()); - assert_eq!(got.devsy_pro_host, "devsy.pro".to_string()); - assert_eq!(got.options.get("other"), Some(&"other".to_string())); - } - - #[test] - #[should_panic] - fn should_fail_on_missing_workspace_id() { - let url_str = - "devsy://import?workspace-uid=uid&devsy-pro-host=devsy.pro&other=other"; - let request = UrlParser::parse(&url_str).unwrap(); - - let got: Result = CustomProtocol::parse(&request); - got.unwrap(); - } - } - - mod custom_handler_pro_setup { - use crate::custom_protocol::SetupProMsg; - - use super::super::*; - - #[test] - fn should_parse_full() { - let url_str = "devsy://pro/setup?host=foo&access_key=bar"; - let request = UrlParser::parse(&url_str).unwrap(); - - let got: SetupProMsg = CustomProtocol::parse(&request).unwrap(); - - assert_eq!(got.host, "foo".to_string()); - assert_eq!(got.access_key, Option::Some("bar".to_string())); - } - - #[test] - fn should_parse_host() { - let url_str = "devsy://pro/setup?host=localhost%3A8080"; - let request = UrlParser::parse(&url_str).unwrap(); - - let got: SetupProMsg = CustomProtocol::parse(&request).unwrap(); - - assert_eq!(got.host, "localhost:8080".to_string()); - } - - #[test] - #[should_panic] - fn should_fail_on_missing_workspace_id() { - let url_str = - "devsy://import?workspace-uid=uid&devsy-pro-host=devsy.pro&other=other"; - let request = UrlParser::parse(&url_str).unwrap(); - - let got: Result = CustomProtocol::parse(&request); - got.unwrap(); - } - } -} diff --git a/desktop/src-tauri/src/daemon.rs b/desktop/src-tauri/src/daemon.rs deleted file mode 100644 index 8b53900b7..000000000 --- a/desktop/src-tauri/src/daemon.rs +++ /dev/null @@ -1,56 +0,0 @@ -use serde::{Deserialize, Serialize}; -use ts_rs::TS; -use lazy_static::lazy_static; -use tauri::image::Image; - -pub mod client; - -#[derive(Debug, Default, Serialize, Deserialize, Eq, PartialEq, TS)] -#[serde(rename_all = "camelCase", default)] -#[ts(export)] -pub struct DaemonStatus { - pub state: DaemonState, - pub online: bool, - pub login_required: bool, -} - -#[derive(Debug, Default, Eq, PartialEq, Serialize, Deserialize, TS)] -#[serde(rename_all = "lowercase")] -#[ts(export)] -pub enum DaemonState { - Stopped, - #[default] - Pending, - Running, -} -impl DaemonState { - pub fn running_icon() -> Image<'static> { - lazy_static! { - static ref RUNNING_ICON: Image<'static> = - Image::from_bytes(include_bytes!("../icons/running.png")).unwrap(); - } - return RUNNING_ICON.clone(); - } - pub fn stopped_icon() -> Image<'static> { - lazy_static! { - static ref STOPPED_ICON: Image<'static> = - Image::from_bytes(include_bytes!("../icons/stopped.png")).unwrap(); - } - return STOPPED_ICON.clone(); - } - pub fn pending_icon() -> Image<'static> { - lazy_static! { - static ref PENDING_ICON: Image<'static> = - Image::from_bytes(include_bytes!("../icons/pending.png")).unwrap(); - } - return PENDING_ICON.clone(); - } - - pub fn get_icon(&self) -> tauri::image::Image<'_> { - return match self { - DaemonState::Running => Self::running_icon(), - DaemonState::Stopped => Self::stopped_icon(), - DaemonState::Pending => Self::pending_icon(), - }; - } -} diff --git a/desktop/src-tauri/src/daemon/client.rs b/desktop/src-tauri/src/daemon/client.rs deleted file mode 100644 index 09792278a..000000000 --- a/desktop/src-tauri/src/daemon/client.rs +++ /dev/null @@ -1,299 +0,0 @@ -use crate::daemon::DaemonStatus; -use anyhow::anyhow; -use bytes::{Buf, Bytes}; -use http::Uri; -use http_body_util::{BodyExt, Empty}; -use hyper::header; -use log::error; -use pin_project_lite::pin_project; -use serde::de::DeserializeOwned; -use std::{ - io, - path::Path, - pin::Pin, - task::{Context, Poll}, -}; -use tokio::io::AsyncWriteExt; - -pub type Request = hyper::Request; -pub type Response = hyper::Response; -#[derive(Debug)] -pub struct Client { - socket: String, -} -impl Client { - pub fn new(socket: String) -> Client { - return Client { socket }; - } - - pub fn clone(&self) -> Client { - return Client { socket: self.socket.clone() }; - } - - pub async fn status(&self) -> anyhow::Result { - let res = self.get::("/status").await?; - return Ok(res); - } - - pub async fn proxy(&self, mut req: Request) -> anyhow::Result { - let addr = Path::new(&self.socket); - let handshake_stream = HandshakeStream::connect(&addr).await?; - let io = TokioIo::new(handshake_stream); - - let (mut sender, conn) = hyper::client::conn::http1::handshake(io).await?; - tokio::task::spawn(async move { - if let Err(err) = conn.await { - error!("Connection failed: {:?}", err); - } - }); - - let path_and_query = req - .uri() - .path_and_query() - .map(|pq| pq.as_str()) - .unwrap_or(""); - let new_uri = format!("http://localclient.devsy{}", path_and_query); - *req.uri_mut() = new_uri - .parse::() - .map_err(|e| anyhow!("failed to parse new URI: {:?}", e))?; - - req.headers_mut().insert( - header::HOST, - header::HeaderValue::from_static("sh.devsy.devsy.desktop"), - ); - - let res = sender.send_request(req).await?; - return Ok(res); - } - - async fn get(&self, target_path: &str) -> anyhow::Result { - let addr = Path::new(&self.socket); - let handshake_stream = HandshakeStream::connect(&addr).await?; - let io = TokioIo::new(handshake_stream); - - let (mut sender, conn) = hyper::client::conn::http1::handshake(io).await?; - tokio::task::spawn(async move { - if let Err(err) = conn.await { - error!("Connection failed: {:?}", err); - } - }); - - let req = hyper::Request::builder() - .uri(format!("http://localclient.devsy{}", target_path)) - .header(hyper::header::HOST, "sh.devsy.devsy.desktop") - .body(Empty::::new())?; - - let res = sender.send_request(req).await?; - if res.status() != http::StatusCode::OK { - return Err(anyhow!( - "request to {} failed: {}", - target_path, - res.status() - )); - } - - let body = res.collect().await?.aggregate(); - let out: T = serde_json::from_reader(body.reader())?; - - return Ok(out); - } -} - -const DEVSY_PREFIX_BYTE: u8 = 0x01; - -pub struct HandshakeStream { - inner: InnerStream, -} -#[cfg(not(windows))] -type InnerStream = tokio::net::UnixStream; -#[cfg(windows)] -type InnerStream = tokio::net::windows::named_pipe::NamedPipeClient; - -impl HandshakeStream { - pub async fn connect(p: &Path) -> tokio::io::Result { - let inner: InnerStream; - #[cfg(not(windows))] - { - inner = tokio::net::UnixStream::connect(p).await?; - } - #[cfg(windows)] - { - inner = tokio::net::windows::named_pipe::ClientOptions::new().open(p)?; - } - let mut hs = HandshakeStream { inner }; - // send devsy prefix as first byte - hs.inner.write_u8(DEVSY_PREFIX_BYTE).await?; - Ok(hs) - } -} - -impl tokio::io::AsyncRead for HandshakeStream { - fn poll_read( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - buf: &mut tokio::io::ReadBuf<'_>, - ) -> Poll> { - Pin::new(&mut self.get_mut().inner).poll_read(cx, buf) - } -} - -impl tokio::io::AsyncWrite for HandshakeStream { - fn poll_write( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - buf: &[u8], - ) -> Poll> { - Pin::new(&mut self.get_mut().inner).poll_write(cx, buf) - } - - fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - Pin::new(&mut self.get_mut().inner).poll_flush(cx) - } - - fn poll_shutdown(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - Pin::new(&mut self.get_mut().inner).poll_shutdown(cx) - } -} - -// bridge between tokio and hyper, copied from https://github.com/hyperium/hyper/blob/master/benches/support/tokiort.rs#L92 -pin_project! { - #[derive(Debug)] - pub struct TokioIo { - #[pin] - inner: T, - } -} - -impl TokioIo { - pub fn new(inner: T) -> Self { - Self { inner } - } -} - -impl hyper::rt::Read for TokioIo -where - T: tokio::io::AsyncRead, -{ - fn poll_read( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - mut buf: hyper::rt::ReadBufCursor<'_>, - ) -> Poll> { - let n = unsafe { - let mut tbuf = tokio::io::ReadBuf::uninit(buf.as_mut()); - match tokio::io::AsyncRead::poll_read(self.project().inner, cx, &mut tbuf) { - Poll::Ready(Ok(())) => tbuf.filled().len(), - other => return other, - } - }; - - unsafe { - buf.advance(n); - } - Poll::Ready(Ok(())) - } -} - -impl hyper::rt::Write for TokioIo -where - T: tokio::io::AsyncWrite, -{ - fn poll_write( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - buf: &[u8], - ) -> Poll> { - tokio::io::AsyncWrite::poll_write(self.project().inner, cx, buf) - } - - fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - tokio::io::AsyncWrite::poll_flush(self.project().inner, cx) - } - - fn poll_shutdown( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - ) -> Poll> { - tokio::io::AsyncWrite::poll_shutdown(self.project().inner, cx) - } - - fn is_write_vectored(&self) -> bool { - tokio::io::AsyncWrite::is_write_vectored(&self.inner) - } - - fn poll_write_vectored( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - bufs: &[std::io::IoSlice<'_>], - ) -> Poll> { - tokio::io::AsyncWrite::poll_write_vectored(self.project().inner, cx, bufs) - } -} - -impl tokio::io::AsyncRead for TokioIo -where - T: hyper::rt::Read, -{ - fn poll_read( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - tbuf: &mut tokio::io::ReadBuf<'_>, - ) -> Poll> { - //let init = tbuf.initialized().len(); - let filled = tbuf.filled().len(); - let sub_filled = unsafe { - let mut buf = hyper::rt::ReadBuf::uninit(tbuf.unfilled_mut()); - - match hyper::rt::Read::poll_read(self.project().inner, cx, buf.unfilled()) { - Poll::Ready(Ok(())) => buf.filled().len(), - other => return other, - } - }; - - let n_filled = filled + sub_filled; - // At least sub_filled bytes had to have been initialized. - let n_init = sub_filled; - unsafe { - tbuf.assume_init(n_init); - tbuf.set_filled(n_filled); - } - - Poll::Ready(Ok(())) - } -} - -impl tokio::io::AsyncWrite for TokioIo -where - T: hyper::rt::Write, -{ - fn poll_write( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - buf: &[u8], - ) -> Poll> { - hyper::rt::Write::poll_write(self.project().inner, cx, buf) - } - - fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll> { - hyper::rt::Write::poll_flush(self.project().inner, cx) - } - - fn poll_shutdown( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - ) -> Poll> { - hyper::rt::Write::poll_shutdown(self.project().inner, cx) - } - - fn is_write_vectored(&self) -> bool { - hyper::rt::Write::is_write_vectored(&self.inner) - } - - fn poll_write_vectored( - self: Pin<&mut Self>, - cx: &mut Context<'_>, - bufs: &[std::io::IoSlice<'_>], - ) -> Poll> { - hyper::rt::Write::poll_write_vectored(self.project().inner, cx, bufs) - } -} diff --git a/desktop/src-tauri/src/file_exists.rs b/desktop/src-tauri/src/file_exists.rs deleted file mode 100644 index 1b6bce9f6..000000000 --- a/desktop/src-tauri/src/file_exists.rs +++ /dev/null @@ -1,8 +0,0 @@ -use log::info; -use std::path::Path; - -#[tauri::command] -pub fn file_exists(filepath: &str) -> bool { - info!("finding file in {}", filepath); - return Path::new(&filepath).exists(); -} diff --git a/desktop/src-tauri/src/fix_env.rs b/desktop/src-tauri/src/fix_env.rs deleted file mode 100644 index 856bf8f9a..000000000 --- a/desktop/src-tauri/src/fix_env.rs +++ /dev/null @@ -1,57 +0,0 @@ -use std::process::Output; - -#[derive(Debug, thiserror::Error)] -pub enum Error { - #[error(transparent)] - Shell(#[from] std::io::Error), - #[allow(dead_code)] - #[error("invalid output from shell echo: {0}")] - InvalidOutput(String), - #[error("failed to run shell echo: {0}")] - EchoFailed(String), -} - -fn get_shell() -> String { - let default_shell = if cfg!(target_os = "macos") { - "/bin/zsh" - } else { - "/bin/sh" - }; - return std::env::var("SHELL").unwrap_or_else(|_| default_shell.into()); -} - -fn read_path_env_cmd(shell: String, var_name: String) -> Result { - return std::process::Command::new(shell) - .arg("-ilc") - .arg(format!("printenv {}; exit", var_name)) - // Disables Oh My Zsh auto-update thing that can block the process. - .env("DISABLE_AUTO_UPDATE", "true") - .output() - .map_err(Error::Shell); -} - -pub fn fix_env(var_name: &str) -> Result<(), Error> { - #[cfg(windows)] - { - return Ok(()); - } - #[cfg(not(windows))] - { - let shell = get_shell(); - let out = read_path_env_cmd(shell, String::from(var_name))?; - - if out.status.success() { - let stdout = String::from_utf8_lossy(&out.stdout).into_owned(); - let cleaned = &strip_ansi_escapes::strip(stdout.trim())?; - let value = String::from_utf8_lossy(cleaned); - unsafe { - std::env::set_var(var_name, value.as_ref()); - } - Ok(()) - } else { - Err(Error::EchoFailed( - String::from_utf8_lossy(&out.stderr).into_owned(), - )) - } - } -} diff --git a/desktop/src-tauri/src/get_env.rs b/desktop/src-tauri/src/get_env.rs deleted file mode 100644 index 3970bd180..000000000 --- a/desktop/src-tauri/src/get_env.rs +++ /dev/null @@ -1,4 +0,0 @@ -#[tauri::command] -pub fn get_env(name: &str) -> String { - std::env::var(String::from(name)).unwrap_or(String::from("")) -} diff --git a/desktop/src-tauri/src/install_cli.rs b/desktop/src-tauri/src/install_cli.rs deleted file mode 100644 index f071230bf..000000000 --- a/desktop/src-tauri/src/install_cli.rs +++ /dev/null @@ -1,320 +0,0 @@ -use crate::{commands::DEVSY_BINARY_NAME, AppHandle}; -use log::error; -use std::path::Path; -use std::str::Lines; -use std::{env, path::PathBuf}; -use thiserror::Error; -use std::fs; - -#[derive(Error, Debug)] -#[allow(dead_code)] -pub enum InstallCLIError { - #[error("Unable to get current executable path")] - NoExePath(#[source] std::io::Error), - #[error("Unable to create link to cli {0}")] - Link(#[source] anyhow::Error), - #[error("Unable to convert path to string")] - PathConversion, - #[error("Encountered an issue with the windows registry: ")] - Registry(#[source] std::io::Error), - #[error("No data directory found")] - DataDir, - #[error("Unable to create directory")] - CreateDir(#[source] std::io::Error), - #[error("Unable to write to file")] - WriteFile(#[source] std::io::Error), - #[error("Failed to inform Windows about the change in environment variables. You will need to reboot you machine for them to take effect.")] - WindowsBroadcastChange, -} -impl serde::Serialize for InstallCLIError { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.to_string().as_ref()) - } -} - -#[tauri::command] -pub fn install_cli(app_handle: AppHandle, force: bool) -> Result<(), InstallCLIError> { - if let Err(err) = install(app_handle, force) { - error!("{}", err); - Err(err) - } else { - Ok(()) - } -} - -// The path to the `devsy` binary/executable. If bundled correctly, will be placed next to the desktop app executable. -fn get_cli_path() -> Result { - let mut exe_path = env::current_exe()?; - exe_path.pop(); - exe_path.push(DEVSY_BINARY_NAME); - - Ok(exe_path) -} - -#[cfg(not(target_os = "windows"))] -fn install(_app_handle: AppHandle, force: bool) -> Result<(), InstallCLIError> { - use anyhow::Context; - use dirs::home_dir; - use log::{info, warn}; - use std::{fs::remove_file, os::unix::fs::symlink}; - - let cli_path = get_cli_path().map_err(InstallCLIError::NoExePath)?; - - // The binary we ship with is `devsy`, which users can run directly in their terminal - let mut target_paths: Vec = vec![]; - - // /usr/local/bin/devsy - let raw_system_bin = format!("/usr/local/bin/{}", "devsy"); - target_paths.push(PathBuf::from(&raw_system_bin)); - - if force { - info!("Attempting to force install CLI"); - let script = format!("osascript -e \"do shell script \\\"mkdir -p /usr/local/bin && ln -sf '{}' '{}'\\\" with administrator privileges\"", cli_path.to_string_lossy(), raw_system_bin); - let status = std::process::Command::new("sh") - .arg("-c") - .arg(script) - .status() - .map_err(anyhow::Error::msg) - .map_err(InstallCLIError::Link)?; - info!("Status: {}", status); - - return Ok(()); - } - - if let Some(home) = home_dir() { - // $HOME/bin/devsy - let mut user_bin = home.clone(); - user_bin.push("bin/devsy"); - - // $HOME/.local/bin/devsy - let mut user_local_bin = home; - user_local_bin.push(".local/bin/devsy"); - - // create .local/bin if necessary - if let Some(path) = user_local_bin.clone().parent() { - let _ = fs::create_dir_all(path); - } - - target_paths.push(user_local_bin); - target_paths.push(user_bin); - } - - let mut latest_error: Option = None; - let is_on_tmpfs = is_tmpfs(&cli_path.as_path()); - - for target_path in target_paths { - let str_target_path = target_path.to_string_lossy(); - match target_path.try_exists() { - Ok(exists) => { - if exists { - // Remove link before attempting to create another one - if let Err(err) = remove_file(&target_path) - .with_context(|| format!("path: {}", str_target_path)) - .map_err(InstallCLIError::Link) - { - warn!( - "Failed to remove link: {}; Retrying with other paths...", - err - ); - continue; - }; - } - } - _ => { /* fallthrough */ } - } - info!( - "Attempting to link cli to {}", - target_path.to_string_lossy() - ); - - let is_flatpak = env::var("FLATPAK_ID").is_ok(); - - if is_flatpak { - match copy(cli_path.clone(), &target_path) - .with_context(|| format!("path: {}", str_target_path)) - .map_err(InstallCLIError::Link) - { - Ok(..) => { - return Ok(()); - } - Err(err) => { - warn!( - "Failed to copy from {} to {}: {}; Retrying with other paths...", - cli_path.to_string_lossy(), - target_path.to_string_lossy(), - err - ); - latest_error = Some(err); - } - } - } else { - let operation = if is_on_tmpfs { copy } else { symlink }; - - match operation(cli_path.clone(), &target_path) - .with_context(|| format!("path: {}", str_target_path)) - .map_err(InstallCLIError::Link) - { - Ok(..) => { - return Ok(()); - } - Err(err) => { - warn!( - "Failed to link to {}: {}; Retrying with other paths...", - target_path.to_string_lossy(), - err - ); - latest_error = Some(err); - } - } - } - } - - if let Some(err) = latest_error { - return Err(err); - } - - Ok(()) -} - -fn copy, Q: AsRef>(from: P, to: Q) -> std::io::Result<()> { - std::fs::copy(from, to).map(|_| ()) -} - -#[cfg(not(target_os = "windows"))] -fn is_tmpfs(path: &Path) -> bool { - let mountpoint_file = match std::fs::read_to_string("/proc/mounts") { - Ok(contents) => contents, - Err(_) => return false, - }; - - let mount_lines = mountpoint_file.lines(); - let fs = match find_fs_type(path, &mount_lines) { - Some(contents) => contents, - None => return false, - }; - - return fs.to_string() == "tmpfs" || fs.to_string().contains("fuse"); -} - -#[cfg(not(target_os = "windows"))] -fn find_fs_type(curr_path: &Path, mount_lines: &Lines) -> Option { - for line in mount_lines.clone() { - let columns: Vec<&str> = line.split_whitespace().collect(); - - if &curr_path.to_str()? == columns.get(1)? { - return Some(columns.get(2)?.to_string()); - } - } - - return find_fs_type(curr_path.parent()?, mount_lines); -} - -#[cfg(target_os = "windows")] -fn install(app_handle: AppHandle, force: bool) -> Result<(), InstallCLIError> { - use log::error; - use tauri::Manager; - use std::fs; - use windows::Win32::{ - Foundation::{GetLastError, HWND, LPARAM}, - UI::WindowsAndMessaging::{SendMessageTimeoutW, SMTO_ABORTIFHUNG, WM_SETTINGCHANGE}, - }; - use winreg::{ - enums::{HKEY_CURRENT_USER, KEY_ALL_ACCESS}, - RegKey, - }; - - struct BinFile { - name: String, - content: String, - } - - let cli_path = get_cli_path().map_err(|e| InstallCLIError::NoExePath(e))?; - let mut bin_dir = app_handle - .path() - .app_data_dir() - .map_err(|_|InstallCLIError::DataDir)?; - bin_dir.push("bin"); - - // Create binary directory in app dir and write bin_files to disk - // These will be stored in a /bin folder under our control, usually `%APP_DIR%/sh.devsy.devsy/bin` - let cli_path = cli_path.to_str().ok_or(InstallCLIError::PathConversion)?; - - let sh_file = BinFile { - name: "devsy".to_string(), - // WARN: we actually need to debug print here because this escapes the backslash to `\\` and will then be recognised by the shell - content: format!("#!/usr/bin/env sh\n{:?}.exe \"$@\" \nexit $?", cli_path), - }; - - let cmd_file = BinFile { - name: format!("{}.cmd", "devsy".to_string()), - content: format!("@echo off\n\"{}.exe\" %*", cli_path), - }; - - fs::create_dir_all(bin_dir.clone()).map_err(|e| InstallCLIError::CreateDir(e))?; - for BinFile { content, name } in [sh_file, cmd_file] { - let mut file_path = bin_dir.clone(); - file_path.push(name); - - if let Err(e) = fs::write(file_path, content.as_bytes()) { - return Err(InstallCLIError::WriteFile(e)); - } - } - - // Now that we placed our entry points in the /bin folder, we need to update the users path environment variable - // to include said folder - let current_dir_path = bin_dir.to_str().ok_or(InstallCLIError::PathConversion)?; - let hkcu = RegKey::predef(HKEY_CURRENT_USER); - let environment_key = hkcu - .open_subkey_with_flags("Environment", KEY_ALL_ACCESS) - .map_err(|e| InstallCLIError::Registry(e))?; - let mut current_env_path: String = environment_key - .get_value("Path") - .map_err(|e| InstallCLIError::Registry(e))?; - - // Make sure we only add the path once - if current_env_path.contains(current_dir_path) { - return Ok(()); - } - - current_env_path.push_str(&format!(";{}", current_dir_path)); - - environment_key - .set_value("Path", ¤t_env_path) - .map_err(|e| InstallCLIError::Registry(e))?; - - // After setting the registry key we need to inform windows about the changes. - // Otherwise it would require a full system reboot for them to take effect. - unsafe { - // See https://learn.microsoft.com/en-us/windows/win32/winmsg/wm-settingchange - // and https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendmessagetimeoutw - // for more information about `WM_SETTINGCHANGE` and `SendMessageTimeoutW`. - - #[allow(non_snake_case)] - let HWND_BROADCAST = HWND(0xffff); - let environment_ptr = LPARAM("Environment".as_ptr() as isize); - // Apparently we can only broadcast this message via a synchronous operation, `PostMessage` doesn't work here - // This function blocks until either all windows handled the message or the timeout is exceeded for every one of them. You can check the documentation for details. - // Because of this, we need to ensure this function will only be called on a thread that's okay with being blocked for some time. - // Right now this will only be called from a tauri command, so we're good. If you need to call this function from somewhere else, be aware of the blocking. - let result = SendMessageTimeoutW( - HWND_BROADCAST, - WM_SETTINGCHANGE, - None, - environment_ptr, - SMTO_ABORTIFHUNG, - 3_000, - None, - ); - if result.0 == 0 { - let last_error = GetLastError(); - error!("{:?}", last_error); - - return Err(InstallCLIError::WindowsBroadcastChange); - } - }; - - Ok(()) -} diff --git a/desktop/src-tauri/src/logging.rs b/desktop/src-tauri/src/logging.rs deleted file mode 100644 index ae365bad0..000000000 --- a/desktop/src-tauri/src/logging.rs +++ /dev/null @@ -1,26 +0,0 @@ -use log::LevelFilter; -use tauri::{plugin::TauriPlugin, Wry}; -use tauri_plugin_log::{Target, TargetKind}; - -#[allow(unused_variables)] -pub fn build_plugin() -> TauriPlugin { - let enable_debug_logging: Option<&'static str> = option_env!("DEBUG"); - let mut targets: Vec<_> = vec![]; - - #[cfg(debug_assertions)] // only enable during development - if enable_debug_logging.is_some() { - targets.push(Target::new(TargetKind::Stdout)); - } - #[cfg(not(debug_assertions))] // only enable in release builds - targets.push(Target::new(TargetKind::LogDir { - file_name: Some("Devsy".to_string()), - })); - - let builder = tauri_plugin_log::Builder::default().targets(targets); - #[cfg(debug_assertions)] // only enable during development - let builder = builder.level(LevelFilter::Debug); - #[cfg(not(debug_assertions))] // only enable in release builds - let builder = builder.level(LevelFilter::Info); - - builder.build() -} diff --git a/desktop/src-tauri/src/main.rs b/desktop/src-tauri/src/main.rs deleted file mode 100644 index 99bf8f59e..000000000 --- a/desktop/src-tauri/src/main.rs +++ /dev/null @@ -1,276 +0,0 @@ -#![cfg_attr( - all(not(debug_assertions), target_os = "windows"), - windows_subsystem = "windows" -)] - -#[cfg(target_os = "macos")] -#[macro_use] -extern crate objc; - -mod action_logs; -mod commands; -mod community_contributions; -mod custom_protocol; -mod daemon; -mod file_exists; -mod fix_env; -mod get_env; -mod install_cli; -mod logging; -mod providers; -mod resource_watcher; -mod server; -mod settings; -mod system_tray; -mod ui_messages; -mod ui_ready; -mod updates; -mod util; -mod window; - -use community_contributions::CommunityContributions; -use custom_protocol::CustomProtocol; -use log::{error, info}; -use resource_watcher::{ProState, WorkspacesState}; -use std::sync::{Arc, Mutex}; -use system_tray::{SystemTray, SYSTEM_TRAY_ICON_BYTES}; -use tauri::{image::Image, tray::TrayIconBuilder, Manager, Wry}; -use tokio::sync::{ - mpsc::{self, Sender}, - RwLock, -}; -use ui_messages::UiMessage; -use util::{kill_child_processes, QUIT_EXIT_CODE}; - -pub type AppHandle = tauri::AppHandle; - -pub struct AppState { - workspaces: Arc>, - pro: Arc>, - community_contributions: Arc>, - ui_messages: Sender, - releases: Arc>, - pending_update: Arc>>, - update_installed: Arc>, - resources_handles: Arc>>>, -} -fn main() -> anyhow::Result<()> { - // https://unix.stackexchange.com/questions/82620/gui-apps-dont-inherit-path-from-parent-console-apps - fix_env::fix_env("PATH")?; - - let contributions = community_contributions::init()?; - - let ctx = tauri::generate_context!(); - let app_name = ctx.package_info().name.to_string(); - - CustomProtocol::forward_deep_link(); - - let (tx, rx) = mpsc::channel::(10); - - let mut app_builder = tauri::Builder::default(); - // this case is handled by macos itself + tauri::RunEvent::Reopen - #[cfg(not(target_os = "macos"))] - { - // Single-instance plugin with deep-link feature: when a second instance is - // launched with a deep link URL, the plugin automatically forwards it to the - // deep-link plugin's on_open_url handler via handle_cli_arguments(). - app_builder = app_builder.plugin(tauri_plugin_single_instance::init( - |app, _args, _cwd| { - let app_state = app.state::(); - - tauri::async_runtime::block_on(async move { - if let Err(err) = - app_state.ui_messages.send(UiMessage::ShowDashboard).await - { - error!("Failed to broadcast show dashboard message: {}", err); - }; - }); - }, - )); - } - app_builder = app_builder - .manage(AppState { - workspaces: Arc::new(RwLock::new(WorkspacesState::default())), - pro: Arc::new(RwLock::new(ProState::default())), - community_contributions: Arc::new(Mutex::new(contributions)), - ui_messages: tx.clone(), - releases: Arc::new(Mutex::new(updates::Releases::default())), - pending_update: Arc::new(Mutex::new(None)), - update_installed: Arc::new(Mutex::new(false)), - resources_handles: Arc::new(Mutex::new(vec![])), - }) - .plugin(logging::build_plugin()) - .plugin(tauri_plugin_store::Builder::default().build()) - .plugin(tauri_plugin_dialog::init()) - .plugin(tauri_plugin_clipboard_manager::init()) - .plugin(tauri_plugin_fs::init()) - .plugin(tauri_plugin_opener::init()) - .plugin(tauri_plugin_os::init()) - .plugin(tauri_plugin_process::init()) - .plugin(tauri_plugin_shell::init()) - .plugin(tauri_plugin_notification::init()) - .plugin(tauri_plugin_deep_link::init()) - .plugin(tauri_plugin_updater::Builder::new().build()) - .setup(move |app| { - info!("Setup application"); - - providers::check_dangling_provider(&app.handle()); - let window_helper = window::WindowHelper::new(app.handle().clone()); - - let window = app.get_webview_window("main").unwrap(); - window_helper.setup(&window); - - let app_handle = app.handle().clone(); - resource_watcher::setup(&app_handle); - - action_logs::setup(&app.handle())?; - - let custom_protocol = CustomProtocol::new(); - custom_protocol.setup(app.handle().clone()); - - let app_handle = app.handle().clone(); - tauri::async_runtime::spawn(async move { - let update_helper = updates::UpdateHelper::new(&app_handle); - if let Ok(releases) = update_helper.fetch_releases().await { - let state = app_handle.state::(); - let mut releases_state = state.releases.lock().unwrap(); - *releases_state = releases; - } - - update_helper.poll().await; - }); - - let app_handle = app.handle().clone(); - tauri::async_runtime::spawn(async move { - if let Err(err) = server::setup(&app_handle).await { - error!("Failed to start server: {}", err); - } - }); - - let app_handle = app.handle().clone(); - tauri::async_runtime::spawn(async move { - ui_messages::UiMessageHelper::new(app_handle, app_name, window_helper) - .listen(rx) - .await; - }); - - let system_tray = SystemTray::new(); - let app_handle = app.handle().clone(); - tauri::async_runtime::block_on(async move { - if let Ok(menu) = system_tray.init(&app_handle).await { - let tray_temp_dir = app - .path() - .app_cache_dir() - .unwrap_or_else(|err| { - error!( - "Failed to resolve app cache dir for tray temp path: {}. Falling back to system temp dir.", - err - ); - std::env::temp_dir().join("devsy") - }); - - let _tray = TrayIconBuilder::with_id("main") - .icon(Image::from_bytes(SYSTEM_TRAY_ICON_BYTES).unwrap(),) - .temp_dir_path(tray_temp_dir) - .icon_as_template(true) - .menu(&menu) - .show_menu_on_left_click(true) - .on_menu_event(system_tray.get_menu_event_handler()) - .on_tray_icon_event(system_tray.get_tray_icon_event_handler()) - .build(app); - } - }); - - info!("Setup done"); - Ok(()) - }); - - app_builder = app_builder.invoke_handler(tauri::generate_handler![ - ui_ready::ui_ready, - action_logs::write_action_log, - action_logs::get_action_logs, - action_logs::get_action_log_file, - install_cli::install_cli, - get_env::get_env, - file_exists::file_exists, - community_contributions::get_contributions, - updates::get_pending_update, - updates::check_updates - ]); - - let app = app_builder - .build(ctx) - .expect("error while building tauri application"); - - app.run(move |app_handle, event| { - let exit_requested_tx = tx.clone(); - #[cfg(target_os = "macos")] - let reopen_tx = tx.clone(); - - #[cfg(target_os = "macos")] - { - if let tauri::RunEvent::Reopen { .. } = event { - tauri::async_runtime::block_on(async move { - if let Err(err) = reopen_tx.send(UiMessage::ShowDashboard).await { - error!("Failed to broadcast show dashboard message: {}", err); - }; - }); - - return; - } - } - - match event { - // Prevents app from exiting when last window is closed, leaving the system tray active - tauri::RunEvent::ExitRequested { api, code, .. } => { - info!("Handling ExitRequested event."); - - // On windows, we want to kill all existing child processes to prevent dangling processes later down the line. - - tauri::async_runtime::block_on(async move { - if let Err(err) = exit_requested_tx.send(UiMessage::ExitRequested).await { - error!("Failed to broadcast UI ready message: {:?}", err); - } - }); - - // Check if the user clicked "Quit" in the system tray, in which case we have to actually close. - if let Some(code) = code { - if code == QUIT_EXIT_CODE { - return; - } - } - - // Otherwise, we stay alive in the system tray. - api.prevent_exit(); - } - #[cfg(target_os = "macos")] - tauri::RunEvent::WindowEvent { event, label, .. } => { - if let tauri::WindowEvent::Destroyed = event { - providers::check_dangling_provider(app_handle); - let window_helper = window::WindowHelper::new(app_handle.clone()); - let window_count = app_handle.webview_windows().len(); - info!("Window \"{}\" destroyed, {} remaining", label, window_count); - if window_count == 0 { - window_helper.set_dock_icon_visibility(false); - } - } - } - #[cfg(not(target_os = "macos"))] - tauri::RunEvent::WindowEvent { event, .. } => { - if let tauri::WindowEvent::Destroyed = event { - providers::check_dangling_provider(app_handle); - } - } - tauri::RunEvent::Exit => { - kill_child_processes(std::process::id()); - providers::check_dangling_provider(app_handle); - tauri::async_runtime::block_on(async move { - resource_watcher::shutdown(app_handle).await; - }); - } - _ => {} - } - }); - - Ok(()) -} diff --git a/desktop/src-tauri/src/providers.rs b/desktop/src-tauri/src/providers.rs deleted file mode 100644 index 41fce317c..000000000 --- a/desktop/src-tauri/src/providers.rs +++ /dev/null @@ -1,88 +0,0 @@ -use crate::commands::delete_pro_instance::DeleteProInstanceCommand; -use crate::commands::list_pro_instances::ListProInstancesCommand; -use crate::commands::{delete_provider::DeleteProviderCommand, DevsyCommandConfig}; -use crate::resource_watcher::{Identifiable, ProInstance}; -use crate::AppHandle; -use log::{debug, error, info}; -use tauri_plugin_store::StoreExt; - -pub fn check_dangling_provider(app_handle: &AppHandle) { - let dangling_provider_key = "danglingProviders"; // WARN: needs to match the key defined in typescript - let filename = ".providers.json"; // WARN: needs to match the file name defined in typescript - - debug!("Checking for dangling providers"); - let store = app_handle.store(filename); - if store.is_err() { - error!("unable to open store {}", filename); - return; - } - let store = store.unwrap(); - let dangling_providers = store - .get(dangling_provider_key) - .and_then(|dangling_providers| { - serde_json::from_value::>(dangling_providers.clone()).ok() - }); - - if dangling_providers.is_none() { - debug!("No dangling providers found"); - return; - } - let dangling_providers = dangling_providers.unwrap(); - - if dangling_providers.is_empty() { - debug!("No dangling providers found"); - return; - } - - info!( - "Found dangling providers: {}, attempting to delete", - dangling_providers.join(", ") - ); - - let pro_instances = match ListProInstancesCommand::new().exec_blocking(app_handle) { - Ok(pro_instances) => pro_instances, - Err(err) => { - error!("Failed to list pro instances, {}", err); - vec![] - } - }; - - for dangling_provider in dangling_providers.iter() { - // Make sure we clean up accompanying pro instances - check_pro_instances(app_handle, &pro_instances, &dangling_provider); - - if DeleteProviderCommand::new(dangling_provider.clone()) - .exec_blocking(&app_handle) - .is_ok() - && store.delete(dangling_provider_key) - { - info!( - "Successfully deleted dangling provider: {}", - dangling_provider - ); - let _ = store.save(); - } - } -} - -fn check_pro_instances( - app_handle: &AppHandle, - pro_instances: &Vec, - dangling_provider: &String, -) { - if let Some(pro_instance) = pro_instances - .iter() - .find(|pro_instance| &pro_instance.id() == dangling_provider) - { - let pro_id = pro_instance.id(); - info!( - "Found dangling provider {} matching pro instance {}", - dangling_provider, pro_id - ); - - match DeleteProInstanceCommand::new(pro_id.to_string()).exec_blocking(app_handle) { - Ok(_) => info!("Successfully deleted pro instance {}", pro_id), - Err(err) => error!("Failed to delete pro instance {}, {}", pro_id, err), - } - } -} diff --git a/desktop/src-tauri/src/resource_watcher.rs b/desktop/src-tauri/src/resource_watcher.rs deleted file mode 100644 index b5418ef26..000000000 --- a/desktop/src-tauri/src/resource_watcher.rs +++ /dev/null @@ -1,615 +0,0 @@ -use crate::{ - commands::{ - list_pro_instances::ListProInstancesCommand, list_workspaces::ListWorkspacesCommand, - start_daemon::StartDaemonCommand, DevsyCommandError, - }, - daemon, - system_tray::{ToSystemTraySubmenu, SYSTEM_TRAY_ICON_BYTES, WARNING_SYSTEM_TRAY_ICON_BYTES}, - ui_messages, -}; -use crate::{AppHandle, AppState}; -use anyhow::anyhow; -use log::{debug, error, info}; -use serde::Deserialize; -use std::{collections::HashSet, hash::Hash, time}; -use tauri::{ - async_runtime::Receiver, - image::Image, - menu::{IconMenuItem, MenuItem, Submenu, SubmenuBuilder}, - Manager, Wry, -}; -use tauri_plugin_notification::NotificationExt; -use tauri_plugin_shell::process::{CommandChild, CommandEvent}; - - -pub trait Identifiable { - type ID: Eq + Hash + Clone; - fn id(&self) -> Self::ID; -} -#[derive(Default)] -pub struct WorkspacesState { - workspaces: Vec, - submenu: Option>, -} - -#[derive(Deserialize, Clone)] -pub struct Workspace { - id: String, - #[serde(skip)] - menu_item: Option>, -} -impl Identifiable for Workspace { - type ID = String; - fn id(&self) -> String { - return self.id.clone(); - } -} -impl PartialEq for Workspace { - fn eq(&self, other: &Self) -> bool { - self.id() == other.id() - } -} -impl Workspace { - fn new_menu_item(&self, app_handle: &AppHandle) -> tauri::Result> { - return MenuItem::with_id( - app_handle, - WorkspacesState::item_id(&self.id()), - self.id(), - true, - None::<&str>, - ); - } -} - -impl WorkspacesState { - pub const IDENTIFIER_PREFIX: &'static str = "workspaces-"; - pub const CREATE_WORKSPACE_ID: &'static str = "workspaces-create_workspace"; - - fn item_id(id: &String) -> String { - format!("{}{}", Self::IDENTIFIER_PREFIX, id) - } - - pub fn set_submenu(&mut self, submenu: Submenu) { - self.submenu = Some(submenu); - } - - pub async fn load_workspaces( - app_handle: &AppHandle, - ) -> Result, DevsyCommandError> { - let list_workspaces_cmd = ListWorkspacesCommand::new(); - - return list_workspaces_cmd.exec(app_handle).await; - } -} - -impl ToSystemTraySubmenu for WorkspacesState { - fn to_submenu(&self, app_handle: &AppHandle) -> anyhow::Result> { - let mut submenu = SubmenuBuilder::with_id(app_handle, "workspace", "Workspaces"); - - let create_workspace = MenuItem::with_id( - app_handle, - Self::CREATE_WORKSPACE_ID, - "Create Workspace", - true, - None::<&str>, - )?; - submenu = submenu.item(&create_workspace); - submenu = submenu.separator(); - - return Ok(submenu.build()?); - } -} - -static CAPABILITY_DAEMON: &str = "daemon"; -static MAX_RETRY_COUNT: i64 = 10; -static RETRY_DEBUG_THRESHOLD: i64 = 7; -#[derive(Default)] -pub struct ProState { - instances: Vec, - submenu: Option>, - all_ready: bool, -} -impl Identifiable for ProInstance { - type ID = String; - fn id(&self) -> String { - return self.host.clone(); - } -} -impl PartialEq for ProInstance { - fn eq(&self, other: &Self) -> bool { - self.id() == other.id() - } -} - -impl ProState { - pub const IDENTIFIER_PREFIX: &'static str = "pro-instances-"; - - fn item_id(id: &String) -> String { - format!("{}{}", Self::IDENTIFIER_PREFIX, id) - } - - pub async fn load_pro_instances( - app_handle: &AppHandle, - ) -> Result, DevsyCommandError> { - let cmd = ListProInstancesCommand::new(); - let pro_instances = cmd.exec(app_handle).await?; - - Ok(pro_instances) - } - - pub fn set_submenu(&mut self, submenu: Submenu) { - self.submenu = Some(submenu); - } - - pub fn find_instance(&self, pro_id: String) -> Option<&ProInstance> { - return self.instances.iter().find(|i| i.id() == pro_id); - } - - pub fn find_instance_mut(&mut self, pro_id: String) -> Option<&mut ProInstance> { - return self.instances.iter_mut().find(|i| i.id() == pro_id); - } -} - -#[derive(Deserialize)] -#[serde(rename_all(serialize = "camelCase", deserialize = "camelCase"))] -pub struct ProInstance { - host: String, - provider: Option, - #[allow(dead_code)] - context: Option, - capabilities: Option>, - #[serde(skip)] - menu_item: Option>, - #[serde(skip)] - daemon: Option, -} -impl ProInstance { - pub fn has_capability(&self, capability: String) -> bool { - if let Some(capabilities) = &self.capabilities { - for cap in capabilities { - if *cap == capability { - return true; - } - } - } - return false; - } - - pub fn daemon(&self) -> &Option { - return &self.daemon; - } - - pub fn daemon_mut(&mut self) -> Option<&mut Daemon> { - return self.daemon.as_mut(); - } - - fn new_menu_item(&self, app_handle: &AppHandle) -> tauri::Result> { - return IconMenuItem::with_id( - app_handle, - ProState::item_id(&self.id()), - self.id(), - true, - self.get_icon(), - None::<&str>, - ); - } - - fn get_icon(&self) -> Option> { - return self - .daemon - .as_ref() - .map(|daemon| daemon.status.state.get_icon()); - } -} - -#[derive(Debug)] -pub struct Daemon { - status: daemon::DaemonStatus, - command: Option<(Receiver, CommandChild)>, - retry_count: i64, - client: daemon::client::Client, - provider: Option, - - notified_user_daemon_failed: bool, - notified_login_required: bool, -} -impl Daemon { - pub fn new(provider: Option) -> anyhow::Result { - let socket_addr = Daemon::get_socket_addr(provider.clone())?; - let client = daemon::client::Client::new(socket_addr); - - return Ok(Daemon { - status: daemon::DaemonStatus::default(), - command: None, - retry_count: 0, - notified_user_daemon_failed: false, - notified_login_required: false, - provider, - client, - }); - } - - fn get_socket_addr( - provider: Option, - ) -> Result { - let provider = provider.clone().ok_or(DevsyCommandError::Any(anyhow!( - "provider not set for pro instance" - )))?; - #[cfg(unix)] - { - return Ok(format!( - "/tmp/devsy-{}.sock", - provider - )); - } - #[cfg(windows)] - { - return Ok(format!("\\\\.\\pipe\\devsy.{}", provider).to_string()); - } - } - - pub fn get_client(&self) -> &daemon::client::Client { - return &self.client; - } - - pub async fn get_status(&self) -> anyhow::Result { - return self.client.status().await; - } - - pub async fn try_start(&mut self, host: String, app_handle: &AppHandle) { - info!("[{}] attempting to start daemon", host.clone()); - if let Some(_) = self.command { - self.try_stop().await; - } - match self.spawn(host.clone(), app_handle).await { - Ok(command) => { - info!("[{}] Successfully started daemon", host.clone()); - self.command = Some(command); - } - Err(err) => { - error!("[{}] Failed to spawn daemon command {:?}", host, err); - } - } - } - - pub async fn try_stop(&mut self) { - if let Some(command) = self.command.take() { - let pid = command.1.pid(); - if let Err(err) = command.1.kill() { - debug!("Failed to kill command {:?}", err); - // kill it with fire - crate::util::kill_process(pid); - } - } - self.command = None; - self.status = daemon::DaemonStatus::default(); - } - - fn should_retry(&mut self, app_handle: &AppHandle) -> bool { - if self.status.login_required { - return false; - } - - self.retry_count += 1; - if self.retry_count < MAX_RETRY_COUNT { - return true; - } else { - self.try_notify_failed(app_handle); - - // fall back to every 5 ticks after reaching `MAX_RETRY_COUNT` - return self.retry_count % 5 == 0; - } - } - - fn should_debug(&self) -> bool { - return self.retry_count >= RETRY_DEBUG_THRESHOLD; - } - - async fn spawn( - &mut self, - host: String, - app_handle: &AppHandle, - ) -> Result<(Receiver, CommandChild), DevsyCommandError> { - let (mut rx, child) = StartDaemonCommand::new(host.clone(), self.should_debug()) - .command(app_handle)? - .spawn()?; - - tokio::select! { - status = self.get_initial_status(&mut rx) => { - if let Ok(status) = status { - self.status = status; - if self.status.login_required { - self.try_notify_login(host, app_handle).await; - } - } - }, - _ = tokio::time::sleep(tokio::time::Duration::from_secs(30)) => { - return Err(DevsyCommandError::Any(anyhow!("Timed out waiting for daemon to start"))); - } - } - - return Ok((rx, child)); - } - - async fn get_initial_status( - &self, - rx: &mut Receiver, - ) -> anyhow::Result { - loop { - if let Some(event) = rx.recv().await { - match event { - CommandEvent::Stdout(out) => { - return serde_json::from_slice::(&out) - .map_err(|err| anyhow!("failed to parse status: {:?}", err)); - } - _ => { - return Err(anyhow!("expected stdout message")); - } - } - } - } - } - - async fn try_notify_login(&mut self, host: String, app_handle: &AppHandle) { - if self.notified_login_required { - return; - } - - let msg = ui_messages::LoginRequiredMsg { - host, - provider: self.provider.clone().unwrap_or("".to_string()), - }; - let _ = app_handle - .state::() - .ui_messages - .send(ui_messages::UiMessage::LoginRequired(msg)) - .await; - - self.notified_login_required = true; - } - - fn try_notify_failed(&mut self, app_handle: &AppHandle) { - if self.notified_user_daemon_failed { - return; - } - let res = app_handle - .notification() - .builder() - .title("Failed to start daemon") - .body("Please take a look at \"Settings > Open Logs\" or report this issue to an administrator") - .show(); - if let Err(err) = res { - error!("Unable to send daemon-failed notification: {}", err); - } - - self.notified_user_daemon_failed = true; - } -} - -impl ToSystemTraySubmenu for ProState { - fn to_submenu(&self, app_handle: &AppHandle) -> anyhow::Result> { - return Ok(SubmenuBuilder::with_id(app_handle, "pro", "Pro").build()?); - } -} - -pub fn setup(app_handle: &AppHandle) { - let state = app_handle.state::(); - let mut resource_handles = state.resources_handles.lock().unwrap(); - // daemon watcher - let daemon_app_handle = app_handle.clone(); - let daemon_watcher_handle = tauri::async_runtime::spawn(async move { - let sleep_duration = time::Duration::from_millis(1_000); - loop { - let res = watch_daemons(&daemon_app_handle).await; - if let Err(err) = res { - error!("watch daemons: {}", err) - }; - let _ = tokio::time::sleep(sleep_duration).await; - } - }); - resource_handles.push(daemon_watcher_handle); - - // main resources watchers - let resources_app_handle = app_handle.clone(); - let resources_handle = tauri::async_runtime::spawn(async move { - let sleep_duration = time::Duration::from_millis(5_000); - loop { - handle_workspaces(&resources_app_handle).await; - handle_pro_instances(&resources_app_handle).await; - let _ = tokio::time::sleep(sleep_duration).await; - } - }); - resource_handles.push(resources_handle); -} - -pub async fn shutdown(app_handle: &AppHandle) { - info!("Shutting down resource watchers"); - let state = app_handle.state::(); - // shut down background tasks - let mut handles = state.resources_handles.lock().unwrap(); - for handle in handles.iter() { - handle.abort(); - } - handles.clear(); - // shut down daemons - let mut pro_state = state.pro.write().await; - for pro_instance in pro_state.instances.iter_mut() { - let id = pro_instance.id().clone(); - if let Some(daemon) = pro_instance.daemon.as_mut() { - info!("[{}] Stopping daemon", id); - daemon.try_stop().await; - } - } -} - -async fn watch_daemons(app_handle: &AppHandle) -> anyhow::Result<()> { - let state: tauri::State<'_, AppState> = app_handle.state::(); - let mut pro_state = state.pro.write().await; - let mut all_ready = true; - - // TODO: parallelize - for instance in &mut pro_state.instances { - let id = instance.id(); - if !instance.has_capability(CAPABILITY_DAEMON.to_string()) { - continue; - } - let daemon = instance.daemon(); - if daemon.is_none() { - instance.daemon = Some( - Daemon::new(instance.provider.clone()) - .map_err(|err| anyhow!("Failed to create new daemon: {}", err))?, - ); - } - let daemon = instance.daemon.as_mut().unwrap(); - if !daemon.should_retry(app_handle) { - all_ready = false; - continue; - } - - if let Some(menu_item) = &instance.menu_item { - let _ = menu_item.set_icon(Some(daemon.status.state.get_icon())); - } - - match daemon.get_status().await { - Ok(status) => { - daemon.status = status; - match daemon.status.state { - daemon::DaemonState::Running => { - daemon.retry_count = 0; - // reset login notification once the daemon is up and running - daemon.notified_login_required = false; - } - daemon::DaemonState::Stopped => { - all_ready = false; - info!("[{}] daemon stopped, attempting to restart", id); - daemon.status.state = daemon::DaemonState::Pending; - daemon.try_start(id, app_handle).await; - } - daemon::DaemonState::Pending => { - all_ready = false; - } - } - } - Err(err) => { - all_ready = false; - info!("[{}] failed to get daemon status: {}", id, err); - daemon.status.state = daemon::DaemonState::Stopped; - - match daemon.command.as_mut() { - Some(cmd) => { - // replay stderr for debugging purposes - while let Some(event) = cmd.0.recv().await { - if let CommandEvent::Stderr(out) = event { - error!("{}", String::from_utf8(out)?.trim()); - } - } - // kill the current command and restart on the next iteration - crate::util::kill_process(cmd.1.pid()); - daemon.command = None; - } - None => { - daemon.status.state = daemon::DaemonState::Pending; - daemon.try_start(id, app_handle).await; - } - } - } - } - - if let Some(menu_item) = &instance.menu_item { - let _ = menu_item.set_icon(Some(daemon.status.state.get_icon())); - } - } - - if pro_state.all_ready != all_ready { - pro_state.all_ready = all_ready; - - // update main system tray icon - if let Some(main_tray) = app_handle.tray_by_id("main") { - let icon = match pro_state.all_ready { - true => Image::from_bytes(SYSTEM_TRAY_ICON_BYTES).unwrap(), - false => Image::from_bytes(WARNING_SYSTEM_TRAY_ICON_BYTES).unwrap(), - }; - let _ = main_tray.set_icon(Some(icon)); - let _ = main_tray.set_icon_as_template(true); - } - } - - return Ok(()); -} - -async fn handle_workspaces(app_handle: &AppHandle) { - let workspaces = WorkspacesState::load_workspaces(app_handle).await; - if workspaces.is_err() { - return; - } - - let mut workspaces = workspaces.unwrap(); - let state = app_handle.state::(); - let state = &mut state.workspaces.write().await; - if workspaces == state.workspaces { - return; - } - - if let Some(submenu) = &state.submenu { - let (removed, added) = diff_mut(&state.workspaces, &mut workspaces); - for w in removed { - if let Some(menu_item) = &w.menu_item { - _ = submenu.remove(menu_item); - } - } - for w in added { - if let Ok(menu_item) = w.new_menu_item(app_handle) { - let _ = submenu.append(&menu_item); - w.menu_item = Some(menu_item); - } - } - } - state.workspaces = workspaces; -} - -async fn handle_pro_instances(app_handle: &AppHandle) { - let pro_instances = ProState::load_pro_instances(app_handle).await; - if pro_instances.is_err() { - return; - } - let mut pro_instances = pro_instances.unwrap(); - - let state = app_handle.state::(); - let state = &mut state.pro.write().await; - if pro_instances == state.instances { - return; - } - if let Some(submenu) = &state.submenu { - let (removed, added) = diff_mut(&state.instances, &mut pro_instances); - for p in removed { - if let Some(menu_item) = &p.menu_item { - _ = submenu.remove(menu_item); - } - } - for p in added { - if let Ok(menu_item) = p.new_menu_item(app_handle) { - let _ = submenu.append(&menu_item); - p.menu_item = Some(menu_item); - } - } - } - - state.instances = pro_instances; -} - -fn diff_mut<'a, T: Identifiable>(old: &'a [T], new: &'a mut [T]) -> (Vec<&'a T>, Vec<&'a mut T>) { - let old_ids: HashSet<_> = old.iter().map(|item| item.id()).collect(); - let new_ids: HashSet<_> = new.iter().map(|item| item.id()).collect(); - - let removed: Vec<_> = old - .iter() - .filter(|ws| !new_ids.contains(&ws.id())) - .collect(); - - let added: Vec<_> = new - .iter_mut() - .filter(|ws| !old_ids.contains(&ws.id())) - .collect(); - - return (removed, added); -} diff --git a/desktop/src-tauri/src/server.rs b/desktop/src-tauri/src/server.rs deleted file mode 100644 index fae81bf6c..000000000 --- a/desktop/src-tauri/src/server.rs +++ /dev/null @@ -1,214 +0,0 @@ -use crate::{ui_messages, util, AppHandle, AppState, daemon}; -use axum::{ - body::Body, - extract::{ - connect_info::ConnectInfo, - ws::{Message, WebSocket, WebSocketUpgrade}, - Path, Request, State as AxumState, - }, - http::{HeaderMap, StatusCode}, - response::{IntoResponse, Response}, - routing::{any, get, post}, - Json, Router, -}; -use http::Method; -use log::{debug, info, warn}; -use serde::{Deserialize, Serialize}; -use std::net::SocketAddr; -use tauri::Manager; -use tower_http::cors::{Any, CorsLayer}; - -#[derive(Clone)] -struct ServerState { - app_handle: AppHandle, -} - -pub async fn setup(app_handle: &AppHandle) -> anyhow::Result<()> { - let state = ServerState { - app_handle: app_handle.clone(), - }; - - let cors = CorsLayer::new() - .allow_methods([Method::GET, Method::POST]) - .allow_headers(Any) - .allow_origin(Any); - - let router = Router::new() - .route("/ws", get(ws_handler)) - .route("/releases", get(releases_handler)) - .route("/child-process/signal", post(signal_handler)) - .route("/daemon/:pro_id/status", get(daemon_status_handler)) - .route("/daemon/:pro_id/restart", get(daemon_restart_handler)) - .route("/daemon-proxy/:pro_id/*path", any(daemon_proxy_handler)) - .with_state(state) - .layer(cors); - - let listener = tokio::net::TcpListener::bind("127.0.0.1:25842").await?; - info!("Listening on {}", listener.local_addr()?); - return axum::serve( - listener, - router.into_make_service_with_connect_info::(), - ) - .await - .map_err(anyhow::Error::from); -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -struct SendSignalMessage { - process_id: i32, - signal: i32, // should match nix::sys::signal::Signal -} - -async fn signal_handler( - AxumState(_server): AxumState, - Json(payload): Json, -) -> impl IntoResponse { - info!( - "received request to send signal {} to process {}", - payload.signal, - payload.process_id.to_string() - ); - util::kill_process(payload.process_id as u32); - - return StatusCode::OK; -} - -async fn releases_handler(AxumState(server): AxumState) -> impl IntoResponse { - let state = server.app_handle.state::(); - let releases = state.releases.lock().unwrap(); - let releases = releases.clone(); - - Json(releases) -} - -async fn daemon_status_handler( - Path(pro_id): Path, - AxumState(server): AxumState, -) -> impl IntoResponse { - return match new_daemon_client(pro_id, server).await { - Some(client) => match client.status().await { - Ok(status) => Json(status).into_response(), - Err(_) => StatusCode::INTERNAL_SERVER_ERROR.into_response(), - }, - None => StatusCode::NOT_FOUND.into_response(), - }; -} - -async fn new_daemon_client( - pro_id: String, - server: ServerState, -) -> Option { - let state = server.app_handle.state::(); - let pro = state.pro.read().await; - return match pro.find_instance(pro_id) { - Some(pro_instance) => match pro_instance.daemon() { - Some(daemon) => Some(daemon.get_client().clone()), - None => None, - }, - None => None, - }; -} - -async fn daemon_restart_handler( - Path(pro_id): Path, - AxumState(server): AxumState, -) -> impl IntoResponse { - let state = server.app_handle.state::(); - let mut pro = state.pro.write().await; - info!("Attempting to restart daemon"); - return match pro.find_instance_mut(pro_id) { - Some(pro_instance) => match pro_instance.daemon_mut() { - Some(daemon) => { - daemon.try_stop().await; - return StatusCode::OK.into_response(); - } - None => StatusCode::NOT_FOUND.into_response(), - }, - None => StatusCode::NOT_FOUND.into_response(), - }; -} - -async fn daemon_proxy_handler( - Path((pro_id, path)): Path<(String, String)>, - AxumState(server): AxumState, - mut req: Request, -) -> impl IntoResponse { - return match new_daemon_client(pro_id, server).await { - Some(client) => { - // strip `daemon-proxy/:pro_id` from path before we hand the request to the daemon - let original_query = req.uri().query(); - let new_path_with_query = match original_query { - Some(query) => format!("/{}?{}", path, query), - None => format!("/{}", path), - }; - let mut parts = req.uri().clone().into_parts(); - parts.path_and_query = Some(new_path_with_query.parse().expect("Invalid path")); - let new_uri = http::Uri::from_parts(parts).expect("Failed to build new URI"); - *req.uri_mut() = new_uri; - - let original_path = req.uri().path_and_query().expect("Invalid path").to_string(); - debug!("proxying daemon request: {}", original_path); - - return match client.proxy(req).await { - Ok(res) => res.into_response(), - Err(_) => StatusCode::INTERNAL_SERVER_ERROR.into_response(), - }; - } - None => StatusCode::NOT_FOUND.into_response(), - }; -} - -async fn ws_handler( - ws: WebSocketUpgrade, - headers: HeaderMap, - ConnectInfo(addr): ConnectInfo, - AxumState(server): AxumState, -) -> Response { - let app_handle = server.app_handle; - let user_agent = if let Some(user_agent) = headers.get("user-agent") { - user_agent.to_str().unwrap_or("Unknown browser") - } else { - "Unknown browser" - }; - - info!("`{user_agent}` at {addr} connected."); - ws.on_upgrade(move |socket| handle_socket(socket, addr, app_handle)) -} - -async fn handle_socket(mut socket: WebSocket, who: SocketAddr, app_handle: AppHandle) { - while let Some(msg) = socket.recv().await { - if let Ok(msg) = msg { - match msg { - Message::Text(raw_text) => 'text: { - info!("Received message: {}", raw_text); - let json = serde_json::from_str::(raw_text.as_str()); - if let Err(err) = json { - warn!("Failed to parse json: {}", err); - // drop message - break 'text; - }; - - let payload = json.unwrap(); // we can safely unwrap here, checked for error earlier - ui_messages::send_ui_message( - app_handle.state::(), - ui_messages::UiMessage::SetupPro(payload), - "failed to send pro setup message from server ws connection", - ) - .await; - } - Message::Close(_) => { - info!("Client at {} disconnected.", who); - return; - } - _ => { - info!("Received non-text message: {:?}", msg); - } - } - } else { - info!("Client at {} disconnected.", who); - - return; - } - } -} diff --git a/desktop/src-tauri/src/settings.rs b/desktop/src-tauri/src/settings.rs deleted file mode 100644 index ff1d6d5ec..000000000 --- a/desktop/src-tauri/src/settings.rs +++ /dev/null @@ -1,105 +0,0 @@ -#![allow(dead_code)] - -use crate::AppHandle; -use log::error; -use serde::Serialize; -use std::env; -use tauri_plugin_store::StoreExt; -use ts_rs::TS; - -const SETTINGS_FILE_NAME: &str = ".settings.json"; - -#[derive(Debug, Serialize, TS)] -#[ts(rename_all = "camelCase")] -#[ts(export)] -pub struct Settings { - sidebar_position: SidebarPosition, - debug_flag: bool, - party_parrot: bool, - #[serde(rename = "fixedIDE")] - fixed_ide: bool, - zoom: Zoom, - transparency: bool, - auto_update: bool, - additional_cli_flags: String, - additional_env_vars: String, - dotfiles_url: String, - ssh_key_path: String, - http_proxy_url: String, - https_proxy_url: String, - no_proxy: String, - #[serde(rename = "experimental_multiDevcontainer")] - experimental_multi_devcontainer: bool, - #[serde(rename = "experimental_fleet")] - experimental_fleet: bool, - #[serde(rename = "experimental_jupyterNotebooks")] - experimental_jupyter_notebooks: bool, - #[serde(rename = "experimental_vscodeInsiders")] - experimental_vscode_insiders: bool, - #[serde(rename = "experimental_cursor")] - experimental_cursor: bool, - #[serde(rename = "experimental_codium")] - experimental_codium: bool, - #[serde(rename = "experimental_zed")] - experimental_zed: bool, - #[serde(rename = "experimental_positron")] - experimental_positron: bool, - #[serde(rename = "experimental_rstudio")] - experimental_rstudio: bool, - #[serde(rename = "experimental_windsurf")] - experimental_windsurf: bool, - #[serde(rename = "experimental_antigravity")] - experimental_antigravity: bool, - #[serde(rename = "experimental_devsyPro")] - experimental_devsy_pro: bool, - #[serde(rename = "experimental_colorMode")] - experimental_color_mode: ColorMode, -} - -#[derive(Debug, Serialize, TS)] -#[ts(rename_all = "camelCase")] -#[ts(export)] -enum SidebarPosition { - Left, - Right, -} - -#[derive(Debug, Serialize, TS)] -#[ts(rename_all = "camelCase")] -#[ts(export)] -enum ColorMode { - Dark, - Light, -} - -#[derive(Debug, Serialize, TS)] -#[ts(rename_all = "camelCase")] -#[ts(export)] -enum Zoom { - Sm, - Md, - Lg, - Xl, -} - -impl Settings { - pub fn auto_update_enabled(app_handle: &AppHandle) -> bool { - // check something in auto updates - let store = app_handle.store(SETTINGS_FILE_NAME); - if store.is_err() { - error!("unable to open store {}", SETTINGS_FILE_NAME); - return false; - } - - let is_flatpak = env::var("FLATPAK_ID").is_ok(); - if is_flatpak { - return false; - } - - store - .unwrap() - .get("autoUpdate") - .and_then(|v| v.as_bool()) - .unwrap_or(true) - } -} diff --git a/desktop/src-tauri/src/system_tray.rs b/desktop/src-tauri/src/system_tray.rs deleted file mode 100644 index e3b63d7f2..000000000 --- a/desktop/src-tauri/src/system_tray.rs +++ /dev/null @@ -1,150 +0,0 @@ -use crate::{ - resource_watcher::{ProState, WorkspacesState}, - ui_messages::{OpenProInstanceMsg, OpenWorkspaceMsg}, - util, AppHandle, AppState, UiMessage, -}; -use log::{error, warn}; -use tauri::{ - menu::{Menu, MenuBuilder, MenuEvent, MenuItem, Submenu}, - tray::{MouseButton, TrayIcon, TrayIconEvent}, - Manager, Wry, -}; -use util::QUIT_EXIT_CODE; - -#[cfg(not(target_os = "macos"))] -pub static WARNING_SYSTEM_TRAY_ICON_BYTES: &'static [u8] = include_bytes!("../icons/icon_warning_system_tray_color.png"); -#[cfg(target_os = "macos")] -pub static WARNING_SYSTEM_TRAY_ICON_BYTES: &'static [u8] = include_bytes!("../icons/icon_warning_system_tray.png"); - -#[cfg(not(target_os = "macos"))] -pub static SYSTEM_TRAY_ICON_BYTES: &'static [u8] = include_bytes!("../icons/icon_system_tray_color.png"); -#[cfg(target_os = "macos")] -pub static SYSTEM_TRAY_ICON_BYTES: &'static [u8] = include_bytes!("../icons/icon_system_tray.png"); - -pub trait ToSystemTraySubmenu { - fn to_submenu(&self, app_handle: &AppHandle) -> anyhow::Result>; -} - -pub struct SystemTray {} - -impl SystemTray { - pub fn new() -> Self { - SystemTray {} - } -} - -impl SystemTray { - const QUIT_ID: &str = "quit"; - const SHOW_DASHBOARD_ID: &str = "show_dashboard"; -} - -impl SystemTray { - pub async fn init(&self, app_handle: &AppHandle) -> anyhow::Result> { - let mut menu = MenuBuilder::new(app_handle); - let show_dashboard = MenuItem::with_id( - app_handle, - Self::SHOW_DASHBOARD_ID, - "Show Dashboard", - true, - None::<&str>, - )?; - menu = menu.item(&show_dashboard); - - let state = app_handle.state::(); - - let mut workspaces = state.workspaces.write().await; - let submenu = workspaces.to_submenu(app_handle)?; - menu = menu.item(&submenu); - workspaces.set_submenu(submenu); - - let mut pro = state.pro.write().await; - let submenu = pro.to_submenu(app_handle)?; - menu = menu.item(&submenu); - pro.set_submenu(submenu); - - let quit = MenuItem::with_id(app_handle, Self::QUIT_ID, "Quit", true, None::<&str>)?; - menu = menu.item(&quit); - - let m = menu.build()?; - - Ok(m) - } - - pub fn get_menu_event_handler(&self) -> impl Fn(&AppHandle, MenuEvent) + Send + Sync + use<> { - |app, event| match event.id.as_ref() { - Self::QUIT_ID => app.exit(QUIT_EXIT_CODE), - Self::SHOW_DASHBOARD_ID => { - let app_state = app.state::(); - - tauri::async_runtime::block_on(async move { - if let Err(err) = app_state.ui_messages.send(UiMessage::ShowDashboard).await { - error!("Failed to broadcast show dashboard message: {}", err); - }; - }); - } - id => { - let app_state = app.state::(); - - tauri::async_runtime::block_on(async move { - if let Err(err) = app_state.ui_messages.send(UiMessage::ShowDashboard).await { - error!("Failed to broadcast show dashboard message: {}", err); - }; - if id.starts_with(WorkspacesState::IDENTIFIER_PREFIX) { - let tx = &app_state.ui_messages; - - if id == WorkspacesState::CREATE_WORKSPACE_ID { - if let Err(err) = tx - .send(UiMessage::OpenWorkspace(OpenWorkspaceMsg::empty())) - .await - { - error!("Failed to send create workspace message: {:?}", err); - }; - } else { - let workspace_id = id.replace(WorkspacesState::IDENTIFIER_PREFIX, ""); - if let Err(err) = tx - .send(UiMessage::OpenWorkspace(OpenWorkspaceMsg::with_id( - workspace_id, - ))) - .await - { - error!("Failed to send create workspace message: {:?}", err); - }; - } - } else if id.starts_with(ProState::IDENTIFIER_PREFIX) { - let tx = &app_state.ui_messages; - - let host = id.replace(ProState::IDENTIFIER_PREFIX, ""); - if let Err(err) = tx - .send(UiMessage::OpenProInstance(OpenProInstanceMsg { - host: Some(host), - })) - .await - { - error!("Failed to send open pro instance message: {:?}", err); - }; - } else { - warn!("Received unhandled click for ID: {}", id); - } - }); - } - } - } - - pub fn get_tray_icon_event_handler(&self) -> impl Fn(&TrayIcon, TrayIconEvent) + Send + Sync + use<> { - |icon, event| match event { - TrayIconEvent::DoubleClick { button, .. } => { - if button == MouseButton::Left { - let app_state = icon.app_handle().state::(); - - tauri::async_runtime::block_on(async move { - if let Err(err) = app_state.ui_messages.send(UiMessage::ShowDashboard).await - { - error!("Failed to broadcast show dashboard message: {}", err); - }; - }); - } - } - _ => {} - } - } -} diff --git a/desktop/src-tauri/src/ui_messages.rs b/desktop/src-tauri/src/ui_messages.rs deleted file mode 100644 index 983b22a5e..000000000 --- a/desktop/src-tauri/src/ui_messages.rs +++ /dev/null @@ -1,285 +0,0 @@ -use crate::AppState; -use crate::{custom_protocol::ParseError, window::WindowHelper, AppHandle}; -use log::{error, info, warn}; -use serde::{de, Deserialize, Serialize}; -use std::collections::{HashMap, VecDeque}; -use tauri::{Emitter, Manager, State}; -use tauri_plugin_notification::NotificationExt; -use tokio::sync::mpsc::Receiver; - -pub async fn send_ui_message( - app_state: State<'_, AppState>, - msg: UiMessage, - log_msg_on_failure: &str, -) { - if let Err(err) = app_state.ui_messages.send(msg).await { - error!("{}: {:?}, {}", log_msg_on_failure, err.0, err); - }; -} - -#[derive(Debug, Clone)] -pub struct UiMessageHelper { - app_handle: AppHandle, - app_name: String, - window_helper: WindowHelper, - message_buffer: VecDeque, - is_ready: bool, -} - -impl UiMessageHelper { - pub fn new(app_handle: AppHandle, app_name: String, window_helper: WindowHelper) -> Self { - Self { - app_handle, - app_name, - window_helper, - message_buffer: VecDeque::new(), - is_ready: false, - } - } - - pub async fn listen(&mut self, mut receiver: Receiver) { - while let Some(ui_msg) = receiver.recv().await { - match ui_msg { - UiMessage::Ready => { - self.is_ready = true; - - self.app_handle.get_webview_window("main").map(|w| w.show()); - while let Some(msg) = self.message_buffer.pop_front() { - let emit_result = self.app_handle.emit("event", msg); - if let Err(err) = emit_result { - warn!("Error sending message: {}", err); - } - } - } - UiMessage::ExitRequested => { - self.is_ready = false; - } - UiMessage::LoginRequired(msg) => { - info!("Login required: {} {}", msg.host, msg.provider); - - let main_window = self.app_handle.get_webview_window("main"); - if !self.is_ready || main_window.is_none() { - // send os notification if we aren't ready to display the main window - let title = "Login required".to_string(); - let body = format!( - "You have been logged out. Please log back in to {}", - msg.host, - ); - let _ = self - .app_handle - .notification() - .builder() - .title(title) - .body(body) - .show(); - continue; - } - - // let main window handle - let _ = self.app_handle.emit("event", UiMessage::LoginRequired(msg)); - } - // send all other messages to the UI - _ => self.handle_msg(ui_msg), - } - } - } - - fn handle_msg(&mut self, msg: UiMessage) { - if self.is_ready { - self.app_handle.get_webview_window("main").map(|w| w.show()); - let _ = self.app_handle.emit("event", msg); - } else { - // recreate window - self.message_buffer.push_back(msg); - - // create a new main window if we can't find it - let main_window = self.app_handle.get_webview_window("main"); - if main_window.is_none() { - let _ = self.window_helper.new_main(self.app_name.clone()); - } - } - } -} - -#[derive(Debug, Serialize, Clone)] -#[serde(tag = "type")] -#[allow(dead_code)] -pub enum UiMessage { - Ready, - ExitRequested, - ShowDashboard, - ShowToast(ShowToastMsg), - OpenWorkspace(OpenWorkspaceMsg), - OpenProInstance(OpenProInstanceMsg), - SetupPro(SetupProMsg), - ImportWorkspace(ImportWorkspaceMsg), - CommandFailed(ParseError), - LoginRequired(LoginRequiredMsg), -} - -#[derive(Debug, Serialize, Clone)] -pub struct ShowToastMsg { - title: String, - message: String, - status: ToastStatus, -} - -impl ShowToastMsg { - pub fn new(title: String, message: String, status: ToastStatus) -> Self { - Self { - title, - message, - status, - } - } -} - -// WARN: Needs to match the UI's toast status -#[derive(Debug, Serialize, Clone)] -#[serde(rename_all = "lowercase")] -#[allow(dead_code)] -pub enum ToastStatus { - Success, - Error, - Warning, - Info, - Loading, -} - -#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)] -#[serde(deny_unknown_fields)] -pub struct OpenWorkspaceMsg { - #[serde(rename(deserialize = "workspace"))] - pub workspace_id: Option, - #[serde(rename(deserialize = "provider"))] - pub provider_id: Option, - pub ide: Option, - pub source: Option, -} - -#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)] -#[serde(deny_unknown_fields)] -pub struct OpenProInstanceMsg { - pub host: Option, -} - -#[derive(Debug, PartialEq, Serialize, Clone)] -#[serde(deny_unknown_fields)] -pub struct ImportWorkspaceMsg { - pub workspace_id: String, - pub workspace_uid: String, - pub devsy_pro_host: String, - pub project: String, - pub options: HashMap, -} - -impl<'de> Deserialize<'de> for ImportWorkspaceMsg { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let mut options = HashMap::deserialize(deserializer)?; - - let workspace_id = options - .remove("workspace-id") - .ok_or_else(|| de::Error::missing_field("workspace-id"))?; - - let workspace_uid = options - .remove("workspace-uid") - .ok_or_else(|| de::Error::missing_field("workspace-uid"))?; - - let devsy_pro_host = options - .remove("devsy-pro-host") - .ok_or_else(|| de::Error::missing_field("devsy-pro-host"))?; - - let project = options - .remove("project") - .ok_or_else(|| de::Error::missing_field("project"))?; - - Ok(ImportWorkspaceMsg { - workspace_id, - workspace_uid, - devsy_pro_host, - project, - options, - }) - } -} - -#[derive(Debug, PartialEq, Serialize, Clone)] -#[serde(deny_unknown_fields)] -pub struct SetupProMsg { - pub host: String, - #[serde(rename(serialize = "accessKey"))] - pub access_key: Option, - pub options: Option>, -} - -impl<'de> Deserialize<'de> for SetupProMsg { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - let mut all_fields = HashMap::::deserialize(deserializer)?; - - let host = all_fields - .remove("host") - .ok_or_else(|| de::Error::missing_field("host"))?; - - let mut access_key = all_fields.remove("access_key"); - if access_key.is_none() { - access_key = all_fields.remove("accessKey"); - } - - // Options are urlencoded - let options = all_fields.remove("options"); - if let Some(options) = options { - let options = - serde_urlencoded::from_str::>(&options).map_err(|err| { - de::Error::custom(format!("Failed to url decode options: {}", err)) - })?; - let options = - serde_json::from_str::>(&options[0].0).map_err(|err| { - de::Error::custom(format!("Failed to json parse options: {}", err)) - })?; - - Ok(SetupProMsg { - host, - access_key, - options: Some(options), - }) - } else { - Ok(SetupProMsg { - host, - access_key, - options: None, - }) - } - } -} - -impl OpenWorkspaceMsg { - pub fn empty() -> OpenWorkspaceMsg { - OpenWorkspaceMsg { - workspace_id: None, - provider_id: None, - ide: None, - source: None, - } - } - pub fn with_id(id: String) -> OpenWorkspaceMsg { - OpenWorkspaceMsg { - workspace_id: Some(id), - provider_id: None, - ide: None, - source: None, - } - } -} - -#[derive(Debug, PartialEq, Serialize, Clone)] -#[serde(deny_unknown_fields)] -pub struct LoginRequiredMsg { - pub host: String, - pub provider: String, -} diff --git a/desktop/src-tauri/src/ui_ready.rs b/desktop/src-tauri/src/ui_ready.rs deleted file mode 100644 index d28ea6c7a..000000000 --- a/desktop/src-tauri/src/ui_ready.rs +++ /dev/null @@ -1,12 +0,0 @@ -use crate::{commands::DevsyCommandError, AppState, UiMessage}; -use log::error; - -// This command is expected to be invoked exactly once per window -#[tauri::command] -pub async fn ui_ready(state: tauri::State<'_, AppState>) -> Result<(), DevsyCommandError> { - if let Err(err) = state.ui_messages.send(UiMessage::Ready).await { - error!("Failed to broadcast UI ready message: {:?}", err); - } - - Ok(()) -} diff --git a/desktop/src-tauri/src/updates.rs b/desktop/src-tauri/src/updates.rs deleted file mode 100644 index 9cbb5011b..000000000 --- a/desktop/src-tauri/src/updates.rs +++ /dev/null @@ -1,353 +0,0 @@ -use crate::{settings::Settings, window::WindowHelper, AppHandle, AppState}; -use anyhow::Context; -use chrono::{DateTime, Utc}; -use lazy_static::lazy_static; -use log::{debug, error, info, warn}; -use regex::Regex; -use reqwest::{Client, Method}; -use serde::{Deserialize, Serialize}; -use std::collections::HashMap; -use tauri::Manager; -use tauri_plugin_notification::NotificationExt; -use tauri_plugin_updater::UpdaterExt; -use thiserror::Error; -use tokio::fs::File; -use ts_rs::TS; - -const UPDATE_POLL_INTERVAL: std::time::Duration = std::time::Duration::from_secs(60 * 10); -const RELEASES_URL: &str = "https://api.github.com/repos/devsy-org/devsy/releases"; -const FALLBACK_RELEASES_URL: &str = "https://api.github.com/repos/devsy-org/devsy/releases"; - -#[derive(Error, Debug)] -pub enum UpdateError { - #[error("unable to get latest release {0}")] - NoReleaseFound(String), - #[error("failed to check for updates {0}")] - CheckUpdate(#[from] tauri_plugin_updater::Error), - #[error("failed to fetch releases {0}")] - FetchRelease(#[from] anyhow::Error), -} -impl serde::Serialize for UpdateError { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - serializer.serialize_str(self.to_string().as_ref()) - } -} - -pub type Releases = Vec; - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, TS)] -#[serde(rename_all = "snake_case")] -#[ts(export)] -pub struct Release { - #[ts(type = "String")] - pub url: String, - pub html_url: String, - pub assets_url: String, - pub upload_url: String, - pub tarball_url: Option, - pub zipball_url: Option, - pub id: u64, - pub node_id: String, - pub tag_name: String, - pub target_commitish: String, - pub name: Option, - pub body: Option, - pub draft: bool, - pub prerelease: bool, - pub created_at: Option>, - pub published_at: Option>, - pub author: Author, - pub assets: Vec, -} -impl Release { - pub fn is_pre(&self) -> bool { - lazy_static! { - static ref PRE_REGEX: Regex = Regex::new(r"^.*-(alpha|beta).\d*$").unwrap(); - } - PRE_REGEX.is_match(&self.tag_name) - } - - pub fn trim_pre(&self) -> String { - lazy_static! { - static ref PRE_REPL_REGEX: Regex = Regex::new(r"-(alpha|beta).\d*").unwrap(); - } - PRE_REPL_REGEX.replace_all(&self.tag_name, "").to_string() - } -} - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, TS)] -#[serde(rename_all = "snake_case")] -#[ts(export)] -#[non_exhaustive] -pub struct Asset { - pub url: String, - pub browser_download_url: String, - pub id: u64, - pub node_id: String, - pub name: String, - pub label: Option, - pub state: String, - pub content_type: String, - pub size: i64, - pub download_count: i64, - pub created_at: DateTime, - pub updated_at: DateTime, -} - -#[derive(Debug, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, TS)] -#[serde(rename_all = "snake_case")] -#[ts(export)] -#[non_exhaustive] -pub struct Author { - pub login: String, - pub id: u64, - pub node_id: String, - #[ts(type = "String")] - pub avatar_url: String, - pub gravatar_id: String, - pub url: String, - pub html_url: String, - pub followers_url: String, - pub following_url: String, - pub gists_url: String, - pub starred_url: String, - pub subscriptions_url: String, - pub organizations_url: String, - pub repos_url: String, - pub events_url: String, - pub received_events_url: String, - pub r#type: String, - pub site_admin: bool, -} - -#[tauri::command] -pub async fn get_pending_update(state: tauri::State<'_, AppState>) -> Result { - let release = state.pending_update.lock().unwrap(); - release.clone().ok_or(()) -} - -#[tauri::command] -pub async fn check_updates(app_handle: AppHandle) -> Result { - let updater = app_handle - .updater() - .map_err(|e| UpdateError::CheckUpdate(e))?; - match updater.check().await { - Ok(update) => { - let update_available = update.is_some(); - info!("Update check completed, result: {}", update_available); - - return Ok(update_available); - } - Err(e) => { - error!("Failed to get update: {}", e); - - return Err(UpdateError::CheckUpdate(e)); - } - } -} - -#[derive(Clone, Debug)] -pub struct UpdateHelper<'a> { - app_handle: &'a AppHandle, -} - -impl<'a> UpdateHelper<'a> { - pub fn new(app_handle: &'a AppHandle) -> Self { - Self { - app_handle: &app_handle, - } - } - - pub async fn poll(&self) { - #[cfg(debug_assertions)] // disable during development - { - return; - } - - loop { - // check if we have updated the app recently - // if so, show changelog in app - - let app_handle = self.app_handle.clone(); - let updater = app_handle.updater(); - if updater.is_err() { - error!("Failed to get updater"); - - continue; - } - info!("Attempting to check update"); - if let Ok(update) = updater.unwrap().check().await { - match update { - Some(..) => info!("update available"), - None => info!("no update available"), - }; - - if let Some(update) = update { - let state = self.app_handle.state::(); - let update_installed_state = *state.update_installed.lock().unwrap(); - // prevent ourselves from installing the same update multiple times - if update_installed_state { - return; - } - - let new_version = update.version.as_str(); - let update_helper = UpdateHelper::new(&self.app_handle); - if let Err(e) = update_helper.update_app_releases(new_version).await { - error!("Failed to update app releases: {}", e); - } - - if Settings::auto_update_enabled(&self.app_handle) { - let on_chunk = |_, _| {}; - let on_download_fininshed = || { - info!("Download for version {} finished", new_version); - }; - info!( - "Update available, current: {}, new: {}", - update.current_version, new_version, - ); - info!("Starting to download"); - if let Err(err) = update - .download_and_install(on_chunk, on_download_fininshed) - .await - { - error!("Failed to download and install update: {}", err); - } - - let window_helper = WindowHelper::new(self.app_handle.clone()); - let _ = window_helper.new_update_ready_window(); - - let state = self.app_handle.state::(); - let mut pending_update_state = state.pending_update.lock().unwrap(); - *pending_update_state = None; - - let mut update_installed_state = state.update_installed.lock().unwrap(); - *update_installed_state = true; - } else { - match self.update_app_releases(new_version).await { - Ok(release) => { - if let Err(err) = self.notify_update_available(&release).await { - warn!("Failed to send update notification: {}", err); - } - - // display update available in the UI - let state = self.app_handle.state::(); - let mut pending_update_state = state.pending_update.lock().unwrap(); - *pending_update_state = Some(release); - } - Err(e) => { - error!("Failed to update app releases: {}", e); - } - } - } - } - } - tokio::time::sleep(UPDATE_POLL_INTERVAL).await; - } - } - - pub async fn update_app_releases(&self, new_version: &str) -> Result { - let releases = self - .fetch_releases() - .await - .map_err(UpdateError::FetchRelease)?; - let state = self.app_handle.state::(); - let mut releases_state = state.releases.lock().unwrap(); - *releases_state = releases; - - Ok(releases_state - .iter() - .find(|r| r.tag_name.contains(new_version)) - .ok_or(UpdateError::NoReleaseFound( - "No releases found in releases state".to_string(), - ))? - .clone()) - } - - pub async fn fetch_releases_from_url(&self, url: &str) -> anyhow::Result> { - let client = Client::builder().user_agent("devsy-org/devsy").build()?; - - let response = client - .request(Method::GET, url) - .header("Accept", "application/vnd.github+json") - .header("X-GitHub-Api-Version", "2022-11-28") - .send() - .await - .with_context(|| format!("Fetch releases from {}", url))?; - - if !response.status().is_success() { - return Err(anyhow::anyhow!( - "Status code {} from {}", - response.status(), - url - )); - } - - let releases = response - .json::>() - .await - .with_context(|| format!("Parse JSON from {}", url))?; - - Ok(releases) - } - - pub async fn fetch_releases(&self) -> anyhow::Result { - debug!("Querying releases from update server: {}", RELEASES_URL); - let releases = match self.fetch_releases_from_url(RELEASES_URL).await { - Ok(releases) => releases, - Err(_) => { - debug!("Query from main update server failed. Querying from fallback URL: {}", FALLBACK_RELEASES_URL); - match self.fetch_releases_from_url(FALLBACK_RELEASES_URL).await { - Ok(releases) => releases, - Err(e2) => { - return Err(e2).context("No endpoint delivered updates."); - } - } - } - }; - - let releases = &releases - .into_iter() - .filter(|release| !release.draft) - .map(|release| (release.tag_name.clone(), release)) - .collect::>(); - - let mut releases = releases - .into_iter() - .filter_map(|(_, release)| { - if release.prerelease || release.is_pre() { - let stable_tag_name = release.trim_pre(); - if releases.get(&stable_tag_name).is_some() { - return None; - } - } - - Some(release.clone()) - }) - .collect::>(); - releases.sort_by(|a, b| b.tag_name.cmp(&a.tag_name)); - - Ok(releases) - } - - async fn notify_update_available(&self, release: &Release) -> anyhow::Result<()> { - if let Ok(mut target) = self.app_handle.path().app_cache_dir() { - target.push(format!("update_{}", release.tag_name.clone())); - - if target.exists() { - return Ok(()); - } - let _ = File::create(target).await?; - } - - let builder = self.app_handle.notification().builder(); - _ = builder - .title("Update available") - .body(&format!("Version {} is available", release.tag_name)) - .show()?; - - Ok(()) - } -} diff --git a/desktop/src-tauri/src/util.rs b/desktop/src-tauri/src/util.rs deleted file mode 100644 index 1bd98a55c..000000000 --- a/desktop/src-tauri/src/util.rs +++ /dev/null @@ -1,154 +0,0 @@ -use log::{debug, error}; -#[cfg(windows)] -use log::info; -use std::time::{Duration, Instant}; - -// Exit code for the window to signal that the application was quit by the user through the system tray -// and event handlers may not use prevent_exit(). -pub const QUIT_EXIT_CODE: i32 = 1337; - -/// `measure` the duration it took a function to execute. -#[allow(dead_code)] -pub fn measure(f: F) -> Duration -where - F: Fn(), -{ - let start = Instant::now(); - f(); - - start.elapsed() -} - -/// Kills all child processes of a pid on windows, does nothing on all the other OSs. -pub fn kill_child_processes(#[cfg_attr(not(windows), allow(unused_variables))] parent_pid: u32) { - #[cfg(windows)] - { - use windows::Win32::Foundation::*; - use windows::Win32::System::Diagnostics::ToolHelp::*; - use windows::Win32::System::Threading::*; - - info!("Trying to kill child processes of PID {}.", parent_pid); - - let snapshot: HANDLE = unsafe { CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0).unwrap() }; - - if snapshot.is_invalid() { - info!("Failed to take process snapshot."); - return; - } - - info!("Obtained process snapshot."); - - let mut process_entry: PROCESSENTRY32 = unsafe { std::mem::zeroed() }; - process_entry.dwSize = std::mem::size_of::() as u32; - - unsafe { - if Process32First(snapshot, &mut process_entry).as_bool() { - loop { - // Check if the process we're looking at is a *direct* child process. - if process_entry.th32ParentProcessID == parent_pid { - let pid = process_entry.th32ProcessID; - - // Extract zero-terminated string for the executable. - let exe_name = process_entry - .szExeFile - .iter() - .take_while(|&&ch| ch != 0) - .map(|&ch| ch as u8 as char) - .collect::(); - - info!( - "Found process with PID {} as child of PID {} ({}).", - pid, parent_pid, exe_name, - ); - - // Special exception: We do not clean up tauri's webviews. For now. - if exe_name == "msedgewebview2.exe" { - info!("Ignoring process PID {}.", pid); - } else { - // Recursively terminate children of children. - kill_child_processes(pid); - - // Obtain handle for the child process. - let child_process_handle: windows::core::Result = - OpenProcess(PROCESS_TERMINATE, false, pid); - - if child_process_handle.is_err() { - error!( - "Unable to open process {}: {:?}", - pid, - child_process_handle.unwrap_err() - ); - } else { - let child_process_handle: HANDLE = child_process_handle.unwrap(); - - // Attempt to terminate the child process. - let close_result = TerminateProcess(child_process_handle, 1); - - // Clean up the handle. - CloseHandle(child_process_handle); - - if !close_result.as_bool() { - error!("Unable to terminate process {}", pid); - } else { - info!("Terminated process {}.", pid); - } - } - } - } - - // Obtain next process or end the loop if there is none available. - if !Process32Next(snapshot, &mut process_entry).as_bool() { - break; - } - } - } - - // Clean up the snapshot. - CloseHandle(snapshot); - } - } -} - -pub fn kill_process(pid: u32) { - #[cfg(not(windows))] - { - use nix::sys::signal::{self, Signal}; - use nix::unistd::Pid; - let pid = Pid::from_raw(pid as i32); - let signal = Signal::SIGINT; - match signal::kill(pid, signal) { - Ok(_) => debug!("Successfully killed process {}", pid), - Err(err) => { - error!("Failed to kill process: {}", err); - return; - } - }; - return; - } - - #[cfg(windows)] - { - use crate::util::kill_child_processes; - use windows::Win32::Foundation::{CloseHandle, HANDLE}; - use windows::Win32::System::Threading::{OpenProcess, TerminateProcess, PROCESS_TERMINATE}; - - // kill_child_processes(pid); - - unsafe { - let handle: windows::core::Result = - OpenProcess(PROCESS_TERMINATE, false, pid); - if handle.is_err() { - error!("unable to open process {}: {:?}", pid, handle.unwrap_err()); - return; - } - let handle: HANDLE = handle.unwrap(); - - let result = TerminateProcess(handle, 1); - CloseHandle(handle); - if !result.as_bool() { - error!("unable to terminate process {}", pid); - return - } - } - } -} diff --git a/desktop/src-tauri/src/window.rs b/desktop/src-tauri/src/window.rs deleted file mode 100644 index 793d0d721..000000000 --- a/desktop/src-tauri/src/window.rs +++ /dev/null @@ -1,266 +0,0 @@ -use crate::AppHandle; -use anyhow::{Context, Result}; -use log::error; -use tauri::{WebviewWindow, WebviewWindowBuilder, Wry, WebviewUrl}; - -#[derive(Clone, Debug)] -pub struct WindowHelper { - app_handle: AppHandle, -} - -impl WindowHelper { - pub fn new(app_handle: AppHandle) -> Self { - Self { app_handle } - } - - pub fn setup(&self, _window: &WebviewWindow) { - // open browser devtools automatically during development - #[cfg(debug_assertions)] - { - _window.open_devtools(); - } - - // Window vibrancy - #[cfg(target_os = "macos")] - { - window_vibrancy::apply_vibrancy( - _window, - window_vibrancy::NSVisualEffectMaterial::Sidebar, - None, - None, - ) - .expect("Unsupported platform! 'apply_vibrancy' is only supported on macOS"); - } - } - - pub fn new_main(&self, app_name: String) -> Result<()> { - let handle = self.app_handle.clone(); - let self_ = self.clone(); - - #[cfg(target_os = "macos")] - self.set_dock_icon_visibility(true); - - self.app_handle - .run_on_main_thread(move || { - // Config should match the config in `src-tauri/tauri.conf.json` for a consistent window appearance - let window_builder = - WebviewWindowBuilder::new(&handle, "main".to_string(), WebviewUrl::default()) - .title(app_name) - .fullscreen(false) - .resizable(true) - .transparent(true) - .min_inner_size(1000.0, 700.0) - .inner_size(1200.0, 800.0) - .visible(false); - - #[cfg(target_os = "macos")] - let window_builder = window_builder - .title_bar_style(tauri::TitleBarStyle::Overlay) - .hidden_title(true); - - let window = window_builder.build(); - - if let Ok(window) = window { - self_.setup(&window); - } - }) - .context("Failed to create main window") - } - - pub fn new_update_ready_window(&self) -> Result<()> { - let handle = self.app_handle.clone(); - - self.app_handle - .run_on_main_thread(move || { - let window_builder = WebviewWindowBuilder::new( - &handle, - "update_ready".to_string(), - WebviewUrl::App("update-window/index.html".into()), - ) - .title("Devsy Update") - .fullscreen(false) - .resizable(false) - .transparent(false) - .inner_size(300.0, 175.0) - .visible(true); - - if let Err(err) = window_builder.build() { - error!("Failed to create update ready window: {}", err); - } - }) - .context("Failed to create update ready window") - } -} - -#[cfg(target_os = "macos")] -use cocoa::{ - appkit::{ - NSApp, NSApplicationActivateIgnoringOtherApps, - NSApplicationActivationPolicy::{self, *}, - NSImage, - }, - base::{id, nil, BOOL}, - foundation::{NSArray, NSData, NSString}, -}; -#[cfg(target_os = "macos")] -use dispatch::Queue; -#[cfg(target_os = "macos")] -use std::time::Duration; -#[cfg(target_os = "macos")] -use tauri::ActivationPolicy; - -#[cfg(target_os = "macos")] -#[allow(dead_code)] -impl WindowHelper { - unsafe fn get_current_application() -> cocoa::base::id { - msg_send![class!(NSRunningApplication), currentApplication] - } - - unsafe fn is_current_app_active() -> bool { - let current_app = Self::get_current_application(); - #[cfg(not(target_arch = "aarch64"))] - { - let is_active: BOOL = msg_send![current_app, isActive]; - - return is_active == cocoa::base::YES; - } - - #[cfg(target_arch = "aarch64")] - { - let is_active: BOOL = msg_send![current_app, isActive]; - - return is_active; - } - } - - pub fn set_dock_icon_visibility(&self, visible: bool) { - unsafe { - let psn = ProcessSerialNumber { - lowLongOfPSN: K_CURRENT_PROCESS, - highLongOfPSN: 0, - }; - - if !visible { - let _result = TransformProcessType( - &psn as *const ProcessSerialNumber, - TransformState::ProcessTransformToUIElementApplication, - ); - if _result != 0 { - error!("Failed to set dock icon visibility: {}", _result); - } - return; - } - - let is_active = Self::is_current_app_active(); - if is_active { - let application_id = NSString::alloc(nil).init_str("com.apple.dock"); - let running_applications: id = msg_send![ - class!(NSRunningApplication), - runningApplicationsWithBundleIdentifier: application_id - ]; - for i in 0..NSArray::count(running_applications) { - let app: id = msg_send![running_applications, objectAtIndex: i]; - let _: () = msg_send![ - app, - activateWithOptions: NSApplicationActivateIgnoringOtherApps - ]; - break; - } - - Queue::main().exec_after(Duration::from_millis(1), move || { - let result = TransformProcessType( - &psn as *const ProcessSerialNumber, - TransformState::ProcessTransformToForegroundApplication, - ); - if result != 0 { - error!("Failed to set dock icon visibility: {}", result); - } - - Queue::main().exec_after(Duration::from_millis(1), move || { - let _: () = msg_send![ - Self::get_current_application(), - activateWithOptions: NSApplicationActivateIgnoringOtherApps - ]; - }); - }); - } else { - let _result = TransformProcessType( - &psn as *const ProcessSerialNumber, - TransformState::ProcessTransformToForegroundApplication, - ); - } - self.set_default_app_icon(); - } - } - - fn set_default_app_icon(&self) { - let _ = self.app_handle.run_on_main_thread(move || unsafe { - let app: id = msg_send![class!(NSApplication), sharedApplication]; - let icon = include_bytes!("../icons/icon.icns"); - let data = NSData::dataWithBytes_length_( - nil, - icon.as_ptr() as *const std::os::raw::c_void, - icon.len() as u64, - ); - let app_icon = NSImage::initWithData_(NSImage::alloc(nil), data); - - let _res: () = msg_send![app, setApplicationIconImage: app_icon]; - }); - } - - // May work at some point, will keep function here for now - fn set_activation_policy(act_pol: ActivationPolicy) { - let act_pol = match act_pol { - ActivationPolicy::Regular => NSApplicationActivationPolicyRegular, - ActivationPolicy::Accessory => NSApplicationActivationPolicyAccessory, - ActivationPolicy::Prohibited => NSApplicationActivationPolicyProhibited, - _ => unimplemented!(), - }; - - unsafe { - let ns_app = NSApp(); - let _res: BOOL = msg_send![ns_app, setActivationPolicy: act_pol]; - } - } - - // May work at some point, will keep function here for now - pub fn get_activation_policy() -> ActivationPolicy { - unsafe { - let ns_app = NSApp(); - let res: NSApplicationActivationPolicy = msg_send![ns_app, activationPolicy]; - match res { - NSApplicationActivationPolicyRegular => ActivationPolicy::Regular, - NSApplicationActivationPolicyAccessory => ActivationPolicy::Accessory, - NSApplicationActivationPolicyProhibited => ActivationPolicy::Prohibited, - _ => unimplemented!(), - } - } - } -} -#[cfg(target_os = "macos")] -#[repr(u32)] -enum TransformState { - // https://developer.apple.com/documentation/applicationservices/1501117-anonymous/kprocesstransformtoforegroundapplication?language=objc - ProcessTransformToForegroundApplication = 1, - // https://developer.apple.com/documentation/applicationservices/1501117-anonymous/kprocesstransformtouielementapplication?language=objc - ProcessTransformToUIElementApplication = 4, -} - -#[cfg(target_os = "macos")] -const K_CURRENT_PROCESS: u32 = 2; - -#[cfg(target_os = "macos")] -#[allow(non_snake_case)] -#[repr(C)] -#[derive(Clone, Copy, Debug, Default, Eq, Hash, PartialEq)] -pub struct ProcessSerialNumber { - pub highLongOfPSN: u32, - pub lowLongOfPSN: u32, -} - -#[cfg(target_os = "macos")] -#[link(name = "ApplicationServices", kind = "framework")] -unsafe extern "C" { - fn TransformProcessType(psn: *const ProcessSerialNumber, transformState: TransformState) - -> i32; -} diff --git a/desktop/src-tauri/tauri.conf.json b/desktop/src-tauri/tauri.conf.json deleted file mode 100644 index ee59e209a..000000000 --- a/desktop/src-tauri/tauri.conf.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "build": { - "beforeDevCommand": "yarn dev", - "beforeBuildCommand": "yarn build", - "frontendDist": "../dist", - "devUrl": "http://localhost:1420" - }, - "bundle": { - "active": true, - "category": "DeveloperTool", - "copyright": "", - "externalBin": [ - "bin/devsy" - ], - "resources": [], - "icon": [ - "icons/32x32.png", - "icons/128x128.png", - "icons/128x128@2x.png", - "icons/icon.icns", - "icons/icon.ico" - ], - "shortDescription": "Spin up dev environments in any infra", - "longDescription": "Dev-environments-as-code like Terraform but for dev environments. Like Codespaces but open-source, client-only and unopinionated: Works with any IDE and lets you use any cloud, kubernetes or just on localhost docker.", - "targets": "all", - "createUpdaterArtifacts": true - }, - "productName": "Devsy", - "mainBinaryName": "Devsy Desktop", - "version": "../package.json", - "identifier": "sh.devsy.devsy", - "plugins": { - "updater": { - "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEYyOTYxMkJERENCNkU3OTMKUldTVDU3YmN2UktXOG9WYzlSR0tzRzVCZzNyUXY5QVl6S3F2QUpnQkpLR0Y5YURQcjRHVlVSZFcK", - "windows": { - "installMode": "passive" - }, - "endpoints": [ - "https://github.com/devsy-org/devsy/releases/latest/download/latest.json" - ] - } - }, - "app": { - "withGlobalTauri": false, - "macOSPrivateApi": true, - "security": { - "csp": null - }, - "windows": [ - { - "title": "Devsy", - "width": 1200, - "height": 800, - "minWidth": 1000, - "minHeight": 700, - "x": 0, - "y": 0, - "focus": false, - "titleBarStyle": "Overlay", - "fullscreen": false, - "resizable": true, - "hiddenTitle": true, - "transparent": true, - "visible": false - } - ] - } -} diff --git a/desktop/src-tauri/tauri.linux.conf.json b/desktop/src-tauri/tauri.linux.conf.json deleted file mode 100644 index 23d7f405b..000000000 --- a/desktop/src-tauri/tauri.linux.conf.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "bundle": { - "linux": { - "deb": { - "depends": ["libwebkit2gtk-4.1-0", "libgtk-3-0"] - }, - "appimage": { - "bundleMediaFramework": true - }, - "rpm": { - "depends": ["webkit2gtk4.1", "gtk3"] - } - } - } -} diff --git a/desktop/src-tauri/tauri.macos.conf.json b/desktop/src-tauri/tauri.macos.conf.json deleted file mode 100644 index a93e43aba..000000000 --- a/desktop/src-tauri/tauri.macos.conf.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "bundle": { - "macOS": { - "entitlements": "./entitlements.plist", - "exceptionDomain": "", - "frameworks": [], - "providerShortName": null, - "signingIdentity": "-", - "dmg": { - "background": "dmg-background.png", - "windowSize": { - "width": 660, - "height": 400 - }, - "appPosition": { - "x": 180, - "y": 160 - }, - "applicationFolderPosition": { - "x": 480, - "y": 160 - } - } - } - } -} diff --git a/desktop/src-tauri/tauri.windows.conf.json b/desktop/src-tauri/tauri.windows.conf.json deleted file mode 100644 index 8a5410685..000000000 --- a/desktop/src-tauri/tauri.windows.conf.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "bundle": { - "windows": { - "certificateThumbprint": null, - "digestAlgorithm": "sha256", - "timestampUrl": "", - "webviewInstallMode": { - "type": "embedBootstrapper" - }, - "nsis": { - "displayLanguageSelector": false, - "installMode": "currentUser" - } - } - } -} diff --git a/desktop/src/App/App.tsx b/desktop/src/App/App.tsx deleted file mode 100644 index 31fdc7bbd..000000000 --- a/desktop/src/App/App.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import { Box, Code, Container, Link, Text, VStack, useColorModeValue } from "@chakra-ui/react" -import { useEffect, useMemo } from "react" -import { Link as RouterLink, useMatch, useRouteError } from "react-router-dom" -import { - DevsyProvider, - ProInstancesProvider, - WorkspaceStore, - WorkspaceStoreProvider, - useChangeSettings, -} from "@/contexts" -import { Routes } from "@/routes.constants" -import { OSSApp } from "./OSSApp" -import { ProApp } from "./ProApp" -import { usePreserveLocation } from "./usePreserveLocation" -import { ErrorBoundary } from "react-error-boundary" -import { ErrorMessageBox } from "@/components" - -export function App() { - const routeMatchPro = useMatch(`${Routes.PRO}/*`) - usePreserveLocation() - usePartyParrot() - - const store = useMemo(() => { - if (routeMatchPro == null) { - return new WorkspaceStore() - } - }, [routeMatchPro]) - - return ( - ( - - )}> - {routeMatchPro == null ? ( - - - - - - - - ) : ( - - )} - - ) -} - -export function ErrorPage() { - const error = useRouteError() - const contentBackgroundColor = useColorModeValue("white", "background.darkest") - - return ( - - - - Whoops, something went wrong or this page doesn't exist. - - - Go back to home - - - {JSON.stringify(error, null, 2)}{" "} - - - - ) -} - -function usePartyParrot() { - const { set: setSettings, settings } = useChangeSettings() - - useEffect(() => { - const handler = (event: KeyboardEvent) => { - if (event.shiftKey && event.ctrlKey && event.key.toLowerCase() === "p") { - const current = settings.partyParrot - setSettings("partyParrot", !current) - } - } - document.addEventListener("keyup", handler) - - return () => document.addEventListener("keyup", handler) - }, [setSettings, settings.partyParrot]) -} diff --git a/desktop/src/App/Changelog.tsx b/desktop/src/App/Changelog.tsx deleted file mode 100644 index 53e76a3d6..000000000 --- a/desktop/src/App/Changelog.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import { Box, Heading, Link, ListItem, UnorderedList } from "@chakra-ui/react" -import Markdown from "markdown-to-jsx" -import { client } from "@/client/client" - -export type TLinkClickEvent = React.MouseEvent & { target: HTMLLinkElement } -export type TChangeLogProps = Readonly<{ rawMarkdown: string }> - -export function Changelog({ rawMarkdown }: TChangeLogProps) { - return ( - - { - e.preventDefault() - client.openUrl(e.target.href) - }, - }, - }, - ul: { - component: UnorderedList, - }, - li: { - component: ListItem, - }, - }, - }}> - {rawMarkdown} - - - ) -} diff --git a/desktop/src/App/OSSApp.tsx b/desktop/src/App/OSSApp.tsx deleted file mode 100644 index c9876a229..000000000 --- a/desktop/src/App/OSSApp.tsx +++ /dev/null @@ -1,272 +0,0 @@ -import { client } from "@/client/client" -import { QueryKeys } from "@/queryKeys" -import { - Box, - Flex, - Grid, - GridItem, - GridProps, - HStack, - LinkBox, - LinkOverlay, - Text, - VStack, - useColorModeValue, - useToken, -} from "@chakra-ui/react" -import { useQuery } from "@tanstack/react-query" -import { useEffect, useMemo } from "react" -import { Outlet, Link as RouterLink, useMatch, useNavigate } from "react-router-dom" -import { useBorderColor } from "@/Theme" -import { Notifications, Sidebar, SidebarMenuItem } from "@/components" -import { StatusBar } from "@/components/Layout/StatusBar" -import { Toolbar } from "@/components/Layout/Toolbar" -import { SIDEBAR_WIDTH, STATUS_BAR_HEIGHT } from "@/constants" -import { ToolbarProvider, useProviders, useSettings } from "@/contexts" -import { Briefcase, Cog, Stack3D } from "@/icons" -import { isLinux, isMacOS } from "@/lib" -import { Routes } from "@/routes.constants" -import { useWelcomeModal } from "@/useWelcomeModal" -import { showTitleBar, titleBarSafeArea } from "./constants" -import { useAppReady } from "./useAppReady" - -export function OSSApp() { - const navigate = useNavigate() - const { errorModal, changelogModal, proLoginModal } = useAppReady() - const rootRouteMatch = useMatch(Routes.ROOT) - const { sidebarPosition } = useSettings() - const contentBackgroundColor = useColorModeValue("white", "background.darkest") - const actionHoverColor = useColorModeValue("gray.100", "gray.700") - const toolbarHeight = useToken("sizes", showTitleBar ? "28" : "20") - const borderColor = useBorderColor() - const showTitle = isMacOS || isLinux - - const providerUpdateInfo = useProviderUpdates() - const providerUpdateCount = providerUpdateInfo?.length ?? 0 - - const mainGridProps = useMemo(() => { - if (sidebarPosition === "right") { - return { templateAreas: `"main sidebar"`, gridTemplateColumns: `1fr ${SIDEBAR_WIDTH}` } - } - - return { templateAreas: `"sidebar main"`, gridTemplateColumns: `${SIDEBAR_WIDTH} 1fr` } - }, [sidebarPosition]) - - useEffect(() => { - if (rootRouteMatch !== null) { - navigate(Routes.WORKSPACES) - } - }, [navigate, rootRouteMatch]) - - const { modal: welcomeModal } = useWelcomeModal() - - return ( - <> - - {showTitleBar && } - - - - - - }> - Workspaces - - }> - Providers - - }> - Settings - - - - - - - - - - - - - - - - - - Routes.toAction(action.id)} - badgeNumber={providerUpdateCount} - providerUpdates={ - providerUpdateInfo && - providerUpdateCount > 0 && ( - <> - {providerUpdateInfo.map(({ providerName }) => ( - - - - - - Provider {providerName} - - - Update available - - - ))} - - ) - } - /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {welcomeModal} - {errorModal} - {changelogModal} - {proLoginModal} - - ) -} - -type TTitleBarProps = Readonly<{ - showTitle?: boolean -}> -function TitleBar({ showTitle = true }: TTitleBarProps) { - return ( - - {showTitle && ( - - Devsy - - )} - - ) -} - -function useProviderUpdates() { - const [[providers]] = useProviders() - - const { data: providerUpdateInfo } = useQuery({ - // eslint-disable-next-line @tanstack/query/exhaustive-deps - queryKey: QueryKeys.PROVIDERS_CHECK_UPDATE_ALL, - queryFn: async () => { - if (providers === undefined || Object.keys(providers).length === 0) { - return - } - - const results = await Promise.allSettled( - Object.entries(providers) - .filter(([, provider]) => !provider.isProxyProvider) - .map(async ([p]) => ({ - name: p, - update: await client.providers.checkUpdate(p), - })) - ) - - return results - .map((r) => { - if (r.status !== "fulfilled" || r.value.update.err) { - return null - } - - if (!r.value.update.val.updateAvailable) { - return null - } - - return { providerName: r.value.name, updateAvailable: r.value.update.val.updateAvailable } - }) - .filter((r): r is Exclude => r !== null) - }, - refetchInterval: 1000 * 60 * 60 * 30, // 30 minutes - staleTime: Infinity, - }) - - return providerUpdateInfo -} diff --git a/desktop/src/App/ProApp.tsx b/desktop/src/App/ProApp.tsx deleted file mode 100644 index e11121a30..000000000 --- a/desktop/src/App/ProApp.tsx +++ /dev/null @@ -1,303 +0,0 @@ -import { STATUS_BAR_HEIGHT } from "@/constants" -import { ProviderProvider } from "@/contexts/DevsyContext/DevsyProvider" -import { BellDuotone, CogDuotone, LockDuotone } from "@/icons" -import { TConnectionStatus, useConnectionStatus } from "@/lib" -import { QueryKeys } from "@/queryKeys" -import { Routes } from "@/routes.constants" -import { TPlatformVersionInfo } from "@/types" -import { - Avatar, - Box, - Button, - Divider, - HStack, - IconButton, - Link, - List, - ListItem, - Popover, - PopoverArrow, - PopoverContent, - PopoverHeader, - PopoverTrigger, - Portal, - Text, - Tooltip, - useColorModeValue, - useDisclosure, -} from "@chakra-ui/react" -import { ManagementV1Self } from "@devsy/client/gen/models/managementV1Self" -import { useQuery } from "@tanstack/react-query" -import { ReactElement, ReactNode, cloneElement, useMemo } from "react" -import { Outlet, Link as RouterLink, To } from "react-router-dom" -import { Notifications, ProLayout, StatusBar, Toolbar } from "@/components" -import { - ProInstancesProvider, - ProProvider, - ProWorkspaceStore, - ToolbarProvider, - WorkspaceStoreProvider, - useProContext, - useProHost, -} from "@/contexts" -import { DaemonClient } from "@/client/pro/client" - -export function ProApp() { - const host = useProHost() - if (!host) { - throw new Error("No host found. This shouldn't happen") - } - - const store = useMemo(() => new ProWorkspaceStore(host), [host]) - - return ( - - - - - - - - - - - - ) -} - -type TProAppContentProps = Readonly<{ host: string }> -function ProAppContent({ host }: TProAppContentProps) { - const { managementSelfQuery: selfQuery, client } = useProContext() - const connectionStatus = useConnectionStatus() - const versionInfo = usePlatformVersion() - - return ( - - - - - - - - - - - - - {client instanceof DaemonClient ? ( - <> - Routes.toProWorkspace(host, action.targetID)} - icon={ - - } - /> - - - - ) : ( - <> - - } - /> - - Routes.toProWorkspace(host, action.targetID)} - icon={ - - } - /> - - )} - - - } - statusBarItems={ - <> - - - - {/* The box is just here for tooltip to take a ref */} - - - - - {versionInfo?.currentProviderVersion && ( - - - {versionInfo.currentProviderVersion} - {versionInfo.currentProviderVersion !== versionInfo.remoteProviderVersion - ? `/${versionInfo.remoteProviderVersion}` - : ""} - - - )} - {versionInfo?.serverVersion && ( - - {versionInfo.serverVersion} - - )} - - - - - - - - }> - - - ) -} - -function usePlatformVersion(): TPlatformVersionInfo | undefined { - const { host, client } = useProContext() - const { data } = useQuery({ - queryKey: QueryKeys.versionInfo(host), - queryFn: async () => { - return (await client.getVersion()).unwrap() - }, - refetchInterval: 1_000 * 60, // every minute - }) - - return data -} - -type TConnectionStatusProps = Readonly<{ - status: TConnectionStatus -}> -function ConnectionStatus({ status }: TConnectionStatusProps) { - if (status.isLoading) { - return null - } - - const content = ( - - - - {status.healthy ? "Connected" : "Disconnected"} - - - ) - - if (status.details && status.details.length > 0) { - return ( - - {status.details.map((detail, i) => ( - {detail} - ))} - ) - - }> - {content} - - ) - } - - return content -} - -type TProfileMenuProps = Readonly<{ - host: string - self: ManagementV1Self | undefined -}> -function UserMenu({ host, self }: TProfileMenuProps) { - const iconColor = useColorModeValue("primary.600", "primary.300") - const { isOpen, onClose, onToggle } = useDisclosure() - - const userName = self?.status?.user?.displayName ?? self?.status?.user?.name ?? "Anonymous" - - return ( - <> - - - - } - /> - - - - - - {userName} - - - - {/* TODO: Implement when we need it - UserLinkButton to={Routes.toProProfile(host)} icon={}> - Profile - */} - - - }> - Credentials - - - - }> - Settings - - - - - - - - ) -} - -type TUserLinkButton = Readonly<{ children: ReactNode; to: To; icon: ReactElement }> -function UserLinkButton({ children, to, icon }: TUserLinkButton) { - const clonedIcon = cloneElement(icon, { boxSize: 5 }) - - return ( - - ) -} diff --git a/desktop/src/App/constants.ts b/desktop/src/App/constants.ts deleted file mode 100644 index 20ef1a721..000000000 --- a/desktop/src/App/constants.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { BoxProps } from "@chakra-ui/react" -import { isLinux, isMacOS, isWindows } from "@/lib" - -export const showTitleBar = isMacOS || isLinux || isWindows -export const titleBarSafeArea: BoxProps["height"] = showTitleBar ? (isWindows ? "6" : "12") : 0 diff --git a/desktop/src/App/index.ts b/desktop/src/App/index.ts deleted file mode 100644 index ef435004d..000000000 --- a/desktop/src/App/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { App, ErrorPage } from "./App" diff --git a/desktop/src/App/useAppReady.tsx b/desktop/src/App/useAppReady.tsx deleted file mode 100644 index 86f1cbfe0..000000000 --- a/desktop/src/App/useAppReady.tsx +++ /dev/null @@ -1,492 +0,0 @@ -import { QueryKeys } from "@/queryKeys" -import { TProInstance } from "@/types" -import { - Button, - HStack, - Modal, - ModalBody, - ModalCloseButton, - ModalContent, - ModalFooter, - ModalHeader, - ModalOverlay, - Text, - useDisclosure, - useToast, -} from "@chakra-ui/react" -import { useQuery } from "@tanstack/react-query" -import { getCurrentWebviewWindow } from "@tauri-apps/api/webviewWindow" -import { useCallback, useEffect, useId, useMemo, useRef, useState } from "react" -import { matchPath, useNavigate } from "react-router" -import { client } from "@/client/client" -import { ErrorMessageBox } from "@/components" -import { WORKSPACE_SOURCE_BRANCH_DELIMITER, WORKSPACE_SOURCE_COMMIT_DELIMITER } from "@/constants" -import { - startWorkspaceAction, - useChangeSettings, - useProInstances, - useWorkspaceStore, -} from "@/contexts" -import { exists, hasCapability, useLoginProModal } from "@/lib" -import { Routes } from "@/routes.constants" -import { useChangelogModal } from "./useChangelogModal" - -export function useAppReady() { - const [[proInstances]] = useProInstances() - const { store } = useWorkspaceStore() - const isReadyLockRef = useRef(false) - const viewID = useId() - const navigate = useNavigate() - const toast = useToast() - const { modal: errorModal, setFailedMessage } = useErrorModal() - const { modal: changelogModal } = useChangelogModal(isReadyLockRef.current) - const { modal: proLoginModal, handleOpenLogin: handleProLogin } = useLoginProModal() - const { set: setSetting } = useChangeSettings() - - // auto-update pro providers in the background - useQuery({ - queryKey: QueryKeys.proProviderUpdates(proInstances), - queryFn: async () => { - if (!proInstances || proInstances.length === 0) { - return null - } - - // let pro client check for updates without using the provider - // we don't really care about the result in the context of the GUI, just need to make sure it's updating - await Promise.allSettled( - proInstances - .filter( - (instance) => - instance.provider && instance.host && hasCapability(instance, "update-provider") - ) - .map(async (instance) => { - const proClient = client.getProClient(instance) - const checkUpdateRes = await proClient.checkUpdate() - if (checkUpdateRes.err) { - client.log( - "error", - `[${instance.host ?? ""}] Failed to check for upgrade: ${ - checkUpdateRes.val.message - }` - ) - - return null - } - - const { available: updateAvailable, newVersion } = checkUpdateRes.val - if (!updateAvailable || !newVersion) { - return null - } - client.log( - "info", - `[${ - instance.host ?? "" - }] New version available (${newVersion}). Attempting to update.` - ) - - const updateRes = await proClient.update(newVersion) - if (updateRes.err) { - client.log( - "error", - `[${instance.host ?? ""}] Failed to upgrade: ${updateRes.val.message}` - ) - - return null - } - - client.log("info", `[${instance.host ?? ""}] Successfully updated to ${newVersion}`) - }) - ) - - return null - }, - enabled: proInstances && proInstances.length > 0, - refetchInterval: 1_000 * 60 * 5, // 5 minutes - }) - - useEffect(() => { - window.addEventListener("contextmenu", (e) => { - e.preventDefault() - - return false - }) - }, []) - - const handleMessage: Parameters[1] = useCallback( - async (event) => { - if (event.type === "ShowDashboard") { - if (await getCurrentWebviewWindow().isMinimized()) { - await getCurrentWebviewWindow().unminimize() - } - - if (!(await getCurrentWebviewWindow().isVisible())) { - await getCurrentWebviewWindow().show() - } - - await getCurrentWebviewWindow().setFocus() - - return - } - - if (event.type === "ShowToast") { - await getCurrentWebviewWindow().setFocus() - - toast({ - title: event.title, - description: event.message, - status: event.status, - duration: 5_000, - isClosable: true, - }) - - return - } - - if (event.type === "CommandFailed") { - await getCurrentWebviewWindow().setFocus() - const message = Object.entries(event) - .filter(([key]) => key !== "type") - .map(([key, value]) => `${key}: ${value}`) - .join("\n") - setFailedMessage(message) - - return - } - - if (event.type === "LoginRequired") { - const proInstances = await client.pro.listProInstances() - if (proInstances.err) { - return - } - const existingInstance = proInstances.val.find((i) => i.host === event.host) - if (!existingInstance) { - return - } - - await getCurrentWebviewWindow().setFocus() - const match = matchPath(Routes.toProInstance(event.host), location.pathname) - if (match != null) { - // only show toast if we're not on pro instance page anyway - return - } - toast({ - title: "Login Required", - description: ( - - You have been logged out. Please log back in. - - - ), - status: "warning", - duration: 5_000, - isClosable: true, - }) - - return - } - - if (event.type === "SetupPro") { - // check if host is already taken. If not, set window to foreground and pass evnet to pro login handler - const proInstances = await client.pro.listProInstances() - if (proInstances.err) { - return - } - - const existingInstance = proInstances.val.find((i) => i.host === event.host) - if (existingInstance) { - // only warn in console, don't show modal - console.warn("Pro instance already exists", existingInstance) - - return - } - - const data: Parameters[0] = { - host: event.host, - suggestedOptions: {}, - } - if (event.accessKey) { - data.accessKey = event.accessKey - } - if (event.options) { - data.suggestedOptions = event.options - } - - await getCurrentWebviewWindow().setFocus() - // ensure pro is enabled - setSetting("experimental_devsyPro", true) - handleProLogin(data) - - return - } - - if (event.type === "OpenProInstance") { - const proInstances = await client.pro.listProInstances() - if (proInstances.err) { - return - } - - const existingInstance = proInstances.val.find((i) => i.host === event.host) - if (!existingInstance?.host) { - return - } - - await getCurrentWebviewWindow().setFocus() - navigate(Routes.toProInstance(existingInstance.host)) - - return - } - - if (event.type === "ImportWorkspace") { - await getCurrentWebviewWindow().setFocus() - // Do we already know the workspace? - let workspacesResult = await client.workspaces.listAll(false) - if (workspacesResult.err) { - const cleanedMsg = workspacesResult.val.message.split("\n").at(-1) ?? "" - setFailedMessage("Failed to list workspaces: " + cleanedMsg) - - return - } - let maybeWorkspace = workspacesResult.val.find((w) => w.id === event.workspace_id) - // Is it a pro workspace? - if (maybeWorkspace && maybeWorkspace.provider?.name) { - const proInstance = await findProInstance(maybeWorkspace.provider.name) - if (proInstance && proInstance.host) { - navigate(Routes.toProWorkspace(proInstance.host, maybeWorkspace.id)) - - return - } - } - - // At this point it can't be a new pro workspace anymore, - // we'll have to go through the old import flow - const importResult = await client.pro.importWorkspace({ - workspaceID: event.workspace_id, - workspaceUID: event.workspace_uid, - devsyProHost: event.devsy_pro_host, - project: event.project, - options: event.options, - }) - if (importResult.err) { - const cleanedMsg = importResult.val.message.split("\n").at(-1) ?? "" - setFailedMessage("Failed to import workspace: " + cleanedMsg) - - return - } - workspacesResult = await client.workspaces.listAll(false) - if (workspacesResult.err) { - return - } - maybeWorkspace = workspacesResult.val.find((w) => w.id === event.workspace_id) - if (!maybeWorkspace) { - setFailedMessage("Could not find workspace after import") - - return - } - - const actionID = startWorkspaceAction({ - workspaceID: maybeWorkspace.id, - streamID: viewID, - config: { - id: maybeWorkspace.id, - providerConfig: { - providerID: maybeWorkspace.provider?.name ?? undefined, - }, - ideConfig: { - name: maybeWorkspace.ide?.name, - }, - }, - store, - }) - navigate(Routes.toAction(actionID)) - - return - } - - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (event.type === "OpenWorkspace") { - const workspacesResult = await client.workspaces.listAll(false) - if (workspacesResult.err) { - return - } - - // Try to find workspace by source - let maybeWorkspace = workspacesResult.val.find((w) => { - if (!w.source) { - return false - } - - // Check `repo@sha256:commitHash` - if ( - `${w.source.gitRepository ?? ""}${WORKSPACE_SOURCE_COMMIT_DELIMITER}${ - w.source.gitCommit ?? "" - }` === event.source - ) { - return true - } - - // Check `repo@branch` - if ( - `${w.source.gitRepository ?? ""}${WORKSPACE_SOURCE_BRANCH_DELIMITER}${ - w.source.gitBranch ?? "" - }` === event.source - ) { - return true - } - - // Check Git repo - if (w.source.gitRepository === event.source) { - return true - } - - // Check local folder - if (w.source.localFolder === event.source) { - return true - } - - // Check Docker Image - if (w.source.image === event.source) { - return true - } - - return false - }) - - // If we don't have a workspace by now, `source` isn't defined but `workspace_id` is, try to find workspace by ID - // This happens for example if the message is triggered by a system tray item - // WARN: `event.source` can be an empty string here, hence the falsy check - if (maybeWorkspace === undefined && !event.source && exists(event.workspace_id)) { - maybeWorkspace = workspacesResult.val.find((w) => w.id === event.workspace_id) - } - - const ides = await client.ides.listAll() - let defaultIDE = undefined - if (ides.ok) { - defaultIDE = ides.val.find((ide) => ide.default)?.name - } - - const providerName = maybeWorkspace?.provider?.name - if (maybeWorkspace !== undefined && providerName) { - const proInstance = await findProInstance(providerName) - if (proInstance && proInstance.host) { - navigate(Routes.toProWorkspace(proInstance.host, maybeWorkspace.id)) - - return - } - - const actionID = startWorkspaceAction({ - workspaceID: maybeWorkspace.id, - streamID: viewID, - config: { - id: maybeWorkspace.id, - providerConfig: { providerID: providerName }, - ideConfig: { name: defaultIDE ?? maybeWorkspace.ide?.name ?? null }, - }, - store, - }) - - navigate(Routes.toAction(actionID)) - - return - } - - const match = matchPath(Routes.PRO_INSTANCE, location.pathname) - if (match && match.params.host) { - navigate(Routes.toProWorkspaceCreate(match.params.host)) - - return - } - - navigate( - Routes.toWorkspaceCreate({ - workspaceID: event.workspace_id, - providerID: event.provider_id, - rawSource: event.source, - ide: event.ide, - }) - ) - } - }, - [handleProLogin, navigate, setFailedMessage, setSetting, store, toast, viewID] - ) - - // notifies underlying layer that ui is ready for communication - useEffect(() => { - const unsubscribePromise = client.subscribe("event", handleMessage) - if (!isReadyLockRef.current) { - isReadyLockRef.current = true - - unsubscribePromise.then(async () => { - try { - await client.ready() - } catch (err) { - return console.error(err) - } - }) - } - - return () => { - unsubscribePromise.then((unsubscribe) => { - unsubscribe() - }) - } - }, [handleMessage, navigate]) - - return { errorModal, changelogModal, proLoginModal } -} - -function useErrorModal() { - const [failedMessage, setFailedMessage] = useState(null) - const { isOpen, onClose, onOpen } = useDisclosure() - const modal = useMemo(() => { - return ( - setFailedMessage(null)} - isCentered> - - - - {/* todo: customize the header */} - Failed to open workspace from URL - - - - - - - ) - }, [isOpen, onClose, failedMessage]) - - useEffect(() => { - if (failedMessage !== null) { - onOpen() - } else { - onClose() - } - }, [onClose, onOpen, failedMessage]) - - return { modal, handleOpen: onOpen, setFailedMessage } -} - -async function findProInstance(providerName: string): Promise { - const providersRes = await client.providers.listAll() - if (providersRes.err) return null - const provider = providersRes.val[providerName] - if (!provider || !provider.isProxyProvider) return null - - // handle pro provider - const proInstanceRes = await client.pro.listProInstances() - if (proInstanceRes.err) return null - const proInstance = proInstanceRes.val.find( - (proInstance) => proInstance.provider === providerName - ) - if (!proInstance?.host) return null - - return proInstance -} diff --git a/desktop/src/App/useChangelogModal.tsx b/desktop/src/App/useChangelogModal.tsx deleted file mode 100644 index ef695b4be..000000000 --- a/desktop/src/App/useChangelogModal.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import { - Button, - Modal, - ModalBody, - ModalCloseButton, - ModalContent, - ModalFooter, - ModalHeader, - ModalOverlay, - Text, - useDisclosure, -} from "@chakra-ui/react" -import { useEffect, useMemo, useState } from "react" -import { Release } from "@/gen" -import { useReleases } from "@/lib" -import { useVersion } from "@/lib/useVersion" -import { BINARY_NAME } from "@/client/repo" -import { Changelog } from "./Changelog" - -const LAST_INSTALLED_VERSION_KEY = `${BINARY_NAME}-last-installed-version` - -export function useChangelogModal(isReady: boolean) { - const currentVersion = useVersion() - const releases = useReleases() - const { isOpen, onClose, onOpen } = useDisclosure() - const [latestRelease, setLatestRelease] = useState(null) - const modal = useMemo( - () => - latestRelease !== null ? ( - - - - - Changelog - - {latestRelease.body ? ( - - ) : ( - This release doesn't have a changelog - )} - - - - - - - ) : null, - [isOpen, latestRelease, onClose] - ) - - useEffect(() => { - if (!isReady || !currentVersion || !releases) { - return - } - - const latestVersion = localStorage.getItem(LAST_INSTALLED_VERSION_KEY) - const maybeRelease = releases.find((r) => r.tag_name === `v${currentVersion}`) - - if (latestVersion !== currentVersion) { - localStorage.setItem(LAST_INSTALLED_VERSION_KEY, currentVersion) - - if (maybeRelease !== undefined && !maybeRelease.name?.endsWith("[skip changelog]")) { - setLatestRelease(maybeRelease) - onOpen() - } - } - }, [currentVersion, isReady, onOpen, releases]) - - return { modal } -} diff --git a/desktop/src/App/usePreserveLocation.tsx b/desktop/src/App/usePreserveLocation.tsx deleted file mode 100644 index 635192a48..000000000 --- a/desktop/src/App/usePreserveLocation.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import { useEffect } from "react" -import { Location, matchRoutes, useLocation } from "react-router" -import { client } from "@/client/client" -import { LocalStorageBackend, Store } from "@/lib" -import { Routes } from "@/routes.constants" - -const LOCATION_KEY = "location" -const CURRENT_LOCATION_KEY = "current" -type TLocationStore = { [CURRENT_LOCATION_KEY]: Location } -const store = new Store(new LocalStorageBackend(LOCATION_KEY)) - -export function usePreserveLocation() { - const location = useLocation() - - useEffect(() => { - // only save location for these routes - const match = matchRoutes( - [ - { path: Routes.ROOT }, - { path: Routes.PROVIDER }, - { path: Routes.PROVIDERS }, - { path: Routes.WORKSPACES }, - { path: Routes.PRO_INSTANCE }, - ], - location - ) - if (match == null) { - return - } - - try { - store.set(CURRENT_LOCATION_KEY, location) - } catch (err) { - client.log("error", `Failed to serialize location: ${err}`) - } - }, [location]) -} diff --git a/desktop/src/ProRoot.tsx b/desktop/src/ProRoot.tsx deleted file mode 100644 index ab789a60e..000000000 --- a/desktop/src/ProRoot.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { Outlet } from "react-router-dom" - -export function ProRoot() { - return -} diff --git a/desktop/src/Theme/ThemeProvider.tsx b/desktop/src/Theme/ThemeProvider.tsx deleted file mode 100644 index f6f52c164..000000000 --- a/desktop/src/Theme/ThemeProvider.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { ChakraProvider, Theme, ToastProviderProps, extendTheme } from "@chakra-ui/react" -import { ReactNode, useEffect, useState } from "react" -import { TSettings, useSettings } from "@/contexts" -import { theme as initialTheme } from "./theme" -const toastOptions: ToastProviderProps = { defaultOptions: { variant: "subtle" } } - -const fontSize: Record = { - sm: "12px", - md: "14px", - lg: "16px", - xl: "18px", -} - -export function ThemeProvider({ children }: Readonly<{ children?: ReactNode }>) { - const settings = useSettings() - const [theme, setTheme] = useState(initialTheme) - - useEffect(() => { - setTheme( - (current) => - extendTheme( - { - styles: { - global: { - html: { - fontSize: fontSize[settings.zoom], - }, - }, - }, - }, - current - ) as Theme - ) - }, [settings]) - - return ( - - {children} - - ) -} diff --git a/desktop/src/Theme/button.ts b/desktop/src/Theme/button.ts deleted file mode 100644 index 572920c29..000000000 --- a/desktop/src/Theme/button.ts +++ /dev/null @@ -1,146 +0,0 @@ -import { defineStyleConfig } from "@chakra-ui/react" -import { mode } from "@chakra-ui/theme-tools" -import { theme as defaultTheme } from "@chakra-ui/theme" - -export const Button = defineStyleConfig({ - defaultProps: { - size: "sm", - }, - variants: { - primary(props) { - return { - color: mode("white", "gray.50")(props), - borderColor: "primary.600", - _dark: { - borderColor: "primary.500", - backgroundColor: "primary.600", - }, - borderWidth: 1, - backgroundColor: "primary.500", - _hover: { - backgroundColor: "primary.600", - _disabled: { - background: "primary.500", - }, - _dark: { - backgroundColor: "primary.700", - }, - }, - } - }, - outline(props) { - return { - borderColor: props.colorScheme == "primary" ? "primary.600" : "gray.200", - _dark: { - borderColor: props.colorScheme == "primary" ? "primary.200" : "gray.700", - }, - _hover: { - _dark: { - bg: props.colorScheme == "primary" ? "" : "gray.700", - }, - }, - _active: { - _dark: { - bg: props.colorScheme == "primary" ? "" : "gray.800", - }, - }, - } - }, - solid(props) { - const bgDark = - props.colorScheme === "primary" - ? "" - : (defaultTheme.components.Button.variants?.solid(props).bg ?? "gray.800") - - const bgHoverDark = - props.colorScheme === "primary" - ? "" - : (defaultTheme.components.Button.variants?.solid(props)._hover.bg ?? "gray.700") - - const bgActiveDark = - props.colorScheme === "primary" - ? "" - : (defaultTheme.components.Button.variants?.solid(props)._active.bg ?? "gray.700") - - return { - _dark: { - bg: bgDark, - }, - _hover: { - _dark: { - bg: bgHoverDark, - }, - }, - _active: { - _dark: { - bg: bgActiveDark, - }, - }, - } - }, - ["solid-outline"](props) { - return { - color: mode("gray.800", "gray.100")(props), - borderColor: mode("gray.200", "gray.700")(props), - borderWidth: 1, - ".chakra-button__group[data-attached][data-orientation=horizontal] > &:not(:last-of-type)": - { marginEnd: "-1px" }, - ".chakra-button__group[data-attached][data-orientation=vertical] > &:not(:last-of-type)": { - marginBottom: "-1px", - }, - backgroundColor: mode("gray.100", "gray.800")(props), - _hover: { - backgroundColor: mode("gray.200", "gray.700")(props), - }, - _active: { - backgroundColor: mode("gray.300", "gray.900")(props), - }, - } - }, - announcement({ theme }) { - const from = theme.colors.primary["900"] - const to = theme.colors.primary["600"] - - return { - color: "white", - transition: "background 150ms", - fontWeight: "regular", - background: `linear-gradient(170deg, ${from} 15%, ${to})`, - backgroundSize: "130% 130%", - _hover: { - backgroundPosition: "90% 50%", - }, - _active: { - boxShadow: "inset 0 0 3px 2px rgba(0, 0, 0, 0.2)", - }, - } - }, - proWorkspaceIDE() { - return { - color: "primary.900", - fontWeight: "semibold", - bg: "primary.100", - _hover: { - bg: "primary.200", - }, - _active: { - bg: "primary.300", - }, - } - }, - ghost(props) { - return { - _hover: { - _dark: { - bg: props.colorScheme == "primary" ? "" : "gray.700", - }, - }, - _active: { - _dark: { - bg: props.colorScheme == "primary" ? "" : "gray.800", - }, - }, - } - }, - }, -}) diff --git a/desktop/src/Theme/card.ts b/desktop/src/Theme/card.ts deleted file mode 100644 index 6b73e4847..000000000 --- a/desktop/src/Theme/card.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { cardAnatomy } from "@chakra-ui/anatomy" -import { createMultiStyleConfigHelpers } from "@chakra-ui/react" -import { mode } from "@chakra-ui/theme-tools" - -const { definePartsStyle, defineMultiStyleConfig } = createMultiStyleConfigHelpers(cardAnatomy.keys) -export const Card = defineMultiStyleConfig({ - baseStyle: definePartsStyle((props) => { - return { - container: { - backgroundColor: "gray.50", - borderColor: mode("gray.200", "gray.700")(props), - _dark: { - backgroundColor: "gray.900", - }, - }, - } - }), -}) diff --git a/desktop/src/Theme/checkbox.ts b/desktop/src/Theme/checkbox.ts deleted file mode 100644 index 632a2de68..000000000 --- a/desktop/src/Theme/checkbox.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { checkboxAnatomy } from "@chakra-ui/anatomy" -import { createMultiStyleConfigHelpers } from "@chakra-ui/react" - -const { defineMultiStyleConfig } = createMultiStyleConfigHelpers(checkboxAnatomy.keys) - -export const Checkbox = defineMultiStyleConfig({ - defaultProps: { - colorScheme: "primary", - }, - baseStyle: { - container: { - borderColor: "gray.200", - _dark: { - borderColor: "gray.700", - }, - }, - }, -}) diff --git a/desktop/src/Theme/form.ts b/desktop/src/Theme/form.ts deleted file mode 100644 index 62fdb80ed..000000000 --- a/desktop/src/Theme/form.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { formAnatomy } from "@chakra-ui/anatomy" -import { createMultiStyleConfigHelpers } from "@chakra-ui/react" -import { mode } from "@chakra-ui/theme-tools" - -const { definePartsStyle, defineMultiStyleConfig } = createMultiStyleConfigHelpers(formAnatomy.keys) -export const Form = defineMultiStyleConfig({ - baseStyle: definePartsStyle((props) => { - return { - helperText: { - color: mode("gray.500", "gray.300")(props), - }, - } - }), - variants: { - contrast: definePartsStyle((props) => { - return { - helperText: { - color: mode("gray.600", "gray.300")(props), - }, - } - }), - }, -}) diff --git a/desktop/src/Theme/index.ts b/desktop/src/Theme/index.ts deleted file mode 100644 index 9bcd784ab..000000000 --- a/desktop/src/Theme/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { ThemeProvider } from "./ThemeProvider" -export { useBorderColor } from "./themeHooks" diff --git a/desktop/src/Theme/input.ts b/desktop/src/Theme/input.ts deleted file mode 100644 index 0231f794d..000000000 --- a/desktop/src/Theme/input.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { inputAnatomy } from "@chakra-ui/anatomy" -import { createMultiStyleConfigHelpers } from "@chakra-ui/react" - -const { definePartsStyle, defineMultiStyleConfig } = createMultiStyleConfigHelpers( - inputAnatomy.keys -) -export const Input = defineMultiStyleConfig({ - variants: { - outline: definePartsStyle(() => { - return { - addon: { - borderColor: "gray.200", - _dark: { - borderColor: "gray.800", - }, - }, - field: { - borderColor: "gray.200", - _dark: { - borderColor: "gray.800", - }, - }, - } - }), - }, -}) diff --git a/desktop/src/Theme/menu.ts b/desktop/src/Theme/menu.ts deleted file mode 100644 index 1ffc2d82f..000000000 --- a/desktop/src/Theme/menu.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { menuAnatomy } from "@chakra-ui/anatomy" -import { createMultiStyleConfigHelpers } from "@chakra-ui/react" -import { mode } from "@chakra-ui/theme-tools" - -const { definePartsStyle, defineMultiStyleConfig } = createMultiStyleConfigHelpers(menuAnatomy.keys) -export const Menu = defineMultiStyleConfig({ - baseStyle: definePartsStyle((props) => { - return { - item: { - fontSize: "sm", - bg: mode("white", "gray.900")(props), - _selected: { - bg: mode("gray.200", "gray.800")(props), - }, - _hover: { - bg: mode("gray.100", "gray.700")(props), - }, - borderColor: "gray.200", - _dark: { - borderColor: "gray.700", - }, - }, - list: { - bg: mode("white", "gray.900")(props), - borderColor: "gray.200", - _dark: { - borderColor: "gray.700", - }, - }, - divider: { - borderColor: "gray.200", - _dark: { - borderColor: "gray.700", - }, - }, - } - }), -}) diff --git a/desktop/src/Theme/modal.ts b/desktop/src/Theme/modal.ts deleted file mode 100644 index 690aae5be..000000000 --- a/desktop/src/Theme/modal.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { modalAnatomy } from "@chakra-ui/anatomy" -import { createMultiStyleConfigHelpers } from "@chakra-ui/react" -import { mode } from "@chakra-ui/theme-tools" - -const { definePartsStyle, defineMultiStyleConfig } = createMultiStyleConfigHelpers( - modalAnatomy.keys -) -export const Modal = defineMultiStyleConfig({ - baseStyle: definePartsStyle((props) => { - return { - body: { - bg: mode("white", "gray.900")(props), - }, - dialog: { - bg: mode("white", "gray.900")(props), - }, - } - }), -}) diff --git a/desktop/src/Theme/popover.ts b/desktop/src/Theme/popover.ts deleted file mode 100644 index 9afc57852..000000000 --- a/desktop/src/Theme/popover.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { popoverAnatomy } from "@chakra-ui/anatomy" -import { createMultiStyleConfigHelpers, cssVar } from "@chakra-ui/react" - -const { definePartsStyle, defineMultiStyleConfig } = createMultiStyleConfigHelpers( - popoverAnatomy.keys -) -export const Popover = defineMultiStyleConfig({ - baseStyle: definePartsStyle((props) => { - const theme = props.theme - let bg = theme.colors.white - if (props.colorMode == "dark") { - bg = theme.colors.gray["900"] - } - - return { - content: { - borderColor: "gray.200", - bg, - boxShadow: theme.shadows.xl, - _focusVisible: { - outline: "2px solid transparent", - outlineOffset: "2px", - boxShadow: theme.shadows.xl, - }, - [cssVar("popper-bg").variable]: bg, - _dark: { - [cssVar("popper-arrow-bg").variable]: bg, - borderColor: "gray.700", - }, - }, - arrow: { bg }, - popper: { - zIndex: theme.zIndices.popover, - bg, - }, - header: { - display: "flex", - alignItems: "center", - flexFlow: "row nowrap", - padding: 4, - spacing: 0, - justifyContent: "space-between", - borderBottomWidth: "thin", - borderColor: "inherit", - fontWeight: "bold", - p: { - fontWeight: "normal", - }, - }, - } - }), -}) diff --git a/desktop/src/Theme/radio.ts b/desktop/src/Theme/radio.ts deleted file mode 100644 index bbad22842..000000000 --- a/desktop/src/Theme/radio.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { radioAnatomy } from "@chakra-ui/anatomy" -import { createMultiStyleConfigHelpers } from "@chakra-ui/react" - -const { defineMultiStyleConfig } = createMultiStyleConfigHelpers(radioAnatomy.keys) - -export const Radio = defineMultiStyleConfig({ - defaultProps: { - colorScheme: "primary", - }, -}) diff --git a/desktop/src/Theme/select.ts b/desktop/src/Theme/select.ts deleted file mode 100644 index 2a3339a1c..000000000 --- a/desktop/src/Theme/select.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { selectAnatomy } from "@chakra-ui/anatomy" -import { createMultiStyleConfigHelpers } from "@chakra-ui/react" - -const { definePartsStyle, defineMultiStyleConfig } = createMultiStyleConfigHelpers( - selectAnatomy.keys -) -export const Select = defineMultiStyleConfig({ - baseStyle: definePartsStyle({ - addon: { - borderColor: "gray.200", - _dark: { - borderColor: "gray.700", - }, - }, - field: { - borderColor: "gray.200", - _dark: { - borderColor: "gray.700", - }, - }, - }), - variants: { - outline: definePartsStyle(() => { - return { - addon: { - border: "", - borderWidth: "thin", - borderStyle: "solid", - borderColor: "gray.200", - _dark: { - borderColor: "gray.700", - }, - }, - field: { - border: "", - borderWidth: "thin", - borderStyle: "solid", - borderColor: "gray.200", - _dark: { - borderColor: "gray.700", - }, - }, - } - }), - }, -}) diff --git a/desktop/src/Theme/switch.ts b/desktop/src/Theme/switch.ts deleted file mode 100644 index 869506c4d..000000000 --- a/desktop/src/Theme/switch.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { switchAnatomy } from "@chakra-ui/anatomy" -import { createMultiStyleConfigHelpers } from "@chakra-ui/react" - -const { definePartsStyle, defineMultiStyleConfig } = createMultiStyleConfigHelpers( - switchAnatomy.keys -) -export const Switch = defineMultiStyleConfig({ - baseStyle: definePartsStyle(({ theme }) => { - const from = theme.colors.primary["400"] - const to = theme.colors.primary["800"] - - return { - track: { - _checked: { - background: `linear-gradient(90deg, ${from} 30%, ${to})`, - }, - }, - } - }), -}) diff --git a/desktop/src/Theme/tabs.ts b/desktop/src/Theme/tabs.ts deleted file mode 100644 index e188dad6b..000000000 --- a/desktop/src/Theme/tabs.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { tabsAnatomy } from "@chakra-ui/anatomy" -import { createMultiStyleConfigHelpers } from "@chakra-ui/react" -import { mode } from "@chakra-ui/theme-tools" - -const { definePartsStyle, defineMultiStyleConfig } = createMultiStyleConfigHelpers(tabsAnatomy.keys) - -const muted = definePartsStyle((props) => { - return { - tab: { - bg: mode("white", "black")(props), - fontWeight: "medium", - _selected: { - bg: mode("gray.100", "gray.900")(props), - }, - _hover: { - bg: mode("gray.50", "gray.700")(props), - }, - }, - tablist: { - width: "fit-content", - borderWidth: "thin", - borderColor: "inherit", - borderRadius: "md", - "> *:not(:last-child, :first-child)": { - borderRightWidth: "thin", - borderRightColor: "inherit", - borderRadius: "0", - }, - "> :first-child": { - borderTopLeftRadius: "md", - borderBottomLeftRadius: "md", - borderRightWidth: "thin", - borderRightColor: "inherit", - }, - "> :last-child": { - borderTopRightRadius: "md", - borderBottomRightRadius: "md", - }, - }, - } -}) -const enclosed = definePartsStyle((props) => { - return { - tab: { - fontWeight: "medium", - _selected: { - color: mode("primary.600", "primary.300")(props), - }, - _hover: { - bg: mode("gray.50", "gray.800")(props), - }, - }, - } -}) - -const mutedPopover = definePartsStyle((props) => { - return { - tab: { - bg: mode("white", "gray.900")(props), - fontWeight: "medium", - _selected: { - bg: mode("gray.100", "gray.800")(props), - }, - _hover: { - bg: mode("gray.50", "gray.700")(props), - }, - }, - tablist: { - width: "fit-content", - borderWidth: "thin", - borderColor: "inherit", - borderRadius: "md", - "> *:not(:last-child, :first-child)": { - borderRightWidth: "thin", - borderRightColor: "inherit", - borderRadius: "0", - }, - "> :first-child": { - borderTopLeftRadius: "md", - borderBottomLeftRadius: "md", - borderRightWidth: "thin", - borderRightColor: "inherit", - }, - "> :last-child": { - borderTopRightRadius: "md", - borderBottomRightRadius: "md", - }, - }, - } -}) - -const variants = { - muted, - enclosed, - "muted-popover": mutedPopover, -} - -export const Tabs = defineMultiStyleConfig({ variants }) diff --git a/desktop/src/Theme/tag.ts b/desktop/src/Theme/tag.ts deleted file mode 100644 index 0a04b5f50..000000000 --- a/desktop/src/Theme/tag.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { tagAnatomy } from "@chakra-ui/anatomy" -import { createMultiStyleConfigHelpers } from "@chakra-ui/react" -import { mode } from "@chakra-ui/theme-tools" - -const { definePartsStyle, defineMultiStyleConfig } = createMultiStyleConfigHelpers(tagAnatomy.keys) - -export const Tag = defineMultiStyleConfig({ - baseStyle: definePartsStyle((props) => { - return { - container: { - bg: mode("gray.200", "gray.700")(props), - color: mode("gray.800", "gray.100")(props), - }, - } - }), - variants: { - ghost: definePartsStyle(() => { - return { - container: { - bg: "transparent", - }, - } - }), - }, -}) diff --git a/desktop/src/Theme/text.ts b/desktop/src/Theme/text.ts deleted file mode 100644 index f6c8ebf23..000000000 --- a/desktop/src/Theme/text.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineStyleConfig } from "@chakra-ui/react" -import { mode } from "@chakra-ui/theme-tools" - -export const Text = defineStyleConfig({ - variants: { - muted(props) { - return { - color: mode("gray.600", "gray.400")(props), - } - }, - }, -}) diff --git a/desktop/src/Theme/textarea.ts b/desktop/src/Theme/textarea.ts deleted file mode 100644 index 89194495b..000000000 --- a/desktop/src/Theme/textarea.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineStyleConfig } from "@chakra-ui/react" - -export const Textarea = defineStyleConfig({ - variants: { - outline: { - borderColor: "gray.200", - _dark: { - borderColor: "gray.800", - }, - }, - }, -}) diff --git a/desktop/src/Theme/theme.ts b/desktop/src/Theme/theme.ts deleted file mode 100644 index 91068f7bd..000000000 --- a/desktop/src/Theme/theme.ts +++ /dev/null @@ -1,159 +0,0 @@ -import { Theme, ThemeOverride, Tooltip, defineStyleConfig, extendTheme } from "@chakra-ui/react" -import { mode } from "@chakra-ui/theme-tools" -import { Button } from "./button" -import { Card } from "./card" -import { Checkbox } from "./checkbox" -import { Form } from "./form" -import { Input } from "./input" -import { Menu } from "./menu" -import { Modal } from "./modal" -import { Popover } from "./popover" -import { Radio } from "./radio" -import { Select } from "./select" -import { Switch } from "./switch" -import { Tabs } from "./tabs" -import { Tag } from "./tag" -import { Text } from "./text" -import { Textarea } from "./textarea" - -const Code = defineStyleConfig({ - variants: { - decorative(props) { - return { - backgroundColor: "primary.400", - color: mode("white", "gray.900")(props), - } - }, - }, -}) - -const Link = defineStyleConfig({ - defaultProps: { - variant: "primary", - }, - variants: { - muted(props) { - return { color: mode("gray.600", "gray.400")(props) } - }, - primary(props) { - const primary = props.theme.colors.primary - - return { color: mode(primary["800"], primary["400"])(props) } - }, - }, -}) - -const FormError = defineStyleConfig({ - baseStyle: { - text: { - userSelect: "text", - cursor: "text", - }, - }, -}) - -const TooltipTheme = defineStyleConfig({ - baseStyle(props) { - return { - bg: mode("gray.800", "gray.200")(props), - color: mode("gray.100", "gray.800")(props), - } - }, -}) - -// It's ugly but it works: https://github.com/chakra-ui/chakra-ui/issues/1424#issuecomment-743342944 -// Unfortunately there is no other way of overring the default placement. -Tooltip.defaultProps = { ...Tooltip.defaultProps, placement: "top" } - -export const theme = extendTheme({ - styles: { - global({ colorMode }) { - return { - html: { - fontSize: "14px", - overflow: "hidden", - background: "transparent", - position: "fixed", - }, - body: { - background: "transparent", - userSelect: "none", - cursor: "default", - }, - td: { - userSelect: "text", - }, - code: { - userSelect: "text", - cursor: "text", - }, - "input::placeholder": { - color: colorMode === "light" ? "gray.500" : "gray.400", - }, - } - }, - }, - colors: { - primary: { - 50: "#F8EFFF", - 100: "#F0DFFF", - 200: "#D8ABFF", - 300: "#BF76FF", - 400: "#B157FF", - 500: "#A640FF", - 600: "#9B29FF", - 700: "#8600DC", - 800: "#7100B9", - 900: "#40006A", - }, - gray: { - 50: "#F7F5F9", - 100: "#ECE8F0", - 200: "#DCD6E1", - 300: "#C5BFC9", - 400: "#ABA5B0", - 500: "#948E99", - 600: "#7C7581", - 700: "#655E69", - 800: "#4A464D", - 900: "#2C2630", - }, - text: { - secondary: "#465E75", - tertiary: "#5C7997", - }, - divider: { - main: "#B0C3D6", - light: "#DCE5EE", - dark: "#465E75", - }, - background: { - darkest: "rgb(16, 18, 20)", - }, - }, - config: { - initialColorMode: "system", - useSystemColorMode: true, - }, - components: { - Button, - Card, - Code, - Menu, - Switch, - Tabs, - Checkbox, - Radio, - Link, - Form, - FormError, - Popover, - Modal, - Tag, - Input, - Select, - Text, - Textarea, - Tooltip: TooltipTheme, - }, -} satisfies ThemeOverride) as Theme diff --git a/desktop/src/Theme/themeHooks.tsx b/desktop/src/Theme/themeHooks.tsx deleted file mode 100644 index 030ab161a..000000000 --- a/desktop/src/Theme/themeHooks.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { useColorModeValue } from "@chakra-ui/react" - -export function useBorderColor() { - return useColorModeValue("gray.200", "gray.700") -} diff --git a/desktop/src/assets/fonts.css b/desktop/src/assets/fonts.css deleted file mode 100644 index b65b8d2b0..000000000 --- a/desktop/src/assets/fonts.css +++ /dev/null @@ -1,15 +0,0 @@ -@font-face { - font-family: "JetBrains Mono"; - src: url("./fonts/JetBrainsMono-Regular.woff2") format("woff2"); - font-weight: 400; - font-style: normal; - font-display: swap; -} - -@font-face { - font-family: "JetBrains Mono"; - src: url("./fonts/JetBrainsMono-Bold.woff2") format("woff2"); - font-weight: 700; - font-style: normal; - font-display: swap; -} diff --git a/desktop/src/assets/fonts/AUTHORS.txt b/desktop/src/assets/fonts/AUTHORS.txt deleted file mode 100755 index 7055ae3de..000000000 --- a/desktop/src/assets/fonts/AUTHORS.txt +++ /dev/null @@ -1,10 +0,0 @@ -# This is the official list of project authors for copyright purposes. -# This file is distinct from the CONTRIBUTORS.txt file. -# See the latter for an explanation. -# -# Names should be added to this file as: -# Name or Organization - -JetBrains <> -Philipp Nurullin -Konstantin Bulenkov diff --git a/desktop/src/assets/fonts/JetBrainsMono-Bold.woff2 b/desktop/src/assets/fonts/JetBrainsMono-Bold.woff2 deleted file mode 100644 index 4917f43410757b48e4ad1eca81b868dfe405d25b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94588 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 W6KeHYDRQ^d=CvO2o&f^^0sSA5t?+*U diff --git a/desktop/src/assets/fonts/JetBrainsMono-BoldItalic.woff2 b/desktop/src/assets/fonts/JetBrainsMono-BoldItalic.woff2 deleted file mode 100644 index 536d3f7154786f66c8db2fbf0c3957269e5f4ad6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98152 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 Rc{JUFg3b&$w?5D%cNT;#(-qs&p7M=EoU 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
    8rydHyUouQG|B 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 diff --git a/desktop/src/assets/fonts/JetBrainsMono-ExtraBold.woff2 b/desktop/src/assets/fonts/JetBrainsMono-ExtraBold.woff2 deleted file mode 100644 index 8f88c546471dd5035640ba69587ec8096d345cb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93692 zcmV)HK)t_rPew8T0RR910d4#M5dZ)H1Vd~90d1840!`BZ00000000000000000000 z0000Qgen`xcpQPm6b4`bfrM%ZfhY-_3=s$li@bD-fFJ=j0we>rJPWo!00bZfjTHxh zm@^E4R$H&gvk(4R$oAfyUl+5PQ?@K=JE=k! zJ)WRC|NsC0|NsC0|NsBrOY$T9&1T*vZ+1g|Kp+Xo zUt6{KsTCAG^`xhFo~>0#qfzKXBAqnL3s?{uHbUYOcO{cj_4?8cq2i#-h8d-nAdR%z z#1MsuLc|dsALJ7qy45tO&{mLyB(}&pXeN|_CaUWIe3*OSC72i)=)D+|Al{3a7m8mj z{YotpSsYGPcP{3TB}b5uM3XP(Je05C*oGM=vXtQ5W#lKP@LN{7_B~`UNWwLpPvIHQ z^@TFItbxf0G5YUUD6=2A$|ZylR8T&FBqSl}TIFBP&0otY_705AX4@QG+^E~BUQsTI zJ)AT0Zw1$S=jCn#HoN;Q=)dF)6_Rz-x$9O=5%CE09@@J@wzOQF35tEZ%fi)6+gA`v~?YQU0r$;-~jslYdN^ zu;`fAEaoO2FsG4}TN#?y{RVnMGIk@vlrVE(Y}UQKJnOgSCNq#IYHCt_N=H0Ci}+54 zi1?|D%UTwE*OV6mvZbTxsa{Bj5q+A&FQUhhIe4mhN+DdAc|@(;=thpwH9?^m(S@S( zTXmopE8D0OtK@Z)NU6+I(yqEsg4aPM8~u^W2>smOfsbA;8&t{}qB;Q-UTBLjINZzQ z71gU(Rz0N=1kA>L>wYzxor6c`Bv#wyz%4k3IMgZu@6gEDC79S4za?y8!niyJaB_Q| zfFcGhGZ8^anuQQ@*nRMQm`?~|%>Con8Obzy63g6DQR{_Jw}x4q8sI-q`>k`|eKS9j zC{aW}A`KLSv>FRB(Z&Ew+DeSvauuW4T_by=Y|O+2{!lQtd-}>4ELb&!F47IPsXf`W zuU^vt^#Eylq!ExU+cNFS9z%Zsis0^oc!TJoy)3yP{L||e-&;X8z+xeUB*dH$Gm=M; z75`>loq1)}+4n2En=9`+u>rnqzImi*UI$(%$oV+r5ac)xzyq&RvdE;; z4m#{QtX8hHR$HxO$5n0ZXyvZ1)z-G!-`d}5tNh;O|K8nXW>Wg@{?fNRS|}FD!N+L8 zI22A}Qzb8-wAurp+6Q)|Le{;*QkN|r7)0RIqUF#iJ& z5weAbCs#=%(PR?p=5;G+ncKZQ*~3* zyIDY?2pk}kF+lW!_z4R@U>48zHJG}7*KhXLbM zd7gxbh=_!E;faWZNQm1>gm_+vbRyA-=Y@obgcl(qA`u}W(TPNeh=hnplVeT98xa}_ zPlZrSY$h*z!Bm?ij!MP>Qw1R*(zF%op1+wYOXs0L6Okp?dGIY$uRxGIXm97KdirNL z_TM?H;J8~sJV5*Pzd2)a-+o8LvRYzEghHr5fjMpVh-DX+Gu*6>r@8TWzGlbagf_eTgXd<@BjDfb63^r8=xK;Vl@y43@))OiF8;2 zFAs!{fcwuo!}HsWm4Y^?SQr=}d=#w2DHw%~HiEf{be__|w&fQ$};o4Xq zZs*prV7GJ0!-pOAlD``rK=o27O%E|S&_#cxV1unu>yMm!axP!jW$C*7RtLWh({8{wOJEQk`~5C=EEHP8 zd#&kz8fz5OeyN9hMz9|n{#FkcP@_y#9K}~+U~SFXWyY8zejwV~@5uvt??XX}n*hp9 zHfwxAcFq+x#$3|a2Cuni?edZp<4~C0r2kGJkruP|zHVBTOM4fO_Dr!*r!8oCbUl0Hi+IeQ$~B4jJ0Ch2zeBP zzBJ^=C7mXblm{|%Sh6kV_3JVGiprJheztdNmr<-9pN$aamq*GK_Tu%J0 zOkF!mS+-FE3&-NHWw@*a;l=_C2Io&_Gzf1vh)lBos9M<)qCn2%3%RHri%z2EQmE{z zoy8~gJfc8sni;1M_yLLwK-x5SxjL7=&PAQ;!tP2J{gw`;;UE8=={=o&h=a5X!82oa^`L`f+G!}gVHoT{2RT24gZ%$x zYG2#;A^|V~O1}W|8<6VLhpK8rNo}O6K7S2Dq}tkb`*A+v-uLoFz88@uA`?Jn0w9=x zNDu%eAQPlOfKp{dWTp~{BntpReTd@!L)m7rG~JXrGt{>vKuQ!Sl?==HZ#2%XtxCVz zSi73>JFjY6z1YomR!ir$J-hX6XTKa|!fC9-9I~Sv{{Ne))XDeDrliZxiwX;vE({Zc zZRI)d)XG?>C=5+j{iG`kEY$l4$&<`Wrm$pRpm^w~El2?I zl@0&3dD$t z5fv*cR@^aHeg6sy(DrI96%bJY(dl{l?ncMIg7D7%RGZb3(8)+L;w+m%daw{wI!J>@ zS3d7MufI>voPHmINo&U4*iwU2Z^v-?;kXvtLt!~JiwuM^S{3nGSK?-bFL#Asz|X)z(b07%!oolNM(0F z-{yfq09f0wcp)01q159UL;UHtMfYHvWv>}zNJqtJP(a0sjmn?jivf&(un_`Q0Kj_$ z+6#Szer_SpBNTXvIbIP;y(h{{2uGS!VUp&uq-Q7Tun0yOY7wk=If9Q75$r`rupb}6 z5oQEuxe;6tMewOKf^Ret{9rDE-+heWFO?A#yD2~l2~=SOW?=?4VJ9vL;*%!6MG{yc zku6etNE%E?;~9y&Ac;}5N}z2H$t85FA+?F#9rXJ||8ETJW5^KcOJp68dqMsUg-=Wg z0ZfYk%t-;v%K$8>0<35Otn318KLT8){6UCMMCRF$jUc0PFxl0VF~&sX3!+RF9gm zZ5$sb#>sJNoE~QoV0G9i2kL@x6k9XH$0kf2H7dq2=&8FS07fVXM>Jy5f=-BL`?u?g zsv}Psmw`0IKf*akJYz)P2U?K>AOR32mVv3Lu+N+cik`EfmbnPv6NxayZX}|iPdd4| zFQS|7)wPh0CT;iXN!lOLj&wevz35s+x*pwjA)txvng~r)BGT3U?%k^!g^v#cgay5s za2gX>Vdc+EPk9W2Gpd3R05gQElfKM~L5Q-+fDa8M8}x4V5y;4I=jRw{<`$E9iFu5S zPB3}M6S0h0#*YRiI$Hi!527hKzjvU&Az%&0>+v_N3tFZPn~Qv0MA`i+ZlW2t(TT_C z_sWA9$218pw729g)0UCT*qM_iD$ZQi7A%XFH}5ed3Q&lNnpT`d6i{{YCk{vrlTsPw8KTmeI1ckB z)yy;Qvh6s&CU1QEG%4LO@r)X(bewSq-B-NaT;*L)6h1tXK$YXbwW-ZgYAc@sLYi85 z-9jd^%3J)zE8zcpq|OrV#)FgQ>~)d1aEeQ3*zXx5TcG(({W8%fJ7*d;|2+?K{0RaI z0T!=vjtgAm3U|PuVY$p7`~}W~%b*Z^!C&}m`P=6FeTOC}>CbJgzx22M(aRBmgdQU{ zoN>bgFRI{8HGBvllrX}$pJz$T$27I3*kFbPK08KB?00ZKO6aef{vOE;L4WTDv| z6Y{H3%|x`#OKYX0yCVnfVl2JZ4;iBF+^`diGE&42;mb)ko{JGH#MhG?C~zb*YV#vm zU43|0X<{evEOT{Lr$(U$K@t_9hf*+h4b zgT2Yr0eM^U3FR`4!DSlXj$a|nFyBRPE4y&T-dEW!6}>%bRgGX?yF+0US)$%5ErJ&X zPUWba6!QZLLQpzwuLA;}QO}1$0u5l!Y7xs zJQ-qVm~-|78DLdqK<=a2Rl80qS_KG4&fZm|vfGNqR#^fSr02A)0>YxK*}7f=7KOoq z-HhU(Ns>Jjj(%LG%1oO}>lr1FYg8|1s_jV@VjTA5$fsoC#Yn!*MJ_JOYp!s}jrDhI znILe{Pp%fL?Ysij3s`wIxEl0vw!14LTF(hU{fIov$C?SXHcOAp{!?j$Lu`w0dbc- zDAbAqSPlug?G(_8L=)BMaj)>b7})cJz>)<^zdKK{E(BZD8Z)o(9KjzPp2rV}>H9mO z$}c!u5QNSc*z?fdkjFf-Y;E`JLV2>;(z1T33e8HktZH|s(s{J@j22=1*TD|qvxjK! z4ubc9#%xmV1YxBr?@oxl&R@%;C?f$|poLn-hH^LL2Uq6( z0?1n5;{xP~V&%ESiHlpyVi_da7w{FGK* zoUx7L_ids{+?d~-DphSHs*V;aPdm$590AB;UZ~CBkPt@@b{@Z&K$qwx;;(NjC z&Z^B9VW_ha?qM(X>XQj``6Bb?gZvj48aeOqlNOn^rtev&>|yKY8~I-XsoyiucvBz8 z;a+VV59SLXIhw4xH(w~*)W;2cCz=`Skfw_7*=(xv1N2N&?^={F$2;m9qS7=8wb5(p zeK9~%WqqDwgqFfufIC_7qN*gL;%JM~l`76lu5Y6HMAbw>ccdsB>S%|L3Tj6`<|~=| z(mrVlRJ*EQj9bF_5SnVE)V_k2YPU46rNIsL%7lK0s#5o#i+TrJdEi z9}6D_2X#0Bzk`0oV$jj4i=9|fONxf`Jv6EE=caZ~AznBPXz&%QaX9Vo8vE6_Mv+yr zniN7BMJ4f^Fbn9Fs==Rd|7F!IRMy7{61$6QXm=$(gWg95t1v zsjyC+l*Vdj5A6E2M9r#F>k-5tK;akKFDbkA)VnvKuE0=g({=GXKR}DdPz-ncF{b)G zsn0F&`?S@?Iu%8`L7DX91;a^GwRsFaSAcT3EUBJ~dSg)i=~+l?Ye)EQY7V_50&0!T zBVilxHDH7%VSeSNl~?{GZxCjjzx;I?6-z3;p9A}7cUPAEh-x3+mk-V-i3Q&wfci*FMiL9X@enOEcMA0civG^^D$92?N|31rE56NaoWT8<$ z;`FKce|f&4W~a&y=}3cStvYn;O=U6u%&8hsd6vTsh347$go->qAu85~e2+T1K3zj4 z|FfG4dMJVi7>)e1fCbUx-wzNl2q+kMfARtn3IGiQ3kQ#Yh=h#dfQrVPj?rV`iG_`W zh2q7ZY`Ng4Rf=E6%`N1gNi-|dim_(()PdJL|xIC<*e zbVFz)7q6kuPI)&TA7>Y z2JW6$a?f1Hy>pHB0h_c1wyOwXI3?Pqn_n_5(*YgE`x0H&l~F3W_&@RECW6Q1wauN~ z_#&x7rD2U0RyKAHPA+aecrndPbIh~QV#}?v&IX%px657!9CFlgC!KNLWe5y`!4t_e zCY#s8U=$~5P9%{lHF}f9Y3E&X#WlbC%fD{AtJDLJJ@?8R?+Fu%N~8&8pgdHDs!-h! z21lWBL<-%E%@a!G3QIx~G74%sl?+VGs@1Y{aB9@7MVoe=yt?)B8!%+45mQY!(`<7U zSzwVR5h%t*3XT4e}X{SUxHl9Yh##|@7VBZ>5K}GgpN-dJOY~OfB_R0Y;$FJ z;1ikp3nOC8E0Z)aW4?GB2w()IJFuewQmCQd@yv?{ z`nP8JqKeuk#rL zyLjvcd-&vU-0nk5-3nl~#g(K_h>Wv9jsm4sK#c}1Tjj;;12 zFhAVFzrK6vE=T--qKLU_giQC14m~<=%jhv+oJ^?vU57{uFL5E?c z`xDvqL9k%MHSai}@kA{S6Gci8A4&=nAjt_h@DP9q5e5kwOc^(ewe9co#>a@`<3fy} zA@WW4&7^l14L}ipJz1#U(zu?Zl6ateUsm||qtFI1mzD}`fqLxFS(~y3XBV$ufK-y5 zZRZD7{AM@Zw*=Qi)-jfTXDdz++I!O8uig5~wZ!Aw(92J4K^>1m&w(L&IuY=Pkyv{$ zGnL_%^m_TTF4?19pl}2d1r-fibeLd@EnFidBd4IGqNbr`!IBkgHf-6k=d9u6wbD*1 z?JSd`vvhBr#k_Tv{;ji2-#W|et+Nbo}(1hlAPV zsTX!nPBRwWminXy4>#6=dkEzUk3kH; z;NZi@voCt0$Kp&V7Jpjhr#8*v_>QGjB7LPyW@oHINlNlMAjgQ>&GL8 z-(iI_?lqtm9`=NDAFW92A-?L2@`tAWgIPyZLxH7_M?JquJ^8n)I=Y{)=^w|k=ej5A z#xSijRTaN(mHnGpMR2L$zFWB(MPh)Ko4Fs=vwswi=rJ6iskXHbKMYyKgRjLXWwI(KKx&eH+%mq(RcZQ?s9NF)ep3 z<}H=01HWcQ<^1sR1uO8HvS}p%OX={ivst1yT{gbcsV5z$c5kwxvVSR*_eku$hxc0p z7tiJu!+{GbP=DwMRz*~1(dd}1SvH78pVxOk`}st`K&BV}KE-#Pll}bTrh$XCHE*9uQe`-)@55*NPq2-c2isQEaO~G+3d^mL~n5fIQ z=EW;#?hcRH4jnS&MZVuPEnSi%@9YYqMG$5n7p#Nhq*s9_tOLr6nP)UcO(sn`@Y^~bhaojJbT*I17VPWjM}qo% z`Du-FmncNdILmbn7&(%hbX+uso~loIvAzmSIBe^!aeu4Z(^M<6*QA zD;3G1UZ(_tgl^)AO=1d%k+B4S(SY8lYzGZGLv2Jprdjr^jB6x2tRZpi67>!eUN0$6eN{hl zEvLE`-g$W$_ekiku+6_W@jz6%nJc$ z5SOmmS%i$t9l2DVq(4ELY_C&@+<0t6&r-c+3m{2ayxq14r8lK>BCxgP7(d9DhIfMg z(xdLdv)L@&cF$=olo*D-8?3h)_0KiU>(ryWY&MhASd9FYuM~Q|q+|vvq2vpSroX7% z3QbJson*P7UE{t#hqL~Zz6u2SeU7ZjE_gd_7&>F2{0rLEDW~DYKI=3&Ri8V_Kq_6w zJ#XXKHc7=%y_w=pTS!ES4~f|}M-i=AJK)F#Z;^UThZUxY#(oW3i0wooSiKftoA$HX z*e~CA`lpljQfF0fF7}s4p=2ixOO;z8es9NS|G22!td+}Eu4>-}?JD`bMP;t>pG`7l z{9k-m#{YbMiO`174ONF8upvM@wBf&!f2T7Q)w2>Uo0GY?YlF&peR0RCB1T<%Cn8kr zsU%;A??H#D^E$oX`i4CJxe#gEc6$uXIL7tXJJe$sL z-BlZMzkG&`CRAK4!&<7#4l*n~D|soqJ#&Gs$#NoRDrX8%^q|Bf>4rkY^_74e$X5cd zj^YxZblK2qEM{>?uqyaSjv(ryl@J~};Q9{(3?2j!LELi7)R|*&l zn40uyib12%UjR&(*AwL|P!`|?YDUJ3`+qhMh7H(|jUY@uPSH-ymfZlG0-XkJKtMP( zL8XamP@|gEtTm3c9@$du)jsXl0Ud-v&I=<ABcYU-O$u*8#vwzv0Q!SZS-Gi|%S4 zAa6&%F?z71u`g8(a{m`A5n~D0*<{towF0};4Zh*?gQ`7CJ}5VY^@^NOWA8~(iajyK zz9!Ysa(&t<=kx5izy+m4#EP^&IwSV5mwoK#fDY@3j_R0>+p7ukEM&yRbA6{%L}9E;8-8?@e)>kXT@C${Ul0kVJq9% z&g!henykgzti!qxPCsJDK@RDJPHK4J;wvF3MUE+{sQGl;J~gQNNRaMhJM6T}ZhP#t z&wd9SbjV>x9Cgfb2sG0C7XknDXAOQ6l~+ks-Kb^6;G$-Y8!Q#YIuH|bils^kEm-pF zwXeLf6tcok1C=k>tj!vkKxj?{VsPg;H9MRUm^3#2u?WuKqRcW|u7~Iu| z^ReY**Nu~qjEl|Y_F>SZX|v`D*xD87snW*~OO`$k{?ZM%mb~oK+w(}@t22e4a)%?qQI3Mo()<=NA*$?yewoc z5TwafhhKvPK&m}5!X_iL6}*FNhjn|yfrCSK1Va{cM0_rPx}~ z3hU;yQlZjrT2H2=DVTN>^QlJl@q%O+p03I6ShVo_I=Js>YDRb(8uT&KHJ6e1urGK0 z6#;uCZ0&1dpG8$p!SDhfSIeo%+Kl?BlT^RSN(dE63939z-%LPK%Mu#XE$1E&((W4L zq;UGuZms&f-*!`aVGRbFmyQR6?V_PsRfzbA|xrpjxPl}b0Ym(M>OG& z!{y|HNPs^C3yP*95=cx%WAIcVc#479`CsNl0Jo;JFkexNq_}sTV?zlWWzytw{M(oU zEfGuckgeJwt_seK)=9ko-lPG}%ac5>bQS6fGWcKBW+C%gL1ZpIc;jy|k ztT)WEmhDEYKr2iTGb$oDk+=B-nY|o0yuw@A0Fke>wPZ!pCPYrCX-m61h?pLsQF+VL zg$ByP&`B$M9q9yOk?HJ}RG)VRvAFd0m8)*|6XX)p72WSi*LDL92rL`^IBOihC3JN# z*lU0#gc_^kTChY^|82r`!1ZnoCR+$_yL&^-R)WQZ1yII)zylr)dFX&2`bikV4m{&k zFN6y$9{plL^cq-1m;oL64e*9{!V+%aT_1!u!r&JH#(%}9kH8{OAu6B#3Kj&3U^;yY zeExD0t_XnGC-@x2DTp&7+2v?}g@BYRPYhro;lfRyIKV!9%nC8o`(3;3)1(F7vSZ18)AXW)aqNmNdzmyoWW-2ljH1bGX1EtfnSE zSFncc@VST|S-=_ zMVH0k+|(LS;RFJ(K>SRzm>W>Kzl$!5V;T09d1u7RzI<2;=@6|1_7k{>kM1kl*U#C{ zS8T;!5uCKnZ70VCO67E6W?iY7Z%Dp*(;o`=5$4wrRUS*Kn^t!PgLqT7dMxf@TQt=z z3+EoQRy$mP)maoTN*3j&O*Dn6ZA;t1bY?K~%Dv5EHgoQUvqd$xHbRwDfS-r=(d|P{jX!<8Q8v4gw@z`xk&f>QxBD@emNQs>FcQt78}e0l_Ir zy?j|fP|1a~NQZPuk5Di~)QO0X$XGsi`L^YX<=vMLSYF`e$Az#9yK?8O8v*g}(lWUZ z*0Qk=4Hr$uzkEljU>iNq^K@1|CqA~UO9#lYLhdmuPh$f8NkNVt3WmlT$F8N7*;VMNBXPIsvR+_mOV*v z$Ityc0+J`C@y9bQl5?~D8GCKzX+N7ynkq*ccB$Q5+{3mTw64g?`z>23IP91T6cXp6 zfPM_;D8hTHOrNppT&8HYnzLZ(>3&avXG|~3UJ~4w&^=Y11`L&sii7)SXm8gwolm!6 zqlQaXjzN{CimsWp@#y0(d2t2|B8oChqO@N$mcFoDpTQM$NQ5!dX3Q71I2%|o=vvAN z4Ua^cJl)rgCAtB6$Yc0AOfD3L9T@t5L)Gcf#cP!zibl033@1p6kz~b~+g`L-LMTZw zvS!*HjOC4K4cyYPGMg#4&G|~S@F3P$51-F@iNBrHJHEwDo8J3Pr*D0}IQ_lh5nwP` zYz~*l7mPEkfl7eJNW`v58m&%GWM$f0b9hMn#=9O83IQv$-a)zuB2$DQO9a!Rh!oKg zil`rR2&6&SjjAFI}aXG=m$%9o`5838y%Gee^kUuTT#-`Bo91ANDs8HPT*3opse+yb;El zCEGH0xXVLwJ>xkqc*(o+9dy`Hg?{uWzZ+V$>#T>>jI)WY?QMStI@qC(aFnARYqq%- zI>{+cbB42=<2>iPFiXeX%k2TcYfoi4_G|f~4E;qwSFQ@GDxSypDM^b|g)Y^EcE4$t zv%O`L>r@A&`jC2#s&`eN6W?slp&xQvRWlKca~P@1O;vO%hEk18RSBQzo9n38)%yYv z;vO&aCk+<7FdEPG>MVpJ<#80Zq#|UlbH%W0Dkh?{@nWx_wa3%36XiM2;STb_wx(tP zd8aBt;9c+|gvPo45kLc4g|EO{>`E;iqyrY!9lSI<^j0WG7L6raB4`S$i`p961F7gv z(6MO9R7t1I(K|;KHfq@|IteJ#A^`{ylR*N)?Q&nnFyc|qKZ@{C08JjJ0WX3<0J4GZ zX^#$Y*xVgp`kTb)d*P)esHFvP-vh^^SA( z?W@VlZKP7T=3ihGGTYzslY5qVZ8aVK53)#YWzX!GW3CC{nLI4kkFz-Dx6S+h3_4Gm z=4!3p*jZ0O?av|Wft|9G2RExjIZ7UZH0tX9g`-JhgL1Y;xxp;dq-g3Cj;>BaB+Ura ztO%MHkmvWNg%RCRu~dI??Cv$fTkwU|Xh=lwkS=E4My(qw8L^NZGv>lUkZ*j+<~!-^MJ3-X=hcj4mb(H27H`4JA=gPYH%K|CJza4vTA5nN(FOB&0|) z$pv4?abqcoih5=<>2CQ8*^V;kfoAIT%M+2QJAZs091F$jdHx5o=5X6vx`!h$L>e$| zY3FvNcJ57PRGQi5BAr#XtvO+ZmgRw<^z8bH*_zrpU4W|RrmHxny}5c=b$WGHJDRXd zwqd?brPoCw{DHHF06a#*n$IkPQh}y2K97?LCQeQzqD;=C!_F)y)dk}ocmM^dPgO)! zJ;(iVyMAr}I0;G(q*US4ZDQiCa1kaUwd#SLTD^OuicRDH@JI{(e~Kikx>4TB!{luf zCMWLTkc^{R`(!e;kTPTJg~wk|<=KOI|#t-*7%sg87 zkFm{fHXgElYpW5wGtE~ecWFP6MyhO#LCuv(XaYwbk}Yj#p2~}0ZJTj4av)L9$2p9l zT&EhmptX&3T23`~87J(sEE9cVv7Ebj(BY2cdNIq5?W@a;?RS@uA%H*c1uRQM0bgfe zeaxE1H})A*PhH!VHh2MZ#F*+9+N8*`jMMj}8fWe^$?=k9ew$yIG-E?|6Fa((=i8X4 ziT@s`?Y~zKp40}!&5ov~`ATQ^|5ie}c2>jf0MF3+*ONuSOOZ>H19hiI(V>vdB^%p{ zZFi&z(;3C>&!@0;5@cX@kr6vbo035F$J+ohID_8{1o1=REkHZxE-vgP@BryT<}WMV zuL~mrgq~x7GrR3*0XrDO|%olusqQtG=)oS0#8t#m(Z;U7 zo*~Y;Qj9$^v|kw_oL~EV4}d%su-$=qzF`7VW^^sTEvgcepdyCTMsZ27G^Q9+DV4}o zRLJB9GGw_)m88Tk_AW(_7()TXT&DrFEx$I@mpT*x1YiIFptvM7XTFvjhy{Q)djmKQ zi>5`z^d{g6h5Le5fATK`5hxGR12Bq~ipv?l%VKWv) zp&{z%2jocwgxGavsWb@{<#p8v*#WEN#HmS;s)W^LAI zQ?_Kc=}dnHGL-SmXEEzJ$Pr#d4jjf2+?3-vk+V3+1R8^rF{YShfkST4@d(MOXx!(4 zAMpfF^Ad0H37_)?zf!DRrD_dU>C)$r<7y{dciRKcC1n+rO`Nr}4Q&D=$bu>u!aJQP z??NBD!OvBGFC$6<=c4XF3-RAmZwYF>2KBN z@%jD#3+_{Hv}>zi68EI8?HApE1-__-MktmW?YOd2JE`j$%Jouj^<5SA6fSQQqlIo~ zk6^VH?7P4kFPG-B+2Vi!fz~&&=V>V&7`m-ioO z^|b+hs^;4I9_i^lsh9RJZ?2Airyl`tPFIdaz|P7*F+)<6tRyEXq5eo5;3yr|@#&b? zorcZI!@7L;KoMW!LFqFH4-Ta})3z@{UYMjNk5u=3t!N(!0l2@Uzf9?g^rh!TFVLw^ z>Xurb<;iXFkJ(lTr7PlP+4u4CY(?q=p|0sp5+puNQo>rxQ$rK8RKWFFUY5x;-4k0kr6_}etCs_{j<>k$Tr zz7T*r&p-fjAOI$uzx(^$Z9?z%94*8l(Cxc-rn zKo4cM9_C{{%>E#NHUc{7h)_xb03@W45`PKhFZq^=I7&6bFZGD(??@V@Ghj-q2~Pn% zwSLl0I?0fy+Z)K4b+m5PoocQ2>a54rUA@&`qlEx8+=uI?5p)UWU0@4Cye2N*5eTMM z0$Go*GsS{h)mHV|s*w)AwfBw4H`h&4;9FHi`58sIKB{Kb8I%ubT46n-Gwk4BmH*S+ zgf9kj6Zacq^Pb+HbMo(Ln@|7I*k~hpRKW{Tnb+CXOG%BUtPvgq)$H^PJUb<9)GV4L#O@`r#XY#ITNk>Y`|kfr_1|!ANy^Y2?=L#wXYkv@0IXi-hSHNC2}%v{*7&D%Bu^ zj7+jK%Bo6EX5gyjR|`^&LeuIL)s2=zNj}v2v094Xh^8$gD4=;Ov}#PtmTOT+$0l@W zwf5~ctQ`h7sY|;IZM#A3G^G7TcEp&Dwo_j73YwEo*{bU2QCe8vK;V~R`={~BWAy*L z`l@VoQi@E5E6@mdYzSRS0{1bFgNH>{jxGa33KAlUGE@YmXmXVRx~kvbvi_0x%%bOt{#EuLSfynSRT_egyo3+- zCH*GaM_b1|J)A(`0uqyp#lz}l^D(L_jSP8ewo* z^!In5)G(Nt%vBT(O-t7?)Km+{#1ySS6p-ML+QReAJSaVx4U>N~dg(@gqw@#)cTfS*^lUW0~(P-qNpfA_@T zZiwoU0pNgs={^%b&__H!65dS_vU*0{mm>SNJ8Em_xEPC?g?fW!B>Uzum^28|eo^()nCmjavhp^z?i zgixrT*IGjw9HvaGwAG*~P1dlg)?-AO11w6cGO5BI?OOC1HKs*}Zb!Ho3|D8rR@-&U zH)yFbd2TZ>d`>hHGMX~f{@>I7q97yhkN(&1-O_@X=oM}>nKN&&W}U_6I)`vxsNIZX ztXL*d=`@PYCI`*5!Q%rK2Wc{rdR~dt^lQX-=&kFn<)Q7|f9OW1{)IRAaXYOHiCd|q zDLhQm-+OzpOOAzysQPP9|L%~@K!80%TNSAJLRzYzBvPm^N2%B-`e(NyTVQ4X+eQom zquRB%*IzGD|Ng-L{PZC27b#>tGDvk#3}o$b8po$QX+Iml(r^551R{k@G8gjb4(xQ~ zCW3HLkhLAx^Mf#|tFp+mwAt+s$#)}&RTCtRr&(dD+fnBFI6)%R^*ega=U%WBBgo$l zRy!N}xsny0LaPUo7Dc8gG9^BsI;s-`YM=%YP!lzY7pR3=L_}@WCJO4H4#^eNMP1Te z)I&YuCF-LAk5($pa~&pil&4|Gc+R@&C!9(Gjv2J0?-+qNi4dc z3yDTobR{w9hHeC+JGztZpa*&&V~U>Wg#ai(*T0JBjozq%KInrw=!<@6kN)V7?ihdp z=!Jn8h+!CnK^TF-7>rREf}xmzVHk$#7>?msju9A%l^BIlSclOVjrACVG1!8!7>7L= zj|n)0iI|8pn1o40hsl^sT*DMhA$m;3RFV;3|as}5JGzphA_GW5r|@yAO1oVkiq1Tg&d}bJQOf96rqT@ls;Bq1<_z7R+0`_g;hk0)mTm9up7IH3HD$Q zv5vjiOMJ#Y>?3|*KlT$}Z~zC0KRAekq!S#%A<}&u#$mGF;0TV89^fdBlJOPCaEy42 z<2X)o0Vi;RxQ~-KNqUG=I7QYbPUAG`G0xx&$vK?GIbsgyah|OAxPS{Jh>N&Lx`#`+ zM2vA6m&w|~6SOx-ogZy`Z*9@C^a!`bLF}E&(ycF#+_{&kRK)(|ADu$~`t|9;3+J%sr zB3utp{grG+eJkG$%(q7qYXmKf4BF@)bTBaJV&kBP;X$7n&tQNJgCX_~qnPJ&{GR-3 zM1KiKhd+!D{xtbDcnN|0jNM3RACwF-~rUb8Z^K&XoPiWf)~&XE6@Uu zpcS^D?IfmlDuHe21RtO?oIn?7Kv&pqE`hqK11IEw~E}{Qfx&h!8Yn~biZZPP)K!aI2f-?lOp>a3EFd7~nbH>;s zp+hYgM-+9c+2ah*trm|vs(RGYAD(!ju6HdTAGGwXmE(u5{=nN!y%mr(QS+T;^rLEWE1VlAqBQ%sB{b$3dM zmhkj4Abu}@B=u~_6icbcLnTpKy%;*BGV19tDUwyshfRr`dOKxMEU$M{0n5s#_d!*C z`&4aB{rFUC-P8A={`>IXfJk>d-41p>jVr?L2KLSov^`k|<`hm|uP1YZ9EYBUgACU% zGm7MmV{wxt-830DOX?w{-2&;pe40{(S5N;3Z|lUo!^`i1(WD~$pr65i8c_rh{S&OL zPQ65xHX2>R6U+p{3u+BS6)+zNZ>SRxb-*?t>O$E-#6VU+q=FAX96%ik#6i@-KpbA` zpe@dxyWHm{GhA@N5dZnlEdTr86gS*3+f6qWx#gBQZo6%|4?f_0HdVP8n;1?IGB9Zj zl`4ylPC7lkVGIn$F)|v>#AGBhvrINN<2iFSfj4j2{Q1jKQ?Ok1HBe}r@dmsma_DP% zQMUu0QPiD)XHJp+!?PSTd(53;_`yXNqb#scMiwC!FWzfNw$2sj*1GFni`pgR=Ell zGE}O>pr@C@z<|Wah{(i@!orH6S~Z#)HFDLdQ^LjuP}@mlKe__sVuTYQmq4FEE=4p3 ziJ;sLoGDhIg(kpRfOPzA_+h(sU{LX{v7A(DXn z4|0I~AJGKJTaX6iZA4Qb?;rrkyNG5$K12{8A0e6p`4}Mp`2^7d$fpPf5m~h-Vf?y#@7buFArd?zhHkNgXv&0VP;2q~l4_ts(TqNCa2|jU|^uiVR#Z}@*F|*nN zJ!h5ULBcgTFGY%K=`vVk$wHF@tX{5MwesX?kgtGEp+a>aAe<@Eevx9uE(fZWOoC`Dww|JDboB%c4iueuGaBt-lUZctq z+f-A{j`%6cK~N*0hy$QTWKm9o8i_^r1vTcjqH#kF8}>3t%RVry3qkl$R1b#hCkTF$ zyNDnc7O@+MBm$z?BSez}F$BkA0ual7L0p#P00Bu5 zFWx-~64c^$iNsC9enc{1k-}~wm2gO-ETpq%$YkFkhtvSGFOf@l6jBLb>|2zu?*U&C zH{<{a0SYysj9mwnc%Tsn1gILzSGH|Tx4k0iRtn-{=Lxo`XXrCnp0JmkMrfN@K><8#m5w!h|Mq+-)~~_G_--kVA$! z>@ae~5jrQGA~-z_z6t!!B2$6idH7G@cLDwYeixA~f!|g52JpKM-vfU4kmZ zAKzvI0xJm#Z6G2tNlYw2LShFgsr6)J!sO)K6cqX?DS4@=tfi*5nudm-meyf9I$Knz zFr!kXE_!-f85oQ+GCIV>WI&ZFYnYi$v#{{7vg%Q-+K3u8+SRIcK%F|<*x0nOvs`ZwPN+MM)N1uTBj`Q-Ezl|=kASZl}$CjXS2=T*gN|g9NzbLW= z@c*^Q=D`2ABAWsKtF1hzT!l9(Io|L0bSJM7;TtCXOQEmf7mmgSOWkgm&?taJK8)Rdm9^SwzeGjeCh%Lnovkt zBw{NTQ~9q*p|tr)Ci7o%MMZ)|h*0w#43meLDjd-ZR}2%aPzX~hY2i2*f)GiPLR2bf zwVJ0!gQL|7O{egU`eHJv!Y>-yC^Su%VR#sgQcWhonH9d$QcR*<;Ro&82v#esg9Eao zBYh_)^xSK%xM$dGf5y=Yak&b3JTZK}a)CgeP>3%QsSt}PB@!a3RG~~JH8~zFF7g!$ z0;Q4-1Szsq_~%r$HLR=@SzD9X*Z|ww;^v(hQ*aPo>_o)v_(?ib9fjhKMhnJZ2rO0z z4u``lJSCyRvg!ct;m7r^uR&%jOYuz zp*IdBH|FYr*W`mn0lcLU9#MqdDaMwRz%xoCn!!}c!$F!*LwI;VwQE#x^*My(Sxd2FS0&;F#P;L`t?gOU_jz?&^d`VWJsxD!)TUTD&8{7q(4WT*=uyK z8nziX?ugY^J8Z&)CCC(dIIg?SbHfdqn{Kk)a!cs8+fsMj zp+g{SC{zT4$>4A<0>MY3h3}|LfoIDCrq07$;Og=MS5y=@T}j}TciAukuW3=>qWcg= z8+fW?f!B8l@a-f7fum5xUfA#B_&nuzpAdINHU%MVnqM=^?02_ckP`=mI;zzjxd_QEV5xTW3%E+H8OO+v;FP+UaPg zCH+b}$jMh6FjfElfxy+YC_nE{t_63Z&gPJ_-1y*U_KleLK*#qGSXMuV?r&d2xc zsePc`59VT8{hk5EmiukF$f0_mh?y;p^C8{v_S{{BPsH)vP-`?ZpTzd z-j(amQm+nv;&kQ2_pFhZ)lQx&ohvz!)Hg zPm$iho5rAevl}vJ$d>rg6JO1_^%I6m)1{{u@ls36ne|eNQ0=0U!o)lQJqT75r$b6$ z3<{53JICRc$2sQcV)x4!Yj4eRs#M%{Br%qqfdd=(Z5cn{`Dn^AZYleg_Yq0I+5e}= z$97MVw|&?$aYwzV)h=Tnd?ihCxJ_3Y(g8j83)prO_tiaf0%Ca($p$mhu+`Iv{!lo8 z)sthkmqJ7x1!iqgUN?-UujHe6OOlOU&*l&byg6ls$}$vk9HQ{x9!krKF6<7v)aahR z#BJ#M$USO}bTtyKljN#Q5lE64T)Wmuv>@9VTizP6+OuLtg3KC6{7-)0kQ%iK$R_+E z%dqrIQ$wKAAF0+^GKGWTnSo0oWm?vq$+DSh-RP%8u9@NMp3h=5(#MR(G7m^TvhBa_ zUM7vLL;21HGBWO)**uF>9n(w z8H9^bWx{EtGb8j#o6xpw&H5r2 zxhBrJNI;RDRC6&i=l^2sk@9vGGRiPeO9YL?pp`gGBmtcy!AJ^v$$_cl!c6jJokOzF zAyxUh=LHq%t8Qq;t39x7s+xYgUToSl{k>=d7HARd2&tZ30^ter#LNvA)RJ0JYidJn zsU5Ya&S*?Bdg|{BB`&p)yv45)G+P85k8#;Ukyz*e+9t*?*M}~8xa43+OLiH26X4T)x zTE0tRz%R-hpvE+aKH?*#SEFxH-Kv-4I*I5;j~I6|ACQ^6aa1x(EbC_Ub9#SbdMv^p znf^P|TsbAJT<`Izk07f5x=#upk-sm8vc6=%{&BiApiU>~W=x?{o1h9JLb@&g8Z9&J zoj(z}+L(DPuV(6c?zm5+rC>rPuVodRR))UE_NU7ThE6CMyO$}JsPSazdA^dFC@4+J zGKp)Z&ib6}UHXFBP8vX3GFna5Ls~M@Bl)stDY7}5NBPWqYKcKp``A-Lq6pJ66Ma&z zB{n^~^kL=%U~@n-_5wk-Sj6?nsR$DDp@m9_$jjAaz|9Vw7(&y z#SDSLI6JqNHDhs;w(2bTY!HtTo#^MT-lVMn?v;oI{lY4n-zlhd^V%_cC~x``^5v4R zkU_S|x0v`k%O4i_W@o651QjM}S)*3-EpnTlMOKdQP-0!)ImJ)b13A~#GK1~AO4(Vr1f5zJBm;QNyNwDMoU8=1j8qFgw)>u_{{j@tK-``52 zbN<=>7koJgq-iz)0QDLKSXKdp3S@2uEIJdw`z+x6E7Z6r4558L$VhS(` zV9y0ag7d^DE2eG27iR7Op4oEIC$W&mSeJf3HG@3)CTm`CO+JKF=lfOY6JlOiP}1rU z(6jHBrzk1icsL~Da&K1kmP|;ejdn_>eX8dkeKBqvnxnDxE z(4FBKDb+3RSD+a2nUehp?hK$&uZQaC^QP&ZEdn+rZF zc7o(oQ(RIMt9#4^Vay~qRb)j3E0;{N zWoN7htp>7hE#ta)W`ts`OX+BU4{Q@yLd>Nx^c1POZpfJXuu`S2m}d>6c0@Y#5OKF! zAE+|hmCyh#s4%6|GYbb~54R9bFvEio*jIQJO#V{S>f6yzDEc?-Wb}$3u2q`RzquhixQ<;lDBWKN9Np1zs9GQ{E5)~ z67Jz62?yIgKG;o1*vYy)b8~gE(QCJu#`#jWV%;v*9KR}$cCc#ogCFl&*XMmZ$4fKs zOTT^es5aHA>*WY)<5VlGx~f{WqNaKRD(Zu3U21Q24Q5G*6HgzN%vPDRYSt)86#nR| ze|(%LOLDP&9&27Ci4ehK#^q>PggCkBlN|T6GB=yBAW;IO`EIwZhsm?QOJT*6zy>KE z34r$ZIiuP-rP)5&%0kJGAJ=Nv(eft!!y@z(^tnt6BRjlf*V)6fLUT_{>P6x}5g?2} zhI!@y9u5Ka)EvEb#-1WB@QOqpi}<0yTxY3c_9Q1qJW|(z4;WNERO1kVFr0{RV6x{G zgL|y*=%?>Nz;{DXvZu!mH1v}$Rpk=*{KfIZW+z+BE@t7l3{apq9rV1a&L883vKC#S zW@A*qJcHSzg0X)F8;ts)D$r~Nfan(GmltNbiN2~R14UB~Q3!A5^(Api8UkNlUS9!w z!40|ejnQBug`%z_oIMl1_Ds1l%r(8^3)lxxKghHGR%sjovAG{Zb*~UH>>8fOopTKG zN8l{7(n%i%ck=k;bUe;-Z>QUbD^&GnwA<-2FT&uhdkiV2!aKCJ6cCKm_pdIozi?6= zRdyhX{WO{5TR$YLW`D$(5o`T$x5>>RLh#cvxWx_6S(;n3YtqoTv3jD>`hk(YT&6W{ z(VF-16LZYu@*3^I@B^5mJx0}(7}5GcbkgcGd-{l&!$%N$v^u(bYjBw7(tozbl$z4S zTz6}kowu{-4RS;dAx6z2*?E_}&l#xcCZl;^%}Fl~-JVNfVAWCSe5OKVqb~aP(a9fm z0%(49Zl2#k0;{6ezv@kXu783kbJK)QA0#DGUiy&&TFg}{yTk6e{JS;~3mv|}DWe{% z-ZOdfN{oQL-wgO`c|*RcGZQ!MY~C29&CWOz3I5DX@HD}mJb_V$_Z1}b8ug^As-x*B z4EPRUZr8aK;?`L$8P-MC--;%Sb?Zl&>>NwPM2j1hXd?G_dyN6#TPbTPCVb7@ z(R%UKR=-Gch}iWES#fJ7yr`FF63BA-mYq1KU7NDreIN_4O}-$p6?S zWD~sE>tl?<5R>D31n*xUlHMGNPQsB#KOS6N9SEzf-9n7Zwf6hHX0E9lT)&c0O3@4v zmJN73I>rwN_wC@;b-PA2a*4qN+&h#%{%!j$kMXPjF5Bg=WB%3uPy1K5B)=lkRr{PX z=`4WCz(^l5o0p6kVVMfBZ78O=%sV-_IHA#N^Hux3Vh;|vhGH8<; z3_%N1Ajfx#KwJ~KB|{Sr%{M9Nla84Meti)p(~h1FwWBQybb#qXVZ$mG<1B1R=mwym zk%<`bV(T7G+3k-GorOb3v@PxFlj_XEesSS6s1()ddMt6JB}I@$+@3JnH(r+ zEiR;rma%g-ueaaWJA?HKq%0*P&6Jo{5{9_K#>P+RfN@Uhm7OG(QZSQOcifzh7E0|t zRy2Ka%jZdg$;jYe?B_j;S0V$W@nPu1)o^rMr!zy9pgE?s}~G<124H z@Y0=f$`_|ssn~;(YRN+uLQVk*N#?jU!YHXE2$Wb^FIxvkXD<3`C8KVohSuYvQneWG zTHOYS3Mx#h{ZgWn91r7l@Ua&!sfgqM{SQkk1MM3GIk#d=Ivh)r;V{dVLt0y3W`}yE zAqy>XZ@5R2HH%^zBrm3z_V+c$rDY+7qdBrgqf^?OdSFGZQlA8~Qly))>HseuVr>ji zu3_#PtB}xtJNGE~5dPuEF3p5Bww-R31g|Mn&X-`s2D|PAy_gsV2n@pTh{^~Zhj#sB79g_J*JyRImkUC3{~gK zXirpetwu>OEaa42pIdz_ME;L`g z;ZmoA;~4OlkzD>;x?r(`maLm90~{kaf`bS*mCt?g;paWmB@q)|GbcR6SOgdvy>n^; z5PB39t5%*a`}A|Tj)#qdR0jW}!^-nwNQ#>38IcKIF_LHr2LWj(0rv6Xc|XT{0lA>s zu9s3}wxsO~-O>{oFMQY=a?*ThV%y{s2B=?I4LSfotE(X!J1|oUmEs7c1v%zq3z0xb zSM+zIoBzOo)Nxo>D6=R^2v5&N_-bH{d7_mJRKiUsYI1 z=+lU_ogF7pAwgm+NQmEM`c|DWNa2B(xwnu~N_+Y=aWEZ?)@@4aj z)vlj=;hv#Q<9_D1&lb^%8~GSVS`w-_m^i7Un#m7d4pyZ$Z5TMH4cqKe55;H^x&s+w z{<4E@C(*rmt#0GBxZIwz6=8;uo`GZD@^5e|i?6o|$2r8>e;C)$**S$)O(n)$4`dt+5pFIOW-uZaQru+tiM#|?^XOk0lCYK8xguEaq6JFS z);qz15A~4{Y)A3`UxT-Vu!56L{{`=SPZbrU6#K)$dhmLLGqhmc#gnroKV;mO{9pDW zGhB3zY7U_a@*Km1*_ErldbOfT8V*)ozU=LSsvf#qD9-FCw&i%%#e#fLpA__`)o|Tt z%-CTtq6Lo4W;rcStZK+L`enAYwXnJ<$A+wDm@6nYSuAKud>PH=BtvcFHSV!E*$hh9 zkb^CYdKX9)N@y1jit)m&@Ty(StY7Vn4xq85io;W0KC%1XFcoIo$!3yE@#!7@vN}Ul zg#Fu|_tp_+5OIv8pqDM64?rxkJpbUpW@|P(5sFIPArLP`g#pi!cZ7x+$fm~@wlA?3 z1t1M%V;r7+@^xkha-%~_2jh(1DB=@Ze$p=aazKlURKcz~)2YH2p_dp5)eNKbI#mFf za00_5^erXUair?s|BFav?B7UDpj z8zfO4zw~^CUOz_|fQ(aL!tj(}qDzI>lvi6cB-0KiARutS9H1uyEb~DG20{-efqDMs zU|Fl}a>)%5A1^S#CK-o}{32N^&->PaoVd2tytX>%?QN~B1ZAPq(nPHdhu#*&&<8@m z0T>0mTNKH?`UlLUKzKPqxm|4(X5PfAqs~>>1NjbZRv|^IU6ku?#HBa7!pt5L7RNl0 z3V=99p+H5~zvy!?7eEtX$1cc%vHZp5$K8q@V=dRmdtDSJg+i(|l+n#*^>Aw1@mO!B zd_=A1*G=S47Z~)KZTikERT^%pfR;fBE-^@1cEhF-F=8>k6p%=!J&7O&PiBFo9L`Vt z8EeGNypCT>mi!#>i|AIBDQ^-MseaPMr7Xu2>`wG8jq8k8hn;Mst~Xbmw51MpIN7Wu zmuEwupVIs(0*}*QI(6}hRovo(<(1?L2Pa!vNh$wm09!8J27DRtdS4(`N~w^HN~3=>oX$93O5Y)J)B#GV%O;25~*ct^5dxB8O}fy_(5T>zG1-P^|VSy9C5LG6z5Jn>hPuE(hZHDyzY0dTlY55nJ{;O%6vaSlhrmfWX# z9Z!-Alo9H+i0M`y z5VD$;j^!)AGVx-F0wY>cj3SGn_@mms8;bg8YI?J^>pf` z1G2R3ZKT1gn6t!KJm%_*!7AA0#Wi}dq=HNrWt|Lvcs=D2kIS_Uboum}6AYw4bu&sI zf)eiHXtrN77;ih5605k=&X|(&9t&HwxsTP9{*^wn7!AV>voK1_^{n7YYm7Oa-)R~! z=62d8n>$L0JXWNeroOeB4|`UOj-w@HXcXLy+%map==p-dJr=S=aIgh=j;YOXFq?rM zsc**uT3dfZumXl-i=L6r#^=pA)!%4T?43CJYcxI%Nin<*&T8y4JbE3TeuDE6ncP-h z9EE4#d>+_d%sP*i^K9V9KdHm5L~EzG=#Isq)62mH9=%6|zB+dh9t6XO|9Fu&G zQ3oX3LxKsL>8G=<|=Yx1>)z@nibK1T1s;Em>)Q2$A|{6fP^+2! z7nOCU_5&4tD2n!}f!K;)!1>Dc8c=5bJ5iXq4^s6u5OZ5{TZz^@Gy&mt=e_jGi@DH2Yj0Oc{~xe@e3L6`z3TH^Mg!?Ea{TkUOD2m30rRtepW@B&j+|Q? zfwAF{ct^^l@Xp3D(%q^6mfGTCWS!YY;^cz!-NXcRvu;|8H8)B#4q?7mhfjRT%G-Hs z@&4Xl{N+Ph4cErw6t(`BO7<%XJEGU&yt~W!yIzk?<_*dD*>m>%`V-|Qo;p&*8j8Gs z(1Dtet`URf*97g8;>#=?;l6~Lc!gdED)0sSl5KNhXW93xe5r5UnNJ{Rsi4nx7kJaL zVdRxw`sydB^#Y>v;ug+{a+p`4(?_S-b)Y-v%YFa;{qgt`=?`z`13!z{X}>tD%ZUoa zuct;nSAk=UlASiut$z*<=W_;r8F5e=N&f5bQw?JOAO7(n?hf($*yzv7=R2Vu#xRxF zEVLdV3TTdPX;jbL!-W11jvz!+((xJ9A8Uu-gT;TLlM;by)!60QOo=drqipp5Us-aG z&Gs_R{Gn{=;Ub%xh(SYH{_>jXhzqxi!JU$;F^+RpLeY?G9TI=Zh$Qt3vDztiMTi7= ze%_T5(^ZK$z?n8%qM95u>y|Olf?7+2P#dS}kxTjHTzmrbf<17qbj=IT6q1RT@S}&l`zDHZvr84LuLS>tJOK5vg|kT zA##9~RcD@hXvq2_1Aj){i{T3g84bx`eC4%RI(4^c$1_)Z=CUpGnXCS#r$`Xt@a(_o z@H~3dc4QvxnHDrJiHM{E6q|HGXWfX)qZu!0u{yN`je`uvu)w z5{2B|e6*2p7V6%kTn33WNckPmopUB(dnxlxPUOvX2C$bZlJcoSF;x4@Lyqn<3Tw17 zqi4hWd@z++I01GAKieV7LgI-_WsWgDf~{>U)NShh-H|a_{j#MnjbRqKPv_jDnLH`k zRK=ql8Ds5SRbsz@Ai$4ecfWuUQ77~aR2q!{hO(CXjZmys|M;b`K}kRQR5t-ntgzeB zup;24ca~|^UBEv8s+q{9};|GH=DvBWzRKE>2dIW@iPzVG~pz3`P^bLaBy zuvCWGN^F~vY%3wC#a`Q}(yFx=?25LX&pTt^Q(mFPsFATzZbqK7Bg{|yJ4ATLXA#Z; zV&Cn+I&IE7tMvp37y=eWGf@k)u2(d!u$|!c#E<&iZsqM)-i^prvQ7tgP(nP5ZZX%d zya;ZP(ZEBakg3T_fp zK{TFzLARsz%B&iuHS0DgM$~=kX*k4E&?_)>kR9(b+e|^pjz9c1)n)iwN5u)#S-r*0 zs|jvx4$N1|*nr;h0JBt-9G zhzGb?{D*+&fK$TGng*uv$wf)OCF8p?oai_X1iUcNz}keiG!m2S^$|ktObb{boB>_2 zW|x4@Z&!nwHX13A4w1HMsC7IsK|2L#_||Y~dJ)eg1;i7xeAskb^&7RGOhk%J@rZ2L z>&x&wZhGX&9VK^csnne&C0UfMM>#1t|rpZ#d;i;APgeq7ADyOc+P+3X}8-`T%EO&Cl| zuYuSXwL1!!8QXs#AjZZ=Kfdg96+kD8ov1@U|GsQQtRvrfOv~T7$JS@R37caK>{A_* zGzx~(H-85yXE5u^l_NEA{my|SMaMDw?alEu!D5Z=52sD|bWJ0TYk3N;Ix2)e+Mmzs zCv?*M@2uW%`o;J!ti%ObdfToSmNfy9(IX+A2;nYv2zzsn+CrZ(f+l#XjeMMpK@(40 z-Jo)79ohC(o9)Nk6<%fJ-Q9j#s*a_C-|8W`SWP1MjYh+=DkZ#YQ)0Uew83{p9@Sg6 zUEGQBd0Bq%I6;VYXUFWQ^Y3o0(DyL~pTwKri>A1=$fT0eU8T13$7R#SZEG8~Hu8UU zHpje`Y zK;y&QPdH<|zeGn{d+|ukuZ-L^s@5tK+5D;AoS@euh6hbk@6odJ8jY)C ziul6NltVrBD@dtFk{dY}hO0G5y$6iU3Y)UlDQ>$U{XW(QZP7NEssoYjRaDq{kzE%Z zMPvvWeK)Ww7j3Fp|J-=G30zptX9#bp}qF1-G4(Rgskgl)V#5-plWnybw)g9W7R3cyJouRqibV z!uijg3BOM}w)$jEVILb2U$EK<$E?kW{4k*%PwHW`%5m#=)6g8|Rh0Rh!L2UHmPJ$y zZ*eQmj%j4C%npsl?2j0e+cL57WoLAx1*sc9Jt@&d{I^pM6WU@X`>JzU7VXS!9Z`U2 zn|5*kz`H>OW5t$v&lC+4{!Y=z*tS*P$|Z3h^CawS@YK6^u3k0<7XN)Ku2H!#YnVi+ zGEO2Qe$1Pq5+A+fSWwe&a}#l)PNT$YMk-PZ_tY3wla0i}ujVNzP}Cq>-!Ww7Csp*m zn!sMmWzo1`b?LBq8shjB(hohMQYo{eCe%DW&5mJM;*o|5MgwB!bI%RQyP9(RFPGG+{Xl_S+r(!8C0cb_2tAEE~izAL@3U)*->MHxRKuc2w zr)+yBoQ?WLfM=r^$dIkaTu*4gAS;ZYrc4BOV2}tXFElDNKtJ?I|F@3HG>K&uQZ=fS zm(sr${<&y1QU6TvW^a3HJs6=DXv` zZ+~Y0M`rz_h2@ea(93xEF7!f$-ud@%E;pBne0+X}QQxgX3E z%X)OjRh6o@&Q+GvzHfc2nGrlbVlFl2L-bg}_)1DD04Hh|^wM&9ddqd0gfadmdIFGk)9v{+I2x%oNHe>OSayL{!2r=LfwA#-6et~1kQ z>ZAL5#QNgpOP6P3FosuiJc_A|x=yxe)Y!`egjx@$hDl{zluz=GUA1Xilv|R_Y?qui z>l(Hlj4U^I-42+58(tiSn;hALZWw&`Dq`D3XN-+TCueEQcyM-rJwvKuK)_oZaH)L` zwTq=??E$l0h9F5vj&W@#;&v@XaB&X21SM7n&}X)tnsW(E)I3rXGSX9)GeKP>Q-%7PdqX(1b0-2ue@S8Rv&|Oo_q;4kXCzf|ai6glK7|9&Zd+rb zZ!}PvCOKZW*E#~bWw-6bL*=4Fxn;v5iHHpk)2L{~r-_Yj+;0iCiqv_PbI}-W4V=hd ztthw*0Zn~9Ie`AgmSrBgGhg)pI;f+V>z5bupziUcb5W9N8+2SRFA|yIbZ?f*n=z^F zA2$scx_}hup*oQPW;;ErE%{Nemzz~SeCc}ts8ZI#8SYVH9N3oRrQOJZSO3Ry@iE;9 zKb9(!7V|u?MvWr4mddVONsn$bZpq=*@vcZQtNC+SnkE#r?n-0FgI+&;0+}P_ z8U`$bTXD26ROz5KNoYtm3j%bB>U2Io5cD6IK8x9`7K+Ta=u6VIEuv7JIzM;+W#H zf;}`i+r7b5+!Bz|!W7vy0Ezwz`gQw3hG?M>sTMv*&SEw%u7Kla)!|uFa*wFn>s+#3 zlPcObdn3Ca{qC*c6dQUa*&8}}Y57GZv1#ervL$L~FsSSX$nvhu`!d+P#;PV$-UP|B zvmrL~ZCl+uQbtOB%jH<#Yop2-Tw%2f1XDR4)%xvfZ9JB1^0p;gkQy#76UhbkcQFP| z8gqfy9j`O~nw$*TP^U~0_4}rl&BDqsjcQ$t)vAkrlG39bdbGTr*UEdm4asS0!qZx> z$_&p~9^<1fHmq!%ZVwt^nc5v*kw#m7lNVcRX1DiJL5MV<7QHdQ@y@|scbDgy$XmY? zdm`yLdJ1>n9VQM62L1Ymo4Lt`yOsxM+2AzI{mzr&txTolcec;g12awfZhHRg9gCXp zf|f43XgW8%uQ`wuzH2)HUAb?BUV~3+Q0)WSrfyrjg&r7DguZ!yCi~qnr0(5@RG5Dpz^^c3^%l>{ZF6=#!r=Lwcc(7<{|)VU6bZ zWLaLK3}9m5WN4Z?iluu#%XIdJ-z=-E#=5;H0lU*1uh2MJOPE%yvY;dSG=%@k*B zJOXa`0}la*cf`Sww2?bnhX*>rpBGJ$B;{?vVx7J4Yjo2SP&TXFBQK+&G}P3+^1hIt%jcVG0Rz1xHQNSLpXQx z^^lRsycq=zh4tNBY~8e~THAyJ^)^S=sP(sO56F{CS<7ebQP~h&r9mHrW;MYvoG)^) z(XI6`=wu&WpB43S>p77OgX!cfAm1s_e|^S9%=g}lT@Fn9gA03E#=TOHhv zknpk!s7{x($?|6SFNyfF*=p>n4Oz5wh*4dcUXuvNO2KU~JDZL(Ig9=KWUD8brYk>- zPMtvuL1b;QPzsJ%u^kB8O)S~eO%}+3o59~UF<7Gax~mP&3ER!!L#kd7Th9hJg}lX_ z6(%7%R+w#<9*47$hVBa-VE$orxbOT{LvU%1MiiL8VXMWp5<6iL75BNnuBlVn+hDdJ zD()7UhhTcJK_&G}1_C7~_(F~yW4qWrzjH@q@=gF2aZdByw7chL({r(O7znUofk?nC z1Uj1)L8w@8eo(HV>E}^W-Pj9z4}xgyIhd^6yZ@U&LAj>D`Qq6Z;3upY_MEB=TiX}GI{gIA=cLM~9_vr^!NhULdBWcgmL1%%JIyp; zHn0RkiEmOE;i0lxNhc4MrTca`pRabr*C!d(QnBH^d+)wW(`Ws&>&@x+-ie0O12mM` zZin{kJB3s@H!}1#2mAX#_bF(nkD9I7;M=X|M~>f7(E!0`moxD0d^i2et^Fq~e))$u z-tzYzFI?&u^IRL?9{HQ|;{8jdZ~FHyk6xqtGkDFv)+o45PGjm;mOX4vfHqswQLoG? zoKeS%Ow^M;NPbT??PimqsJ#@M^+GqZQaPXWm=eT0np|)7 zm+w5xw^ePKUU0 zM*%@wu{S7LvAirYsQ@gGjYdzm(Y;iVN6^w2^ADBzl7hX1>;Oe2W3!mO0+`~ZA~Y}T z-1O`O_H5HUpF^SE!ulSdj55_OQ2>fcz@uH9%RU5sytgvvSn?eu#>5jz=Ui+f!$7m? zo2?4-EkGTtT-J=sqIuLN=c{e9=Pc@ToVK1gzDe`=v9z?L8qVx39}O!*ILpJ~woC#( z5VP1xq60#-Zz8LeWw z7;;2%vn-meEC8Te>QDu`oat@-6ORB_K&Zdm2ibGHpkCG9(k<;^4k87RsW06do;ib< z6Z^s;RN4G~TW|u(4zMlYWmI{%H(H#4w1c}>(l*h@)mU<+pBMJFHxy{*9o-W9nqxd^ zMlU1a)fF+)I>w{E;C=O>szmR8FaeJz69cT&b-FuIrP-7jt(-zKQZ^N$Pjv`SXAXuP zfHAKHFPl0RFyUN@kN}uT^2B&@*dOC^4yId(7L=DEQ*-VaOkO~C*lc1nKD-$~)pVDe6o>*g2vOFn+5 zEt}^mnNQ87?*>jmZaUun%;#-u`KCJT8PwZ`0+W3iRwlCgjqXmTHY&dfMI|uXvid{& zntfeK4EyX>g4<|MP9dwbF`o!yq<(~6w7T-A}d z&|HM|oELvBC~08xH93F!8yOi~1FJuN^T;6mqR!bHz}I2MT~Z4=5Xp#f^U6~V1jD+LvWT;Flt8hVV40a{13dt3h*~+L~3q7m0scD=z-NNMnVgHh$C8r7IMCm?A zt@^{^uVDrSr0Jsy>Ujc1!?{Ql*T7`5ENw)oyp6_o@HYS=44R8Xm7)zpm81t)>;n?% zE_wr>@93s!Bnvk}g1x8^q6kfB#C%cPvdDKDQos=`g!5Gn2muY}HB&-kJaYJ_A$AD;aNuAu3vbA2`uaM%FrL$%_Ay9R z-Q>5_fp{4o`f~8Bh1qkIl307R9f}=Wn0=E%h^dOUz<4Fk=B8MP%_UzXTp7nMdVEQE zW$Y4*RntnA5&%&9=wJ)9b#$P;o!C}ri|g`?TCLQVHY&!kJz~aFl3b-OTOrk?R0#E!jp`H`jPr8sVlg9DJ&fS>H;P$y%vQhk(kb zI_Lu*yn+bF04nx7Ebtqa3Y;$&EIiV5m2nzGQc=guIIyoLU6K(tk?L`T29k-41F5}b z9EWf{dN+yKj)asV%^AjYr&s4#+R@%V+G$^p$i)KBV02M(b%rs`xzxgE)pt@_F5k|p z&@OXQQ)iW$IqW0d?U4`l<^2lEdL^XSx0Ferui17;ooH#(^I7(Gii$E!C^h47O$0*w zmV-U`O5jyF79_7R?wX?6YOz?uLWbj6+noo}>xEPSScGyf$wju$+ug!D`m@2f;8}g~ z9nkRGbT!?0)ky;p7;NurVr{R}D>qN%13(=kea+F~DEw^z^E*B&9NjeHFCj{`z+g(h zlERdr_N9Ch$C)E895<3Q%ZbO>O_FeJ{?@efiZn@1rzgl|^`C4$d8=3>ywz9oFcFH# z%9IEa=?}fMhXn#tW=s||vG}21c58d-{fH1|)?y|#rR+XB;~oEL`vK*y1NXACzu2VS zwa10P?LgJsroZUuuM7#|PW1J!c2s}!S%#b{Nt0hRf3v;)+KGlKg9)ER2WNvzKFJB< zMD$yI`45+*A+s{2f_zrX5TgYrt&WKaM<#+F`Z>3D^X|*;<2TO_&eramvz%Y{Vj;W$ zjLfO@N=dOQt;$< z*6itTuzII#lLlHsAE6yl?nWJiKt8xEHg#m-!9=6wldR^dx_bg7tgKb4YU@-uNkLa; zW>-OxxQO@TF9s;an_|WVgv__VGwO+| zTMw0@aWAj|;3W<%fvu0K8}+y^+P;;-*QVBV=y}DhcS&B+Zy>Fs5->4Z+NSZesNryU zVX7frT^>1F89RW!`iX{r-L3_&nr;TqEftU))l?R&e{5=Tl-nB=(Ked9x=3U>1lq@N zH^3+&ww4^?tGS&%mUf8r7U{=K!N(wFRcHNXyZX1NlEh>6L`BaGhZchFs2(2cXTp-X z!HhZc8%4#qHQ3^!l2Pm$+~}4+KwTPq4LV0dx1OnBu8fMF37fP|8pB3`RRB!6qgE=I z(WB_^0SWLu8goq*T-$~P$=ghCA|PP8<;vw&_={<*$fqO|i~b~UNR|#)y;+-hX;EU` zheRT%z3KjHr-&#}fS8X=l`gHa zC|XNFT7N{n4tMh9WVi5b!}{QQqq@1qxF@hZV^xOkqu@sd+~k~p8uJl6GvbCRCy=YG zIbWM1FJ*8l@9P7*ww zvo~12YiAJ29YTXjNjLF%cIISQmZ#swqzxS#N@9txk_U)i8=ewQ6tFj$dRO9h< z*wsE83JYrZG1NeueH!{@louM+w6Jv~yU)#tMIZ)^k?0I$iNKF0B8dVuXaDGiQbbAV zhTbJyg81&31c)i;2@R88(|#4`uL<1*HtlHC+h#aj;Evj)WHAv-@kl2&Tiy%e3Cz+- z%fu-5dmu1z89c23@E9jDKso#lkBGdPOJ@emI{nX z;6by3a^-83tt-`1)xr2fQ_Lgi zTs9Yu9$Hk4Hmd0`7_`9O0E_Xpv&@8;YM$4z*!tQI2Q7>PzQnSEbmHP(`h}!e{PkdA46AC#quI zR*4$#sON$^b;O$O^3Y|{RwB#7WO5Ct$a9JY0h?3nAOYDrh34!CLAu+BZ)TN3vUmGGG{Y&Ho5 zCi6;10mGKd`TuM3`dluuX$C9P7V(K&gCT6NnoQQkzZ^GC@AiaGPs68el!;%!;BN+M z%XZAei_MjA9|jP|81wUEj4le`B>}EjQ+|Gw$%q9y_3$vZj0MtyQ!8{(Tp2v~eE#ck zhlHM?AL#TShJ>C&vvKG04{1k-AJggI59>w|({qYz*W$OEpKQwzb2zEuZIw@UEWQPm z1d@vv2i};Q%M0L0!4p>w1=;#Hf=H0(+}uG6^~S@2^T!@W2+-YQW0XEnQ)jd7&Qx%! zxwhsGq! z*S~xJe7O-rP!a`|R#CiYl%r!=eDzMqM~{7P-g|%&Hmc3hWoEhoAgD-0g3^GYyB?z7 zMZhkh(U)L|ccVNj3-I7vY{AL`Y%Uo8Dz)&uxT%cp5VFE7e3*=~Ya9f;^;b$!B}*#1abNj?>%B`VklC?1S`pACgzw;r_#(V= zA-wSBeDPe=krNSZfW zYHB6$KJLhYVEcbVY47QFe-XdE_Q{cSF^7{TUafwz;|oi9tAsxY&4gS3Q$i&_TGu?W zr+cCi7^rNl6#DWVkfO?bpU_nqJ$Wh4YjtBQCqm=$2c=?x7+=Tf*>hkBez>IMF#K8! z#tffh;vI7@@Y94l{v|HS%p0Ql*Rk%21I-ib@_!9*|1k!-laQLHGr9>okx(mo{<7r3 z??7@xdmV01Jfx`b1ZLnYFHgCndIYQ;{ITYVb>4}(WG#@{ZGgVMwe8LAWz8C;9=|=8 zb8>XqVFdA6LeK}8xGFK7P8M$J+2)AzlEJx2d3i~>;N<8D`LtoIYoMrpbA56m+1!mV z3QI`Lv=`>*;RG;+U0rxNzFJ84cs630g*92AFM>1__`VK)4Glx5f>S;g&Eg=kNx_MN ziNHk4knCf4GUMBf#Z|% z6f9f|vL_v?4l1WXB;Yi5FqDqb2D}lAGvFJDzJ>Eaq#oj1z}lvML29I#6Cel()*T^@ zS+S{>1qy{SLh!hgx0gl5MkX6F_~e*YzsuflLL)GZ7*rLy*Inxy^w*0J(W1s^5y~o} zLP6?o8sEX+fWAxm?DLAK95SFwQAjQtBLX(?*$xj)CbMxQJVAXgRl`~s<3Xb>F;zux zQf568EG*gjz`nB3j#)TGfJuFNZFh(HHMgocX+HuMO3A z6_$Ry(Tds;G3R!U&Jx+yTmP}6t;Z6n3@b5SkK^O|w%!QqmcO$Vh%Nn?5W542C45{O z3!EH!-tP7`+j7E5(0|a?mhb}n)I_LzA*>(QlY}xIjaV3UC>*^%&}f4CivRk8-=TCk z0YNvDWzo3XL&LkS`ZP0|FAVJ(Rts=uTAj9=&TSM4>CJVQYimdANT)Es8B!h4?(q3R z1*BL9mFu{(vzw|Vj*>_x%oE+Eh=_&Jf6IM)R-P+WkBiR(lJJr6p{Hw78JE z(U+0;XS`~zTM%n*uQw~I;4KWdaiVu7;cK-Na;rDCSOS;cTsyV}u`rt6klvdfYwJAAE)>z_>s$RIU*xm50j&=gr%UK7j8mPAC;o*A9AKs z;|w*2+7EnpMXjmrsEt5`BTRH`#MTH)+7^(qra`w^!5>{1MJkr+Y8*->WpqJZIKz{< zEPpz0S?2K1PTq9>G9P>;uvye86>%E8W$H%@n=&Nb>8?%2%SNJ)fa@yHx4Kgi|LCAz zxN9rX^u8qDM>Gx_vFC%x1Hvj(D|9}s$q9tS=w6Ci9#Twd1i|;jM4O?N_8qpm zeF>&}IM0#r5rUU*^m|I%i~r`<-znJNl4K(}eP(wmjjT(`N4slS&sl*aApr6Y4>aOj zQ`Bqyi{iow>CTq&inw^a?nqOcJ)l$mN^#r>;u z2-f>-)SgFIHwLKnV#)xJXVGZ4>)(N{mFmbXr%i|Ks>o@N zt&Ma?I7*y&0V4d-%tv8F_{Pi)qyX_HBD`~EXYrj~^TC(F`CY}g=jOYNWu?{3ab~I2 zSk^TkCQDYS`sEmbNs*Va*;RWke6n~9>HH^*P-CHp@V4=7 z;cdzs2V!(iG1p7!Q3P-x{Bz1VCs31?y}}|_FvAh>T$PCMfuZK^#%gnKqiblH4-qIV z2q1hwXq!KjbU;BdL@~-ojC>475PTv6F*=)HV9Y5u=FJo_v@Y3b(@YsRmz0 z{+%V!J?OJAWsOlT5LH(w!)G*+Pa?8w+ch0tSjLKULFRY{tObP_ocGOp=PP%_7S>cM z!qL9y`yNV(b6I4P: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 Sqr{aI0Ed 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

    i~E?ny7&zkfa*KZ_( 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 S`<#{Hzm)kepvXr70000?Doe-! diff --git a/desktop/src/assets/fonts/JetBrainsMono-ExtraLight.woff2 b/desktop/src/assets/fonts/JetBrainsMono-ExtraLight.woff2 deleted file mode 100644 index b97239f3211124fdb0cd16a6684479729c37e7f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92712 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 z

    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%0A7$gL}?;}zsmh21z5!!hCA%X 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

    Tw4Z-OgGou zsHrPAk9S1swpK#Q!yD4kpkjeHR&V+KFaIXvXArLVEQ5Yozm0EfTPI$)}VN^N$V3YiRW>-=jo0lW(ek49C{%SSj?9ihsO0ack zep32!hH=lPMqrHQu$8h*oo@PYNrwSiOx8yOY;bSB!zOCE@$TvDKdjje-EC6G{DO`- zN(R#81aBESdfl_QTlu*!2w3JjFzF2%*$~dU>@jQZWa z=2pJDnN`Qp4UGI7J;TwB5B5j;aMcTOHKc*>+^6CY5SZi`fxQ=0l`}aZ*wDsj9au{{ zOWb$9u==^RoHbFOyhAY?s>Z;%Oj?MF?Kb87=*gpgk+cyzulzpD>Md?BZmkFIU6#d1J;H|eAcgmXYXwgQba9*8{tYph-4Z zT$K{ZsI^(K;^In}{_OSp7;)GV-6c zGnNwUQgISe>t_a4uLn z%l5N#U#U<&i^_z}+Jp3}&J$ZgjayFa!x_ zD2R?K&go9QXIYvM@@&wo*dRO163}t3#IC$on+sB?d2Jb_P=4Ik%TrS0-_80@NKx~v zX7h1Jy{}#|zm^X*7C1V&VX?4wL?;&meGSb2%Am-mLRR-_+=Rb)0N2(wXaL+X&cVx5#-#!&6XRFr) zK7?7y@NO@d840FAda5yl2PF72Rs80@5o$HEaO85&L)FHBbp{enQ{Q)F=6W8cOm0!G z{kbJZ{G&0ye}G?We!inCsh#l=QtcAs^`Z8s#p@jhvpx>o;P1p1|1dYvA!1J;_t4JCOQ-0<6pB`3z%*nKB^uGB?5?DL$eQ=9K)Qn#`K zoNud29F13Yl^*8U;(>~^`TQiS!}sUew1!pSexXsqLvX@Q>Q=#bZD1o5Eec8+1F?(5 za~saR^`B26HPv6mA_@9YljXGI&_SaS5K$q8E6a&QdeIpg z?a+RxuIe+ztTP6~&5g4I$M3C6$>VB~;8f6h@JCagsZVPM z=`NNrzgmvrSP6;L?+T>a(ij)My&5NyFm_^@@~0YxlfU8lJ#=dQE28YggI4kUL$1_9 z+=)J(*tSRQXExfU5|s*)#gNKav}#V!XD1SZuZlYYjtdyDJ|y$=>sjhCj?ZN&dYZGB zv=zl_jpL9b%|BY0(^*DC>RCWyv!_J4vlVx>&j!0Vy*@B`e9f@8@9RaoE0|fB*G!*X z%3k(!W9d`LAhwzWctwxrCz81nT9eu*7zxM!0;l=M*Y=1RlQ`$kr(iR(TCjJ^weA45 zpqwqQ5Ar_R>f%2?e$`^g8@3U_pg2t==&4?FUMAae6|L(*DBZZnH7x-f@zC+j2WAouM zW|lVEZ8qJx&SwC^iUls_!sxadBf=eFk|n8_KY|^1?Ku-YhRaa1fIr*nm+wkHx=VL) zR)78CO@4E8*Xu&rp8d|d>_`c-NhR4cfzCZxO_zer;FP-pzP)K`DD4y}(Y4@(Vcd`5 zHXRax3US7e6sJQj_dQp>$@C#&qm5CA#}($UU2~TjYAxRFu+#J-+_nywG@kWifi}ViGZoQj6*e_&HkRslhh*( zz?vh8nwvw><#eN%$5e<}$dr)PLOP9`Sa9Q?(B^sv?3dbb6lo)_VwRiDeyV1zV>Dv6 zG!g%)ahm|R&y!dJ%}hIfFdgGo0+=m$lmZsMbRC3WU-PZ)q)!q%`RhhlGQ5|ERJJmV ze-9Vdr=A9u*2&;JcQJjoQbv!z7^Yx6cTOJy)}F-Z^3INyQ`~fuyG_)Nq97Z=#)-4Y zY2A2K#V$g^;eJkZfPn_XU94DZ!!N}r>}PratgvuOoTxpmD)#dEYqQ-9`{pj1}_V*FK9a325E zzInVsncA1(B~c_7p$|n24X?Xhx`pu!Qn}_AWp;+LGMyjSn7cGPoEHQ*p=J4Z@B)pl z4un8WH454WBe&i-Oc z&sTE#j8SbS5o197D{`Q)Xz%mpYIy9_;gZ>;{(a>+MT&7;da9PJ`!t>{%tEm$^SIOKNfm3x-NOAaF z>%udnlAOU{J!}ujUzU33jaGPjunhX6_sjd$sQddp?c7{h;6#(O04akkdp+bq>KcaG z=S@?XBJMc7RnYqpaFOONU)KM$t-kA%_fx}6>e8Q)rbTZdpTIk$`A2at7k0rqPV>g| zl%QZUew@6t`{J#Fh3{?M35%OBhmdJ(wsAYu1~>yp^_~Tn-rcUQ+p& zJ0TiAnF_640Gp!f5f<62S+3VaeHBI@c{1^E&IlfcOl!E;+lU?7B+7F09B?nQ zmfQy42E)5!Vm>FhcnaTPFUj|2>ACQb*`e~WgHv8DDn&(0Ds$OnJY4;|J33PV?V?90H&-_5 zJI<3GTG$nZsVTWIzbKAuTp(3r{7aZI`P#`Z6RJWT&LP7vudnlOXEL0MS7Cqf)aat_ zBFyulQ+~%3V9F!H+Fn3m*6Lgm#k11ZdR~0lA}=s+8lp7Mt}=h=cE5jqV?bc*_B4iZ zs*`n-ZviE=DCG3vcc34ptqu%uz5po%EgHD+AKl?%lVxoWTREWda~=y*_a7if!hD0P zodM4BzFQ432iY$x2!mouDP&?w+p2F$VFBHreJHIvM1^3eT}EK6J8taw1GK#(eP^h_ z!P(KmhJKC$2B$b;e9<>L`l%2rUzB-d*FmmyQ6d;-1#e5i(W>8)xDoh6^noQJ62Y=_ zgY3@C5QV=2rCCiUxEBXzzpwOS@#H^LJ_HRbj6Qc7e=a|ojS^R(O^)6fl~G!i^LE?aO$di1=L?5aOOcl!+;GVpV8hD>f4Rb={x>Z4!Kqi6ZlNreEI$rk{seR@n>jrhp0tWg&)ze`t diff --git a/desktop/src/assets/fonts/JetBrainsMono-Italic.woff2 b/desktop/src/assets/fonts/JetBrainsMono-Italic.woff2 deleted file mode 100644 index d60c270e8c5e385b9b594d3b99421f5c07379397..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95864 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 kKiR`SaT? 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

    =%^{)$hpH*{#q?+x7b9aaCP^1|t$ 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 LKQGCzPybs0j|xdv diff --git a/desktop/src/assets/fonts/JetBrainsMono-Light.woff2 b/desktop/src/assets/fonts/JetBrainsMono-Light.woff2 deleted file mode 100644 index 65384987368389e57b7d1fef5ebbed55fc6fdd17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93856 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

    da86Jexg>>4 zxFnY_m!KpdpK_4fDRT)aJFHnT-4=;e)Nor+8CHQpyZF;k+Ka7VG?jVV3U=C>?dOS)7FU?wf*8%e8Yd zC#}jyqkd$MH$>(NzRPhO&s*x%8uNy5UJtDE0q%29%T45DPU1}#e@UPce>S#P_frPg zdJ%}u3dMDTle0XWlfg-dyGHL6gJy{W4U6<=0fif)gLQ78+xG!Uz0qX8Bv4D=jfcIr z<2q5nnQfKWwR1lTMyiN~mwuJRRbGHWTTo&$YsZO@+?Y1180u%&UihuxY zn?)Sd39r2&7!k+C;VDv2tfnC{fRoC&Wz0!RKWYgyjcd@FaSf*RGPOa@Ml7g(SZw)N z>`4eI>lQbXdH^DWLu&=B_Iw1BuzEx+Bg<1*4!NjRW1m^kPQ>9}p|cf?`ioOKT2$GDnkma@>%zuP#4kMI#33B*af3Gv7%A0o-K%0D_6 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 diff --git a/desktop/src/assets/fonts/JetBrainsMono-LightItalic.woff2 b/desktop/src/assets/fonts/JetBrainsMono-LightItalic.woff2 deleted file mode 100644 index 66ca3d2b993159bd9624275004f31f3546ce3556..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97280 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 E0Tw4E$^ZZW diff --git a/desktop/src/assets/fonts/JetBrainsMono-Medium.woff2 b/desktop/src/assets/fonts/JetBrainsMono-Medium.woff2 deleted file mode 100644 index 669d04cdf2d841e79bbf13d46d90e280ecbfe82d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93824 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 c7tX`3Y{L39dc2U}a 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 diff --git a/desktop/src/assets/fonts/JetBrainsMono-MediumItalic.woff2 b/desktop/src/assets/fonts/JetBrainsMono-MediumItalic.woff2 deleted file mode 100644 index 80cfd15e00940e3262a9b174f09b1df2617e6027..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97808 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˘|$1zZzD3QGMB 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

    n;(xiy1rmCEH9%+5AkK0c9Mmp$Bpno>X5 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%0A8;vgQ=!?I3ie`l+=pu?>UlrjFQ?&c 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

    3}`083+mir3b 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

    u0;?uWO_?-|8O8&D*j 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 Qsd`%9Nuz;I8UO&`KVo}q*Z=?k diff --git a/desktop/src/assets/fonts/JetBrainsMono-SemiBoldItalic.woff2 b/desktop/src/assets/fonts/JetBrainsMono-SemiBoldItalic.woff2 deleted file mode 100644 index c5dd294b472e6ab380a34c14e19895f6a2d365c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98124 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≶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%0DIqkdqU>f9WGH>|VAyc+OD3eS$n!ohUSu-L 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

    I>>wmxYJN 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 diff --git a/desktop/src/assets/fonts/JetBrainsMono-ThinItalic.woff2 b/desktop/src/assets/fonts/JetBrainsMono-ThinItalic.woff2 deleted file mode 100644 index a6432151c629d5f7e2a62344d4d142cc80955a98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94316 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%0DB- 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 - }> - | Readonly<{ type: "ShowDashboard" }> - | Readonly<{ type: "CommandFailed" }> - | Readonly<{ - type: "OpenWorkspace" - workspace_id: string | null - provider_id: string | null - ide: string | null - source: string - }> - | Readonly<{ - type: "ImportWorkspace" - workspace_id: string - workspace_uid: string - devsy_pro_host: string - project: string - options: Record | null - }> - | Readonly<{ - type: "SetupPro" - host: string - accessKey: string | null - options: Record | null - }> - | Readonly<{ - type: "OpenProInstance" - host: string | null - }> - | Readonly<{ - type: "LoginRequired" - host: string - provider: string - }> -} -type TChannelName = keyof TChannels -type TClientEventListener = (payload: TChannels[TChannel]) => void -type TClientSettings = Pick< - TSettings, - | "debugFlag" - | "additionalCliFlags" - | "dotfilesUrl" - | "additionalEnvVars" - | "sshKeyPath" - | "httpProxyUrl" - | "httpsProxyUrl" - | "noProxy" -> -export type TPlatform = Awaited> -export type TArch = Awaited> - -class Client { - public readonly workspaces = new WorkspacesClient() - public readonly providers = new ProvidersClient() - public readonly ides = new IDEsClient() - public readonly context = new ContextClient() - public readonly pro = new ProClient("") - - public setSetting( - name: TSettingName, - value: TSettings[TSettingName] - ) { - if (name === "debugFlag") { - const debug: boolean = value as boolean - this.workspaces.setDebug(debug) - this.providers.setDebug(debug) - this.ides.setDebug(debug) - this.pro.setDebug(debug) - } - if (name === "additionalCliFlags") { - this.workspaces.setAdditionalFlags(value as string) - } - if (name === "dotfilesUrl") { - this.workspaces.setDotfilesFlag(value as string) - } - if (name === "sshKeyPath") { - this.workspaces.setSSHKeyPath(value as string) - } - if (name === "additionalEnvVars") { - DevsyCommand.ADDITIONAL_ENV_VARS = value as string - } - if (name === "httpProxyUrl") { - DevsyCommand.HTTP_PROXY = value as string - } - if (name === "httpsProxyUrl") { - DevsyCommand.HTTPS_PROXY = value as string - } - if (name === "noProxy") { - DevsyCommand.NO_PROXY = value as string - } - } - - public ready(): Promise { - return invoke("ui_ready") - } - - public async subscribe( - channel: T, - listener: TClientEventListener - ): Promise { - // `TClient` is strictly typed so we're fine casting the response as `any`. - try { - const unsubscribe = await event.listen(channel, (event) => { - listener(event.payload) - }) - - return unsubscribe - } catch { - return noop - } - } - - // emitEvent publishes to a given channel and invokes the corresponding handler. - // This is only intended to be used for debugging right now. - public emitEvent(e: TChannels[T]) { - event.emit("event", e) - } - - public fetchPlatform(): TPlatform { - return os.platform() - } - - public pathSeparator(): string { - return path.sep() - } - - public fetchArch(): TArch { - return os.arch() - } - - public fetchVersion(): Promise { - return app.getVersion() - } - - public async fetchCommunityContributions(): Promise> { - try { - const contributions = await invoke("get_contributions") - - return Return.Value(contributions) - } catch (e) { - if (isError(e)) { - return Return.Failed(e.message) - } - - const errMsg = "Unable to fetch community contributions" - if (typeof e === "string") { - return Return.Failed(`${errMsg}: ${e}`) - } - - return Return.Failed(errMsg) - } - } - - public async fetchReleases(): Promise> { - try { - // WARN: This is a workaround for a memory leak in tauri, see https://github.com/tauri-apps/tauri/issues/4026 for more details. - // tl;dr tauri doesn't release the memory in it's invoke api properly which is specially noticeable with larger payload, like the releases. - const res = await fetch(TAURI_SERVER_URL + "/releases") - if (!res.ok) { - return Return.Failed(`Fetch releases: ${res.statusText}`) - } - const releases = (await res.json()) as readonly Release[] - - return Return.Value(releases) - } catch (e) { - // return empty list if error during development - if (isError(e)) { - return Return.Failed(e.message) - } - - const errMsg = "Unable to fetch releases" - if (typeof e === "string") { - return Return.Failed(`${errMsg}: ${e}`) - } - - return Return.Failed(errMsg) - } - } - - public async getDir( - dir: Extract | "SSH" - ): Promise { - switch (dir) { - case "AppData": { - return path.appDataDir() - } - case "AppLog": { - return await path.appLogDir() - } - case "Home": { - return await path.homeDir() - } - case "SSH": { - return await path.join(await path.homeDir(), ".ssh") - } - } - } - - public async openDir( - dir: Extract - ): Promise { - try { - let p = await this.getDir(dir) - if (dir === "AppLog") { - p = await path.join(p, "Devsy.log") - } - - opener.openPath(p) - } catch { - // noop for now - } - } - - public async selectFromDir(title?: string): Promise { - return dialog.open({ title, directory: true, multiple: false }) - } - - public async selectFileYaml(): Promise { - return dialog.open({ - filters: [{ name: "yaml", extensions: ["yml", "yaml"] }], - directory: false, - multiple: false, - }) - } - - public async selectFile(defaultPath?: string): Promise { - return dialog.open({ directory: false, multiple: false, defaultPath }) - } - - public async copyFile(src: string, dest: string): Promise { - return fs.copyFile(src, dest) - } - - public async copyFilePaths(src: string[], dest: string[]) { - return this.copyFile(await path.join(...src), await path.join(...dest)) - } - - public async writeTextFile(targetPath: string[], data: string) { - return fs.writeTextFile(await path.join(...targetPath), data) - } - - public async readFile(targetPath: string[]) { - return fs.readFile(await path.join(...targetPath)) - } - - public async readTextFile(targetPath: string[]) { - return fs.readTextFile(await path.join(...targetPath)) - } - - public async writeFile(targetPath: string[], data: Uint8Array) { - return fs.writeFile(await path.join(...targetPath), data) - } - - public async installCLI(force: boolean = false): Promise> { - try { - await invoke("install_cli", { force }) - - return Return.Ok() - } catch (e) { - if (isError(e)) { - return Return.Failed(e.message) - } - - if (typeof e === "string") { - return Return.Failed(`Failed to install CLI: ${e}`) - } - - return Return.Failed("Unable to install CLI") - } - } - - public async getEnv(name: string): Promise { - return invoke("get_env", { name }) - } - - public async isCLIInstalled(): Promise> { - try { - // we're in a flatpak, we need to check in other paths. - const isFlatpak = await this.getEnv("FLATPAK_ID") - if (isFlatpak) { - this.log("debug", "Running in flatpak, checking ~/.local/bin on the host") - const home_dir = await this.getEnv("HOME") - // this will throw if doesn't exist - const exists = await invoke("file_exists", { - filepath: home_dir + `/.local/bin/${BINARY_NAME}`, - }) - - return Return.Value(exists) - } - - const result = await Command.create(`run-path-${BINARY_NAME}`, ["version"]).execute() - if (result.code !== 0) { - return Return.Value(false) - } - - return Return.Value(true) - } catch { - return Return.Value(false) - } - } - - public openUrl(link: string): void { - opener.openUrl(link) - } - - public async quit(): Promise> { - try { - await process.exit(0) - - return Return.Ok() - } catch { - return Return.Failed("Unable to quit") - } - } - - public async writeToClipboard(data: string): Promise> { - try { - await clipboard.writeText(data) - - return Return.Ok() - } catch (e) { - return Return.Failed(`Unable to write to clipboard: ${e}`) - } - } - - public async checkUpdates(): Promise> { - try { - const isOk = await invoke("check_updates") - - return Return.Value(isOk) - } catch (e) { - return Return.Failed(`${e}`) - } - } - - public async fetchPendingUpdate(): Promise> { - try { - const release = await invoke("get_pending_update") - - return Return.Value(release) - } catch (e) { - return Return.Failed(`${e}`) - } - } - - public async installUpdate(): Promise> { - try { - const update = await updater.check() - if (!update) { - return Return.Ok() - } - - await update.install() - - return Return.Ok() - } catch (e) { - return Return.Failed(`${e}`) - } - } - - public async restart(): Promise { - await process.relaunch() - } - public async closeCurrentWindow(): Promise { - await getCurrentWindow().close() - } - - public async getSystemTheme(): Promise { - return getCurrentWindow().theme() - } - - public log(level: "debug" | "info" | "warn" | "error", message: string) { - const logFn = log[level] - logFn(message) - } - - public getProClient(proInstance: TProInstance): ProClient | DaemonClient { - if (hasCapability(proInstance, "daemon")) { - return new DaemonClient(proInstance.host!) - } else { - return new ProClient(proInstance.host!) - } - } -} - -// Singleton client -export const client = new Client() diff --git a/desktop/src/client/command.ts b/desktop/src/client/command.ts deleted file mode 100644 index e156be163..000000000 --- a/desktop/src/client/command.ts +++ /dev/null @@ -1,258 +0,0 @@ -import { - Child, - ChildProcess, - EventEmitter, - Command as ShellCommand, -} from "@tauri-apps/plugin-shell" -import { debug, ErrorTypeCancelled, isError, Result, ResultError, Return, sleep } from "@/lib" -import { - DEVSY_BINARY, - DEVSY_FLAG_OPTION, - DEVSY_UI_ENV_VAR, - DEVSY_ADDITIONAL_ENV_VARS, -} from "./constants" -import { FLATPAK_ID } from "./repo" -import { TStreamEvent } from "./types" -import { TAURI_SERVER_URL } from "./tauriClient" -import { invoke } from "@tauri-apps/api/core" - -export type TStreamEventListenerFn = (event: TStreamEvent) => void -export type TEventListener = Parameters< - EventEmitter>["addListener"] ->[1] -type TStreamOptions = Readonly<{ - ignoreStdoutError?: boolean - ignoreStderrError?: boolean -}> -const defaultStreamOptions: TStreamOptions = { - ignoreStdoutError: false, - ignoreStderrError: false, -} - -export type TCommand = { - run(): Promise> - stream(listener: TStreamEventListenerFn): Promise - cancel(): Promise -} - -export class Command implements TCommand> { - private sidecarCommand: ShellCommand - private childProcess?: Child - private args: string[] - private cancelled = false - private isFlatpak: boolean | undefined - private extraEnvVars: Record - - public static ADDITIONAL_ENV_VARS: string = "" - public static HTTP_PROXY: string = "" - public static HTTPS_PROXY: string = "" - public static NO_PROXY: string = "" - - constructor(args: string[]) { - debug("commands", "Creating Devsy command with args: ", args) - this.extraEnvVars = Command.ADDITIONAL_ENV_VARS.split(",") - .map((envVarStr) => envVarStr.split("=")) - .reduce( - (acc, pair) => { - const [key, value] = pair - if (key === undefined || value === undefined) { - return acc - } - - return { ...acc, [key]: value } - }, - {} as Record - ) - - // set proxy related environment variables - if (Command.HTTP_PROXY) { - this.extraEnvVars["HTTP_PROXY"] = Command.HTTP_PROXY - } - if (Command.HTTPS_PROXY) { - this.extraEnvVars["HTTPS_PROXY"] = Command.HTTPS_PROXY - } - if (Command.NO_PROXY) { - this.extraEnvVars["NO_PROXY"] = Command.NO_PROXY - } - - // allows the CLI to detect if commands have been invoked from the UI - this.extraEnvVars[DEVSY_UI_ENV_VAR] = "true" - this.sidecarCommand = ShellCommand.sidecar(DEVSY_BINARY, args, { env: this.extraEnvVars }) - this.args = args - } - - public async getEnv(name: string): Promise { - return invoke("get_env", { name }) - } - - public async run(): Promise>> { - try { - // Run once to check with the rust backend if we are running inside the flatpak sandbox - // This informs the CLI wrapper to use flatpak-spawn to escape the sandbox and export this.extraEnvVars - if (this.isFlatpak === undefined) { - this.isFlatpak = await this.getEnv("FLATPAK_ID") - if (this.isFlatpak) { - this.extraEnvVars["FLATPAK_ID"] = FLATPAK_ID - this.extraEnvVars[DEVSY_ADDITIONAL_ENV_VARS] = recordToCSV(this.extraEnvVars) - this.sidecarCommand = ShellCommand.sidecar(DEVSY_BINARY, this.args, { - env: this.extraEnvVars, - }) - } - } - const rawResult = await this.sidecarCommand.execute() - debug("commands", `Result for command with args ${this.args}:`, rawResult) - - return Return.Value(rawResult) - } catch (e) { - return Return.Failed(e + "") - } - } - - public async stream( - listener: TStreamEventListenerFn, - streamOptions?: TStreamOptions - ): Promise { - let opts = defaultStreamOptions - if (streamOptions) { - opts = { ...defaultStreamOptions, ...streamOptions } - } - - try { - this.childProcess = await this.sidecarCommand.spawn() - if (this.cancelled) { - await this.childProcess.kill() - - return Return.Failed("Command already cancelled", "", ErrorTypeCancelled) - } - - await new Promise((res, rej) => { - const stdoutListener: TEventListener<"data"> = (message) => { - try { - const data = JSON.parse(message) - - // special case: the cli sends us a message where "done" is "true" - // to signal the command is terminated and we should stop listen to it - // This happens for the vscode browser command as it needs to stay open - // for port-forwarding, but we don't care anymore about its output. - if (data?.done === "true") { - res(Return.Ok()) - } else { - listener({ type: "data", data }) - } - } catch (error) { - if (!opts.ignoreStdoutError) { - console.error("Failed to parse stdout message ", message, error) - } - } - } - const stderrListener: TEventListener<"data"> = (message) => { - try { - const error = JSON.parse(message) - listener({ type: "error", error }) - } catch (error) { - if (!opts.ignoreStderrError) { - console.error("Failed to parse stderr message ", message, error) - } - } - } - - this.sidecarCommand.stderr.addListener("data", stderrListener) - this.sidecarCommand.stdout.addListener("data", stdoutListener) - - const cleanup = () => { - this.sidecarCommand.stderr.removeListener("data", stderrListener) - this.sidecarCommand.stdout.removeListener("data", stdoutListener) - this.childProcess = undefined - } - - this.sidecarCommand.on("close", ({ code }) => { - cleanup() - if (code !== 0) { - rej(new Error("exit code: " + code)) - } else { - res(Return.Ok()) - } - }) - - this.sidecarCommand.on("error", (arg) => { - cleanup() - rej(arg) - }) - }) - - return Return.Ok() - } catch (e) { - if (isError(e)) { - if (this.cancelled) { - return Return.Failed(e.message, "", ErrorTypeCancelled) - } - - return Return.Failed(e.message) - } - console.error(e) - - return Return.Failed("streaming failed") - } - } - - /** - * Cancel the command. - * Only works if it has been created with the `stream` method. - */ - public async cancel(): Promise> { - try { - this.cancelled = true - if (!this.childProcess) { - // nothing to clean up - return Return.Ok() - } - // Try to send signal first before force killing process - await fetch(TAURI_SERVER_URL + "/child-process/signal", { - method: "POST", - headers: { - "content-type": "application/json", - }, - body: JSON.stringify({ - processId: this.childProcess.pid, - signal: 2, // SIGINT - }), - }) - - await sleep(3_000) - // the actual child process could be gone after sending a SIGINT - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - if (this.childProcess) { - await this.childProcess.kill() - } - - return Return.Ok() - } catch (e) { - if (isError(e)) { - return Return.Failed(e.message) - } - - return Return.Failed("failed to cancel command") - } - } -} - -export function isOk(result: ChildProcess): boolean { - return result.code === 0 -} - -export function toFlagArg(flag: string, arg: string) { - return [flag, arg].join("=") -} - -export function serializeRawOptions( - rawOptions: Record, - flag: string = DEVSY_FLAG_OPTION -): string[] { - return Object.entries(rawOptions).map(([key, value]) => flag + `=${key}=${value}`) -} - -function recordToCSV(record: Record): string { - return Object.entries(record) - .map(([key, value]) => `${key}=${value}`) - .join(",") -} diff --git a/desktop/src/client/commandCache.ts b/desktop/src/client/commandCache.ts deleted file mode 100644 index 8ebbfb10f..000000000 --- a/desktop/src/client/commandCache.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { TActionName } from "@/contexts" -import { exists, isEmpty, noop, ResultError, SingleEventManager, THandler } from "@/lib" -import { TUnsubscribeFn } from "@/types" -import { TCommand, TStreamEventListenerFn } from "./command" -import { TStreamEvent } from "./types" - -export type TCommandCacheInfo = Readonly<{ id: string; actionName: TActionName }> -type TCommandCacheID = `${string}:${TActionName}` -type TCommandHandler = Readonly<{ - promise: Promise - stream?: (streamHandler?: THandler) => TUnsubscribeFn - cancel?: () => Promise -}> -type TCommandCacheStore = Map - -export class CommandCache { - private store: TCommandCacheStore = new Map() - - private getCacheID(info: TCommandCacheInfo): TCommandCacheID { - return `${info.id}:${info.actionName}` - } - - public get(info: TCommandCacheInfo): TCommandHandler | undefined { - const cacheID = this.getCacheID(info) - - return this.store.get(cacheID) - } - - public findCommandHandlerById(id: string) { - for (const [cacheID, handler] of this.store) { - const [actionID] = cacheID.split(":") - - if (actionID === id) { - return handler - } - } - - return undefined - } - - public clear(info: TCommandCacheInfo) { - const cacheID = this.getCacheID(info) - this.store.delete(cacheID) - } - - public connect( - info: TCommandCacheInfo, - cmd: Readonly> - ): Readonly<{ - operation: TCommandHandler["promise"] - stream: TCommandHandler["stream"] - }> { - const events: TStreamEvent[] = [] - const eventManager = new SingleEventManager() - - const promise = cmd.stream((event) => { - events.push(event) - - eventManager.publish(event) - }) - const stream: TCommandHandler["stream"] = (handler) => { - if (!exists(handler)) { - return noop - } - - // events in-order before registering the new newHandler - if (!isEmpty(events)) { - for (const event of events) { - handler.notify(event) - } - } - - // Make sure we subscribe handlers only once - if (eventManager.isSubscribed(handler)) { - return () => eventManager.unsubscribe(handler) - } - - return eventManager.subscribe(handler) - } - const cancel: TCommandHandler["cancel"] = () => { - return cmd.cancel() - } - - const cacheID = this.getCacheID(info) - this.store.set(cacheID, { - promise, - stream, - cancel, - }) - - return { operation: promise, stream } - } -} diff --git a/desktop/src/client/constants.ts b/desktop/src/client/constants.ts deleted file mode 100644 index 8a2b4ee42..000000000 --- a/desktop/src/client/constants.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { BINARY_NAME, GITHUB_REPO_URL } from "./repo" - -export const DEVSY_GIT_REPOSITORY = GITHUB_REPO_URL - -export const DEFAULT_STATIC_COMMAND_CONFIG = { - streamResponse: false, - debug: false, -} as const -/** placeholder for arbitrary additional flags */ -export const WORKSPACE_COMMAND_ADDITIONAL_FLAGS_KEY = "additionalFlags" - -export const DEVSY_BINARY = `bin/${BINARY_NAME}` -export const DEVSY_COMMAND_LIST = "list" -export const DEVSY_COMMAND_STATUS = "status" -export const DEVSY_COMMAND_UP = "up" -export const DEVSY_COMMAND_STOP = "stop" -export const DEVSY_COMMAND_BUILD = "build" -export const DEVSY_COMMAND_DELETE = "delete" -export const DEVSY_COMMAND_PROVIDER = "provider" -export const DEVSY_COMMAND_IDE = "ide" -export const DEVSY_COMMAND_PRO = "pro" -export const DEVSY_COMMAND_OPTIONS = "options" -export const DEVSY_COMMAND_SET_OPTIONS = "set-options" -export const DEVSY_COMMAND_USE = "use" -export const DEVSY_COMMAND_ADD = "add" -export const DEVSY_COMMAND_HELPER = "helper" -export const DEVSY_COMMAND_UPDATE = "update" -export const DEVSY_COMMAND_RENAME = "rename" -export const DEVSY_COMMAND_CONTEXT = "context" -export const DEVSY_COMMAND_LOGIN = "login" -export const DEVSY_COMMAND_IMPORT_WORKSPACE = "import-workspace" -export const DEVSY_COMMAND_GET_WORKSPACE_NAME = "get-workspace-name" -export const DEVSY_COMMAND_GET_WORKSPACE_UID = "get-workspace-uid" -export const DEVSY_COMMAND_GET_WORKSPACE_CONFIG = "get-workspace-config" -export const DEVSY_COMMAND_GET_PROVIDER_NAME = "get-provider-name" -export const DEVSY_COMMAND_GET_PRO_NAME = "get-pro-name" -export const DEVSY_COMMAND_CHECK_PROVIDER_UPDATE = "check-provider-update" -export const DEVSY_COMMAND_TROUBLESHOOT = "troubleshoot" -export const DEVSY_FLAG_JSON_LOG_OUTPUT = "--log-output=json" -export const DEVSY_FLAG_JSON_OUTPUT = "--output=json" -export const DEVSY_FLAG_OPTION = "--option" -export const DEVSY_FLAG_FORCE = "--force" -export const DEVSY_FLAG_FORCE_BUILD = "--force-build" -export const DEVSY_FLAG_RECREATE = "--recreate" -export const DEVSY_FLAG_RESET = "--reset" -export const DEVSY_FLAG_IDE = "--ide" -export const DEVSY_FLAG_PROVIDER = "--provider" -export const DEVSY_FLAG_PROVIDER_OPTION = "--provider-option" -export const DEVSY_FLAG_ACCESS_KEY = "--access-key" -export const DEVSY_FLAG_PREBUILD_REPOSITORY = "--prebuild-repository" -export const DEVSY_FLAG_ID = "--id" -export const DEVSY_FLAG_SOURCE = "--source" -export const DEVSY_FLAG_DEBUG = "--debug" -export const DEVSY_FLAG_USE = "--use" -export const DEVSY_FLAG_NAME = "--name" -export const DEVSY_FLAG_SINGLE_MACHINE = "--single-machine" -export const DEVSY_FLAG_DRY = "--dry" -export const DEVSY_FLAG_RECONFIGURE = "--reconfigure" -export const DEVSY_FLAG_SKIP_REQUIRED = "--skip-required" -export const DEVSY_FLAG_TIMEOUT = "--timeout" -export const DEVSY_FLAG_DEVCONTAINER_PATH = "--devcontainer-path" -export const DEVSY_FLAG_WORKSPACE_ID = "--workspace-id" -export const DEVSY_FLAG_WORKSPACE_UID = "--workspace-uid" -export const DEVSY_FLAG_WORKSPACE_PROJECT = "--workspace-project" -export const DEVSY_FLAG_LOGIN = "--login" -export const DEVSY_FLAG_HOST = "--host" -export const DEVSY_FLAG_INSTANCE = "--instance" -export const DEVSY_FLAG_PROJECT = "--project" -export const DEVSY_FLAG_SKIP_PRO = "--skip-pro" -export const DEVSY_FLAG_DOTFILES = "--dotfiles" -export const DEVSY_FLAG_GIT_SIGNING_KEY = "--git-ssh-signing-key" -export const DEVSY_FLAG_FORCE_BROWSER = "--force-browser" - -export const DEVSY_UI_ENV_VAR = "DEVSY_UI" -export const DEVSY_ADDITIONAL_ENV_VARS = "DEVSY_ADDITIONAL_ENV_VARS" diff --git a/desktop/src/client/context/client.ts b/desktop/src/client/context/client.ts deleted file mode 100644 index 4940a834a..000000000 --- a/desktop/src/client/context/client.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Result, ResultError } from "@/lib" -import { TContextOptionName, TContextOptions } from "@/types" -import { TDebuggable } from "../types" -import { ContextCommands } from "./contextCommands" - -export class ContextClient implements TDebuggable { - constructor() {} - - public setDebug(isEnabled: boolean): void { - ContextCommands.DEBUG = isEnabled - } - - public async setOption(option: TContextOptionName, value: string): Promise { - return ContextCommands.SetOptions({ [option]: value }) - } - - public async listOptions(): Promise> { - return ContextCommands.ListOptions() - } -} diff --git a/desktop/src/client/context/contextCommands.ts b/desktop/src/client/context/contextCommands.ts deleted file mode 100644 index 348074653..000000000 --- a/desktop/src/client/context/contextCommands.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { Result, ResultError, Return, getErrorFromChildProcess } from "@/lib" -import { TContextOptionName, TContextOptions } from "@/types" -import { Command, isOk, serializeRawOptions } from "../command" -import { - DEVSY_COMMAND_CONTEXT, - DEVSY_COMMAND_OPTIONS, - DEVSY_COMMAND_SET_OPTIONS, - DEVSY_FLAG_DEBUG, - DEVSY_FLAG_JSON_LOG_OUTPUT, - DEVSY_FLAG_JSON_OUTPUT, -} from "../constants" - -export class ContextCommands { - static DEBUG = false - - private static newCommand(args: string[]): Command { - return new Command([...args, ...(ContextCommands.DEBUG ? [DEVSY_FLAG_DEBUG] : [])]) - } - - static async SetOptions( - rawOptions: Partial> - ): Promise { - const optionsFlag = serializeRawOptions(rawOptions) - const result = await ContextCommands.newCommand([ - DEVSY_COMMAND_CONTEXT, - DEVSY_COMMAND_SET_OPTIONS, - ...optionsFlag, - DEVSY_FLAG_JSON_LOG_OUTPUT, - ]).run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Ok() - } - - static async ListOptions(): Promise> { - const result = await ContextCommands.newCommand([ - DEVSY_COMMAND_CONTEXT, - DEVSY_COMMAND_OPTIONS, - DEVSY_FLAG_JSON_OUTPUT, - ]).run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - const options = JSON.parse(result.val.stdout) as TContextOptions - - return Return.Value(options) - } -} diff --git a/desktop/src/client/context/index.ts b/desktop/src/client/context/index.ts deleted file mode 100644 index 279e8e19a..000000000 --- a/desktop/src/client/context/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { ContextClient } from "./client" diff --git a/desktop/src/client/ides/client.ts b/desktop/src/client/ides/client.ts deleted file mode 100644 index f07706155..000000000 --- a/desktop/src/client/ides/client.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { TDebuggable } from "../types" -import { Result, ResultError } from "@/lib" -import { TIDEs } from "@/types" -import { IDECommands } from "./ideCommands" - -export class IDEsClient implements TDebuggable { - constructor() {} - - public setDebug(isEnabled: boolean): void { - IDECommands.DEBUG = isEnabled - } - - public async useIDE(ide: string): Promise { - return IDECommands.UseIDE(ide) - } - - public async listAll(): Promise> { - return IDECommands.ListIDEs() - } -} diff --git a/desktop/src/client/ides/ideCommands.ts b/desktop/src/client/ides/ideCommands.ts deleted file mode 100644 index 3030c8ab3..000000000 --- a/desktop/src/client/ides/ideCommands.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { Command, isOk } from "../command" -import { - DEVSY_COMMAND_IDE, - DEVSY_COMMAND_LIST, - DEVSY_COMMAND_USE, - DEVSY_FLAG_DEBUG, - DEVSY_FLAG_JSON_LOG_OUTPUT, - DEVSY_FLAG_JSON_OUTPUT, -} from "../constants" -import { getErrorFromChildProcess, Result, ResultError, Return } from "@/lib" -import { TIDEs } from "@/types" - -export class IDECommands { - static DEBUG = false - - private static newCommand(args: string[]): Command { - return new Command([...args, ...(IDECommands.DEBUG ? [DEVSY_FLAG_DEBUG] : [])]) - } - - static async UseIDE(ide: string): Promise { - const result = await IDECommands.newCommand([ - DEVSY_COMMAND_IDE, - DEVSY_COMMAND_USE, - ide, - DEVSY_FLAG_JSON_LOG_OUTPUT, - ]).run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Ok() - } - - static async ListIDEs(): Promise> { - const result = await IDECommands.newCommand([ - DEVSY_COMMAND_IDE, - DEVSY_COMMAND_LIST, - DEVSY_FLAG_JSON_OUTPUT, - ]).run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - const ides = JSON.parse(result.val.stdout) as TIDEs - - return Return.Value(ides) - } -} diff --git a/desktop/src/client/ides/index.ts b/desktop/src/client/ides/index.ts deleted file mode 100644 index 501db5144..000000000 --- a/desktop/src/client/ides/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { IDEsClient } from "./client" diff --git a/desktop/src/client/index.ts b/desktop/src/client/index.ts deleted file mode 100644 index d2c236e04..000000000 --- a/desktop/src/client/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export { client } from "./client" -export type { TArch, TPlatform } from "./client" -export { DEVSY_GIT_REPOSITORY } from "./constants" -export type { TStreamEventListenerFn } from "./types" -export { ProClient } from "./pro" diff --git a/desktop/src/client/pro/client.ts b/desktop/src/client/pro/client.ts deleted file mode 100644 index ba0cf1536..000000000 --- a/desktop/src/client/pro/client.ts +++ /dev/null @@ -1,480 +0,0 @@ -import { TWorkspaceOwnerFilterState } from "@/components" -import { ProWorkspaceInstance } from "@/contexts" -import { DaemonStatus } from "@/gen" -import { ManagementV1DevsyWorkspaceInstance } from "@devsy/client/gen/models/managementV1DevsyWorkspaceInstance" -import { ManagementV1Project } from "@devsy/client/gen/models/managementV1Project" -import { ManagementV1ProjectClusters } from "@devsy/client/gen/models/managementV1ProjectClusters" -import { ManagementV1ProjectTemplates } from "@devsy/client/gen/models/managementV1ProjectTemplates" -import { ManagementV1Self } from "@devsy/client/gen/models/managementV1Self" -import { ManagementV1UserProfile } from "@devsy/client/gen/models/managementV1UserProfile" -import { Result, ResultError, Return, isError } from "@/lib" -import { - TGitCredentialHelperData, - TImportWorkspaceConfig, - TListProInstancesConfig, - TPlatformHealthCheck, - TPlatformVersionInfo, - TProID, - TProInstance, -} from "@/types" -import { TAURI_SERVER_URL } from "../tauriClient" -import { TDebuggable, TStreamEventListenerFn } from "../types" -import { ProCommands } from "./proCommands" -import { client as globalClient } from "@/client" - -export class ProClient implements TDebuggable { - constructor(protected readonly id: string) {} - - public setDebug(isEnabled: boolean): void { - ProCommands.DEBUG = isEnabled - } - - public async login( - host: string, - accessKey?: string, - listener?: TStreamEventListenerFn - ): Promise { - return ProCommands.Login(host, accessKey, listener) - } - - public async checkHealth(): Promise> { - return ProCommands.CheckHealth(this.id) - } - - public async getVersion() { - return ProCommands.GetVersion(this.id) - } - - public async checkUpdate() { - return ProCommands.CheckUpdate(this.id) - } - - public async update(version: string) { - return ProCommands.Update(this.id, version) - } - - public async listProInstances( - config?: TListProInstancesConfig - ): Promise> { - return ProCommands.ListProInstances(config) - } - - public async removeProInstance(id: TProID) { - return ProCommands.RemoveProInstance(id) - } - - public async importWorkspace(config: TImportWorkspaceConfig): Promise { - return ProCommands.ImportWorkspace(config) - } - - public watchWorkspacesProxy( - projectName: string, - _ownerFilter: TWorkspaceOwnerFilterState, - listener: (newWorkspaces: readonly ProWorkspaceInstance[]) => void - ) { - const cmd = ProCommands.WatchWorkspaces(this.id, projectName) - - // kick off stream in the background - cmd.stream( - (event) => { - if (event.type === "data") { - const rawInstances = - event.data as unknown as readonly ManagementV1DevsyWorkspaceInstance[] - const workspaceInstances = rawInstances.map( - (instance) => new ProWorkspaceInstance(instance) - ) - listener(workspaceInstances) - - return - } - }, - { ignoreStderrError: true } - ) - - // Don't await here, we want to return the unsubscribe function - return () => { - // Still, return the promise so someone can choose to await if necessary. - return cmd.cancel() - } - } - - public async listProjects(): Promise> { - return ProCommands.ListProjects(this.id) - } - - public async getSelf(): Promise> { - return ProCommands.GetSelf(this.id) - } - - public async getProjectTemplates( - projectName: string - ): Promise> { - return ProCommands.ListTemplates(this.id, projectName) - } - - public async getProjectClusters( - projectName: string - ): Promise> { - return ProCommands.ListClusters(this.id, projectName) - } - - public async createWorkspace( - instance: ManagementV1DevsyWorkspaceInstance - ): Promise> { - return ProCommands.CreateWorkspace(this.id, instance) - } - - public async updateWorkspace( - instance: ManagementV1DevsyWorkspaceInstance - ): Promise> { - return ProCommands.UpdateWorkspace(this.id, instance) - } -} - -export class DaemonClient extends ProClient { - constructor(id: string) { - super(id) - } - - public setDebug(isEnabled: boolean): void { - ProCommands.DEBUG = isEnabled - } - - public async login( - host: string, - accessKey?: string, - listener?: TStreamEventListenerFn - ): Promise { - return ProCommands.Login(host, accessKey, listener) - } - - private handleError(err: unknown, fallbackMsg: string): Result { - if (isError(err)) { - return Return.Failed(err.message) - } - - if (typeof err === "string") { - return Return.Failed(`${fallbackMsg}: ${err}`) - } - - return Return.Failed(fallbackMsg) - } - - private async getProxy(path: string): Promise> { - try { - const res = await fetch(`${TAURI_SERVER_URL}/daemon-proxy/${this.id}${path}`, { - method: "GET", - headers: { - "content-type": "application/json", - }, - }) - if (!res.ok) { - const maybeText = await res.text() - - let errMessage = `Get resource: ${res.statusText}.` - if (maybeText) { - errMessage += maybeText - } - - return Return.Failed(errMessage) - } - const json: T = await res.json() - - return Return.Value(json) - } catch (e) { - return this.handleError(e, "unable to get resource") - } - } - - private async get(path: string): Promise> { - try { - const res = await fetch(`${TAURI_SERVER_URL}${path}`, { - method: "GET", - headers: { - "content-type": "application/json", - }, - }) - if (!res.ok) { - return Return.Failed(`Get resource: ${res.statusText}`) - } - - const json: T = await res.json().catch(() => "") - - return Return.Value(json) - } catch (e) { - return this.handleError(e, "unable to get resource") - } - } - - private async post(path: string, body: BodyInit): Promise> { - try { - const res = await fetch(`${TAURI_SERVER_URL}/daemon-proxy/${this.id}${path}`, { - method: "POST", - headers: { - "content-type": "application/json", - }, - body, - }) - if (!res.ok) { - return Return.Failed(`Error getting resource ${path} : ${res.statusText}`) - } - const json: T = await res.json() - - return Return.Value(json) - } catch (e) { - return this.handleError(e, "unable to get resource") - } - } - - public async restartDaemon() { - return this.get(`/daemon/${this.id}/restart`) - } - - public async checkHealth(): Promise> { - // NOTE: We don't access this through the proxy because there might be issues during daemon startup - // that we couldn't surface otherwise - const res = await this.get(`/daemon/${this.id}/status`) - if (!res.ok) { - return res - } - const status = res.val - let healthy = status.state === "running" - - const details = [] - if (status.loginRequired) { - healthy = false - details.push("Login required to connect to platform") - } - if (status.state === "pending") { - details.push("Daemon is starting up") - } - - // if the backend state is running but we are not online, something is wrong with networking - if (!status.online) { - healthy = false - details.push("Platform is offline") - } - - return Return.Value({ - healthy, - details, - loginRequired: status.loginRequired, - online: status.online, - }) - } - - public watchWorkspaces( - projectName: string, - ownerFilter: TWorkspaceOwnerFilterState, - listener: TWorksaceListener - ): () => void { - const watcher = new WorkspaceWatcher(this.id, projectName, ownerFilter, listener) - - return watcher.watch() - } - - public async getSelf(): Promise> { - return this.getProxy("/self") - } - - public async getUserProfile(): Promise> { - return this.getProxy("/user-profile") - } - - public async updateUserProfile( - userProfile: ManagementV1UserProfile - ): Promise> { - try { - const body = JSON.stringify(userProfile) - const res = (await this.post("/update-user-profile", body)) as Result - - return res - } catch (e) { - return this.handleError(e, "failed to update workspace") - } - } - - public async listProjects(): Promise> { - return this.getProxy("/projects") - } - - public async getVersion() { - return this.getProxy("/version") - } - - public async getProjectTemplates( - projectName: string - ): Promise> { - return this.getProxy(`/projects/${projectName}/templates`) - } - - public async getProjectClusters( - projectName: string - ): Promise> { - return this.getProxy(`/projects/${projectName}/clusters`) - } - - public async createWorkspace( - instance: ManagementV1DevsyWorkspaceInstance - ): Promise> { - try { - const body = JSON.stringify(instance) - - return this.post("/create-workspace", body) - } catch (e) { - return this.handleError(e, "failed to create workspace") - } - } - - public async updateWorkspace( - instance: ManagementV1DevsyWorkspaceInstance - ): Promise> { - try { - const body = JSON.stringify(instance) - - return this.post("/update-workspace", body) - } catch (e) { - return this.handleError(e, "failed to update workspace") - } - } - - public async queryGitCredentialsHelper( - host: string - ): Promise> { - const searchParams = new URLSearchParams([["host", host]]) - - return this.getProxy("/git-credentials?" + searchParams.toString()) - } - - public async checkUpdate() { - return Return.Failed("provider is built-in, update is not supported") - } - - // eslint-disable-next-line @typescript-eslint/no-unused-vars - public async update(_version: string) { - return Return.Failed("provider is built-in, update is not supported") - } -} -type TWorksaceListener = (newWorkspaces: readonly ProWorkspaceInstance[]) => void - -class WorkspaceWatcher { - private abortController = new AbortController() - private reader: ReadableStreamDefaultReader | undefined - private buffer: string = "" - - constructor( - private readonly hostID: string, - private readonly projectName: string, - private readonly ownerFilter: TWorkspaceOwnerFilterState, - private readonly listener: TWorksaceListener - ) {} - - public cancel() { - try { - this.abortController.abort("watcher cancelled") - this.reader?.cancel().catch((err) => { - console.debug("cancel failed", err) - }) - } catch (err) { - console.error(err) - } - this.reader = undefined - this.buffer = "" - } - - public watch(): () => void { - try { - const url = new URL(`${TAURI_SERVER_URL}/daemon-proxy/${this.hostID}/watch-workspaces`) - url.searchParams.set("project", this.projectName) - url.searchParams.set("owner", this.ownerFilter) - - // start long-lived request. This should never stop unless cancelled through abortController - fetch(url, { - method: "GET", - headers: { "content-type": "application/json" }, - keepalive: true, - signal: this.abortController.signal, - }) - .then((res) => { - this.reader = res.body?.getReader() - - return this.read() - }) - .catch((err) => { - globalClient.log("info", `[${this.hostID}] watch workspaces error: ${err}`) - }) - .finally(async () => { - if (!this.abortController.signal.aborted && this.reader) { - // Either the webview or the daemon terminated the watcher, try to reconnect - console.info("reconnect") - this.reader = undefined - this.buffer = "" - this.watch() - } - - // Otherwise caller is responsible for reestablishing connection - }) - - return this.cancel.bind(this) - } catch { - return this.cancel.bind(this) - } - } - - private async read(): Promise { - const decoder = new TextDecoder() - - try { - if (!this.reader) { - return - } - - const { done, value } = await this.reader.read() - if (done) { - return - } - this.buffer += decoder.decode(value, { stream: true }) - // NOTE: This relies on sender to end every message with a newline character. Make sure you also update the daemon server if you change this! - const lines = this.buffer.split("\n") - // Keep the last partial line in the buffer - const maybeLine = lines.pop() - if (maybeLine !== undefined) { - this.buffer = maybeLine - } - - lines.forEach((line) => { - if (line.trim()) { - try { - const rawInstances: readonly ManagementV1DevsyWorkspaceInstance[] = JSON.parse(line) - const workspaceInstances = rawInstances.map( - (instance) => new ProWorkspaceInstance(instance) - ) - this.listener(workspaceInstances) - } catch (err) { - const res = this.handleError(err, "failed to parse workspaces") - if (res.err) { - return err - } - } - } - }) - - // Continue reading - this.read() - } catch (err) { - return err - } - } - - private handleError(err: unknown, fallbackMsg: string): Result { - if (isError(err)) { - return Return.Failed(err.message) - } - - if (typeof err === "string") { - return Return.Failed(`${fallbackMsg}: ${err}`) - } - - return Return.Failed(fallbackMsg) - } -} diff --git a/desktop/src/client/pro/index.ts b/desktop/src/client/pro/index.ts deleted file mode 100644 index 3508d71bb..000000000 --- a/desktop/src/client/pro/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { ProClient } from "./client" diff --git a/desktop/src/client/pro/proCommands.ts b/desktop/src/client/pro/proCommands.ts deleted file mode 100644 index 2d496ee16..000000000 --- a/desktop/src/client/pro/proCommands.ts +++ /dev/null @@ -1,307 +0,0 @@ -import { Result, ResultError, Return, getErrorFromChildProcess } from "@/lib" -import { - TImportWorkspaceConfig, - TListProInstancesConfig, - TPlatformHealthCheck, - TProID, - TProInstance, - TPlatformVersionInfo, - TPlatformUpdateCheck, -} from "@/types" -import { Command, isOk, serializeRawOptions, toFlagArg } from "../command" -import { - DEVSY_COMMAND_DELETE, - DEVSY_COMMAND_IMPORT_WORKSPACE, - DEVSY_COMMAND_LIST, - DEVSY_COMMAND_LOGIN, - DEVSY_COMMAND_PRO, - DEVSY_FLAG_ACCESS_KEY, - DEVSY_FLAG_DEBUG, - DEVSY_FLAG_FORCE_BROWSER, - DEVSY_FLAG_HOST, - DEVSY_FLAG_INSTANCE, - DEVSY_FLAG_JSON_LOG_OUTPUT, - DEVSY_FLAG_JSON_OUTPUT, - DEVSY_FLAG_LOGIN, - DEVSY_FLAG_PROJECT, - DEVSY_FLAG_USE, - DEVSY_FLAG_WORKSPACE_ID, - DEVSY_FLAG_WORKSPACE_PROJECT, - DEVSY_FLAG_WORKSPACE_UID, -} from "../constants" -import { TStreamEventListenerFn } from "../types" -import { ManagementV1DevsyWorkspaceInstance } from "@devsy/client/gen/models/managementV1DevsyWorkspaceInstance" -import { ManagementV1Project } from "@devsy/client/gen/models/managementV1Project" -import { ManagementV1Self } from "@devsy/client/gen/models/managementV1Self" -import { ManagementV1ProjectTemplates } from "@devsy/client/gen/models/managementV1ProjectTemplates" -import { ManagementV1ProjectClusters } from "@devsy/client/gen/models/managementV1ProjectClusters" - -export class ProCommands { - static DEBUG = false - - private static newCommand(args: string[]): Command { - return new Command([...args, ...(ProCommands.DEBUG ? [DEVSY_FLAG_DEBUG] : [])]) - } - - static async Login( - host: string, - accessKey?: string, - listener?: TStreamEventListenerFn - ): Promise { - const maybeAccessKeyFlag = accessKey ? [toFlagArg(DEVSY_FLAG_ACCESS_KEY, accessKey)] : [] - const useFlag = toFlagArg(DEVSY_FLAG_USE, "false") - - const cmd = ProCommands.newCommand([ - DEVSY_COMMAND_PRO, - DEVSY_COMMAND_LOGIN, - host, - useFlag, - DEVSY_FLAG_FORCE_BROWSER, - DEVSY_FLAG_JSON_LOG_OUTPUT, - ...maybeAccessKeyFlag, - ]) - if (listener) { - return cmd.stream(listener) - } else { - const result = await cmd.run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Ok() - } - } - - static async ListProInstances( - config?: TListProInstancesConfig - ): Promise> { - const maybeLoginFlag = config?.authenticate ? [DEVSY_FLAG_LOGIN] : [] - const result = await ProCommands.newCommand([ - DEVSY_COMMAND_PRO, - DEVSY_COMMAND_LIST, - DEVSY_FLAG_JSON_OUTPUT, - ...maybeLoginFlag, - ]).run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - const instances = JSON.parse(result.val.stdout) as readonly TProInstance[] - - return Return.Value(instances) - } - - static async RemoveProInstance(id: TProID) { - const result = await ProCommands.newCommand([ - DEVSY_COMMAND_PRO, - DEVSY_COMMAND_DELETE, - id, - DEVSY_FLAG_JSON_LOG_OUTPUT, - ]).run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Ok() - } - - static async ImportWorkspace(config: TImportWorkspaceConfig): Promise { - const optionsFlag = config.options ? serializeRawOptions(config.options) : [] - const result = await new Command([ - DEVSY_COMMAND_PRO, - DEVSY_COMMAND_IMPORT_WORKSPACE, - config.devsyProHost, - DEVSY_FLAG_WORKSPACE_ID, - config.workspaceID, - DEVSY_FLAG_WORKSPACE_UID, - config.workspaceUID, - DEVSY_FLAG_WORKSPACE_PROJECT, - config.project, - ...optionsFlag, - DEVSY_FLAG_JSON_LOG_OUTPUT, - ]).run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Ok() - } - - static WatchWorkspaces(id: TProID, projectName: string) { - const hostFlag = toFlagArg(DEVSY_FLAG_HOST, id) - const projectFlag = toFlagArg(DEVSY_FLAG_PROJECT, projectName) - const args = [DEVSY_COMMAND_PRO, "watch-workspaces", hostFlag, projectFlag] - - return ProCommands.newCommand(args) - } - - static async ListProjects(id: TProID) { - const hostFlag = toFlagArg(DEVSY_FLAG_HOST, id) - const args = [DEVSY_COMMAND_PRO, "list-projects", hostFlag] - - const result = await ProCommands.newCommand(args).run() - if (result.err) { - return result - } - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Value(JSON.parse(result.val.stdout) as readonly ManagementV1Project[]) - } - - static async GetSelf(id: TProID) { - const hostFlag = toFlagArg(DEVSY_FLAG_HOST, id) - const args = [DEVSY_COMMAND_PRO, "self", hostFlag] - - const result = await ProCommands.newCommand(args).run() - if (result.err) { - return result - } - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Value(JSON.parse(result.val.stdout) as ManagementV1Self) - } - - static async ListTemplates(id: TProID, projectName: string) { - const hostFlag = toFlagArg(DEVSY_FLAG_HOST, id) - const projectFlag = toFlagArg(DEVSY_FLAG_PROJECT, projectName) - const args = [DEVSY_COMMAND_PRO, "list-templates", hostFlag, projectFlag] - - const result = await ProCommands.newCommand(args).run() - if (result.err) { - return result - } - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Value(JSON.parse(result.val.stdout) as ManagementV1ProjectTemplates) - } - - static async ListClusters(id: TProID, projectName: string) { - const hostFlag = toFlagArg(DEVSY_FLAG_HOST, id) - const projectFlag = toFlagArg(DEVSY_FLAG_PROJECT, projectName) - const args = [DEVSY_COMMAND_PRO, "list-clusters", hostFlag, projectFlag] - - const result = await ProCommands.newCommand(args).run() - if (result.err) { - return result - } - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Value(JSON.parse(result.val.stdout) as ManagementV1ProjectClusters) - } - - static async CreateWorkspace(id: TProID, instance: ManagementV1DevsyWorkspaceInstance) { - const hostFlag = toFlagArg(DEVSY_FLAG_HOST, id) - const instanceFlag = toFlagArg(DEVSY_FLAG_INSTANCE, JSON.stringify(instance)) - const args = [DEVSY_COMMAND_PRO, "create-workspace", hostFlag, instanceFlag] - - const result = await ProCommands.newCommand(args).run() - if (result.err) { - return result - } - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Value(JSON.parse(result.val.stdout) as ManagementV1DevsyWorkspaceInstance) - } - - static async UpdateWorkspace(id: TProID, instance: ManagementV1DevsyWorkspaceInstance) { - const hostFlag = toFlagArg(DEVSY_FLAG_HOST, id) - const instanceFlag = toFlagArg(DEVSY_FLAG_INSTANCE, JSON.stringify(instance)) - const args = [DEVSY_COMMAND_PRO, "update-workspace", hostFlag, instanceFlag] - - const result = await ProCommands.newCommand(args).run() - if (result.err) { - return result - } - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Value(JSON.parse(result.val.stdout) as ManagementV1DevsyWorkspaceInstance) - } - - static async CheckHealth(id: TProID) { - const hostFlag = toFlagArg(DEVSY_FLAG_HOST, id) - const args = [DEVSY_COMMAND_PRO, "check-health", hostFlag] - - const result = await ProCommands.newCommand(args).run() - if (result.err) { - return result - } - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Value(JSON.parse(result.val.stdout) as TPlatformHealthCheck) - } - - static async GetVersion(id: TProID) { - const hostFlag = toFlagArg(DEVSY_FLAG_HOST, id) - const args = [DEVSY_COMMAND_PRO, "version", hostFlag] - - const result = await ProCommands.newCommand(args).run() - if (result.err) { - return result - } - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Value(JSON.parse(result.val.stdout) as TPlatformVersionInfo) - } - - static async CheckUpdate(id: TProID) { - const hostFlag = toFlagArg(DEVSY_FLAG_HOST, id) - const args = [DEVSY_COMMAND_PRO, "check-update", hostFlag] - - const result = await ProCommands.newCommand(args).run() - if (result.err) { - return result - } - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Value(JSON.parse(result.val.stdout) as TPlatformUpdateCheck) - } - - static async Update(id: TProID, version: string) { - const hostFlag = toFlagArg(DEVSY_FLAG_HOST, id) - const args = [DEVSY_COMMAND_PRO, "update-provider", version, hostFlag] - - const result = await ProCommands.newCommand(args).run() - if (result.err) { - return result - } - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Value(JSON.parse(result.val.stdout) as TPlatformUpdateCheck) - } -} diff --git a/desktop/src/client/providers/client.ts b/desktop/src/client/providers/client.ts deleted file mode 100644 index d647048be..000000000 --- a/desktop/src/client/providers/client.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { FileStorageBackend, Result, ResultError, Return, Store, isEmpty } from "@/lib" -import { - TAddProviderConfig, - TCheckProviderUpdateResult, - TConfigureProviderConfig, - TProviderID, - TProviderOptions, - TProviderSource, - TProviders, -} from "@/types" -import { TDebuggable } from "../types" -import { ProviderCommands } from "./providerCommands" - -// WARN: These need to match the rust `file_name` and `dangling_provider_key` constants -// for reliable cleanup! -// Make sure to update them in `src/provider.rs` if you change them here! -const PROVIDERS_STORE_FILE_NAME = "providers" -const PROVIDERS_STORE_DANGLING_PROVIDER_KEY = "danglingProviders" - -type TProviderStore = Readonly<{ [PROVIDERS_STORE_DANGLING_PROVIDER_KEY]: readonly TProviderID[] }> - -export class ProvidersClient implements TDebuggable { - private readonly store = new Store( - new FileStorageBackend(PROVIDERS_STORE_FILE_NAME) - ) - private danglingProviderIDs: TProviderID[] = [] - // Queues store operations and guarantees they will be executed in order - private storeOperationQueue: Promise = Promise.resolve() - - constructor() {} - - public setDebug(isEnabled: boolean): void { - ProviderCommands.DEBUG = isEnabled - } - - public async listAll(): Promise> { - return ProviderCommands.ListProviders() - } - - public async newID(rawSource: string): Promise> { - return ProviderCommands.GetProviderID(rawSource) - } - - public async checkUpdate(id: TProviderID): Promise> { - return ProviderCommands.CheckProviderUpdate(id) - } - - public async update(id: TProviderID, source: TProviderSource): Promise> { - return ProviderCommands.UpdateProvider(id, source) - } - - public async add(rawSource: TProviderID, config: TAddProviderConfig): Promise { - return ProviderCommands.AddProvider(rawSource, config) - } - - public async remove(id: TProviderID): Promise { - return ProviderCommands.RemoveProvider(id) - } - - public async rename(id: TProviderID, newName: string): Promise { - return ProviderCommands.RenameProvider(id, newName) - } - - public async getOptions(id: TProviderID): Promise> { - return ProviderCommands.GetProviderOptions(id) - } - - public async useProvider(id: TProviderID): Promise { - return ProviderCommands.UseProvider(id) - } - - public async setOptionsDry( - id: TProviderID, - { options, reconfigure }: TConfigureProviderConfig - ): Promise> { - return ProviderCommands.SetProviderOptions(id, options, false, true, reconfigure) - } - - public async configure( - id: TProviderID, - { useAsDefaultProvider, reuseMachine, options }: TConfigureProviderConfig - ): Promise { - const setResult = await ProviderCommands.SetProviderOptions(id, options, !!reuseMachine) - if (setResult.err) { - return setResult as ResultError - } - - if (useAsDefaultProvider) { - return ProviderCommands.UseProvider(id) - } - - return Return.Ok() - } - - public setDangling(id: TProviderID): void { - if (!this.danglingProviderIDs.includes(id)) { - this.danglingProviderIDs.push(id) - } - const ids = this.danglingProviderIDs.slice() - this.storeOperationQueue = this.storeOperationQueue.then(() => - this.store.set("danglingProviders", ids) - ) - } - - public popAllDangling(): readonly TProviderID[] { - const maybeProviderIDs = this.danglingProviderIDs.slice() - this.danglingProviderIDs.length = 0 - this.storeOperationQueue = this.storeOperationQueue.then(() => - this.store.remove("danglingProviders") - ) - - return maybeProviderIDs - } - - public popDangling(): TProviderID | undefined { - const lastProviderID = this.danglingProviderIDs.pop() - const ids = this.danglingProviderIDs.slice() - this.storeOperationQueue = this.storeOperationQueue.then(() => { - if (isEmpty(ids)) { - return this.store.remove("danglingProviders") - } - - return this.store.set("danglingProviders", ids) - }) - - return lastProviderID - } -} diff --git a/desktop/src/client/providers/index.ts b/desktop/src/client/providers/index.ts deleted file mode 100644 index ef5fb824b..000000000 --- a/desktop/src/client/providers/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { ProvidersClient } from "./client" diff --git a/desktop/src/client/providers/providerCommands.ts b/desktop/src/client/providers/providerCommands.ts deleted file mode 100644 index 1dcd923aa..000000000 --- a/desktop/src/client/providers/providerCommands.ts +++ /dev/null @@ -1,266 +0,0 @@ -import { exists, getErrorFromChildProcess, Result, ResultError, Return } from "@/lib" -import { - TAddProviderConfig, - TCheckProviderUpdateResult, - TProviderID, - TProviderOptions, - TProviders, - TProviderSource, -} from "@/types" -import { Command, isOk, serializeRawOptions, toFlagArg } from "../command" -import { - DEVSY_COMMAND_ADD, - DEVSY_COMMAND_DELETE, - DEVSY_COMMAND_GET_PROVIDER_NAME, - DEVSY_COMMAND_LIST, - DEVSY_COMMAND_OPTIONS, - DEVSY_COMMAND_PROVIDER, - DEVSY_COMMAND_RENAME, - DEVSY_COMMAND_SET_OPTIONS, - DEVSY_COMMAND_UPDATE, - DEVSY_COMMAND_USE, - DEVSY_FLAG_DEBUG, - DEVSY_FLAG_DRY, - DEVSY_FLAG_JSON_LOG_OUTPUT, - DEVSY_FLAG_JSON_OUTPUT, - DEVSY_FLAG_NAME, - DEVSY_FLAG_RECONFIGURE, - DEVSY_FLAG_SINGLE_MACHINE, - DEVSY_FLAG_USE, -} from "../constants" -import { DEVSY_COMMAND_CHECK_PROVIDER_UPDATE, DEVSY_COMMAND_HELPER } from "./../constants" - -export class ProviderCommands { - static DEBUG = false - - private static newCommand(args: string[]): Command { - return new Command([...args, ...(ProviderCommands.DEBUG ? [DEVSY_FLAG_DEBUG] : [])]) - } - - static async ListProviders(): Promise> { - const result = await new Command([ - DEVSY_COMMAND_PROVIDER, - DEVSY_COMMAND_LIST, - DEVSY_FLAG_JSON_OUTPUT, - DEVSY_FLAG_JSON_LOG_OUTPUT, - ]).run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - const rawProviders = JSON.parse(result.val.stdout) as TProviders - for (const provider of Object.values(rawProviders)) { - provider.isProxyProvider = - provider.config?.exec?.proxy !== undefined || provider.config?.exec?.daemon !== undefined - } - - return Return.Value(rawProviders) - } - - static async GetProviderID(source: string) { - const result = await new Command([ - DEVSY_COMMAND_HELPER, - DEVSY_COMMAND_GET_PROVIDER_NAME, - source, - DEVSY_FLAG_JSON_LOG_OUTPUT, - ]).run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Value(result.val.stdout) - } - - static async AddProvider( - rawProviderSource: string, - config: TAddProviderConfig - ): Promise { - const maybeName = config.name - const maybeNameFlag = exists(maybeName) ? [toFlagArg(DEVSY_FLAG_NAME, maybeName)] : [] - const useFlag = toFlagArg(DEVSY_FLAG_USE, "false") - - const result = await ProviderCommands.newCommand([ - DEVSY_COMMAND_PROVIDER, - DEVSY_COMMAND_ADD, - rawProviderSource, - ...maybeNameFlag, - useFlag, - DEVSY_FLAG_JSON_LOG_OUTPUT, - ]).run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Ok() - } - - static async RemoveProvider(id: TProviderID) { - const result = await ProviderCommands.newCommand([ - DEVSY_COMMAND_PROVIDER, - DEVSY_COMMAND_DELETE, - id, - DEVSY_FLAG_JSON_LOG_OUTPUT, - ]).run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Ok() - } - - static async UseProvider( - id: TProviderID, - rawOptions?: Record, - reuseMachine?: boolean - ) { - const optionsFlag = rawOptions ? serializeRawOptions(rawOptions) : [] - const maybeResuseMachineFlag = reuseMachine ? [DEVSY_FLAG_SINGLE_MACHINE] : [] - - const result = await ProviderCommands.newCommand([ - DEVSY_COMMAND_PROVIDER, - DEVSY_COMMAND_USE, - id, - ...optionsFlag, - ...maybeResuseMachineFlag, - DEVSY_FLAG_JSON_LOG_OUTPUT, - ]).run() - - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Ok() - } - - static async SetProviderOptions( - id: TProviderID, - rawOptions: Record, - reuseMachine: boolean, - dry?: boolean, - reconfigure?: boolean - ) { - const optionsFlag = serializeRawOptions(rawOptions) - const maybeResuseMachineFlag = reuseMachine ? [DEVSY_FLAG_SINGLE_MACHINE] : [] - const maybeDry = dry ? [DEVSY_FLAG_DRY] : [] - const maybeReconfigure = reconfigure ? [DEVSY_FLAG_RECONFIGURE] : [] - - const result = await ProviderCommands.newCommand([ - DEVSY_COMMAND_PROVIDER, - DEVSY_COMMAND_SET_OPTIONS, - id, - ...optionsFlag, - ...maybeResuseMachineFlag, - ...maybeDry, - ...maybeReconfigure, - DEVSY_FLAG_JSON_LOG_OUTPUT, - ]).run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } else if (dry) { - return Return.Value(JSON.parse(result.val.stdout) as TProviderOptions) - } - - return Return.Ok() - } - - static async GetProviderOptions(id: TProviderID) { - const result = await new Command([ - DEVSY_COMMAND_PROVIDER, - DEVSY_COMMAND_OPTIONS, - id, - DEVSY_FLAG_JSON_OUTPUT, - DEVSY_FLAG_JSON_LOG_OUTPUT, - ]).run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Value(JSON.parse(result.val.stdout) as TProviderOptions) - } - - static async CheckProviderUpdate(id: TProviderID) { - const result = await new Command([ - DEVSY_COMMAND_HELPER, - DEVSY_COMMAND_CHECK_PROVIDER_UPDATE, - id, - ]).run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Value(JSON.parse(result.val.stdout) as TCheckProviderUpdateResult) - } - - static async UpdateProvider(id: TProviderID, source: TProviderSource) { - const useFlag = toFlagArg(DEVSY_FLAG_USE, "false") - - const result = await new Command([ - DEVSY_COMMAND_PROVIDER, - DEVSY_COMMAND_UPDATE, - id, - source.raw ?? source.github ?? source.url ?? source.file ?? "", - DEVSY_FLAG_JSON_LOG_OUTPUT, - useFlag, - ]).run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Ok() - } - - static async RenameProvider(oldName: TProviderID, newName: string) { - const result = await ProviderCommands.newCommand([ - DEVSY_COMMAND_PROVIDER, - DEVSY_COMMAND_RENAME, - oldName, - newName, - DEVSY_FLAG_JSON_LOG_OUTPUT, - ]).run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return getErrorFromChildProcess(result.val) - } - - return Return.Ok() - } -} diff --git a/desktop/src/client/repo.ts b/desktop/src/client/repo.ts deleted file mode 100644 index 6bdb464a7..000000000 --- a/desktop/src/client/repo.ts +++ /dev/null @@ -1,21 +0,0 @@ -export const REPO_OWNER = "devsy-org" -export const REPO_NAME = "devsy" -export const REPO_SLUG = `${REPO_OWNER}/${REPO_NAME}` -export const BINARY_NAME = REPO_NAME -export const PRODUCT_NAME = "Devsy" -export const PRODUCT_NAME_PRO = `${PRODUCT_NAME} Pro` -export const PRO_RELEASE_NAME = `${REPO_NAME}-pro` -export const PROVIDER_PREFIX = `${REPO_NAME}-provider-` -export const SSH_HOST_SUFFIX = `.${BINARY_NAME}` - -export const GITHUB_REPO_URL = `https://github.com/${REPO_SLUG}` -export const GITHUB_RELEASES_URL = `${GITHUB_REPO_URL}/releases` -export const GITHUB_ISSUES_URL = `${GITHUB_REPO_URL}/issues/new/choose` -export const WEBSITE_BASE_URL = `https://${REPO_NAME}.sh` -export const WEBSITE_DOCS_URL = `${WEBSITE_BASE_URL}/docs` -export const WEBSITE_PRO_URL = `${WEBSITE_BASE_URL}/pro` -export const WEBSITE_ASSETS_URL = `${WEBSITE_BASE_URL}/assets` - -export const FLATPAK_ID = `sh.devsy.${REPO_NAME}` -export const CONTAINER_NAME = BINARY_NAME -export const SHARED_MACHINE_PREFIX = `${BINARY_NAME}-shared-` diff --git a/desktop/src/client/tauriClient/index.ts b/desktop/src/client/tauriClient/index.ts deleted file mode 100644 index 7bea3a874..000000000 --- a/desktop/src/client/tauriClient/index.ts +++ /dev/null @@ -1 +0,0 @@ -export const TAURI_SERVER_URL = "http://localhost:25842" diff --git a/desktop/src/client/types.ts b/desktop/src/client/types.ts deleted file mode 100644 index 28d3f70ff..000000000 --- a/desktop/src/client/types.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { TLogOutput } from "@/types" - -export type TDebuggable = Readonly<{ setDebug(isEnabled: boolean): void }> -export type TStreamEvent = Readonly< - { type: "data"; data: TLogOutput } | { type: "error"; error: TLogOutput } -> -export type TStreamEventListenerFn = (event: TStreamEvent) => void diff --git a/desktop/src/client/workspaces/client.ts b/desktop/src/client/workspaces/client.ts deleted file mode 100644 index 217755bd0..000000000 --- a/desktop/src/client/workspaces/client.ts +++ /dev/null @@ -1,310 +0,0 @@ -import { TActionID, TActionName, TActionObj } from "@/contexts" -import { Result, ResultError, Return, THandler, exists, isError, noop } from "@/lib" -import { - TDevcontainerSetup, - TStreamID, - TUnsubscribeFn, - TWorkspace, - TWorkspaceID, - TWorkspaceStartConfig, - TWorkspaceWithoutStatus, -} from "@/types" -import { TCommand, TStreamEventListenerFn } from "../command" -import { CommandCache, TCommandCacheInfo } from "../commandCache" -import { TDebuggable, TStreamEvent } from "../types" -import { WorkspaceCommands } from "./workspaceCommands" -import { - DEVSY_FLAG_DOTFILES, - DEVSY_FLAG_GIT_SIGNING_KEY, - WORKSPACE_COMMAND_ADDITIONAL_FLAGS_KEY, -} from "../constants" -import { invoke } from "@tauri-apps/api/core" - -// Every workspace can have one active action at a time, -// but multiple views might need to listen to the same action. -// The `streamID` identifies a view listener. -type TWorkspaceClientContext = Readonly<{ - id: TWorkspaceID - actionID: TActionID - streamID: TStreamID -}> - -export class WorkspacesClient implements TDebuggable { - private readonly commandCache = new CommandCache() - - constructor() {} - - private createStreamHandler( - id: TStreamID, - listener: TStreamEventListenerFn - ): THandler { - return { - id, - eq(other) { - return id === other.id - }, - notify: listener, - } - } - - private async writeEvent(actionID: TActionID, event: TStreamEvent) { - // Be wary of the spelling, tauri expects this to be `actionId` instead of `actionID` because of the serde deserialization - await invoke("write_action_log", { actionId: actionID, data: JSON.stringify(event) }) - } - - private async execActionCmd( - cmd: Readonly>, - ctx: Readonly<{ - id: TWorkspaceID - actionID: TActionID - streamID: TStreamID - listener?: TStreamEventListenerFn | undefined - actionName: TActionName - }> - ) { - const cacheInfo: TCommandCacheInfo = { id: ctx.id, actionName: ctx.actionName } - const maybeRunningCommand = this.commandCache.get(cacheInfo) - const handler = this.createStreamHandler(ctx.streamID, (event) => { - this.writeEvent(ctx.actionID, event) - - ctx.listener?.(event) - }) - - // If `start` for id is running already, - // wire up the new listener and return the existing operation - if (exists(maybeRunningCommand)) { - maybeRunningCommand.stream?.(handler) - await maybeRunningCommand.promise - - return this.getStatus(ctx.id) - } - - const { operation, stream } = this.commandCache.connect(cacheInfo, cmd) - stream?.(handler) - - const result = await operation - this.commandCache.clear(cacheInfo) - - if (result.err) { - return result - } - - return result - } - - public setDebug(isEnabled: boolean): void { - WorkspaceCommands.DEBUG = isEnabled - } - - public setDotfilesFlag(dotfilesUrl: string): void { - if (!dotfilesUrl) { - return - } - WorkspaceCommands.ADDITIONAL_FLAGS.set(DEVSY_FLAG_DOTFILES, dotfilesUrl) - } - - public setAdditionalFlags(additionalFlags: string): void { - WorkspaceCommands.ADDITIONAL_FLAGS.set(WORKSPACE_COMMAND_ADDITIONAL_FLAGS_KEY, additionalFlags) - } - - public setSSHKeyPath(sshKeyPath: string): void { - if (!sshKeyPath) { - return - } - WorkspaceCommands.ADDITIONAL_FLAGS.set(DEVSY_FLAG_GIT_SIGNING_KEY, sshKeyPath) - } - - public async listAll( - skipPro: boolean = true - ): Promise> { - return WorkspaceCommands.ListWorkspaces(skipPro) - } - - public async getStatus(id: TWorkspaceID): Promise> { - const result = await WorkspaceCommands.FetchWorkspaceStatus(id) - if (result.err) { - return result - } - - const { status } = result.val - - return Return.Value(status) - } - - public async newID(rawSource: string): Promise> { - return WorkspaceCommands.GetWorkspaceID(rawSource) - } - - public async newUID(): Promise> { - return WorkspaceCommands.GetWorkspaceUID() - } - - public async start( - config: TWorkspaceStartConfig, - listener: TStreamEventListenerFn | undefined, - ctx: TWorkspaceClientContext - ): Promise> { - const cmd = WorkspaceCommands.StartWorkspace(ctx.id, config) - const result = await this.execActionCmd(cmd, { ...ctx, listener, actionName: "start" }) - if (result.err) { - return result - } - - return this.getStatus(ctx.id) - } - - public async stop( - listener: TStreamEventListenerFn | undefined, - ctx: TWorkspaceClientContext - ): Promise> { - const cmd = WorkspaceCommands.StopWorkspace(ctx.id) - const result = await this.execActionCmd(cmd, { ...ctx, listener, actionName: "stop" }) - if (result.err) { - return result - } - - return this.getStatus(ctx.id) - } - - public async rebuild( - listener: TStreamEventListenerFn | undefined, - ctx: TWorkspaceClientContext - ): Promise> { - const cmd = WorkspaceCommands.RebuildWorkspace(ctx.id) - const result = await this.execActionCmd(cmd, { ...ctx, listener, actionName: "rebuild" }) - if (result.err) { - return result - } - - return this.getStatus(ctx.id) - } - - public async troubleshoot(ctx: TWorkspaceClientContext) { - const cmd = WorkspaceCommands.TroubleshootWorkspace(ctx.id) - - return cmd.run() - } - - public async reset( - listener: TStreamEventListenerFn | undefined, - ctx: TWorkspaceClientContext - ): Promise> { - const cmd = WorkspaceCommands.ResetWorkspace(ctx.id) - const result = await this.execActionCmd(cmd, { ...ctx, listener, actionName: "reset" }) - if (result.err) { - return result - } - - return this.getStatus(ctx.id) - } - - public async remove( - force: boolean, - listener: TStreamEventListenerFn | undefined, - ctx: TWorkspaceClientContext - ): Promise> { - const cmd = WorkspaceCommands.RemoveWorkspace(ctx.id, force) - const result = await this.execActionCmd(cmd, { ...ctx, listener, actionName: "remove" }) - if (result.err) { - return result - } - - return result - } - - public async checkStatus( - listener: TStreamEventListenerFn | undefined, - ctx: TWorkspaceClientContext - ): Promise { - const cmd = WorkspaceCommands.GetStatusLogs(ctx.id) - const result = await this.execActionCmd(cmd, { ...ctx, listener, actionName: "checkStatus" }) - if (result.err) { - return result - } - - return Return.Ok() - } - - public async checkDevcontainerSetup(rawSource: string): Promise> { - const result = await WorkspaceCommands.GetDevcontainerConfig(rawSource).run() - if (result.err) { - return result - } - - try { - const setup = JSON.parse(result.val.stdout) as TDevcontainerSetup - - return Return.Value(setup) - } catch (err) { - return Return.Failed(`Failed to parse devcontainer setup: ${err}`) - } - } - - public subscribe( - action: TActionObj, - streamID: TStreamID, - listener: TStreamEventListenerFn - ): TUnsubscribeFn { - const maybeRunningCommand = this.commandCache.get({ - id: action.targetID, - actionName: action.name, - }) - if (!exists(maybeRunningCommand)) { - return noop - } - - const maybeUnsubscribe = maybeRunningCommand.stream?.( - this.createStreamHandler(streamID, listener) - ) - - return () => maybeUnsubscribe?.() - } - - public replayAction(actionID: TActionID, listener: TStreamEventListenerFn): TUnsubscribeFn { - let cancelled = false - const unsubscribe = () => { - cancelled = true - } - // Be wary of the spelling, tauri expects this to be `actionId` instead of `actionID` because of the serde deserialization - invoke("get_action_logs", { actionId: actionID }) - .then((events) => { - if (cancelled) { - return - } - for (const event of events) { - try { - listener(JSON.parse(event)) - } catch (e) { - console.log(e) - // noop - } - } - }) - .catch((e) => { - console.error("Failed to replay action", e) - unsubscribe() - }) - - return unsubscribe - } - - public async cancelAction(actionID: TActionID): Promise { - const cmdHandler = this.commandCache.findCommandHandlerById(actionID) - - return cmdHandler?.cancel?.() ?? Return.Ok() - } - - public async getActionLogFile(actionID: TActionID): Promise> { - try { - const path = await invoke("get_action_log_file", { actionId: actionID }) - - return Return.Value(path) - } catch (e) { - if (isError(e)) { - return Return.Failed(e.message) - } - - return Return.Failed(`Unable to retrieve log file for action ${actionID}`) - } - } -} diff --git a/desktop/src/client/workspaces/index.ts b/desktop/src/client/workspaces/index.ts deleted file mode 100644 index 15172284c..000000000 --- a/desktop/src/client/workspaces/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { WorkspacesClient } from "./client" diff --git a/desktop/src/client/workspaces/workspaceCommands.ts b/desktop/src/client/workspaces/workspaceCommands.ts deleted file mode 100644 index df28875f7..000000000 --- a/desktop/src/client/workspaces/workspaceCommands.ts +++ /dev/null @@ -1,229 +0,0 @@ -import { exists, Result, Return } from "@/lib" -import { - TWorkspace, - TWorkspaceID, - TWorkspaceStartConfig, - TWorkspaceStatusResult, - TWorkspaceWithoutStatus, -} from "@/types" -import { Command, isOk, serializeRawOptions, toFlagArg } from "../command" -import { - DEVSY_COMMAND_DELETE, - DEVSY_COMMAND_GET_WORKSPACE_CONFIG, - DEVSY_COMMAND_GET_WORKSPACE_NAME, - DEVSY_COMMAND_GET_WORKSPACE_UID, - DEVSY_COMMAND_HELPER, - DEVSY_COMMAND_LIST, - DEVSY_COMMAND_STATUS, - DEVSY_COMMAND_STOP, - DEVSY_COMMAND_UP, - DEVSY_COMMAND_TROUBLESHOOT, - DEVSY_FLAG_DEBUG, - DEVSY_FLAG_DEVCONTAINER_PATH, - DEVSY_FLAG_FORCE, - DEVSY_FLAG_ID, - DEVSY_FLAG_IDE, - DEVSY_FLAG_JSON_LOG_OUTPUT, - DEVSY_FLAG_JSON_OUTPUT, - DEVSY_FLAG_PREBUILD_REPOSITORY, - DEVSY_FLAG_PROVIDER, - DEVSY_FLAG_PROVIDER_OPTION, - DEVSY_FLAG_RECREATE, - DEVSY_FLAG_RESET, - DEVSY_FLAG_SKIP_PRO, - DEVSY_FLAG_SOURCE, - DEVSY_FLAG_TIMEOUT, - WORKSPACE_COMMAND_ADDITIONAL_FLAGS_KEY, -} from "../constants" - -type TRawWorkspaces = readonly (Omit & - Readonly<{ id: string | null }>)[] - -export class WorkspaceCommands { - static DEBUG = false - static ADDITIONAL_FLAGS = new Map() - - private static newCommand(args: string[]): Command { - const extraFlags = [] - if (WorkspaceCommands.DEBUG) { - extraFlags.push(DEVSY_FLAG_DEBUG) - } - - return new Command([...args, ...extraFlags]) - } - - static async ListWorkspaces(skipPro: boolean): Promise> { - const maybeSkipProFlag = skipPro ? [DEVSY_FLAG_SKIP_PRO] : [] - - const result = await new Command([ - DEVSY_COMMAND_LIST, - DEVSY_FLAG_JSON_OUTPUT, - ...maybeSkipProFlag, - ]).run() - if (result.err) { - return result - } - - const rawWorkspaces = JSON.parse(result.val.stdout) as TRawWorkspaces - - return Return.Value( - rawWorkspaces.filter((workspace): workspace is TWorkspaceWithoutStatus => - exists(workspace.id) - ) - ) - } - - static async FetchWorkspaceStatus( - id: string - ): Promise>> { - const result = await new Command([DEVSY_COMMAND_STATUS, id, DEVSY_FLAG_JSON_OUTPUT]).run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return Return.Failed(`Failed to get status for workspace ${id}: ${result.val.stderr}`) - } - - const { state } = JSON.parse(result.val.stdout) as TWorkspaceStatusResult - - return Return.Value({ id, status: state }) - } - - static async GetWorkspaceID(source: string) { - const result = await new Command([ - DEVSY_COMMAND_HELPER, - DEVSY_COMMAND_GET_WORKSPACE_NAME, - source, - ]).run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return Return.Failed(`Failed to get ID for workspace source ${source}: ${result.val.stderr}`) - } - - return Return.Value(result.val.stdout) - } - - static async GetWorkspaceUID() { - const result = await new Command([DEVSY_COMMAND_HELPER, DEVSY_COMMAND_GET_WORKSPACE_UID]).run() - if (result.err) { - return result - } - - if (!isOk(result.val)) { - return Return.Failed(`Failed to get UID: ${result.val.stderr}`) - } - - return Return.Value(result.val.stdout) - } - - static GetStatusLogs(id: string) { - return new Command([DEVSY_COMMAND_STATUS, id, DEVSY_FLAG_JSON_LOG_OUTPUT]) - } - - static StartWorkspace(id: TWorkspaceID, config: TWorkspaceStartConfig) { - const maybeSource = config.sourceConfig?.source - const maybeIDFlag = exists(maybeSource) ? [toFlagArg(DEVSY_FLAG_ID, id)] : [] - - const maybeSourceType = config.sourceConfig?.type - const maybeSourceFlag = - exists(maybeSourceType) && exists(maybeSource) - ? [toFlagArg(DEVSY_FLAG_SOURCE, `${maybeSourceType}:${maybeSource}`)] - : [] - const identifier = exists(maybeSource) && exists(maybeIDFlag) ? maybeSource : id - - const maybeIdeName = config.ideConfig?.name - const maybeIDEFlag = exists(maybeIdeName) ? [toFlagArg(DEVSY_FLAG_IDE, maybeIdeName)] : [] - - const maybeProviderID = config.providerConfig?.providerID - const maybeProviderFlag = exists(maybeProviderID) - ? [toFlagArg(DEVSY_FLAG_PROVIDER, maybeProviderID)] - : [] - const maybeProviderOptions = config.providerConfig?.options - const maybeProviderOptionsFlag = exists(maybeProviderOptions) - ? serializeRawOptions(maybeProviderOptions, DEVSY_FLAG_PROVIDER_OPTION) - : [] - - const maybePrebuildRepositories = config.prebuildRepositories?.length - ? [toFlagArg(DEVSY_FLAG_PREBUILD_REPOSITORY, config.prebuildRepositories.join(","))] - : [] - - const maybeDevcontainerPath = config.devcontainerPath - ? [toFlagArg(DEVSY_FLAG_DEVCONTAINER_PATH, config.devcontainerPath)] - : [] - - const additionalFlags = [] - if (WorkspaceCommands.ADDITIONAL_FLAGS.size > 0) { - for (const [key, value] of WorkspaceCommands.ADDITIONAL_FLAGS.entries()) { - if (key === WORKSPACE_COMMAND_ADDITIONAL_FLAGS_KEY) { - additionalFlags.push(value) - continue - } - - additionalFlags.push(toFlagArg(key, value)) - } - } - - return WorkspaceCommands.newCommand([ - DEVSY_COMMAND_UP, - identifier, - ...maybeIDFlag, - ...maybeSourceFlag, - ...maybeIDEFlag, - ...maybeProviderFlag, - ...maybePrebuildRepositories, - ...maybeDevcontainerPath, - ...additionalFlags, - ...maybeProviderOptionsFlag, - DEVSY_FLAG_JSON_LOG_OUTPUT, - ]) - } - - static StopWorkspace(id: TWorkspaceID) { - return WorkspaceCommands.newCommand([DEVSY_COMMAND_STOP, id, DEVSY_FLAG_JSON_LOG_OUTPUT]) - } - - static RebuildWorkspace(id: TWorkspaceID) { - return WorkspaceCommands.newCommand([ - DEVSY_COMMAND_UP, - id, - DEVSY_FLAG_JSON_LOG_OUTPUT, - DEVSY_FLAG_RECREATE, - ]) - } - - static ResetWorkspace(id: TWorkspaceID) { - return WorkspaceCommands.newCommand([ - DEVSY_COMMAND_UP, - id, - DEVSY_FLAG_JSON_LOG_OUTPUT, - DEVSY_FLAG_RESET, - ]) - } - - static TroubleshootWorkspace(id: TWorkspaceID) { - return WorkspaceCommands.newCommand([DEVSY_COMMAND_TROUBLESHOOT, id]) - } - - static RemoveWorkspace(id: TWorkspaceID, force?: boolean) { - const args = [DEVSY_COMMAND_DELETE, id, DEVSY_FLAG_JSON_LOG_OUTPUT] - if (force) { - args.push(DEVSY_FLAG_FORCE) - } - - return WorkspaceCommands.newCommand(args) - } - - static GetDevcontainerConfig(rawSource: string) { - return new Command([ - DEVSY_COMMAND_HELPER, - DEVSY_COMMAND_GET_WORKSPACE_CONFIG, - rawSource, - DEVSY_FLAG_TIMEOUT, - "10s", - ]) - } -} diff --git a/desktop/src/components/Animation/Ripple.tsx b/desktop/src/components/Animation/Ripple.tsx deleted file mode 100644 index d08a8b105..000000000 --- a/desktop/src/components/Animation/Ripple.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { Icon, IconProps } from "@chakra-ui/react" -import { motion } from "framer-motion" - -const initial = { - r: 4, - opacity: 0.3, -} -const animate = { r: 12, opacity: 0 } -const transition = { duration: 4, repeat: Infinity } -export function Ripple(props: IconProps) { - return ( - - - - - - ) -} diff --git a/desktop/src/components/Animation/index.ts b/desktop/src/components/Animation/index.ts deleted file mode 100644 index 3f077aa10..000000000 --- a/desktop/src/components/Animation/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Ripple } from "./Ripple" diff --git a/desktop/src/components/AutoComplete/AutoComplete.tsx b/desktop/src/components/AutoComplete/AutoComplete.tsx deleted file mode 100644 index 4a47c183d..000000000 --- a/desktop/src/components/AutoComplete/AutoComplete.tsx +++ /dev/null @@ -1,159 +0,0 @@ -import { - Box, - Fade, - Icon, - Input, - InputGroup, - InputRightElement, - useColorModeValue, - useToken, -} from "@chakra-ui/react" -import { Combobox } from "@headlessui/react" -import { forwardRef, useEffect, useRef, useState } from "react" -import { AiOutlineCaretRight } from "react-icons/ai" - -type TAutoCompleteOption = Readonly<{ - key: string - label: string -}> -type TAutoCompleteProps = Readonly<{ - options: readonly TAutoCompleteOption[] - onChange?: (value: string | null) => void - onBlur?: () => void - value?: string - defaultValue?: string - placeholder?: string - name?: string -}> - -/* - * Can be integrated with `react-hook-form` like this: - * ```tsx - const { handleSubmit, control } = useForm() - -
    - } - /> - - - ``` - */ -export const AutoComplete = forwardRef(function InnerAutoComplete( - { name, placeholder, options, defaultValue, value, onChange, onBlur }, - ref -) { - const openButtonRef = useRef(null) - const optionsBackgroundColor = useColorModeValue("gray.100", "gray.800") - const optionsZIndex = useToken("zIndices", "dropdown") - const [query, setQuery] = useState("") - - useEffect(() => { - // set value initially - if (value) { - onChange?.(value) - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) - - const filteredOptions = - query === "" - ? options - : options.filter((option) => { - return option.key.toLowerCase().includes(query.toLowerCase()) - }) - - function handleInputFocused(isOpen: boolean) { - return () => { - if (!isOpen) { - openButtonRef.current?.click() - } - } - } - - return ( - - ref={ref} - name={name} - value={value} - defaultValue={defaultValue} - onChange={onChange}> - {({ open: isOpen }) => ( - - - { - setQuery(event.target.value) - onChange?.(event.target.value) - }} - onClick={handleInputFocused(isOpen)} - /> - - { - e.preventDefault() - e.stopPropagation() - }}> - - - - - - - - {({ open: isOpen }) => ( - - - {query.length > 0 && !filteredOptions.find((o) => o.label === query) && ( - - - )} - - - )} - - ) -}) - -function Option({ option }: { option: TAutoCompleteOption }) { - const activeOptionBackgroundColor = useColorModeValue("gray.200", "gray.700") - - return ( - - {({ active }) => ( - - {option.label} - - )} - - ) -} diff --git a/desktop/src/components/AutoComplete/index.ts b/desktop/src/components/AutoComplete/index.ts deleted file mode 100644 index c0a7b58e7..000000000 --- a/desktop/src/components/AutoComplete/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { AutoComplete } from "./AutoComplete" diff --git a/desktop/src/components/BottomActionBar/BottomActionBar.tsx b/desktop/src/components/BottomActionBar/BottomActionBar.tsx deleted file mode 100644 index ef73ec698..000000000 --- a/desktop/src/components/BottomActionBar/BottomActionBar.tsx +++ /dev/null @@ -1,167 +0,0 @@ -import { SIDEBAR_WIDTH } from "@/constants" -import { ExclamationCircle } from "@/icons" -import { exists, isError } from "@/lib" -import { - BoxProps, - HStack, - IconButton, - Popover, - PopoverContent, - PopoverTrigger, - useBreakpointValue, - useColorModeValue, -} from "@chakra-ui/react" -import { motion } from "framer-motion" -import { RefObject, createContext, useContext, useEffect, useMemo, useRef, useState } from "react" -import { ErrorMessageBox } from "../Error" -import { useBorderColor } from "@/Theme" - -type TModalBottomBarProps = Readonly<{ - isModal?: boolean - hasSidebar?: boolean - stickToBottom?: boolean - children: React.ReactNode -}> - -const BottomActionBarContext = createContext<{ ref: RefObject } | undefined>( - undefined -) -export function BottomActionBar({ - isModal = false, - hasSidebar = true, - stickToBottom, - children, -}: TModalBottomBarProps) { - const ref = useRef(null) - const bottomBarBackgroundColor = useColorModeValue("white", "gray.900") - const bottomBarBackgroundColorModal = useColorModeValue("white", "background.darkest") - const borderColor = useBorderColor() - const translateX = useBreakpointValue({ - base: hasSidebar ? "translateX(-3rem)" : "", - xl: isModal ? "translateX(-3rem)" : "", - }) - const paddingX = useBreakpointValue({ base: "3rem", xl: isModal ? "3rem" : "4" }) - const value = useMemo(() => ({ ref }), [ref]) - - const width = useMemo(() => { - if (isModal) { - return "calc(100% + 5.5rem)" - } - - if (hasSidebar) { - return { base: `calc(100vw - ${SIDEBAR_WIDTH})`, xl: "full" } - } - - return { base: "100vw", xl: "full" } - }, [hasSidebar, isModal]) - - const otherProps = useMemo(() => { - if (stickToBottom) { - return { - position: "fixed", - bottom: "2rem", - } - } - - return { - position: "sticky", - bottom: "-1.1rem", - } - }, [stickToBottom]) - - return ( - - - {children} - - - ) -} - -type TBottomActionBarErrorProps = Readonly<{ - error?: Error | null - containerRef?: RefObject -}> -export function BottomActionBarError({ error, containerRef }: TBottomActionBarErrorProps) { - const ctx = useContext(BottomActionBarContext) - const { height, width } = useErrorDimensions(containerRef, ctx?.ref) - // Open error popover when error changes - const errorButtonRef = useRef(null) - useEffect(() => { - if (error) { - errorButtonRef.current?.click() - } - }, [error]) - - return ( - - - - - - } - isDisabled={!exists(error)} - /> - - - {isError(error) && } - - - ) -} - -function useErrorDimensions( - ref: RefObject | undefined, - _parentRef: RefObject | undefined, - defaultHeight: BoxProps["height"] = "5xl", - defaultWidth: BoxProps["width"] = "5xl" -) { - const [errorHeight, setErrorHeight] = useState(defaultHeight) - const [errorWidth] = useState(defaultWidth) - - useEffect(() => { - const curr = ref?.current - if (!curr) { - return - } - const observer = new ResizeObserver((entries) => { - for (const entry of entries) { - if (entry.target === curr) { - const heightPx = entry.contentRect.height - - setErrorHeight(`calc(${heightPx}px - 4rem)`) - } - } - }) - observer.observe(curr) - - return () => observer.disconnect() - }, [ref]) - - return { height: errorHeight, width: errorWidth } -} diff --git a/desktop/src/components/BottomActionBar/index.ts b/desktop/src/components/BottomActionBar/index.ts deleted file mode 100644 index c8a7f8443..000000000 --- a/desktop/src/components/BottomActionBar/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { BottomActionBar, BottomActionBarError } from "./BottomActionBar" diff --git a/desktop/src/components/CardHeader/WorkspaceCardHeader.tsx b/desktop/src/components/CardHeader/WorkspaceCardHeader.tsx deleted file mode 100644 index a3e30084f..000000000 --- a/desktop/src/components/CardHeader/WorkspaceCardHeader.tsx +++ /dev/null @@ -1,109 +0,0 @@ -import { Box, Checkbox, HStack, Heading, Icon, Text, VStack } from "@chakra-ui/react" -import dayjs from "dayjs" -import { ReactNode, useId } from "react" -import { HiClock, HiOutlineCode } from "react-icons/hi" -import { useNavigate } from "react-router" -import { IconTag } from "@/components" -import { Stack3D } from "@/icons" -import { Routes } from "@/routes.constants" - -type TWorkspaceCardHeaderProps = Readonly<{ - id: string - statusBadge?: ReactNode - controls?: ReactNode - children?: ReactNode - source?: ReactNode - - isSelected?: boolean - onSelectionChange?: (isSelected: boolean) => void -}> -export function WorkspaceCardHeader({ - id, - isSelected, - onSelectionChange, - statusBadge, - controls, - source, - children, -}: TWorkspaceCardHeaderProps) { - const checkboxID = useId() - - return ( - <> - - - {onSelectionChange && ( - onSelectionChange(e.target.checked)} - /> - )} - - - - {id} - - {statusBadge} - - - {controls} - - {source} - - - - {children} - - - ) -} - -type TProviderProps = Readonly<{ name: string | undefined }> -function Provider({ name }: TProviderProps) { - const navigate = useNavigate() - - return ( - } - label={name ?? "No provider"} - info={name ? `Uses provider ${name}` : undefined} - onClick={() => { - if (!name) { - return - } - - navigate(Routes.toProvider(name)) - }} - /> - ) -} -WorkspaceCardHeader.Provider = Provider - -type TIDEProps = Readonly<{ name: string }> -function IDE({ name }: TIDEProps) { - return ( - } label={name} info={`Will be opened in ${name}`} /> - ) -} -WorkspaceCardHeader.IDE = IDE - -type TLastUsedProps = Readonly<{ timestamp: string }> -function LastUsed({ timestamp }: TLastUsedProps) { - return ( - } - label={dayjs(new Date(timestamp)).fromNow()} - info={`Last used ${dayjs(new Date(timestamp)).fromNow()}`} - /> - ) -} -WorkspaceCardHeader.LastUsed = LastUsed diff --git a/desktop/src/components/CardHeader/index.ts b/desktop/src/components/CardHeader/index.ts deleted file mode 100644 index 4d3b71d17..000000000 --- a/desktop/src/components/CardHeader/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { WorkspaceCardHeader } from "./WorkspaceCardHeader" diff --git a/desktop/src/components/DeleteWorkspacesModal/DeleteWorkspacesModal.tsx b/desktop/src/components/DeleteWorkspacesModal/DeleteWorkspacesModal.tsx deleted file mode 100644 index 21e2c6267..000000000 --- a/desktop/src/components/DeleteWorkspacesModal/DeleteWorkspacesModal.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import { - Box, - Button, - Checkbox, - HStack, - Modal, - ModalBody, - ModalCloseButton, - ModalContent, - ModalFooter, - ModalHeader, - ModalOverlay, -} from "@chakra-ui/react" -import React, { useCallback, useState } from "react" - -export function DeleteWorkspacesModal({ - onDeleteRequested, - onCloseRequested, - amount, - isOpen, - pro = false, -}: { - isOpen: boolean - onCloseRequested: () => void - onDeleteRequested: (forceDelete: boolean) => void - amount: number - pro?: boolean -}) { - const [forceDelete, setForceDelete] = useState(false) - - const onDeleteClick = useCallback(() => { - onCloseRequested() - onDeleteRequested(pro ? true : forceDelete) - }, [forceDelete, onDeleteRequested, onCloseRequested, pro]) - - const onForceDeleteChanged = useCallback( - (e: React.ChangeEvent) => { - setForceDelete(e.target.checked) - }, - [setForceDelete] - ) - - return ( - - - - Delete {amount} Workspaces - - - Deleting the workspaces will erase all state. Are you sure you want to delete the selected - workspaces? - {!pro && ( - - - Force Delete - - - )} - - - - - - - - - - ) -} diff --git a/desktop/src/components/DeleteWorkspacesModal/index.ts b/desktop/src/components/DeleteWorkspacesModal/index.ts deleted file mode 100644 index e67548b55..000000000 --- a/desktop/src/components/DeleteWorkspacesModal/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./DeleteWorkspacesModal" diff --git a/desktop/src/components/DevsyOSSBadge.tsx b/desktop/src/components/DevsyOSSBadge.tsx deleted file mode 100644 index 4f338d0ca..000000000 --- a/desktop/src/components/DevsyOSSBadge.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { Link, Text } from "@chakra-ui/react" -import { client } from "@/client/client" -import { GITHUB_REPO_URL } from "@/client/repo" - -export function DevsyOSSBadge() { - return ( - client.openUrl(GITHUB_REPO_URL)}> - - Made by Devsy - - - ) -} diff --git a/desktop/src/components/Error/ErrorMessageBox.tsx b/desktop/src/components/Error/ErrorMessageBox.tsx deleted file mode 100644 index f6c6f90d0..000000000 --- a/desktop/src/components/Error/ErrorMessageBox.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { Box, BoxProps, Text, useColorModeValue } from "@chakra-ui/react" -import React from "react" - -type TErrorMessageBox = Readonly<{ error: Error }> & BoxProps -export function ErrorMessageBox({ error, ...boxProps }: TErrorMessageBox) { - const backgroundColor = useColorModeValue("red.50", "red.100") - const textColor = useColorModeValue("red.700", "red.800") - - return ( - - - {error.message.split("\n").map((line, index) => ( - - {line} -
    -
    - ))} -
    -
    - ) -} diff --git a/desktop/src/components/Error/index.ts b/desktop/src/components/Error/index.ts deleted file mode 100644 index 27dcf75a1..000000000 --- a/desktop/src/components/Error/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { ErrorMessageBox } from "./ErrorMessageBox" diff --git a/desktop/src/components/ExampleCard.tsx b/desktop/src/components/ExampleCard.tsx deleted file mode 100644 index d272b4bda..000000000 --- a/desktop/src/components/ExampleCard.tsx +++ /dev/null @@ -1,128 +0,0 @@ -import { - BoxProps, - Card, - Image, - ImageProps, - Text, - Tooltip, - forwardRef, - useColorModeValue, - useToken, -} from "@chakra-ui/react" -import { ComponentType, ReactElement, cloneElement, useMemo } from "react" - -type TExampleCardProps = { - name: string - image?: string | ReactElement - size?: keyof typeof sizes - - isSelected?: boolean - isDisabled?: boolean - showTooltip?: boolean - onClick?: () => void -} & BoxProps - -const sizes: Record<"sm" | "md" | "lg", BoxProps["width"]> = { - sm: "12", - md: "16", - lg: "20", -} as const - -export const ExampleCard = forwardRef>( - function InnerExampleCard( - { - name, - image, - isSelected, - isDisabled, - size = "lg", - showTooltip = true, - onClick, - ...restBoxProps - }, - ref - ) { - const hoverBackgroundColor = useColorModeValue("gray.50", "gray.800") - - const primaryColorLight = useToken("colors", "primary.400") - const primaryColorDark = useToken("colors", "primary.800") - - const selectedProps = isSelected - ? { - _before: { - content: '""', - position: "absolute", - top: 0, - bottom: 0, - left: 0, - right: 0, - background: `linear-gradient(135deg, ${primaryColorLight}55 30%, ${primaryColorDark}55, ${primaryColorDark}88)`, - opacity: 0.7, - width: "full", - height: "full", - }, - boxShadow: `inset 0px 0px 0px 1px ${primaryColorDark}55`, - } - : {} - - const disabledProps = isDisabled ? { filter: "grayscale(100%)", cursor: "not-allowed" } : {} - - const imageElement = useMemo(() => { - if (image === undefined) { - return null - } - const imageProps: ImageProps = { objectFit: "fill", overflow: "hidden", zIndex: "1" } - if (typeof image === "string") { - return - } - - return cloneElement(image, imageProps) - }, [image]) - - return ( - - - {imageElement} - {size === "lg" && ( - - {name} - - )} - - - ) - } -) diff --git a/desktop/src/components/Form/Form.tsx b/desktop/src/components/Form/Form.tsx deleted file mode 100644 index 7a2660e90..000000000 --- a/desktop/src/components/Form/Form.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { Box, BoxProps, forwardRef } from "@chakra-ui/react" - -type TFormProps = Readonly<{ - ref?: React.Ref - children: React.ReactNode - onSubmit?: React.FormEventHandler -}> & - Omit - -export const Form = forwardRef(function InnerForm( - { children, onSubmit, ...boxProps }, - ref -) { - return ( - - {children} - - ) -}) diff --git a/desktop/src/components/Form/index.ts b/desktop/src/components/Form/index.ts deleted file mode 100644 index 105bdd204..000000000 --- a/desktop/src/components/Form/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Form } from "./Form" diff --git a/desktop/src/components/IDEGroup/IDEGroup.tsx b/desktop/src/components/IDEGroup/IDEGroup.tsx deleted file mode 100644 index d1576af49..000000000 --- a/desktop/src/components/IDEGroup/IDEGroup.tsx +++ /dev/null @@ -1,93 +0,0 @@ -import { TIDE } from "@/types" -import { getIDEDisplayName, useHover } from "@/lib" -import { - HStack, - MenuItem, - PlacementWithLogical, - Popover, - PopoverArrow, - PopoverContent, - PopoverTrigger, - Portal, - Text, - useColorModeValue, -} from "@chakra-ui/react" -import { ChevronRightIcon } from "@chakra-ui/icons" -import { IDEIcon } from "@/components" -import { useCallback, useEffect } from "react" - -export function IDEGroup({ - ides, - group, - disabled, - onItemClick, - placement, - offset, - onHoverChange, -}: { - ides?: TIDE[] - group: string - disabled?: boolean - onItemClick: (ide: TIDE["name"]) => void - placement?: PlacementWithLogical - offset?: [number, number] - onHoverChange?: (group: string, hover: boolean) => void -}) { - const [popoverHover, popoverRef] = useHover() - const [triggerHover, triggerRef] = useHover() - - useEffect(() => { - onHoverChange?.(group, popoverHover || triggerHover) - }, [popoverHover, triggerHover, onHoverChange, group]) - - return ( - - - - - {group} - - - - - - - - {ides?.map((ide) => ( - - ))} - - - - ) -} - -function IDEItem({ - disabled, - onItemClick, - ide, -}: { - ide: TIDE - onItemClick: (ide: TIDE["name"]) => void - disabled?: boolean -}) { - const menuHoverColor = useColorModeValue("gray.100", "gray.700") - - const onClick = useCallback(() => { - onItemClick(ide.name) - }, [onItemClick, ide]) - - return ( - }> - {getIDEDisplayName(ide)} - - ) -} diff --git a/desktop/src/components/IDEGroup/index.ts b/desktop/src/components/IDEGroup/index.ts deleted file mode 100644 index 6b5e7e1d7..000000000 --- a/desktop/src/components/IDEGroup/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./IDEGroup" diff --git a/desktop/src/components/IDEIcon/IDEIcon.tsx b/desktop/src/components/IDEIcon/IDEIcon.tsx deleted file mode 100644 index 18087e84b..000000000 --- a/desktop/src/components/IDEIcon/IDEIcon.tsx +++ /dev/null @@ -1,151 +0,0 @@ -import { - Box, - BoxProps, - Icon, - IconProps, - Image, - useColorMode, - useColorModeValue, - useToken, -} from "@chakra-ui/react" -import { HiBeaker } from "react-icons/hi2" -import { - CLionSvg, - CodiumSvg, - CursorSvg, - DataSpellSvg, - FleetSvg, - GolandSvg, - IntelliJSvg, - JupyterNotebookDarkSvg, - JupyterNotebookSvg, - NoneSvg, - NoneSvgDark, - PHPStormSvg, - PositronSvg, - PycharmSvg, - RStudioSvg, - RiderSvg, - RubyMineSvg, - RustRoverSvg, - VSCodeBrowser, - VSCodeInsidersSvg, - VSCodeSvg, - WebstormSvg, - WindsurfSvg, - AntigravitySvg, - BobSvg, - ZedDarkSvg, - ZedSvg, -} from "@/images" -import { TIDE } from "@/types" -import { useMemo } from "react" - -const SIZES: Record, IconProps> = { - sm: { - boxSize: 3, - padding: "1px", - }, - md: { - boxSize: 6, - padding: "3px", - }, -} - -const IDE_ICONS: Record = { - none: NoneSvg, - vscode: VSCodeSvg, - "vscode-insiders": VSCodeInsidersSvg, - openvscode: VSCodeBrowser, - intellij: IntelliJSvg, - goland: GolandSvg, - rustrover: RustRoverSvg, - pycharm: PycharmSvg, - phpstorm: PHPStormSvg, - clion: CLionSvg, - rubymine: RubyMineSvg, - rider: RiderSvg, - webstorm: WebstormSvg, - dataspell: DataSpellSvg, - fleet: FleetSvg, - jupyternotebook: JupyterNotebookSvg, - jupyternotebook_dark: JupyterNotebookDarkSvg, - cursor: CursorSvg, - positron: PositronSvg, - codium: CodiumSvg, - zed: ZedSvg, - zed_dark: ZedDarkSvg, - rstudio: RStudioSvg, - windsurf: WindsurfSvg, - antigravity: AntigravitySvg, - bob: BobSvg, -} - -type TIDEIconProps = Readonly<{ ide: TIDE; size?: "sm" | "md" }> & BoxProps -export function IDEIcon({ ide, size = "md", ...boxProps }: TIDEIconProps) { - const experimentalIconSizeProps = SIZES[size] - const primaryColorDarkToken = useColorModeValue("primary.800", "primary.400") - const primaryColorDark = useToken("colors", primaryColorDarkToken) - const primaryColorLightToken = useColorModeValue("primary.400", "primary.800") - const primaryColorLight = useToken("colors", primaryColorLightToken) - const backgroundColor = useColorModeValue("white", "gray.700") - const { colorMode } = useColorMode() - - const experimentalIconStylingProps = - size === "sm" - ? { - color: primaryColorDark, - } - : { - boxShadow: `inset 0px 0px 0px 1px ${primaryColorDark}55`, - background: - colorMode === "light" - ? `linear-gradient(135deg, ${primaryColorLight}55 50%, ${primaryColorDark}55, ${primaryColorDark}88)` - : `linear-gradient(135deg, ${primaryColorDark}55 50%, ${primaryColorLight}55, ${primaryColorLight}88)`, - color: `${primaryColorDark}CC`, - } - const fallbackIcon = colorMode === "light" ? NoneSvg : NoneSvgDark - - const icon = useMemo(() => { - if (colorMode === "light") { - return IDE_ICONS[ide.name!] ?? ide.icon - } else { - const darkIcon = IDE_ICONS[ide.name! + "_dark"] ?? ide.iconDark - if (darkIcon) { - return darkIcon - } - - // fall back to regular icon - return IDE_ICONS[ide.name!] ?? ide.icon - } - }, [colorMode, ide]) - - return ( - - - {ide.experimental && ( - <> - - - - )} - - ) -} diff --git a/desktop/src/components/IDEIcon/index.ts b/desktop/src/components/IDEIcon/index.ts deleted file mode 100644 index 643e45b1a..000000000 --- a/desktop/src/components/IDEIcon/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { IDEIcon } from "./IDEIcon" diff --git a/desktop/src/components/Layout/NavigationViewLayout.tsx b/desktop/src/components/Layout/NavigationViewLayout.tsx deleted file mode 100644 index 08c4891f6..000000000 --- a/desktop/src/components/Layout/NavigationViewLayout.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { Heading, HStack } from "@chakra-ui/react" -import { ReactNode } from "react" -import { exists } from "@/lib" -import { ToolbarTitle } from "./Toolbar" -import { TViewTitle } from "./types" - -type TNavigationViewLayoutProps = Readonly<{ title: TViewTitle | null; children?: ReactNode }> -export function NavigationViewLayout({ title, children }: TNavigationViewLayoutProps) { - return ( - <> - {exists(title) && ( - - - {exists(title.leadingAction) && title.leadingAction} - - {title.label} - - {exists(title.trailingAction) && title.trailingAction} - - - )} - {children} - - ) -} diff --git a/desktop/src/components/Layout/Notifications.tsx b/desktop/src/components/Layout/Notifications.tsx deleted file mode 100644 index ed036316f..000000000 --- a/desktop/src/components/Layout/Notifications.tsx +++ /dev/null @@ -1,192 +0,0 @@ -import { - Badge, - Box, - Button, - Center, - Divider, - HStack, - Heading, - IconButton, - Image, - Link, - LinkBox, - LinkOverlay, - Popover, - PopoverArrow, - PopoverBody, - PopoverContent, - PopoverHeader, - PopoverTrigger, - Portal, - Spinner, - Text, - VStack, - useColorModeValue, -} from "@chakra-ui/react" -import dayjs from "dayjs" -import { JSX, ReactNode, useMemo } from "react" -import { Link as RouterLink, To, useLocation } from "react-router-dom" -import { client } from "@/client/client" -import { TActionObj, useAllWorkspaceActions, useSettings } from "@/contexts" -import { Bell, CheckCircle, ExclamationCircle, ExclamationTriangle } from "@/icons" -import { getActionDisplayName, useUpdate } from "@/lib" -import { Ripple } from "../Animation" - -type TNotificationsProps = Readonly<{ - badgeNumber?: number - providerUpdates?: ReactNode - icon?: JSX.Element - getActionDestination: (action: TActionObj) => To -}> -export function Notifications({ - icon, - badgeNumber = 0, - providerUpdates, - getActionDestination, -}: TNotificationsProps) { - const location = useLocation() - const actions = useAllWorkspaceActions() - const backgroundColor = useColorModeValue("white", "gray.900") - const subheadingTextColor = useColorModeValue("gray.500", "gray.400") - const actionHoverColor = useColorModeValue("gray.100", "gray.700") - const hasActiveActions = actions.active.length > 0 - const settings = useSettings() - const { pendingUpdate, install: installUpdate, isInstalling, isInstallDisabled } = useUpdate() - - const combinedActions = useMemo(() => { - return [...actions.active, ...actions.history] - }, [actions.active, actions.history]) - - const maybeIconColor = useMemo(() => icon?.props.color, [icon]) - - return ( - - -
    - - {icon ? icon : } - {(pendingUpdate || badgeNumber !== 0) && ( - - {pendingUpdate ? 1 + badgeNumber : badgeNumber} - - )} - {hasActiveActions && } - - } - /> -
    -
    - - - - - Notifications - - {pendingUpdate && ( - - - {pendingUpdate.tag_name} is available - - See{" "} - client.openUrl(pendingUpdate.html_url)}> - release notes - - - - - - )} - - {combinedActions.length === 0 && badgeNumber === 0 && ( - No notifications - )} - - {providerUpdates && ( - <> - {providerUpdates} - - - )} - - {combinedActions.map((action) => ( - - {action.status === "pending" ? ( - settings.partyParrot ? ( - - ) : ( - - ) - ) : null} - {action.status === "success" && } - {action.status === "error" && } - {action.status === "cancelled" && } - - - - - {getActionDisplayName(action)} - - - {action.finishedAt !== undefined && ( - - {dayjs(action.finishedAt).fromNow()} - - )} - - - ))} - - - - - -
    - ) -} diff --git a/desktop/src/components/Layout/ProLayout.tsx b/desktop/src/components/Layout/ProLayout.tsx deleted file mode 100644 index ae0e5dbb0..000000000 --- a/desktop/src/components/Layout/ProLayout.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import { useBorderColor } from "@/Theme" -import { STATUS_BAR_HEIGHT } from "@/constants" -import { Box, Flex, HStack, useColorModeValue, useToken } from "@chakra-ui/react" -import { ReactNode } from "react" -import { StatusBar } from "./StatusBar" -import { Toolbar } from "./Toolbar" -import { isMacOS } from "@/lib" - -type TProLayoutProps = Readonly<{ - toolbarItems: ReactNode - statusBarItems: ReactNode - children: ReactNode -}> -export function ProLayout({ toolbarItems, statusBarItems, children }: TProLayoutProps) { - const contentBackgroundColor = useColorModeValue("white", "background.darkest") - const toolbarHeight = useToken("sizes", "10") - const statusBarHeight = useToken("sizes", "8") - const borderColor = useBorderColor() - - return ( - - - - - - {toolbarItems} - - - - {children} - - - {statusBarItems} - - - - - ) -} diff --git a/desktop/src/components/Layout/ProSwitcher.tsx b/desktop/src/components/Layout/ProSwitcher.tsx deleted file mode 100644 index f0486fc50..000000000 --- a/desktop/src/components/Layout/ProSwitcher.tsx +++ /dev/null @@ -1,340 +0,0 @@ -import { client } from "@/client/client" -import { WEBSITE_PRO_URL } from "@/client/repo" -import { useProInstances, useProviders, useSettings } from "@/contexts" -import { CheckCircle, CircleWithArrow, DevsyProBadge, ExclamationTriangle } from "@/icons" -import { - exists, - canHealthCheck as isNewProProvider, - useLoginProModal, - useReLoginProModal, -} from "@/lib" -import { Routes } from "@/routes.constants" -import { TProID, TProInstance, TProInstances, TProviderConfig } from "@/types" -import { useDeleteProviderModal } from "@/views/Providers/useDeleteProviderModal" -import { ChevronDownIcon, CloseIcon } from "@chakra-ui/icons" -import { - Box, - Button, - ButtonGroup, - HStack, - Heading, - Icon, - IconButton, - Link, - List, - ListItem, - Popover, - PopoverArrow, - PopoverBody, - PopoverContent, - PopoverHeader, - PopoverTrigger, - Portal, - Text, - Tooltip, - VStack, - useColorModeValue, -} from "@chakra-ui/react" -import dayjs from "dayjs" -import { Dispatch, ReactElement, SetStateAction, useEffect, useMemo, useState } from "react" -import { HiArrowRightOnRectangle, HiClock } from "react-icons/hi2" -import { useNavigate } from "react-router-dom" -import { IconTag } from "../Tag" - -type TProInstanceWithProvider = TProInstance & Readonly<{ providerConfig: TProviderConfig | null }> -export function ProSwitcher() { - const [[proInstances]] = useProInstances() - const { modal: loginProModal, handleOpenLogin: handleConnectClicked } = useLoginProModal() - const { modal: reLoginProModal, handleOpenLogin: handleReLoginClicked } = useReLoginProModal() - const [isDeleting, setIsDeleting] = useState(false) - - const backgroundColor = useColorModeValue("white", "gray.900") - const handleAnnouncementClicked = () => { - client.openUrl(WEBSITE_PRO_URL) - } - const { experimental_devsyPro } = useSettings() - const isProUnauthenticated = proInstances?.some(({ authenticated }) => !authenticated) - if (!experimental_devsyPro) { - return ( - - ) - } - - return ( - <> - - - - - - - - handleReLoginClicked({ host })} - emptyProInstances={} - /> - - - - {loginProModal} - {reLoginProModal} - - ) -} - -type TProPopoverContentProps = Readonly<{ - proInstances: TProInstances | undefined - emptyProInstances: ReactElement - setIsDeleting: Dispatch> - onConnect: VoidFunction - onReLogin: (host: string) => void -}> -function ProPopoverContent({ - proInstances, - emptyProInstances, - setIsDeleting, - onConnect, - onReLogin, -}: TProPopoverContentProps) { - const navigate = useNavigate() - const hoverBgColor = useColorModeValue("gray.100", "gray.700") - const [[providers]] = useProviders() - const { newProInstances, legacyProInstances } = useMemo(() => { - return ( - proInstances - ?.map((instance) => { - if (!instance.provider) { - return { ...instance, providerConfig: null } - } - const providerConfig = providers?.[instance.provider]?.config - if (!providerConfig) { - return { ...instance, providerConfig: null } - } - - return { ...instance, providerConfig } - }) - .reduce( - (acc, curr) => { - if (!curr.providerConfig) { - acc.legacyProInstances.push(curr) - - return acc - } - if (!isNewProProvider(curr.providerConfig)) { - acc.legacyProInstances.push(curr) - - return acc - } - - acc.newProInstances.push(curr) - - return acc - }, - { - newProInstances: [] as TProInstanceWithProvider[], - legacyProInstances: [] as TProInstanceWithProvider[], - } - ) ?? { - newProInstances: [] as TProInstanceWithProvider[], - legacyProInstances: [] as TProInstanceWithProvider[], - } - ) - }, [proInstances, providers]) - - return ( - <> - - - - Your Pro Instances - - Manage Devsy Pro - - - - } - /> - - - - - - {proInstances === undefined || (proInstances.length === 0 && emptyProInstances)} - {legacyProInstances.map((proInstance) => { - const host = proInstance.host - if (!host) { - return null - } - - return ( - onReLogin(host)} - /> - ) - })} - - - - {newProInstances.map(({ host, authenticated }) => { - if (!host) { - return null - } - - return ( - - - - ) - })} - - - - ) -} - -type TEmptyProInstancesProps = Readonly<{ - onConnect: VoidFunction -}> -function EmptyProInstances({ onConnect }: TEmptyProInstancesProps) { - return ( - - No Pro instances - - You don't have any Pro instances set up. Connect to an existing Instance or create a - new one.
    - client.openUrl(WEBSITE_PRO_URL)}> - Learn more - -
    - -
    - ) -} - -type TProInstaceRowProps = Omit & - Readonly<{ - host: TProID - onIsDeletingChanged: (isDeleting: boolean) => void - onLoginClicked?: VoidFunction - }> -function ProInstanceRow({ - host, - creationTimestamp, - onIsDeletingChanged, - authenticated, - onLoginClicked, -}: TProInstaceRowProps) { - const [, { disconnect }] = useProInstances() - const { - modal: deleteProviderModal, - open: openDeleteProviderModal, - isOpen, - } = useDeleteProviderModal(host, "Pro instance", "disconnect", () => disconnect.run({ id: host })) - useEffect(() => { - onIsDeletingChanged(isOpen) - // `onIsDeletingChanged` is expected to be a stable reference - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [isOpen]) - - return ( - <> - - - - {host} - {exists(authenticated) && ( - - ) : ( - - ) - } - label="" - paddingInlineStart="0" - info={authenticated ? "Authenticated" : "Not Authenticated"} - {...(authenticated ? {} : { onClick: onLoginClicked, cursor: "pointer" })} - /> - )} - - - {exists(creationTimestamp) && ( - } - label={dayjs(new Date(creationTimestamp)).format("MMM D, YY")} - info={`Created ${dayjs(new Date(creationTimestamp)).fromNow()}`} - /> - )} - - - - {exists(host) && ( - - } - /> - - )} - - - {deleteProviderModal} - - ) -} diff --git a/desktop/src/components/Layout/Sidebar.tsx b/desktop/src/components/Layout/Sidebar.tsx deleted file mode 100644 index 4befccd3a..000000000 --- a/desktop/src/components/Layout/Sidebar.tsx +++ /dev/null @@ -1,133 +0,0 @@ -import { useSystemTheme } from "@/lib/systemInfo" -import { - Box, - BoxProps, - Flex, - Grid, - HStack, - Link, - Text, - useColorMode, - useColorModeValue, - useToken, - VStack, -} from "@chakra-ui/react" -import { cloneElement, ReactElement, ReactNode } from "react" -import { LinkProps, NavLink as RouterLink } from "react-router-dom" -import { useSettings } from "@/contexts" -import { DevsyWordmark } from "@/icons" -import { useBorderColor } from "@/Theme" -import { DevsyOSSBadge } from "../DevsyOSSBadge" - -type TSidebarProps = Readonly<{ children?: readonly ReactElement[] }> & BoxProps -export function Sidebar({ children, ...boxProps }: TSidebarProps) { - const { colorMode } = useColorMode() - const systemTheme = useSystemTheme() - const borderColor = useBorderColor() - const backgroundColor = useColorModeValue("white", "black") - const alternativeBackgroundColor = useColorModeValue("gray.100", "gray.900") - const wordmarkColor = useColorModeValue("black", "white") - const isLeft = useSettings().sidebarPosition === "left" - const { transparency } = useSettings() - - const sharedBackgroundMaterialProps = { - "aria-hidden": true, - width: "full", - height: "full", - position: "absolute", - zIndex: -1, - } as const - - return ( - - - - - - - {children} - - - - - - {/* Background Material */} - {transparency ? ( - - ) : ( - - )} - - ) -} - -type TSidebarMenuProps = Pick & - Readonly<{ children?: ReactNode; icon: ReactElement }> -export function SidebarMenuItem({ to, children, icon: iconProps }: TSidebarMenuProps) { - const settings = useSettings() - const backgroundColorToken = useColorModeValue("gray.300", "gray.700") - const backgroundColor = useToken("colors", backgroundColorToken) - const borderColorToken = useColorModeValue("primary.600", "primary.600") - const borderColor = useToken("colors", borderColorToken) - const backgroundActiveColorToken = useColorModeValue("primary.500", "primary.700") - const backgroundActiveColor = useToken("colors", backgroundActiveColorToken) - const isLeft = settings.sidebarPosition === "left" - const icon = cloneElement(iconProps, { boxSize: 4 }) - - return ( - - ({ - ...(isActive - ? { - backgroundColor: backgroundActiveColor, - color: "white", - borderColor, - opacity: 1, - } - : {}), - })}> - {icon} - - {children} - - - ) -} diff --git a/desktop/src/components/Layout/StatusBar.tsx b/desktop/src/components/Layout/StatusBar.tsx deleted file mode 100644 index 3c9abc26c..000000000 --- a/desktop/src/components/Layout/StatusBar.tsx +++ /dev/null @@ -1,254 +0,0 @@ -import { CheckIcon, StarIcon } from "@chakra-ui/icons" -import { - BoxProps, - Button, - Checkbox, - HStack, - Icon, - IconButton, - Input, - Menu, - MenuButton, - MenuItem, - MenuList, - Modal, - ModalBody, - ModalCloseButton, - ModalContent, - ModalHeader, - ModalOverlay, - Text, - Tooltip, - useColorModeValue, - useDisclosure, -} from "@chakra-ui/react" -import { useMemo, useRef } from "react" -import { FaBug } from "react-icons/fa" -import { HiDocumentMagnifyingGlass, HiMagnifyingGlassPlus } from "react-icons/hi2" -import { client } from "@/client/client" -import { BINARY_NAME, GITHUB_REPO_URL, GITHUB_ISSUES_URL, WEBSITE_DOCS_URL } from "@/client/repo" -import { useChangeSettings } from "@/contexts" -import { Debug, useDebug } from "@/lib" -import { useArch, usePlatform } from "@/lib/systemInfo" -import { useVersion } from "@/lib/useVersion" - -export function StatusBar(boxProps: BoxProps) { - return ( - - ) -} - -function Version() { - const version = useVersion() - - return {version ?? "unknown version"} -} - -function Platform() { - const platform = usePlatform() - - return {platform ?? "unknown platform"} -} - -function Arch() { - const arch = useArch() - - return {arch ?? "unknown arch"} -} - -function ZoomMenu() { - const { settings, set } = useChangeSettings() - const zoomIcon = useMemo(() => { - return { icon: } - }, []) - const textColor = useColorModeValue("gray.900", "gray.300") - - return ( - - } - /> - - set("zoom", "sm")} {...(settings.zoom === "sm" ? zoomIcon : {})}> - Small - - set("zoom", "md")} {...(settings.zoom === "md" ? zoomIcon : {})}> - Regular - - set("zoom", "lg")} {...(settings.zoom === "lg" ? zoomIcon : {})}> - Large - - set("zoom", "xl")} {...(settings.zoom === "xl" ? zoomIcon : {})}> - Extra Large - - - - ) -} - -function GitHubStar() { - const iconColor = useStatusBarIconColor() - - return ( - - } - aria-label="Loving Devsy? Give us a star on GitHub" - onClick={() => client.openUrl(GITHUB_REPO_URL)} - /> - - ) -} - -function OSSDocs() { - const iconColor = useStatusBarIconColor() - - return ( - - } - aria-label="How to Devsy - Docs" - onClick={() => client.openUrl(WEBSITE_DOCS_URL)} - /> - - ) -} - -function OSSReportIssue() { - const iconColor = useStatusBarIconColor() - - return ( - - } - aria-label="Report an Issue" - onClick={() => client.openUrl(GITHUB_ISSUES_URL)} - /> - - ) -} - -function DebugMenu() { - const inputRef = useRef(null) - const debug = useDebug() - const { isOpen, onClose, onOpen: openModal } = useDisclosure() - - if (!debug.isEnabled) { - return null - } - - const handleMenuItemClicked = - (option: Parameters>[0]) => (e: React.MouseEvent) => { - Debug.toggle?.(option) - e.stopPropagation() - } - - const handleImportLinkClicked = () => { - const rawLink = inputRef.current?.value - if (!rawLink) { - return - } - const url = new URL(rawLink.replace(/#/g, "?")) - const workspaceUID = url.searchParams.get("workspace-uid") - const workspaceID = url.searchParams.get("workspace-id") - const host = url.searchParams.get(`${BINARY_NAME}-pro-host`) - const project = url.searchParams.get("project") - if (!workspaceUID || !workspaceID || !host || !project) { - console.error( - "Some parameters are missing for import", - url, - Array.from(url.searchParams.entries()) - ) - - return - } - client.emitEvent({ - type: "ImportWorkspace", - workspace_uid: workspaceUID, - workspace_id: workspaceID, - devsy_pro_host: host, - project, - options: {}, - }) - onClose() - } - - return ( - <> - - Debug - - - - Print command logs - - - - Print action logs - - - - Print workspace logs - - { - client.openDir("AppData") - e.stopPropagation() - }}> - Open app_dir - - { - openModal() - e.stopPropagation() - }}> - Open import tool - - - - - - - - Import workspace - - Paste a platform import link here - - - - - - - ) -} - -function useStatusBarIconColor() { - return useColorModeValue("iconColor", "gray.400") -} - -StatusBar.Version = Version -StatusBar.Platform = Platform -StatusBar.Arch = Arch -StatusBar.ZoomMenu = ZoomMenu -StatusBar.GitHubStar = GitHubStar -StatusBar.OSSDocs = OSSDocs -StatusBar.OSSReportIssue = OSSReportIssue -StatusBar.DebugMenu = DebugMenu diff --git a/desktop/src/components/Layout/Toolbar.tsx b/desktop/src/components/Layout/Toolbar.tsx deleted file mode 100644 index 2d14d8d3b..000000000 --- a/desktop/src/components/Layout/Toolbar.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { Box, BoxProps } from "@chakra-ui/react" -import { ReactNode, useEffect, useId } from "react" -import { useBorderColor } from "@/Theme" -import { useToolbar } from "@/contexts" - -export function Toolbar({ ...boxProps }: BoxProps) { - const borderColor = useBorderColor() - - return -} - -function Title() { - const { title } = useToolbar() - - return <>{title} -} - -function Actions() { - const { actions } = useToolbar() - - return <>{actions} -} - -Toolbar.Title = Title -Toolbar.Actions = Actions - -export function ToolbarTitle({ children }: Readonly<{ children: ReactNode }>) { - const { setTitle } = useToolbar() - - useEffect(() => { - setTitle(children) - }, [children, setTitle]) - - return null -} - -export function ToolbarActions({ children }: Readonly<{ children: ReactNode }>) { - const { addAction } = useToolbar() - const id = useId() - - useEffect(() => { - const removeActions = addAction(id, children) - - return removeActions - }, [children, addAction, id]) - - return null -} diff --git a/desktop/src/components/Layout/index.ts b/desktop/src/components/Layout/index.ts deleted file mode 100644 index 5a61ddbc8..000000000 --- a/desktop/src/components/Layout/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -export { NavigationViewLayout } from "./NavigationViewLayout" -export { Sidebar, SidebarMenuItem } from "./Sidebar" -export type { TViewTitle } from "./types" -export { Toolbar, ToolbarTitle, ToolbarActions } from "./Toolbar" -export { StatusBar } from "./StatusBar" -export { Notifications } from "./Notifications" -export { ProSwitcher } from "./ProSwitcher" -export { ProLayout } from "./ProLayout" diff --git a/desktop/src/components/Layout/types.ts b/desktop/src/components/Layout/types.ts deleted file mode 100644 index 89da44974..000000000 --- a/desktop/src/components/Layout/types.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { ReactElement } from "react" - -export type TViewTitle = Readonly<{ - label: string - priority: "high" | "regular" - leadingAction?: ReactElement - trailingAction?: ReactElement -}> diff --git a/desktop/src/components/ListSelection/ListSelection.tsx b/desktop/src/components/ListSelection/ListSelection.tsx deleted file mode 100644 index 15d56be0b..000000000 --- a/desktop/src/components/ListSelection/ListSelection.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import { Pause, Trash } from "@/icons" -import { Button, Checkbox, FormLabel, HStack } from "@chakra-ui/react" -import { ThemeTypings } from "@chakra-ui/styled-system" -import { ReactElement, useMemo } from "react" - -type TSelectionAction = { - label: string - icon?: ReactElement - perform?: () => unknown - style?: { - colorScheme?: ThemeTypings["colorSchemes"] - } -} - -type TListSelectionProps = { - totalAmount: number - selectionAmount: number - handleSelectAllClicked?: () => void - selectionActions?: TSelectionAction[] -} - -export function ListSelection({ - totalAmount, - selectionAmount, - handleSelectAllClicked, - selectionActions, -}: TListSelectionProps) { - return ( - - 0 && selectionAmount < totalAmount} - isChecked={totalAmount > 0 && selectionAmount === totalAmount} - onChange={handleSelectAllClicked} - /> - - {selectionAmount === 0 ? "Select all" : ` ${selectionAmount} of ${totalAmount} selected`} - - {selectionAmount > 0 && ( - <> - {selectionActions?.map((action, index) => ( - - ))} - - )} - - ) -} - -type TWorkspaceListSelectionProps = Omit & { - handleDeleteClicked?: () => void - handleStopAllClicked?: () => void -} - -export function WorkspaceListSelection({ - handleDeleteClicked, - handleStopAllClicked, - ...props -}: TWorkspaceListSelectionProps) { - const actions: TSelectionAction[] = useMemo( - () => [ - { - label: "Stop", - icon: , - perform: handleStopAllClicked, - }, - { - label: "Delete", - icon: , - perform: handleDeleteClicked, - style: { - colorScheme: "red", - }, - }, - ], - [handleStopAllClicked, handleDeleteClicked] - ) - - return -} diff --git a/desktop/src/components/ListSelection/index.ts b/desktop/src/components/ListSelection/index.ts deleted file mode 100644 index b616b7366..000000000 --- a/desktop/src/components/ListSelection/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./ListSelection" diff --git a/desktop/src/components/Section/CollapsibleSection.tsx b/desktop/src/components/Section/CollapsibleSection.tsx deleted file mode 100644 index 5dc59cbed..000000000 --- a/desktop/src/components/Section/CollapsibleSection.tsx +++ /dev/null @@ -1,118 +0,0 @@ -import { Box, BoxProps, Button, ButtonProps, Icon, useDisclosure } from "@chakra-ui/react" -import { AnimatePresence, motion, Variants } from "framer-motion" -import { forwardRef, ReactNode, useLayoutEffect, useRef } from "react" -import { AiOutlineCaretRight } from "react-icons/ai" - -const variants: Variants = { - enter: { - opacity: 1, - height: "auto", - overflow: "revert", - transition: { - opacity: { duration: 0.2 }, - height: { duration: 0.3 }, - }, - }, - exit: { - opacity: 0, - height: 0, - overflow: "hidden", - transition: { - opacity: { duration: 0.3 }, - height: { duration: 0.2 }, - }, - }, -} - -type TCollapsibleSectionProps = Readonly<{ - title: ReactNode | ((isOpen: boolean) => ReactNode) - children: ReactNode - isOpen?: boolean - isDisabled?: boolean - showIcon?: boolean - headerProps?: ButtonProps - contentProps?: BoxProps - onOpenChange?: (isOpen: boolean, element: HTMLDivElement | null) => void -}> -export const CollapsibleSection = forwardRef( - function CollapsibleSection( - { - title, - headerProps, - contentProps, - children, - onOpenChange, - isOpen: isOpenProp = false, - isDisabled = false, - showIcon, - }, - ref - ) { - const motionRef = useRef(null) - const { isOpen, onOpen, onClose, getDisclosureProps, getButtonProps } = useDisclosure() - const buttonProps = getButtonProps() - const disclosureProps = getDisclosureProps() - - useLayoutEffect(() => { - if (isOpenProp) { - onOpen() - } else { - onClose() - } - }, [isOpenProp, onClose, onOpen]) - - return ( - - - - {isOpen && ( - { - if (definition === "exit") { - onOpenChange?.(false, motionRef.current) - } else { - onOpenChange?.(true, motionRef.current) - } - }} - style={{ - display: "block", - }}> - - {children} - - - )} - - - ) - } -) diff --git a/desktop/src/components/Section/index.ts b/desktop/src/components/Section/index.ts deleted file mode 100644 index 11431fe6c..000000000 --- a/desktop/src/components/Section/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { CollapsibleSection } from "./CollapsibleSection" diff --git a/desktop/src/components/Steps/Steps.tsx b/desktop/src/components/Steps/Steps.tsx deleted file mode 100644 index 099917a75..000000000 --- a/desktop/src/components/Steps/Steps.tsx +++ /dev/null @@ -1,121 +0,0 @@ -import { Box, Button, HStack, useColorModeValue } from "@chakra-ui/react" -import { - createContext, - ReactNode, - useCallback, - useContext, - useEffect, - useId, - useMemo, - useState, -} from "react" - -type TStepContext = Readonly<{ - addStep: (id: string, step: ReactNode) => void -}> -type TStep = Readonly<{ - id: string - node: ReactNode -}> - -const StepsContext = createContext(null!) -type TStepsProps = Readonly<{ onFinish?: VoidFunction; finishText?: string; children: ReactNode }> -export function Steps({ onFinish, finishText, children }: TStepsProps) { - const [steps, setSteps] = useState([]) - // Steps are 0 based for easier array indexing - const [currentStep, setCurrentStep] = useState(0) - const stepIndicatorInactiveColor = useColorModeValue("gray.200", "gray.700") - const stepIndicatorActiveColor = useColorModeValue("primary.600", "primary.400") - - const isLastStep = useMemo(() => currentStep >= steps.length - 1, [currentStep, steps.length]) - const isFirstStep = useMemo(() => currentStep <= 0, [currentStep]) - - const addStep = useCallback((id, node) => { - setSteps((steps) => { - const newSteps = steps.slice() - const index = newSteps.findIndex((a) => a.id === id) - if (index !== -1) { - newSteps.splice(index, 1, { id, node: node }) - } else { - newSteps.push({ id, node: node }) - } - - return newSteps - }) - - return () => { - setSteps((steps) => steps.filter((a) => a.id !== id)) - } - }, []) - - const handleBackClicked = useCallback(() => { - if (isFirstStep) { - return - } - - setCurrentStep((currentStep) => currentStep - 1) - }, [isFirstStep]) - - const handleNextClicked = useCallback(() => { - if (isLastStep) { - onFinish?.() - - return - } - - setCurrentStep((currentStep) => currentStep + 1) - }, [isLastStep, onFinish]) - - const value = useMemo(() => ({ addStep }), [addStep]) - - return ( - - <> - {children} - - {steps[currentStep]?.node} - - - - - {steps.map((_, i) => ( - - ))} - - - - - - ) -} - -type TStepProps = Readonly<{ children: ReactNode }> -export function Step({ children }: TStepProps) { - const { addStep } = useContext(StepsContext) - const id = useId() - - useEffect(() => { - const removeStep = addStep(id, children) - - return removeStep - }, [children, addStep, id]) - - return null -} diff --git a/desktop/src/components/Steps/index.ts b/desktop/src/components/Steps/index.ts deleted file mode 100644 index 04039b211..000000000 --- a/desktop/src/components/Steps/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Steps, Step } from "./Steps" diff --git a/desktop/src/components/Tag/IconTag.tsx b/desktop/src/components/Tag/IconTag.tsx deleted file mode 100644 index e3596500b..000000000 --- a/desktop/src/components/Tag/IconTag.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { ButtonProps, Tag, TagLabel, TagProps, Tooltip } from "@chakra-ui/react" -import { ReactElement, ReactNode, cloneElement } from "react" - -type TIconTagProps = Readonly<{ - icon: ReactElement - label: string - info?: ReactNode -}> & - Pick & - TagProps - -export function IconTag({ icon: iconProps, label, info, onClick, ...tagProps }: TIconTagProps) { - const icon = cloneElement(iconProps, { boxSize: 4 }) - - return ( - - - {icon} - {label} - - - ) -} diff --git a/desktop/src/components/Tag/index.ts b/desktop/src/components/Tag/index.ts deleted file mode 100644 index 9e5704572..000000000 --- a/desktop/src/components/Tag/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { IconTag } from "./IconTag" diff --git a/desktop/src/components/Terminal/Terminal.tsx b/desktop/src/components/Terminal/Terminal.tsx deleted file mode 100644 index fc68c1d4c..000000000 --- a/desktop/src/components/Terminal/Terminal.tsx +++ /dev/null @@ -1,254 +0,0 @@ -import { Box, useColorModeValue, useToken } from "@chakra-ui/react" -import { css } from "@emotion/react" -import React, { - forwardRef, - useEffect, - useImperativeHandle, - useLayoutEffect, - useMemo, - useRef, -} from "react" -import { ITerminalAddon, ITheme as IXTermTheme, Terminal as XTermTerminal } from "@xterm/xterm" -import { FitAddon } from "@xterm/addon-fit" -import { exists, remToPx } from "@/lib" - -type TTerminalRef = Readonly<{ - clear: VoidFunction - write: (data: string) => void - writeln: (data: string) => void - highlight: ( - row: number, - col: number, - len: number, - color: string, - invertText: boolean - ) => (() => void) | undefined - getTerminal: () => XTermTerminal | null -}> -type TTerminalProps = Readonly<{ - fontSize: string - borderRadius?: string - onResize?: (cols: number, rows: number) => void -}> -export type TTerminal = TTerminalRef - -export const Terminal = forwardRef(function T( - { fontSize, onResize, borderRadius }, - ref -) { - const containerRef = useRef(null) - const terminalRef = useRef(null) - const termFitRef = useRef(null) - - const backgroundColorToken = useColorModeValue("gray.900", "background.darkest") - const backgroundColor = useToken("colors", backgroundColorToken) - const textColor = useToken("colors", "gray.100") - - const scrollBarThumbToken = useColorModeValue("gray.500", "gray.200") - const scrollBarThumbColor = useToken("colors", scrollBarThumbToken) - - const selectionBackgroundToken = useColorModeValue("gray.600", "gray.600") - const selectionBackgroundColor = useToken("colors", selectionBackgroundToken) - - const terminalTheme = useMemo>( - () => ({ - background: backgroundColor, - foreground: textColor, - selectionBackground: selectionBackgroundColor, - }), - [backgroundColor, selectionBackgroundColor, textColor] - ) - - useLayoutEffect(() => { - if (!exists(terminalRef.current)) { - const terminal = new XTermTerminal({ - convertEol: true, - scrollback: 25_000, - theme: terminalTheme, - allowProposedApi: true, - cursorStyle: "underline", - disableStdin: true, - cursorBlink: false, - fontSize: remToPx(fontSize), - fontFamily: - '"JetBrains Mono", "SF Mono", Consolas, "Ubuntu Mono", "DejaVu Sans Mono", "Liberation Mono", monospace', - }) - terminalRef.current = terminal - - terminal.attachCustomKeyEventHandler((event) => { - return !(event.type === "keydown" && event.key === "c" && event.ctrlKey) - }) - - const loadAddon = ( - AddonClass: new () => T, - ref: React.MutableRefObject - ) => { - const addon = new AddonClass() - ref.current = addon - terminal.loadAddon(addon) - - return addon - } - - const termFit = loadAddon(FitAddon, termFitRef) - - // Perform initial fit. Dimensions are only available after the terminal has been rendered once. - const disposable = terminal.onRender(() => { - if (termFit.proposeDimensions()) { - termFit.fit() - disposable.dispose() - } - }) - - terminal.open(containerRef.current!) - - // Clean up aaaall the things :) - return () => { - disposable.dispose() - - termFitRef.current?.dispose() - termFitRef.current = null - - terminalRef.current?.dispose() - terminalRef.current = null - } - } - - // Don't initialize more than once! Use imperative api to update terminal state - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) - - // Apply outer resize handler to the terminal here. - // Terminal should be guaranteed to be present by the time we get here. - useEffect(() => { - if (!onResize) { - return - } - - const disposable = terminalRef.current?.onResize((event) => { - onResize(event.cols, event.rows) - }) - - return () => { - disposable?.dispose() - } - }, [onResize]) - - useEffect(() => { - const resizeHandler = () => { - try { - termFitRef.current?.fit() - } catch { - /* ignore */ - } - } - window.addEventListener("resize", resizeHandler, true) - - return () => window.removeEventListener("resize", resizeHandler, true) - }, []) - - useEffect(() => { - if (exists(terminalRef.current?.options.theme)) { - terminalRef.current.options.theme = terminalTheme - } - }, [terminalTheme]) - - useEffect(() => { - if (exists(terminalRef.current?.options.fontSize)) { - terminalRef.current.options.fontSize = remToPx(fontSize) - } - }, [fontSize]) - - useImperativeHandle(ref, () => { - return { - clear() { - terminalRef.current?.clear() - }, - write(data) { - terminalRef.current?.write(data) - termFitRef.current?.fit() - }, - writeln(data) { - terminalRef.current?.writeln(data) - termFitRef.current?.fit() - }, - highlight(row: number, startCol: number, len: number, color: string, invertText: boolean) { - const terminal = terminalRef.current - - if (!terminal) { - return undefined - } - - const rowRelative = -terminal.buffer.active.baseY - terminal.buffer.active.cursorY + row - - const marker = terminal.registerMarker(rowRelative) - const decoration = terminal.registerDecoration({ - marker, - x: startCol, - width: len, - backgroundColor: color, - foregroundColor: invertText ? "#000000" : "#FFFFFF", - layer: "top", - overviewRulerOptions: { - color: color, - }, - }) - - return () => { - marker.dispose() - decoration?.dispose() - } - }, - getTerminal() { - return terminalRef.current - }, - } - }, [terminalRef]) - - return ( - - - - ) -}) diff --git a/desktop/src/components/Terminal/TerminalSearchBar.tsx b/desktop/src/components/Terminal/TerminalSearchBar.tsx deleted file mode 100644 index 64b43ccc1..000000000 --- a/desktop/src/components/Terminal/TerminalSearchBar.tsx +++ /dev/null @@ -1,181 +0,0 @@ -import { - Box, - HStack, - IconButton, - Input, - InputGroup, - InputLeftElement, - InputRightElement, - Tooltip, - useColorModeValue, -} from "@chakra-ui/react" -import { ArrowDown, ArrowUp, MatchCase, Search, WholeWord } from "@/icons" -import { ReactElement, useEffect, useRef, useState } from "react" -import { TSearchOptions } from "@/components/Terminal/useTerminalSearch" - -type TTerminalSearchBarProps = { - prevSearchResult: VoidFunction - nextSearchResult: VoidFunction - totalSearchResults: number - activeSearchResult: number - onUpdateSearchOptions: (searchOptions: TSearchOptions) => void - paddingX?: number - paddingY?: number -} - -export function TerminalSearchBar({ - prevSearchResult, - nextSearchResult, - totalSearchResults, - activeSearchResult, - onUpdateSearchOptions, - paddingY, - paddingX, -}: TTerminalSearchBarProps) { - const bgColor = useColorModeValue("white", "gray.800") - const [searchString, setSearchString] = useState(undefined) - const [debouncedSearchString, setDebouncedSearchString] = useState(undefined) - const [caseSensitive, setCaseSensitive] = useState(false) - const [wholeWordSearch, setWholeWordSearch] = useState(false) - - const searchInputRef = useRef(null) - - // Debounce to prevent stutter when having a huge amount of results. - useEffect(() => { - // Sneaky heuristic: - // If we have more than two characters, we're likely to have a more sane amount of results, so we can skip debouncing. - const len = searchString?.length ?? 0 - if (len > 2) { - setDebouncedSearchString(searchString) - - return - } - - const timeout = setTimeout(() => { - setDebouncedSearchString(searchString) - }, 200) - - return () => clearTimeout(timeout) - }, [searchString]) - - // Pass on the search options to the outside world. We do it like this so the debouncing works nicely. - useEffect(() => { - onUpdateSearchOptions({ searchString: debouncedSearchString, caseSensitive, wholeWordSearch }) - }, [debouncedSearchString, wholeWordSearch, caseSensitive, onUpdateSearchOptions]) - - return ( - - - searchInputRef.current?.focus()}> - - - { - if (e.key === "Enter") { - if (e.shiftKey) { - prevSearchResult() - } else { - nextSearchResult() - } - } - }} - onChange={(e) => { - setSearchString(e.target.value ? e.target.value : undefined) - }} - /> - - - } - value={caseSensitive} - setValue={setCaseSensitive} - /> - } - value={wholeWordSearch} - setValue={setWholeWordSearch} - /> - - - - - - {totalSearchResults > 0 ? ( - - {activeSearchResult + 1} of {totalSearchResults} - - ) : searchString ? ( - - 0 of 0 - - ) : ( - <> - )} - - - - } - /> - - - - } - /> - - - ) -} - -function ToggleButton({ - label, - icon, - value, - setValue, -}: { - label: string - icon: ReactElement | undefined - value: boolean - setValue: (value: boolean) => void -}) { - const hoverBgColor = useColorModeValue("gray.100", "gray.700") - - return ( - - setValue(!value)} - /> - - ) -} diff --git a/desktop/src/components/Terminal/index.ts b/desktop/src/components/Terminal/index.ts deleted file mode 100644 index 783aaa19c..000000000 --- a/desktop/src/components/Terminal/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./Terminal" -export * from "./useStreamingTerminal" -export * from "./TerminalSearchBar" diff --git a/desktop/src/components/Terminal/useStreamingTerminal.tsx b/desktop/src/components/Terminal/useStreamingTerminal.tsx deleted file mode 100644 index 839cc85ab..000000000 --- a/desktop/src/components/Terminal/useStreamingTerminal.tsx +++ /dev/null @@ -1,163 +0,0 @@ -import dayjs from "dayjs" -import { Theme, useToken } from "@chakra-ui/react" -import React, { useCallback, useMemo, useRef } from "react" -import { TStreamEventListenerFn } from "@/client" -import { TLogOutput } from "@/types" -import { Terminal, TTerminal } from "./Terminal" -import { TSearchOptions, useTerminalSearch } from "@/components/Terminal/useTerminalSearch" - -export function useStreamingTerminal({ - fontSize, - borderRadius, - searchOptions, -}: - | { - fontSize?: keyof Theme["fontSizes"] - borderRadius?: keyof Theme["radii"] - searchOptions?: TSearchOptions - } - | undefined = {}) { - const terminalRef = useRef(null) - - const { - internals: { searchStateRef, debounceSearchResults, resetSearch, onResize }, - searchApi, - } = useTerminalSearch(terminalRef, searchOptions) - - const fontSizeToken = useToken( - "fontSizes", - useMemo(() => fontSize ?? "md", [fontSize]) - ) - - const borderRadiusToken = useToken( - "radii", - useMemo(() => borderRadius ?? "md", [borderRadius]) - ) - - const terminal = useMemo( - () => ( - - ), - [fontSizeToken, onResize, borderRadiusToken] - ) - - const connectStream = useCallback( - (event) => { - switch (event.type) { - case "data": { - if (event.data.message === undefined) { - return - } - - const formattedLine = formatLine(event.data) - terminalRef.current?.writeln(formattedLine.ansi) - - searchStateRef.current.preWrappedLines = undefined - searchStateRef.current.searchableLines.push(...processInputLine(formattedLine.plain)) - - debounceSearchResults(searchStateRef.current.searchOptions) - - break - } - case "error": { - if (event.error.message === undefined) { - return - } - - const formattedLine = formatLine(event.error) - terminalRef.current?.writeln(formattedLine.ansi) - - searchStateRef.current.preWrappedLines = undefined - searchStateRef.current.searchableLines.push(...processInputLine(formattedLine.plain)) - - debounceSearchResults(searchStateRef.current.searchOptions) - - break - } - } - }, - [terminalRef, searchStateRef, debounceSearchResults] - ) - - const clear = useCallback(() => { - resetSearch() - terminalRef.current?.clear() - }, [terminalRef, resetSearch]) - - return { - terminal, - connectStream, - clear, - search: searchApi, - } -} - -function processInputLine(line: string) { - // Default tabStopWidth is 8. - const withoutTabs = line.replaceAll(/\t/g, " ".repeat(8)) - - const subLines = withoutTabs.split(/\r\n|\n/) - - return subLines.map((sl) => { - const splitByCR = sl.split("\r") - - return splitByCR[splitByCR.length - 1]! - }) -} - -const ANSI_COLOR = { - Reset: "0", - White: "97", - BrightCyan: "96", - BrightMagenta: "95", - BrightBlue: "94", - BrightYellow: "93", - BrightGreen: "92", - BrightRed: "91", - BrightBlack: "90", - - DarkWhite: "37", - DarkCyan: "36", - DarkMagenta: "35", - DarkBlue: "34", - DarkYellow: "33", - DarkGreen: "32", - DarkRed: "31", - Black: "30", -} -const ANSI_TEXT = { - Bold: "1", - Underline: "4", - NoUnderline: "24", - Reverse: "7", - NoReverse: "27", -} - -const LOG_COLORS = { - panic: ANSI_COLOR.DarkMagenta, - fatal: ANSI_COLOR.DarkRed, - error: ANSI_COLOR.BrightRed, - warn: ANSI_COLOR.DarkYellow, - info: ANSI_COLOR.BrightBlue, - debug: ANSI_COLOR.BrightGreen, -} - -function formatLine({ level, message, time }: TLogOutput) { - let levelColor = ANSI_COLOR.White - if (level in LOG_COLORS) { - levelColor = LOG_COLORS[level as keyof typeof LOG_COLORS] - } - - const formattedTime = dayjs(time).format("HH:mm:ss") - - const date = `\x1b[${ANSI_COLOR.DarkWhite}m[${formattedTime}]` - const prefix = `\x1b[${ANSI_TEXT.Bold};${levelColor}m${level}` - const data = `\x1b[${ANSI_COLOR.Reset}m${message}` - - return { ansi: `${date} ${prefix} ${data}`, plain: `[${formattedTime}] ${level} ${message}` } -} diff --git a/desktop/src/components/Terminal/useTerminalSearch.tsx b/desktop/src/components/Terminal/useTerminalSearch.tsx deleted file mode 100644 index ba27e5b3c..000000000 --- a/desktop/src/components/Terminal/useTerminalSearch.tsx +++ /dev/null @@ -1,406 +0,0 @@ -import React, { useCallback, useEffect, useRef, useState } from "react" -import { TTerminal } from "@/components" - -export type TSearchOptions = { - searchString?: string - caseSensitive?: boolean - wholeWordSearch?: boolean -} - -type TSearchResult = [row: number, col: number, len: number] - -type TDisplayLine = { - index: number - text: string - inputLine: number - startCol: number - endCol: number -} - -type THighlight = { - displayRow: number - - // Bounds of the highlight within a row. - startCol: number - endCol: number - - // Which search result this highlight is attached to. - resultIndex: number -} - -type TDisplayLineMap = { [key: number]: TDisplayLine[] } - -// Used for keeping track of anchors/jump points in the wrapped lines to jump to for any given search result. -type TJumpMap = { [resultIndex: number]: number } - -type TSearchState = { - searchableLines: string[] - disposables: VoidFunction[] - searchOptions: TSearchOptions | undefined - jumpMap: TJumpMap - debounce: number | undefined - activeSearchResult: number - preWrappedLines: TDisplayLineMap | undefined - searchResults: TSearchResult[] - highlights: THighlight[] -} - -export function useTerminalSearch( - terminalRef: React.MutableRefObject, - searchOptions?: TSearchOptions -) { - const [totalSearchResults, setTotalSearchResults] = useState(-1) - const [activeSearchResult, setActiveSearchResult] = useState(0) - - // We have to exercise caution not to re-generate connectStream, - // so we have to store a lot of state outside the usual mechanisms. - // Otherwise, we will make the terminal flicker. - - const searchStateRef = useRef({ - searchableLines: [], - disposables: [], - searchOptions, - jumpMap: {}, - debounce: undefined, - activeSearchResult: 0, - preWrappedLines: undefined, - searchResults: [], - highlights: [], - }) - - const clearDisposables = useCallback(() => { - const toClear = searchStateRef.current.disposables - toClear.forEach((disposable) => disposable()) - searchStateRef.current.disposables = [] - }, [searchStateRef]) - - const repaintHighlights = useCallback( - (highlights: THighlight[]) => { - const terminal = terminalRef.current - const displayLines = searchStateRef.current.preWrappedLines - const searchResults = searchStateRef.current.searchResults - - if (!displayLines || !terminal || !searchResults.length) { - return - } - - searchStateRef.current.highlights = highlights - - for (const highlight of highlights) { - const isActive = highlight.resultIndex === searchStateRef.current.activeSearchResult - - const disposable = terminal.highlight( - highlight.displayRow, - highlight.startCol, - highlight.endCol - highlight.startCol, - isActive ? "#E4ADFF" : "#8E00EB", - isActive - ) - - if (disposable) { - searchStateRef.current.disposables.push(disposable) - } - } - }, - [searchStateRef, terminalRef] - ) - - // When the terminal is resized, we need to re-calculate the highlights and jump anchors, - // as these have to be positioned per wrapped line. - const onResize = useCallback( - (cols: number) => { - const displayLines = wrapLines(searchStateRef.current.searchableLines, cols) - searchStateRef.current.preWrappedLines = displayLines - - const [highlights, jumpMap] = generateHighlights( - searchStateRef.current.searchResults, - displayLines - ) - - searchStateRef.current.jumpMap = jumpMap - - clearDisposables() - repaintHighlights(highlights) - }, - [repaintHighlights, clearDisposables] - ) - - // Currently we kind of have to split the state for the active search result to allow re-rendering - // but also to prevent a change of the connectStream function, so this is a setter that handles both ends. - const changeActiveSearchResult = useCallback( - (result: number, repaint?: boolean) => { - searchStateRef.current.activeSearchResult = result - setActiveSearchResult(result) - if (repaint) { - clearDisposables() - repaintHighlights(searchStateRef.current.highlights) - } - }, - [searchStateRef, repaintHighlights, clearDisposables, setActiveSearchResult] - ) - - const jumpToResult = useCallback( - (resultIndex: number, repaint?: boolean) => { - changeActiveSearchResult(resultIndex, repaint) - const jumpIndex = searchStateRef.current.jumpMap[resultIndex] - if (jumpIndex != null) { - terminalRef.current?.getTerminal()?.scrollToLine(jumpIndex) - } - }, - [terminalRef, searchStateRef, changeActiveSearchResult] - ) - - const jumpNext = useCallback(() => { - if (totalSearchResults <= 1) { - return - } - - const nextIndex = wrapNumber(searchStateRef.current.activeSearchResult + 1, totalSearchResults) - jumpToResult(nextIndex, true) - }, [totalSearchResults, jumpToResult, searchStateRef]) - - const jumpPrev = useCallback(() => { - if (totalSearchResults <= 1) { - return - } - - const prevIndex = wrapNumber(searchStateRef.current.activeSearchResult - 1, totalSearchResults) - - jumpToResult(prevIndex, true) - }, [totalSearchResults, jumpToResult, searchStateRef]) - - const performSearch = useCallback( - (opts: TSearchOptions | undefined, jump?: boolean) => { - clearDisposables() - - const terminal = terminalRef.current - const inputLines = searchStateRef.current.searchableLines - - if (!terminal || !opts?.searchString || !inputLines.length) { - setTotalSearchResults(-1) - searchStateRef.current.highlights = [] - searchStateRef.current.searchResults = [] - - return - } - - const results = (searchStateRef.current.searchResults = search(inputLines, opts)) - setTotalSearchResults(results.length) - - if (!results.length) { - searchStateRef.current.highlights = [] - searchStateRef.current.searchResults = [] - - return - } - - // We need to calculate wrapped lines: - // xterm internally treats lines that get wrapped as seperate lines & uses these for navigation. - // Did not find a reasonable way to extract these from xterm, so we do it ourselves. - let displayLines = searchStateRef.current.preWrappedLines - - // Optimization: Don't calculate the wrapping if we've done it before for the current set of lines. - // Requires the consumer of this API to properly reset the preWrappedLines when it feeds in new lines. - if (!displayLines) { - searchStateRef.current.preWrappedLines = displayLines = wrapLines( - inputLines, - terminal.getTerminal()?.cols ?? 0 - ) - } - - searchStateRef.current.preWrappedLines = displayLines - - const [highlights, jumpMap] = generateHighlights(results, displayLines) - - searchStateRef.current.jumpMap = jumpMap - - if (jump) { - jumpToResult(0) - } - - repaintHighlights(highlights) - }, - [searchStateRef, terminalRef, jumpToResult, clearDisposables, repaintHighlights] - ) - - // This is used for a search while the terminal still gets new input. - // Since it is likely that there are going to be many new lines within a short timeframe, - // we debounce the search on new input so we don't calculate results uselessly. - const debounceSearchResults = useCallback( - (opts: TSearchOptions | undefined) => { - if (searchStateRef.current.debounce != null) { - clearTimeout(searchStateRef.current.debounce) - } - - const timeout = setTimeout(() => { - if (searchStateRef.current.debounce === timeout) { - searchStateRef.current.debounce = undefined - } - performSearch(opts) - }, 100) as unknown as number - - searchStateRef.current.debounce = timeout - }, - [performSearch, searchStateRef] - ) - - const resetSearch = useCallback(() => { - // Remove all dangling highlights. - clearDisposables() - - // Reset internal search state. - searchStateRef.current = { - // We keep the current search options because these are synced from the outside. - searchOptions: searchStateRef.current.searchOptions, - searchableLines: [], - disposables: [], - jumpMap: {}, - debounce: undefined, - activeSearchResult: 0, - preWrappedLines: undefined, - searchResults: [], - highlights: [], - } - - // Reset externally available state. - changeActiveSearchResult(0) - setTotalSearchResults(-1) - }, [setTotalSearchResults, changeActiveSearchResult, searchStateRef, clearDisposables]) - - // Synchronize the search options with the consuming components and re-trigger the search when they change. - useEffect(() => { - searchStateRef.current.searchOptions = searchOptions - - performSearch(searchOptions, true) - }, [searchOptions, performSearch]) - - return { - internals: { - searchStateRef, - debounceSearchResults, - resetSearch, - onResize, - }, - searchApi: { - nextSearchResult: jumpNext, - prevSearchResult: jumpPrev, - totalSearchResults, - activeSearchResult, - }, - } -} - -function search(inputLines: string[], opts: TSearchOptions) { - let pattern = escapeRegex(opts.searchString!) - - if (opts.wholeWordSearch) { - pattern = `\\b${pattern}\\b` - } - - return inputLines.reduce((accum, line, index) => { - const regex = new RegExp(pattern, opts.caseSensitive ? "g" : "ig") - - let match - - while ((match = regex.exec(line)) && match[0]) { - accum.push([index, match.index, match[0].length]) - } - - return accum - }, [] as TSearchResult[]) -} - -/** - * Generates one or more highlight specification per search result. - * One search result can produce multiple highlights as they can get wrapped and we have to instantiate - * decorations per wrapped line. - */ -function generateHighlights( - results: TSearchResult[], - displayLinesMap: TDisplayLineMap -): [THighlight[], TJumpMap] { - const highlights: THighlight[] = [] - const jumpMap: TJumpMap = {} - - results.forEach((result, resultIndex) => { - const [inputLine, start, length] = result - const end = start + length - const displayLines = displayLinesMap[inputLine]! - - displayLines.forEach((displayLine) => { - const overlapStart = Math.max(start, displayLine.startCol) - const overlapEnd = Math.min(end, displayLine.endCol) - - if (overlapStart < overlapEnd) { - if (jumpMap[resultIndex] == null) { - jumpMap[resultIndex] = displayLine.index - } - - highlights.push({ - displayRow: displayLine.index, - startCol: overlapStart - displayLine.startCol, - endCol: overlapEnd - displayLine.startCol, - resultIndex, - }) - } - }) - }) - - return [highlights, jumpMap] -} - -/** - * Emulates the wrapping of lines by max columns as it is done in the terminal. - */ -function wrapLines(inputLines: string[], cols: number) { - const result: TDisplayLineMap = {} - - let count = 0 - - for (let inputLineIndex = 0; inputLineIndex < inputLines.length; inputLineIndex++) { - const line = inputLines[inputLineIndex]! - - let startCharIndex = 0 - - const displayLines: TDisplayLine[] = [] - - // Special case: There may be lines with 0 length. - // While no displayLine is required for this, we still need to increment the counter. - if (line.length === 0) { - count++ - } else { - while (startCharIndex < line.length) { - const endCharIndex = Math.min(startCharIndex + cols, line.length) - const text = line.substring(startCharIndex, endCharIndex) - - displayLines.push({ - index: count++, - text: text, - inputLine: inputLineIndex, - startCol: startCharIndex, - endCol: endCharIndex, - }) - - startCharIndex = endCharIndex - } - } - - result[inputLineIndex] = displayLines - } - - return result -} - -/** - * Wraps around numbers in the bounds [0-max]. - */ -function wrapNumber(num: number, max: number) { - return ((num % max) + max) % max -} - -/** - * Escapes anything that could be interpreted as regex syntax when parsing the string as a regex. - */ -function escapeRegex(str: string) { - return str.replace(/[/\-\\^$*+?.()|[\]{}]/g, "\\$&") -} diff --git a/desktop/src/components/Warning/WarningMessageBox.tsx b/desktop/src/components/Warning/WarningMessageBox.tsx deleted file mode 100644 index ffeb2eb05..000000000 --- a/desktop/src/components/Warning/WarningMessageBox.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { Box, Text, useColorModeValue } from "@chakra-ui/react" -import React from "react" - -const SIZES = { - sm: { - fontSize: "sm", - }, - md: { - fontSize: "md", - }, -} -const VARIANTS = { - solid: { - color: { light: "orange.700", dark: "orange.800" }, - }, - ghost: { - color: { light: "orange.400", dark: "orange.300" }, - }, -} -type TWarningMessageBoxProps = Readonly<{ - warning: React.ReactNode - size?: keyof typeof SIZES - variant?: "solid" | "ghost" -}> -export function WarningMessageBox({ - warning, - size = "md", - variant = "solid", -}: TWarningMessageBoxProps) { - const { color } = VARIANTS[variant] - const backgroundColor = useColorModeValue("orange.100", "orange.200") - const textColor = useColorModeValue(color.light, color.dark) - const { fontSize } = SIZES[size] - - return ( - - - {warning} - - - ) -} diff --git a/desktop/src/components/Warning/index.ts b/desktop/src/components/Warning/index.ts deleted file mode 100644 index 8ceda22e1..000000000 --- a/desktop/src/components/Warning/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { WarningMessageBox } from "./WarningMessageBox" diff --git a/desktop/src/components/WorkspaceOwnerFilter/WorkspaceOwnerFilter.tsx b/desktop/src/components/WorkspaceOwnerFilter/WorkspaceOwnerFilter.tsx deleted file mode 100644 index 26bbd7490..000000000 --- a/desktop/src/components/WorkspaceOwnerFilter/WorkspaceOwnerFilter.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { ChevronDownIcon } from "@chakra-ui/icons" -import { - Button, - Menu, - MenuButton, - MenuItemOption, - MenuList, - MenuOptionGroup, -} from "@chakra-ui/react" -import { useCallback } from "react" - -export type TWorkspaceOwnerFilterState = "self" | "all" - -export function WorkspaceOwnerFilter({ - ownerFilter, - setOwnerFilter, -}: { - ownerFilter: TWorkspaceOwnerFilterState - setOwnerFilter: (ownerFilter: TWorkspaceOwnerFilterState) => void -}) { - const onChange = useCallback( - (value: string[] | string) => { - setOwnerFilter((Array.isArray(value) ? value[0] : value) as TWorkspaceOwnerFilterState) - }, - [setOwnerFilter] - ) - - return ( - - }> - Workspaces: {ownerFilter == "self" ? "Mine" : "All"} - - - - - Mine - - - All - - - - - ) -} diff --git a/desktop/src/components/WorkspaceOwnerFilter/index.ts b/desktop/src/components/WorkspaceOwnerFilter/index.ts deleted file mode 100644 index a090a5ab1..000000000 --- a/desktop/src/components/WorkspaceOwnerFilter/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./WorkspaceOwnerFilter" diff --git a/desktop/src/components/WorkspaceSorter/WorkspaceSorter.tsx b/desktop/src/components/WorkspaceSorter/WorkspaceSorter.tsx deleted file mode 100644 index 7738f0e71..000000000 --- a/desktop/src/components/WorkspaceSorter/WorkspaceSorter.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { - Button, - Menu, - MenuButton, - MenuItemOption, - MenuList, - MenuOptionGroup, -} from "@chakra-ui/react" -import { ChevronDownIcon } from "@chakra-ui/icons" -import { DEFAULT_SORT_WORKSPACE_MODE, ESortWorkspaceMode } from "@/lib/sortWorkspaceConstants" -import { useCallback } from "react" - -export function WorkspaceSorter({ - sortMode, - setSortMode, -}: { - sortMode: ESortWorkspaceMode - setSortMode: (sortMode: ESortWorkspaceMode) => void -}) { - const onChange = useCallback( - (value: string | string[] | undefined) => { - const mode = Array.isArray(value) - ? (value[0] as ESortWorkspaceMode | undefined) - : (value as ESortWorkspaceMode | undefined) - setSortMode(mode ?? DEFAULT_SORT_WORKSPACE_MODE) - }, - [setSortMode] - ) - - return ( - - }> - Sort by: {sortMode} - - - - {Object.values(ESortWorkspaceMode).map((option) => ( - - {option} - - ))} - - - - ) -} diff --git a/desktop/src/components/WorkspaceSorter/index.ts b/desktop/src/components/WorkspaceSorter/index.ts deleted file mode 100644 index b41d0c3c7..000000000 --- a/desktop/src/components/WorkspaceSorter/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./WorkspaceSorter" diff --git a/desktop/src/components/WorkspaceStatusFilter/WorkspaceStatusFilter.tsx b/desktop/src/components/WorkspaceStatusFilter/WorkspaceStatusFilter.tsx deleted file mode 100644 index 92fb0e9d6..000000000 --- a/desktop/src/components/WorkspaceStatusFilter/WorkspaceStatusFilter.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import { - Button, - HStack, - Menu, - MenuButton, - MenuDivider, - MenuItemOption, - MenuList, - MenuOptionGroup, - Text, -} from "@chakra-ui/react" -import { WorkspaceStatus } from "@/icons" -import { WORKSPACE_STATUSES } from "@/constants" -import { WorkspaceStatusBadge } from "@/views/Workspaces/WorkspaceStatusBadge" -import { useCallback } from "react" -import { WorkspaceDisplayStatusBadge } from "@/views/Pro/Workspace/WorkspaceStatus" -import { TWorkspace } from "@/types" -import { TWorkspaceDisplayStatus, WorkspaceDisplayStatus } from "@/views/Pro/Workspace/status" - -export type TWorkspaceStatusFilterState = string[] | "all" - -export function WorkspaceStatusFilter({ - statusFilter, - setStatusFilter, - variant = "oss", -}: { - statusFilter: TWorkspaceStatusFilterState - setStatusFilter: (statusFilter: TWorkspaceStatusFilterState) => void - variant?: "oss" | "pro" -}) { - const availableStatuses = - variant === "oss" ? WORKSPACE_STATUSES : Object.values(WorkspaceDisplayStatus) - - const onSelectAll = useCallback(() => { - if (statusFilter === "all") { - setStatusFilter([]) - } else { - setStatusFilter("all") - } - }, [statusFilter, setStatusFilter]) - - const onChange = useCallback( - (value: string | string[]) => { - setStatusFilter(typeof value === "string" ? [value] : value) - }, - [setStatusFilter] - ) - - return ( - - }> - Status ({getCurrentFilterCount(statusFilter, availableStatuses.length)}/ - {availableStatuses.length}) - - - - Select All - - - - {availableStatuses.map((status) => ( - - - {variant === "oss" ? ( - - ) : ( - - )}{" "} - {status || "Waiting to Initialize"} - - - ))} - - - - ) -} - -function getCurrentFilterCount(filter: TWorkspaceStatusFilterState, total: number) { - if (filter === "all") { - return total - } - - return filter.length -} diff --git a/desktop/src/components/WorkspaceStatusFilter/index.ts b/desktop/src/components/WorkspaceStatusFilter/index.ts deleted file mode 100644 index 43005cc16..000000000 --- a/desktop/src/components/WorkspaceStatusFilter/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./WorkspaceStatusFilter" diff --git a/desktop/src/components/index.ts b/desktop/src/components/index.ts deleted file mode 100644 index 458101074..000000000 --- a/desktop/src/components/index.ts +++ /dev/null @@ -1,22 +0,0 @@ -export * from "./Animation" -export * from "./AutoComplete" -export * from "./CardHeader" -export * from "./Error" -export * from "./Form" -export * from "./IDEGroup" -export * from "./IDEIcon" -export * from "./ListSelection" -export * from "./DeleteWorkspacesModal" -export * from "./ExampleCard" -export * from "./Layout" -export * from "./DevsyOSSBadge" -export * from "./BottomActionBar" -export * from "./Section" -export * from "./Steps" -export * from "./Terminal" -export * from "./Tag" -export * from "./useInstallCLI" -export * from "./Warning" -export * from "./WorkspaceSorter" -export * from "./WorkspaceStatusFilter" -export * from "./WorkspaceOwnerFilter" diff --git a/desktop/src/components/useInstallCLI.tsx b/desktop/src/components/useInstallCLI.tsx deleted file mode 100644 index 7648ab023..000000000 --- a/desktop/src/components/useInstallCLI.tsx +++ /dev/null @@ -1,146 +0,0 @@ -import { QuestionIcon } from "@chakra-ui/icons" -import { - AlertDialog, - AlertDialogBody, - AlertDialogContent, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogOverlay, - Button, - ButtonGroup, - Code, - Tooltip, - useDisclosure, -} from "@chakra-ui/react" -import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query" -import { useMemo, useRef } from "react" -import { client } from "@/client/client" -import { FLATPAK_ID } from "@/client/repo" -import { CheckCircle, ExclamationCircle } from "@/icons" -import { Err, Failed, isError, isMacOS, isWindows } from "@/lib" -import { QueryKeys } from "@/queryKeys" -import { ErrorMessageBox } from "./Error" - -export function useInstallCLI() { - const { isOpen, onOpen: showAlertDialog, onClose } = useDisclosure() - const cancelRef = useRef(null) - const { data: isCLIInstalled } = useQuery({ - queryKey: QueryKeys.IS_CLI_INSTALLED, - queryFn: async () => { - return (await client.isCLIInstalled()).unwrap()! - }, - }) - const queryClient = useQueryClient() - const { - mutate: addBinaryToPath, - isLoading, - error, - status, - } = useMutation, { force?: boolean }>({ - mutationFn: async ({ force = false }) => { - ;(await client.installCLI(force)).unwrap() - // throw Return.Failed("Did not work") - }, - onSettled: () => { - queryClient.invalidateQueries(QueryKeys.IS_CLI_INSTALLED) - }, - onError: (_, { force }) => { - if (isMacOS && !force) { - showAlertDialog() - } - }, - }) - - const badge = useMemo(() => { - if (isCLIInstalled === undefined) { - return ( - - - - ) - } - - return isCLIInstalled ? ( - - - - ) : ( - - - - ) - }, [isCLIInstalled]) - - const button = useMemo(() => { - return ( - <> - - - - - Failed to add CLI to path - - Do you want to retry with Admin Privileges? You will be prompted for authentication - - - - - - - - - - - - ) - }, [addBinaryToPath, isLoading, isOpen, onClose, status]) - - const helpText = useMemo(() => { - return ( - <> - Adds the Devsy CLI to your $PATH.{" "} - {isWindows ? ( - <> - It will be placed in {`%APPDATA%\\${FLATPAK_ID}\\bin`} - - ) : ( - <> - It will be placed in either /usr/local/bin,$HOME/.local/bin or{" "} - $HOME/bin depending on your permissions - - )} - - ) - }, []) - - const errorMessage = useMemo(() => { - return error !== null && isError(error.val) && - }, [error]) - - return { - isInstalled: isCLIInstalled, - install: addBinaryToPath, - isLoading, - error, - status, - badge, - button, - helpText, - errorMessage, - } -} diff --git a/desktop/src/constants.ts b/desktop/src/constants.ts deleted file mode 100644 index eddb54b05..000000000 --- a/desktop/src/constants.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { BoxProps } from "@chakra-ui/react" -import { - AWSSvg, - AWSWhiteSvg, - AzureSvg, - CivoSvg, - DigitalOceanSvg, - DockerSvg, - GCloudSvg, - KubernetesSvg, - SSHSvg, -} from "./images" - -export const STATUS_BAR_HEIGHT: NonNullable = "8" -export const SIDEBAR_WIDTH: BoxProps["width"] = "15rem" -export const RECOMMENDED_PROVIDER_SOURCES = [ - // generic - { image: DockerSvg, name: "docker", group: "generic" }, - { image: KubernetesSvg, name: "kubernetes", group: "generic" }, - { image: SSHSvg, name: "ssh", group: "generic" }, - // cloud - { image: AWSSvg, imageDarkMode: AWSWhiteSvg, name: "aws", group: "cloud" }, - { image: GCloudSvg, name: "gcloud", group: "cloud" }, - { image: AzureSvg, name: "azure", group: "cloud" }, - { image: DigitalOceanSvg, name: "digitalocean", group: "cloud" }, - { image: CivoSvg, name: "civo", group: "cloud" }, -] as const - -export const WORKSPACE_SOURCE_BRANCH_DELIMITER = "@" -export const WORKSPACE_SOURCE_COMMIT_DELIMITER = "@sha256:" -export const WORKSPACE_STATUSES = ["Running", "Stopped", "Busy", "NotFound"] as const diff --git a/desktop/src/contexts/DevsyContext/DevsyProvider/DevsyContext.tsx b/desktop/src/contexts/DevsyContext/DevsyProvider/DevsyContext.tsx deleted file mode 100644 index 9c958bc4a..000000000 --- a/desktop/src/contexts/DevsyContext/DevsyProvider/DevsyContext.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import { createContext } from "react" -import { TProviders, TQueryResult } from "@/types" - -export type TDevsyContext = Readonly<{ - providers: TQueryResult -}> -export const DevsyContext = createContext(null) diff --git a/desktop/src/contexts/DevsyContext/DevsyProvider/DevsyProvider.tsx b/desktop/src/contexts/DevsyContext/DevsyProvider/DevsyProvider.tsx deleted file mode 100644 index ee623f1f4..000000000 --- a/desktop/src/contexts/DevsyContext/DevsyProvider/DevsyProvider.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import { useQuery } from "@tanstack/react-query" -import { ReactNode, useMemo } from "react" -import { client } from "@/client/client" -import { QueryKeys } from "@/queryKeys" -import { REFETCH_PROVIDER_INTERVAL_MS } from "../constants" -import { usePollWorkspaces } from "../workspaces" -import { DevsyContext, TDevsyContext } from "./DevsyContext" - -export function DevsyProvider({ children }: Readonly<{ children?: ReactNode }>) { - usePollWorkspaces() - - const providersQuery = useQuery({ - queryKey: QueryKeys.PROVIDERS, - queryFn: async () => (await client.providers.listAll()).unwrap(), - refetchInterval: REFETCH_PROVIDER_INTERVAL_MS, - enabled: true, - }) - - const value = useMemo( - () => ({ - providers: [ - providersQuery.data, - { status: providersQuery.status, error: providersQuery.error }, - ], - }), - [providersQuery.data, providersQuery.status, providersQuery.error] - ) - - return {children} -} - -export function ProviderProvider({ children }: Readonly<{ children?: ReactNode }>) { - const providersQuery = useQuery({ - queryKey: QueryKeys.PROVIDERS, - queryFn: async () => (await client.providers.listAll()).unwrap(), - refetchInterval: REFETCH_PROVIDER_INTERVAL_MS, - enabled: true, - }) - - const value = useMemo( - () => ({ - providers: [ - providersQuery.data, - { status: providersQuery.status, error: providersQuery.error }, - ], - }), - [providersQuery.data, providersQuery.status, providersQuery.error] - ) - - return {children} -} diff --git a/desktop/src/contexts/DevsyContext/DevsyProvider/index.ts b/desktop/src/contexts/DevsyContext/DevsyProvider/index.ts deleted file mode 100644 index f31d7e322..000000000 --- a/desktop/src/contexts/DevsyContext/DevsyProvider/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { DevsyProvider, ProviderProvider } from "./DevsyProvider" -export { DevsyContext } from "./DevsyContext" -export type { TDevsyContext } from "./DevsyContext" diff --git a/desktop/src/contexts/DevsyContext/Pro/ContextSwitcher.tsx b/desktop/src/contexts/DevsyContext/Pro/ContextSwitcher.tsx deleted file mode 100644 index e1d703bf1..000000000 --- a/desktop/src/contexts/DevsyContext/Pro/ContextSwitcher.tsx +++ /dev/null @@ -1,292 +0,0 @@ -import { Close, Connect, DevsyWordmark, Ellipsis, Folder } from "@/icons" -import { Result, getDisplayName, useLoginProModal } from "@/lib" -import { Routes } from "@/routes.constants" -import { TProInstance } from "@/types" -import { useDeleteProviderModal } from "@/views/Providers" -import { ArrowUpDownIcon, CheckIcon } from "@chakra-ui/icons" -import { - Box, - Button, - HStack, - Heading, - IconButton, - Image, - List, - ListItem, - Menu, - MenuButton, - MenuItem, - MenuList, - Popover, - PopoverBody, - PopoverContent, - PopoverTrigger, - Portal, - Spinner, - Text, - Tooltip, - VStack, - useColorModeValue, -} from "@chakra-ui/react" -import { ManagementV1Project } from "@devsy/client/gen/models/managementV1Project" -import { ReactNode, useMemo } from "react" -import { useNavigate } from "react-router" -import { useProInstances } from "../proInstances" -import { HOST_OSS } from "./constants" - -type THostPickerProps = Readonly<{ - currentHost: string - onHostChange: (newHost: string) => void - - currentProject: ManagementV1Project - projects: readonly ManagementV1Project[] - onProjectChange: (newProject: ManagementV1Project) => void - onCancelWatch?: () => Promise> - waitingForCancel: boolean -}> -export function ContextSwitcher({ - currentHost, - projects, - currentProject, - onProjectChange, - onHostChange, - onCancelWatch, - waitingForCancel, -}: THostPickerProps) { - const [[rawProInstances]] = useProInstances() - const proInstances = useMemo(() => { - const p: (TProInstance & { image?: string | ReactNode })[] = - rawProInstances - ?.slice() - .sort((a, b) => { - if (a.host === currentHost) { - return -1 - } - if (b.host === currentHost) { - return 1 - } - - return 0 - }) - .map((proInstance) => ({ ...proInstance })) ?? [] - - p.push({ - host: HOST_OSS, - image: , - authenticated: undefined, - provider: undefined, - creationTimestamp: undefined, - capabilities: undefined, - }) - - return p - }, [currentHost, rawProInstances]) - - const { modal: loginProModal, handleOpenLogin: handleConnectClicked } = useLoginProModal() - const handleConnectPlatform = () => { - handleConnectClicked() - } - const hoverBgColor = useColorModeValue("gray.100", "gray.700") - const projectsColor = useColorModeValue("gray.600", "gray.300") - - return ( - <> - - - - - - - - {waitingForCancel ? ( - - - - ) : ( - - {proInstances.map(({ host, authenticated, image }, index) => ( - - onHostChange(host!)} - /> - {host === currentHost && ( - - - Projects - - - {projects.map((project) => ( - - - - ))} - - - )} - - ))} - - )} - - - - - - {loginProModal} - - ) -} -type TPlatformDetailsProps = Readonly<{ - host: string - currentHost: string - image: ReactNode - authenticated?: boolean | null - showBorder?: boolean - onClick: VoidFunction - onConnect: VoidFunction - onCancelWatch?: () => Promise> -}> -function PlatformDetails({ - host, - currentHost, - image, - authenticated, - showBorder = true, - onClick, - onConnect, - onCancelWatch, -}: TPlatformDetailsProps) { - const navigate = useNavigate() - const [, { disconnect }] = useProInstances() - const { modal: deleteProviderModal, open: openDeleteProviderModal } = useDeleteProviderModal( - host, - "Pro instance", - "disconnect", - async () => { - await onCancelWatch?.() - disconnect.run({ id: host }) - navigate(Routes.ROOT) - } - ) - const hoverBgColor = useColorModeValue("gray.100", "gray.700") - const menuColor = useColorModeValue("gray.700", "gray.200") - - return ( - <> - - - {image ? ( - typeof image === "string" ? ( - - ) : ( - image - ) - ) : ( - - - {host} - - - )} - - {authenticated != null && ( - - )} - - - {host} - - - {host !== HOST_OSS && ( - - e.stopPropagation()} - as={IconButton} - variant="ghost" - aria-label="More actions" - colorScheme="gray" - icon={} - /> - e.stopPropagation()}> - } onClick={onConnect}> - Connect another platform - - } onClick={openDeleteProviderModal}> - Disconnect - - - - )} - - - - {deleteProviderModal} - - ) -} diff --git a/desktop/src/contexts/DevsyContext/Pro/ProProvider.tsx b/desktop/src/contexts/DevsyContext/Pro/ProProvider.tsx deleted file mode 100644 index 3932edcf5..000000000 --- a/desktop/src/contexts/DevsyContext/Pro/ProProvider.tsx +++ /dev/null @@ -1,211 +0,0 @@ -import { client as globalClient } from "@/client/client" -import { BINARY_NAME } from "@/client/repo" -import { DaemonClient } from "@/client/pro/client" -import { TWorkspaceOwnerFilterState } from "@/components" -import { ToolbarActions, ToolbarTitle } from "@/components/Layout/Toolbar" -import { Annotations, Result } from "@/lib" -import { Routes } from "@/routes.constants" -import { Text } from "@chakra-ui/react" -import { ManagementV1Project } from "@devsy/client/gen/models/managementV1Project" -import { useQuery } from "@tanstack/react-query" -import { ReactNode, useEffect, useMemo, useState } from "react" -import { Navigate, useNavigate } from "react-router-dom" -import { useProInstances } from "../proInstances" -import { ProWorkspaceStore, useWorkspaceStore } from "../workspaceStore" -import { ContextSwitcher } from "./ContextSwitcher" -import { HOST_OSS } from "./constants" -import { ProContext, TProContext } from "./useProContext" - -export function ProProvider({ host, children }: { host: string; children: ReactNode }) { - const [[proInstances, { status: proInstancesStatus }]] = useProInstances() - const [isLoadingWorkspaces, setIsLoadingWorkspaces] = useState(false) - const [ownerFilter, setOwnerFilter] = useState("self") - const [currentProjectName, setCurrentProjectName] = useState( - () => localStorage.getItem(getProjectStorageKey(host)) ?? undefined - ) - const navigate = useNavigate() - const currentProInstance = useMemo(() => { - return proInstances?.find((instance) => instance.host == host) - }, [host, proInstances]) - const { store } = useWorkspaceStore() - const client = useMemo(() => { - if (!currentProInstance) { - return null - } - - return globalClient.getProClient(currentProInstance) - }, [currentProInstance]) - const managementSelfQuery = useQuery({ - queryKey: ["managementSelf", client], - queryFn: async () => { - return (await client!.getSelf()).unwrap() - }, - enabled: !!client, - }) - const projectsQuery = useQuery({ - queryKey: ["pro", host, "projects", client], - queryFn: async () => { - return (await client!.listProjects()).unwrap() - }, - enabled: !!client, - }) - - const currentProject = useMemo(() => { - if (projectsQuery.data == null) { - return undefined - } - - if (!currentProjectName) { - return projectsQuery.data[0] ?? undefined - } - - const maybeProject = - projectsQuery.data.find((project) => project.metadata?.name === currentProjectName) ?? - undefined - if (!maybeProject) { - return projectsQuery.data[0] ?? undefined - } - - return maybeProject - }, [currentProjectName, projectsQuery.data]) - - const [cancelWatch, setCancelWatch] = useState< - { fn: () => Promise> } | undefined - >(undefined) - - const [waitingForCancel, setWaitingForCancel] = useState(false) - - useEffect(() => { - if (!currentProject?.metadata?.name || !client) { - return - } - setIsLoadingWorkspaces(true) - - if (client instanceof DaemonClient) { - // daemon client impl - return client.watchWorkspaces(currentProject.metadata.name, ownerFilter, (workspaces) => { - // sort by last activity (newest > oldest) - const sorted = workspaces.slice().sort((a, b) => { - const lastActivityA = a.metadata?.annotations?.[Annotations.SleepModeLastActivity] - const lastActivityB = b.metadata?.annotations?.[Annotations.SleepModeLastActivity] - if (!(lastActivityA && lastActivityB)) { - return 0 - } - - return parseInt(lastActivityB, 10) - parseInt(lastActivityA, 10) - }) - store.setWorkspaces(sorted) - setIsLoadingWorkspaces(false) - }) - } else { - let canceled = false - // proxy client impl - const toCancel = client.watchWorkspacesProxy( - currentProject.metadata.name, - ownerFilter, - (workspaces) => { - if (canceled) { - return - } - - // sort by last activity (newest > oldest) - const sorted = workspaces.slice().sort((a, b) => { - const lastActivityA = a.metadata?.annotations?.[Annotations.SleepModeLastActivity] - const lastActivityB = b.metadata?.annotations?.[Annotations.SleepModeLastActivity] - if (!(lastActivityA && lastActivityB)) { - return 0 - } - - return parseInt(lastActivityB, 10) - parseInt(lastActivityA, 10) - }) - store.setWorkspaces(sorted) - // dirty, dirty - setTimeout(() => { - setIsLoadingWorkspaces(false) - }, 1_000) - } - ) - - function canceler() { - canceled = true - setCancelWatch(undefined) - setWaitingForCancel(true) - - return toCancel().finally(() => setWaitingForCancel(false)) - } - setCancelWatch({ fn: canceler }) - - return () => { - canceler() - } - } - }, [client, store, currentProject, ownerFilter]) - - const handleProjectChanged = (newProject: ManagementV1Project) => { - const projectName = newProject.metadata?.name ?? "" - localStorage.setItem(getProjectStorageKey(host), projectName) - setCurrentProjectName(projectName) - navigate(Routes.toProInstance(host)) - } - - const handleHostChanged = (newHost: string) => { - if (newHost === HOST_OSS) { - navigate(Routes.WORKSPACES) - - return - } - - const projectName = localStorage.getItem(getProjectStorageKey(newHost)) ?? undefined - setCurrentProjectName(projectName) - navigate(Routes.toProInstance(newHost)) - } - - const value = useMemo(() => { - return { - managementSelfQuery, - currentProject, - host, - client: client!, - isLoadingWorkspaces, - ownerFilter, - setOwnerFilter, - } - }, [managementSelfQuery, currentProject, host, client, isLoadingWorkspaces, ownerFilter]) - - // this pro instance doesn't exist, let's route back to root - if (proInstancesStatus == "success" && !currentProInstance) { - return - } - - if (!client) { - return null - } - - return ( - - - - {host} - - - - - - {children} - - ) -} - -const PROJECT_STORAGE_KEY = `${BINARY_NAME}_current_project` - -function getProjectStorageKey(host: string) { - return `${PROJECT_STORAGE_KEY}_${host}` -} diff --git a/desktop/src/contexts/DevsyContext/Pro/constants.ts b/desktop/src/contexts/DevsyContext/Pro/constants.ts deleted file mode 100644 index 0838f8455..000000000 --- a/desktop/src/contexts/DevsyContext/Pro/constants.ts +++ /dev/null @@ -1 +0,0 @@ -export const HOST_OSS = "Open Source" diff --git a/desktop/src/contexts/DevsyContext/Pro/index.ts b/desktop/src/contexts/DevsyContext/Pro/index.ts deleted file mode 100644 index a64c91625..000000000 --- a/desktop/src/contexts/DevsyContext/Pro/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export { ProProvider } from "./ProProvider" -export { useProContext } from "./useProContext" -export { ProWorkspaceInstance } from "./workspaceInstance" -export { useProHost } from "./useProHost" -export { useTemplates } from "./useTemplates" -export { useProjectClusters } from "./useProjectClusters" diff --git a/desktop/src/contexts/DevsyContext/Pro/useProContext.ts b/desktop/src/contexts/DevsyContext/Pro/useProContext.ts deleted file mode 100644 index 59bc242fb..000000000 --- a/desktop/src/contexts/DevsyContext/Pro/useProContext.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { ProClient } from "@/client" -import { TWorkspaceOwnerFilterState } from "@/components" -import { ManagementV1Project } from "@devsy/client/gen/models/managementV1Project" -import { ManagementV1Self } from "@devsy/client/gen/models/managementV1Self" -import { UseQueryResult } from "@tanstack/react-query" -import { Dispatch, SetStateAction, createContext, useContext } from "react" - -export type TProContext = Readonly<{ - managementSelfQuery: UseQueryResult - currentProject?: ManagementV1Project - host: string - client: ProClient - isLoadingWorkspaces: boolean - ownerFilter: TWorkspaceOwnerFilterState - setOwnerFilter: Dispatch> -}> -export const ProContext = createContext(null!) - -export function useProContext() { - return useContext(ProContext) -} diff --git a/desktop/src/contexts/DevsyContext/Pro/useProHost.ts b/desktop/src/contexts/DevsyContext/Pro/useProHost.ts deleted file mode 100644 index 805fd7b66..000000000 --- a/desktop/src/contexts/DevsyContext/Pro/useProHost.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { useParams } from "react-router-dom" - -export function useProHost() { - const { host } = useParams<{ host: string | undefined }>() - - return host -} diff --git a/desktop/src/contexts/DevsyContext/Pro/useProjectClusters.tsx b/desktop/src/contexts/DevsyContext/Pro/useProjectClusters.tsx deleted file mode 100644 index 090004c0c..000000000 --- a/desktop/src/contexts/DevsyContext/Pro/useProjectClusters.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { useProContext } from "@/contexts" -import { QueryKeys } from "@/queryKeys" -import { ManagementV1Runner } from "@/runner" -import { ManagementV1ProjectClusters } from "@devsy/client/gen/models/managementV1ProjectClusters" -import { useQuery, UseQueryResult } from "@tanstack/react-query" - -export type TProjectCluster = ManagementV1ProjectClusters & { - runners?: Array -} -export function useProjectClusters(): UseQueryResult { - const { host, currentProject, client } = useProContext() - const query = useQuery({ - queryKey: QueryKeys.proClusters(host, currentProject?.metadata!.name!), - queryFn: async () => { - return (await client.getProjectClusters(currentProject?.metadata!.name!)).unwrap() - }, - enabled: !!currentProject, - }) - - return query -} diff --git a/desktop/src/contexts/DevsyContext/Pro/useTemplates.ts b/desktop/src/contexts/DevsyContext/Pro/useTemplates.ts deleted file mode 100644 index 0ecc76b12..000000000 --- a/desktop/src/contexts/DevsyContext/Pro/useTemplates.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { useProContext } from "@/contexts" -import { useQuery, UseQueryResult } from "@tanstack/react-query" -import { QueryKeys } from "@/queryKeys" -import { ManagementV1DevsyWorkspaceTemplate } from "@devsy/client/gen/models/managementV1DevsyWorkspaceTemplate" -import { ManagementV1DevsyEnvironmentTemplate } from "@devsy/client/gen/models/managementV1DevsyEnvironmentTemplate" -import { ManagementV1DevsyWorkspacePreset } from "@devsy/client/gen/models/managementV1DevsyWorkspacePreset" - -type TTemplates = Readonly<{ - default: ManagementV1DevsyWorkspaceTemplate | undefined - workspace: readonly ManagementV1DevsyWorkspaceTemplate[] - environment: readonly ManagementV1DevsyEnvironmentTemplate[] - presets: readonly ManagementV1DevsyWorkspacePreset[] -}> -export function useTemplates(): UseQueryResult { - const { host, currentProject, client } = useProContext() - const query = useQuery({ - queryKey: QueryKeys.proWorkspaceTemplates(host, currentProject?.metadata!.name!), - queryFn: async () => { - const projectTemplates = ( - await client.getProjectTemplates(currentProject?.metadata!.name!) - ).unwrap() - - // try to find default template in list - let defaultTemplate: ManagementV1DevsyWorkspaceTemplate | undefined = undefined - if (projectTemplates?.defaultDevsyWorkspaceTemplate) { - defaultTemplate = projectTemplates.devsyWorkspaceTemplates?.find( - (template) => template.metadata?.name === projectTemplates.defaultDevsyWorkspaceTemplate - ) - } - - return { - default: defaultTemplate, - workspace: projectTemplates?.devsyWorkspaceTemplates ?? [], - environment: projectTemplates?.devsyEnvironmentTemplates ?? [], - presets: projectTemplates?.devsyWorkspacePresets ?? [], - } - }, - enabled: !!currentProject, - }) - - return query -} diff --git a/desktop/src/contexts/DevsyContext/Pro/workspaceInstance.ts b/desktop/src/contexts/DevsyContext/Pro/workspaceInstance.ts deleted file mode 100644 index cc7f38c5a..000000000 --- a/desktop/src/contexts/DevsyContext/Pro/workspaceInstance.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { TIDE, TIdentifiable, TWorkspaceSource } from "@/types" -import { ManagementV1DevsyWorkspaceInstance } from "@devsy/client/gen/models/managementV1DevsyWorkspaceInstance" -import { Labels, deepCopy } from "@/lib" -import { Resources } from "@devsy/client" -import { ManagementV1DevsyWorkspaceInstanceStatus } from "@devsy/client/gen/models/managementV1DevsyWorkspaceInstanceStatus" - -export class ProWorkspaceInstance - extends ManagementV1DevsyWorkspaceInstance - implements TIdentifiable -{ - public readonly status: ProWorkspaceInstanceStatus | undefined - - public get id(): string { - const maybeID = this.metadata?.labels?.[Labels.WorkspaceID] - if (!maybeID) { - // If we don't have an ID we should ignore the instance. - // Throwing an error for now to see how often this happens - throw new Error(`No Workspace ID label present on instance ${this.metadata?.name}`) - } - - return maybeID - } - - constructor(instance: ManagementV1DevsyWorkspaceInstance) { - super() - - this.apiVersion = `${Resources.ManagementV1DevsyWorkspaceInstance.group}/${Resources.ManagementV1DevsyWorkspaceInstance.version}` - this.kind = Resources.ManagementV1DevsyWorkspaceInstance.kind - this.metadata = deepCopy(instance.metadata) - this.spec = deepCopy(instance.spec) - this.status = deepCopy(instance.status) as ProWorkspaceInstanceStatus - } -} - -class ProWorkspaceInstanceStatus extends ManagementV1DevsyWorkspaceInstanceStatus { - "source"?: TWorkspaceSource - "ide"?: TIDE - "metrics"?: ProWorkspaceMetricsSummary - - constructor() { - super() - } -} - -class ProWorkspaceMetricsSummary { - "latencyMs"?: number - "connectionType"?: "direct" | "DERP" - "derpRegion"?: string -} diff --git a/desktop/src/contexts/DevsyContext/action/action.ts b/desktop/src/contexts/DevsyContext/action/action.ts deleted file mode 100644 index a5f5bc45f..000000000 --- a/desktop/src/contexts/DevsyContext/action/action.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { Result, SingleEventManager, EventManager } from "@/lib" -import { v4 as uuidv4 } from "uuid" - -export type TActionName = "start" | "stop" | "rebuild" | "reset" | "remove" | "checkStatus" -export type TActionFn = (context: TActionContext) => Promise> -export type TActionStatus = "pending" | "success" | "error" | "cancelled" -export type TActionID = Action["id"] -// We don't want to expose the methods to consumers of these actions, so we'll limit the type to data-only properties -export type TActionObj = Pick< - Action, - "id" | "name" | "status" | "error" | "createdAt" | "finishedAt" | "targetID" -> -export type TActions = Readonly<{ - active: readonly TActionObj[] - history: readonly TActionObj[] -}> -type TActionContext = Readonly<{ id: Action["id"] }> - -export class Action { - private _status: TActionStatus = "pending" - private _error: Error | undefined = undefined - private _finishedAt: number | undefined = undefined - private readonly eventManager = new SingleEventManager() - public readonly id = uuidv4() - public readonly createdAt = Date.now() - - public static deserialize(str: string): TActionObj { - return JSON.parse(str) - } - - constructor( - public readonly name: TActionName, - public readonly targetID: string, - private actionFn: TActionFn - ) {} - - public get status() { - return this._status - } - - public get error() { - return this._error - } - - public get finishedAt() { - return this._finishedAt - } - - private failed(error: Error) { - if (this._status !== "pending") { - return - } - this._status = "error" - this._error = error - this._finishedAt = Date.now() - this.eventManager.publish(this._status) - } - - private succeeded() { - if (this._status !== "pending") { - return - } - this._status = "success" - this._finishedAt = Date.now() - this.eventManager.publish(this._status) - } - - public run() { - this.actionFn({ id: this.id }).then((result) => { - if (result.err) { - this.failed(result.val) - - return - } - - this.succeeded() - }) - } - - public cancel() { - if (this._status !== "pending") { - return - } - // We're no longer interested in status updates - this.eventManager.clear() - this._status = "cancelled" - this._finishedAt = Date.now() - } - - public once(listener: (status: TActionStatus) => void): void { - const unsubscribe = this.eventManager.subscribe( - EventManager.toHandler((status) => { - listener(status) - unsubscribe() - }) - ) - } - - public getData(): TActionObj { - return { - id: this.id, - targetID: this.targetID, - name: this.name, - status: this.status, - error: this.error, - createdAt: this.createdAt, - finishedAt: this.finishedAt, - } - } -} diff --git a/desktop/src/contexts/DevsyContext/action/actionHistory.ts b/desktop/src/contexts/DevsyContext/action/actionHistory.ts deleted file mode 100644 index 1a9af73c5..000000000 --- a/desktop/src/contexts/DevsyContext/action/actionHistory.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { Action, TActionObj, TActions } from "./action" -import { BINARY_NAME } from "@/client/repo" - -const HISTORY_KEY = `${BINARY_NAME}-workspace-action-history` -const MAX_HISTORY_ENTRIES = 50 - -export class ActionHistory { - private active = new Map() - private history: TActionObj[] - - private localStorageKey: string - - constructor(keySuffix?: string) { - let localStorageKey = HISTORY_KEY - if (keySuffix) { - localStorageKey = `${localStorageKey}-${keySuffix}` - } - this.localStorageKey = localStorageKey - - const maybeHistory = localStorage.getItem(this.localStorageKey) - if (maybeHistory === null) { - this.history = [] - - return - } - - this.history = JSON.parse(maybeHistory) as TActionObj[] - } - - private getAllActive(): readonly TActionObj[] { - const active = [] - for (const action of this.active.values()) { - active.push(action.getData()) - } - - return active - } - - public getActive(targetID: string): Action | undefined { - return this.active.get(targetID) - } - - public getAll(): TActions { - const active = this.getAllActive() - const history = this.history.slice() - - return { active, history } - } - - public addActive(targetID: string, action: Action): void { - this.active.set(targetID, action) - } - - public archive(action: Action): void { - this.active.delete(action.targetID) - this.history.push(action.getData()) - - // Limit history size - const overflow = this.history.length - MAX_HISTORY_ENTRIES - if (overflow > 0) { - this.history.splice(0, overflow) - } - - window.localStorage.setItem(this.localStorageKey, JSON.stringify(this.history)) - } -} diff --git a/desktop/src/contexts/DevsyContext/action/index.ts b/desktop/src/contexts/DevsyContext/action/index.ts deleted file mode 100644 index 03f8a4d69..000000000 --- a/desktop/src/contexts/DevsyContext/action/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -export { getAction, useAction, useReplayAction, useConnectAction } from "./useAction" -export { Action } from "./action" -export type { - TActionName, - TActionObj, - TActionID, - TActions as TWorkspaceActions, - TActionFn, -} from "./action" diff --git a/desktop/src/contexts/DevsyContext/action/useAction.ts b/desktop/src/contexts/DevsyContext/action/useAction.ts deleted file mode 100644 index ef474a567..000000000 --- a/desktop/src/contexts/DevsyContext/action/useAction.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { useCallback, useEffect, useId, useMemo, useRef, useSyncExternalStore } from "react" -import { client, TStreamEventListenerFn } from "@/client" -import { TStreamID, TUnsubscribeFn } from "@/types" -import { useWorkspaceStore } from "../workspaceStore" -import { IWorkspaceStore } from "../workspaceStore/workspaceStore" -import { TActionID, TActionObj } from "./action" - -type TActionResult = Readonly<{ - data: TActionObj - connectOrReplay(onStream: TStreamEventListenerFn): void | VoidFunction - cancel(): void -}> - -export function useAction(actionID: TActionID | undefined): TActionResult | undefined { - const { store } = useWorkspaceStore() - const isCancellingRef = useRef(false) - const viewID = useId() - const data = useSyncExternalStore( - useCallback((listener) => store.subscribe(listener), [store]), - () => { - if (actionID === undefined) { - return undefined - } - - return getAction(actionID, store) - } - ) - - const connect = useConnectAction(data, viewID) - const replay = useReplayAction() - - return useMemo(() => { - if (data === undefined) { - return undefined - } - - return { - data, - connectOrReplay: (onStream) => { - if (data.status === "pending") { - return connect(onStream) - } - - return replay(data.id, onStream) - }, - cancel: () => { - if (isCancellingRef.current) { - return - } - isCancellingRef.current = true - // could improve by setting timeout as fallback if promise doesn't resolve, let's see if this is enough - client.workspaces.cancelAction(data.targetID).finally(() => { - isCancellingRef.current = false - }) - }, - } - }, [data, connect, replay]) -} - -export function getAction( - actionID: TActionID, - store: IWorkspaceStore -): TActionObj | undefined { - const { active, history } = store.getAllActions() - - return [...active, ...history].find((action) => action.id === actionID) -} - -export function useConnectAction( - action: TActionObj | undefined, - streamID: TStreamID -): (onStream: TStreamEventListenerFn) => void { - const subscriptionRef = useRef() - // Make sure we unsubscribe on onmount - useEffect(() => { - return () => subscriptionRef.current?.() - }, []) - - // Unsubscribe whenever action changes - useEffect(() => { - if ( - (action === undefined || action.status !== "pending") && - subscriptionRef.current !== undefined - ) { - subscriptionRef.current() - subscriptionRef.current = undefined - } - }, [action]) - - return useCallback( - (onStream) => { - if (action === undefined) { - return - } - - subscriptionRef.current = client.workspaces.subscribe(action, streamID, onStream) - }, - [action, streamID] - ) -} - -export function useReplayAction(): ( - actionID: TActionID, - onStream: TStreamEventListenerFn -) => VoidFunction { - return useCallback((actionID, onStream) => client.workspaces.replayAction(actionID, onStream), []) -} diff --git a/desktop/src/contexts/DevsyContext/constants.ts b/desktop/src/contexts/DevsyContext/constants.ts deleted file mode 100644 index ae5098137..000000000 --- a/desktop/src/contexts/DevsyContext/constants.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const REFETCH_INTERVAL_MS = 5_000 - -export const REFETCH_PROVIDER_INTERVAL_MS = 1_000 diff --git a/desktop/src/contexts/DevsyContext/helpers.ts b/desktop/src/contexts/DevsyContext/helpers.ts deleted file mode 100644 index 3dea3bfdf..000000000 --- a/desktop/src/contexts/DevsyContext/helpers.ts +++ /dev/null @@ -1,70 +0,0 @@ -// copied from https://github.com/TkDodo/react-query/blob/c1ae82ba188fd5abda5e256cac070145e5941447/src/core/utils.ts#L346 -/** - * This function returns `a` if `b` is deeply equal. - * If not, it will replace any deeply equal children of `b` with those of `a`. - * This can be used for structural sharing between JSON values for example. - */ -export function replaceEqualDeep(a: unknown, b: T): T -export function replaceEqualDeep(a: any, b: any): any { - if (a === b) { - return a - } - - const array = Array.isArray(a) && Array.isArray(b) - - if (array || (isPlainObject(a) && isPlainObject(b))) { - const aSize = array ? a.length : Object.keys(a).length - const bItems = array ? b : Object.keys(b) - const bSize = bItems.length - const copy: any = array ? [] : {} - - let equalItems = 0 - - for (let i = 0; i < bSize; i++) { - const key = array ? i : bItems[i] - copy[key] = replaceEqualDeep(a[key], b[key]) - if (copy[key] === a[key]) { - equalItems++ - } - } - const sameSize = aSize === bSize - const sameItems = equalItems === aSize - const keepA = sameSize && sameItems - - return keepA ? a : copy - } - - return b -} - -// Copied from: https://github.com/jonschlinkert/is-plain-object -export function isPlainObject(o: any): o is Object { - if (!hasObjectPrototype(o)) { - return false - } - - // If has modified constructor - const ctor = o.constructor - if (typeof ctor === "undefined") { - return true - } - - // If has modified prototype - const prot = ctor.prototype - if (!hasObjectPrototype(prot)) { - return false - } - - // If constructor does not have an Object-specific method - // eslint-disable-next-line no-prototype-builtins - if (!prot.hasOwnProperty("isPrototypeOf")) { - return false - } - - // Most likely a plain Object - return true -} - -function hasObjectPrototype(o: any): boolean { - return Object.prototype.toString.call(o) === "[object Object]" -} diff --git a/desktop/src/contexts/DevsyContext/index.ts b/desktop/src/contexts/DevsyContext/index.ts deleted file mode 100644 index 1861d6116..000000000 --- a/desktop/src/contexts/DevsyContext/index.ts +++ /dev/null @@ -1,28 +0,0 @@ -export { getAction, useAction } from "./action" -export type { TActionName, TActionID, TActionObj } from "./action" -export { DevsyProvider } from "./DevsyProvider" -export { useProInstances, ProInstancesProvider, useProInstanceManager } from "./proInstances" -export { useProvider } from "./useProvider" -export { useProviders } from "./useProviders" -export { useProviderManager } from "./useProviderManager" -export { - useWorkspace, - useWorkspaces, - useAllWorkspaceActions, - useWorkspaceActions, - startWorkspaceAction, -} from "./workspaces" -export { - WorkspaceStoreProvider, - useWorkspaceStore, - WorkspaceStore, - ProWorkspaceStore, -} from "./workspaceStore" -export { - useProHost, - ProProvider, - ProWorkspaceInstance, - useProContext, - useProjectClusters, - useTemplates, -} from "./Pro" diff --git a/desktop/src/contexts/DevsyContext/proInstances/ProInstancesProvider.tsx b/desktop/src/contexts/DevsyContext/proInstances/ProInstancesProvider.tsx deleted file mode 100644 index 0c4ce8a40..000000000 --- a/desktop/src/contexts/DevsyContext/proInstances/ProInstancesProvider.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { useQuery } from "@tanstack/react-query" -import { ReactNode, useMemo } from "react" -import { client } from "@/client/client" -import { QueryKeys } from "@/queryKeys" -import { useChangeSettings } from "../../SettingsContext" -import { REFETCH_INTERVAL_MS } from "../constants" -import { ProInstancesContext, TProInstancesContext } from "./context" - -export function ProInstancesProvider({ children }: Readonly<{ children?: ReactNode }>) { - const { set } = useChangeSettings() - - const proInstancesQuery = useQuery({ - queryKey: QueryKeys.PRO_INSTANCES, - queryFn: async () => { - const proInstances = (await client.pro.listProInstances({ authenticate: true })).unwrap() - if (proInstances !== undefined && proInstances.length > 0) { - set("experimental_devsyPro", true) - } - - return proInstances - }, - refetchInterval: REFETCH_INTERVAL_MS, - }) - - const value = useMemo( - () => [ - proInstancesQuery.data, - { status: proInstancesQuery.status, error: proInstancesQuery.error }, - ], - [proInstancesQuery.data, proInstancesQuery.status, proInstancesQuery.error] - ) - - return {children} -} diff --git a/desktop/src/contexts/DevsyContext/proInstances/context.ts b/desktop/src/contexts/DevsyContext/proInstances/context.ts deleted file mode 100644 index 9467d5454..000000000 --- a/desktop/src/contexts/DevsyContext/proInstances/context.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { createContext } from "react" -import { TProInstances, TQueryResult } from "@/types" - -export type TProInstancesContext = TQueryResult -export const ProInstancesContext = createContext([ - [], -] as unknown as TProInstancesContext) diff --git a/desktop/src/contexts/DevsyContext/proInstances/index.ts b/desktop/src/contexts/DevsyContext/proInstances/index.ts deleted file mode 100644 index 5d77658e8..000000000 --- a/desktop/src/contexts/DevsyContext/proInstances/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export { useProInstances } from "./useProInstances" -export { useProInstanceManager } from "./useProInstanceManager" -export { ProInstancesProvider } from "./ProInstancesProvider" -export { ProInstancesContext } from "./context" -export type { TProInstancesContext } from "./context" diff --git a/desktop/src/contexts/DevsyContext/proInstances/useProInstanceManager.ts b/desktop/src/contexts/DevsyContext/proInstances/useProInstanceManager.ts deleted file mode 100644 index 16608b9e0..000000000 --- a/desktop/src/contexts/DevsyContext/proInstances/useProInstanceManager.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { DaemonClient } from "@/client/pro/client" -import { PRO_RELEASE_NAME } from "@/client/repo" -import { Err, Failed } from "@/lib" -import { useMutation, useQueryClient } from "@tanstack/react-query" -import { useMemo } from "react" -import { client } from "@/client" -import { QueryKeys } from "@/queryKeys" -import { TProInstanceLoginConfig, TProInstanceManager, TProvider, TWithProID } from "@/types" - -const FALLBACK_PROVIDER_NAME = PRO_RELEASE_NAME - -export function useProInstanceManager(): TProInstanceManager { - const queryClient = useQueryClient() - const loginMutation = useMutation({ - mutationFn: async ({ host, accessKey, streamListener }) => { - ;(await client.pro.login(host, accessKey, streamListener)).unwrap() - - // if we don't have a provider name, check for the pro instance and then use it's provider name - const proInstances = (await client.pro.listProInstances()).unwrap() - const maybeNewInstance = proInstances?.find((instance) => instance.host === host) - let maybeProviderName = maybeNewInstance?.provider - - if (maybeNewInstance) { - const proClient = client.getProClient(maybeNewInstance) - if (proClient instanceof DaemonClient) { - await proClient.restartDaemon() - } - } - try { - const providers = (await client.providers.listAll()).unwrap() - if (providers === undefined || Object.keys(providers).length === 0) { - throw new Error("No providers found") - } - if (!maybeProviderName) { - maybeProviderName = FALLBACK_PROVIDER_NAME - } - const maybeProvider = providers[maybeProviderName] - if (!maybeProvider) { - throw new Error(`Provider ${maybeProviderName} not found`) - } - - return maybeProvider - } catch (e) { - ;(await client.pro.removeProInstance(host)).unwrap() - - throw e - } - }, - onSuccess: () => { - queryClient.invalidateQueries(QueryKeys.PRO_INSTANCES) - queryClient.invalidateQueries(QueryKeys.PROVIDERS) - }, - }) - const disconnectMutation = useMutation, TWithProID>({ - mutationFn: async ({ id }) => (await client.pro.removeProInstance(id)).unwrap(), - onSuccess: () => { - queryClient.invalidateQueries(QueryKeys.PRO_INSTANCES) - queryClient.invalidateQueries(QueryKeys.PROVIDERS) - }, - }) - - return useMemo( - () => ({ - login: { - run: loginMutation.mutate, - status: loginMutation.status, - error: loginMutation.error, - reset: loginMutation.reset, - provider: loginMutation.data, - }, - disconnect: { - run: disconnectMutation.mutate, - status: disconnectMutation.status, - error: disconnectMutation.error, - target: disconnectMutation.variables, - }, - }), - [disconnectMutation, loginMutation] - ) -} diff --git a/desktop/src/contexts/DevsyContext/proInstances/useProInstances.tsx b/desktop/src/contexts/DevsyContext/proInstances/useProInstances.tsx deleted file mode 100644 index 39e34a532..000000000 --- a/desktop/src/contexts/DevsyContext/proInstances/useProInstances.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { useContext } from "react" -import { TProInstanceManager } from "@/types" -import { useProInstanceManager } from "./useProInstanceManager" -import { ProInstancesContext, TProInstancesContext } from "./context" - -export function useProInstances(): [TProInstancesContext, TProInstanceManager] { - const proInstances = useContext(ProInstancesContext) - const manager = useProInstanceManager() - - return [proInstances, manager] -} diff --git a/desktop/src/contexts/DevsyContext/useProvider.ts b/desktop/src/contexts/DevsyContext/useProvider.ts deleted file mode 100644 index 7eb8e62eb..000000000 --- a/desktop/src/contexts/DevsyContext/useProvider.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { TProvider, TProviderID, TProviderManager } from "@/types" -import { useProviders } from "./useProviders" - -export function useProvider( - providerID: TProviderID | undefined | null -): [TProvider | undefined, TProviderManager] { - const [[providers], manager] = useProviders() - - return [providerID ? providers?.[providerID] : undefined, manager] -} diff --git a/desktop/src/contexts/DevsyContext/useProviderManager.ts b/desktop/src/contexts/DevsyContext/useProviderManager.ts deleted file mode 100644 index 87d88758b..000000000 --- a/desktop/src/contexts/DevsyContext/useProviderManager.ts +++ /dev/null @@ -1,116 +0,0 @@ -import { useMutation, useQueryClient } from "@tanstack/react-query" -import { useMemo } from "react" -import { client } from "@/client" -import { exists } from "@/lib" -import { QueryKeys } from "@/queryKeys" -import { TProviderManager, TProviders, TWithProviderID } from "@/types" - -export function useProviderManager(): TProviderManager { - const queryClient = useQueryClient() - - const removeMutation = useMutation({ - mutationFn: async ({ providerID }: TWithProviderID) => - (await client.providers.remove(providerID)).unwrap(), - onMutate({ providerID }) { - queryClient.cancelQueries({ queryKey: QueryKeys.PROVIDERS }) - const oldProviderSnapshot = queryClient.getQueryData(QueryKeys.PROVIDERS)?.[ - providerID - ] - - queryClient.setQueryData(QueryKeys.PROVIDERS, (current) => { - const shallowCopy = { ...current } - delete shallowCopy[providerID] - - return shallowCopy - }) - - return { oldProviderSnapshot } - }, - onError(_, { providerID }, ctx) { - const maybeOldProvider = ctx?.oldProviderSnapshot - if (exists(maybeOldProvider)) { - queryClient.setQueryData(QueryKeys.PROVIDERS, (current) => ({ - ...current, - [providerID]: maybeOldProvider, - })) - } - }, - onSuccess(_, { providerID }) { - queryClient.invalidateQueries({ queryKey: QueryKeys.provider(providerID) }) - }, - }) - - const renameMutation = useMutation({ - mutationFn: async ({ - oldProviderID, - newProviderID, - }: { - oldProviderID: string - newProviderID: string - }) => (await client.providers.rename(oldProviderID, newProviderID)).unwrap(), - onMutate({ oldProviderID, newProviderID }) { - queryClient.cancelQueries({ queryKey: QueryKeys.PROVIDERS }) - const oldProviders = queryClient.getQueryData(QueryKeys.PROVIDERS) - const oldProviderData = oldProviders?.[oldProviderID] - - queryClient.setQueryData(QueryKeys.PROVIDERS, (current) => { - if (!current) return current - const shallowCopy = { ...current } - delete shallowCopy[oldProviderID] - if (oldProviderData) { - shallowCopy[newProviderID] = oldProviderData - if (shallowCopy[newProviderID].config) { - shallowCopy[newProviderID] = { - ...shallowCopy[newProviderID], - config: { - ...shallowCopy[newProviderID].config!, - name: newProviderID, - }, - } - } - } - - return shallowCopy - }) - - return { oldProviderData } - }, - onError(_, { oldProviderID, newProviderID }, ctx) { - const maybeOldProvider = ctx?.oldProviderData - if (exists(maybeOldProvider)) { - queryClient.setQueryData(QueryKeys.PROVIDERS, (current) => { - if (!current) return current - const shallowCopy = { ...current } - delete shallowCopy[newProviderID] - shallowCopy[oldProviderID] = maybeOldProvider - - return shallowCopy - }) - } - }, - onSuccess(_, { oldProviderID, newProviderID }) { - queryClient.invalidateQueries({ queryKey: QueryKeys.provider(oldProviderID) }) - queryClient.invalidateQueries({ queryKey: QueryKeys.provider(newProviderID) }) - queryClient.invalidateQueries({ queryKey: QueryKeys.PROVIDERS }) - }, - }) - - return useMemo( - () => ({ - remove: { - run: removeMutation.mutate, - status: removeMutation.status, - error: removeMutation.error, - target: removeMutation.variables, - }, - rename: { - run: ({ oldProviderID, newProviderID }: { oldProviderID: string; newProviderID: string }) => - renameMutation.mutateAsync({ oldProviderID, newProviderID }), - status: renameMutation.status, - error: renameMutation.error, - target: renameMutation.variables, - }, - }), - [removeMutation, renameMutation] - ) -} diff --git a/desktop/src/contexts/DevsyContext/useProviders.ts b/desktop/src/contexts/DevsyContext/useProviders.ts deleted file mode 100644 index d33160941..000000000 --- a/desktop/src/contexts/DevsyContext/useProviders.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { useContext } from "react" -import { TProviderManager } from "@/types" -import { DevsyContext, TDevsyContext } from "./DevsyProvider" -import { useProviderManager } from "./useProviderManager" - -export function useProviders(): [TDevsyContext["providers"] | [undefined], TProviderManager] { - const providers = useContext(DevsyContext)?.providers ?? [undefined] - const manager = useProviderManager() - - return [providers, manager] -} diff --git a/desktop/src/contexts/DevsyContext/workspaceStore/WorkspaceStoreProvider.tsx b/desktop/src/contexts/DevsyContext/workspaceStore/WorkspaceStoreProvider.tsx deleted file mode 100644 index b081fe55b..000000000 --- a/desktop/src/contexts/DevsyContext/workspaceStore/WorkspaceStoreProvider.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { ReactNode, useMemo } from "react" -import { WorkspaceStoreContext } from "./context" -import { IWorkspaceStore } from "./workspaceStore" - -type TWorkspaceStoreProps = Readonly<{ - store: TStore - children?: ReactNode -}> -export function WorkspaceStoreProvider>({ - children, - store, -}: TWorkspaceStoreProps) { - const value = useMemo(() => ({ store }), [store]) - - return {children} -} diff --git a/desktop/src/contexts/DevsyContext/workspaceStore/context.ts b/desktop/src/contexts/DevsyContext/workspaceStore/context.ts deleted file mode 100644 index 5e0fa3011..000000000 --- a/desktop/src/contexts/DevsyContext/workspaceStore/context.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { createContext } from "react" -import { IWorkspaceStore } from "./workspaceStore" - -export type TWorkspaceStoreContext = Readonly<{ - store: IWorkspaceStore -}> -export const WorkspaceStoreContext = createContext(null!) diff --git a/desktop/src/contexts/DevsyContext/workspaceStore/index.ts b/desktop/src/contexts/DevsyContext/workspaceStore/index.ts deleted file mode 100644 index ef1d7621a..000000000 --- a/desktop/src/contexts/DevsyContext/workspaceStore/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export { WorkspaceStoreProvider } from "./WorkspaceStoreProvider" -export { useWorkspaceStore } from "./useWorkspaceStore" -export { WorkspaceStore, ProWorkspaceStore } from "./workspaceStore" -export type { IWorkspaceStore } from "./workspaceStore" diff --git a/desktop/src/contexts/DevsyContext/workspaceStore/useWorkspaceStore.ts b/desktop/src/contexts/DevsyContext/workspaceStore/useWorkspaceStore.ts deleted file mode 100644 index 5ff2b1b8a..000000000 --- a/desktop/src/contexts/DevsyContext/workspaceStore/useWorkspaceStore.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { useContext } from "react" -import { WorkspaceStoreContext } from "./context" -import { IWorkspaceStore } from "./workspaceStore" - -export function useWorkspaceStore>() { - const { store } = useContext(WorkspaceStoreContext) - - return { store: store as T } -} diff --git a/desktop/src/contexts/DevsyContext/workspaceStore/workspaceStore.ts b/desktop/src/contexts/DevsyContext/workspaceStore/workspaceStore.ts deleted file mode 100644 index e19a7c8f5..000000000 --- a/desktop/src/contexts/DevsyContext/workspaceStore/workspaceStore.ts +++ /dev/null @@ -1,276 +0,0 @@ -import { debug, EventManager, SingleEventManager } from "@/lib" -import { TProID, TUnsubscribeFn, TWorkspace, TWorkspaceID, TWorkspaceWithoutStatus } from "@/types" -import { ProWorkspaceInstance } from "../Pro" -import { Action, TActionFn, TActionName, TActionObj } from "../action" -import { ActionHistory } from "../action/actionHistory" // This is a workaround for how typescript resolves circular dependencies, usually the import should be from "./action" -import { replaceEqualDeep } from "../helpers" - -type TLastActions = Readonly<{ active: readonly TActionObj[]; history: readonly TActionObj[] }> -type TStartActionArgs = Readonly<{ - actionName: TActionName - workspaceKey: TInstanceID - actionFn: TActionFn -}> - -export interface IWorkspaceStore { - // workspaces - get(id: TKey): TW | undefined - getAll(): readonly TW[] - setWorkspace(id: TKey, newWorkspace: TW): void - setWorkspaces(newWorkspaces: readonly TW[]): void - removeWorkspace(workspaceKey: TKey): void - subscribe(listener: VoidFunction): TUnsubscribeFn - setStatus(workspaceKey: TKey, status: string | null | undefined): void - - // workspace actions - getAllActions(): TLastActions - getCurrentAction(workspaceKey: TKey): TActionObj | undefined - getWorkspaceActions(workspaceKey: TKey): TActionObj[] - startAction(args: TStartActionArgs): Action["id"] -} - -class InternalWorkspaceStore { - private readonly eventManager = new SingleEventManager() - private actionsHistory: ActionHistory - private workspaces = new Map() - private lastWorkspaces: readonly TWorkspace[] = [] - private lastActions: TLastActions = { active: [], history: [] } - - constructor(key?: string) { - this.actionsHistory = new ActionHistory(key) - this.lastActions = this.actionsHistory.getAll() - } - - public subscribe(listener: VoidFunction): TUnsubscribeFn { - const handler = EventManager.toHandler(listener) - - return this.eventManager.subscribe(handler) - } - - public get(key: TKey): TWorkspace | undefined { - return this.workspaces.get(key) - } - - public getAll(): readonly TWorkspace[] { - return this.lastWorkspaces - } - - public getWorkspaceActions(workspaceKey: TKey): TActionObj[] { - return [ - ...this.lastActions.active.filter((action) => action.targetID === workspaceKey), - ...this.lastActions.history.filter((action) => action.targetID === workspaceKey).reverse(), - ] - } - - public getCurrentAction(workspaceKey: TKey): TActionObj | undefined { - return this.lastActions.active.find((action) => action.targetID === workspaceKey) - } - - public getAllActions(): TLastActions { - return this.lastActions - } - - public removeWorkspace(workspaceKey: TKey): void { - this.workspaces.delete(workspaceKey) - this.workspacesDidChange() - } - - public startAction({ actionName, workspaceKey, actionFn }: TStartActionArgs): Action["id"] { - // By default, actions cancel previous actios. - // If you need to wait for an action to finish, you can use `getCurrentAction` and wait until it is undefined - const maybeCurrentAction = this.actionsHistory.getActive(workspaceKey) - if (maybeCurrentAction !== undefined) { - maybeCurrentAction.cancel() - this.actionsHistory.archive(maybeCurrentAction) - } - - const action = new Action(actionName, workspaceKey, actionFn) - this.actionsHistory.addActive(workspaceKey, action) - - // Setup listener for when the action is done - action.once(() => { - // We need to give the UI a chance to listen to the settled state, so we need to inform it about the change once - // before and once after archiving the action - this.actionDidChange() - this.actionsHistory.archive(action) - // Notify react on next tick of event loop to check the actions once more. - // This ensures we have a chance to move from the `pending` to one of the `settled` states with the UI noticing. - setTimeout(() => { - this.actionDidChange() - }, 0) - }) - - action.run() - this.actionDidChange() - - return action.id - } - - public setWorkspaces(newWorkspaces: Map) { - this.workspaces = newWorkspaces - this.workspacesDidChange() - } - - public setWorkspace(id: TKey, newWorkspace: TWorkspace) { - this.workspaces.set(id, newWorkspace) - this.workspacesDidChange() - } - - private actionDidChange() { - this.lastActions = this.actionsHistory.getAll() - this.eventManager.publish() - debug("actions", this.lastActions) - } - - private workspacesDidChange() { - this.lastWorkspaces = Array.from(this.workspaces.values()) - this.eventManager.publish() - debug("workspaces", this.lastWorkspaces) - } -} - -export class WorkspaceStore implements IWorkspaceStore { - private store = new InternalWorkspaceStore() - - public get(id: TWorkspaceID): TWorkspace | undefined { - return this.store.get(id) - } - - public getAll(): readonly TWorkspace[] { - return this.store.getAll() - } - - public setWorkspace(id: TWorkspaceID, newWorkspace: TWorkspace): void { - return this.store.setWorkspace(id, newWorkspace) - } - - public setWorkspaces(newWorkspaces: readonly TWorkspaceWithoutStatus[]): void { - const prevWorkspaces = this.store.getAll().map((workspace) => { - // we need to remove `status` before comparing the workspaces because the new ones will not have it. - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { status: _, ...w } = workspace - - return w - }) - - const workspaces = replaceEqualDeep(prevWorkspaces, newWorkspaces) - - if (Object.is(workspaces, prevWorkspaces)) { - return - } - - const newWorkspacesMap = new Map( - workspaces.map((workspace) => { - // patch existing status if we have one for this workspace - new ones will be sent without it - const maybeExistingWorkspace = this.store.get(workspace.id) - - return [workspace.id, { ...workspace, status: maybeExistingWorkspace?.status }] - }) - ) - this.store.setWorkspaces(newWorkspacesMap) - } - - public removeWorkspace(workspaceID: TWorkspaceID): void { - return this.store.removeWorkspace(workspaceID) - } - - public subscribe(listener: VoidFunction): TUnsubscribeFn { - return this.store.subscribe(listener) - } - - public setStatus(workspaceID: TWorkspaceID, status: string | null | undefined): void { - const maybeWorkspace = this.store.get(workspaceID) - if (maybeWorkspace === undefined) { - return - } - - const prevStatus = maybeWorkspace.status - if (status === prevStatus) { - return - } - - this.store.setWorkspace(workspaceID, { - ...maybeWorkspace, - status: status as TWorkspace["status"], - }) - } - - public getAllActions(): TLastActions { - return this.store.getAllActions() - } - - public getCurrentAction(workspaceID: TWorkspaceID): TActionObj | undefined { - return this.store.getCurrentAction(workspaceID) - } - - public getWorkspaceActions(workspaceID: TWorkspaceID): TActionObj[] { - return this.store.getWorkspaceActions(workspaceID) - } - - public startAction(args: TStartActionArgs): Action["id"] { - return this.store.startAction(args) - } -} - -type TInstanceID = string -export class ProWorkspaceStore implements IWorkspaceStore { - private store: InternalWorkspaceStore - constructor(id: TProID) { - this.store = new InternalWorkspaceStore(id) - } - - public get(key: TInstanceID): ProWorkspaceInstance | undefined { - return this.store.get(key) - } - - public getAll(): readonly ProWorkspaceInstance[] { - return this.store.getAll() - } - - public setWorkspace(key: TInstanceID, newWorkspace: ProWorkspaceInstance): void { - return this.store.setWorkspace(key, newWorkspace) - } - - public setWorkspaces(newInstances: readonly ProWorkspaceInstance[]): void { - const prevInstances = this.store.getAll() - - const instances = replaceEqualDeep(prevInstances, newInstances) - - if (Object.is(instances, prevInstances)) { - return - } - - const newWorkspacesMap = new Map(instances.map((instance) => [instance.id, instance])) - this.store.setWorkspaces(newWorkspacesMap) - } - - public removeWorkspace(workspaceKey: TInstanceID): void { - return this.store.removeWorkspace(workspaceKey) - } - - public subscribe(listener: VoidFunction): TUnsubscribeFn { - return this.store.subscribe(listener) - } - - // eslint-disable-next-line @typescript-eslint/no-unused-vars - public setStatus(_workspaceKey: TInstanceID, _status: string): void { - // noop - return - } - - public getAllActions(): TLastActions { - return this.store.getAllActions() - } - - public getCurrentAction(workspaceKey: TInstanceID): TActionObj | undefined { - return this.store.getCurrentAction(workspaceKey) - } - - public getWorkspaceActions(workspaceKey: TInstanceID): TActionObj[] { - return this.store.getWorkspaceActions(workspaceKey) - } - - public startAction(args: TStartActionArgs): Action["id"] { - return this.store.startAction(args) - } -} diff --git a/desktop/src/contexts/DevsyContext/workspaces/index.ts b/desktop/src/contexts/DevsyContext/workspaces/index.ts deleted file mode 100644 index f3946eef4..000000000 --- a/desktop/src/contexts/DevsyContext/workspaces/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -export { usePollWorkspaces } from "./usePollWorkspaces" -export { - useWorkspace, - useWorkspaceActions, - startWorkspaceAction, - stopWorkspaceAction, - removeWorkspaceAction, -} from "./useWorkspace" -export { useWorkspaces } from "./useWorkspaces" -export { useAllWorkspaceActions } from "./useAllWorkspaceActions" diff --git a/desktop/src/contexts/DevsyContext/workspaces/useAllWorkspaceActions.ts b/desktop/src/contexts/DevsyContext/workspaces/useAllWorkspaceActions.ts deleted file mode 100644 index 0edb00230..000000000 --- a/desktop/src/contexts/DevsyContext/workspaces/useAllWorkspaceActions.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { useCallback, useSyncExternalStore } from "react" -import { TActionObj } from "../action" -import { useWorkspaceStore } from "../workspaceStore" - -export function useAllWorkspaceActions() { - const { store } = useWorkspaceStore() - const actions = useSyncExternalStore( - useCallback((listener) => store.subscribe(listener), [store]), - () => store.getAllActions() - ) - - return { active: actions.active, history: actions.history.slice().sort(sortByCreationDesc) } -} - -function sortByCreationDesc(a: TActionObj, b: TActionObj) { - return b.createdAt - a.createdAt -} diff --git a/desktop/src/contexts/DevsyContext/workspaces/usePollWorkspaces.ts b/desktop/src/contexts/DevsyContext/workspaces/usePollWorkspaces.ts deleted file mode 100644 index 6049f9503..000000000 --- a/desktop/src/contexts/DevsyContext/workspaces/usePollWorkspaces.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { useCallback, useEffect } from "react" -import { client } from "@/client/client" -import { TWorkspaceID } from "@/types" -import { REFETCH_INTERVAL_MS } from "../constants" -import { WorkspaceStore, useWorkspaceStore } from "../workspaceStore" - -export function usePollWorkspaces() { - const { store } = useWorkspaceStore() - const listWorkspaces = useCallback(async () => { - const result = await client.workspaces.listAll() - if (result.err) { - return - } - store.setWorkspaces(result.val) - }, [store]) - - const updateStatus = useCallback( - async (ongoingRequests: Record) => { - for (const workspace of store.getAll()) { - // Don't kick off a request if we already have one in flight or if we're executing an action on this workspace - const currentAction = store.getCurrentAction(workspace.id) - if (ongoingRequests[workspace.id] !== undefined || currentAction != undefined) { - continue - } - - ongoingRequests[workspace.id] = true - try { - const result = await client.workspaces.getStatus(workspace.id) - if (result.err) { - continue - } - // We don't care about the order here, we just want to update the status - // whenever we get a result back - store.setStatus(workspace.id, result.val) - } finally { - delete ongoingRequests[workspace.id] - } - } - }, - [store] - ) - - useEffect(() => { - const workspacesIntervalID = setInterval(listWorkspaces, REFETCH_INTERVAL_MS) - - const ongoingRequests: Record = {} - const statusIntervalID = setInterval(async () => { - await updateStatus(ongoingRequests) - }, REFETCH_INTERVAL_MS) - - const initialTimeoutID = setTimeout(async () => { - await listWorkspaces() - await updateStatus(ongoingRequests) - }, 0) - - return () => { - clearInterval(workspacesIntervalID) - clearInterval(statusIntervalID) - clearTimeout(initialTimeoutID) - } - }, [listWorkspaces, updateStatus]) -} diff --git a/desktop/src/contexts/DevsyContext/workspaces/useWorkspace.ts b/desktop/src/contexts/DevsyContext/workspaces/useWorkspace.ts deleted file mode 100644 index 8ec6fa5e2..000000000 --- a/desktop/src/contexts/DevsyContext/workspaces/useWorkspace.ts +++ /dev/null @@ -1,370 +0,0 @@ -import { useCallback, useId, useMemo, useRef, useSyncExternalStore } from "react" -import { client, TStreamEventListenerFn } from "@/client" -import { exists } from "@/lib" -import { TIdentifiable, TStreamID, TWorkspaceID, TWorkspaceStartConfig } from "@/types" -import { TActionID, TActionObj, useConnectAction, useReplayAction } from "../action" -import { IWorkspaceStore, ProWorkspaceStore, useWorkspaceStore } from "../workspaceStore" - -export type TWorkspaceResult = Readonly<{ - data: T | undefined - isLoading: boolean - current: - | (TActionObj & Readonly<{ connect: (listener: TStreamEventListenerFn) => void }>) - | undefined - history: Readonly<{ - // all: readonly TActionObj[] - replay: (actionID: TActionID, listener: TStreamEventListenerFn) => void - }> - start: (config: TWorkspaceStartConfig, onStream?: TStreamEventListenerFn) => TActionID | undefined - create: ( - config: Omit & - Pick & - Readonly<{ workspaceKey?: string }>, - onStream?: TStreamEventListenerFn - ) => TActionID - stop: (onStream?: TStreamEventListenerFn) => TActionID | undefined - remove: (force: boolean, onStream?: TStreamEventListenerFn) => TActionID | undefined - rebuild: (onStream?: TStreamEventListenerFn) => TActionID | undefined - reset: (onStream?: TStreamEventListenerFn) => TActionID | undefined - checkStatus: (onStream?: TStreamEventListenerFn) => TActionID | undefined -}> - -export function useWorkspaceActions( - workspaceID: TWorkspaceID | undefined -): TActionObj[] | undefined { - const { store } = useWorkspaceStore() - const dataCache = useRef() - const data = useSyncExternalStore( - useCallback((listener) => store.subscribe(listener), [store]), - () => { - if (workspaceID === undefined) { - return undefined - } - - // It's okay to use sort directly here because the store always returns a new array - const workspaceActions = store.getWorkspaceActions(workspaceID).sort((a, b) => { - if (a.finishedAt && b.finishedAt) { - return b.finishedAt - a.finishedAt - } - - return b.createdAt - a.createdAt - }) - if (!dataCache.current || dataCache.current.length !== workspaceActions.length) { - dataCache.current = workspaceActions - - return dataCache.current - } - - // compare actions - const diff = dataCache.current.filter( - (action) => !workspaceActions.find((workspaceAction) => action.id === workspaceAction.id) - ) - if (diff.length > 0) { - dataCache.current = workspaceActions - - return dataCache.current - } - - return dataCache.current - } - ) - - return data -} - -export function useWorkspace( - workspaceKey: string | undefined -): TWorkspaceResult { - const { store } = useWorkspaceStore>() - const viewID = useId() - const data = useSyncExternalStore( - useCallback((listener) => store.subscribe(listener), [store]), - () => (workspaceKey !== undefined ? store.get(workspaceKey) : undefined) - ) - const workspaceID = useMemo(() => { - if (!data) { - return undefined - } - - return data.id - }, [data]) - - const create = useCallback["create"]>( - (config, onStream) => { - return store.startAction({ - actionName: "start", - workspaceKey: config.workspaceKey ?? config.id, - actionFn: async (ctx) => { - const result = await client.workspaces.start(config, onStream, { - id: config.id, - actionID: ctx.id, - streamID: viewID, - }) - if (result.err) { - return result - } - store.setStatus(config.id, result.val) - - return result - }, - }) - }, - [store, viewID] - ) - - const start = useCallback["start"]>( - (config, onStream) => { - if (workspaceID === undefined) { - return - } - - return startWorkspaceAction({ workspaceID, config, onStream, streamID: viewID, store }) - }, - [store, viewID, workspaceID] - ) - - const checkStatus = useCallback["checkStatus"]>( - (onStream) => { - if (workspaceID === undefined) { - return - } - - return store.startAction({ - actionName: "checkStatus", - workspaceKey: workspaceID, - actionFn: async (ctx) => { - const result = await client.workspaces.checkStatus(onStream, { - id: workspaceID, - actionID: ctx.id, - streamID: viewID, - }) - if (result.err) { - return result - } - store.setStatus(workspaceID, result.val) - - return result - }, - }) - }, - [store, viewID, workspaceID] - ) - - const stop = useCallback["stop"]>( - (onStream) => { - if (workspaceID === undefined) { - return - } - - return stopWorkspaceAction({ workspaceID, onStream, streamID: viewID, store }) - }, - [store, viewID, workspaceID] - ) - - const rebuild = useCallback["rebuild"]>( - (onStream) => { - if (workspaceID === undefined) { - return - } - - return store.startAction({ - actionName: "rebuild", - workspaceKey: workspaceID, - actionFn: async (ctx) => { - const result = await client.workspaces.rebuild(onStream, { - id: workspaceID, - actionID: ctx.id, - streamID: viewID, - }) - if (result.err) { - return result - } - store.setStatus(workspaceID, result.val) - - return result - }, - }) - }, - [store, viewID, workspaceID] - ) - - const reset = useCallback["reset"]>( - (onStream) => { - if (workspaceID === undefined) { - return - } - - return store.startAction({ - actionName: "reset", - workspaceKey: workspaceID, - actionFn: async (ctx) => { - const result = await client.workspaces.reset(onStream, { - id: workspaceID, - actionID: ctx.id, - streamID: viewID, - }) - if (result.err) { - return result - } - store.setStatus(workspaceID, result.val) - - return result - }, - }) - }, - [store, viewID, workspaceID] - ) - - const remove = useCallback["remove"]>( - (force, onStream) => { - if (workspaceID === undefined) { - return - } - - return removeWorkspaceAction({ force, workspaceID, onStream, streamID: viewID, store }) - }, - [store, viewID, workspaceID] - ) - - const currentAction = useSyncExternalStore( - useCallback((listener) => store.subscribe(listener), [store]), - () => (workspaceID !== undefined ? store.getCurrentAction(workspaceID) : undefined) - ) - const isLoading = useMemo(() => exists(currentAction), [currentAction]) - - const connect = useConnectAction(currentAction, viewID) - const current = useMemo["current"]>(() => { - if (currentAction === undefined) { - return undefined - } - - return { - ...currentAction, - connect, - } - }, [currentAction, connect]) - - const replay = useReplayAction() - const history = useMemo["history"]>(() => { - return { replay } - }, [replay]) - - return useMemo( - () => ({ - data, - isLoading, - current, - history, - create, - start, - stop, - rebuild, - reset, - remove, - checkStatus, - }), - [data, isLoading, current, history, create, start, stop, rebuild, reset, remove, checkStatus] - ) -} - -type TStartWorkspaceActionArgs = Readonly<{ - config: TWorkspaceStartConfig - onStream?: TStreamEventListenerFn - workspaceID: TWorkspaceID - streamID: TStreamID - store: IWorkspaceStore -}> -export function startWorkspaceAction({ - workspaceID, - streamID, - config, - onStream, - store, -}: TStartWorkspaceActionArgs): TActionObj["id"] { - return store.startAction({ - actionName: "start", - workspaceKey: workspaceID, - actionFn: async (ctx) => { - const result = await client.workspaces.start(config, onStream, { - id: workspaceID, - actionID: ctx.id, - streamID, - }) - if (result.err) { - return result - } - store.setStatus(workspaceID, result.val) - - return result - }, - }) -} - -type TStopWorkspaceActionArgs = Readonly<{ - onStream?: TStreamEventListenerFn - workspaceID: TWorkspaceID - streamID: TStreamID - store: IWorkspaceStore -}> -export function stopWorkspaceAction({ - workspaceID, - onStream, - streamID, - store, -}: TStopWorkspaceActionArgs): TActionObj["id"] { - return store.startAction({ - actionName: "stop", - workspaceKey: workspaceID, - actionFn: async (ctx) => { - const result = await client.workspaces.stop(onStream, { - id: workspaceID, - actionID: ctx.id, - streamID, - }) - if (result.err) { - return result - } - store.setStatus(workspaceID, result.val) - - return result - }, - }) -} - -type TRemoveWorkspaceActionArgs = Readonly<{ - onStream?: TStreamEventListenerFn - workspaceID: TWorkspaceID - streamID: TStreamID - force: boolean - store: IWorkspaceStore -}> -export function removeWorkspaceAction({ - workspaceID, - onStream, - streamID, - force, - store, -}: TRemoveWorkspaceActionArgs): TActionObj["id"] { - return store.startAction({ - actionName: "remove", - workspaceKey: workspaceID, - actionFn: async (ctx) => { - const result = await client.workspaces.remove(force, onStream, { - id: workspaceID, - actionID: ctx.id, - streamID, - }) - if (result.err) { - return result - } - // Pro Desktop app will get updates through watcher, no need to remove from local store - if (store instanceof ProWorkspaceStore) { - return result - } - - store.removeWorkspace(workspaceID) - - return result - }, - }) -} diff --git a/desktop/src/contexts/DevsyContext/workspaces/useWorkspaces.ts b/desktop/src/contexts/DevsyContext/workspaces/useWorkspaces.ts deleted file mode 100644 index e8c9371c5..000000000 --- a/desktop/src/contexts/DevsyContext/workspaces/useWorkspaces.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { useCallback, useSyncExternalStore } from "react" -import { IWorkspaceStore, useWorkspaceStore } from "../workspaceStore" - -export function useWorkspaces(): readonly TW[] { - const { store } = useWorkspaceStore>() - const workspaces = useSyncExternalStore( - useCallback((listener) => store.subscribe(listener), [store]), - () => store.getAll() - ) - - return workspaces -} diff --git a/desktop/src/contexts/SettingsContext/SettingsContext.tsx b/desktop/src/contexts/SettingsContext/SettingsContext.tsx deleted file mode 100644 index c148e3c44..000000000 --- a/desktop/src/contexts/SettingsContext/SettingsContext.tsx +++ /dev/null @@ -1,114 +0,0 @@ -import { ReactNode, useCallback, useEffect, useMemo, useState } from "react" -import { client } from "@/client/client" -import { getKeys, LocalStorageToFileMigrationBackend, Store } from "@/lib" -import { TUnsubscribeFn } from "@/types" -import { TSetting, TSettings, TSettingsContext, SettingsContext } from "./useSettings" - -const initialSettings: TSettings = { - sidebarPosition: "left", - debugFlag: false, - partyParrot: false, - fixedIDE: false, - zoom: "md", - transparency: false, - autoUpdate: true, - additionalCliFlags: "", - additionalEnvVars: "", - dotfilesUrl: "", - sshKeyPath: "", - httpProxyUrl: "", - httpsProxyUrl: "", - noProxy: "", - - experimental_colorMode: "light", - experimental_multiDevcontainer: false, - experimental_fleet: true, - experimental_jupyterNotebooks: true, - experimental_vscodeInsiders: true, - experimental_cursor: true, - experimental_positron: true, - experimental_zed: true, - experimental_codium: true, - experimental_rstudio: true, - experimental_windsurf: true, - experimental_antigravity: true, - experimental_bob: true, - experimental_devsyPro: false, -} -function getSettingKeys(): readonly TSetting[] { - return getKeys(initialSettings) -} - -// WARN: needs to match the filename on the rust side -const SETTING_STORE_KEY = "settings" -const settingsStore = new Store>( - new LocalStorageToFileMigrationBackend(SETTING_STORE_KEY) -) - -export function SettingsProvider({ children }: Readonly<{ children?: ReactNode }>) { - const [settings, setSettings] = useState(initialSettings) - - useEffect(() => { - ;(async () => { - const initialOptions = await Promise.all( - getSettingKeys().map((option) => - settingsStore - .get(option) - .then((value) => [option, value ?? initialSettings[option]] as const) - .catch(() => [option, false] as const) - ) - ) - setSettings( - initialOptions.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), initialSettings) - ) - })() - }, []) - - useEffect(() => { - const subscriptions: TUnsubscribeFn[] = [] - - for (const setting of getSettingKeys()) { - subscriptions.push( - settingsStore.subscribe(setting, (newValue) => - setSettings((current) => ({ ...current, [setting]: newValue })) - ) - ) - } - - return () => { - for (const unsubscribe of subscriptions) { - unsubscribe() - } - } - }, []) - - useEffect(() => { - client.setSetting("debugFlag", settings.debugFlag) - }, [settings.debugFlag]) - - useEffect(() => { - client.setSetting("additionalCliFlags", settings.additionalCliFlags) - }, [settings.additionalCliFlags]) - - useEffect(() => { - client.setSetting("dotfilesUrl", settings.dotfilesUrl) - }, [settings.dotfilesUrl]) - - useEffect(() => { - client.setSetting("additionalEnvVars", settings.additionalEnvVars) - }, [settings.additionalEnvVars]) - - useEffect(() => { - client.setSetting("httpProxyUrl", settings.httpProxyUrl) - client.setSetting("httpsProxyUrl", settings.httpsProxyUrl) - client.setSetting("noProxy", settings.noProxy) - }, [settings.httpProxyUrl, settings.httpsProxyUrl, settings.noProxy]) - - const set = useCallback((key, value) => { - settingsStore.set(key, value) - }, []) - - const value = useMemo(() => ({ settings, set }), [set, settings]) - - return {children} -} diff --git a/desktop/src/contexts/SettingsContext/index.ts b/desktop/src/contexts/SettingsContext/index.ts deleted file mode 100644 index 78cc82a31..000000000 --- a/desktop/src/contexts/SettingsContext/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { useSettings, useChangeSettings } from "./useSettings" -export { SettingsProvider } from "./SettingsContext" -export type { TSettingsContext, TSettings } from "./useSettings" diff --git a/desktop/src/contexts/SettingsContext/useSettings.ts b/desktop/src/contexts/SettingsContext/useSettings.ts deleted file mode 100644 index fb8be1291..000000000 --- a/desktop/src/contexts/SettingsContext/useSettings.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { createContext, useContext } from "react" -import { Settings } from "@/gen" - -export type TSettings = Settings -export type TSetting = keyof TSettings - -export type TSettingsContext = Readonly<{ - settings: TSettings - set(setting: TKey, value: TSettings[TKey]): void -}> - -export const SettingsContext = createContext(null!) -export function useSettings() { - return useContext(SettingsContext).settings -} - -export function useChangeSettings() { - return useContext(SettingsContext) -} diff --git a/desktop/src/contexts/ToolbarContext/ToolbarContext.tsx b/desktop/src/contexts/ToolbarContext/ToolbarContext.tsx deleted file mode 100644 index 85091b18d..000000000 --- a/desktop/src/contexts/ToolbarContext/ToolbarContext.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { ReactNode, useCallback, useMemo, useState } from "react" -import { TToolbarAction, TToolbarContext, ToolbarContext } from "./useToolbar" - -export function ToolbarProvider({ children }: Readonly<{ children: ReactNode }>) { - const [title, setTitle] = useState(null) - const [actions, setActions] = useState([]) - const addAction = useCallback((id, node) => { - setActions((actions) => { - const newActions = actions.slice() - const index = newActions.findIndex((a) => a.id === id) - if (index !== -1) { - newActions.splice(index, 1, { id, node: node }) - } else { - newActions.push({ id, node: node }) - } - - return newActions - }) - - return () => { - setActions((actions) => actions.filter((a) => a.id !== id)) - } - }, []) - const value = useMemo( - () => ({ title, setTitle, actions: actions.map((a) => a.node), addAction }), - [title, actions, addAction] - ) - - return {children} -} diff --git a/desktop/src/contexts/ToolbarContext/index.ts b/desktop/src/contexts/ToolbarContext/index.ts deleted file mode 100644 index b84578d4d..000000000 --- a/desktop/src/contexts/ToolbarContext/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./ToolbarContext" -export { useToolbar } from "./useToolbar" diff --git a/desktop/src/contexts/ToolbarContext/useToolbar.ts b/desktop/src/contexts/ToolbarContext/useToolbar.ts deleted file mode 100644 index 4b148eb3f..000000000 --- a/desktop/src/contexts/ToolbarContext/useToolbar.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ReactNode, createContext, useContext } from "react" - -export type TToolbarContext = Readonly<{ - title: ReactNode - setTitle: (title: ReactNode) => void - actions: readonly ReactNode[] - addAction: (id: string, action: ReactNode) => void -}> -export type TToolbarAction = Readonly<{ - id: string - node: ReactNode -}> -export const ToolbarContext = createContext(null!) -export function useToolbar() { - return useContext(ToolbarContext) -} diff --git a/desktop/src/contexts/index.ts b/desktop/src/contexts/index.ts deleted file mode 100644 index a761da18a..000000000 --- a/desktop/src/contexts/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from "./DevsyContext" -export * from "./ToolbarContext" -export { SettingsProvider, useSettings, useChangeSettings } from "./SettingsContext" -export type { TSettings } from "./SettingsContext" diff --git a/desktop/src/gen/Asset.ts b/desktop/src/gen/Asset.ts deleted file mode 100644 index 59f6def85..000000000 --- a/desktop/src/gen/Asset.ts +++ /dev/null @@ -1,16 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. - -export interface Asset { - url: string - browser_download_url: string - id: bigint - node_id: string - name: string - label: string | null - state: string - content_type: string - size: bigint - download_count: bigint - created_at: string - updated_at: string -} diff --git a/desktop/src/gen/Author.ts b/desktop/src/gen/Author.ts deleted file mode 100644 index 27a7c0806..000000000 --- a/desktop/src/gen/Author.ts +++ /dev/null @@ -1,22 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. - -export interface Author { - login: string - id: bigint - node_id: string - avatar_url: String - gravatar_id: string - url: string - html_url: string - followers_url: string - following_url: string - gists_url: string - starred_url: string - subscriptions_url: string - organizations_url: string - repos_url: string - events_url: string - received_events_url: string - type: string - site_admin: boolean -} diff --git a/desktop/src/gen/ColorMode.ts b/desktop/src/gen/ColorMode.ts deleted file mode 100644 index 767620c24..000000000 --- a/desktop/src/gen/ColorMode.ts +++ /dev/null @@ -1,3 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. - -export type ColorMode = "dark" | "light" diff --git a/desktop/src/gen/DaemonState.ts b/desktop/src/gen/DaemonState.ts deleted file mode 100644 index 6c5467b02..000000000 --- a/desktop/src/gen/DaemonState.ts +++ /dev/null @@ -1,3 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. - -export type DaemonState = "stopped" | "pending" | "running" diff --git a/desktop/src/gen/DaemonStatus.ts b/desktop/src/gen/DaemonStatus.ts deleted file mode 100644 index 6c279043c..000000000 --- a/desktop/src/gen/DaemonStatus.ts +++ /dev/null @@ -1,8 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -import type { DaemonState } from "./DaemonState" - -export interface DaemonStatus { - state: DaemonState - online: boolean - loginRequired: boolean -} diff --git a/desktop/src/gen/Release.ts b/desktop/src/gen/Release.ts deleted file mode 100644 index c10c09a79..000000000 --- a/desktop/src/gen/Release.ts +++ /dev/null @@ -1,24 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -import type { Asset } from "./Asset" -import type { Author } from "./Author" - -export interface Release { - url: String - html_url: string - assets_url: string - upload_url: string - tarball_url: string | null - zipball_url: string | null - id: bigint - node_id: string - tag_name: string - target_commitish: string - name: string | null - body: string | null - draft: boolean - prerelease: boolean - created_at: string | null - published_at: string | null - author: Author - assets: Array -} diff --git a/desktop/src/gen/Settings.ts b/desktop/src/gen/Settings.ts deleted file mode 100644 index 7c6c66ce5..000000000 --- a/desktop/src/gen/Settings.ts +++ /dev/null @@ -1,35 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. -import type { ColorMode } from "./ColorMode" -import type { SidebarPosition } from "./SidebarPosition" -import type { Zoom } from "./Zoom" - -export interface Settings { - sidebarPosition: SidebarPosition - debugFlag: boolean - partyParrot: boolean - fixedIDE: boolean - zoom: Zoom - transparency: boolean - autoUpdate: boolean - additionalCliFlags: string - additionalEnvVars: string - dotfilesUrl: string - sshKeyPath: string - httpProxyUrl: string - httpsProxyUrl: string - noProxy: string - experimental_multiDevcontainer: boolean - experimental_fleet: boolean - experimental_jupyterNotebooks: boolean - experimental_vscodeInsiders: boolean - experimental_cursor: boolean - experimental_codium: boolean - experimental_zed: boolean - experimental_positron: boolean - experimental_rstudio: boolean - experimental_windsurf: boolean - experimental_antigravity: boolean - experimental_bob: boolean - experimental_devsyPro: boolean - experimental_colorMode: ColorMode -} diff --git a/desktop/src/gen/SidebarPosition.ts b/desktop/src/gen/SidebarPosition.ts deleted file mode 100644 index a7265bc58..000000000 --- a/desktop/src/gen/SidebarPosition.ts +++ /dev/null @@ -1,3 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. - -export type SidebarPosition = "left" | "right" diff --git a/desktop/src/gen/Zoom.ts b/desktop/src/gen/Zoom.ts deleted file mode 100644 index 4e7f26706..000000000 --- a/desktop/src/gen/Zoom.ts +++ /dev/null @@ -1,3 +0,0 @@ -// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. - -export type Zoom = "sm" | "md" | "lg" | "xl" diff --git a/desktop/src/gen/index.ts b/desktop/src/gen/index.ts deleted file mode 100644 index 74df31c18..000000000 --- a/desktop/src/gen/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -export * from "./Asset" -export * from "./Author" -export * from "./ColorMode" -export * from "./DaemonState" -export * from "./DaemonStatus" -export * from "./Release" -export * from "./Settings" -export * from "./SidebarPosition" -export * from "./Zoom" -export * from "./index" diff --git a/desktop/src/icons/ArrowCycle.tsx b/desktop/src/icons/ArrowCycle.tsx deleted file mode 100644 index e45a180bc..000000000 --- a/desktop/src/icons/ArrowCycle.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const ArrowCycle = createIcon({ - displayName: "ArrowCycle", - viewBox: "0 0 20 20", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/ArrowDown.tsx b/desktop/src/icons/ArrowDown.tsx deleted file mode 100644 index 1e091fee3..000000000 --- a/desktop/src/icons/ArrowDown.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const ArrowDown = createIcon({ - displayName: "ArrowDown", - viewBox: "0 0 16 16", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/ArrowLeft.tsx b/desktop/src/icons/ArrowLeft.tsx deleted file mode 100644 index 0c8763717..000000000 --- a/desktop/src/icons/ArrowLeft.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const ArrowLeft = createIcon({ - displayName: "ArrowLeft", - viewBox: "0 0 20 20", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/ArrowPath.tsx b/desktop/src/icons/ArrowPath.tsx deleted file mode 100644 index a2b9c69a8..000000000 --- a/desktop/src/icons/ArrowPath.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const ArrowPath = createIcon({ - displayName: "ArrowPath", - viewBox: "0 0 20 20", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/ArrowUp.tsx b/desktop/src/icons/ArrowUp.tsx deleted file mode 100644 index a5bd90602..000000000 --- a/desktop/src/icons/ArrowUp.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const ArrowUp = createIcon({ - displayName: "ArrowUp", - viewBox: "0 0 16 16", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/Bell.tsx b/desktop/src/icons/Bell.tsx deleted file mode 100644 index a2e23957b..000000000 --- a/desktop/src/icons/Bell.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Bell = createIcon({ - displayName: "Bell", - viewBox: "0 0 20 20", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/BellDuotone.tsx b/desktop/src/icons/BellDuotone.tsx deleted file mode 100644 index 9c2f1b07a..000000000 --- a/desktop/src/icons/BellDuotone.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const BellDuotone = createIcon({ - displayName: "BellDuotone", - viewBox: "0 0 16 16", - defaultProps, - path: [ - , - , - ], -}) diff --git a/desktop/src/icons/Briefcase.tsx b/desktop/src/icons/Briefcase.tsx deleted file mode 100644 index b6df5ef01..000000000 --- a/desktop/src/icons/Briefcase.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Briefcase = createIcon({ - displayName: "Briefcase", - viewBox: "0 0 20 20", - defaultProps, - path: [ - , - , - ], -}) diff --git a/desktop/src/icons/CPU.tsx b/desktop/src/icons/CPU.tsx deleted file mode 100644 index fc6c53852..000000000 --- a/desktop/src/icons/CPU.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const CPU = createIcon({ - displayName: "CPU", - viewBox: "0 0 24 24", - defaultProps, - path: [ - , - , - , - , - , - , - , - , - , - , - ], -}) diff --git a/desktop/src/icons/CheckCircle.tsx b/desktop/src/icons/CheckCircle.tsx deleted file mode 100644 index 4397f867e..000000000 --- a/desktop/src/icons/CheckCircle.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const CheckCircle = createIcon({ - displayName: "CheckCircle", - viewBox: "0 0 20 20", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/CircleDuotone.tsx b/desktop/src/icons/CircleDuotone.tsx deleted file mode 100644 index dcb727aa2..000000000 --- a/desktop/src/icons/CircleDuotone.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const CircleDuotone = createIcon({ - displayName: "CircleDuotone", - viewBox: "0 0 16 16", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/CircleWithArrow.tsx b/desktop/src/icons/CircleWithArrow.tsx deleted file mode 100644 index d0b155dc4..000000000 --- a/desktop/src/icons/CircleWithArrow.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const CircleWithArrow = createIcon({ - displayName: "CircleWithArrow", - viewBox: "0 0 16 17", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/Clock.tsx b/desktop/src/icons/Clock.tsx deleted file mode 100644 index 5a7a7d12a..000000000 --- a/desktop/src/icons/Clock.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Clock = createIcon({ - displayName: "Clock", - viewBox: "0 0 16 16", - defaultProps, - path: [ - , - , - ], -}) diff --git a/desktop/src/icons/Close.tsx b/desktop/src/icons/Close.tsx deleted file mode 100644 index 1d7b245d8..000000000 --- a/desktop/src/icons/Close.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Close = createIcon({ - displayName: "Close", - viewBox: "0 0 16 16", - defaultProps, - path: [ - , - , - ], -}) diff --git a/desktop/src/icons/Code.tsx b/desktop/src/icons/Code.tsx deleted file mode 100644 index 6d17b3868..000000000 --- a/desktop/src/icons/Code.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Code = createIcon({ - displayName: "Code", - viewBox: "0 0 16 16", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/Cog.tsx b/desktop/src/icons/Cog.tsx deleted file mode 100644 index 8165c4e83..000000000 --- a/desktop/src/icons/Cog.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Cog = createIcon({ - displayName: "Cog", - viewBox: "0 0 20 20", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/CogDuotone.tsx b/desktop/src/icons/CogDuotone.tsx deleted file mode 100644 index d4e7f73f2..000000000 --- a/desktop/src/icons/CogDuotone.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const CogDuotone = createIcon({ - displayName: "CogDuotone", - viewBox: "0 0 16 16", - defaultProps, - path: [ - , - , - , - , - ], -}) diff --git a/desktop/src/icons/CogOutlined.tsx b/desktop/src/icons/CogOutlined.tsx deleted file mode 100644 index 0c2c51b59..000000000 --- a/desktop/src/icons/CogOutlined.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const CogOutlined = createIcon({ - displayName: "CogOutlined", - viewBox: "0 0 16 17", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/CommandLine.tsx b/desktop/src/icons/CommandLine.tsx deleted file mode 100644 index b9bddc3ec..000000000 --- a/desktop/src/icons/CommandLine.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const CommandLine = createIcon({ - displayName: "CommandLine", - viewBox: "0 0 20 20", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/Connect.tsx b/desktop/src/icons/Connect.tsx deleted file mode 100644 index fc21a3a1a..000000000 --- a/desktop/src/icons/Connect.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Connect = createIcon({ - displayName: "Connect", - viewBox: "0 0 16 16", - defaultProps, - path: [ - , - , - ], -}) diff --git a/desktop/src/icons/Dashboard.tsx b/desktop/src/icons/Dashboard.tsx deleted file mode 100644 index 3dfeb5b2a..000000000 --- a/desktop/src/icons/Dashboard.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Dashboard = createIcon({ - displayName: "Dashboard", - viewBox: "0 0 24 24", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/Database.tsx b/desktop/src/icons/Database.tsx deleted file mode 100644 index 657134549..000000000 --- a/desktop/src/icons/Database.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Database = createIcon({ - displayName: "Database", - viewBox: "0 0 24 24", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/Devpod.tsx b/desktop/src/icons/Devpod.tsx deleted file mode 100644 index 79f7aa4df..000000000 --- a/desktop/src/icons/Devpod.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const DevsyIcon = createIcon({ - displayName: "DevsyIcon", - viewBox: "0 0 184 152", - defaultProps, - path: [ - , - , - ], -}) diff --git a/desktop/src/icons/DevsyProBadge.tsx b/desktop/src/icons/DevsyProBadge.tsx deleted file mode 100644 index d669d126e..000000000 --- a/desktop/src/icons/DevsyProBadge.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { Icon, IconProps, useColorMode } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const DevsyProBadge = (props: IconProps) => { - const { colorMode } = useColorMode() - - return ( - - - - - ) -} diff --git a/desktop/src/icons/DevsyWordmark.tsx b/desktop/src/icons/DevsyWordmark.tsx deleted file mode 100644 index 8180a706e..000000000 --- a/desktop/src/icons/DevsyWordmark.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const DevsyWordmark = createIcon({ - displayName: "DevsyWordmark", - viewBox: "0 0 648 153", - defaultProps, - path: [ - - - - - , - - - - - - - - - - - - , - ], -}) diff --git a/desktop/src/icons/Ellipsis.tsx b/desktop/src/icons/Ellipsis.tsx deleted file mode 100644 index e4cc2d6d3..000000000 --- a/desktop/src/icons/Ellipsis.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Ellipsis = createIcon({ - displayName: "Ellipsis", - viewBox: "64 64 896 896", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/ExclamationCircle.tsx b/desktop/src/icons/ExclamationCircle.tsx deleted file mode 100644 index 041c70509..000000000 --- a/desktop/src/icons/ExclamationCircle.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const ExclamationCircle = createIcon({ - displayName: "ExclamationCircle", - viewBox: "0 0 20 20", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/ExclamationTriangle.tsx b/desktop/src/icons/ExclamationTriangle.tsx deleted file mode 100644 index 33e08e21c..000000000 --- a/desktop/src/icons/ExclamationTriangle.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const ExclamationTriangle = createIcon({ - displayName: "ExclamationTriangle", - viewBox: "0 0 20 20", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/File.tsx b/desktop/src/icons/File.tsx deleted file mode 100644 index fc399afb7..000000000 --- a/desktop/src/icons/File.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const File = createIcon({ - displayName: "File", - viewBox: "0 0 24 24", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/Folder.tsx b/desktop/src/icons/Folder.tsx deleted file mode 100644 index 42dbb9f0f..000000000 --- a/desktop/src/icons/Folder.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Folder = createIcon({ - displayName: "Folder", - viewBox: "0 0 24 24", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/Form.tsx b/desktop/src/icons/Form.tsx deleted file mode 100644 index 6ad4261b1..000000000 --- a/desktop/src/icons/Form.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Form = createIcon({ - displayName: "Form", - viewBox: "0 0 24 24", - defaultProps, - path: [ - , - , - ], -}) diff --git a/desktop/src/icons/Git.tsx b/desktop/src/icons/Git.tsx deleted file mode 100644 index 686699497..000000000 --- a/desktop/src/icons/Git.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Git = createIcon({ - displayName: "Git", - viewBox: "0 0 92 92", - defaultProps, - path: [ - - - - - , - - - , - ], -}) diff --git a/desktop/src/icons/GitBranch.tsx b/desktop/src/icons/GitBranch.tsx deleted file mode 100644 index b9415c06f..000000000 --- a/desktop/src/icons/GitBranch.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const GitBranch = createIcon({ - displayName: "GitBranch", - viewBox: "0 0 12 14", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/GitCommit.tsx b/desktop/src/icons/GitCommit.tsx deleted file mode 100644 index 3d7947a61..000000000 --- a/desktop/src/icons/GitCommit.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const GitCommit = createIcon({ - displayName: "GitCommit", - viewBox: "0 0 16 16", - defaultProps, - path: [ - , - , - ], -}) diff --git a/desktop/src/icons/GitPR.tsx b/desktop/src/icons/GitPR.tsx deleted file mode 100644 index 54db22248..000000000 --- a/desktop/src/icons/GitPR.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const GitPR = createIcon({ - displayName: "GitPR", - viewBox: "0 0 24 24", - defaultProps, - path: [ - , - , - ], -}) diff --git a/desktop/src/icons/GitSubPath.tsx b/desktop/src/icons/GitSubPath.tsx deleted file mode 100644 index 60568b029..000000000 --- a/desktop/src/icons/GitSubPath.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const GitSubPath = createIcon({ - displayName: "GitSubPath", - viewBox: "0 0 24 24", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/Globe.tsx b/desktop/src/icons/Globe.tsx deleted file mode 100644 index 4fde9a9bb..000000000 --- a/desktop/src/icons/Globe.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Globe = createIcon({ - displayName: "Globe", - viewBox: "0 0 16 16", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/Gold.tsx b/desktop/src/icons/Gold.tsx deleted file mode 100644 index 783bf1e8e..000000000 --- a/desktop/src/icons/Gold.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Gold = createIcon({ - displayName: "Gold", - viewBox: "0 0 16 16", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/History.tsx b/desktop/src/icons/History.tsx deleted file mode 100644 index 75f2cc836..000000000 --- a/desktop/src/icons/History.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const History = createIcon({ - displayName: "History", - viewBox: "0 0 24 24", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/Image.tsx b/desktop/src/icons/Image.tsx deleted file mode 100644 index 21843c828..000000000 --- a/desktop/src/icons/Image.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Image = createIcon({ - displayName: "Image", - viewBox: "0 0 24 24", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/Laptop.tsx b/desktop/src/icons/Laptop.tsx deleted file mode 100644 index 26bb877ea..000000000 --- a/desktop/src/icons/Laptop.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Laptop = createIcon({ - displayName: "Laptop", - viewBox: "0 0 16 16", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/LockDuotone.tsx b/desktop/src/icons/LockDuotone.tsx deleted file mode 100644 index 0500dce0a..000000000 --- a/desktop/src/icons/LockDuotone.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const LockDuotone = createIcon({ - displayName: "LockDuotone", - viewBox: "0 0 24 24", - defaultProps, - path: [ - , - , - , - ], -}) diff --git a/desktop/src/icons/Loft.tsx b/desktop/src/icons/Loft.tsx deleted file mode 100644 index 0c5663856..000000000 --- a/desktop/src/icons/Loft.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Devsy = createIcon({ - displayName: "Devsy", - viewBox: "0 0 270.6 137.3", - defaultProps, - path: [ - , - , - , - , - ], -}) diff --git a/desktop/src/icons/LoftDevpodPro.tsx b/desktop/src/icons/LoftDevpodPro.tsx deleted file mode 100644 index fb565b291..000000000 --- a/desktop/src/icons/LoftDevpodPro.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const LoftDevsyPro = createIcon({ - displayName: "LoftDevsyPro", - viewBox: "0 0 684 350", - defaultProps, - path: [ - , - , - , - ], -}) diff --git a/desktop/src/icons/MatchCase.tsx b/desktop/src/icons/MatchCase.tsx deleted file mode 100644 index 932029720..000000000 --- a/desktop/src/icons/MatchCase.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "@/icons/defaultProps" - -export const MatchCase = createIcon({ - displayName: "MatchCase", - viewBox: "0 0 16 16", - defaultProps, - path: ( - <> - - - - - - - - - - - ), -}) diff --git a/desktop/src/icons/Memory.tsx b/desktop/src/icons/Memory.tsx deleted file mode 100644 index dd3afc58a..000000000 --- a/desktop/src/icons/Memory.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Memory = createIcon({ - displayName: "Memory", - viewBox: "0 0 24 24", - defaultProps, - path: [ - , - , - , - , - , - , - , - , - , - ], -}) diff --git a/desktop/src/icons/NotFound.tsx b/desktop/src/icons/NotFound.tsx deleted file mode 100644 index bfa5c6176..000000000 --- a/desktop/src/icons/NotFound.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const NotFound = createIcon({ - displayName: "NotFound", - viewBox: "0 0 12 14", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/Parameters.tsx b/desktop/src/icons/Parameters.tsx deleted file mode 100644 index ada0e4392..000000000 --- a/desktop/src/icons/Parameters.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Parameters = createIcon({ - displayName: "Parameters", - viewBox: "0 0 16 16", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/Pause.tsx b/desktop/src/icons/Pause.tsx deleted file mode 100644 index 36fe83f9f..000000000 --- a/desktop/src/icons/Pause.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Pause = createIcon({ - displayName: "Pause", - viewBox: "0 0 20 20", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/Play.tsx b/desktop/src/icons/Play.tsx deleted file mode 100644 index 01a005d43..000000000 --- a/desktop/src/icons/Play.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Play = createIcon({ - displayName: "Play", - viewBox: "0 0 20 20", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/Plus.tsx b/desktop/src/icons/Plus.tsx deleted file mode 100644 index 5dbc9ad6a..000000000 --- a/desktop/src/icons/Plus.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Plus = createIcon({ - displayName: "Plus", - viewBox: "0 0 20 20", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/Preset.tsx b/desktop/src/icons/Preset.tsx deleted file mode 100644 index 9a0505c86..000000000 --- a/desktop/src/icons/Preset.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Preset = createIcon({ - displayName: "Preset", - viewBox: "0 0 16 16", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/ProfileDuotone.tsx b/desktop/src/icons/ProfileDuotone.tsx deleted file mode 100644 index 67661becb..000000000 --- a/desktop/src/icons/ProfileDuotone.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const ProfileDuotone = createIcon({ - displayName: "ProfileDuotone", - viewBox: "0 0 24 24", - defaultProps, - path: [ - , - , - , - ], -}) diff --git a/desktop/src/icons/ProviderPlaceholder.tsx b/desktop/src/icons/ProviderPlaceholder.tsx deleted file mode 100644 index 9f87a90f4..000000000 --- a/desktop/src/icons/ProviderPlaceholder.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { Icon, IconProps, useColorModeValue, useToken } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export function ProviderPlaceholder(iconProps: IconProps) { - const circleFillColorToken = useColorModeValue("gray.100", "gray.700") - const circleFillColor = useToken("colors", circleFillColorToken) - - return ( - - - - - - - ) -} diff --git a/desktop/src/icons/Search.tsx b/desktop/src/icons/Search.tsx deleted file mode 100644 index fd6793ad0..000000000 --- a/desktop/src/icons/Search.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "@/icons/defaultProps" - -export const Search = createIcon({ - displayName: "Search", - viewBox: "0 0 16 16", - defaultProps, - path: ( - <> - - - - - - - - - - ), -}) diff --git a/desktop/src/icons/Sleep.tsx b/desktop/src/icons/Sleep.tsx deleted file mode 100644 index 062c625d9..000000000 --- a/desktop/src/icons/Sleep.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Sleep = createIcon({ - displayName: "Sleep", - viewBox: "0 0 16 16", - defaultProps, - path: [ - , - , - , - ], -}) diff --git a/desktop/src/icons/Stack3D.tsx b/desktop/src/icons/Stack3D.tsx deleted file mode 100644 index 99db482a6..000000000 --- a/desktop/src/icons/Stack3D.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Stack3D = createIcon({ - displayName: "Stack3D", - viewBox: "0 0 20 20", - defaultProps, - path: [ - , - , - , - ], -}) diff --git a/desktop/src/icons/Status.tsx b/desktop/src/icons/Status.tsx deleted file mode 100644 index 3544a0162..000000000 --- a/desktop/src/icons/Status.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Status = createIcon({ - displayName: "Status", - viewBox: "0 0 16 17", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/Stop.tsx b/desktop/src/icons/Stop.tsx deleted file mode 100644 index db9e141b9..000000000 --- a/desktop/src/icons/Stop.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Stop = createIcon({ - displayName: "Stop", - viewBox: "0 0 20 20", - defaultProps, - path: , -}) diff --git a/desktop/src/icons/Template.tsx b/desktop/src/icons/Template.tsx deleted file mode 100644 index 15585f571..000000000 --- a/desktop/src/icons/Template.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Template = createIcon({ - displayName: "Template", - viewBox: "0 0 24 25", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/Trash.tsx b/desktop/src/icons/Trash.tsx deleted file mode 100644 index 9c577bae5..000000000 --- a/desktop/src/icons/Trash.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const Trash = createIcon({ - displayName: "Trash", - viewBox: "0 0 20 20", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/User.tsx b/desktop/src/icons/User.tsx deleted file mode 100644 index e7db2d428..000000000 --- a/desktop/src/icons/User.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const User = createIcon({ - displayName: "User", - viewBox: "0 0 24 24", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/WholeWord.tsx b/desktop/src/icons/WholeWord.tsx deleted file mode 100644 index 0e6b1f9ff..000000000 --- a/desktop/src/icons/WholeWord.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "@/icons/defaultProps" - -export const WholeWord = createIcon({ - displayName: "WholeWord", - viewBox: "0 0 16 16", - defaultProps, - path: ( - <> - - - - - ), -}) diff --git a/desktop/src/icons/WorkspaceStatus.tsx b/desktop/src/icons/WorkspaceStatus.tsx deleted file mode 100644 index 9dd3e0b19..000000000 --- a/desktop/src/icons/WorkspaceStatus.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { createIcon } from "@chakra-ui/react" -import { defaultProps } from "./defaultProps" - -export const WorkspaceStatus = createIcon({ - displayName: "WorkspaceStatus", - viewBox: "0 0 12 12", - defaultProps, - path: ( - - ), -}) diff --git a/desktop/src/icons/defaultProps.tsx b/desktop/src/icons/defaultProps.tsx deleted file mode 100644 index 36f94eb24..000000000 --- a/desktop/src/icons/defaultProps.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import { IconProps } from "@chakra-ui/react" - -export const defaultProps: IconProps = { boxSize: 6, fill: "currentColor" } diff --git a/desktop/src/icons/index.ts b/desktop/src/icons/index.ts deleted file mode 100644 index e8688efd5..000000000 --- a/desktop/src/icons/index.ts +++ /dev/null @@ -1,63 +0,0 @@ -export * from "./Devpod" -export { ArrowLeft } from "./ArrowLeft" -export { ArrowPath } from "./ArrowPath" -export { ArrowCycle } from "./ArrowCycle" -export { Bell } from "./Bell" -export { Briefcase } from "./Briefcase" -export { CheckCircle } from "./CheckCircle" -export { CircleDuotone } from "./CircleDuotone" -export { Cog } from "./Cog" -export { CogOutlined } from "./CogOutlined" -export { CommandLine } from "./CommandLine" -export { DevsyWordmark } from "./DevsyWordmark" -export { DevsyProBadge } from "./DevsyProBadge" -export { Ellipsis } from "./Ellipsis" -export { ExclamationCircle } from "./ExclamationCircle" -export { ExclamationTriangle } from "./ExclamationTriangle" -export { Pause } from "./Pause" -export { Stop } from "./Stop" -export { Devsy } from "./Loft" -export { LoftDevsyPro } from "./LoftDevpodPro" -export { Play } from "./Play" -export { Plus } from "./Plus" -export { ProviderPlaceholder } from "./ProviderPlaceholder" -export { Stack3D } from "./Stack3D" -export { WorkspaceStatus } from "./WorkspaceStatus" -export { Trash } from "./Trash" -export { Template } from "./Template" -export { GitBranch } from "./GitBranch" -export { GitCommit } from "./GitCommit" -export { GitPR } from "./GitPR" -export { GitSubPath } from "./GitSubPath" -export { Status } from "./Status" -export { Git } from "./Git" -export { Image } from "./Image" -export { Folder } from "./Folder" -export { Globe } from "./Globe" -export { Clock } from "./Clock" -export { CogDuotone } from "./CogDuotone" -export { BellDuotone } from "./BellDuotone" -export { CircleWithArrow } from "./CircleWithArrow" -export { Preset } from "./Preset" -export { Code } from "./Code" -export { Parameters } from "./Parameters" -export { Laptop } from "./Laptop" -export { Sleep } from "./Sleep" -export { NotFound } from "./NotFound" -export { Connect } from "./Connect" -export { Close } from "./Close" -export { MatchCase } from "./MatchCase" -export { WholeWord } from "./WholeWord" -export { ArrowUp } from "./ArrowUp" -export { ArrowDown } from "./ArrowDown" -export { Search } from "./Search" -export { User } from "./User" -export { ProfileDuotone } from "./ProfileDuotone" -export { LockDuotone } from "./LockDuotone" -export { Form } from "./Form" -export { File } from "./File" -export { Dashboard } from "./Dashboard" -export { History } from "./History" -export { Memory } from "./Memory" -export { Database } from "./Database" -export { CPU } from "./CPU" diff --git a/desktop/src/images/aws_white.svg b/desktop/src/images/aws_white.svg deleted file mode 100644 index a2bc6b0a2..000000000 --- a/desktop/src/images/aws_white.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/desktop/src/images/community.svg b/desktop/src/images/community.svg deleted file mode 100644 index 104db1e98..000000000 --- a/desktop/src/images/community.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/desktop/src/images/custom.svg b/desktop/src/images/custom.svg deleted file mode 100644 index 76a8f6a81..000000000 --- a/desktop/src/images/custom.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/desktop/src/images/disconnected.svg b/desktop/src/images/disconnected.svg deleted file mode 100644 index 11eecc89d..000000000 --- a/desktop/src/images/disconnected.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/desktop/src/images/disconnected_dark.svg b/desktop/src/images/disconnected_dark.svg deleted file mode 100644 index b2e5a4188..000000000 --- a/desktop/src/images/disconnected_dark.svg +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/desktop/src/images/empty_default.svg b/desktop/src/images/empty_default.svg deleted file mode 100644 index b37581c94..000000000 --- a/desktop/src/images/empty_default.svg +++ /dev/null @@ -1,394 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/desktop/src/images/empty_default_dark.svg b/desktop/src/images/empty_default_dark.svg deleted file mode 100644 index bb278e96e..000000000 --- a/desktop/src/images/empty_default_dark.svg +++ /dev/null @@ -1,349 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/desktop/src/images/empty_workspace.svg b/desktop/src/images/empty_workspace.svg deleted file mode 100644 index 2cedf59af..000000000 --- a/desktop/src/images/empty_workspace.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/desktop/src/images/empty_workspaces.svg b/desktop/src/images/empty_workspaces.svg deleted file mode 100644 index 9bbcd2841..000000000 --- a/desktop/src/images/empty_workspaces.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/desktop/src/images/empty_workspaces_dark.svg b/desktop/src/images/empty_workspaces_dark.svg deleted file mode 100644 index e01fa8aff..000000000 --- a/desktop/src/images/empty_workspaces_dark.svg +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/desktop/src/images/index.ts b/desktop/src/images/index.ts deleted file mode 100644 index bf70fc58e..000000000 --- a/desktop/src/images/index.ts +++ /dev/null @@ -1,53 +0,0 @@ -export { default as NoWorkspaceImageSvg } from "./empty_workspace.svg" -export { default as CppSvg } from "./cpp.svg" -export { default as CustomSvg } from "./custom.svg" -export { default as CommunitySvg } from "./community.svg" -export { default as SSHSvg } from "./ssh.svg" -export { default as DotnetcoreSvg } from "./dotnet.svg" -export { default as GoSvg } from "./go.svg" -export { default as GoSvgDark } from "./go_dark.svg" -export { default as JavaSvg } from "./java.svg" -export { default as NodejsSvg } from "./nodejs.svg" -export { default as NoneSvg } from "./none.svg" -export { default as NoneSvgDark } from "./none_dark.svg" -export { default as PhpSvg } from "./php.svg" -export { default as PhpSvgDark } from "./php_dark.svg" -export { default as PythonSvg } from "./python.svg" -export { default as RustSvg } from "./rust.svg" -export { default as RustSvgDark } from "./rust_dark.svg" -export { default as DockerSvg } from "./docker.svg" -export { default as KubernetesSvg } from "./kubernetes.svg" -export { default as GCloudSvg } from "./gcp.svg" -export { default as AWSSvg } from "./aws.svg" -export { default as AWSWhiteSvg } from "./aws_white.svg" -export { default as DigitalOceanSvg } from "./digitalocean.svg" -export { default as AzureSvg } from "./azure.svg" -export { default as CivoSvg } from "./civo.svg" -export { default as TerraformSvg } from "./terraform.svg" -export { default as VSCodeBrowser } from "./vscodebrowser.svg" -export { default as VSCodeSvg } from "./vscode.svg" -export { default as VSCodeInsidersSvg } from "./vscode_insiders.svg" -export { default as ProviderPlaceholderSvg } from "./provider_placeholder.svg" -export { default as RubySvg } from "./ruby.svg" -export { default as IntelliJSvg } from "./intellij.svg" -export { default as GolandSvg } from "./goland.svg" -export { default as PycharmSvg } from "./pycharm.svg" -export { default as WebstormSvg } from "./webstorm.svg" -export { default as CLionSvg } from "./clion.svg" -export { default as RiderSvg } from "./rider.svg" -export { default as RubyMineSvg } from "./rubymine.svg" -export { default as RustRoverSvg } from "./rustrover.svg" -export { default as PHPStormSvg } from "./phpstorm.svg" -export { default as DataSpellSvg } from "./dataspell.svg" -export { default as FleetSvg } from "./fleet.svg" -export { default as CursorSvg } from "./cursor.svg" -export { default as JupyterNotebookSvg } from "./jupyter.svg" -export { default as JupyterNotebookDarkSvg } from "./jupyter_dark.svg" -export { default as PositronSvg } from "./positron.svg" -export { default as CodiumSvg } from "./codium.svg" -export { default as ZedSvg } from "./zed.svg" -export { default as ZedDarkSvg } from "./zed_dark.svg" -export { default as RStudioSvg } from "./rstudio.svg" -export { default as WindsurfSvg } from "./windsurf.svg" -export { default as AntigravitySvg } from "./antigravity.svg" -export { default as BobSvg } from "./bob.svg" diff --git a/desktop/src/images/none.svg b/desktop/src/images/none.svg deleted file mode 100644 index 6e3abf5d7..000000000 --- a/desktop/src/images/none.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/desktop/src/images/none_dark.svg b/desktop/src/images/none_dark.svg deleted file mode 100644 index 5f81eff52..000000000 --- a/desktop/src/images/none_dark.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/desktop/src/images/vscodebrowser.svg b/desktop/src/images/vscodebrowser.svg deleted file mode 100644 index b405f35f7..000000000 --- a/desktop/src/images/vscodebrowser.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/desktop/src/lib/debugSettings.ts b/desktop/src/lib/debugSettings.ts deleted file mode 100644 index 33d27196f..000000000 --- a/desktop/src/lib/debugSettings.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { useEffect, useState } from "react" -import { TUnsubscribeFn } from "@/types" -import { LocalStorageBackend, Store } from "@/lib/store" - -const DEBUG_STORE_KEY = "debug" -const DEBUG_OPTIONS = ["commands", "actions", "workspaces"] as const -type TDebugOption = (typeof DEBUG_OPTIONS)[number] -type TDebug = Readonly<{ - isEnabled?: boolean - toggle?(option: TDebugOption): Promise - get?(option: TDebugOption): Promise - print?(): void -}> -type TDebugStore = Record -type TInternalDebug = Readonly<{ - subscribe(option: TDebugOption, listener: (newValue: boolean) => void): TUnsubscribeFn -}> - -function init(): TDebug & TInternalDebug { - const store = new Store(new LocalStorageBackend(DEBUG_STORE_KEY)) - - return { - isEnabled: true, - async toggle(option) { - const current = (await store.get(option)) ?? false - const newOptionValue = !current - await store.set(option, newOptionValue) - }, - async get(option) { - return (await store.get(option)) ?? false - }, - subscribe(option, listener) { - return store.subscribe(option, listener) - }, - print() { - console.log(store) - }, - } -} - -const initialDebugOptions: TDebugStore = { commands: false, workspaces: false, actions: false } - -type TUseDebug = Readonly<{ options: Record }> & Pick -function useInternalDebug(): TUseDebug { - const [options, setOptions] = useState(initialDebugOptions) - - useEffect(() => { - ;(async () => { - const initialOptions = await Promise.all( - DEBUG_OPTIONS.map((option) => - Debug.get!(option) - .then((value) => [option, value] as const) - .catch(() => [option, false] as const) - ) - ) - setOptions( - initialOptions.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {} as TDebugStore) - ) - })() - }, []) - - useEffect(() => { - const subscriptions: TUnsubscribeFn[] = [] - for (const option of DEBUG_OPTIONS) { - subscriptions.push( - (Debug as TInternalDebug).subscribe(option, (newValue) => - setOptions((currentOptions) => ({ ...currentOptions, [option]: newValue })) - ) - ) - } - - return () => { - for (const unsubscribe of subscriptions) { - unsubscribe() - } - } - }, []) - - return { options, isEnabled: true } -} -export function debug(option: TDebugOption, ...args: Parameters<(typeof console)["info"]>): void { - Debug.get?.(option).then((isEnabled) => { - if (isEnabled) { - console.info(...args) - } - }) -} - -// Only available during development -export const Debug: TDebug = import.meta.env.DEV ? init() : { isEnabled: false } -// Only available during development -export const useDebug: typeof useInternalDebug = import.meta.env.DEV - ? useInternalDebug - : () => ({ options: initialDebugOptions, isEnabled: false }) diff --git a/desktop/src/lib/eventManager.ts b/desktop/src/lib/eventManager.ts deleted file mode 100644 index d02fe5380..000000000 --- a/desktop/src/lib/eventManager.ts +++ /dev/null @@ -1,137 +0,0 @@ -import { TComparable, TIdentifiable, TUnsubscribeFn } from "@/types" -import { exists, isEmpty } from "./helpers" -import { v4 as uuidv4 } from "uuid" - -type TEventHandler = THandler< - (event: TEvents[TEventName]) => void -> -export type THandler = Readonly<{ notify: TFn }> & - TIdentifiable & - TComparable -type TBaseEvents = Record - -type TEventManager = Readonly<{ - subscribe: ( - eventName: TEventName, - handler: TEventHandler - ) => TUnsubscribeFn - isSubscribed: ( - eventName: TEventName, - handler: TEventHandler - ) => boolean - unsubscribe: ( - eventName: TEventName, - handler: TEventHandler - ) => void - publish: ( - eventName: TEventName, - event: TEvents[TEventName] - ) => boolean - clear: (eventName: TEventName) => void -}> - -export class EventManager implements TEventManager { - private handlers = new Map[]>() - - public static toHandler( - listenerFn: TFn, - id: string = uuidv4() - ): THandler { - return { - id, - eq(other) { - return this.id === other.id - }, - notify: listenerFn, - } - } - - public subscribe( - eventName: TEventName, - handler: TEventHandler - ): VoidFunction { - const maybeHandlers = this.handlers.get(eventName) - if (!exists(maybeHandlers)) { - this.handlers.set(eventName, [handler as TEventHandler]) - } else { - this.handlers.set(eventName, [...maybeHandlers, handler as TEventHandler]) - } - - return () => this.unsubscribe(eventName, handler) - } - - public isSubscribed( - eventName: TEventName, - handler: TEventHandler - ): boolean { - const maybeHandlers = this.handlers.get(eventName) - if (!exists(maybeHandlers)) { - return false - } - - return exists(maybeHandlers.find((l) => l.eq(handler))) - } - - public unsubscribe( - eventName: TEventName, - handler: TEventHandler - ): void { - const maybeEventHandlers = this.handlers.get(eventName) - if (!exists(maybeEventHandlers)) { - return - } - - this.handlers.set( - eventName, - maybeEventHandlers.filter((h) => !h.eq(handler)) - ) - - if (isEmpty(maybeEventHandlers)) { - this.handlers.delete(eventName) - } - } - - public publish( - eventName: TEventName, - event: TEvents[TEventName] - ): boolean { - const maybeHandlers = this.handlers.get(eventName) - if (!exists(maybeHandlers)) { - return false - } - - for (const handler of maybeHandlers) { - handler.notify(event) - } - - return true - } - - public clear(eventName: TEventName): void { - this.handlers.delete(eventName) - } -} - -export class SingleEventManager { - private manager = new EventManager<{ event: T }>() - - subscribe(handler: TEventHandler<{ event: T }, "event">): VoidFunction { - return this.manager.subscribe("event", handler) - } - - isSubscribed(handler: TEventHandler<{ event: T }, "event">): boolean { - return this.manager.isSubscribed("event", handler) - } - - unsubscribe(handler: TEventHandler<{ event: T }, "event">): void { - return this.manager.unsubscribe("event", handler) - } - - publish(event: T): boolean { - return this.manager.publish("event", event) - } - - clear(): void { - return this.manager.clear("event") - } -} diff --git a/desktop/src/lib/helpers.ts b/desktop/src/lib/helpers.ts deleted file mode 100644 index a379d5ec0..000000000 --- a/desktop/src/lib/helpers.ts +++ /dev/null @@ -1,177 +0,0 @@ -import { TIDE, TLogOutput, TProInstance, TProvider } from "@/types" -import { ChildProcess } from "@tauri-apps/plugin-shell" -import { Err, Failed, Return } from "./result" -import { TActionObj } from "@/contexts" -import { WORKSPACE_SOURCE_BRANCH_DELIMITER, WORKSPACE_SOURCE_COMMIT_DELIMITER } from "@/constants" -import { TWorkspace, TIDEs } from "@/types" - -export function exists( - arg: T -): arg is Exclude { - return arg !== undefined && arg !== null -} - -export function isError(error: unknown): error is Error { - return error instanceof Error -} - -export function noop(): void {} -export async function noopAsync(): Promise {} - -// WARN: All keys and values of `map` need to be serializable by `JSON.stringify` for this to work! -// See the [MDN docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#description) -// if you're unsure -export function serializeMap>(map: T): string { - return JSON.stringify(Array.from(map.entries())) -} - -export function deserializeMap>(serializedMap: string): T { - return new Map(JSON.parse(serializedMap)) as T -} - -export function isEmpty(arg: T): boolean { - return arg.length <= 0 -} - -export function safeJSONParse(arg: string): T | null { - try { - return JSON.parse(arg) as T - } catch { - return null - } -} - -export function getErrorFromChildProcess(result: ChildProcess): Err { - const stdout = parseOutput(result.stdout) - const stderr = parseOutput(result.stderr) - const sorted = [...stdout, ...stderr].sort((a, b) => { - if (a.time === b.time) { - return 0 - } - - const aTime = new Date(a.time).getTime() || 0 - const bTime = new Date(b.time).getTime() || 0 - if (aTime < bTime) { - return -1 - } - - return 1 - }) - - const message: string[] = sorted.reduce((acc, log) => { - const line = log.message?.trim() - if (!line) { - return acc - } - - acc.push(line) - - return acc - }, [] as string[]) - - return Return.Failed(message.join("\n")) -} - -export function parseOutput(arg: string): TLogOutput[] { - const retOutput: TLogOutput[] = arg.split("\n").reduce((acc, line) => { - const trimmed = line.trim() - if (!trimmed) { - return acc - } - - const logLine = safeJSONParse(line) as TLogOutput | undefined - if (!logLine?.message) { - return acc - } - - acc.push(logLine) - - return acc - }, [] as TLogOutput[]) - - return retOutput -} - -export function getKeys(arg: T): readonly (keyof T)[] { - return Object.keys(arg) as unknown as readonly (keyof T)[] -} - -export function sleep(ms: number): Promise { - return new Promise((resolve) => setTimeout(resolve, ms)) -} - -export function getActionDisplayName(action: TActionObj): string { - if (action.name === "checkStatus") { - return `check status ${action.targetID}` - } - - return `${action.name} ${action.targetID}` -} - -export function getIDEDisplayName(ide: TIDE) { - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition - return ide.displayName ?? ide.name ?? "Unknown" -} - -export function randomString(length: number): string { - return [...Array(length)].map(() => (~~(Math.random() * 36)).toString(36)).join("") -} - -export function remToPx(rem: string): number { - return parseFloat(rem) * parseFloat(getComputedStyle(document.documentElement).fontSize) -} - -export function getIDEName(ide: TWorkspace["ide"], ides: TIDEs | undefined) { - const maybeIDE = ides?.find((i) => i.name === ide?.name) - - return maybeIDE?.displayName ?? ide?.name ?? maybeIDE?.name ?? "Unknown" -} - -export function getWorkspaceSourceName({ - gitRepository, - gitBranch, - gitCommit, - localFolder, - image, -}: NonNullable): string { - if (exists(gitRepository) && exists(gitCommit)) { - return `${gitRepository}${WORKSPACE_SOURCE_COMMIT_DELIMITER}${gitCommit}` - } - - if (exists(gitRepository) && exists(gitBranch)) { - return `${gitRepository}${WORKSPACE_SOURCE_BRANCH_DELIMITER}${gitBranch}` - } - - if (exists(gitRepository)) { - return gitRepository - } - - if (exists(image)) { - return image - } - - if (exists(localFolder)) { - return localFolder - } - - return "" -} - -export function deepCopy(obj: T): T | undefined { - if (obj === undefined) { - return undefined - } - - return JSON.parse(JSON.stringify(obj)) -} - -export function canHealthCheck(providerConfig: TProvider["config"]): boolean { - return !!providerConfig?.exec?.proxy?.["health"] || !!providerConfig?.exec?.daemon -} - -export function hasCapability( - proInstance: TProInstance | undefined, - capability: "daemon" | "update-provider" | "health-check" -): boolean { - return proInstance?.capabilities?.includes(capability) ?? false -} diff --git a/desktop/src/lib/index.ts b/desktop/src/lib/index.ts deleted file mode 100644 index 5f07229f1..000000000 --- a/desktop/src/lib/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -export * from "./helpers" -export { EventManager, SingleEventManager } from "./eventManager" -export type { THandler } from "./eventManager" -export { Debug, useDebug, debug } from "./debugSettings" -export * from "./platform" -export * from "./result" -export { - Store, - LocalStorageBackend, - FileStorageBackend, - LocalStorageToFileMigrationBackend, -} from "./store" -export { useArch, usePlatform, useSystemTheme } from "./systemInfo" -export * from "./types" -export * from "./releases" -export { useFormErrors } from "./useFormErrors" -export { useHover } from "./useHover" -export { useVersion } from "./useVersion" -export { useUpdate } from "./useUpdate" -export { useDownloadLogs } from "./useDownloadLogs" -export { useSelection } from "./useSelection" -export * from "./sortWorkspaceConstants" -export * from "./useSortWorkspaces" -export * from "./modals" -export * from "./pro" diff --git a/desktop/src/lib/modals/index.ts b/desktop/src/lib/modals/index.ts deleted file mode 100644 index 98c16e288..000000000 --- a/desktop/src/lib/modals/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export { useStopWorkspaceModal } from "./useStopWorkspaceModal" -export { useDeleteWorkspaceModal } from "./useDeleteWorkspaceModal" -export { useRebuildWorkspaceModal } from "./useRebuildWorkspaceModal" -export { useResetWorkspaceModal } from "./useResetWorkspaceModal" -export { useLoginProModal, useReLoginProModal } from "./useLoginProModal" diff --git a/desktop/src/lib/modals/useDeleteWorkspaceModal.tsx b/desktop/src/lib/modals/useDeleteWorkspaceModal.tsx deleted file mode 100644 index 1e6e5bfef..000000000 --- a/desktop/src/lib/modals/useDeleteWorkspaceModal.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import { - Box, - Button, - Checkbox, - HStack, - Modal, - ModalBody, - ModalCloseButton, - ModalContent, - ModalFooter, - ModalHeader, - ModalOverlay, - useDisclosure, -} from "@chakra-ui/react" -import { useMemo, useState } from "react" - -export function useDeleteWorkspaceModal( - workspaceName: string, - onClick: (forceDelete: boolean, closeModal: VoidFunction) => void, - force?: boolean -) { - const { isOpen, onOpen, onClose } = useDisclosure() - const [forceDelete, setForceDelete] = useState(false) - - const modal = useMemo( - () => ( - - - - Delete Workspace - - - Deleting the workspace will erase all state. Are you sure you want to delete{" "} - {workspaceName}? - {force == null && ( - - setForceDelete(e.target.checked)}> - Force Delete the Workspace - - - )} - - - - - - - - - - ), - [force, forceDelete, isOpen, onClick, onClose, workspaceName] - ) - - return { modal, open: onOpen } -} diff --git a/desktop/src/lib/modals/useLoginProModal.tsx b/desktop/src/lib/modals/useLoginProModal.tsx deleted file mode 100644 index 7b8872e30..000000000 --- a/desktop/src/lib/modals/useLoginProModal.tsx +++ /dev/null @@ -1,362 +0,0 @@ -import { BottomActionBar, BottomActionBarError, Form, useStreamingTerminal } from "@/components" -import { useProInstanceManager, useProInstances, useProviders } from "@/contexts" -import { canHealthCheck, exists, useFormErrors } from "@/lib" -import { Routes } from "@/routes.constants" -import { - Box, - Button, - Container, - Divider, - FormControl, - FormErrorMessage, - FormHelperText, - FormLabel, - Heading, - Input, - InputGroup, - InputLeftAddon, - Modal, - ModalBody, - ModalCloseButton, - ModalContent, - ModalFooter, - ModalHeader, - ModalOverlay, - Tooltip, - VStack, - useDisclosure, -} from "@chakra-ui/react" -import { useCallback, useEffect, useMemo, useRef, useState } from "react" -import { SubmitHandler, useForm } from "react-hook-form" -import { useNavigate } from "react-router" -import { ConfigureProviderOptionsForm } from "@/views/Providers/AddProvider/ConfigureProviderOptionsForm" -import { useSetupProvider } from "@/views/Providers" -import { To } from "react-router-dom" - -type TFormValues = { - [FieldName.PRO_HOST]: string - [FieldName.ACCESS_KEY]: string | undefined -} -const FieldName = { - PRO_HOST: "proURL", - ACCESS_KEY: "accessKey", -} as const - -type TSetupProInitialData = { - host: string - accessKey?: string - suggestedOptions: Record -} - -export function useLoginProModal() { - const [suggestedOptions, setSuggestedOptions] = useState< - TSetupProInitialData["suggestedOptions"] - >({}) - const { terminal, connectStream, clear: clearTerminal } = useStreamingTerminal({ fontSize: "sm" }) - const [[proInstances], { login, disconnect }] = useProInstances() - const [[providers]] = useProviders() - const { isOpen, onClose, onOpen } = useDisclosure() - const { handleSubmit, formState, register, reset, setValue } = useForm({ - mode: "onBlur", - }) - const containerRef = useRef(null) - const onSubmit = useCallback>( - (data) => { - clearTerminal() - login.run({ - host: data[FieldName.PRO_HOST], - accessKey: data[FieldName.ACCESS_KEY], - streamListener: connectStream, - }) - }, - [connectStream, login, clearTerminal] - ) - - const handleOpenLogin = useCallback( - (data?: TSetupProInitialData) => { - onOpen() - if (data === undefined || login.status === "loading") { - return - } - - setValue(FieldName.PRO_HOST, data.host) - if (data.accessKey) { - setValue(FieldName.ACCESS_KEY, data.accessKey) - } - setSuggestedOptions(data.suggestedOptions) - handleSubmit(onSubmit)() - }, - [handleSubmit, login.status, onOpen, onSubmit, setValue] - ) - - const { - state, - reset: resetSetupProvider, - completeSetupProvider, - completeConfigureProvider, - removeDanglingProviders, - } = useSetupProvider() - - const { proURLError } = useFormErrors(Object.values(FieldName), formState) - - useEffect(() => { - if (login.status === "success") { - const providerID = login.provider?.config?.name - - if (!exists(providerID)) { - return - } - completeSetupProvider({ providerID, suggestedOptions }) - } - }, [completeSetupProvider, login.provider, login.status, suggestedOptions]) - - const resetModal = useCallback( - (checkDanglingProInstance: boolean = false) => { - reset() - login.reset() - if (checkDanglingProInstance) { - const proInstanceID = proInstances?.find((pro) => pro.provider === state.providerID)?.host - if (proInstanceID) { - disconnect.run({ id: proInstanceID }) - } - } - onClose() - }, - [disconnect, login, onClose, proInstances, reset, state.providerID] - ) - - useEffect(() => { - if (state.currentStep === "done") { - resetSetupProvider() - removeDanglingProviders() - } - }, [removeDanglingProviders, resetSetupProvider, state.currentStep]) - - const areInputsDisabled = useMemo( - () => login.status === "success" || login.status === "loading", - [login.status] - ) - - const navigate = useNavigate() - const completeFlow = useCallback(() => { - completeConfigureProvider() - resetModal() - - const proInstanceID = proInstances?.find((pro) => pro.provider === state.providerID)?.host - if (!proInstanceID || !state.providerID) return - - const provider = providers?.[state.providerID] - - let route: To - - // We only redirect to the new experience if the provider supports it. - // Support can be determined via canHealthCheck. - if (provider && canHealthCheck(provider.config)) { - route = Routes.toProInstance(proInstanceID) - } else { - route = Routes.toWorkspaceCreate({ - workspaceID: null, - ide: null, - rawSource: null, - providerID: state.providerID, - }) - } - - // workaround for layout shift after closing modal, no clue why - setTimeout(() => { - navigate(route) - }, 0) - }, [completeConfigureProvider, navigate, providers, proInstances, resetModal, state.providerID]) - - const modal = useMemo(() => { - return ( - resetModal(true)} - isOpen={isOpen} - closeOnEsc={login.status !== "loading"} - closeOnOverlayClick={login.status !== "loading"} - isCentered - size="4xl" - scrollBehavior="inside"> - - - {login.status !== "loading" && } - Connect to Devsy Pro - - -
    - - - URL - - https:// - { - try { - new URL(`https://${value.replace(/^https?:\/\//, "")}`) - - return true - } catch { - return "Please enter a valid URL" - } - }, - unique: (value) => { - const isHostTaken = proInstances?.some( - (instance) => instance.host === value - ) - - return isHostTaken - ? `URL must be unique, an instance with the URL https://${value} already exists` - : true - }, - }, - })} - /> - - {proURLError && proURLError.message ? ( - {proURLError.message} - ) : ( - - Enter a URL to the Devsy Pro instance you intend to connect to. If - you're unsure about it, ask your company administrator or create a new - Pro instance on your local machine. - - )} - - - - {login.status !== "idle" && state.currentStep === "select-provider" && ( - - {terminal} - - )} - - {state.currentStep !== "configure-provider" && ( - - - - - - - - )} -
    - {state.currentStep === "configure-provider" && ( - <> - - - Configure your Pro provider - - - - - )} -
    -
    -
    -
    - ) - }, [ - resetModal, - isOpen, - login.status, - login.error, - handleSubmit, - onSubmit, - proURLError, - areInputsDisabled, - register, - state, - terminal, - formState.isValid, - formState.isSubmitting, - completeFlow, - proInstances, - ]) - - return { modal, handleOpenLogin } -} - -export function useReLoginProModal() { - const { terminal, connectStream, clear: clearTerminal } = useStreamingTerminal({ fontSize: "sm" }) - const { login } = useProInstanceManager() - const { isOpen, onClose, onOpen } = useDisclosure() - const containerRef = useRef(null) - - const handleOpenLogin = useCallback( - (data: NonNullable>) => { - onOpen() - login.run({ host: data.host, streamListener: connectStream }) - }, - [connectStream, login, onOpen] - ) - - const resetModal = useCallback(() => { - clearTerminal() - onClose() - }, [clearTerminal, onClose]) - - const modal = useMemo(() => { - return ( - - - - {login.status !== "loading" && } - Login to Devsy Pro - - - {login.status !== "idle" && ( - - {terminal} - - )} - - - - - - - - ) - }, [resetModal, isOpen, login.status, terminal]) - - return { modal, handleOpenLogin } -} diff --git a/desktop/src/lib/modals/useRebuildWorkspaceModal.tsx b/desktop/src/lib/modals/useRebuildWorkspaceModal.tsx deleted file mode 100644 index f4c6fe47a..000000000 --- a/desktop/src/lib/modals/useRebuildWorkspaceModal.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { - Button, - HStack, - Modal, - ModalBody, - ModalCloseButton, - ModalContent, - ModalFooter, - ModalHeader, - ModalOverlay, - useDisclosure, -} from "@chakra-ui/react" -import { useMemo } from "react" - -export function useRebuildWorkspaceModal( - workspaceName: string, - onClick: (closeModal: VoidFunction) => void -) { - const { isOpen, onOpen, onClose } = useDisclosure() - - const modal = useMemo( - () => ( - - - - Rebuild Workspace - - - Rebuilding the workspace will erase all state saved in the docker container overlay. - This means you might need to reinstall or reconfigure certain applications. State in - docker volumes is persisted. Are you sure you want to rebuild {workspaceName}? - - - - - - - - - - ), - [isOpen, onClick, onClose, workspaceName] - ) - - return { modal, open: onOpen } -} diff --git a/desktop/src/lib/modals/useResetWorkspaceModal.tsx b/desktop/src/lib/modals/useResetWorkspaceModal.tsx deleted file mode 100644 index f7a458c6d..000000000 --- a/desktop/src/lib/modals/useResetWorkspaceModal.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { - Button, - HStack, - Modal, - ModalBody, - ModalCloseButton, - ModalContent, - ModalFooter, - ModalHeader, - ModalOverlay, - useDisclosure, -} from "@chakra-ui/react" -import { useMemo } from "react" - -export function useResetWorkspaceModal( - workspaceName: string, - onClick: (closeModal: VoidFunction) => void -) { - const { isOpen, onOpen, onClose } = useDisclosure() - - const modal = useMemo( - () => ( - - - - Reset Workspace - - - Resetting the workspace will erase all state saved in the docker container overlay and - DELETE ALL UNCOMMITTED CODE. This means you might need to reinstall or reconfigure - certain applications. You can also just recreate the pod with rebuild without wiping all - state. With reset, you will start with a fresh clone of the repository. Are you sure you - want to reset {workspaceName}? - - - - - - - - - - ), - [isOpen, onClick, onClose, workspaceName] - ) - - return { modal, open: onOpen } -} diff --git a/desktop/src/lib/modals/useStopWorkspaceModal.tsx b/desktop/src/lib/modals/useStopWorkspaceModal.tsx deleted file mode 100644 index e7f95d0b4..000000000 --- a/desktop/src/lib/modals/useStopWorkspaceModal.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import { - Button, - HStack, - Modal, - ModalBody, - ModalCloseButton, - ModalContent, - ModalFooter, - ModalHeader, - ModalOverlay, - useDisclosure, -} from "@chakra-ui/react" -import { useMemo } from "react" - -export function useStopWorkspaceModal(onClick: (closeModal: VoidFunction) => void) { - const { isOpen, onOpen, onClose } = useDisclosure() - - const modal = useMemo( - () => ( - - - - Stop Workspace - - - Stopping a workspace while it's not running may leave it in a corrupted state. Do - you want to stop it regardless? - - - - - - - - - - ), - [isOpen, onClick, onClose] - ) - - return { modal, open: onOpen } -} diff --git a/desktop/src/lib/platform.ts b/desktop/src/lib/platform.ts deleted file mode 100644 index ce949a26e..000000000 --- a/desktop/src/lib/platform.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const isLinux = import.meta.env.TAURI_ENV_PLATFORM === "linux" -export const isMacOS = import.meta.env.TAURI_ENV_PLATFORM === "darwin" -export const isWindows = import.meta.env.TAURI_ENV_PLATFORM === "windows" diff --git a/desktop/src/lib/pro/constants.ts b/desktop/src/lib/pro/constants.ts deleted file mode 100644 index 887e9d998..000000000 --- a/desktop/src/lib/pro/constants.ts +++ /dev/null @@ -1,15 +0,0 @@ -export const WorkspaceInstanceSource = { - prefixGit: "git:", - prefixImage: "image:", - prefixLocal: "local:", -} - -export const Annotations = { - WorkspaceSource: "devsy.sh/workspace-source", - SleepModeLastActivity: "sleepmode.devsy.sh/last-activity", -} - -export const Labels = { - WorkspaceID: "devsy.sh/workspace-id", - WorkspaceUID: "devsy.sh/workspace-uid", -} diff --git a/desktop/src/lib/pro/index.ts b/desktop/src/lib/pro/index.ts deleted file mode 100644 index f578b77b3..000000000 --- a/desktop/src/lib/pro/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from "./name" -export * from "./constants" -export * from "./source" -export * from "./time" -export * from "./parameters" -export * from "./useConnectionStatus" diff --git a/desktop/src/lib/pro/name.ts b/desktop/src/lib/pro/name.ts deleted file mode 100644 index 8a31799df..000000000 --- a/desktop/src/lib/pro/name.ts +++ /dev/null @@ -1,39 +0,0 @@ -export function getDisplayName( - entity: - | Readonly<{ - metadata?: { name?: string } - spec?: { - displayName?: string - } - }> - | undefined, - fallback: string = "" -): string { - if (entity?.spec?.displayName) { - return entity.spec.displayName - } - - if (entity?.metadata?.name) { - return entity.metadata.name - } - - return fallback -} - -export async function safeMaxName(str: string, maxLength: number): Promise { - if (str.length <= maxLength) { - return str - } - - try { - const text = new TextEncoder().encode(str) - const digest = await crypto.subtle.digest("SHA-256", text) - const hash = new Uint8Array(digest).reduce((s, b) => s + b.toString(16).padStart(2, "0"), "") - - return `${str.substring(0, maxLength - 8)}-${hash.substring(0, 7)}` - } catch (err) { - console.error("Failed to hash string", str, err) - - return str.substring(0, maxLength) - } -} diff --git a/desktop/src/lib/pro/parameters.tsx b/desktop/src/lib/pro/parameters.tsx deleted file mode 100644 index 17275ce77..000000000 --- a/desktop/src/lib/pro/parameters.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import { ManagementV1DevsyWorkspaceInstance } from "@devsy/client/gen/models/managementV1DevsyWorkspaceInstance" -import { ManagementV1DevsyWorkspaceTemplate } from "@devsy/client/gen/models/managementV1DevsyWorkspaceTemplate" -import { StorageV1AppParameter } from "@devsy/client/gen/models/storageV1AppParameter" -import { StorageV1DevsyWorkspaceTemplateVersion } from "@devsy/client/gen/models/storageV1DevsyWorkspaceTemplateVersion" -import { compareVersions } from "compare-versions" -import jsyaml from "js-yaml" - -export type TParameterWithValue = StorageV1AppParameter & { value?: string | number | boolean } - -export function getParametersWithValues( - instance: ManagementV1DevsyWorkspaceInstance, - template: ManagementV1DevsyWorkspaceTemplate -): readonly TParameterWithValue[] | undefined { - let rawParameters: StorageV1AppParameter[] | undefined = template.spec?.parameters - if (instance.spec?.templateRef?.version) { - // find versioned parameters - rawParameters = template.spec?.versions?.find( - (version) => version.version === instance.spec?.templateRef?.version - )?.parameters - } else if (template.spec?.versions && template.spec.versions.length > 0) { - // fall back to latest version - rawParameters = template.spec.versions[0]?.parameters - } - - if (!instance.spec?.parameters || !rawParameters) { - return undefined - } - - try { - const out = jsyaml.load(instance.spec.parameters) as Record - - return rawParameters.map((param) => { - const path = param.variable - if (path) { - return { ...param, value: out[path] } - } - - return param - }) - } catch { - return undefined - } -} - -export function getParameters( - template: ManagementV1DevsyWorkspaceTemplate | undefined, - selectedVersion: string | undefined -): readonly StorageV1AppParameter[] | undefined { - if (!template?.spec) { - return undefined - } - - if (selectedVersion) { - return template.spec.versions?.find((version) => version.version === selectedVersion) - ?.parameters - } - - if (template.spec.versions && template.spec.versions.length > 0) { - const latestVersion = findLatestVersion(template.spec.versions) - if (latestVersion) { - return template.spec.versions.find((version) => version.version === latestVersion.version) - ?.parameters - } - } - - return template.spec.parameters -} - -function findLatestVersion( - versions: readonly StorageV1DevsyWorkspaceTemplateVersion[] -): StorageV1DevsyWorkspaceTemplateVersion | undefined { - return versions.slice().sort(sortByVersionDesc)[0] -} - -export function sortByVersionDesc( - a: StorageV1DevsyWorkspaceTemplateVersion, - b: StorageV1DevsyWorkspaceTemplateVersion -): number { - return compareVersions(stripVersionPrefix(b.version ?? ""), stripVersionPrefix(a.version ?? "")) -} - -function stripVersionPrefix(version: string): string { - if (version.startsWith("v")) { - return version.substring(1, version.length) - } - - return version -} diff --git a/desktop/src/lib/pro/source.ts b/desktop/src/lib/pro/source.ts deleted file mode 100644 index 07ad7fffa..000000000 --- a/desktop/src/lib/pro/source.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { WorkspaceInstanceSource } from "./constants" -import { TWorkspaceSourceType } from "@/types" - -export class Source { - readonly type: TWorkspaceSourceType - readonly value: string - - constructor(type?: TWorkspaceSourceType, value?: string) { - this.type = type ?? "git" - this.value = value ?? "" - } - - static fromRaw(rawSource?: string): Source { - if (rawSource?.startsWith(WorkspaceInstanceSource.prefixGit)) { - return new Source("git", rawSource.replace(WorkspaceInstanceSource.prefixGit, "")) - } - - if (rawSource?.startsWith(WorkspaceInstanceSource.prefixImage)) { - return new Source("image", rawSource.replace(WorkspaceInstanceSource.prefixImage, "")) - } - - if (rawSource?.startsWith(WorkspaceInstanceSource.prefixLocal)) { - return new Source("local", rawSource.replace(WorkspaceInstanceSource.prefixLocal, "")) - } - - return new Source() - } - - public stringify(): string { - const value = this.value.trim() - switch (this.type) { - case "git": - return `${WorkspaceInstanceSource.prefixGit}${value}` - case "image": - return `${WorkspaceInstanceSource.prefixImage}${value}` - case "local": - return `${WorkspaceInstanceSource.prefixLocal}${value}` - } - } -} diff --git a/desktop/src/lib/pro/time.ts b/desktop/src/lib/pro/time.ts deleted file mode 100644 index 07ac66697..000000000 --- a/desktop/src/lib/pro/time.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ProWorkspaceInstance } from "@/contexts" -import { Annotations } from "./constants" - -export function getLastActivity(instance: ProWorkspaceInstance): Date | undefined { - const maybeTimestamp = instance.metadata?.annotations?.[Annotations.SleepModeLastActivity] - if (!maybeTimestamp) { - return undefined - } - - const timestamp = Number.parseInt(maybeTimestamp) - if (Number.isNaN(timestamp)) { - return undefined - } - - return new Date(timestamp * 1_000) -} diff --git a/desktop/src/lib/pro/useConnectionStatus.tsx b/desktop/src/lib/pro/useConnectionStatus.tsx deleted file mode 100644 index 0a239a8b1..000000000 --- a/desktop/src/lib/pro/useConnectionStatus.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { useProContext } from "@/contexts" -import { QueryKeys } from "@/queryKeys" -import { TPlatformHealthCheck } from "@/types" -import { useQuery } from "@tanstack/react-query" - -export type TConnectionStatus = Partial & { - isLoading: boolean -} -export function useConnectionStatus(): TConnectionStatus { - const { host, client } = useProContext() - const { data: connection, isLoading } = useQuery({ - queryKey: QueryKeys.connectionStatus(host), - queryFn: async () => { - try { - const platformRes = await client.checkHealth() - if (platformRes.ok) { - return platformRes.val - } - - return { healthy: false } - } catch { - return { healthy: false } - } - }, - refetchInterval: 5_000, - }) - - return { ...connection, isLoading } -} diff --git a/desktop/src/lib/randomWords.ts b/desktop/src/lib/randomWords.ts deleted file mode 100644 index 7afd1eedf..000000000 --- a/desktop/src/lib/randomWords.ts +++ /dev/null @@ -1,2011 +0,0 @@ -const words = [ - "ability", - "able", - "aboard", - "about", - "above", - "accept", - "accident", - "according", - "account", - "accurate", - "acres", - "across", - "act", - "action", - "active", - "activity", - "actual", - "actually", - "add", - "addition", - "additional", - "adjective", - "adult", - "adventure", - "advice", - "affect", - "afraid", - "after", - "afternoon", - "again", - "against", - "age", - "ago", - "agree", - "ahead", - "aid", - "air", - "airplane", - "alike", - "alive", - "all", - "allow", - "almost", - "alone", - "along", - "aloud", - "alphabet", - "already", - "also", - "although", - "am", - "among", - "amount", - "ancient", - "angle", - "angry", - "animal", - "announced", - "another", - "answer", - "ants", - "any", - "anybody", - "anyone", - "anything", - "anyway", - "anywhere", - "apart", - "apartment", - "appearance", - "apple", - "applied", - "appropriate", - "are", - "area", - "arm", - "army", - "around", - "arrange", - "arrangement", - "arrive", - "arrow", - "art", - "article", - "as", - "aside", - "ask", - "asleep", - "at", - "ate", - "atmosphere", - "atom", - "atomic", - "attached", - "attack", - "attempt", - "attention", - "audience", - "author", - "automobile", - "available", - "average", - "avoid", - "aware", - "away", - "baby", - "back", - "bad", - "badly", - "bag", - "balance", - "ball", - "balloon", - "band", - "bank", - "bar", - "bare", - "bark", - "barn", - "base", - "baseball", - "basic", - "basis", - "basket", - "bat", - "battle", - "be", - "bean", - "bear", - "beat", - "beautiful", - "beauty", - "became", - "because", - "become", - "becoming", - "bee", - "been", - "before", - "began", - "beginning", - "begun", - "behavior", - "behind", - "being", - "believed", - "bell", - "belong", - "below", - "belt", - "bend", - "beneath", - "bent", - "beside", - "best", - "bet", - "better", - "between", - "beyond", - "bicycle", - "bigger", - "biggest", - "bill", - "birds", - "birth", - "birthday", - "bit", - "bite", - "black", - "blank", - "blanket", - "blew", - "blind", - "block", - "blood", - "blow", - "blue", - "board", - "boat", - "body", - "bone", - "book", - "border", - "born", - "both", - "bottle", - "bottom", - "bound", - "bow", - "bowl", - "box", - "boy", - "brain", - "branch", - "brass", - "brave", - "bread", - "break", - "breakfast", - "breath", - "breathe", - "breathing", - "breeze", - "brick", - "bridge", - "brief", - "bright", - "bring", - "broad", - "broke", - "broken", - "brother", - "brought", - "brown", - "brush", - "buffalo", - "build", - "building", - "built", - "buried", - "burn", - "burst", - "bus", - "bush", - "business", - "busy", - "but", - "butter", - "buy", - "by", - "cabin", - "cage", - "cake", - "call", - "calm", - "came", - "camera", - "camp", - "can", - "canal", - "cannot", - "cap", - "capital", - "captain", - "captured", - "car", - "carbon", - "card", - "care", - "careful", - "carefully", - "carried", - "carry", - "case", - "cast", - "castle", - "cat", - "catch", - "cattle", - "caught", - "cause", - "cave", - "cell", - "cent", - "center", - "central", - "century", - "certain", - "certainly", - "chain", - "chair", - "chamber", - "chance", - "change", - "changing", - "chapter", - "character", - "characteristic", - "charge", - "chart", - "check", - "cheese", - "chemical", - "chest", - "chicken", - "chief", - "child", - "children", - "choice", - "choose", - "chose", - "chosen", - "church", - "circle", - "circus", - "citizen", - "city", - "class", - "classroom", - "claws", - "clay", - "clean", - "clear", - "clearly", - "climate", - "climb", - "clock", - "close", - "closely", - "closer", - "cloth", - "clothes", - "clothing", - "cloud", - "club", - "coach", - "coal", - "coast", - "coat", - "coffee", - "cold", - "collect", - "college", - "colony", - "color", - "column", - "combination", - "combine", - "come", - "comfortable", - "coming", - "command", - "common", - "community", - "company", - "compare", - "compass", - "complete", - "completely", - "complex", - "composed", - "composition", - "compound", - "concerned", - "condition", - "congress", - "connected", - "consider", - "consist", - "consonant", - "constantly", - "construction", - "contain", - "continent", - "continued", - "contrast", - "control", - "conversation", - "cook", - "cookies", - "cool", - "copper", - "copy", - "corn", - "corner", - "correct", - "correctly", - "cost", - "cotton", - "could", - "count", - "country", - "couple", - "courage", - "course", - "court", - "cover", - "cow", - "cowboy", - "crack", - "cream", - "create", - "creature", - "crew", - "crop", - "cross", - "crowd", - "cry", - "cup", - "curious", - "current", - "curve", - "customs", - "cut", - "cutting", - "daily", - "damage", - "dance", - "danger", - "dangerous", - "dark", - "darkness", - "date", - "daughter", - "dawn", - "day", - "dead", - "deal", - "dear", - "death", - "decide", - "declared", - "deep", - "deeply", - "deer", - "definition", - "degree", - "depend", - "depth", - "describe", - "desert", - "design", - "desk", - "detail", - "determine", - "develop", - "development", - "diagram", - "diameter", - "did", - "die", - "differ", - "difference", - "different", - "difficult", - "difficulty", - "dig", - "dinner", - "direct", - "direction", - "directly", - "dirt", - "dirty", - "disappear", - "discover", - "discovery", - "discuss", - "discussion", - "disease", - "dish", - "distance", - "distant", - "divide", - "division", - "do", - "doctor", - "does", - "dog", - "doing", - "doll", - "dollar", - "done", - "donkey", - "door", - "dot", - "double", - "doubt", - "down", - "dozen", - "draw", - "drawn", - "dream", - "dress", - "drew", - "dried", - "drink", - "drive", - "driven", - "driver", - "driving", - "drop", - "dropped", - "drove", - "dry", - "duck", - "due", - "dug", - "dull", - "during", - "dust", - "duty", - "each", - "eager", - "ear", - "earlier", - "early", - "earn", - "earth", - "easier", - "easily", - "east", - "easy", - "eat", - "eaten", - "edge", - "education", - "effect", - "effort", - "egg", - "eight", - "either", - "electric", - "electricity", - "element", - "elephant", - "eleven", - "else", - "empty", - "end", - "enemy", - "energy", - "engine", - "engineer", - "enjoy", - "enough", - "enter", - "entire", - "entirely", - "environment", - "equal", - "equally", - "equator", - "equipment", - "escape", - "especially", - "essential", - "establish", - "even", - "evening", - "event", - "eventually", - "ever", - "every", - "everybody", - "everyone", - "everything", - "everywhere", - "evidence", - "exact", - "exactly", - "examine", - "example", - "excellent", - "except", - "exchange", - "excited", - "excitement", - "exciting", - "exclaimed", - "exercise", - "exist", - "expect", - "experience", - "experiment", - "explain", - "explanation", - "explore", - "express", - "expression", - "extra", - "eye", - "face", - "facing", - "fact", - "factor", - "factory", - "failed", - "fair", - "fairly", - "fall", - "fallen", - "familiar", - "family", - "famous", - "far", - "farm", - "farmer", - "farther", - "fast", - "fastened", - "faster", - "fat", - "father", - "favorite", - "fear", - "feathers", - "feature", - "fed", - "feed", - "feel", - "feet", - "fell", - "fellow", - "felt", - "fence", - "few", - "fewer", - "field", - "fierce", - "fifteen", - "fifth", - "fifty", - "fight", - "fighting", - "figure", - "fill", - "film", - "final", - "finally", - "find", - "fine", - "finest", - "finger", - "finish", - "fire", - "fireplace", - "firm", - "first", - "fish", - "five", - "fix", - "flag", - "flame", - "flat", - "flew", - "flies", - "flight", - "floating", - "floor", - "flow", - "flower", - "fly", - "fog", - "folks", - "follow", - "food", - "foot", - "football", - "for", - "force", - "foreign", - "forest", - "forget", - "forgot", - "forgotten", - "form", - "former", - "fort", - "forth", - "forty", - "forward", - "fought", - "found", - "four", - "fourth", - "fox", - "frame", - "free", - "freedom", - "frequently", - "fresh", - "friend", - "friendly", - "frighten", - "frog", - "from", - "front", - "frozen", - "fruit", - "fuel", - "full", - "fully", - "fun", - "function", - "funny", - "fur", - "furniture", - "further", - "future", - "gain", - "game", - "garage", - "garden", - "gas", - "gasoline", - "gate", - "gather", - "gave", - "general", - "generally", - "gentle", - "gently", - "get", - "getting", - "giant", - "gift", - "girl", - "give", - "given", - "giving", - "glad", - "glass", - "globe", - "go", - "goes", - "gold", - "golden", - "gone", - "good", - "goose", - "got", - "government", - "grabbed", - "grade", - "gradually", - "grain", - "grandfather", - "grandmother", - "graph", - "grass", - "gravity", - "gray", - "great", - "greater", - "greatest", - "greatly", - "green", - "grew", - "ground", - "group", - "grow", - "grown", - "growth", - "guard", - "guess", - "guide", - "gulf", - "gun", - "habit", - "had", - "hair", - "half", - "halfway", - "hall", - "hand", - "handle", - "handsome", - "hang", - "happen", - "happened", - "happily", - "happy", - "harbor", - "hard", - "harder", - "hardly", - "has", - "hat", - "have", - "having", - "hay", - "he", - "headed", - "heading", - "health", - "heard", - "hearing", - "heart", - "heat", - "heavy", - "height", - "held", - "hello", - "help", - "helpful", - "her", - "herd", - "here", - "herself", - "hidden", - "hide", - "high", - "higher", - "highest", - "highway", - "hill", - "him", - "himself", - "his", - "history", - "hit", - "hold", - "hole", - "hollow", - "home", - "honor", - "hope", - "horn", - "horse", - "hospital", - "hot", - "hour", - "house", - "how", - "however", - "huge", - "human", - "hundred", - "hung", - "hungry", - "hunt", - "hunter", - "hurried", - "hurry", - "hurt", - "husband", - "ice", - "idea", - "identity", - "if", - "ill", - "image", - "imagine", - "immediately", - "importance", - "important", - "impossible", - "improve", - "in", - "inch", - "include", - "including", - "income", - "increase", - "indeed", - "independent", - "indicate", - "individual", - "industrial", - "industry", - "influence", - "information", - "inside", - "instance", - "instant", - "instead", - "instrument", - "interest", - "interior", - "into", - "introduced", - "invented", - "involved", - "iron", - "is", - "island", - "it", - "its", - "itself", - "jack", - "jar", - "jet", - "job", - "join", - "joined", - "journey", - "joy", - "judge", - "jump", - "jungle", - "just", - "keep", - "kept", - "key", - "kids", - "kill", - "kind", - "kitchen", - "knew", - "knife", - "know", - "knowledge", - "known", - "label", - "labor", - "lack", - "lady", - "laid", - "lake", - "lamp", - "land", - "language", - "large", - "larger", - "largest", - "last", - "late", - "later", - "laugh", - "law", - "lay", - "layers", - "lead", - "leader", - "leaf", - "learn", - "least", - "leather", - "leave", - "leaving", - "led", - "left", - "leg", - "length", - "lesson", - "let", - "letter", - "level", - "library", - "lie", - "life", - "lift", - "light", - "like", - "likely", - "limited", - "line", - "lion", - "lips", - "liquid", - "list", - "listen", - "little", - "live", - "living", - "load", - "local", - "locate", - "location", - "log", - "lonely", - "long", - "longer", - "look", - "loose", - "lose", - "loss", - "lost", - "lot", - "loud", - "love", - "lovely", - "low", - "lower", - "luck", - "lucky", - "lunch", - "lungs", - "lying", - "machine", - "machinery", - "mad", - "made", - "magic", - "magnet", - "mail", - "main", - "mainly", - "major", - "make", - "making", - "man", - "managed", - "manner", - "manufacturing", - "many", - "map", - "mark", - "market", - "married", - "mass", - "massage", - "master", - "material", - "mathematics", - "matter", - "may", - "maybe", - "me", - "meal", - "mean", - "means", - "meant", - "measure", - "meat", - "medicine", - "meet", - "melted", - "member", - "memory", - "men", - "mental", - "merely", - "met", - "metal", - "method", - "mice", - "middle", - "might", - "mighty", - "mile", - "military", - "milk", - "mill", - "mind", - "mine", - "minerals", - "minute", - "mirror", - "missing", - "mission", - "mistake", - "mix", - "mixture", - "model", - "modern", - "molecular", - "moment", - "money", - "monkey", - "month", - "mood", - "moon", - "more", - "morning", - "most", - "mostly", - "mother", - "motion", - "motor", - "mountain", - "mouse", - "mouth", - "move", - "movement", - "movie", - "moving", - "mud", - "muscle", - "music", - "musical", - "must", - "my", - "myself", - "mysterious", - "nails", - "name", - "nation", - "national", - "native", - "natural", - "naturally", - "nature", - "near", - "nearby", - "nearer", - "nearest", - "nearly", - "necessary", - "neck", - "needed", - "needle", - "needs", - "negative", - "neighbor", - "neighborhood", - "nervous", - "nest", - "never", - "new", - "news", - "newspaper", - "next", - "nice", - "night", - "nine", - "no", - "nobody", - "nodded", - "noise", - "none", - "noon", - "nor", - "north", - "nose", - "not", - "note", - "noted", - "nothing", - "notice", - "noun", - "now", - "number", - "numeral", - "nuts", - "object", - "observe", - "obtain", - "occasionally", - "occur", - "ocean", - "of", - "off", - "offer", - "office", - "officer", - "official", - "oil", - "old", - "older", - "oldest", - "on", - "once", - "one", - "only", - "onto", - "open", - "operation", - "opinion", - "opportunity", - "opposite", - "or", - "orange", - "orbit", - "order", - "ordinary", - "organization", - "organized", - "origin", - "original", - "other", - "ought", - "our", - "ourselves", - "out", - "outer", - "outline", - "outside", - "over", - "own", - "owner", - "oxygen", - "pack", - "package", - "page", - "paid", - "pain", - "paint", - "pair", - "palace", - "pale", - "pan", - "paper", - "paragraph", - "parallel", - "parent", - "park", - "part", - "particles", - "particular", - "particularly", - "partly", - "parts", - "party", - "pass", - "passage", - "past", - "path", - "pattern", - "pay", - "peace", - "pen", - "pencil", - "people", - "per", - "percent", - "perfect", - "perfectly", - "perhaps", - "period", - "person", - "personal", - "pet", - "phrase", - "physical", - "piano", - "pick", - "picture", - "pictured", - "pie", - "piece", - "pig", - "pile", - "pilot", - "pine", - "pink", - "pipe", - "pitch", - "place", - "plain", - "plan", - "plane", - "planet", - "planned", - "planning", - "plant", - "plastic", - "plate", - "plates", - "play", - "pleasant", - "please", - "pleasure", - "plenty", - "plural", - "plus", - "pocket", - "poem", - "poet", - "poetry", - "point", - "pole", - "police", - "policeman", - "political", - "pond", - "pony", - "pool", - "poor", - "popular", - "population", - "porch", - "port", - "position", - "positive", - "possible", - "possibly", - "post", - "pot", - "potatoes", - "pound", - "pour", - "powder", - "power", - "powerful", - "practical", - "practice", - "prepare", - "present", - "president", - "press", - "pressure", - "pretty", - "prevent", - "previous", - "price", - "pride", - "primitive", - "principal", - "principle", - "printed", - "private", - "prize", - "probably", - "problem", - "process", - "produce", - "product", - "production", - "program", - "progress", - "promised", - "proper", - "properly", - "property", - "protection", - "proud", - "prove", - "provide", - "public", - "pull", - "pupil", - "pure", - "purple", - "purpose", - "push", - "put", - "putting", - "quarter", - "queen", - "question", - "quick", - "quickly", - "quiet", - "quietly", - "quite", - "rabbit", - "race", - "radio", - "railroad", - "rain", - "raise", - "ran", - "ranch", - "range", - "rapidly", - "rate", - "rather", - "raw", - "rays", - "reach", - "read", - "reader", - "ready", - "real", - "realize", - "rear", - "reason", - "recall", - "receive", - "recent", - "recently", - "recognize", - "record", - "red", - "refer", - "refused", - "region", - "regular", - "related", - "relationship", - "religious", - "remain", - "remarkable", - "remember", - "remove", - "repeat", - "replace", - "replied", - "report", - "represent", - "require", - "research", - "respect", - "rest", - "result", - "return", - "review", - "rhyme", - "rhythm", - "rice", - "rich", - "ride", - "riding", - "right", - "ring", - "rise", - "rising", - "river", - "road", - "roar", - "rock", - "rocket", - "rocky", - "rod", - "roll", - "roof", - "room", - "root", - "rope", - "rose", - "rough", - "round", - "route", - "row", - "rubbed", - "rubber", - "rule", - "ruler", - "run", - "running", - "rush", - "sad", - "saddle", - "safe", - "safety", - "said", - "sail", - "sale", - "salmon", - "salt", - "same", - "sand", - "sang", - "sat", - "satellites", - "satisfied", - "save", - "saved", - "saw", - "say", - "scale", - "scared", - "scene", - "school", - "science", - "scientific", - "scientist", - "score", - "screen", - "sea", - "search", - "season", - "seat", - "second", - "secret", - "section", - "see", - "seed", - "seeing", - "seems", - "seen", - "seldom", - "select", - "selection", - "sell", - "send", - "sense", - "sent", - "sentence", - "separate", - "series", - "serious", - "serve", - "service", - "sets", - "setting", - "settle", - "settlers", - "seven", - "several", - "shade", - "shadow", - "shake", - "shaking", - "shall", - "shallow", - "shape", - "share", - "sharp", - "she", - "sheep", - "sheet", - "shelf", - "shells", - "shelter", - "shine", - "shinning", - "ship", - "shirt", - "shoe", - "shoot", - "shop", - "shore", - "short", - "shorter", - "shot", - "should", - "shoulder", - "shout", - "show", - "shown", - "shut", - "sick", - "sides", - "sight", - "sign", - "signal", - "silence", - "silent", - "silk", - "silly", - "silver", - "similar", - "simple", - "simplest", - "simply", - "since", - "sing", - "single", - "sink", - "sister", - "sit", - "sitting", - "situation", - "six", - "size", - "skill", - "skin", - "sky", - "slabs", - "slave", - "sleep", - "slept", - "slide", - "slight", - "slightly", - "slip", - "slipped", - "slope", - "slow", - "slowly", - "small", - "smaller", - "smallest", - "smell", - "smile", - "smoke", - "smooth", - "snake", - "snow", - "so", - "soap", - "social", - "society", - "soft", - "softly", - "soil", - "solar", - "sold", - "soldier", - "solid", - "solution", - "solve", - "some", - "somebody", - "somehow", - "someone", - "something", - "sometime", - "somewhere", - "son", - "song", - "soon", - "sort", - "sound", - "source", - "south", - "southern", - "space", - "speak", - "special", - "species", - "specific", - "speech", - "speed", - "spell", - "spend", - "spent", - "spider", - "spin", - "spirit", - "spite", - "split", - "spoken", - "sport", - "spread", - "spring", - "square", - "stage", - "stairs", - "stand", - "standard", - "star", - "stared", - "start", - "state", - "statement", - "station", - "stay", - "steady", - "steam", - "steel", - "steep", - "stems", - "step", - "stepped", - "stick", - "stiff", - "still", - "stock", - "stomach", - "stone", - "stood", - "stop", - "stopped", - "store", - "storm", - "story", - "stove", - "straight", - "strange", - "stranger", - "straw", - "stream", - "street", - "strength", - "stretch", - "strike", - "string", - "strip", - "strong", - "stronger", - "struck", - "structure", - "struggle", - "stuck", - "student", - "studied", - "studying", - "subject", - "substance", - "success", - "successful", - "such", - "sudden", - "suddenly", - "sugar", - "suggest", - "suit", - "sum", - "summer", - "sun", - "sunlight", - "supper", - "supply", - "support", - "suppose", - "sure", - "surface", - "surprise", - "surrounded", - "swam", - "sweet", - "swept", - "swim", - "swimming", - "swing", - "swung", - "syllable", - "symbol", - "system", - "table", - "tail", - "take", - "taken", - "tales", - "talk", - "tall", - "tank", - "tape", - "task", - "taste", - "taught", - "tax", - "tea", - "teach", - "teacher", - "team", - "tears", - "teeth", - "telephone", - "television", - "tell", - "temperature", - "ten", - "tent", - "term", - "terrible", - "test", - "than", - "thank", - "that", - "thee", - "them", - "themselves", - "then", - "theory", - "there", - "therefore", - "these", - "they", - "thick", - "thin", - "thing", - "think", - "third", - "thirty", - "this", - "those", - "thou", - "though", - "thought", - "thousand", - "thread", - "three", - "threw", - "throat", - "through", - "throughout", - "throw", - "thrown", - "thumb", - "thus", - "thy", - "tide", - "tie", - "tight", - "tightly", - "till", - "time", - "tin", - "tiny", - "tip", - "tired", - "title", - "to", - "tobacco", - "today", - "together", - "told", - "tomorrow", - "tone", - "tongue", - "tonight", - "too", - "took", - "tool", - "top", - "topic", - "torn", - "total", - "touch", - "toward", - "tower", - "town", - "toy", - "trace", - "track", - "trade", - "traffic", - "trail", - "train", - "transportation", - "trap", - "travel", - "treated", - "tree", - "triangle", - "tribe", - "trick", - "tried", - "trip", - "troops", - "tropical", - "trouble", - "truck", - "trunk", - "truth", - "try", - "tube", - "tune", - "turn", - "twelve", - "twenty", - "twice", - "two", - "type", - "typical", - "uncle", - "under", - "underline", - "understanding", - "unhappy", - "union", - "unit", - "universe", - "unknown", - "unless", - "until", - "unusual", - "up", - "upon", - "upper", - "upward", - "us", - "use", - "useful", - "using", - "usual", - "usually", - "valley", - "valuable", - "value", - "vapor", - "variety", - "various", - "vast", - "vegetable", - "verb", - "vertical", - "very", - "vessels", - "victory", - "view", - "village", - "visit", - "visitor", - "voice", - "volume", - "vote", - "vowel", - "voyage", - "wagon", - "wait", - "walk", - "wall", - "want", - "war", - "warm", - "warn", - "was", - "wash", - "waste", - "watch", - "water", - "wave", - "way", - "we", - "weak", - "wealth", - "wear", - "weather", - "week", - "weigh", - "weight", - "welcome", - "well", - "went", - "were", - "west", - "western", - "wet", - "whale", - "what", - "whatever", - "wheat", - "wheel", - "when", - "whenever", - "where", - "wherever", - "whether", - "which", - "while", - "whispered", - "whistle", - "white", - "who", - "whole", - "whom", - "whose", - "why", - "wide", - "widely", - "wife", - "wild", - "will", - "willing", - "win", - "wind", - "window", - "wing", - "winter", - "wire", - "wise", - "wish", - "with", - "within", - "without", - "wolf", - "women", - "won", - "wonder", - "wonderful", - "wood", - "wooden", - "wool", - "word", - "wore", - "work", - "worker", - "world", - "worried", - "worry", - "worse", - "worth", - "would", - "wrapped", - "write", - "writer", - "writing", - "written", - "wrong", - "wrote", - "yard", - "year", - "yellow", - "yes", - "yesterday", - "yet", - "you", - "young", - "younger", - "your", - "yourself", - "youth", - "zero", - "zebra", - "zipper", - "zoo", - "zulu", -] - -const shortestWordSize = words.reduce((shortestWord, currentWord) => - currentWord.length < shortestWord.length ? currentWord : shortestWord -).length - -const longestWordSize = words.reduce((longestWord, currentWord) => - currentWord.length > longestWord.length ? currentWord : longestWord -).length - -export function randomWords( - options: Readonly<{ amount: number; maxLength?: number; minLength?: number }> -): readonly string[] { - const { amount, minLength, maxLength } = options - - function word(): string | undefined { - let min = typeof minLength !== "number" ? shortestWordSize : limitWordSize(minLength) - const max = typeof maxLength !== "number" ? longestWordSize : limitWordSize(maxLength) - - if (min > max) min = max - - let rightSize = false - let wordUsed: string = "" - while (!rightSize) { - wordUsed = generateRandomWord() - rightSize = wordUsed.length <= max && wordUsed.length >= min - } - - return wordUsed - } - - function generateRandomWord(): string { - return words[randInt(words.length)] ?? "apple-tree" - } - - // limits the size of words to the minimum and maximum possible - function limitWordSize(wordSize: number) { - if (wordSize < shortestWordSize) wordSize = shortestWordSize - if (wordSize > longestWordSize) wordSize = longestWordSize - - return wordSize - } - - function randInt(lessThan: number): number { - return Math.floor(Math.random() * lessThan) - } - - const results: string[] = [] - let token = "" - - for (let i = 0; i < amount; i++) { - token += word() - results.push(token) - token = "" - } - - return results -} diff --git a/desktop/src/lib/releases.ts b/desktop/src/lib/releases.ts deleted file mode 100644 index c164a6bd9..000000000 --- a/desktop/src/lib/releases.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { useQuery } from "@tanstack/react-query" -import { client } from "@/client/client" -import { Release } from "@/gen" -import { QueryKeys } from "@/queryKeys" - -export function useReleases(): readonly Release[] | undefined { - const { data: releases } = useQuery({ - queryKey: QueryKeys.RELEASES, - queryFn: async () => { - return (await client.fetchReleases()).unwrap() - }, - }) - - return releases -} diff --git a/desktop/src/lib/result.ts b/desktop/src/lib/result.ts deleted file mode 100644 index ba3fd9c59..000000000 --- a/desktop/src/lib/result.ts +++ /dev/null @@ -1,65 +0,0 @@ -export class Err { - readonly ok = false - readonly err = true - - constructor(public readonly val: TError) {} - - public unwrap(): undefined { - throw new Error(this.val.message, { cause: this.val }) - } -} - -export class Ok { - readonly ok = true - readonly err = false - - constructor(public readonly val: T) {} - - public unwrap(): T { - return this.val - } -} - -// eslint-disable-next-line @typescript-eslint/naming-convention -export type ResultError = Ok | Err -// eslint-disable-next-line @typescript-eslint/naming-convention -export type Result = Ok | Err - -// eslint-disable-next-line @typescript-eslint/naming-convention -export type ErrorType = string - -export const ErrorTypeUnknown: ErrorType = "" -export const ErrorTypeCancelled: ErrorType = "cancelled" - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export const MapErrorCode = (code: number): ErrorType => { - return ErrorTypeUnknown -} - -export class Return { - static Ok() { - return new Ok(undefined) - } - - static Value(val: TVal) { - return new Ok(val) - } - - static Failed(message: string, reason: string = "", type: ErrorType = ErrorTypeUnknown) { - return new Err(new Failed(message, type, reason)) - } - - static Error(val: TError): Err { - return new Err(val) - } -} - -export class Failed extends Error { - constructor( - public readonly message: string, - public readonly type: ErrorType = ErrorTypeUnknown, - public readonly reason: string = "" - ) { - super(message) - } -} diff --git a/desktop/src/lib/sortWorkspaceConstants.ts b/desktop/src/lib/sortWorkspaceConstants.ts deleted file mode 100644 index 6b42fd9f4..000000000 --- a/desktop/src/lib/sortWorkspaceConstants.ts +++ /dev/null @@ -1,43 +0,0 @@ -export enum ESortWorkspaceMode { - RECENTLY_USED = "Recently Used", - LEAST_RECENTLY_USED = "Least Recently Used", - RECENTLY_CREATED = "Recently Created", - LEAST_RECENTLY_CREATED = "Least Recently Created", -} - -export const DEFAULT_SORT_WORKSPACE_MODE = ESortWorkspaceMode.RECENTLY_USED - -type TSortable = { - original: TOriginal - created: number - used: number -} - -export function sortWorkspaces( - sortables: TSortable[], - sortMode: ESortWorkspaceMode | undefined -): T[] { - const copy = [...sortables] - - copy.sort((a, b) => { - if (sortMode === ESortWorkspaceMode.RECENTLY_USED) { - return a.used > b.used ? -1 : 1 - } - - if (sortMode === ESortWorkspaceMode.LEAST_RECENTLY_USED) { - return b.used > a.used ? -1 : 1 - } - - if (sortMode === ESortWorkspaceMode.RECENTLY_CREATED) { - return a.created > b.created ? -1 : 1 - } - - if (sortMode === ESortWorkspaceMode.LEAST_RECENTLY_CREATED) { - return b.created > a.created ? -1 : 1 - } - - return 0 - }) - - return copy.map((copy) => copy.original) -} diff --git a/desktop/src/lib/store.ts b/desktop/src/lib/store.ts deleted file mode 100644 index da4426fac..000000000 --- a/desktop/src/lib/store.ts +++ /dev/null @@ -1,171 +0,0 @@ -import { LazyStore } from "@tauri-apps/plugin-store" -import { BINARY_NAME } from "@/client/repo" -import { TUnsubscribeFn } from "@/types" -import { EventManager } from "./eventManager" -import { exists } from "./helpers" - -type TBaseStore = Record - -type TStore = Readonly<{ - set(key: TKey, value: T[TKey]): Promise - get(key: TKey): Promise - remove(key: TKey): Promise - subscribe(key: TKey, listener: (newValue: T[TKey]) => void): TUnsubscribeFn - clear(): Promise -}> -type TStorageBackend = Omit, "subscribe"> - -export class Store implements TStore { - private eventManager = new EventManager() - constructor(private backend: TStorageBackend) {} - - public async set(key: TKey, value: T[TKey]): Promise { - await this.backend.set(key, value) - this.eventManager.publish(key, value) - } - - public async get(key: TKey): Promise { - return this.backend.get(key) - } - - public async remove(key: TKey): Promise { - return this.backend.remove(key) - } - - public subscribe( - key: TKey, - listener: (newValue: T[TKey]) => void - ): VoidFunction { - const handler = EventManager.toHandler(listener) - - return this.eventManager.subscribe(key, handler) - } - - public async clear(): Promise { - return this.backend.clear() - } -} - -export class LocalStorageBackend implements TStorageBackend { - constructor(private storageKey: string) {} - - private getKey(key: keyof TBaseStore): string { - return `${BINARY_NAME}-${this.storageKey}-${key.toString()}` - } - - public async set(key: TKey, value: T[TKey]): Promise { - try { - window.localStorage.setItem(this.getKey(key), JSON.stringify(value)) - } catch { - // noop - } - } - - public async get(key: TKey): Promise { - try { - const maybeValue = window.localStorage.getItem(this.getKey(key)) - if (!exists(maybeValue)) { - return null - } - - return JSON.parse(maybeValue) - } catch { - return null - } - } - - public async remove(key: TKey): Promise { - window.localStorage.removeItem(this.getKey(key)) - } - - public async clear(): Promise { - window.localStorage.clear() - } -} - -export class FileStorageBackend implements TStorageBackend { - private readonly store: LazyStore - - constructor(name: string) { - const fileName = `.${name}.json` - this.store = new LazyStore(fileName) - } - - public async set(key: TKey, value: T[TKey]): Promise { - try { - await this.store.set(key.toString(), value) - await this.store.save() - } catch { - // noop - } - } - - public async get(key: TKey): Promise { - try { - const maybeValue = await this.store.get(key.toString()) - if (!exists(maybeValue)) { - return null - } - - return maybeValue - } catch { - return null - } - } - - public async remove(key: TKey): Promise { - await this.store.delete(key.toString()) - await this.store.save() - } - - public async clear(): Promise { - await this.store.clear() - await this.store.save() - } -} - -export class LocalStorageToFileMigrationBackend< - T extends TBaseStore, -> implements TStorageBackend { - private lsBackend: LocalStorageBackend - private fsBackend: FileStorageBackend - - constructor(private storageKey: string) { - this.lsBackend = new LocalStorageBackend(this.storageKey) - this.fsBackend = new FileStorageBackend(this.storageKey) - } - - public async set(key: TKey, value: T[TKey]): Promise { - await this.fsBackend.set(key, value) - // don't wait for removal to confirm - try { - this.lsBackend.remove(key) - } catch { - // noop - } - } - - public async get(key: TKey): Promise { - const fsValue = await this.fsBackend.get(key) - if (exists(fsValue)) { - return fsValue - } - - const lsValue = await this.lsBackend.get(key) - if (exists(lsValue)) { - await this.fsBackend.set(key, lsValue) - - return lsValue - } - - return null - } - - public async remove(key: TKey): Promise { - await Promise.all([this.lsBackend.remove(key), this.fsBackend.remove(key)]) - } - - public async clear(): Promise { - await Promise.all([this.lsBackend.clear(), this.fsBackend.clear()]) - } -} diff --git a/desktop/src/lib/systemInfo.ts b/desktop/src/lib/systemInfo.ts deleted file mode 100644 index e18409d07..000000000 --- a/desktop/src/lib/systemInfo.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { useQuery } from "@tanstack/react-query" -import { client, TArch, TPlatform } from "@/client" -import { QueryKeys } from "@/queryKeys" - -export function usePlatform(): TPlatform | undefined { - const { data: platform } = useQuery({ - queryKey: QueryKeys.PLATFORM, - queryFn: () => client.fetchPlatform(), - }) - - return platform -} - -export function useArch(): TArch | undefined { - const { data: arch } = useQuery({ - queryKey: QueryKeys.ARCHITECTURE, - queryFn: () => client.fetchArch(), - }) - - return arch -} - -type TSystemTheme = Awaited, null>> -export function useSystemTheme(): TSystemTheme | undefined { - const { data: systemTheme } = useQuery({ - queryKey: QueryKeys.SYSTEM_THEME, - queryFn: async () => { - const t = await client.getSystemTheme() - if (t === null) { - throw new Error("System theme is not available") - } - - return t - }, - }) - - return systemTheme -} diff --git a/desktop/src/lib/types.ts b/desktop/src/lib/types.ts deleted file mode 100644 index 1b29d2452..000000000 --- a/desktop/src/lib/types.ts +++ /dev/null @@ -1,13 +0,0 @@ -export type TAction< - TType extends string, - TPayload extends unknown | undefined = undefined, -> = TPayload extends undefined - ? Readonly<{ - type: TType - }> - : { - type: TType - payload: TPayload - } - -export type TProInstanceDetail = "logs" | "configuration" diff --git a/desktop/src/lib/useDownloadLogs.ts b/desktop/src/lib/useDownloadLogs.ts deleted file mode 100644 index c49ad8cb3..000000000 --- a/desktop/src/lib/useDownloadLogs.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { client } from "@/client/client" -import { TActionID } from "@/contexts" -import { useToast } from "@chakra-ui/react" -import { useMutation } from "@tanstack/react-query" -import * as dialog from "@tauri-apps/plugin-dialog" - -export function useDownloadLogs() { - const toast = useToast() - const { mutate, isPending: isDownloading } = useMutation({ - mutationFn: async ({ actionID }: { actionID: TActionID }) => { - const actionLogFile = (await client.workspaces.getActionLogFile(actionID)).unwrap() - - if (actionLogFile === undefined) { - throw new Error(`Unable to retrieve file for action ${actionID}`) - } - - const targetFile = await dialog.save({ - title: "Save Logs", - filters: [{ name: "format", extensions: ["log", "txt"] }], - }) - - // user cancelled "save file" dialog - if (targetFile === null) { - return false - } - - await client.copyFile(actionLogFile, targetFile) - - return true - }, - onError(error) { - toast({ - title: `Failed to save logs: ${error}`, - status: "error", - isClosable: true, - duration: 30_000, // 30 sec - }) - }, - onSuccess(fileWasSaved) { - if (fileWasSaved) { - toast({ - title: "Logs saved successfully", - status: "success", - isClosable: true, - duration: 5_000, - }) - } - }, - }) - - return { download: mutate, isDownloading } -} diff --git a/desktop/src/lib/useFormErrors.ts b/desktop/src/lib/useFormErrors.ts deleted file mode 100644 index b8bfb557a..000000000 --- a/desktop/src/lib/useFormErrors.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { useMemo } from "react" -import { FieldError, FieldValues, FormState } from "react-hook-form" - -type TErr = `${TPrefix}Error` -type TFormErrors> = { - [K in keyof T as TErr]?: FieldError -} - -export function useFormErrors( - fieldNames: readonly (keyof TFormValues)[], - formState: FormState -): TFormErrors { - return useMemo(() => { - return fieldNames.reduce>( - (acc, curr) => ({ ...acc, [`${String(curr)}Error`]: formState.errors[curr] }), - {} - ) - }, [fieldNames, formState.errors]) -} diff --git a/desktop/src/lib/useHover.ts b/desktop/src/lib/useHover.ts deleted file mode 100644 index a5cd3cd64..000000000 --- a/desktop/src/lib/useHover.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { LegacyRef, useEffect, useRef, useState } from "react" - -export function useHover(): [boolean, LegacyRef] { - const [isHovering, setIsHovering] = useState(false) - - const ref = useRef(null) - - useEffect( - () => { - let timeoutId: NodeJS.Timeout - - const handleMouseEnter = () => { - clearTimeout(timeoutId) - setIsHovering(true) - } - - const handleMouseLeave = () => { - // Add small delay to prevent flickering when moving between elements - timeoutId = setTimeout(() => setIsHovering(false), 100) - } - - setTimeout(() => { - const node = ref.current - if (node) { - node.addEventListener("mouseenter", handleMouseEnter) - node.addEventListener("mouseleave", handleMouseLeave) - - return () => { - clearTimeout(timeoutId) - node.removeEventListener("mouseenter", handleMouseEnter) - node.removeEventListener("mouseleave", handleMouseLeave) - } - } - }) - }, - // rerun if ref changes! - // eslint-disable-next-line react-hooks/exhaustive-deps - [ref.current] - ) - - return [isHovering, ref] -} diff --git a/desktop/src/lib/useSelection.ts b/desktop/src/lib/useSelection.ts deleted file mode 100644 index 53a97c78f..000000000 --- a/desktop/src/lib/useSelection.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { useCallback, useMemo, useState } from "react" - -export function useSelection() { - const [selectedItems, setSelectedItems] = useState(new Set()) - - const toggleSelection = useCallback( - (id: TIdType) => { - setSelectedItems((curr) => { - const updated = new Set(curr) - if (updated.has(id)) { - updated.delete(id) - } else { - updated.add(id) - } - - return updated - }) - }, - [setSelectedItems] - ) - - const toggleSelectAll = useCallback( - (allSet: TIdType[]) => { - setSelectedItems((curr) => { - if (curr.size === allSet.length) { - return new Set() - } - - return new Set(allSet) - }) - }, - [setSelectedItems] - ) - - const setSelected = useCallback( - (id: TIdType, selected: boolean) => { - if (!selectedItems.has(id) && selected) { - const updated = new Set(selectedItems) - updated.add(id) - setSelectedItems(updated) - } else if (selectedItems.has(id) && !selected) { - const updated = new Set(selectedItems) - updated.delete(id) - setSelectedItems(updated) - } - }, - [setSelectedItems, selectedItems] - ) - - // Will remove outdated selection items if they are no longer part of the entire set. - const prune = useCallback( - (allSet: TIdType[]) => { - const updated = new Set(selectedItems) - - let changed = false - - for (const id of selectedItems) { - if (!allSet.includes(id)) { - updated.delete(id) - changed = true - } - } - - if (changed) { - setSelectedItems(updated) - } - }, - [setSelectedItems, selectedItems] - ) - - const clear = useCallback(() => { - setSelectedItems(new Set()) - }, [setSelectedItems]) - - const has = useCallback( - (id: TIdType) => { - return selectedItems.has(id) - }, - [selectedItems] - ) - - return useMemo( - () => ({ - toggleSelection, - toggleSelectAll, - size: selectedItems.size, - clear, - prune, - setSelected, - has, - selectedItems: { - val: selectedItems, - set: setSelectedItems, - }, - }), - [ - selectedItems, - setSelectedItems, - toggleSelection, - toggleSelectAll, - clear, - prune, - has, - setSelected, - ] - ) -} diff --git a/desktop/src/lib/useSortWorkspaces.tsx b/desktop/src/lib/useSortWorkspaces.tsx deleted file mode 100644 index bc768dc86..000000000 --- a/desktop/src/lib/useSortWorkspaces.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { TWorkspace } from "@/types" -import { useMemo } from "react" -import { ProWorkspaceInstance } from "@/contexts" -import { getLastActivity } from "@/lib/pro" -import { ESortWorkspaceMode, sortWorkspaces } from "./sortWorkspaceConstants" - -export function useSortWorkspaces( - workspaces: readonly TWorkspace[] | undefined, - sortMode: ESortWorkspaceMode | undefined -) { - return useMemo(() => { - if (!workspaces) { - return undefined - } - - const sortables = workspaces.map((workspace) => ({ - original: workspace, - created: new Date(workspace.creationTimestamp).getTime(), - used: new Date(workspace.lastUsed).getTime(), - })) - - return sortWorkspaces(sortables, sortMode) - }, [workspaces, sortMode]) -} - -export function useSortProWorkspaces( - workspaces: readonly ProWorkspaceInstance[] | undefined, - sortMode: ESortWorkspaceMode | undefined -) { - return useMemo(() => { - if (!workspaces) { - return undefined - } - - const sortables = workspaces.map((workspace) => ({ - original: workspace, - created: new Date(workspace.metadata?.creationTimestamp ?? 0).getTime(), - used: getLastActivity(workspace)?.getTime() ?? 0, - })) - - return sortWorkspaces(sortables, sortMode) - }, [workspaces, sortMode]) -} diff --git a/desktop/src/lib/useStoreTroubleshoot.ts b/desktop/src/lib/useStoreTroubleshoot.ts deleted file mode 100644 index 843690c1e..000000000 --- a/desktop/src/lib/useStoreTroubleshoot.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { client } from "@/client/client" -import { BINARY_NAME } from "@/client/repo" -import { TActionObj } from "@/contexts/DevsyContext/action" -import { TWorkspace } from "@/types" -import { useToast } from "@chakra-ui/react" -import { useMutation } from "@tanstack/react-query" -import { ProWorkspaceInstance } from "@/contexts" -import JSZip from "jszip" - -export function useStoreTroubleshoot() { - const toast = useToast() - const { mutate, isPending: isStoring } = useMutation({ - mutationFn: async ({ - workspace, - workspaceActions, - }: { - workspace: TWorkspace | ProWorkspaceInstance - workspaceActions: TActionObj[] - }) => { - const logFiles = await Promise.all( - workspaceActions.map((action) => client.workspaces.getActionLogFile(action.id)) - ) - - const targetFolder = await client.selectFromDir("Save Troubleshooting Data") - - // user cancelled "save file" dialog - if (targetFolder === null) { - return false - } - - const unwrappedLogFiles: [src: [string], targetFolder: string][] = logFiles - .filter((f) => f.ok) - .map((f) => f.unwrap()) - .map((f) => [[f], f.split(client.pathSeparator()).pop() ?? ""]) - - const zip = new JSZip() - - const logFilesData = ( - await Promise.all( - unwrappedLogFiles.map(async ([src, target]) => { - try { - const data = await client.readFile(src) - - return { fileName: target, data } - } catch { - // ignore missing log files and continue - return null - } - }) - ) - ).filter((d): d is Exclude => d != null) - - logFilesData.forEach((logFile) => { - zip.file(logFile.fileName, logFile.data) - }) - - zip.file("workspace_actions.json", JSON.stringify(workspaceActions, null, 2)) - zip.file("workspace.json", JSON.stringify(workspace, null, 2)) - - const troubleshootOutput = await client.workspaces.troubleshoot({ - id: workspace.id, - actionID: "", - streamID: "", - }) - - if (troubleshootOutput.ok) { - zip.file("cli_troubleshoot.json", troubleshootOutput.unwrap().stdout) - } - - const out = await zip.generateAsync({ type: "uint8array" }) - - await client.writeFile([targetFolder, `${BINARY_NAME}_troubleshoot.zip`], out) - - return true - }, - onError(error) { - toast({ - title: `Failed to save zip: ${error}`, - status: "error", - isClosable: true, - duration: 30_000, // 30 sec - }) - }, - onSuccess(fileWasSaved) { - if (fileWasSaved) { - toast({ - title: "Troubleshooting data saved successfully", - status: "success", - isClosable: true, - duration: 5_000, - }) - } - }, - }) - - return { store: mutate, isStoring } -} diff --git a/desktop/src/lib/useUpdate.ts b/desktop/src/lib/useUpdate.ts deleted file mode 100644 index b7f80189d..000000000 --- a/desktop/src/lib/useUpdate.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query" -import { useCallback, useState, useEffect } from "react" -import { client } from "@/client/client" -import { QueryKeys } from "@/queryKeys" - -export function useUpdate() { - const queryClient = useQueryClient() - const { - data: isUpdateAvailable, - refetch, - // Need to use `isFetching` as a workaround for interaction with `enabled: false` - isFetching: isChecking, - isSuccess: checkSuccess, - isError: checkError, - } = useQuery({ - queryKey: QueryKeys.UPDATE_RELEASE, - queryFn: async () => (await client.checkUpdates()).unwrap(), - enabled: false, - }) - - useEffect(() => { - if (checkSuccess || checkError) { - queryClient.resetQueries(QueryKeys.PENDING_UPDATE) - } - }, [checkSuccess, checkError, queryClient]) - - const { data: pendingUpdate } = useQuery({ - queryKey: QueryKeys.PENDING_UPDATE, - queryFn: async () => (await client.fetchPendingUpdate()).unwrap(), - enabled: false, - }) - - const { mutate: installMutate, isLoading: isInstalling } = useMutation({ - mutationKey: QueryKeys.INSTALL_UPDATE, - mutationFn: async () => (await client.installUpdate()).unwrap(), - onSettled: () => { - queryClient.resetQueries(QueryKeys.PENDING_UPDATE) - }, - }) - - const [isInstallDisabled, setIsInstallDisabled] = useState(false) - const install = useCallback(() => { - if (isInstallDisabled) { - return - } - - installMutate(undefined, { - onError: () => setIsInstallDisabled(false), - onSuccess: () => setIsInstallDisabled(true), - }) - }, [installMutate, isInstallDisabled]) - - return { - check: refetch, - isUpdateAvailable, - isChecking, - pendingUpdate, - install, - isInstalling, - isInstallDisabled, - } -} diff --git a/desktop/src/lib/useVersion.ts b/desktop/src/lib/useVersion.ts deleted file mode 100644 index 466fc2c99..000000000 --- a/desktop/src/lib/useVersion.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { useQuery } from "@tanstack/react-query" -import { client } from "@/client" -import { QueryKeys } from "@/queryKeys" - -export function useVersion(): string | undefined { - const { data: version } = useQuery({ - queryKey: QueryKeys.APP_VERSION, - queryFn: () => client.fetchVersion(), - cacheTime: Infinity, - staleTime: Infinity, - }) - - return version -} diff --git a/desktop/src/lib/validation.ts b/desktop/src/lib/validation.ts deleted file mode 100644 index a9ba35670..000000000 --- a/desktop/src/lib/validation.ts +++ /dev/null @@ -1,6 +0,0 @@ -// Regular expression for validating provider names -// Provider names can only contain lowercase letters, numbers, and hyphens -export const PROVIDER_NAME_REGEX = /^[a-z0-9-]+$/ - -// Maximum length for provider names -export const MAX_PROVIDER_NAME_LENGTH = 32 diff --git a/desktop/src/main.tsx b/desktop/src/main.tsx deleted file mode 100644 index 77bd71dda..000000000 --- a/desktop/src/main.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import { Logger, QueryClient, QueryClientProvider } from "@tanstack/react-query" -import { ReactQueryDevtools } from "@tanstack/react-query-devtools" -import dayjs from "dayjs" -import relativeTime from "dayjs/plugin/relativeTime" -import { StrictMode } from "react" -import ReactDOM from "react-dom/client" -import { Location, RouterProvider } from "react-router" -import "@xterm/xterm/css/xterm.css" -import "./assets/fonts.css" -import { ThemeProvider } from "./Theme/ThemeProvider" -import { SettingsProvider } from "./contexts" -import { router } from "./routes" -import { client } from "./client/client" -import { BINARY_NAME } from "./client/repo" -import { ColorModeScript } from "@chakra-ui/react" - -dayjs.extend(relativeTime) - -const logger: Logger | undefined = import.meta.env.PROD - ? { - log: () => { - // noop in prod - }, - warn: (...args: any[]) => { - client.log("warn", args.join(" ")) - }, - error: (...args: any[]) => { - client.log("error", args.join(" ")) - }, - } - : undefined -const queryClient = new QueryClient({ logger }) - -let render = true -const l = localStorage.getItem(`${BINARY_NAME}-location-current`) // check usePreserveLocation before changing this -if (l) { - const loc = JSON.parse(l) as Location - if (window.location.pathname !== loc.pathname) { - window.location.href = loc.pathname + loc.search - render = false - } -} - -if (render) { - ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render() -} -// force chakra to determine color mode on startup -localStorage.removeItem("chakra-ui-color-mode") - -// eslint-disable-next-line react-refresh/only-export-components -function Root() { - return ( - - - - - - - {/* Will be disabled in production automatically */} - - - - - - ) -} diff --git a/desktop/src/contexts/DevsyContext/workspaceStore/types.ts b/desktop/src/main/.gitkeep similarity index 100% rename from desktop/src/contexts/DevsyContext/workspaceStore/types.ts rename to desktop/src/main/.gitkeep diff --git a/desktop/src/main/__tests__/cli.test.ts b/desktop/src/main/__tests__/cli.test.ts new file mode 100644 index 000000000..5eefb215f --- /dev/null +++ b/desktop/src/main/__tests__/cli.test.ts @@ -0,0 +1,110 @@ +// @vitest-environment node +import { execFile } from "node:child_process" +import { beforeEach, describe, expect, it, vi } from "vitest" +import { CliRunner } from "../cli.js" + +vi.mock("node:child_process", async (importOriginal) => { + const actual = await importOriginal() + return { + ...actual, + execFile: vi.fn(), + spawn: vi.fn(), + } +}) + +describe("CliRunner", () => { + let cli: CliRunner + + beforeEach(() => { + vi.clearAllMocks() + cli = new CliRunner("/usr/local/bin/devsy") + }) + + describe("run", () => { + it("parses JSON stdout and returns typed result", async () => { + const mockExecFile = vi.mocked(execFile) as unknown as ReturnType< + typeof vi.fn + > + mockExecFile.mockImplementation( + (_cmd: string, _args: string[], _opts: unknown, callback: Function) => { + callback(null, { stdout: '[{"id":"ws-1"}]', stderr: "" }) + }, + ) + + const result = await cli.run<{ id: string }[]>(["list", "--skip-pro"]) + expect(result).toEqual([{ id: "ws-1" }]) + expect(mockExecFile).toHaveBeenCalledWith( + "/usr/local/bin/devsy", + ["list", "--skip-pro", "--output", "json"], + expect.objectContaining({ env: expect.any(Object) }), + expect.any(Function), + ) + }) + + it("throws on non-zero exit code with stripped ANSI stderr", async () => { + const mockExecFile = vi.mocked(execFile) as unknown as ReturnType< + typeof vi.fn + > + mockExecFile.mockImplementation( + (_cmd: string, _args: string[], _opts: unknown, callback: Function) => { + const error = new Error("Command failed") as Error & { + code: number + stderr: string + } + error.code = 1 + error.stderr = "\x1b[31mError: workspace not found\x1b[0m" + callback(error, { stdout: "", stderr: error.stderr }) + }, + ) + + await expect(cli.run(["list"])).rejects.toThrow("workspace not found") + }) + }) + + describe("runRaw", () => { + it("returns raw stdout string", async () => { + const mockExecFile = vi.mocked(execFile) as unknown as ReturnType< + typeof vi.fn + > + mockExecFile.mockImplementation( + (_cmd: string, _args: string[], _opts: unknown, callback: Function) => { + callback(null, { stdout: "v0.6.0-dev\n", stderr: "" }) + }, + ) + + const result = await cli.runRaw(["version"]) + expect(result).toBe("v0.6.0-dev\n") + }) + }) + + describe("constructor with .cjs binary", () => { + it("runs .cjs files through node from PATH", async () => { + const jsCli = new CliRunner("/tmp/mock.cjs") + const mockExecFile = vi.mocked(execFile) as unknown as ReturnType< + typeof vi.fn + > + mockExecFile.mockImplementation( + (_cmd: string, _args: string[], _opts: unknown, callback: Function) => { + callback(null, { stdout: "[]", stderr: "" }) + }, + ) + + await jsCli.run(["list"]) + expect(mockExecFile).toHaveBeenCalledWith( + "node", + ["/tmp/mock.cjs", "list", "--output", "json"], + expect.objectContaining({ env: expect.any(Object) }), + expect.any(Function), + ) + }) + }) + + describe("stripAnsi", () => { + it("removes ANSI escape sequences", () => { + const result = CliRunner.stripAnsi( + "\x1b[31mred\x1b[0m normal \x1b[1mbold\x1b[m", + ) + expect(result).toBe("red normal bold") + }) + }) +}) diff --git a/desktop/src/main/__tests__/log-store.test.ts b/desktop/src/main/__tests__/log-store.test.ts new file mode 100644 index 000000000..ef4c6315a --- /dev/null +++ b/desktop/src/main/__tests__/log-store.test.ts @@ -0,0 +1,72 @@ +import { mkdtempSync, rmSync } from "node:fs" +import { tmpdir } from "node:os" +import { join } from "node:path" +import { afterEach, beforeEach, describe, expect, it } from "vitest" +import { LogStore } from "../log-store.js" + +describe("LogStore", () => { + let store: LogStore + let tempDir: string + + beforeEach(() => { + tempDir = mkdtempSync(join(tmpdir(), "logstore-test-")) + store = new LogStore(tempDir) + }) + + afterEach(() => { + rmSync(tempDir, { recursive: true, force: true }) + }) + + it("creates a log file and returns its path", () => { + const logPath = store.createLogFile("ws-1") + expect(logPath).toContain("ws-1") + expect(logPath).toMatch(/\.log$/) + }) + + it("appends lines to a log file", () => { + const logPath = store.createLogFile("ws-1") + store.appendLog(logPath, "line 1") + store.appendLog(logPath, "line 2") + const content = store.readLogByPath(logPath) + expect(content).toContain("line 1") + expect(content).toContain("line 2") + }) + + it("lists logs for a workspace, newest first", () => { + store.createLogFile("ws-1") + // Small delay to ensure different timestamps + const path2 = store.createLogFile("ws-1") + const entries = store.listLogs("ws-1") + expect(entries).toHaveLength(2) + expect(entries[0].filename).toBe( + path2.split("/").pop()?.split("\\").pop() ?? "", + ) + }) + + it("returns empty list for unknown workspace", () => { + expect(store.listLogs("nonexistent")).toEqual([]) + }) + + it("reads a log file by workspace and filename", () => { + const logPath = store.createLogFile("ws-1") + store.appendLog(logPath, "test content") + const entries = store.listLogs("ws-1") + const content = store.readLog("ws-1", entries[0].filename) + expect(content).toContain("test content") + }) + + it("deletes a log file", () => { + const logPath = store.createLogFile("ws-1") + store.appendLog(logPath, "data") + const entries = store.listLogs("ws-1") + store.deleteLog("ws-1", entries[0].filename) + expect(store.listLogs("ws-1")).toHaveLength(0) + }) + + it("prunes logs older than maxAge (keeps recent)", () => { + store.createLogFile("ws-1") + const removed = store.prune(30) + expect(removed).toBe(0) + expect(store.listLogs("ws-1")).toHaveLength(1) + }) +}) diff --git a/desktop/src/main/__tests__/state.test.ts b/desktop/src/main/__tests__/state.test.ts new file mode 100644 index 000000000..a8b9d7e03 --- /dev/null +++ b/desktop/src/main/__tests__/state.test.ts @@ -0,0 +1,93 @@ +import { describe, expect, it } from "vitest" +import type { Context, Machine, Provider, Workspace } from "../state.js" +import { DaemonState } from "../state.js" + +function makeWorkspace(id: string, lastUsed: string): Workspace { + return { id, lastUsed: lastUsed } +} + +function makeProvider(name: string): Provider { + return { name } +} + +function makeMachine(id: string): Machine { + return { id } +} + +describe("DaemonState", () => { + it("detects workspace changes", () => { + const state = new DaemonState() + const ws = [makeWorkspace("ws1", "2024-01-01")] + expect(state.updateWorkspaces(ws)).toBe(true) + expect(state.updateWorkspaces(ws)).toBe(false) + }) + + it("detects workspace removal", () => { + const state = new DaemonState() + expect( + state.updateWorkspaces([ + makeWorkspace("ws1", "2024-01-01"), + makeWorkspace("ws2", "2024-01-02"), + ]), + ).toBe(true) + expect(state.updateWorkspaces([makeWorkspace("ws1", "2024-01-01")])).toBe( + true, + ) + expect(state.workspaceList()).toHaveLength(1) + }) + + it("detects provider changes", () => { + const state = new DaemonState() + const providers = [makeProvider("docker")] + expect(state.updateProviders(providers)).toBe(true) + expect(state.updateProviders(providers)).toBe(false) + expect( + state.updateProviders([ + makeProvider("docker"), + makeProvider("kubernetes"), + ]), + ).toBe(true) + }) + + it("sorts workspaces by lastUsed descending", () => { + const state = new DaemonState() + state.updateWorkspaces([ + makeWorkspace("old", "2024-01-01"), + makeWorkspace("new", "2024-06-01"), + makeWorkspace("mid", "2024-03-01"), + ]) + const sorted = state.workspaceList() + expect(sorted[0].id).toBe("new") + expect(sorted[1].id).toBe("mid") + expect(sorted[2].id).toBe("old") + }) + + it("sorts providers by name ascending", () => { + const state = new DaemonState() + state.updateProviders([ + makeProvider("zebra"), + makeProvider("alpha"), + makeProvider("middle"), + ]) + const sorted = state.providerList() + expect(sorted[0].name).toBe("alpha") + expect(sorted[1].name).toBe("middle") + expect(sorted[2].name).toBe("zebra") + }) + + it("sorts machines by id ascending", () => { + const state = new DaemonState() + state.updateMachines([makeMachine("z-machine"), makeMachine("a-machine")]) + const sorted = state.machineList() + expect(sorted[0].id).toBe("a-machine") + expect(sorted[1].id).toBe("z-machine") + }) + + it("detects context changes", () => { + const state = new DaemonState() + const contexts: Context[] = [{ name: "default" }, { name: "staging" }] + expect(state.updateContexts(contexts, "default")).toBe(true) + expect(state.updateContexts(contexts, "default")).toBe(false) + expect(state.updateContexts(contexts, "staging")).toBe(true) + }) +}) diff --git a/desktop/src/main/cli.ts b/desktop/src/main/cli.ts new file mode 100644 index 000000000..0f8075edc --- /dev/null +++ b/desktop/src/main/cli.ts @@ -0,0 +1,134 @@ +import type { ChildProcess } from "node:child_process" +import { execFile as execFileCb, spawn } from "node:child_process" +import { createInterface } from "node:readline" +import { promisify } from "node:util" + +const execFile = promisify(execFileCb) + +/** + * On macOS, GUI apps (including Electron) inherit a minimal PATH that excludes + * /usr/local/bin and /opt/homebrew/bin. This means tools like docker, git, etc. + * installed via Homebrew or Docker Desktop are invisible to child processes. + * We augment PATH so all spawned CLI processes can find these tools. + */ +function buildEnv(): NodeJS.ProcessEnv { + if (process.platform !== "darwin") return { ...process.env, DEVSY_UI: "true" } + + const currentPath = process.env.PATH ?? "" + const extraDirs = [ + "/usr/local/bin", + "/opt/homebrew/bin", + "/opt/homebrew/sbin", + ] + const missing = extraDirs.filter((d) => !currentPath.split(":").includes(d)) + if (missing.length === 0) return { ...process.env, DEVSY_UI: "true" } + + return { + ...process.env, + DEVSY_UI: "true", + PATH: `${missing.join(":")}:${currentPath}`, + } +} + +export class CliRunner { + private execPath: string + private prefixArgs: string[] + private env: NodeJS.ProcessEnv + + constructor(private binaryPath: string) { + // If the binary is a Node.js script, run it through node directly. + // Uses "node" from PATH rather than process.execPath because in Electron + // process.execPath is the Electron binary, not Node.js. + if (/\.[cm]?js$/.test(binaryPath)) { + this.execPath = "node" + this.prefixArgs = [binaryPath] + } else { + this.execPath = binaryPath + this.prefixArgs = [] + } + this.env = buildEnv() + } + + async run(args: string[]): Promise { + const fullArgs = [...this.prefixArgs, ...args, "--output", "json"] + try { + const { stdout } = await execFile(this.execPath, fullArgs, { + env: this.env, + }) + return JSON.parse(stdout) as T + } catch (error: unknown) { + throw this.wrapError(error) + } + } + + async runRaw(args: string[]): Promise { + try { + const { stdout } = await execFile( + this.execPath, + [...this.prefixArgs, ...args], + { env: this.env }, + ) + return stdout + } catch (error: unknown) { + throw this.wrapError(error) + } + } + + runStreaming( + args: string[], + onLine: (line: string, stream: "stdout" | "stderr") => void, + onExit: (code: number) => void, + ): ChildProcess { + const child = spawn(this.execPath, [...this.prefixArgs, ...args], { + env: this.env, + }) + + if (child.stdout) { + const rl = createInterface({ input: child.stdout }) + rl.on("line", (line) => onLine(line, "stdout")) + } + + if (child.stderr) { + const rl = createInterface({ input: child.stderr }) + rl.on("line", (line) => onLine(line, "stderr")) + } + + child.on("close", (code) => { + onExit(code ?? -1) + }) + + return child + } + + static stripAnsi(str: string): string { + // biome-ignore lint/suspicious/noControlCharactersInRegex: ANSI escape sequences use control characters by definition + return str.replace(/\x1b\[[0-9;]*[a-zA-Zm]/g, "") + } + + static resolveBinaryPath(resourcesPath: string): string { + const binaryName = process.platform === "win32" ? "devsy.exe" : "devsy" + const { join } = require("node:path") + return join(resourcesPath, "bin", binaryName) + } + + private wrapError(error: unknown): Error { + if (error instanceof Error && "stderr" in error) { + const stderr = CliRunner.stripAnsi( + String((error as { stderr: string }).stderr), + ) + return new Error(this.sanitizeMessage(stderr || error.message)) + } + return error instanceof Error + ? new Error(this.sanitizeMessage(error.message)) + : new Error(String(error)) + } + + /** Strip the full binary path from error messages to avoid exposing system paths to the user. */ + private sanitizeMessage(msg: string): string { + const binPath = this.binaryPath + if (binPath && msg.includes(binPath)) { + return msg.replaceAll(binPath, "devsy") + } + return msg + } +} diff --git a/desktop/src/main/index.ts b/desktop/src/main/index.ts new file mode 100644 index 000000000..306334aea --- /dev/null +++ b/desktop/src/main/index.ts @@ -0,0 +1,118 @@ +import { join } from "node:path" +import { app, BrowserWindow } from "electron" +import { CliRunner } from "./cli.js" +import { registerIpcHandlers } from "./ipc.js" +import { LogStore } from "./log-store.js" +import { PtyManager } from "./pty.js" +import { DaemonState } from "./state.js" +import { AppTray } from "./tray.js" +import { Watcher } from "./watcher.js" + +let mainWindow: BrowserWindow | null = null +const state = new DaemonState() + +function createWindow(): void { + mainWindow = new BrowserWindow({ + width: 1200, + height: 800, + minWidth: 1000, + minHeight: 700, + show: false, + title: "Devsy", + webPreferences: { + preload: join(__dirname, "../preload/index.js"), + contextIsolation: true, + nodeIntegration: false, + }, + }) + + mainWindow.on("close", (event) => { + if ( + mainWindow && + !(app as typeof app & { isQuitting?: boolean }).isQuitting + ) { + event.preventDefault() + mainWindow.hide() + } + }) + + if (process.env.ELECTRON_RENDERER_URL) { + mainWindow.loadURL(process.env.ELECTRON_RENDERER_URL) + } else { + mainWindow.loadFile(join(__dirname, "../renderer/index.html")) + } + + mainWindow.once("ready-to-show", () => { + mainWindow?.show() + }) +} + +app.whenReady().then(() => { + // Resolve CLI binary: env override for testing, otherwise bundled in resources + const binaryPath = + process.env.DEVPOD_CLI_PATH || + (app.isPackaged + ? CliRunner.resolveBinaryPath(process.resourcesPath) + : CliRunner.resolveBinaryPath(join(__dirname, "../../resources"))) + const cli = new CliRunner(binaryPath) + + // Initialize log store and prune old logs + const logStore = LogStore.defaultPath() + try { + const pruned = logStore.prune(30) + if (pruned > 0) console.log(`Pruned ${pruned} old log files`) + } catch (e) { + console.error("Failed to prune old logs:", e) + } + + // Initialize PTY manager + const ptyManager = new PtyManager({ + binaryPath: binaryPath, + getMainWindow: () => mainWindow, + }) + + app.on("before-quit", () => { + ;(app as typeof app & { isQuitting?: boolean }).isQuitting = true + ptyManager.destroyAll() + }) + + // Register IPC handlers + registerIpcHandlers({ + cli, + state, + logStore, + pty: ptyManager, + getMainWindow: () => mainWindow, + }) + + // Start state watcher + const watcher = new Watcher({ + cli, + state, + getMainWindow: () => mainWindow, + }) + watcher.start() + + // Set up system tray + const appTray = new AppTray({ + state, + getMainWindow: () => mainWindow, + }) + appTray.setup() + + createWindow() + + app.on("activate", () => { + if (BrowserWindow.getAllWindows().length === 0) { + createWindow() + } + }) +}) + +app.on("window-all-closed", () => { + if (process.platform !== "darwin") { + app.quit() + } +}) + +export { mainWindow, state } diff --git a/desktop/src/main/ipc.ts b/desktop/src/main/ipc.ts new file mode 100644 index 000000000..b9ad16b42 --- /dev/null +++ b/desktop/src/main/ipc.ts @@ -0,0 +1,639 @@ +import { execFile } from "node:child_process" +import { existsSync } from "node:fs" +import { mkdir, readdir, readFile } from "node:fs/promises" +import { homedir } from "node:os" +import { join } from "node:path" +import { promisify } from "node:util" +import type { BrowserWindow } from "electron" +import { ipcMain } from "electron" +import type { CliRunner } from "./cli.js" +import type { LogStore } from "./log-store.js" +import type { PtyManager } from "./pty.js" +import type { DaemonState } from "./state.js" +import { type ProviderEntry, parseProviderEntries } from "./watcher.js" + +const execFileAsync = promisify(execFile) + +interface SshKeyInfo { + name: string + keyType: string + fingerprint: string + comment: string + publicKey: string + path: string + hasPassphrase: boolean +} + +interface IpcDependencies { + cli: CliRunner + state: DaemonState + logStore: LogStore + pty: PtyManager + getMainWindow: () => BrowserWindow | null +} + +/** Format a line in zap console format so log-parser.ts can parse it. */ +function formatLogLine(line: string, level: "INFO" | "ERROR" = "INFO"): string { + return `${new Date().toISOString()}\t${level}\t${line}` +} + +export function registerIpcHandlers(deps: IpcDependencies): void { + const { cli, state, logStore } = deps + + // ── Workspaces ── + ipcMain.handle("workspace_list", () => state.workspaceList()) + + ipcMain.handle( + "workspace_status", + async (_event, args: { workspaceId: string }) => { + return cli.runRaw([ + "status", + args.workspaceId, + "--output", + "json", + "--timeout", + "5s", + ]) + }, + ) + + // ── Providers ── + ipcMain.handle("provider_list", async () => { + const raw = await cli.run>([ + "provider", + "list", + ]) + const providers = parseProviderEntries(raw) + state.updateProviders(providers as any[]) + return state.providerList() + }) + + ipcMain.handle( + "provider_add", + async (_event, args: { name: string; source?: string }) => { + const src = args.source ?? args.name + const cliArgs = ["provider", "add", src, "--use=false"] + if (args.source) { + cliArgs.push("--name", args.name) + } + await cli.runRaw(cliArgs) + }, + ) + + ipcMain.handle("provider_delete", async (_event, args: { name: string }) => { + await cli.runRaw(["provider", "delete", args.name]) + }) + + ipcMain.handle("provider_use", async (_event, args: { name: string }) => { + await cli.runRaw(["provider", "use", args.name]) + }) + + ipcMain.handle("provider_init", async (_event, args: { name: string }) => { + await cli.runRaw(["provider", "set-options", args.name]) + }) + + ipcMain.handle("provider_update", async (_event, args: { name: string }) => { + await cli.runRaw(["provider", "update", args.name, "--use=false"]) + }) + + ipcMain.handle("provider_options", async (_event, args: { name: string }) => { + return cli.run(["provider", "options", args.name]) + }) + + ipcMain.handle( + "provider_set_options", + async (_event, args: { name: string; options: string[] }) => { + const cliArgs = ["provider", "set-options", args.name] + for (const opt of args.options) { + cliArgs.push("-o", opt) + } + await cli.runRaw(cliArgs) + }, + ) + + ipcMain.handle( + "provider_rename", + async (_event, args: { name: string; newName: string }) => { + await cli.runRaw(["provider", "rename", args.name, args.newName]) + }, + ) + + // ── Machines ── + ipcMain.handle("machine_list", () => state.machineList()) + + ipcMain.handle( + "machine_create", + async ( + _event, + args: { + name: string + provider: string + options?: Record + }, + ) => { + const cliArgs = [ + "machine", + "create", + args.name, + "--provider", + args.provider, + ] + for (const [k, v] of Object.entries(args.options ?? {})) { + cliArgs.push("--option", `${k}=${v}`) + } + await cli.runRaw(cliArgs) + }, + ) + + ipcMain.handle( + "machine_delete", + async (_event, args: { id: string; force?: boolean }) => { + const cliArgs = ["machine", "delete", args.id] + if (args.force) cliArgs.push("--force") + await cli.runRaw(cliArgs) + }, + ) + + ipcMain.handle("machine_start", async (_event, args: { id: string }) => { + await cli.runRaw(["machine", "start", args.id]) + }) + + ipcMain.handle("machine_stop", async (_event, args: { id: string }) => { + await cli.runRaw(["machine", "stop", args.id]) + }) + + ipcMain.handle("machine_status", async (_event, args: { id: string }) => { + return cli.runRaw(["machine", "status", args.id, "--output", "json"]) + }) + + // ── Contexts ── + ipcMain.handle("context_list", () => state.contextList()) + + ipcMain.handle("context_use", async (_event, args: { name: string }) => { + await cli.runRaw(["context", "use", args.name]) + }) + + ipcMain.handle( + "context_options", + async (_event, args: { context?: string }) => { + const cliArgs = ["context", "options"] + if (args.context) cliArgs.push("--context", args.context) + return cli.run(cliArgs) + }, + ) + + ipcMain.handle( + "context_set_options", + async (_event, args: { options: string[]; context?: string }) => { + const cliArgs: string[] = ["context", "set-options"] + if (args.context) cliArgs.push(args.context) + for (const opt of args.options) { + cliArgs.push("-o", opt) + } + await cli.runRaw(cliArgs) + }, + ) + + ipcMain.handle("context_create", async (_event, args: { name: string }) => { + // The Go CLI's `context create` auto-activates the new context. + // Restore the previous active context so creating doesn't switch away. + const { activeContext: prev } = state.contextList() + await cli.runRaw(["context", "create", args.name]) + if (prev) { + await cli.runRaw(["context", "use", prev]) + } + }) + + ipcMain.handle("context_delete", async (_event, args: { name: string }) => { + await cli.runRaw(["context", "delete", args.name]) + }) + + // ── System ── + ipcMain.handle("devpod_version", async () => { + return cli.runRaw(["version"]) + }) + + ipcMain.handle( + "devpod_upgrade", + async (_event, args: { version: string }) => { + return cli.runRaw(["upgrade", "--version", args.version]) + }, + ) + + ipcMain.handle( + "devpod_upgrade_dry_run", + async (_event, args: { version: string }) => { + return cli.runRaw(["upgrade", "--version", args.version, "--dry-run"]) + }, + ) + + // ── Logs ── + ipcMain.handle( + "workspace_logs_list", + async (_event, args: { workspaceId: string }) => { + return logStore.listLogs(args.workspaceId) + }, + ) + + ipcMain.handle( + "workspace_log_read", + async (_event, args: { workspaceId: string; filename: string }) => { + return logStore.readLog(args.workspaceId, args.filename) + }, + ) + + ipcMain.handle( + "workspace_log_delete", + async (_event, args: { workspaceId: string; filename: string }) => { + logStore.deleteLog(args.workspaceId, args.filename) + }, + ) + + ipcMain.handle( + "workspace_up", + async ( + _event, + args: { + source: string + workspaceId?: string + provider?: string + ide?: string + debug?: boolean + }, + ) => { + const cliArgs = ["up", args.source] + if (args.workspaceId) cliArgs.push("--id", args.workspaceId) + if (args.provider) cliArgs.push("--provider", args.provider) + if (args.ide) cliArgs.push("--ide", args.ide) + if (args.debug) cliArgs.push("--debug") + + const wsId = args.workspaceId ?? args.source + const cmdId = crypto.randomUUID() + const logPath = logStore.createLogFile(wsId) + const win = deps.getMainWindow() + + cli.runStreaming( + cliArgs, + (line) => { + const formatted = formatLogLine(line) + logStore.appendLog(logPath, formatted) + win?.webContents.send("command-progress", { + commandId: cmdId, + message: formatted, + done: false, + }) + }, + (code) => { + const exitMsg = formatLogLine( + `Exit code: ${code}`, + code === 0 ? "INFO" : "ERROR", + ) + logStore.appendLog(logPath, exitMsg) + win?.webContents.send("command-progress", { + commandId: cmdId, + message: exitMsg, + done: true, + }) + }, + ) + + return cmdId + }, + ) + + ipcMain.handle( + "workspace_stop", + async (_event, args: { workspaceId: string; debug?: boolean }) => { + const cmdId = crypto.randomUUID() + const logPath = logStore.createLogFile(args.workspaceId) + const win = deps.getMainWindow() + + const cliArgs = ["stop", args.workspaceId] + if (args.debug) cliArgs.push("--debug") + + cli.runStreaming( + cliArgs, + (line) => { + const formatted = formatLogLine(line) + logStore.appendLog(logPath, formatted) + win?.webContents.send("command-progress", { + commandId: cmdId, + message: formatted, + done: false, + }) + }, + (code) => { + const exitMsg = formatLogLine( + `Exit code: ${code}`, + code === 0 ? "INFO" : "ERROR", + ) + logStore.appendLog(logPath, exitMsg) + win?.webContents.send("command-progress", { + commandId: cmdId, + message: exitMsg, + done: true, + }) + }, + ) + + return cmdId + }, + ) + + ipcMain.handle( + "workspace_delete", + async (_event, args: { workspaceId: string; debug?: boolean }) => { + const cmdId = crypto.randomUUID() + const logPath = logStore.createLogFile(args.workspaceId) + const win = deps.getMainWindow() + + const cliArgs = ["delete", args.workspaceId] + if (args.debug) cliArgs.push("--debug") + cliArgs.push("--force") + + cli.runStreaming( + cliArgs, + (line) => { + const formatted = formatLogLine(line) + logStore.appendLog(logPath, formatted) + win?.webContents.send("command-progress", { + commandId: cmdId, + message: formatted, + done: false, + }) + }, + (code) => { + const exitMsg = formatLogLine( + `Exit code: ${code}`, + code === 0 ? "INFO" : "ERROR", + ) + logStore.appendLog(logPath, exitMsg) + win?.webContents.send("command-progress", { + commandId: cmdId, + message: exitMsg, + done: true, + }) + }, + ) + + return cmdId + }, + ) + + ipcMain.handle( + "workspace_rebuild", + async (_event, args: { workspaceId: string; debug?: boolean }) => { + const cmdId = crypto.randomUUID() + const logPath = logStore.createLogFile(args.workspaceId) + const win = deps.getMainWindow() + + const cliArgs = ["up", args.workspaceId, "--recreate"] + if (args.debug) cliArgs.push("--debug") + + cli.runStreaming( + cliArgs, + (line) => { + const formatted = formatLogLine(line) + logStore.appendLog(logPath, formatted) + win?.webContents.send("command-progress", { + commandId: cmdId, + message: formatted, + done: false, + }) + }, + (code) => { + const exitMsg = formatLogLine( + `Exit code: ${code}`, + code === 0 ? "INFO" : "ERROR", + ) + logStore.appendLog(logPath, exitMsg) + win?.webContents.send("command-progress", { + commandId: cmdId, + message: exitMsg, + done: true, + }) + }, + ) + + return cmdId + }, + ) + + ipcMain.handle( + "workspace_reset", + async (_event, args: { workspaceId: string; debug?: boolean }) => { + const cmdId = crypto.randomUUID() + const logPath = logStore.createLogFile(args.workspaceId) + const win = deps.getMainWindow() + + const cliArgs = ["up", args.workspaceId, "--reset"] + if (args.debug) cliArgs.push("--debug") + + cli.runStreaming( + cliArgs, + (line) => { + const formatted = formatLogLine(line) + logStore.appendLog(logPath, formatted) + win?.webContents.send("command-progress", { + commandId: cmdId, + message: formatted, + done: false, + }) + }, + (code) => { + const exitMsg = formatLogLine( + `Exit code: ${code}`, + code === 0 ? "INFO" : "ERROR", + ) + logStore.appendLog(logPath, exitMsg) + win?.webContents.send("command-progress", { + commandId: cmdId, + message: exitMsg, + done: true, + }) + }, + ) + + return cmdId + }, + ) + + // ── Terminal ── + ipcMain.handle( + "terminal_create", + async (_event, args: { cols: number; rows: number }) => { + return deps.pty.createSession(args.cols, args.rows) + }, + ) + + ipcMain.handle( + "terminal_create_ssh", + async ( + _event, + args: { workspaceId: string; cols: number; rows: number }, + ) => { + return deps.pty.createSshSession(args.workspaceId, args.cols, args.rows) + }, + ) + + ipcMain.handle( + "terminal_write", + async (_event, args: { sessionId: string; data: number[] }) => { + const text = new TextDecoder().decode(new Uint8Array(args.data)) + deps.pty.writeToSession(args.sessionId, text) + }, + ) + + ipcMain.handle( + "terminal_resize", + async (_event, args: { sessionId: string; cols: number; rows: number }) => { + deps.pty.resizeSession(args.sessionId, args.cols, args.rows) + }, + ) + + ipcMain.handle( + "terminal_close", + async (_event, args: { sessionId: string }) => { + deps.pty.closeSession(args.sessionId) + }, + ) + + ipcMain.handle("terminal_list", async () => { + return deps.pty.listSessions() + }) + + // ── SSH Keys ── + ipcMain.handle("ssh_key_list", async () => { + const sshDir = join(homedir(), ".ssh") + if (!existsSync(sshDir)) return [] + + const entries = await readdir(sshDir) + const pubFiles = entries.filter((f) => f.endsWith(".pub")) + const keys: SshKeyInfo[] = [] + + for (const pubFile of pubFiles) { + const pubPath = join(sshDir, pubFile) + let pubContent: string + try { + pubContent = (await readFile(pubPath, "utf-8")).trim() + } catch { + continue + } + + const parts = pubContent.split(/\s+/, 3) + if (parts.length < 2) continue + + const keyType = parts[0] + const comment = parts[2] ?? "" + const baseName = pubFile.replace(/\.pub$/, "") + const privatePath = join(sshDir, baseName) + + // Get fingerprint via ssh-keygen + let fingerprint = "" + try { + const { stdout } = await execFileAsync("ssh-keygen", [ + "-l", + "-f", + pubPath, + ]) + fingerprint = stdout.trim() + } catch { + // ssh-keygen not available or key unreadable + } + + // Check if private key has passphrase + let hasPassphrase = false + if (existsSync(privatePath)) { + try { + const { status } = await new Promise<{ status: number | null }>( + (resolve) => { + const proc = execFile( + "ssh-keygen", + ["-y", "-P", "", "-f", privatePath], + () => {}, + ) + proc.on("close", (status) => resolve({ status })) + }, + ) + hasPassphrase = status !== 0 + } catch { + hasPassphrase = false + } + } + + keys.push({ + name: baseName, + keyType, + fingerprint, + comment, + publicKey: pubContent, + path: privatePath, + hasPassphrase, + }) + } + + keys.sort((a, b) => a.name.localeCompare(b.name)) + return keys + }) + + ipcMain.handle( + "ssh_key_generate", + async ( + _event, + args: { name: string; keyType?: string; comment?: string }, + ) => { + const sshDir = join(homedir(), ".ssh") + await mkdir(sshDir, { recursive: true, mode: 0o700 }) + + const keyPath = join(sshDir, args.name) + if (existsSync(keyPath)) { + throw new Error(`Key '${args.name}' already exists`) + } + + const algo = args.keyType ?? "ed25519" + const cmt = args.comment ?? `devsy-${args.name}` + + await execFileAsync("ssh-keygen", [ + "-t", + algo, + "-C", + cmt, + "-N", + "", + "-f", + keyPath, + ]) + + // Read the generated public key + const pubPath = `${keyPath}.pub` + const pubContent = (await readFile(pubPath, "utf-8")).trim() + const parts = pubContent.split(/\s+/, 3) + const keyType = parts[0] ?? "" + + // Get fingerprint + let fingerprint = "" + try { + const { stdout } = await execFileAsync("ssh-keygen", [ + "-l", + "-f", + pubPath, + ]) + fingerprint = stdout.trim() + } catch { + // Ignore + } + + const key: SshKeyInfo = { + name: args.name, + keyType, + fingerprint, + comment: cmt, + publicKey: pubContent, + path: keyPath, + hasPassphrase: false, + } + + return key + }, + ) +} diff --git a/desktop/src/main/log-store.ts b/desktop/src/main/log-store.ts new file mode 100644 index 000000000..6b5ca5b72 --- /dev/null +++ b/desktop/src/main/log-store.ts @@ -0,0 +1,102 @@ +import { + appendFileSync, + existsSync, + mkdirSync, + readdirSync, + readFileSync, + statSync, + unlinkSync, + writeFileSync, +} from "node:fs" +import { homedir } from "node:os" +import { join } from "node:path" + +export interface LogEntry { + workspaceId: string + filename: string + createdAt: string + sizeBytes: number +} + +let counter = 0 + +export class LogStore { + constructor(private baseDir: string) {} + + static defaultPath(): LogStore { + return new LogStore(join(homedir(), ".devpod", "logs")) + } + + createLogFile(workspaceId: string): string { + const dir = join(this.baseDir, workspaceId) + mkdirSync(dir, { recursive: true }) + const timestamp = new Date().toISOString().replace(/[:.]/g, "-") + const suffix = String(counter++).padStart(4, "0") + const filename = `${timestamp}-${suffix}.log` + const filePath = join(dir, filename) + writeFileSync(filePath, "") + return filePath + } + + appendLog(logPath: string, line: string): void { + appendFileSync(logPath, `${line}\n`) + } + + readLogByPath(logPath: string): string { + return readFileSync(logPath, "utf-8") + } + + listLogs(workspaceId: string): LogEntry[] { + const dir = join(this.baseDir, workspaceId) + if (!existsSync(dir)) return [] + + const entries: LogEntry[] = [] + for (const file of readdirSync(dir)) { + if (!file.endsWith(".log")) continue + const filePath = join(dir, file) + const stat = statSync(filePath) + entries.push({ + workspaceId, + filename: file, + createdAt: stat.birthtime.toISOString(), + sizeBytes: stat.size, + }) + } + + entries.sort((a, b) => b.filename.localeCompare(a.filename)) + return entries + } + + readLog(workspaceId: string, filename: string): string { + return readFileSync(join(this.baseDir, workspaceId, filename), "utf-8") + } + + deleteLog(workspaceId: string, filename: string): void { + unlinkSync(join(this.baseDir, workspaceId, filename)) + } + + prune(maxAgeDays: number): number { + if (!existsSync(this.baseDir)) return 0 + + const cutoff = Date.now() - maxAgeDays * 24 * 60 * 60 * 1000 + let removed = 0 + + for (const wsDir of readdirSync(this.baseDir)) { + const wsPath = join(this.baseDir, wsDir) + const wsStat = statSync(wsPath) + if (!wsStat.isDirectory()) continue + + for (const file of readdirSync(wsPath)) { + if (!file.endsWith(".log")) continue + const filePath = join(wsPath, file) + const fileStat = statSync(filePath) + if (fileStat.birthtimeMs < cutoff) { + unlinkSync(filePath) + removed++ + } + } + } + + return removed + } +} diff --git a/desktop/src/main/pty.ts b/desktop/src/main/pty.ts new file mode 100644 index 000000000..0e3b41960 --- /dev/null +++ b/desktop/src/main/pty.ts @@ -0,0 +1,139 @@ +import { platform } from "node:os" +import { dirname } from "node:path" +import type { BrowserWindow } from "electron" +import type { IPty } from "node-pty" + +// Lazy-load node-pty so the app can start even when the native module is unavailable +// (e.g. during e2e tests where native bindings aren't rebuilt for Electron's ABI). +let ptyModule: typeof import("node-pty") | null = null + +function requirePty(): typeof import("node-pty") { + if (!ptyModule) { + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + ptyModule = require("node-pty") as typeof import("node-pty") + } catch (err) { + throw new Error( + "Failed to load node-pty native module. Run: npx electron-rebuild -f -w node-pty", + { cause: err }, + ) + } + } + return ptyModule +} + +interface PtyDeps { + binaryPath: string + getMainWindow: () => BrowserWindow | null +} + +export class PtyManager { + private sessions = new Map() + private env: Record + + constructor(private deps: PtyDeps) { + // Build an augmented PATH so shells spawned from the Electron GUI can find + // the bundled devsy binary and common macOS tool directories. + const currentPath = process.env.PATH ?? "" + const extraDirs = [dirname(deps.binaryPath)] + if (platform() === "darwin") { + extraDirs.push( + "/usr/local/bin", + "/opt/homebrew/bin", + "/opt/homebrew/sbin", + ) + } + const missing = extraDirs.filter((d) => !currentPath.split(":").includes(d)) + const augmentedPath = + missing.length > 0 ? `${missing.join(":")}:${currentPath}` : currentPath + this.env = { + ...process.env, + TERM: "xterm-256color", + PATH: augmentedPath, + } as Record + } + + createSession(cols: number, rows: number): string { + const pty = requirePty() + const shell = + platform() === "win32" ? "powershell.exe" : process.env.SHELL || "/bin/sh" + + const sessionId = crypto.randomUUID() + const proc = pty.spawn(shell, [], { + name: "xterm-256color", + cols, + rows, + env: this.env, + }) + + this.wire(sessionId, proc) + return sessionId + } + + createSshSession(workspaceId: string, cols: number, rows: number): string { + const pty = requirePty() + const sessionId = crypto.randomUUID() + const proc = pty.spawn(this.deps.binaryPath, ["ssh", workspaceId], { + name: "xterm-256color", + cols, + rows, + env: this.env, + }) + + this.wire(sessionId, proc) + return sessionId + } + + writeToSession(sessionId: string, data: string): void { + const proc = this.sessions.get(sessionId) + if (!proc) throw new Error(`Session not found: ${sessionId}`) + proc.write(data) + } + + resizeSession(sessionId: string, cols: number, rows: number): void { + const proc = this.sessions.get(sessionId) + if (!proc) throw new Error(`Session not found: ${sessionId}`) + proc.resize(cols, rows) + } + + closeSession(sessionId: string): void { + const proc = this.sessions.get(sessionId) + if (!proc) throw new Error(`Session not found: ${sessionId}`) + proc.kill() + this.sessions.delete(sessionId) + } + + listSessions(): string[] { + return [...this.sessions.keys()] + } + + destroyAll(): void { + for (const [id, proc] of this.sessions) { + proc.kill() + this.sessions.delete(id) + } + } + + private wire(sessionId: string, proc: IPty): void { + this.sessions.set(sessionId, proc) + + proc.onData((data) => { + this.send("terminal:output", { + sessionId, + data: Array.from(new TextEncoder().encode(data)), + }) + }) + + proc.onExit(({ exitCode, signal }) => { + this.sessions.delete(sessionId) + this.send("terminal:exit", { sessionId, exitCode, signal }) + }) + } + + private send(channel: string, payload: unknown): void { + const win = this.deps.getMainWindow() + if (win && !win.isDestroyed()) { + win.webContents.send(channel, payload) + } + } +} diff --git a/desktop/src/main/state.ts b/desktop/src/main/state.ts new file mode 100644 index 000000000..0488c3968 --- /dev/null +++ b/desktop/src/main/state.ts @@ -0,0 +1,88 @@ +export interface Workspace { + id: string + lastUsed?: string + [key: string]: unknown +} + +export interface Provider { + name: string + [key: string]: unknown +} + +export interface Machine { + id: string + [key: string]: unknown +} + +export interface Context { + name: string + options?: Record +} + +export class DaemonState { + private workspaces = new Map() + private providers = new Map() + private machines = new Map() + private contexts: Context[] = [] + private activeContext = "" + + updateWorkspaces(list: Workspace[]): boolean { + const newMap = new Map(list.map((w) => [w.id, w])) + if (this.mapsEqual(this.workspaces, newMap)) return false + this.workspaces = newMap + return true + } + + updateProviders(list: Provider[]): boolean { + const newMap = new Map(list.map((p) => [p.name, p])) + if (this.mapsEqual(this.providers, newMap)) return false + this.providers = newMap + return true + } + + updateMachines(list: Machine[]): boolean { + const newMap = new Map(list.map((m) => [m.id, m])) + if (this.mapsEqual(this.machines, newMap)) return false + this.machines = newMap + return true + } + + updateContexts(contexts: Context[], active: string): boolean { + const contextsJson = JSON.stringify(contexts) + const currentJson = JSON.stringify(this.contexts) + if (contextsJson === currentJson && active === this.activeContext) + return false + this.contexts = contexts + this.activeContext = active + return true + } + + workspaceList(): Workspace[] { + return [...this.workspaces.values()].sort((a, b) => + (b.lastUsed ?? "").localeCompare(a.lastUsed ?? ""), + ) + } + + providerList(): Provider[] { + return [...this.providers.values()].sort((a, b) => + a.name.localeCompare(b.name), + ) + } + + machineList(): Machine[] { + return [...this.machines.values()].sort((a, b) => a.id.localeCompare(b.id)) + } + + contextList(): { contexts: Context[]; activeContext: string } { + return { contexts: [...this.contexts], activeContext: this.activeContext } + } + + private mapsEqual(a: Map, b: Map): boolean { + if (a.size !== b.size) return false + for (const [key, val] of a) { + if (!b.has(key) || JSON.stringify(val) !== JSON.stringify(b.get(key))) + return false + } + return true + } +} diff --git a/desktop/src/main/tray.ts b/desktop/src/main/tray.ts new file mode 100644 index 000000000..7f90ffd30 --- /dev/null +++ b/desktop/src/main/tray.ts @@ -0,0 +1,141 @@ +import { join } from "node:path" +import type { BrowserWindow } from "electron" +import { app, Menu, nativeImage, nativeTheme, Tray } from "electron" +import type { DaemonState } from "./state.js" + +interface TrayDeps { + state: DaemonState + getMainWindow: () => BrowserWindow | null +} + +export class AppTray { + private tray: Tray | null = null + private rebuildTimer: ReturnType | null = null + + constructor(private deps: TrayDeps) {} + + setup(): void { + const icon = this.createTrayIcon() + this.tray = new Tray(icon) + this.tray.setToolTip("Devsy") + this.rebuildMenu() + + if (process.platform !== "darwin") { + nativeTheme.on("updated", () => { + if (this.tray) { + this.tray.setImage(this.createTrayIcon()) + } + }) + } + + this.tray.on("click", () => { + const win = this.deps.getMainWindow() + if (win) { + win.show() + win.focus() + } + }) + + // Rebuild menu every 5 seconds + this.rebuildTimer = setInterval(() => this.rebuildMenu(), 5000) + } + + destroy(): void { + if (this.rebuildTimer) { + clearInterval(this.rebuildTimer) + this.rebuildTimer = null + } + if (this.tray) { + this.tray.destroy() + this.tray = null + } + } + + private createTrayIcon(): Electron.NativeImage { + const trayDir = join(__dirname, "../../resources/tray") + if (process.platform === "darwin") { + // macOS: use Template images — Electron auto-adapts to menu bar theme + const iconPath = join(trayDir, "icon-trayTemplate.png") + try { + const icon = nativeImage.createFromPath(iconPath) + icon.setTemplateImage(true) + return icon + } catch { + return nativeImage.createEmpty() + } + } + + // Windows/Linux: pick light or dark variant based on system theme + const variant = nativeTheme.shouldUseDarkColors ? "dark" : "light" + const iconPath = join(trayDir, `icon-tray-${variant}.png`) + try { + return nativeImage.createFromPath(iconPath) + } catch { + return nativeImage.createEmpty() + } + } + + private rebuildMenu(): void { + if (!this.tray) return + + const workspaces = this.deps.state.workspaceList() + const count = workspaces.length + const statusLabel = + count === 0 + ? "No workspaces" + : `${count} workspace${count === 1 ? "" : "s"}` + + const template: Electron.MenuItemConstructorOptions[] = [ + { label: statusLabel, enabled: false }, + ] + + if (workspaces.length > 0) { + template.push({ type: "separator" }) + for (const ws of workspaces.slice(0, 10)) { + template.push({ + label: ` ${ws.id}`, + click: () => { + const win = this.deps.getMainWindow() + if (win) { + win.show() + win.focus() + win.webContents.send("navigate", `/workspaces/${ws.id}`) + } + }, + }) + } + if (count > 10) { + template.push({ label: ` ... and ${count - 10} more`, enabled: false }) + } + } + + template.push( + { type: "separator" }, + { + label: "Show Devsy", + click: () => { + const win = this.deps.getMainWindow() + if (win) { + win.show() + win.focus() + } + }, + }, + { + label: "Hide", + click: () => { + this.deps.getMainWindow()?.hide() + }, + }, + { type: "separator" }, + { + label: "Quit Devsy", + click: () => app.quit(), + }, + ) + + const menu = Menu.buildFromTemplate(template) + this.tray.setContextMenu(menu) + this.tray.setToolTip(`Devsy — ${statusLabel}`) + } +} diff --git a/desktop/src/main/watcher.ts b/desktop/src/main/watcher.ts new file mode 100644 index 000000000..e7c6d712b --- /dev/null +++ b/desktop/src/main/watcher.ts @@ -0,0 +1,169 @@ +import { existsSync } from "node:fs" +import { homedir } from "node:os" +import { join } from "node:path" +import { watch } from "chokidar" +import type { BrowserWindow } from "electron" +import type { CliRunner } from "./cli.js" +import type { DaemonState } from "./state.js" + +interface WatcherDeps { + cli: CliRunner + state: DaemonState + getMainWindow: () => BrowserWindow | null +} + +interface ContextEntry { + name: string + default?: boolean +} + +export interface ProviderEntry { + config: { + name?: string + version?: string + icon?: string + description?: string + source?: Record + options?: Record + optionGroups?: unknown[] + } + state?: { initialized?: boolean } + default?: boolean +} + +export function parseProviderEntries(raw: Record) { + return Object.values(raw).map((entry) => ({ + name: entry.config.name ?? "", + version: entry.config.version ?? "", + icon: entry.config.icon ?? "", + description: entry.config.description ?? "", + source: entry.config.source ?? {}, + options: entry.config.options ?? {}, + optionGroups: entry.config.optionGroups ?? [], + isDefault: entry.default ?? false, + state: { + initialized: entry.state?.initialized ?? false, + singleMachine: false, + }, + })) +} + +export class Watcher { + private pollTimer: ReturnType | null = null + private fsWatcher: ReturnType | null = null + + constructor(private deps: WatcherDeps) {} + + start(): void { + // Poll every 3 seconds + this.pollTimer = setInterval(() => this.pollOnce(), 3000) + + // Watch ~/.devpod/ for filesystem changes + const devpodDir = join(homedir(), ".devpod") + if (existsSync(devpodDir)) { + this.fsWatcher = watch(devpodDir, { + ignoreInitial: true, + awaitWriteFinish: { stabilityThreshold: 500 }, + }) + this.fsWatcher.on("all", () => this.pollOnce()) + } + + // Initial poll + this.pollOnce() + } + + stop(): void { + if (this.pollTimer) { + clearInterval(this.pollTimer) + this.pollTimer = null + } + if (this.fsWatcher) { + this.fsWatcher.close() + this.fsWatcher = null + } + } + + private async pollOnce(): Promise { + await Promise.allSettled([ + this.pollWorkspaces(), + this.pollProviders(), + this.pollMachines(), + this.pollContexts(), + ]) + } + + private async pollWorkspaces(): Promise { + try { + const workspaces = await this.deps.cli.run([ + "list", + "--skip-pro", + ]) + const changed = this.deps.state.updateWorkspaces(workspaces as any[]) + if (changed) { + this.send("workspaces-changed", { + workspaces: this.deps.state.workspaceList(), + }) + } + } catch { + // Silently ignore poll failures + } + } + + private async pollProviders(): Promise { + try { + const raw = await this.deps.cli.run>([ + "provider", + "list", + ]) + const providers = parseProviderEntries(raw) + const changed = this.deps.state.updateProviders(providers as any[]) + if (changed) { + this.send("providers-changed", { + providers: this.deps.state.providerList(), + }) + } + } catch { + // Silently ignore poll failures + } + } + + private async pollMachines(): Promise { + try { + const machines = await this.deps.cli.run(["machine", "list"]) + const changed = this.deps.state.updateMachines(machines as any[]) + if (changed) { + this.send("machines-changed", { + machines: this.deps.state.machineList(), + }) + } + } catch { + // Silently ignore poll failures + } + } + + private async pollContexts(): Promise { + try { + const entries = await this.deps.cli.run([ + "context", + "list", + ]) + const active = entries.find((e) => e.default)?.name ?? "" + const contexts = entries.map((e) => ({ name: e.name })) + const changed = this.deps.state.updateContexts(contexts, active) + if (changed) { + const { contexts: ctxList, activeContext } = + this.deps.state.contextList() + this.send("contexts-changed", { contexts: ctxList, activeContext }) + } + } catch { + // Silently ignore poll failures + } + } + + private send(channel: string, payload: unknown): void { + const win = this.deps.getMainWindow() + if (win && !win.isDestroyed()) { + win.webContents.send(channel, payload) + } + } +} diff --git a/desktop/src/preload/.gitkeep b/desktop/src/preload/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/desktop/src/preload/index.ts b/desktop/src/preload/index.ts new file mode 100644 index 000000000..1f7f40969 --- /dev/null +++ b/desktop/src/preload/index.ts @@ -0,0 +1,14 @@ +import type { IpcRendererEvent } from "electron" +import { contextBridge, ipcRenderer } from "electron" + +contextBridge.exposeInMainWorld("electronAPI", { + invoke: (channel: string, args?: Record): Promise => + ipcRenderer.invoke(channel, args), + + on: (channel: string, callback: (payload: unknown) => void): (() => void) => { + const listener = (_event: IpcRendererEvent, payload: unknown) => + callback(payload) + ipcRenderer.on(channel, listener) + return () => ipcRenderer.removeListener(channel, listener) + }, +}) diff --git a/desktop/src/queryKeys.ts b/desktop/src/queryKeys.ts deleted file mode 100644 index 2b9d6de66..000000000 --- a/desktop/src/queryKeys.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { TProInstances, TProviderID, TWorkspaceID } from "./types" - -export const QueryKeys = { - PLATFORM: ["platform"], - ARCHITECTURE: ["architecture"], - SYSTEM_THEME: ["systemTheme"], - WORKSPACES: ["workspaces"], - PROVIDERS: ["providers"], - PROVIDERS_CHECK_UPDATE_ALL: ["providers", "update", "all"], - IDES: ["ides"], - COMMUNITY_CONTRIBUTIONS: ["communityContributions"], - CONTEXT_OPTIONS: ["contextOptions"], - RELEASES: ["releases"], - APP_VERSION: ["appVersion"], - UPDATE_RELEASE: ["updateRelease"], - PENDING_UPDATE: ["pendingUpdate"], - INSTALL_UPDATE: ["installUpdate"], - PRO_INSTANCES: ["proInstances"], - workspace(id: TWorkspaceID): string[] { - return [...QueryKeys.WORKSPACES, id] - }, - workspaceStatus(id: TWorkspaceID): string[] { - return [...QueryKeys.WORKSPACES, id, "status"] - }, - provider(id: TProviderID): string[] { - return [...QueryKeys.PROVIDERS, id] - }, - IS_CLI_INSTALLED: ["isCliInstalled"], - providerOptions(id: TProviderID): string[] { - return [...QueryKeys.provider(id), "options"] - }, - providerSetOptions(id: TProviderID): string[] { - return [...QueryKeys.provider(id), "set-options"] - }, - providerUpdate(id: TProviderID): string[] { - return [...QueryKeys.provider(id), "update"] - }, - proWorkspaceTemplates(host: string, project: string): string[] { - return ["workspaceTemplates", host, project] - }, - proClusters(host: string, project: string): string[] { - return ["clusters", host, project] - }, - connectionStatus(host: string): string[] { - return ["connectionStatus", host] - }, - versionInfo(host: string): string[] { - return ["versionInfo", host] - }, - proProviderUpdates(proInstances: TProInstances | undefined) { - return ["check-pro-provider-updates", proInstances] - }, - userProfile(name: string | undefined, client?: unknown) { - return ["user-profile", name, client] - }, -} - -export const MutationKeys = { - CREATE_WORKSPACE: ["createWorkspace"], - START_WORKSPACE: ["startWorkspace"], - STOP_WORKSPACE: ["stopWorkspace"], - REBUILD_WORKSPACE: ["rebuildWorkspace"], - REMOVE_WORKSPACE: ["removeWorkspace"], -} as const diff --git a/desktop/src/renderer/components.json b/desktop/src/renderer/components.json new file mode 100644 index 000000000..7d60481e1 --- /dev/null +++ b/desktop/src/renderer/components.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://shadcn-svelte.com/schema.json", + "style": "nova", + "tailwind": { + "css": "src/app.css", + "baseColor": "zinc" + }, + "registry": "https://shadcn-svelte.com/registry", + "aliases": { + "components": "$lib/components", + "utils": "$lib/utils", + "hooks": "$lib/hooks", + "ui": "$lib/components/ui", + "lib": "$lib" + } +} diff --git a/desktop/src/renderer/index.html b/desktop/src/renderer/index.html new file mode 100644 index 000000000..4f054bd8f --- /dev/null +++ b/desktop/src/renderer/index.html @@ -0,0 +1,16 @@ + + + + + + + Devsy + + +
    + + + diff --git a/desktop/src/images/antigravity.svg b/desktop/src/renderer/public/icons/ides/antigravity.svg similarity index 100% rename from desktop/src/images/antigravity.svg rename to desktop/src/renderer/public/icons/ides/antigravity.svg diff --git a/desktop/src/images/bob.svg b/desktop/src/renderer/public/icons/ides/bob.svg similarity index 100% rename from desktop/src/images/bob.svg rename to desktop/src/renderer/public/icons/ides/bob.svg diff --git a/desktop/src/images/clion.svg b/desktop/src/renderer/public/icons/ides/clion.svg similarity index 100% rename from desktop/src/images/clion.svg rename to desktop/src/renderer/public/icons/ides/clion.svg diff --git a/desktop/src/images/codium.svg b/desktop/src/renderer/public/icons/ides/codium.svg similarity index 100% rename from desktop/src/images/codium.svg rename to desktop/src/renderer/public/icons/ides/codium.svg diff --git a/desktop/src/images/codium_insiders.svg b/desktop/src/renderer/public/icons/ides/codium_insiders.svg similarity index 100% rename from desktop/src/images/codium_insiders.svg rename to desktop/src/renderer/public/icons/ides/codium_insiders.svg diff --git a/desktop/src/images/cursor.svg b/desktop/src/renderer/public/icons/ides/cursor.svg similarity index 100% rename from desktop/src/images/cursor.svg rename to desktop/src/renderer/public/icons/ides/cursor.svg diff --git a/desktop/src/images/dataspell.svg b/desktop/src/renderer/public/icons/ides/dataspell.svg similarity index 100% rename from desktop/src/images/dataspell.svg rename to desktop/src/renderer/public/icons/ides/dataspell.svg diff --git a/desktop/src/images/fleet.svg b/desktop/src/renderer/public/icons/ides/fleet.svg similarity index 100% rename from desktop/src/images/fleet.svg rename to desktop/src/renderer/public/icons/ides/fleet.svg diff --git a/desktop/src/images/goland.svg b/desktop/src/renderer/public/icons/ides/goland.svg similarity index 100% rename from desktop/src/images/goland.svg rename to desktop/src/renderer/public/icons/ides/goland.svg diff --git a/desktop/src/images/intellij.svg b/desktop/src/renderer/public/icons/ides/intellij.svg similarity index 100% rename from desktop/src/images/intellij.svg rename to desktop/src/renderer/public/icons/ides/intellij.svg diff --git a/desktop/src/images/jupyter.svg b/desktop/src/renderer/public/icons/ides/jupyter.svg similarity index 100% rename from desktop/src/images/jupyter.svg rename to desktop/src/renderer/public/icons/ides/jupyter.svg diff --git a/desktop/src/images/jupyter_dark.svg b/desktop/src/renderer/public/icons/ides/jupyter_dark.svg similarity index 100% rename from desktop/src/images/jupyter_dark.svg rename to desktop/src/renderer/public/icons/ides/jupyter_dark.svg diff --git a/desktop/src/images/marimo.svg b/desktop/src/renderer/public/icons/ides/marimo.svg similarity index 100% rename from desktop/src/images/marimo.svg rename to desktop/src/renderer/public/icons/ides/marimo.svg diff --git a/desktop/src/images/phpstorm.svg b/desktop/src/renderer/public/icons/ides/phpstorm.svg similarity index 100% rename from desktop/src/images/phpstorm.svg rename to desktop/src/renderer/public/icons/ides/phpstorm.svg diff --git a/desktop/src/images/positron.svg b/desktop/src/renderer/public/icons/ides/positron.svg similarity index 100% rename from desktop/src/images/positron.svg rename to desktop/src/renderer/public/icons/ides/positron.svg diff --git a/desktop/src/images/pycharm.svg b/desktop/src/renderer/public/icons/ides/pycharm.svg similarity index 100% rename from desktop/src/images/pycharm.svg rename to desktop/src/renderer/public/icons/ides/pycharm.svg diff --git a/desktop/src/images/rider.svg b/desktop/src/renderer/public/icons/ides/rider.svg similarity index 100% rename from desktop/src/images/rider.svg rename to desktop/src/renderer/public/icons/ides/rider.svg diff --git a/desktop/src/images/rstudio.svg b/desktop/src/renderer/public/icons/ides/rstudio.svg similarity index 100% rename from desktop/src/images/rstudio.svg rename to desktop/src/renderer/public/icons/ides/rstudio.svg diff --git a/desktop/src/images/rubymine.svg b/desktop/src/renderer/public/icons/ides/rubymine.svg similarity index 100% rename from desktop/src/images/rubymine.svg rename to desktop/src/renderer/public/icons/ides/rubymine.svg diff --git a/desktop/src/images/rustrover.svg b/desktop/src/renderer/public/icons/ides/rustrover.svg similarity index 100% rename from desktop/src/images/rustrover.svg rename to desktop/src/renderer/public/icons/ides/rustrover.svg diff --git a/desktop/src/images/vscode.svg b/desktop/src/renderer/public/icons/ides/vscode.svg similarity index 100% rename from desktop/src/images/vscode.svg rename to desktop/src/renderer/public/icons/ides/vscode.svg diff --git a/desktop/src/images/vscode_insiders.svg b/desktop/src/renderer/public/icons/ides/vscode_insiders.svg similarity index 100% rename from desktop/src/images/vscode_insiders.svg rename to desktop/src/renderer/public/icons/ides/vscode_insiders.svg diff --git a/desktop/src/images/webstorm.svg b/desktop/src/renderer/public/icons/ides/webstorm.svg similarity index 100% rename from desktop/src/images/webstorm.svg rename to desktop/src/renderer/public/icons/ides/webstorm.svg diff --git a/desktop/src/images/windsurf.svg b/desktop/src/renderer/public/icons/ides/windsurf.svg similarity index 100% rename from desktop/src/images/windsurf.svg rename to desktop/src/renderer/public/icons/ides/windsurf.svg diff --git a/desktop/src/images/zed.svg b/desktop/src/renderer/public/icons/ides/zed.svg similarity index 100% rename from desktop/src/images/zed.svg rename to desktop/src/renderer/public/icons/ides/zed.svg diff --git a/desktop/src/images/zed_dark.svg b/desktop/src/renderer/public/icons/ides/zed_dark.svg similarity index 100% rename from desktop/src/images/zed_dark.svg rename to desktop/src/renderer/public/icons/ides/zed_dark.svg diff --git a/desktop/src/images/cpp.svg b/desktop/src/renderer/public/icons/languages/cpp.svg similarity index 100% rename from desktop/src/images/cpp.svg rename to desktop/src/renderer/public/icons/languages/cpp.svg diff --git a/desktop/src/images/dotnet.svg b/desktop/src/renderer/public/icons/languages/dotnet.svg similarity index 100% rename from desktop/src/images/dotnet.svg rename to desktop/src/renderer/public/icons/languages/dotnet.svg diff --git a/desktop/src/images/go.svg b/desktop/src/renderer/public/icons/languages/go.svg similarity index 100% rename from desktop/src/images/go.svg rename to desktop/src/renderer/public/icons/languages/go.svg diff --git a/desktop/src/images/go_dark.svg b/desktop/src/renderer/public/icons/languages/go_dark.svg similarity index 100% rename from desktop/src/images/go_dark.svg rename to desktop/src/renderer/public/icons/languages/go_dark.svg diff --git a/desktop/src/images/java.svg b/desktop/src/renderer/public/icons/languages/java.svg similarity index 100% rename from desktop/src/images/java.svg rename to desktop/src/renderer/public/icons/languages/java.svg diff --git a/desktop/src/images/nodejs.svg b/desktop/src/renderer/public/icons/languages/nodejs.svg similarity index 100% rename from desktop/src/images/nodejs.svg rename to desktop/src/renderer/public/icons/languages/nodejs.svg diff --git a/desktop/src/images/php.svg b/desktop/src/renderer/public/icons/languages/php.svg similarity index 100% rename from desktop/src/images/php.svg rename to desktop/src/renderer/public/icons/languages/php.svg diff --git a/desktop/src/images/php_dark.svg b/desktop/src/renderer/public/icons/languages/php_dark.svg similarity index 100% rename from desktop/src/images/php_dark.svg rename to desktop/src/renderer/public/icons/languages/php_dark.svg diff --git a/desktop/src/images/python.svg b/desktop/src/renderer/public/icons/languages/python.svg similarity index 100% rename from desktop/src/images/python.svg rename to desktop/src/renderer/public/icons/languages/python.svg diff --git a/desktop/src/images/ruby.svg b/desktop/src/renderer/public/icons/languages/ruby.svg similarity index 100% rename from desktop/src/images/ruby.svg rename to desktop/src/renderer/public/icons/languages/ruby.svg diff --git a/desktop/src/images/rust.svg b/desktop/src/renderer/public/icons/languages/rust.svg similarity index 100% rename from desktop/src/images/rust.svg rename to desktop/src/renderer/public/icons/languages/rust.svg diff --git a/desktop/src/images/rust_dark.svg b/desktop/src/renderer/public/icons/languages/rust_dark.svg similarity index 100% rename from desktop/src/images/rust_dark.svg rename to desktop/src/renderer/public/icons/languages/rust_dark.svg diff --git a/desktop/src/images/aws.svg b/desktop/src/renderer/public/icons/providers/aws.svg similarity index 100% rename from desktop/src/images/aws.svg rename to desktop/src/renderer/public/icons/providers/aws.svg diff --git a/desktop/src/images/azure.svg b/desktop/src/renderer/public/icons/providers/azure.svg similarity index 100% rename from desktop/src/images/azure.svg rename to desktop/src/renderer/public/icons/providers/azure.svg diff --git a/desktop/src/images/civo.svg b/desktop/src/renderer/public/icons/providers/civo.svg similarity index 100% rename from desktop/src/images/civo.svg rename to desktop/src/renderer/public/icons/providers/civo.svg diff --git a/desktop/src/images/digitalocean.svg b/desktop/src/renderer/public/icons/providers/digitalocean.svg similarity index 100% rename from desktop/src/images/digitalocean.svg rename to desktop/src/renderer/public/icons/providers/digitalocean.svg diff --git a/desktop/src/images/docker.svg b/desktop/src/renderer/public/icons/providers/docker.svg similarity index 100% rename from desktop/src/images/docker.svg rename to desktop/src/renderer/public/icons/providers/docker.svg diff --git a/desktop/src/images/gcp.svg b/desktop/src/renderer/public/icons/providers/gcp.svg similarity index 100% rename from desktop/src/images/gcp.svg rename to desktop/src/renderer/public/icons/providers/gcp.svg diff --git a/desktop/src/images/kubernetes.svg b/desktop/src/renderer/public/icons/providers/kubernetes.svg similarity index 100% rename from desktop/src/images/kubernetes.svg rename to desktop/src/renderer/public/icons/providers/kubernetes.svg diff --git a/desktop/src/images/provider_placeholder.svg b/desktop/src/renderer/public/icons/providers/provider_placeholder.svg similarity index 100% rename from desktop/src/images/provider_placeholder.svg rename to desktop/src/renderer/public/icons/providers/provider_placeholder.svg diff --git a/desktop/src/images/ssh.svg b/desktop/src/renderer/public/icons/providers/ssh.svg similarity index 100% rename from desktop/src/images/ssh.svg rename to desktop/src/renderer/public/icons/providers/ssh.svg diff --git a/desktop/src/images/terraform.svg b/desktop/src/renderer/public/icons/providers/terraform.svg similarity index 100% rename from desktop/src/images/terraform.svg rename to desktop/src/renderer/public/icons/providers/terraform.svg diff --git a/desktop/src/renderer/src/App.svelte b/desktop/src/renderer/src/App.svelte new file mode 100644 index 000000000..be068f05f --- /dev/null +++ b/desktop/src/renderer/src/App.svelte @@ -0,0 +1,128 @@ + + + window.focus()} /> + + + + + +
    +
    + + +
    +
    + + +
    +
    + +
    + +
    +
    + + + +
    diff --git a/desktop/src/renderer/src/app.css b/desktop/src/renderer/src/app.css new file mode 100644 index 000000000..f3a359f46 --- /dev/null +++ b/desktop/src/renderer/src/app.css @@ -0,0 +1,154 @@ +@import "tailwindcss"; +@import "tw-animate-css"; + +@custom-variant dark (&:is(.dark *)); + +:root { + --background: hsl(0 0% 100%); + --foreground: hsl(240 10% 3.9%); + --card: hsl(0 0% 100%); + --card-foreground: hsl(240 10% 3.9%); + --popover: hsl(0 0% 100%); + --popover-foreground: hsl(240 10% 3.9%); + --primary: hsl(240 5.9% 10%); + --primary-foreground: hsl(0 0% 98%); + --secondary: hsl(240 4.8% 95.9%); + --secondary-foreground: hsl(240 5.9% 10%); + --muted: hsl(240 4.8% 95.9%); + --muted-foreground: hsl(240 3.8% 46.1%); + --accent: hsl(240 4.8% 95.9%); + --accent-foreground: hsl(240 5.9% 10%); + --destructive: hsl(0 84.2% 60.2%); + --destructive-foreground: hsl(0 0% 98%); + --border: hsl(240 5.9% 90%); + --input: hsl(240 5.9% 90%); + --ring: hsl(240 5.9% 10%); + --sidebar: hsl(0 0% 98%); + --sidebar-foreground: hsl(240 5.3% 26.1%); + --sidebar-primary: hsl(240 5.9% 10%); + --sidebar-primary-foreground: hsl(0 0% 98%); + --sidebar-accent: hsl(240 4.8% 95.9%); + --sidebar-accent-foreground: hsl(240 5.9% 10%); + --sidebar-border: hsl(220 13% 91%); + --sidebar-ring: hsl(217.2 91.2% 59.8%); + --radius: 0.5rem; +} + +.dark { + --background: hsl(240 10% 3.9%); + --foreground: hsl(0 0% 98%); + --card: hsl(240 10% 3.9%); + --card-foreground: hsl(0 0% 98%); + --popover: hsl(240 10% 3.9%); + --popover-foreground: hsl(0 0% 98%); + --primary: hsl(0 0% 98%); + --primary-foreground: hsl(240 5.9% 10%); + --secondary: hsl(240 3.7% 15.9%); + --secondary-foreground: hsl(0 0% 98%); + --muted: hsl(240 3.7% 15.9%); + --muted-foreground: hsl(240 5% 64.9%); + --accent: hsl(240 3.7% 15.9%); + --accent-foreground: hsl(0 0% 98%); + --destructive: hsl(0 62.8% 30.6%); + --destructive-foreground: hsl(0 0% 98%); + --border: hsl(240 3.7% 15.9%); + --input: hsl(240 3.7% 15.9%); + --ring: hsl(240 4.9% 83.9%); + --sidebar: hsl(240 5.9% 10%); + --sidebar-foreground: hsl(240 4.8% 95.9%); + --sidebar-primary: hsl(224.3 76.3% 48%); + --sidebar-primary-foreground: hsl(0 0% 100%); + --sidebar-accent: hsl(240 3.7% 15.9%); + --sidebar-accent-foreground: hsl(240 4.8% 95.9%); + --sidebar-border: hsl(240 3.7% 15.9%); + --sidebar-ring: hsl(217.2 91.2% 59.8%); +} + +/* ── Emerald accent ── */ +.theme-emerald { + --primary: hsl(161.8 100% 23.9%); + --primary-foreground: hsl(151.8 80.9% 95.8%); + --secondary: hsl(240 3.5% 95.8%); + --secondary-foreground: hsl(240 6% 10%); + --ring: hsl(161.8 100% 23.9%); +} +.dark.theme-emerald { + --primary: hsl(163 100% 18.9%); + --primary-foreground: hsl(151.8 80.9% 95.8%); + --secondary: hsl(240 4% 15.9%); + --secondary-foreground: hsl(180 0% 98%); + --ring: hsl(163 100% 18.9%); +} + +/* ── Purple accent ── */ +.theme-purple { + --primary: hsl(275.7 100% 42.9%); + --primary-foreground: hsl(270 98.8% 98%); + --secondary: hsl(240 3.5% 95.8%); + --secondary-foreground: hsl(240 6% 10%); + --ring: hsl(275.7 100% 42.9%); +} +.dark.theme-purple { + --primary: hsl(274.9 82.4% 37.9%); + --primary-foreground: hsl(270 98.8% 98%); + --secondary: hsl(240 4% 15.9%); + --secondary-foreground: hsl(180 0% 98%); + --ring: hsl(274.9 82.4% 37.9%); +} + +@theme inline { + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); + --color-ring: var(--ring); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); +} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} + +/* UI scale */ +.ui-scale-xs { + font-size: 13px; +} +.ui-scale-sm { + font-size: 14px; +} +.ui-scale-lg { + font-size: 18px; +} +.ui-scale-xl { + font-size: 20px; +} diff --git a/desktop/src/renderer/src/css.d.ts b/desktop/src/renderer/src/css.d.ts new file mode 100644 index 000000000..ef6d741f6 --- /dev/null +++ b/desktop/src/renderer/src/css.d.ts @@ -0,0 +1 @@ +declare module "*.css" {} diff --git a/desktop/src/renderer/src/lib/.gitkeep b/desktop/src/renderer/src/lib/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/desktop/src/renderer/src/lib/__mocks__/setup.ts b/desktop/src/renderer/src/lib/__mocks__/setup.ts new file mode 100644 index 000000000..ad48ac696 --- /dev/null +++ b/desktop/src/renderer/src/lib/__mocks__/setup.ts @@ -0,0 +1,40 @@ +/** + * Vitest setup file. + * Provides browser API polyfills that jsdom doesn't fully cover. + */ + +// Node 22+ has a built-in localStorage that requires --localstorage-file. +// Override with a simple in-memory implementation for tests. +if ( + typeof globalThis.localStorage === "undefined" || + typeof globalThis.localStorage.getItem !== "function" +) { + const store = new Map() + globalThis.localStorage = { + getItem: (key: string) => store.get(key) ?? null, + setItem: (key: string, value: string) => store.set(key, value), + removeItem: (key: string) => store.delete(key), + clear: () => store.clear(), + get length() { + return store.size + }, + key: (index: number) => [...store.keys()][index] ?? null, + } +} + +// jsdom doesn't implement matchMedia +if (typeof window !== "undefined" && typeof window.matchMedia !== "function") { + Object.defineProperty(window, "matchMedia", { + writable: true, + value: (query: string) => ({ + matches: false, + media: query, + onchange: null, + addListener: () => {}, + removeListener: () => {}, + addEventListener: () => {}, + removeEventListener: () => {}, + dispatchEvent: () => false, + }), + }) +} diff --git a/desktop/src/renderer/src/lib/__mocks__/tauri.ts b/desktop/src/renderer/src/lib/__mocks__/tauri.ts new file mode 100644 index 000000000..bd00ee095 --- /dev/null +++ b/desktop/src/renderer/src/lib/__mocks__/tauri.ts @@ -0,0 +1,24 @@ +import { vi } from "vitest" + +/** + * Mock for IPC invoke function. + * Tests can configure responses via mockInvoke.mockImplementation() + */ +export const mockInvoke = vi.fn() + +/** + * Mock for IPC listen function. + * Returns a no-op unlisten by default. + */ +export const mockListen = vi.fn().mockResolvedValue(() => {}) + +// Mock the bridge module which commands.ts/terminal.ts/events.ts import from +vi.mock("$lib/ipc/bridge", () => ({ + invoke: mockInvoke, + listen: mockListen, +})) + +export function resetTauriMocks() { + mockInvoke.mockReset() + mockListen.mockReset().mockResolvedValue(() => {}) +} diff --git a/desktop/src/renderer/src/lib/components/context/ContextSheet.svelte b/desktop/src/renderer/src/lib/components/context/ContextSheet.svelte new file mode 100644 index 000000000..edb72c9ff --- /dev/null +++ b/desktop/src/renderer/src/lib/components/context/ContextSheet.svelte @@ -0,0 +1,446 @@ + + + + + + + {context.name} + {#if isActive} + active + {/if} + + Configure context options for {context.name} + + +
    + {#if loading} +
    + +
    + + {#each Array(3) as _} +
    +
    + + +
    + +
    + {/each} +
    + + + +
    +
    + + + + +
    + +
    + + + +
    +
    + + + +
    +
    + + + + +
    + + {#each Array(3) as _} +
    +
    + + +
    + +
    + {/each} +
    +
    + {:else} + {#if !isActive} + + + Inactive context + + Changes are saved to this context but only take effect when it is the active context. + + + {/if} + + +
    +

    General

    + +
    +
    + +

    Send anonymous usage data

    +
    + toggleOption("telemetry")} disabled={saving || loading} /> +
    + +
    + +

    Custom agent endpoint URL

    + (opts.agentUrl = e.currentTarget.value)} + disabled={saving} + class="h-9" + /> +
    + +
    + +

    Seconds to wait for agent injection

    + (opts.agentInjectTimeout = e.currentTarget.value)} + disabled={saving} + class="h-9 max-w-24" + /> +
    + +
    + +

    Registry mirror or cache URL

    + (opts.registryCache = e.currentTarget.value)} + disabled={saving} + class="h-9" + /> +
    + +
    +
    + +

    Shut down workspace after inactivity timeout

    +
    + toggleOption("exitAfterTimeout")} disabled={saving || loading} /> +
    +
    + + + + +
    +

    Dotfiles

    + +
    + +

    Git repository URL for dotfiles to apply in workspaces

    + (opts.dotfilesUrl = e.currentTarget.value)} + disabled={saving} + class="h-9" + /> +
    + +
    + +

    Script to run after cloning dotfiles repository

    + (opts.dotfilesScript = e.currentTarget.value)} + disabled={saving} + class="h-9" + /> +
    +
    + + + + +
    +

    SSH

    + +
    +
    + +

    Forward SSH agent to workspaces

    +
    + toggleOption("sshAgentForwarding")} disabled={saving || loading} /> +
    + +
    +
    + +

    Automatically add private SSH keys to agent

    +
    + toggleOption("sshAddPrivateKeys")} disabled={saving || loading} /> +
    + +
    +
    + +

    Enable strict SSH host key verification

    +
    + toggleOption("sshStrictHostKeyChecking")} disabled={saving || loading} /> +
    + +
    + +

    Path to SSH config file

    + (opts.sshConfigPath = e.currentTarget.value)} + disabled={saving} + class="h-9" + /> +
    + +
    + +

    Path for SSH config includes

    + (opts.sshConfigIncludePath = e.currentTarget.value)} + disabled={saving} + class="h-9" + /> +
    +
    + + + + +
    +

    Credential Forwarding

    + +
    +
    + +

    Forward Docker credentials to workspaces

    +
    + toggleOption("dockerCredentialForwarding")} disabled={saving || loading} /> +
    + +
    +
    + +

    Forward Git credential helper to workspaces

    +
    + toggleOption("gitCredentialForwarding")} disabled={saving || loading} /> +
    + +
    +
    + +

    Forward Git SSH signature to workspaces

    +
    + toggleOption("gitSshSignatureForwarding")} disabled={saving || loading} /> +
    + +
    +
    + +

    Forward GPG agent to workspaces

    +
    + toggleOption("gpgAgentForwarding")} disabled={saving || loading} /> +
    +
    + + {#if !isActive} + +
    +

    Danger Zone

    + +
    + {/if} + {/if} +
    + + {#if isDirty} + +
    + + + Unsaved changes +
    +
    + {/if} +
    +
    + + diff --git a/desktop/src/renderer/src/lib/components/layout/Breadcrumbs.svelte b/desktop/src/renderer/src/lib/components/layout/Breadcrumbs.svelte new file mode 100644 index 000000000..60d06f1c9 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/layout/Breadcrumbs.svelte @@ -0,0 +1,51 @@ + + +{#if crumbs.length > 0} +
    +{/if} diff --git a/desktop/src/renderer/src/lib/components/layout/CommandPalette.svelte b/desktop/src/renderer/src/lib/components/layout/CommandPalette.svelte new file mode 100644 index 000000000..504e48403 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/layout/CommandPalette.svelte @@ -0,0 +1,179 @@ + + + + + + No results found. + {#each grouped as group} + + {#each group.items as item (item.id)} + {@const Icon = item.category ? CATEGORY_ICONS[item.category] : undefined} + selectItem(item)} + > + {#if Icon} + + {/if} +
    +
    {item.label}
    + {#if item.description} +
    + {item.description} +
    + {/if} +
    +
    + {/each} +
    + {/each} +
    +
    diff --git a/desktop/src/renderer/src/lib/components/layout/ConfirmDialog.svelte b/desktop/src/renderer/src/lib/components/layout/ConfirmDialog.svelte new file mode 100644 index 000000000..198f6baaa --- /dev/null +++ b/desktop/src/renderer/src/lib/components/layout/ConfirmDialog.svelte @@ -0,0 +1,51 @@ + + + + + + {title} + {#if description} + {description} + {/if} + + + {#if children} + {@render children()} + {/if} + + + + + + + diff --git a/desktop/src/renderer/src/lib/components/layout/NotificationHistory.svelte b/desktop/src/renderer/src/lib/components/layout/NotificationHistory.svelte new file mode 100644 index 000000000..8789024fd --- /dev/null +++ b/desktop/src/renderer/src/lib/components/layout/NotificationHistory.svelte @@ -0,0 +1,68 @@ + + + + + {#snippet child({ props })} + + {/snippet} + + + +
    + Notifications + {#if $notificationHistory.length > 0} + + {/if} +
    + + + {#if $notificationHistory.length === 0} +
    + No notifications yet +
    + {:else} +
    + {#each $notificationHistory as item (item.id)} +
    + {#if item.variant === "success"} + + {:else if item.variant === "error"} + + {:else} + + {/if} +
    +

    {item.message}

    +

    {timeAgoMs(item.timestamp)}

    +
    + +
    + {/each} +
    + {/if} +
    +
    diff --git a/desktop/src/renderer/src/lib/components/layout/Sidebar.svelte b/desktop/src/renderer/src/lib/components/layout/Sidebar.svelte new file mode 100644 index 000000000..d34ee38e9 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/layout/Sidebar.svelte @@ -0,0 +1,174 @@ + + + + + + + +
    + +
    +
    + Devsy + Desktop +
    +
    +
    +
    +
    + + + + Navigation + + + {#each mainNav as item (item.href)} + {@const Icon = item.icon} + + + {#snippet child({ props })} + + + {item.label} + {#if item.badge != null && item.badge > 0} + {item.badge} + {/if} + {#if item.shortcut} + {modKey}{item.shortcut} + {/if} + + {/snippet} + + + {/each} + + + + + + + + + + {#snippet child({ props })} + + + Settings + {modKey}8 + + {/snippet} + + + + + + Search + {modKey}K + + + + + + +
    diff --git a/desktop/src/renderer/src/lib/components/layout/ThemeSwitcher.svelte b/desktop/src/renderer/src/lib/components/layout/ThemeSwitcher.svelte new file mode 100644 index 000000000..f9a3fad13 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/layout/ThemeSwitcher.svelte @@ -0,0 +1,18 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/log/LogTable.svelte b/desktop/src/renderer/src/lib/components/log/LogTable.svelte new file mode 100644 index 000000000..1c11c8074 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/log/LogTable.svelte @@ -0,0 +1,49 @@ + + + + + + Time + Level + Message + + + + {#each parsed as line, i (i)} + + {line.time} + + {#if line.level} + + {line.level} + + {/if} + + {line.message} + + {/each} + + diff --git a/desktop/src/renderer/src/lib/components/machine/MachineCard.svelte b/desktop/src/renderer/src/lib/components/machine/MachineCard.svelte new file mode 100644 index 000000000..9c277382d --- /dev/null +++ b/desktop/src/renderer/src/lib/components/machine/MachineCard.svelte @@ -0,0 +1,112 @@ + + + + {/if} + {#if isRunning} + + {/if} + + + + + diff --git a/desktop/src/renderer/src/lib/components/provider/ProviderCard.svelte b/desktop/src/renderer/src/lib/components/provider/ProviderCard.svelte new file mode 100644 index 000000000..f8293324f --- /dev/null +++ b/desktop/src/renderer/src/lib/components/provider/ProviderCard.svelte @@ -0,0 +1,52 @@ + + + + + diff --git a/desktop/src/renderer/src/lib/components/provider/ProviderIcon.svelte b/desktop/src/renderer/src/lib/components/provider/ProviderIcon.svelte new file mode 100644 index 000000000..82e9f6779 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/provider/ProviderIcon.svelte @@ -0,0 +1,33 @@ + + +{name} icon diff --git a/desktop/src/renderer/src/lib/components/provider/ProviderSheet.svelte b/desktop/src/renderer/src/lib/components/provider/ProviderSheet.svelte new file mode 100644 index 000000000..b6e334f67 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/provider/ProviderSheet.svelte @@ -0,0 +1,364 @@ + + + + + + + {#if renaming} +
    { e.preventDefault(); handleRename() }}> + (renameValue = e.currentTarget.value)} + class="h-7 w-48 text-sm" + disabled={renameSaving} + /> + + +
    + {:else} + {provider.name} + {/if} + {#if provider.version} + {provider.version} + {/if} + {#if provider.isDefault} + default + {/if} + {#if provider.state?.initialized} + initialized + {/if} +
    + {#if provider.description} + {provider.description} + {/if} +
    + +
    + {#if provider.state?.initialized !== true} + + {/if} + + + + + + +
    + + + +
    + {#if setup && !loading && hasUnfilledRequired} +
    +

    Configure required options

    +

    + Fill in the required fields below and save. +

    +
    + {/if} + + {#if loading} +

    Loading options...

    + {:else if Object.keys(options).length === 0} +

    No configurable options available.

    + {:else} + {#each Object.entries(groupedOptions) as [group, entries] (group)} + {#if group} +

    + {group} +

    + {/if} + + {#each entries as [key, opt] (key)} +
    + + {#if opt.description} +

    {opt.description}

    + {/if} + {#if opt.enum && opt.enum.length > 0} + (optionValues[key] = v)} + > + + {optionValues[key] || "-- Select --"} + + + {#each opt.enum as enumVal} + + {/each} + + + {:else} + (optionValues[key] = e.currentTarget.value)} + class="h-9" + /> + {/if} +
    + {/each} + {/each} + {/if} +
    + + {#if isDirty} + +
    + + + Unsaved changes +
    +
    + {/if} +
    +
    + + diff --git a/desktop/src/renderer/src/lib/components/terminal/Terminal.svelte b/desktop/src/renderer/src/lib/components/terminal/Terminal.svelte new file mode 100644 index 000000000..d43950756 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/terminal/Terminal.svelte @@ -0,0 +1,216 @@ + + +
    diff --git a/desktop/src/renderer/src/lib/components/ui/accordion/accordion-content.svelte b/desktop/src/renderer/src/lib/components/ui/accordion/accordion-content.svelte new file mode 100644 index 000000000..e5cec1e0d --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/accordion/accordion-content.svelte @@ -0,0 +1,27 @@ + + + +
    + {@render children?.()} +
    +
    diff --git a/desktop/src/renderer/src/lib/components/ui/accordion/accordion-item.svelte b/desktop/src/renderer/src/lib/components/ui/accordion/accordion-item.svelte new file mode 100644 index 000000000..90f794fe3 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/accordion/accordion-item.svelte @@ -0,0 +1,17 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/accordion/accordion-trigger.svelte b/desktop/src/renderer/src/lib/components/ui/accordion/accordion-trigger.svelte new file mode 100644 index 000000000..4ebc7619f --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/accordion/accordion-trigger.svelte @@ -0,0 +1,32 @@ + + + + + {@render children?.()} + + + diff --git a/desktop/src/renderer/src/lib/components/ui/accordion/accordion.svelte b/desktop/src/renderer/src/lib/components/ui/accordion/accordion.svelte new file mode 100644 index 000000000..9ff6f0a2f --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/accordion/accordion.svelte @@ -0,0 +1,19 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/accordion/index.ts b/desktop/src/renderer/src/lib/components/ui/accordion/index.ts new file mode 100644 index 000000000..c94b580be --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/accordion/index.ts @@ -0,0 +1,16 @@ +import Root from "./accordion.svelte" +import Content from "./accordion-content.svelte" +import Item from "./accordion-item.svelte" +import Trigger from "./accordion-trigger.svelte" + +export { + Content, + Content as AccordionContent, + Item, + Item as AccordionItem, + Root, + // + Root as Accordion, + Trigger, + Trigger as AccordionTrigger, +} diff --git a/desktop/src/renderer/src/lib/components/ui/alert/alert-description.svelte b/desktop/src/renderer/src/lib/components/ui/alert/alert-description.svelte new file mode 100644 index 000000000..9e3995630 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/alert/alert-description.svelte @@ -0,0 +1,23 @@ + + +
    + {@render children?.()} +
    diff --git a/desktop/src/renderer/src/lib/components/ui/alert/alert-title.svelte b/desktop/src/renderer/src/lib/components/ui/alert/alert-title.svelte new file mode 100644 index 000000000..490afe3c2 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/alert/alert-title.svelte @@ -0,0 +1,20 @@ + + +
    + {@render children?.()} +
    diff --git a/desktop/src/renderer/src/lib/components/ui/alert/alert.svelte b/desktop/src/renderer/src/lib/components/ui/alert/alert.svelte new file mode 100644 index 000000000..ee785c6ed --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/alert/alert.svelte @@ -0,0 +1,44 @@ + + + + + diff --git a/desktop/src/renderer/src/lib/components/ui/alert/index.ts b/desktop/src/renderer/src/lib/components/ui/alert/index.ts new file mode 100644 index 000000000..3a9a95eba --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/alert/index.ts @@ -0,0 +1,15 @@ +import Root from "./alert.svelte" +import Description from "./alert-description.svelte" +import Title from "./alert-title.svelte" + +export { type AlertVariant, alertVariants } from "./alert.svelte" + +export { + Description, + Description as AlertDescription, + Root, + // + Root as Alert, + Title, + Title as AlertTitle, +} diff --git a/desktop/src/renderer/src/lib/components/ui/badge/index.ts b/desktop/src/renderer/src/lib/components/ui/badge/index.ts new file mode 100644 index 000000000..4adcfeb50 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/badge/index.ts @@ -0,0 +1,26 @@ +import { tv, type VariantProps } from "tailwind-variants" + +const badgeVariants = tv({ + base: "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", + variants: { + variant: { + default: "border-transparent bg-primary text-primary-foreground", + secondary: "border-transparent bg-secondary text-secondary-foreground", + destructive: + "border-transparent bg-destructive text-destructive-foreground", + outline: "text-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, +}) + +type Variant = VariantProps["variant"] + +type Props = { + class?: string + variant?: Variant +} + +export { badgeVariants, type Props as BadgeProps } diff --git a/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-ellipsis.svelte b/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-ellipsis.svelte new file mode 100644 index 000000000..b5bb3b373 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-ellipsis.svelte @@ -0,0 +1,23 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-item.svelte b/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-item.svelte new file mode 100644 index 000000000..2504bd4c2 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-item.svelte @@ -0,0 +1,20 @@ + + +
  1. + {@render children?.()} +
  2. diff --git a/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-link.svelte b/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-link.svelte new file mode 100644 index 000000000..6060486b9 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-link.svelte @@ -0,0 +1,31 @@ + + +{#if child} + {@render child({ props: attrs })} +{:else} + + {@render children?.()} + +{/if} diff --git a/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-list.svelte b/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-list.svelte new file mode 100644 index 000000000..416ba7c2d --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-list.svelte @@ -0,0 +1,23 @@ + + +
      + {@render children?.()} +
    diff --git a/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-page.svelte b/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-page.svelte new file mode 100644 index 000000000..e0a787512 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-page.svelte @@ -0,0 +1,23 @@ + + + + {@render children?.()} + diff --git a/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-separator.svelte b/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-separator.svelte new file mode 100644 index 000000000..5a08e9fe0 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb-separator.svelte @@ -0,0 +1,27 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb.svelte b/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb.svelte new file mode 100644 index 000000000..77c64f5bc --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/breadcrumb/breadcrumb.svelte @@ -0,0 +1,21 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/breadcrumb/index.ts b/desktop/src/renderer/src/lib/components/ui/breadcrumb/index.ts new file mode 100644 index 000000000..40f450e96 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/breadcrumb/index.ts @@ -0,0 +1,25 @@ +import Root from "./breadcrumb.svelte" +import Ellipsis from "./breadcrumb-ellipsis.svelte" +import Item from "./breadcrumb-item.svelte" +import Link from "./breadcrumb-link.svelte" +import List from "./breadcrumb-list.svelte" +import Page from "./breadcrumb-page.svelte" +import Separator from "./breadcrumb-separator.svelte" + +export { + Ellipsis, + Ellipsis as BreadcrumbEllipsis, + Item, + Item as BreadcrumbItem, + Link, + Link as BreadcrumbLink, + List, + List as BreadcrumbList, + Page, + Page as BreadcrumbPage, + Root, + // + Root as Breadcrumb, + Separator, + Separator as BreadcrumbSeparator, +} diff --git a/desktop/src/renderer/src/lib/components/ui/button-group/button-group-separator.svelte b/desktop/src/renderer/src/lib/components/ui/button-group/button-group-separator.svelte new file mode 100644 index 000000000..d10d4d86e --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/button-group/button-group-separator.svelte @@ -0,0 +1,23 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/button-group/button-group-text.svelte b/desktop/src/renderer/src/lib/components/ui/button-group/button-group-text.svelte new file mode 100644 index 000000000..b7abb869f --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/button-group/button-group-text.svelte @@ -0,0 +1,31 @@ + + +{#if child} + {@render child({ props: mergedProps })} +{:else} +
    + {@render mergedProps.children?.()} +
    +{/if} diff --git a/desktop/src/renderer/src/lib/components/ui/button-group/button-group.svelte b/desktop/src/renderer/src/lib/components/ui/button-group/button-group.svelte new file mode 100644 index 000000000..949b00f8e --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/button-group/button-group.svelte @@ -0,0 +1,46 @@ + + + + +
    + {@render children?.()} +
    diff --git a/desktop/src/renderer/src/lib/components/ui/button-group/index.ts b/desktop/src/renderer/src/lib/components/ui/button-group/index.ts new file mode 100644 index 000000000..e972be9d9 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/button-group/index.ts @@ -0,0 +1,17 @@ +import Root, { + type ButtonGroupOrientation, + buttonGroupVariants, +} from "./button-group.svelte" +import Separator from "./button-group-separator.svelte" +import Text from "./button-group-text.svelte" + +export { + type ButtonGroupOrientation, + buttonGroupVariants, + Root, + Root as ButtonGroup, + Separator, + Separator as ButtonGroupSeparator, + Text, + Text as ButtonGroupText, +} diff --git a/desktop/src/renderer/src/lib/components/ui/button/button.svelte b/desktop/src/renderer/src/lib/components/ui/button/button.svelte new file mode 100644 index 000000000..59a826c7c --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/button/button.svelte @@ -0,0 +1,92 @@ + + + + +{#if href} + + {@render children?.()} + +{:else} + +{/if} diff --git a/desktop/src/renderer/src/lib/components/ui/button/index.ts b/desktop/src/renderer/src/lib/components/ui/button/index.ts new file mode 100644 index 000000000..e1ce20f76 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/button/index.ts @@ -0,0 +1,17 @@ +import Root, { + type ButtonProps, + type ButtonSize, + type ButtonVariant, + buttonVariants, +} from "./button.svelte" + +export { + type ButtonProps as Props, + type ButtonProps, + type ButtonSize, + type ButtonVariant, + buttonVariants, + Root, + // + Root as Button, +} diff --git a/desktop/src/renderer/src/lib/components/ui/card/card-action.svelte b/desktop/src/renderer/src/lib/components/ui/card/card-action.svelte new file mode 100644 index 000000000..1e88013f0 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/card/card-action.svelte @@ -0,0 +1,20 @@ + + +
    + {@render children?.()} +
    diff --git a/desktop/src/renderer/src/lib/components/ui/card/card-content.svelte b/desktop/src/renderer/src/lib/components/ui/card/card-content.svelte new file mode 100644 index 000000000..d7649e46a --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/card/card-content.svelte @@ -0,0 +1,15 @@ + + +
    + {@render children?.()} +
    diff --git a/desktop/src/renderer/src/lib/components/ui/card/card-description.svelte b/desktop/src/renderer/src/lib/components/ui/card/card-description.svelte new file mode 100644 index 000000000..98ed412ad --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/card/card-description.svelte @@ -0,0 +1,20 @@ + + +

    + {@render children?.()} +

    diff --git a/desktop/src/renderer/src/lib/components/ui/card/card-footer.svelte b/desktop/src/renderer/src/lib/components/ui/card/card-footer.svelte new file mode 100644 index 000000000..a8e2e1bbc --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/card/card-footer.svelte @@ -0,0 +1,20 @@ + + +
    + {@render children?.()} +
    diff --git a/desktop/src/renderer/src/lib/components/ui/card/card-header.svelte b/desktop/src/renderer/src/lib/components/ui/card/card-header.svelte new file mode 100644 index 000000000..7a31571bd --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/card/card-header.svelte @@ -0,0 +1,23 @@ + + +
    + {@render children?.()} +
    diff --git a/desktop/src/renderer/src/lib/components/ui/card/card-title.svelte b/desktop/src/renderer/src/lib/components/ui/card/card-title.svelte new file mode 100644 index 000000000..cd5bfeb8d --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/card/card-title.svelte @@ -0,0 +1,20 @@ + + +
    + {@render children?.()} +
    diff --git a/desktop/src/renderer/src/lib/components/ui/card/card.svelte b/desktop/src/renderer/src/lib/components/ui/card/card.svelte new file mode 100644 index 000000000..d88f7f122 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/card/card.svelte @@ -0,0 +1,23 @@ + + +
    + {@render children?.()} +
    diff --git a/desktop/src/renderer/src/lib/components/ui/card/index.ts b/desktop/src/renderer/src/lib/components/ui/card/index.ts new file mode 100644 index 000000000..4ada34fe0 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/card/index.ts @@ -0,0 +1,25 @@ +import Root from "./card.svelte" +import Action from "./card-action.svelte" +import Content from "./card-content.svelte" +import Description from "./card-description.svelte" +import Footer from "./card-footer.svelte" +import Header from "./card-header.svelte" +import Title from "./card-title.svelte" + +export { + Action, + Action as CardAction, + Content, + Content as CardContent, + Description, + Description as CardDescription, + Footer, + Footer as CardFooter, + Header, + Header as CardHeader, + Root, + // + Root as Card, + Title, + Title as CardTitle, +} diff --git a/desktop/src/renderer/src/lib/components/ui/collapsible/collapsible-content.svelte b/desktop/src/renderer/src/lib/components/ui/collapsible/collapsible-content.svelte new file mode 100644 index 000000000..51ef66403 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/collapsible/collapsible-content.svelte @@ -0,0 +1,8 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/collapsible/collapsible-trigger.svelte b/desktop/src/renderer/src/lib/components/ui/collapsible/collapsible-trigger.svelte new file mode 100644 index 000000000..aaf5c2c27 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/collapsible/collapsible-trigger.svelte @@ -0,0 +1,8 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/collapsible/collapsible.svelte b/desktop/src/renderer/src/lib/components/ui/collapsible/collapsible.svelte new file mode 100644 index 000000000..947b39e4e --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/collapsible/collapsible.svelte @@ -0,0 +1,11 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/collapsible/index.ts b/desktop/src/renderer/src/lib/components/ui/collapsible/index.ts new file mode 100644 index 000000000..d20d31535 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/collapsible/index.ts @@ -0,0 +1,13 @@ +import Root from "./collapsible.svelte" +import Content from "./collapsible-content.svelte" +import Trigger from "./collapsible-trigger.svelte" + +export { + Content, + Content as CollapsibleContent, + Root, + // + Root as Collapsible, + Trigger, + Trigger as CollapsibleTrigger, +} diff --git a/desktop/src/renderer/src/lib/components/ui/command/command-dialog.svelte b/desktop/src/renderer/src/lib/components/ui/command/command-dialog.svelte new file mode 100644 index 000000000..f1a0f2195 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/command/command-dialog.svelte @@ -0,0 +1,45 @@ + + + + + {title} + {description} + + + + + diff --git a/desktop/src/renderer/src/lib/components/ui/command/command-empty.svelte b/desktop/src/renderer/src/lib/components/ui/command/command-empty.svelte new file mode 100644 index 000000000..6ccf09031 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/command/command-empty.svelte @@ -0,0 +1,17 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/command/command-group.svelte b/desktop/src/renderer/src/lib/components/ui/command/command-group.svelte new file mode 100644 index 000000000..bdb0e09f3 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/command/command-group.svelte @@ -0,0 +1,32 @@ + + + + {#if heading} + + {heading} + + {/if} + + diff --git a/desktop/src/renderer/src/lib/components/ui/command/command-input.svelte b/desktop/src/renderer/src/lib/components/ui/command/command-input.svelte new file mode 100644 index 000000000..81d9523b6 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/command/command-input.svelte @@ -0,0 +1,34 @@ + + +
    + + + {#snippet child({ props })} + + {/snippet} + + + + + +
    diff --git a/desktop/src/renderer/src/lib/components/ui/command/command-item.svelte b/desktop/src/renderer/src/lib/components/ui/command/command-item.svelte new file mode 100644 index 000000000..505553cfc --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/command/command-item.svelte @@ -0,0 +1,25 @@ + + + + {@render children?.()} + + diff --git a/desktop/src/renderer/src/lib/components/ui/command/command-link-item.svelte b/desktop/src/renderer/src/lib/components/ui/command/command-link-item.svelte new file mode 100644 index 000000000..ac3dcb8ed --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/command/command-link-item.svelte @@ -0,0 +1,20 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/command/command-list.svelte b/desktop/src/renderer/src/lib/components/ui/command/command-list.svelte new file mode 100644 index 000000000..cd5dc75e2 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/command/command-list.svelte @@ -0,0 +1,17 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/command/command-loading.svelte b/desktop/src/renderer/src/lib/components/ui/command/command-loading.svelte new file mode 100644 index 000000000..c5ee2a511 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/command/command-loading.svelte @@ -0,0 +1,8 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/command/command-separator.svelte b/desktop/src/renderer/src/lib/components/ui/command/command-separator.svelte new file mode 100644 index 000000000..8acb8ee22 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/command/command-separator.svelte @@ -0,0 +1,17 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/command/command-shortcut.svelte b/desktop/src/renderer/src/lib/components/ui/command/command-shortcut.svelte new file mode 100644 index 000000000..1b732af30 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/command/command-shortcut.svelte @@ -0,0 +1,20 @@ + + + + {@render children?.()} + diff --git a/desktop/src/renderer/src/lib/components/ui/command/command.svelte b/desktop/src/renderer/src/lib/components/ui/command/command.svelte new file mode 100644 index 000000000..5ecd6fb4d --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/command/command.svelte @@ -0,0 +1,25 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/command/index.ts b/desktop/src/renderer/src/lib/components/ui/command/index.ts new file mode 100644 index 000000000..6e41a5669 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/command/index.ts @@ -0,0 +1,37 @@ +import Root from "./command.svelte" +import Dialog from "./command-dialog.svelte" +import Empty from "./command-empty.svelte" +import Group from "./command-group.svelte" +import Input from "./command-input.svelte" +import Item from "./command-item.svelte" +import LinkItem from "./command-link-item.svelte" +import List from "./command-list.svelte" +import Loading from "./command-loading.svelte" +import Separator from "./command-separator.svelte" +import Shortcut from "./command-shortcut.svelte" + +export { + Dialog, + Dialog as CommandDialog, + Empty, + Empty as CommandEmpty, + Group, + Group as CommandGroup, + Input, + Input as CommandInput, + Item, + Item as CommandItem, + LinkItem, + LinkItem as CommandLinkItem, + List, + List as CommandList, + Loading, + Loading as CommandLoading, + Root, + // + Root as Command, + Separator, + Separator as CommandSeparator, + Shortcut, + Shortcut as CommandShortcut, +} diff --git a/desktop/src/renderer/src/lib/components/ui/dialog/dialog-close.svelte b/desktop/src/renderer/src/lib/components/ui/dialog/dialog-close.svelte new file mode 100644 index 000000000..a525f495f --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dialog/dialog-close.svelte @@ -0,0 +1,11 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/dialog/dialog-content.svelte b/desktop/src/renderer/src/lib/components/ui/dialog/dialog-content.svelte new file mode 100644 index 000000000..9f5407bcf --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dialog/dialog-content.svelte @@ -0,0 +1,48 @@ + + + + + + {@render children?.()} + {#if showCloseButton} + + {#snippet child({ props })} + + {/snippet} + + {/if} + + diff --git a/desktop/src/renderer/src/lib/components/ui/dialog/dialog-description.svelte b/desktop/src/renderer/src/lib/components/ui/dialog/dialog-description.svelte new file mode 100644 index 000000000..252c02089 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dialog/dialog-description.svelte @@ -0,0 +1,17 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/dialog/dialog-footer.svelte b/desktop/src/renderer/src/lib/components/ui/dialog/dialog-footer.svelte new file mode 100644 index 000000000..d67637f15 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dialog/dialog-footer.svelte @@ -0,0 +1,32 @@ + + +
    + {@render children?.()} + {#if showCloseButton} + + {#snippet child({ props })} + + {/snippet} + + {/if} +
    diff --git a/desktop/src/renderer/src/lib/components/ui/dialog/dialog-header.svelte b/desktop/src/renderer/src/lib/components/ui/dialog/dialog-header.svelte new file mode 100644 index 000000000..4d81a5c71 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dialog/dialog-header.svelte @@ -0,0 +1,20 @@ + + +
    + {@render children?.()} +
    diff --git a/desktop/src/renderer/src/lib/components/ui/dialog/dialog-overlay.svelte b/desktop/src/renderer/src/lib/components/ui/dialog/dialog-overlay.svelte new file mode 100644 index 000000000..1d320602c --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dialog/dialog-overlay.svelte @@ -0,0 +1,17 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/dialog/dialog-portal.svelte b/desktop/src/renderer/src/lib/components/ui/dialog/dialog-portal.svelte new file mode 100644 index 000000000..e91789ce6 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dialog/dialog-portal.svelte @@ -0,0 +1,7 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/dialog/dialog-title.svelte b/desktop/src/renderer/src/lib/components/ui/dialog/dialog-title.svelte new file mode 100644 index 000000000..886fa576c --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dialog/dialog-title.svelte @@ -0,0 +1,17 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/dialog/dialog-trigger.svelte b/desktop/src/renderer/src/lib/components/ui/dialog/dialog-trigger.svelte new file mode 100644 index 000000000..d9b906554 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dialog/dialog-trigger.svelte @@ -0,0 +1,11 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/dialog/dialog.svelte b/desktop/src/renderer/src/lib/components/ui/dialog/dialog.svelte new file mode 100644 index 000000000..e08f31e72 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dialog/dialog.svelte @@ -0,0 +1,8 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/dialog/index.ts b/desktop/src/renderer/src/lib/components/ui/dialog/index.ts new file mode 100644 index 000000000..6bfdd554a --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dialog/index.ts @@ -0,0 +1,34 @@ +import Root from "./dialog.svelte" +import Close from "./dialog-close.svelte" +import Content from "./dialog-content.svelte" +import Description from "./dialog-description.svelte" +import Footer from "./dialog-footer.svelte" +import Header from "./dialog-header.svelte" +import Overlay from "./dialog-overlay.svelte" +import Portal from "./dialog-portal.svelte" +import Title from "./dialog-title.svelte" +import Trigger from "./dialog-trigger.svelte" + +export { + Close, + Close as DialogClose, + Content, + Content as DialogContent, + Description, + Description as DialogDescription, + Footer, + Footer as DialogFooter, + Header, + Header as DialogHeader, + Overlay, + Overlay as DialogOverlay, + Portal, + Portal as DialogPortal, + Root, + // + Root as Dialog, + Title, + Title as DialogTitle, + Trigger, + Trigger as DialogTrigger, +} diff --git a/desktop/src/renderer/src/lib/components/ui/drawer/drawer-close.svelte b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-close.svelte new file mode 100644 index 000000000..2064efb14 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-close.svelte @@ -0,0 +1,8 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/drawer/drawer-content.svelte b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-content.svelte new file mode 100644 index 000000000..cca12ffe7 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-content.svelte @@ -0,0 +1,40 @@ + + + + + + + {@render children?.()} + + diff --git a/desktop/src/renderer/src/lib/components/ui/drawer/drawer-description.svelte b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-description.svelte new file mode 100644 index 000000000..fc9843c8e --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-description.svelte @@ -0,0 +1,17 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/drawer/drawer-footer.svelte b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-footer.svelte new file mode 100644 index 000000000..8916bbe7b --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-footer.svelte @@ -0,0 +1,20 @@ + + +
    + {@render children?.()} +
    diff --git a/desktop/src/renderer/src/lib/components/ui/drawer/drawer-header.svelte b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-header.svelte new file mode 100644 index 000000000..d24d44a7e --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-header.svelte @@ -0,0 +1,20 @@ + + +
    + {@render children?.()} +
    diff --git a/desktop/src/renderer/src/lib/components/ui/drawer/drawer-nested.svelte b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-nested.svelte new file mode 100644 index 000000000..df41668f0 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-nested.svelte @@ -0,0 +1,12 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/drawer/drawer-overlay.svelte b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-overlay.svelte new file mode 100644 index 000000000..48e8bfad1 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-overlay.svelte @@ -0,0 +1,20 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/drawer/drawer-portal.svelte b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-portal.svelte new file mode 100644 index 000000000..cfabebf63 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-portal.svelte @@ -0,0 +1,7 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/drawer/drawer-title.svelte b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-title.svelte new file mode 100644 index 000000000..538ba35fa --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-title.svelte @@ -0,0 +1,17 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/drawer/drawer-trigger.svelte b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-trigger.svelte new file mode 100644 index 000000000..db4eddcde --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/drawer/drawer-trigger.svelte @@ -0,0 +1,8 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/drawer/drawer.svelte b/desktop/src/renderer/src/lib/components/ui/drawer/drawer.svelte new file mode 100644 index 000000000..cfea0ed50 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/drawer/drawer.svelte @@ -0,0 +1,12 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/drawer/index.ts b/desktop/src/renderer/src/lib/components/ui/drawer/index.ts new file mode 100644 index 000000000..7051f5ad0 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/drawer/index.ts @@ -0,0 +1,37 @@ +import Root from "./drawer.svelte" +import Close from "./drawer-close.svelte" +import Content from "./drawer-content.svelte" +import Description from "./drawer-description.svelte" +import Footer from "./drawer-footer.svelte" +import Header from "./drawer-header.svelte" +import NestedRoot from "./drawer-nested.svelte" +import Overlay from "./drawer-overlay.svelte" +import Portal from "./drawer-portal.svelte" +import Title from "./drawer-title.svelte" +import Trigger from "./drawer-trigger.svelte" + +export { + Close, + Close as DrawerClose, + Content, + Content as DrawerContent, + Description, + Description as DrawerDescription, + Footer, + Footer as DrawerFooter, + Header, + Header as DrawerHeader, + NestedRoot, + NestedRoot as DrawerNestedRoot, + Overlay, + Overlay as DrawerOverlay, + Portal, + Portal as DrawerPortal, + Root, + // + Root as Drawer, + Title, + Title as DrawerTitle, + Trigger, + Trigger as DrawerTrigger, +} diff --git a/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte new file mode 100644 index 000000000..7930da456 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte @@ -0,0 +1,16 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte new file mode 100644 index 000000000..c482b6624 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte @@ -0,0 +1,43 @@ + + + + {#snippet children({ checked, indeterminate })} + + {#if indeterminate} + + {:else if checked} + + {/if} + + {@render childrenProp?.()} + {/snippet} + diff --git a/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte new file mode 100644 index 000000000..93c5b3ba6 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte @@ -0,0 +1,33 @@ + + + + + diff --git a/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte new file mode 100644 index 000000000..9a4f0f9d0 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte @@ -0,0 +1,22 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte new file mode 100644 index 000000000..726fb71d5 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte @@ -0,0 +1,8 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte new file mode 100644 index 000000000..0714a6747 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte @@ -0,0 +1,27 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte new file mode 100644 index 000000000..fdaddb52e --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte @@ -0,0 +1,24 @@ + + +
    + {@render children?.()} +
    diff --git a/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte new file mode 100644 index 000000000..a81641bdb --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte @@ -0,0 +1,7 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte new file mode 100644 index 000000000..752a0dcdb --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte @@ -0,0 +1,16 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte new file mode 100644 index 000000000..1c8972719 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte @@ -0,0 +1,34 @@ + + + + {#snippet children({ checked })} + + {#if checked} + + {/if} + + {@render childrenProp?.({ checked })} + {/snippet} + diff --git a/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte new file mode 100644 index 000000000..8c4ff7d60 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte @@ -0,0 +1,17 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte new file mode 100644 index 000000000..40af96dec --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte @@ -0,0 +1,20 @@ + + + + {@render children?.()} + diff --git a/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte new file mode 100644 index 000000000..2392c6e0b --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte @@ -0,0 +1,17 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte new file mode 100644 index 000000000..d0cbafe34 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte @@ -0,0 +1,29 @@ + + + + {@render children?.()} + + diff --git a/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte new file mode 100644 index 000000000..c9101f8fa --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte @@ -0,0 +1,8 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte new file mode 100644 index 000000000..6c05c6419 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte @@ -0,0 +1,10 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte new file mode 100644 index 000000000..10934e315 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte @@ -0,0 +1,8 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/dropdown-menu/index.ts b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/index.ts new file mode 100644 index 000000000..7a202414b --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/dropdown-menu/index.ts @@ -0,0 +1,54 @@ +import Root from "./dropdown-menu.svelte" +import CheckboxGroup from "./dropdown-menu-checkbox-group.svelte" +import CheckboxItem from "./dropdown-menu-checkbox-item.svelte" +import Content from "./dropdown-menu-content.svelte" +import Group from "./dropdown-menu-group.svelte" +import GroupHeading from "./dropdown-menu-group-heading.svelte" +import Item from "./dropdown-menu-item.svelte" +import Label from "./dropdown-menu-label.svelte" +import Portal from "./dropdown-menu-portal.svelte" +import RadioGroup from "./dropdown-menu-radio-group.svelte" +import RadioItem from "./dropdown-menu-radio-item.svelte" +import Separator from "./dropdown-menu-separator.svelte" +import Shortcut from "./dropdown-menu-shortcut.svelte" +import Sub from "./dropdown-menu-sub.svelte" +import SubContent from "./dropdown-menu-sub-content.svelte" +import SubTrigger from "./dropdown-menu-sub-trigger.svelte" +import Trigger from "./dropdown-menu-trigger.svelte" + +export { + CheckboxGroup, + CheckboxGroup as DropdownMenuCheckboxGroup, + CheckboxItem, + CheckboxItem as DropdownMenuCheckboxItem, + Content, + Content as DropdownMenuContent, + Group as DropdownMenuGroup, + Group, + GroupHeading as DropdownMenuGroupHeading, + GroupHeading, + Item as DropdownMenuItem, + Item, + Label as DropdownMenuLabel, + Label, + Portal, + Portal as DropdownMenuPortal, + RadioGroup as DropdownMenuRadioGroup, + RadioGroup, + RadioItem as DropdownMenuRadioItem, + RadioItem, + Root as DropdownMenu, + Root, + Separator as DropdownMenuSeparator, + Separator, + Shortcut as DropdownMenuShortcut, + Shortcut, + Sub as DropdownMenuSub, + Sub, + SubContent as DropdownMenuSubContent, + SubContent, + SubTrigger as DropdownMenuSubTrigger, + SubTrigger, + Trigger as DropdownMenuTrigger, + Trigger, +} diff --git a/desktop/src/renderer/src/lib/components/ui/input-group/index.ts b/desktop/src/renderer/src/lib/components/ui/input-group/index.ts new file mode 100644 index 000000000..f7c342b39 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/input-group/index.ts @@ -0,0 +1,22 @@ +import Root from "./input-group.svelte" +import Addon from "./input-group-addon.svelte" +import Button from "./input-group-button.svelte" +import Input from "./input-group-input.svelte" +import Text from "./input-group-text.svelte" +import Textarea from "./input-group-textarea.svelte" + +export { + Addon, + Addon as InputGroupAddon, + Button, + Button as InputGroupButton, + Input, + Input as InputGroupInput, + Root, + // + Root as InputGroup, + Text, + Text as InputGroupText, + Textarea, + Textarea as InputGroupTextarea, +} diff --git a/desktop/src/renderer/src/lib/components/ui/input-group/input-group-addon.svelte b/desktop/src/renderer/src/lib/components/ui/input-group/input-group-addon.svelte new file mode 100644 index 000000000..ba3ff4c21 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/input-group/input-group-addon.svelte @@ -0,0 +1,57 @@ + + + + +
    { + if ((e.target as HTMLElement).closest("button")) { + return; + } + e.currentTarget.parentElement?.querySelector("input")?.focus(); + }} + {...restProps} +> + {@render children?.()} +
    diff --git a/desktop/src/renderer/src/lib/components/ui/input-group/input-group-button.svelte b/desktop/src/renderer/src/lib/components/ui/input-group/input-group-button.svelte new file mode 100644 index 000000000..4bf3d7437 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/input-group/input-group-button.svelte @@ -0,0 +1,51 @@ + + + + + diff --git a/desktop/src/renderer/src/lib/components/ui/input-group/input-group-input.svelte b/desktop/src/renderer/src/lib/components/ui/input-group/input-group-input.svelte new file mode 100644 index 000000000..e94dc92ea --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/input-group/input-group-input.svelte @@ -0,0 +1,20 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/input-group/input-group-text.svelte b/desktop/src/renderer/src/lib/components/ui/input-group/input-group-text.svelte new file mode 100644 index 000000000..82fb6f899 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/input-group/input-group-text.svelte @@ -0,0 +1,19 @@ + + + + {@render children?.()} + diff --git a/desktop/src/renderer/src/lib/components/ui/input-group/input-group-textarea.svelte b/desktop/src/renderer/src/lib/components/ui/input-group/input-group-textarea.svelte new file mode 100644 index 000000000..b193d3b22 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/input-group/input-group-textarea.svelte @@ -0,0 +1,20 @@ + + + diff --git a/desktop/src/renderer/src/lib/components/ui/tooltip/index.ts b/desktop/src/renderer/src/lib/components/ui/tooltip/index.ts new file mode 100644 index 000000000..9a8a2213e --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/tooltip/index.ts @@ -0,0 +1,17 @@ +import { Tooltip as TooltipPrimitive } from "bits-ui" +import Content from "./tooltip-content.svelte" + +const Root = TooltipPrimitive.Root +const Trigger = TooltipPrimitive.Trigger +const Provider = TooltipPrimitive.Provider + +export { + Content, + Content as TooltipContent, + Provider, + Provider as TooltipProvider, + Root, + Root as Tooltip, + Trigger, + Trigger as TooltipTrigger, +} diff --git a/desktop/src/renderer/src/lib/components/ui/tooltip/tooltip-content.svelte b/desktop/src/renderer/src/lib/components/ui/tooltip/tooltip-content.svelte new file mode 100644 index 000000000..7f7d4f0ef --- /dev/null +++ b/desktop/src/renderer/src/lib/components/ui/tooltip/tooltip-content.svelte @@ -0,0 +1,30 @@ + + + + + {@render children?.()} + + diff --git a/desktop/src/renderer/src/lib/components/workspace/CreateWorkspaceSheet.svelte b/desktop/src/renderer/src/lib/components/workspace/CreateWorkspaceSheet.svelte new file mode 100644 index 000000000..a4d41f85c --- /dev/null +++ b/desktop/src/renderer/src/lib/components/workspace/CreateWorkspaceSheet.svelte @@ -0,0 +1,498 @@ + + + + + + Create Workspace + Set up a new development workspace from a source repository, image, or local path. + + +
    +
    +

    Quick Start Templates

    +
    + {#each TEMPLATES as template (template.name)} + + {/each} +
    +
    + + {#if error} +
    + {error} +
    + {/if} + + {#if $providers.length === 0} +
    + +
    + No providers configured. You need at least one provider to create a workspace. + +
    +
    + {/if} + +
    { e.preventDefault(); handleSubmit() }}> +
    + + (source = e.currentTarget.value)} + disabled={submitting} + class="h-9" + /> +
    + +
    + + (name = e.currentTarget.value)} + disabled={submitting} + class="h-9" + /> +
    + +
    + + + + {#snippet child({ props })} + + {/snippet} + + + + + + No provider found. + + {#each filteredProviders as p (p.name)} + { selectedProvider = p.name; providerComboOpen = false; providerSearch = "" }} + > + + {p.name} + {#if p.state?.initialized !== true} + (not initialized) + {/if} + + {/each} + + + { providerComboOpen = false; providerSearch = ""; open = false; goto('/providers/add') }} + > + + Add Provider + + + + + + + {#if selectedProvider && $providers.find(p => p.name === selectedProvider)?.state?.initialized !== true} +
    + +
    +

    Provider not initialized

    +

    + This provider needs to be initialized before creating workspaces. + +

    +
    +
    + {/if} +
    + +
    + + + + {#snippet child({ props })} + + {/snippet} + + + + + + No IDE found. + + {#each filteredIdes as ide (ide.value)} + { selectedIde = ide.value; ideComboOpen = false; ideSearch = "" }} + > + + {ide.label} + + {/each} + + + + + +
    + + + + +
    + + {#if outputLines.length > 0} +
    +
    +

    Output

    + +
    +
    + +
    +
    +
    + {/if} + + {#if createdId} +
    + +
    + {/if} +
    +
    +
    + + { open = false; confirmCancelOpen = false }} +/> diff --git a/desktop/src/renderer/src/lib/components/workspace/LanguageIcon.svelte b/desktop/src/renderer/src/lib/components/workspace/LanguageIcon.svelte new file mode 100644 index 000000000..cb63c3498 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/workspace/LanguageIcon.svelte @@ -0,0 +1,63 @@ + + +{#if src} + {name} icon +{:else} + + {name.slice(0, 2).toUpperCase()} + +{/if} diff --git a/desktop/src/renderer/src/lib/components/workspace/WorkspaceCard.svelte b/desktop/src/renderer/src/lib/components/workspace/WorkspaceCard.svelte new file mode 100644 index 000000000..603421a26 --- /dev/null +++ b/desktop/src/renderer/src/lib/components/workspace/WorkspaceCard.svelte @@ -0,0 +1,153 @@ + + + + {:else if isStopped} + + {/if} + {#if isRunning || isBusy} + + {/if} + + + + + + diff --git a/desktop/src/renderer/src/lib/hooks/is-mobile.svelte.ts b/desktop/src/renderer/src/lib/hooks/is-mobile.svelte.ts new file mode 100644 index 000000000..36bcbe2e4 --- /dev/null +++ b/desktop/src/renderer/src/lib/hooks/is-mobile.svelte.ts @@ -0,0 +1,9 @@ +import { MediaQuery } from "svelte/reactivity" + +const DEFAULT_MOBILE_BREAKPOINT = 768 + +export class IsMobile extends MediaQuery { + constructor(breakpoint: number = DEFAULT_MOBILE_BREAKPOINT) { + super(`max-width: ${breakpoint - 1}px`) + } +} diff --git a/desktop/src/renderer/src/lib/ipc/bridge.ts b/desktop/src/renderer/src/lib/ipc/bridge.ts new file mode 100644 index 000000000..34d815fdc --- /dev/null +++ b/desktop/src/renderer/src/lib/ipc/bridge.ts @@ -0,0 +1,62 @@ +/** + * IPC bridge — uses Electron's contextBridge API when running in Electron, + * falls back to mock implementations for browser-only development. + */ + +import type { UnlistenFn } from "./types.js" + +function isElectron(): boolean { + return typeof window !== "undefined" && "electronAPI" in window +} + +interface ElectronAPI { + invoke: (channel: string, args?: Record) => Promise + on: (channel: string, callback: (payload: unknown) => void) => () => void +} + +declare global { + interface Window { + electronAPI?: ElectronAPI + } +} + +type InvokeFn = (cmd: string, args?: Record) => Promise +type ListenFn = ( + event: string, + callback: (event: { payload: T }) => void, +) => Promise + +let _invoke: InvokeFn +let _listen: ListenFn + +if (isElectron()) { + const api = window.electronAPI! + + _invoke = (cmd: string, args?: Record): Promise => + api.invoke(cmd, args) as Promise + + _listen = ( + event: string, + callback: (event: { payload: T }) => void, + ): Promise => { + const unlisten = api.on(event, (payload) => { + callback({ payload: payload as T }) + }) + return Promise.resolve(unlisten) + } +} else if (import.meta.env.DEV) { + console.info( + "%c[Devsy] Running in browser mock mode", + "color: #f59e0b; font-weight: bold", + ) + const mock = await import("./mock.js") + _invoke = mock.invoke as InvokeFn + _listen = mock.listen as ListenFn +} else { + throw new Error( + "electronAPI not found. The preload script failed to expose the Electron API.", + ) +} + +export const invoke = _invoke +export const listen = _listen diff --git a/desktop/src/renderer/src/lib/ipc/commands.test.ts b/desktop/src/renderer/src/lib/ipc/commands.test.ts new file mode 100644 index 000000000..246c4f5fd --- /dev/null +++ b/desktop/src/renderer/src/lib/ipc/commands.test.ts @@ -0,0 +1,265 @@ +import { beforeEach, describe, expect, it } from "vitest" +import { mockInvoke, resetTauriMocks } from "$lib/__mocks__/tauri.js" + +// Import after mocks are set up +import { + auditByResource, + auditRecent, + contextUse, + devpodVersion, + machineCreate, + machineDelete, + machineStatus, + providerAdd, + providerSetOptions, + sshKeyGenerate, + sshKeyList, + workspaceDelete, + workspaceRebuild, + workspaceStatus, + workspaceStop, + workspaceUp, +} from "./commands.js" + +describe("IPC commands", () => { + beforeEach(() => { + resetTauriMocks() + mockInvoke.mockResolvedValue(undefined) + }) + + describe("workspace commands", () => { + it("workspaceUp passes all parameters", async () => { + mockInvoke.mockResolvedValue("cmd-123") + const result = await workspaceUp({ + source: "github.com/org/repo", + workspaceId: "my-ws", + provider: "docker", + ide: "vscode", + }) + expect(mockInvoke).toHaveBeenCalledWith("workspace_up", { + source: "github.com/org/repo", + workspaceId: "my-ws", + provider: "docker", + ide: "vscode", + }) + expect(result).toBe("cmd-123") + }) + + it("workspaceUp works with minimal parameters", async () => { + mockInvoke.mockResolvedValue("cmd-456") + await workspaceUp({ source: "my-repo" }) + expect(mockInvoke).toHaveBeenCalledWith("workspace_up", { + source: "my-repo", + }) + }) + + it("workspaceStop passes workspaceId", async () => { + await workspaceStop("ws-1") + expect(mockInvoke).toHaveBeenCalledWith("workspace_stop", { + workspaceId: "ws-1", + }) + }) + + it("workspaceDelete passes workspaceId", async () => { + await workspaceDelete("ws-1") + expect(mockInvoke).toHaveBeenCalledWith("workspace_delete", { + workspaceId: "ws-1", + }) + }) + + it("workspaceRebuild passes workspaceId", async () => { + await workspaceRebuild("ws-1") + expect(mockInvoke).toHaveBeenCalledWith("workspace_rebuild", { + workspaceId: "ws-1", + }) + }) + + it("workspaceStatus passes workspaceId", async () => { + mockInvoke.mockResolvedValue('{"state":"Running"}') + const result = await workspaceStatus("ws-1") + expect(mockInvoke).toHaveBeenCalledWith("workspace_status", { + workspaceId: "ws-1", + }) + expect(result).toBe('{"state":"Running"}') + }) + }) + + describe("provider commands", () => { + it("providerAdd passes name and source", async () => { + await providerAdd("docker", "https://example.com/provider") + expect(mockInvoke).toHaveBeenCalledWith("provider_add", { + name: "docker", + source: "https://example.com/provider", + }) + }) + + it("providerAdd passes undefined source when omitted", async () => { + await providerAdd("docker") + expect(mockInvoke).toHaveBeenCalledWith("provider_add", { + name: "docker", + source: undefined, + }) + }) + + it("providerSetOptions formats options as key=value strings", async () => { + await providerSetOptions("docker", { + DOCKER_HOST: "tcp://localhost:2375", + TIMEOUT: 30, + VERBOSE: true, + }) + expect(mockInvoke).toHaveBeenCalledWith("provider_set_options", { + name: "docker", + options: [ + "DOCKER_HOST=tcp://localhost:2375", + "TIMEOUT=30", + "VERBOSE=true", + ], + }) + }) + + it("providerSetOptions handles empty options", async () => { + await providerSetOptions("docker", {}) + expect(mockInvoke).toHaveBeenCalledWith("provider_set_options", { + name: "docker", + options: [], + }) + }) + }) + + describe("machine commands", () => { + it("machineCreate passes name, provider, and options", async () => { + await machineCreate("my-machine", "aws", { region: "us-east-1" }) + expect(mockInvoke).toHaveBeenCalledWith("machine_create", { + name: "my-machine", + provider: "aws", + options: { region: "us-east-1" }, + }) + }) + + it("machineDelete passes id and force defaults to false", async () => { + await machineDelete("m-1") + expect(mockInvoke).toHaveBeenCalledWith("machine_delete", { + id: "m-1", + force: false, + }) + }) + + it("machineDelete passes force=true when specified", async () => { + await machineDelete("m-1", true) + expect(mockInvoke).toHaveBeenCalledWith("machine_delete", { + id: "m-1", + force: true, + }) + }) + + it("machineStatus passes id", async () => { + mockInvoke.mockResolvedValue('{"state":"Running"}') + await machineStatus("m-1") + expect(mockInvoke).toHaveBeenCalledWith("machine_status", { id: "m-1" }) + }) + }) + + describe("context commands", () => { + it("contextUse passes name", async () => { + await contextUse("production") + expect(mockInvoke).toHaveBeenCalledWith("context_use", { + name: "production", + }) + }) + }) + + describe("audit commands", () => { + it("auditRecent passes limit", async () => { + mockInvoke.mockResolvedValue([]) + await auditRecent(25) + expect(mockInvoke).toHaveBeenCalledWith("audit_recent", { limit: 25 }) + }) + + it("auditByResource passes all parameters", async () => { + mockInvoke.mockResolvedValue([]) + await auditByResource("workspace", "ws-1", 50) + expect(mockInvoke).toHaveBeenCalledWith("audit_by_resource", { + resourceType: "workspace", + resourceId: "ws-1", + limit: 50, + }) + }) + }) + + describe("system commands", () => { + it("devpodVersion returns version string", async () => { + mockInvoke.mockResolvedValue("v0.5.0") + const result = await devpodVersion() + expect(result).toBe("v0.5.0") + expect(mockInvoke).toHaveBeenCalledWith("devpod_version") + }) + }) + + describe("SSH key commands", () => { + it("sshKeyList returns key list", async () => { + const mockKeys = [ + { + name: "id_ed25519", + keyType: "ed25519", + fingerprint: "SHA256:abc123", + comment: "user@host", + publicKey: "ssh-ed25519 AAAA...", + path: "/home/user/.ssh/id_ed25519", + hasPassphrase: true, + }, + ] + mockInvoke.mockResolvedValue(mockKeys) + + const result = await sshKeyList() + + expect(mockInvoke).toHaveBeenCalledWith("ssh_key_list") + expect(result).toHaveLength(1) + expect(result[0].name).toBe("id_ed25519") + expect(result[0].hasPassphrase).toBe(true) + }) + + it("sshKeyGenerate passes all parameters", async () => { + const mockKey = { + name: "devsy-aws", + keyType: "ed25519", + fingerprint: "SHA256:xyz789", + comment: "dev@example.com", + publicKey: "ssh-ed25519 BBBB...", + path: "/home/user/.ssh/devsy-aws", + hasPassphrase: false, + } + mockInvoke.mockResolvedValue(mockKey) + + const result = await sshKeyGenerate({ + name: "devsy-aws", + keyType: "ed25519", + comment: "dev@example.com", + }) + + expect(mockInvoke).toHaveBeenCalledWith("ssh_key_generate", { + name: "devsy-aws", + keyType: "ed25519", + comment: "dev@example.com", + }) + expect(result.name).toBe("devsy-aws") + }) + + it("sshKeyGenerate works with minimal parameters", async () => { + mockInvoke.mockResolvedValue({ + name: "test-key", + keyType: "ed25519", + fingerprint: "", + comment: "", + publicKey: "", + path: "", + hasPassphrase: false, + }) + + await sshKeyGenerate({ name: "test-key" }) + + expect(mockInvoke).toHaveBeenCalledWith("ssh_key_generate", { + name: "test-key", + }) + }) + }) +}) diff --git a/desktop/src/renderer/src/lib/ipc/commands.ts b/desktop/src/renderer/src/lib/ipc/commands.ts new file mode 100644 index 000000000..fac6815c0 --- /dev/null +++ b/desktop/src/renderer/src/lib/ipc/commands.ts @@ -0,0 +1,244 @@ +import type { + AuditEntry, + Context, + LogEntry, + Machine, + OptionValue, + Provider, + ProviderOption, + SshKeyInfo, + Workspace, +} from "$lib/types/index.js" +import { invoke } from "./bridge.js" + +// Workspace commands +export async function workspaceList(): Promise { + return invoke("workspace_list") +} + +export async function workspaceUp(params: { + source: string + workspaceId?: string + provider?: string + ide?: string + debug?: boolean +}): Promise { + return invoke("workspace_up", params) +} + +export async function workspaceStop( + workspaceId: string, + debug?: boolean, +): Promise { + return invoke("workspace_stop", { workspaceId, debug }) +} + +export async function workspaceDelete( + workspaceId: string, + debug?: boolean, +): Promise { + return invoke("workspace_delete", { workspaceId, debug }) +} + +export async function workspaceRebuild( + workspaceId: string, + debug?: boolean, +): Promise { + return invoke("workspace_rebuild", { workspaceId, debug }) +} + +export async function workspaceReset( + workspaceId: string, + debug?: boolean, +): Promise { + return invoke("workspace_reset", { workspaceId, debug }) +} + +export async function workspaceStatus(workspaceId: string): Promise { + return invoke("workspace_status", { workspaceId }) +} + +// Provider commands +export async function providerList(): Promise { + return invoke("provider_list") +} + +export async function providerAdd( + name: string, + source?: string, +): Promise { + return invoke("provider_add", { name, source }) +} + +export async function providerDelete(name: string): Promise { + return invoke("provider_delete", { name }) +} + +export async function providerUse(name: string): Promise { + return invoke("provider_use", { name }) +} + +export async function providerInit(name: string): Promise { + return invoke("provider_init", { name }) +} + +export async function providerUpdate(name: string): Promise { + return invoke("provider_update", { name }) +} + +export async function providerOptions( + name: string, +): Promise> { + return invoke>("provider_options", { name }) +} + +export async function providerSetOptions( + name: string, + options: Record, +): Promise { + const optionArgs = Object.entries(options).map( + ([key, val]) => `${key}=${val}`, + ) + return invoke("provider_set_options", { name, options: optionArgs }) +} + +export async function providerRename( + name: string, + newName: string, +): Promise { + return invoke("provider_rename", { name, newName }) +} + +// Machine commands +export async function machineList(): Promise { + return invoke("machine_list") +} + +export async function machineCreate( + name: string, + provider: string, + options?: Record, +): Promise { + return invoke("machine_create", { name, provider, options }) +} + +export async function machineDelete( + id: string, + force?: boolean, +): Promise { + return invoke("machine_delete", { id, force: force ?? false }) +} + +export async function machineStart(id: string): Promise { + return invoke("machine_start", { id }) +} + +export async function machineStop(id: string): Promise { + return invoke("machine_stop", { id }) +} + +export async function machineStatus(id: string): Promise { + return invoke("machine_status", { id }) +} + +// Context commands +export async function contextList(): Promise<{ + contexts: Context[] + activeContext: string +}> { + return invoke("context_list") +} + +export async function contextUse(name: string): Promise { + return invoke("context_use", { name }) +} + +export async function contextOptions( + context?: string, +): Promise> { + return invoke("context_options", { context }) +} + +export async function contextSetOptions( + options: string[], + context?: string, +): Promise { + return invoke("context_set_options", { options, context }) +} + +export async function contextCreate(name: string): Promise { + return invoke("context_create", { name }) +} + +export async function contextDelete(name: string): Promise { + return invoke("context_delete", { name }) +} + +// Audit commands +export async function auditRecent(limit?: number): Promise { + return invoke("audit_recent", { limit }) +} + +export async function auditByResource( + resourceType: string, + resourceId: string, + limit?: number, +): Promise { + return invoke("audit_by_resource", { + resourceType, + resourceId, + limit, + }) +} + +// App lifecycle +export async function appReady(): Promise { + return invoke("app_ready") +} + +// System commands +export async function devpodVersion(): Promise { + return invoke("devpod_version") +} + +export async function devpodUpgrade(version: string): Promise { + return invoke("devpod_upgrade", { version }) +} + +export async function devpodUpgradeDryRun(version: string): Promise { + return invoke("devpod_upgrade_dry_run", { version }) +} + +// Log commands +export async function workspaceLogsList( + workspaceId: string, +): Promise { + return invoke("workspace_logs_list", { workspaceId }) +} + +export async function workspaceLogRead( + workspaceId: string, + filename: string, +): Promise { + return invoke("workspace_log_read", { workspaceId, filename }) +} + +export async function workspaceLogDelete( + workspaceId: string, + filename: string, +): Promise { + return invoke("workspace_log_delete", { workspaceId, filename }) +} + +// SSH key commands +export async function sshKeyList(): Promise { + return invoke("ssh_key_list") +} + +export async function sshKeyGenerate(params: { + name: string + keyType?: string + comment?: string +}): Promise { + return invoke("ssh_key_generate", params) +} diff --git a/desktop/src/renderer/src/lib/ipc/events.ts b/desktop/src/renderer/src/lib/ipc/events.ts new file mode 100644 index 000000000..30f304930 --- /dev/null +++ b/desktop/src/renderer/src/lib/ipc/events.ts @@ -0,0 +1,71 @@ +import type { + CommandProgress, + Context, + Machine, + Provider, + Workspace, +} from "$lib/types/index.js" +import { listen } from "./bridge.js" +import type { UnlistenFn } from "./types.js" + +export const EVENT_NAMES = { + WORKSPACES_CHANGED: "workspaces-changed", + PROVIDERS_CHANGED: "providers-changed", + MACHINES_CHANGED: "machines-changed", + CONTEXTS_CHANGED: "contexts-changed", + COMMAND_PROGRESS: "command-progress", +} as const + +interface WorkspacesPayload { + workspaces: Workspace[] +} +interface ProvidersPayload { + providers: Provider[] +} +interface MachinesPayload { + machines: Machine[] +} +interface ContextsPayload { + contexts: Context[] + activeContext: string +} + +export function onWorkspacesChanged( + callback: (workspaces: Workspace[]) => void, +): Promise { + return listen(EVENT_NAMES.WORKSPACES_CHANGED, (event) => { + callback(event.payload.workspaces) + }) +} + +export function onProvidersChanged( + callback: (providers: Provider[]) => void, +): Promise { + return listen(EVENT_NAMES.PROVIDERS_CHANGED, (event) => { + callback(event.payload.providers) + }) +} + +export function onMachinesChanged( + callback: (machines: Machine[]) => void, +): Promise { + return listen(EVENT_NAMES.MACHINES_CHANGED, (event) => { + callback(event.payload.machines) + }) +} + +export function onContextsChanged( + callback: (contexts: Context[], activeContext: string) => void, +): Promise { + return listen(EVENT_NAMES.CONTEXTS_CHANGED, (event) => { + callback(event.payload.contexts, event.payload.activeContext) + }) +} + +export function onCommandProgress( + callback: (progress: CommandProgress) => void, +): Promise { + return listen(EVENT_NAMES.COMMAND_PROGRESS, (event) => { + callback(event.payload) + }) +} diff --git a/desktop/src/renderer/src/lib/ipc/mock.ts b/desktop/src/renderer/src/lib/ipc/mock.ts new file mode 100644 index 000000000..6929fdf60 --- /dev/null +++ b/desktop/src/renderer/src/lib/ipc/mock.ts @@ -0,0 +1,302 @@ +/** + * Mock IPC layer for browser-only development. + * When Electron is not available (no window.electronAPI), this module + * provides fake invoke() and listen() that return realistic sample data. + * + * Usage: `npm run dev` opens http://localhost:1420 in any browser. + */ + +import type { + Context, + LogEntry, + Machine, + Provider, + ProviderOption, + SshKeyInfo, + Workspace, +} from "$lib/types/index.js" + +// ── Sample data ────────────────────────────────────────────────────── + +const now = new Date().toISOString() +const hourAgo = new Date(Date.now() - 3600_000).toISOString() +const dayAgo = new Date(Date.now() - 86400_000).toISOString() + +const WORKSPACES: Workspace[] = [ + { + id: "my-project", + uid: "ws-001", + provider: { name: "docker" }, + ide: { name: "vscode" }, + source: { gitRepository: "github.com/acme/my-project", gitBranch: "main" }, + status: "Running", + created: dayAgo, + lastUsed: hourAgo, + context: "default", + }, + { + id: "backend-api", + uid: "ws-002", + provider: { name: "kubernetes" }, + ide: { name: "goland" }, + source: { gitRepository: "github.com/acme/backend-api" }, + status: "Stopped", + created: dayAgo, + lastUsed: dayAgo, + context: "default", + }, + { + id: "ml-notebook", + uid: "ws-003", + provider: { name: "docker" }, + ide: { name: "jupyternotebook" }, + source: { image: "jupyter/scipy-notebook:latest" }, + status: "Running", + created: hourAgo, + lastUsed: now, + context: "default", + }, +] + +const PROVIDERS: Provider[] = [ + { + name: "docker", + version: "v0.5.0", + source: { github: "devsy-org/devpod-provider-docker" }, + description: "Devsy on Docker", + isDefault: true, + state: { initialized: true, singleMachine: true }, + }, + { + name: "kubernetes", + version: "v0.3.2", + source: { github: "devsy-org/devpod-provider-kubernetes" }, + description: "Devsy on Kubernetes", + state: { initialized: true, singleMachine: false }, + }, + { + name: "aws", + version: "v0.4.1", + source: { github: "devsy-org/devpod-provider-aws" }, + description: "Devsy on AWS", + state: { initialized: false, singleMachine: false }, + }, +] + +const MACHINES: Machine[] = [ + { + id: "docker-desktop", + provider: { name: "docker" }, + status: "Running", + created: dayAgo, + lastUsed: hourAgo, + }, + { + id: "k8s-cluster-1", + provider: { name: "kubernetes" }, + status: "Running", + created: dayAgo, + lastUsed: now, + }, +] + +const CONTEXTS: Context[] = [{ name: "default" }, { name: "staging" }] + +const SSH_KEYS: SshKeyInfo[] = [ + { + name: "id_ed25519", + keyType: "ed25519", + fingerprint: "SHA256:abc123def456ghi789jkl012mno345pqr678stu901vwx", + comment: "user@example.com", + publicKey: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... user@example.com", + path: "/home/user/.ssh/id_ed25519", + hasPassphrase: false, + }, + { + name: "id_rsa", + keyType: "rsa", + fingerprint: "SHA256:xyz789abc012def345ghi678jkl901mno234pqr567stu", + comment: "deploy@company.com", + publicKey: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAB... deploy@company.com", + path: "/home/user/.ssh/id_rsa", + hasPassphrase: true, + }, +] + +const PROVIDER_OPTIONS: Record = { + DOCKER_HOST: { + name: "DOCKER_HOST", + displayName: "Docker Host", + description: "Docker daemon socket to connect to", + default: "unix:///var/run/docker.sock", + value: "unix:///var/run/docker.sock", + type: "string", + }, + DISK_SIZE: { + name: "DISK_SIZE", + displayName: "Disk Size", + description: "Size of the disk in GB", + default: 30, + value: 30, + type: "number", + }, +} + +const LOG_ENTRIES: LogEntry[] = [ + { + workspaceId: "my-project", + filename: "2026-04-16T10-00-00.log", + createdAt: hourAgo, + sizeBytes: 4096, + }, + { + workspaceId: "my-project", + filename: "2026-04-15T08-30-00.log", + createdAt: dayAgo, + sizeBytes: 2048, + }, +] + +// ── Counter for fake IDs ───────────────────────────────────────────── + +let counter = 0 +function nextId(): string { + return `mock-${++counter}-${Date.now().toString(36)}` +} + +// ── Mock command handlers ──────────────────────────────────────────── + +type Handler = (args: Record) => unknown + +const COMMANDS: Record = { + // Workspaces + workspace_list: () => WORKSPACES, + workspace_up: () => nextId(), + workspace_stop: () => nextId(), + workspace_delete: () => nextId(), + workspace_rebuild: () => nextId(), + workspace_reset: () => nextId(), + workspace_status: (args) => { + const ws = WORKSPACES.find((w) => w.id === args.workspaceId) + return ws?.status ?? "NotFound" + }, + + // Providers + provider_list: () => PROVIDERS, + provider_add: () => undefined, + provider_delete: () => undefined, + provider_use: () => undefined, + provider_update: () => undefined, + provider_options: () => PROVIDER_OPTIONS, + provider_set_options: () => undefined, + + // Machines + machine_list: () => MACHINES, + machine_create: () => undefined, + machine_delete: () => undefined, + machine_start: () => undefined, + machine_stop: () => undefined, + machine_status: (args) => { + const m = MACHINES.find((machine) => machine.id === args.id) + return m?.status ?? "Unknown" + }, + + // Contexts + context_list: () => ({ contexts: CONTEXTS, activeContext: "default" }), + context_use: () => undefined, + context_options: () => ({ + TELEMETRY: { value: "true" }, + AGENT_URL: { value: "" }, + DOTFILES_URL: { value: "" }, + DOTFILES_SCRIPT: { value: "" }, + SSH_INJECT_DOCKER_CREDENTIALS: { value: "true" }, + SSH_INJECT_GIT_CREDENTIALS: { value: "true" }, + GIT_SSH_SIGNATURE_FORWARDING: { value: "true" }, + SSH_AGENT_FORWARDING: { value: "true" }, + SSH_ADD_PRIVATE_KEYS: { value: "true" }, + SSH_STRICT_HOST_KEY_CHECKING: { value: "false" }, + GPG_AGENT_FORWARDING: { value: "false" }, + AGENT_INJECT_TIMEOUT: { value: "20" }, + REGISTRY_CACHE: { value: "" }, + EXIT_AFTER_TIMEOUT: { value: "true" }, + SSH_CONFIG_PATH: { value: "" }, + SSH_CONFIG_INCLUDE_PATH: { value: "" }, + }), + context_set_options: () => undefined, + context_create: (args) => { + CONTEXTS.push({ name: args.name as string }) + }, + context_delete: (args) => { + const idx = CONTEXTS.findIndex((c) => c.name === args.name) + if (idx !== -1) CONTEXTS.splice(idx, 1) + }, + + // System + devpod_version: () => "v0.6.0-mock", + devpod_upgrade: () => "Successfully upgraded", + devpod_upgrade_dry_run: (args) => + `asset_name=devpod-linux-arm64\nversion=${(args.version as string).replace(/^v/, "")}\nos=linux\narch=arm64\nurl=https://github.com/example/devpod/releases/download/${args.version}/devpod-linux-arm64\nsize=110624952`, + + // Logs + workspace_logs_list: () => LOG_ENTRIES, + workspace_log_read: () => + "2026-04-16 10:00:01 Starting workspace...\n2026-04-16 10:00:03 Pulling image...\n2026-04-16 10:00:15 Container created\n2026-04-16 10:00:16 Workspace ready\n", + + // SSH Keys + ssh_key_list: () => SSH_KEYS, + ssh_key_generate: (args) => ({ + name: args.name as string, + keyType: (args.keyType as string) ?? "ed25519", + fingerprint: `SHA256:mock-${nextId()}`, + comment: (args.comment as string) ?? "", + publicKey: `ssh-ed25519 MOCK... ${args.comment ?? ""}`, + path: `/home/user/.ssh/${args.name}`, + hasPassphrase: false, + }), + + // Terminals + terminal_create: () => nextId(), + terminal_create_ssh: () => nextId(), + terminal_write: () => undefined, + terminal_resize: () => undefined, + terminal_close: () => undefined, + terminal_list: () => [], +} + +// ── Mock invoke ────────────────────────────────────────────────────── + +export async function invoke( + cmd: string, + args?: Record, +): Promise { + const handler = COMMANDS[cmd] + if (!handler) { + console.warn(`[mock] Unknown command: ${cmd}`) + throw new Error(`Mock: unknown command "${cmd}"`) + } + + // Simulate async delay + await new Promise((r) => setTimeout(r, 50 + Math.random() * 100)) + + const result = handler(args ?? {}) + console.debug(`[mock] ${cmd}`, args ?? {}, "→", result) + return result as T +} + +// ── Mock listen ────────────────────────────────────────────────────── + +type UnlistenFn = () => void + +export async function listen( + _event: string, + _callback: (event: { payload: T }) => void, +): Promise { + // No-op in mock mode — events would come from the Rust backend + return () => {} +} + +// ── Detection ──────────────────────────────────────────────────────── + +export function isTauri(): boolean { + return false +} diff --git a/desktop/src/renderer/src/lib/ipc/terminal.test.ts b/desktop/src/renderer/src/lib/ipc/terminal.test.ts new file mode 100644 index 000000000..f76071ce5 --- /dev/null +++ b/desktop/src/renderer/src/lib/ipc/terminal.test.ts @@ -0,0 +1,73 @@ +import { beforeEach, describe, expect, it } from "vitest" +import { mockInvoke, resetTauriMocks } from "$lib/__mocks__/tauri.js" + +// Import after mocks are set up +import { + terminalClose, + terminalCreate, + terminalCreateSsh, + terminalListSessions, + terminalResize, + terminalWrite, +} from "./terminal.js" + +describe("terminal IPC commands", () => { + beforeEach(() => { + resetTauriMocks() + }) + + it("terminalCreate sends cols and rows", async () => { + mockInvoke.mockResolvedValue("session-abc") + const id = await terminalCreate(80, 24) + expect(mockInvoke).toHaveBeenCalledWith("terminal_create", { + cols: 80, + rows: 24, + }) + expect(id).toBe("session-abc") + }) + + it("terminalCreateSsh sends workspaceId, cols, rows", async () => { + mockInvoke.mockResolvedValue("ssh-session-1") + const id = await terminalCreateSsh("my-workspace", 120, 40) + expect(mockInvoke).toHaveBeenCalledWith("terminal_create_ssh", { + workspaceId: "my-workspace", + cols: 120, + rows: 40, + }) + expect(id).toBe("ssh-session-1") + }) + + it("terminalWrite sends sessionId and data array", async () => { + mockInvoke.mockResolvedValue(undefined) + await terminalWrite("session-abc", [72, 101, 108, 108, 111]) + expect(mockInvoke).toHaveBeenCalledWith("terminal_write", { + sessionId: "session-abc", + data: [72, 101, 108, 108, 111], + }) + }) + + it("terminalResize sends sessionId, cols, rows", async () => { + mockInvoke.mockResolvedValue(undefined) + await terminalResize("session-abc", 100, 50) + expect(mockInvoke).toHaveBeenCalledWith("terminal_resize", { + sessionId: "session-abc", + cols: 100, + rows: 50, + }) + }) + + it("terminalClose sends sessionId", async () => { + mockInvoke.mockResolvedValue(undefined) + await terminalClose("session-abc") + expect(mockInvoke).toHaveBeenCalledWith("terminal_close", { + sessionId: "session-abc", + }) + }) + + it("terminalListSessions returns session id array", async () => { + mockInvoke.mockResolvedValue(["s1", "s2", "s3"]) + const sessions = await terminalListSessions() + expect(mockInvoke).toHaveBeenCalledWith("terminal_list") + expect(sessions).toEqual(["s1", "s2", "s3"]) + }) +}) diff --git a/desktop/src/renderer/src/lib/ipc/terminal.ts b/desktop/src/renderer/src/lib/ipc/terminal.ts new file mode 100644 index 000000000..bf76a7e8c --- /dev/null +++ b/desktop/src/renderer/src/lib/ipc/terminal.ts @@ -0,0 +1,71 @@ +import { invoke, listen } from "./bridge.js" +import type { UnlistenFn } from "./types.js" + +export async function terminalCreate( + cols: number, + rows: number, +): Promise { + return invoke("terminal_create", { cols, rows }) +} + +export async function terminalCreateSsh( + workspaceId: string, + cols: number, + rows: number, +): Promise { + return invoke("terminal_create_ssh", { workspaceId, cols, rows }) +} + +export async function terminalWrite( + sessionId: string, + data: number[], +): Promise { + return invoke("terminal_write", { sessionId, data }) +} + +export async function terminalResize( + sessionId: string, + cols: number, + rows: number, +): Promise { + return invoke("terminal_resize", { sessionId, cols, rows }) +} + +export async function terminalClose(sessionId: string): Promise { + return invoke("terminal_close", { sessionId }) +} + +export async function terminalListSessions(): Promise { + return invoke("terminal_list") +} + +interface TerminalOutputPayload { + sessionId: string + data: number[] +} + +interface TerminalExitPayload { + sessionId: string + exitCode?: number + signal?: number +} + +export function onTerminalOutput( + callback: (sessionId: string, data: Uint8Array) => void, +): Promise { + return listen("terminal:output", (event) => { + callback(event.payload.sessionId, new Uint8Array(event.payload.data)) + }) +} + +export function onTerminalExit( + callback: (sessionId: string, exitCode?: number, signal?: number) => void, +): Promise { + return listen("terminal:exit", (event) => { + callback( + event.payload.sessionId, + event.payload.exitCode, + event.payload.signal, + ) + }) +} diff --git a/desktop/src/renderer/src/lib/ipc/types.ts b/desktop/src/renderer/src/lib/ipc/types.ts new file mode 100644 index 000000000..f992f0ce7 --- /dev/null +++ b/desktop/src/renderer/src/lib/ipc/types.ts @@ -0,0 +1 @@ +export type UnlistenFn = () => void diff --git a/desktop/src/renderer/src/lib/router.ts b/desktop/src/renderer/src/lib/router.ts new file mode 100644 index 000000000..f3fe1c148 --- /dev/null +++ b/desktop/src/renderer/src/lib/router.ts @@ -0,0 +1,46 @@ +import { readable } from "svelte/store" +import { push, replace, router } from "svelte-spa-router" + +export { push, replace, router } + +/** + * Navigate to a path using the hash router. + */ +export function goto(path: string, opts?: { replaceState?: boolean }) { + if (opts?.replaceState) { + replace(path) + } else { + push(path) + } +} + +/** + * Readable store for the current location path. + * Derived from the hash router state. + */ +export const location = readable("/", (set) => { + function update() { + const hash = window.location.hash + const qsPos = hash.indexOf("?") + const path = qsPos > -1 ? hash.slice(1, qsPos) : hash.slice(1) + set(path || "/") + } + update() + window.addEventListener("hashchange", update) + return () => window.removeEventListener("hashchange", update) +}) + +/** + * Readable store for the current querystring. + * Derived from the hash router state. + */ +export const querystring = readable("", (set) => { + function update() { + const hash = window.location.hash + const qsPos = hash.indexOf("?") + set(qsPos > -1 ? hash.slice(qsPos + 1) : "") + } + update() + window.addEventListener("hashchange", update) + return () => window.removeEventListener("hashchange", update) +}) diff --git a/desktop/src/renderer/src/lib/stores/command-palette.test.ts b/desktop/src/renderer/src/lib/stores/command-palette.test.ts new file mode 100644 index 000000000..b16e75684 --- /dev/null +++ b/desktop/src/renderer/src/lib/stores/command-palette.test.ts @@ -0,0 +1,28 @@ +import { get } from "svelte/store" +import { describe, expect, it } from "vitest" +import { paletteOpen, togglePalette } from "./command-palette.js" + +describe("command-palette store", () => { + it("starts closed", () => { + expect(get(paletteOpen)).toBe(false) + }) + + it("togglePalette opens when closed", () => { + paletteOpen.set(false) + togglePalette() + expect(get(paletteOpen)).toBe(true) + }) + + it("togglePalette closes when open", () => { + paletteOpen.set(true) + togglePalette() + expect(get(paletteOpen)).toBe(false) + }) + + it("double toggle returns to original state", () => { + paletteOpen.set(false) + togglePalette() + togglePalette() + expect(get(paletteOpen)).toBe(false) + }) +}) diff --git a/desktop/src/renderer/src/lib/stores/command-palette.ts b/desktop/src/renderer/src/lib/stores/command-palette.ts new file mode 100644 index 000000000..b1742af81 --- /dev/null +++ b/desktop/src/renderer/src/lib/stores/command-palette.ts @@ -0,0 +1,16 @@ +import { writable } from "svelte/store" + +export interface PaletteItem { + id: string + label: string + description?: string + category?: string + href?: string + action?: () => void +} + +export const paletteOpen = writable(false) + +export function togglePalette() { + paletteOpen.update((v) => !v) +} diff --git a/desktop/src/renderer/src/lib/stores/contexts.test.ts b/desktop/src/renderer/src/lib/stores/contexts.test.ts new file mode 100644 index 000000000..bfe6c0d32 --- /dev/null +++ b/desktop/src/renderer/src/lib/stores/contexts.test.ts @@ -0,0 +1,114 @@ +import { get } from "svelte/store" +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest" +import { + mockInvoke, + mockListen, + resetTauriMocks, +} from "$lib/__mocks__/tauri.js" + +import { + activeContext, + contexts, + contextsLoading, + destroyContexts, + initContexts, +} from "./contexts.js" + +describe("contexts store", () => { + beforeEach(() => { + resetTauriMocks() + contexts.set([]) + activeContext.set("") + contextsLoading.set(true) + }) + + afterEach(() => { + destroyContexts() + }) + + it("loads contexts and active context on init", async () => { + mockInvoke.mockResolvedValue({ + contexts: [ + { name: "default", options: {} }, + { name: "production", options: {} }, + ], + activeContext: "default", + }) + + await initContexts() + + expect(get(contextsLoading)).toBe(false) + expect(get(contexts)).toHaveLength(2) + expect(get(contexts)[0].name).toBe("default") + expect(get(activeContext)).toBe("default") + }) + + it("sets loading false even on error", async () => { + mockInvoke.mockRejectedValue(new Error("Tauri not available")) + + await initContexts() + + expect(get(contextsLoading)).toBe(false) + expect(get(contexts)).toEqual([]) + expect(get(activeContext)).toBe("") + }) + + it("subscribes to context change events", async () => { + mockInvoke.mockResolvedValue({ contexts: [], activeContext: "" }) + + await initContexts() + + expect(mockListen).toHaveBeenCalledWith( + "contexts-changed", + expect.any(Function), + ) + }) + + it("updates contexts and active context when event fires", async () => { + mockInvoke.mockResolvedValue({ contexts: [], activeContext: "" }) + let eventCallback: + | ((event: { + payload: { contexts: unknown[]; activeContext: string } + }) => void) + | undefined + mockListen.mockImplementation( + ( + _name: string, + cb: (event: { + payload: { contexts: unknown[]; activeContext: string } + }) => void, + ) => { + eventCallback = cb + return Promise.resolve(() => {}) + }, + ) + + await initContexts() + + eventCallback?.({ + payload: { + contexts: [{ name: "staging", options: {} }], + activeContext: "staging", + }, + }) + + expect(get(contexts)).toHaveLength(1) + expect(get(contexts)[0].name).toBe("staging") + expect(get(activeContext)).toBe("staging") + }) + + it("destroyContexts cleans up listener", async () => { + const mockUnlisten = vi.fn() + mockListen.mockResolvedValue(mockUnlisten) + mockInvoke.mockResolvedValue({ contexts: [], activeContext: "" }) + + await initContexts() + destroyContexts() + + expect(mockUnlisten).toHaveBeenCalled() + }) + + it("destroyContexts is safe to call without init", () => { + expect(() => destroyContexts()).not.toThrow() + }) +}) diff --git a/desktop/src/renderer/src/lib/stores/contexts.ts b/desktop/src/renderer/src/lib/stores/contexts.ts new file mode 100644 index 000000000..b3d89cee9 --- /dev/null +++ b/desktop/src/renderer/src/lib/stores/contexts.ts @@ -0,0 +1,50 @@ +import { writable } from "svelte/store" +import { contextList } from "$lib/ipc/commands.js" +import { onContextsChanged } from "$lib/ipc/events.js" +import type { UnlistenFn } from "$lib/ipc/types.js" +import type { Context } from "$lib/types/index.js" + +export const contexts = writable([]) +export const activeContext = writable("") +export const contextsLoading = writable(true) + +let unlisten: UnlistenFn | null = null + +export async function refreshContexts() { + try { + const result = await contextList() + contexts.set(result.contexts) + activeContext.set(result.activeContext) + } catch { + // IPC not available + } +} + +export async function initContexts() { + contextsLoading.set(true) + try { + const result = await contextList() + contexts.set(result.contexts) + activeContext.set(result.activeContext) + } catch { + // Tauri not available + } finally { + contextsLoading.set(false) + } + + try { + unlisten = await onContextsChanged((updated, active) => { + contexts.set(updated) + activeContext.set(active) + }) + } catch { + // Event listener setup failed + } +} + +export function destroyContexts() { + if (unlisten) { + unlisten() + unlisten = null + } +} diff --git a/desktop/src/renderer/src/lib/stores/machines.test.ts b/desktop/src/renderer/src/lib/stores/machines.test.ts new file mode 100644 index 000000000..90d446129 --- /dev/null +++ b/desktop/src/renderer/src/lib/stores/machines.test.ts @@ -0,0 +1,142 @@ +import { get } from "svelte/store" +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest" +import { + mockInvoke, + mockListen, + resetTauriMocks, +} from "$lib/__mocks__/tauri.js" + +import { + destroyMachines, + initMachines, + machines, + machinesLoading, +} from "./machines.js" + +describe("machines store", () => { + beforeEach(() => { + vi.useFakeTimers() + resetTauriMocks() + machines.set([]) + machinesLoading.set(true) + }) + + afterEach(() => { + destroyMachines() + vi.useRealTimers() + }) + + it("loads machines on init", async () => { + const mockMachines = [ + { id: "m1", provider: { name: "docker" } }, + { id: "m2", provider: { name: "aws" } }, + ] + mockInvoke.mockImplementation((cmd: string) => { + if (cmd === "machine_list") return Promise.resolve(mockMachines) + if (cmd === "machine_status") + return Promise.resolve('{"state":"Running"}') + return Promise.resolve(undefined) + }) + + await initMachines() + + expect(get(machinesLoading)).toBe(false) + expect(get(machines)).toHaveLength(2) + expect(get(machines)[0].id).toBe("m1") + }) + + it("sets loading false on error", async () => { + mockInvoke.mockRejectedValue(new Error("not available")) + + await initMachines() + + expect(get(machinesLoading)).toBe(false) + expect(get(machines)).toHaveLength(0) + }) + + it("fetches status for each machine and merges into store", async () => { + const mockMachines = [{ id: "m1" }, { id: "m2" }] + mockInvoke.mockImplementation( + (cmd: string, args?: Record) => { + if (cmd === "machine_list") return Promise.resolve(mockMachines) + if (cmd === "machine_status") { + const id = args?.id as string + if (id === "m1") return Promise.resolve('{"state":"Running"}') + if (id === "m2") return Promise.resolve('{"state":"Stopped"}') + } + return Promise.resolve(undefined) + }, + ) + + await initMachines() + await vi.waitFor(() => { + const current = get(machines) + expect(current.find((m) => m.id === "m1")?.status).toBe("Running") + expect(current.find((m) => m.id === "m2")?.status).toBe("Stopped") + }) + }) + + it("polls statuses every 10 seconds", async () => { + const mockMachines = [{ id: "m1" }] + let statusCallCount = 0 + mockInvoke.mockImplementation((cmd: string) => { + if (cmd === "machine_list") return Promise.resolve(mockMachines) + if (cmd === "machine_status") { + statusCallCount++ + return Promise.resolve('{"state":"Running"}') + } + return Promise.resolve(undefined) + }) + + await initMachines() + const initialCalls = statusCallCount + + vi.advanceTimersByTime(10_000) + await vi.waitFor(() => { + expect(statusCallCount).toBeGreaterThan(initialCalls) + }) + }) + + it("destroyMachines stops polling and cleans up listener", async () => { + const mockUnlisten = vi.fn() + mockListen.mockResolvedValue(mockUnlisten) + mockInvoke.mockImplementation((cmd: string) => { + if (cmd === "machine_list") return Promise.resolve([{ id: "m1" }]) + if (cmd === "machine_status") + return Promise.resolve('{"state":"Running"}') + return Promise.resolve(undefined) + }) + + await initMachines() + destroyMachines() + + expect(mockUnlisten).toHaveBeenCalled() + + const callsBefore = mockInvoke.mock.calls.filter( + (c: string[]) => c[0] === "machine_status", + ).length + + vi.advanceTimersByTime(30_000) + + const callsAfter = mockInvoke.mock.calls.filter( + (c: string[]) => c[0] === "machine_status", + ).length + expect(callsAfter).toBe(callsBefore) + }) + + it("handles status fetch failures gracefully", async () => { + const mockMachines = [{ id: "m1" }] + mockInvoke.mockImplementation((cmd: string) => { + if (cmd === "machine_list") return Promise.resolve(mockMachines) + if (cmd === "machine_status") return Promise.reject(new Error("timeout")) + return Promise.resolve(undefined) + }) + + await initMachines() + await vi.advanceTimersByTimeAsync(0) + + const current = get(machines) + expect(current).toHaveLength(1) + expect(current[0].status).toBeUndefined() + }) +}) diff --git a/desktop/src/renderer/src/lib/stores/machines.ts b/desktop/src/renderer/src/lib/stores/machines.ts new file mode 100644 index 000000000..80c7435b4 --- /dev/null +++ b/desktop/src/renderer/src/lib/stores/machines.ts @@ -0,0 +1,81 @@ +import { get, writable } from "svelte/store" +import { machineList, machineStatus } from "$lib/ipc/commands.js" +import { onMachinesChanged } from "$lib/ipc/events.js" +import type { UnlistenFn } from "$lib/ipc/types.js" +import type { Machine } from "$lib/types/index.js" + +export const machines = writable([]) +export const machinesLoading = writable(true) + +let unlisten: UnlistenFn | null = null +let pollInterval: ReturnType | null = null + +const STATUS_POLL_MS = 10_000 + +export async function initMachines() { + machinesLoading.set(true) + try { + const list = await machineList() + machines.set(list) + fetchStatuses(list) + } catch { + // Tauri not available + } finally { + machinesLoading.set(false) + } + + try { + unlisten = await onMachinesChanged((updated) => { + machines.set(updated) + fetchStatuses(updated) + }) + } catch { + // Event listener setup failed + } + + pollInterval = setInterval(() => { + const current = get(machines) + if (current.length > 0) { + fetchStatuses(current) + } + }, STATUS_POLL_MS) +} + +export function destroyMachines() { + if (unlisten) { + unlisten() + unlisten = null + } + if (pollInterval) { + clearInterval(pollInterval) + pollInterval = null + } +} + +function fetchStatuses(list: Machine[]) { + for (const m of list) { + machineStatus(m.id) + .then((raw) => { + try { + const parsed = JSON.parse(raw) as { state?: string } + if (parsed.state) { + machines.update((current) => + current.map((item) => + item.id === m.id ? { ...item, status: parsed.state } : item, + ), + ) + } + } catch { + const status = raw.trim() + if (status) { + machines.update((current) => + current.map((item) => + item.id === m.id ? { ...item, status } : item, + ), + ) + } + } + }) + .catch(() => {}) + } +} diff --git a/desktop/src/renderer/src/lib/stores/providers.test.ts b/desktop/src/renderer/src/lib/stores/providers.test.ts new file mode 100644 index 000000000..ca463d6e9 --- /dev/null +++ b/desktop/src/renderer/src/lib/stores/providers.test.ts @@ -0,0 +1,102 @@ +import { get } from "svelte/store" +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest" +import { + mockInvoke, + mockListen, + resetTauriMocks, +} from "$lib/__mocks__/tauri.js" + +import { + destroyProviders, + initProviders, + providers, + providersLoading, +} from "./providers.js" + +describe("providers store", () => { + beforeEach(() => { + resetTauriMocks() + providers.set([]) + providersLoading.set(true) + }) + + afterEach(() => { + destroyProviders() + }) + + it("loads providers on init", async () => { + const mockProviders = [ + { name: "docker", version: "0.5.0" }, + { name: "aws", version: "0.3.0" }, + ] + mockInvoke.mockResolvedValue(mockProviders) + + await initProviders() + + expect(get(providersLoading)).toBe(false) + const current = get(providers) + expect(current).toHaveLength(2) + expect(current[0].name).toBe("docker") + expect(current[1].name).toBe("aws") + }) + + it("sets loading false even on error", async () => { + mockInvoke.mockRejectedValue(new Error("Tauri not available")) + + await initProviders() + + expect(get(providersLoading)).toBe(false) + expect(get(providers)).toEqual([]) + }) + + it("subscribes to provider change events", async () => { + mockInvoke.mockResolvedValue([]) + + await initProviders() + + expect(mockListen).toHaveBeenCalledWith( + "providers-changed", + expect.any(Function), + ) + }) + + it("updates providers when event fires", async () => { + mockInvoke.mockResolvedValue([]) + let eventCallback: + | ((event: { payload: { providers: unknown[] } }) => void) + | undefined + mockListen.mockImplementation( + ( + _name: string, + cb: (event: { payload: { providers: unknown[] } }) => void, + ) => { + eventCallback = cb + return Promise.resolve(() => {}) + }, + ) + + await initProviders() + expect(get(providers)).toEqual([]) + + eventCallback?.({ + payload: { providers: [{ name: "kubernetes", version: "1.0" }] }, + }) + expect(get(providers)).toHaveLength(1) + expect(get(providers)[0].name).toBe("kubernetes") + }) + + it("destroyProviders cleans up listener", async () => { + const mockUnlisten = vi.fn() + mockListen.mockResolvedValue(mockUnlisten) + mockInvoke.mockResolvedValue([]) + + await initProviders() + destroyProviders() + + expect(mockUnlisten).toHaveBeenCalled() + }) + + it("destroyProviders is safe to call without init", () => { + expect(() => destroyProviders()).not.toThrow() + }) +}) diff --git a/desktop/src/renderer/src/lib/stores/providers.ts b/desktop/src/renderer/src/lib/stores/providers.ts new file mode 100644 index 000000000..d670f20f6 --- /dev/null +++ b/desktop/src/renderer/src/lib/stores/providers.ts @@ -0,0 +1,37 @@ +import { writable } from "svelte/store" +import { providerList } from "$lib/ipc/commands.js" +import { onProvidersChanged } from "$lib/ipc/events.js" +import type { UnlistenFn } from "$lib/ipc/types.js" +import type { Provider } from "$lib/types/index.js" + +export const providers = writable([]) +export const providersLoading = writable(true) + +let unlisten: UnlistenFn | null = null + +export async function initProviders() { + providersLoading.set(true) + try { + const list = await providerList() + providers.set(list) + } catch { + // Tauri not available + } finally { + providersLoading.set(false) + } + + try { + unlisten = await onProvidersChanged((updated) => { + providers.set(updated) + }) + } catch { + // Event listener setup failed + } +} + +export function destroyProviders() { + if (unlisten) { + unlisten() + unlisten = null + } +} diff --git a/desktop/src/renderer/src/lib/stores/settings.test.ts b/desktop/src/renderer/src/lib/stores/settings.test.ts new file mode 100644 index 000000000..9e7d0a6d2 --- /dev/null +++ b/desktop/src/renderer/src/lib/stores/settings.test.ts @@ -0,0 +1,70 @@ +import { get } from "svelte/store" +import { beforeEach, describe, expect, it } from "vitest" + +import { applyTheme, cycleTheme, theme } from "./settings.js" + +describe("settings store", () => { + beforeEach(() => { + theme.set("dark") + localStorage.clear() + document.documentElement.classList.remove("dark") + }) + + describe("applyTheme", () => { + it("applies dark theme", () => { + applyTheme("dark") + + expect(localStorage.getItem("devsy-theme")).toBe("dark") + expect(document.documentElement.classList.contains("dark")).toBe(true) + }) + + it("applies light theme", () => { + applyTheme("light") + + expect(localStorage.getItem("devsy-theme")).toBe("light") + expect(document.documentElement.classList.contains("dark")).toBe(false) + }) + + it("applies system theme using media query", () => { + applyTheme("system") + + expect(localStorage.getItem("devsy-theme")).toBe("system") + }) + + it("persists theme to localStorage", () => { + applyTheme("light") + expect(localStorage.getItem("devsy-theme")).toBe("light") + + applyTheme("dark") + expect(localStorage.getItem("devsy-theme")).toBe("dark") + }) + }) + + describe("cycleTheme", () => { + it("cycles light -> dark", () => { + theme.set("light") + cycleTheme() + expect(get(theme)).toBe("dark") + }) + + it("cycles dark -> system", () => { + theme.set("dark") + cycleTheme() + expect(get(theme)).toBe("system") + }) + + it("cycles system -> light", () => { + theme.set("system") + cycleTheme() + expect(get(theme)).toBe("light") + }) + + it("full cycle returns to original", () => { + theme.set("light") + cycleTheme() // dark + cycleTheme() // system + cycleTheme() // light + expect(get(theme)).toBe("light") + }) + }) +}) diff --git a/desktop/src/renderer/src/lib/stores/settings.ts b/desktop/src/renderer/src/lib/stores/settings.ts new file mode 100644 index 000000000..41cfaa725 --- /dev/null +++ b/desktop/src/renderer/src/lib/stores/settings.ts @@ -0,0 +1,353 @@ +import { writable } from "svelte/store" + +const browser = typeof window !== "undefined" + +// ── UI Settings (localStorage) ────────────────────────────────────── + +export type Theme = "light" | "dark" | "system" +export type ColorScheme = "default" | "emerald" | "purple" +export type UIScale = "xs" | "sm" | "md" | "lg" | "xl" +export type SidebarPosition = "left" | "right" + +const STORAGE_KEY = "devsy-theme" +const COLOR_SCHEME_KEY = "devsy-color-scheme" +const UI_SCALE_KEY = "devsy-ui-scale" +const SIDEBAR_KEY = "devsy-sidebar-position" +const AUTO_UPDATE_KEY = "devsy-auto-update" +const FIXED_IDE_KEY = "devsy-fixed-ide" +const DEFAULT_IDE_KEY = "devsy-default-ide" + +const UI_SCALE_CLASSES: Record = { + xs: "ui-scale-xs", + sm: "ui-scale-sm", + md: "", + lg: "ui-scale-lg", + xl: "ui-scale-xl", +} + +function getStored( + key: string, + valid: readonly T[], + fallback: T, +): T { + if (browser) { + const stored = localStorage.getItem(key) + if (stored && (valid as readonly string[]).includes(stored)) { + return stored as T + } + } + return fallback +} + +function getStoredBool(key: string, fallback: boolean): boolean { + if (browser) { + const stored = localStorage.getItem(key) + if (stored === "true") return true + if (stored === "false") return false + } + return fallback +} + +function getStoredString(key: string, fallback: string): string { + if (browser) { + return localStorage.getItem(key) ?? fallback + } + return fallback +} + +// Theme +export const theme = writable( + getStored(STORAGE_KEY, ["light", "dark", "system"] as const, "dark"), +) + +export function applyTheme(value: Theme) { + if (!browser) return + localStorage.setItem(STORAGE_KEY, value) + const root = document.documentElement + if (value === "system") { + const prefersDark = window.matchMedia( + "(prefers-color-scheme: dark)", + ).matches + root.classList.toggle("dark", prefersDark) + } else { + root.classList.toggle("dark", value === "dark") + } +} + +export function cycleTheme() { + theme.update((current) => { + const next: Theme = + current === "light" ? "dark" : current === "dark" ? "system" : "light" + applyTheme(next) + return next + }) +} + +// Color scheme (accent) +export const colorScheme = writable( + getStored( + COLOR_SCHEME_KEY, + ["default", "emerald", "purple"] as const, + "emerald", + ), +) + +const COLOR_SCHEME_CLASSES: ColorScheme[] = ["emerald", "purple"] + +export function applyColorScheme(value: ColorScheme) { + if (!browser) return + localStorage.setItem(COLOR_SCHEME_KEY, value) + const root = document.documentElement + for (const cls of COLOR_SCHEME_CLASSES) { + root.classList.remove(`theme-${cls}`) + } + if (value !== "default") { + root.classList.add(`theme-${value}`) + } +} + +export function setColorScheme(value: ColorScheme) { + colorScheme.set(value) + applyColorScheme(value) +} + +// UI Scale +export const uiScale = writable( + getStored(UI_SCALE_KEY, ["xs", "sm", "md", "lg", "xl"] as const, "md"), +) + +export function applyUIScale(value: UIScale) { + if (!browser) return + localStorage.setItem(UI_SCALE_KEY, value) + const root = document.documentElement + for (const cls of Object.values(UI_SCALE_CLASSES)) { + if (cls) root.classList.remove(cls) + } + const cls = UI_SCALE_CLASSES[value] + if (cls) root.classList.add(cls) +} + +// Sidebar position +export const sidebarPosition = writable( + getStored(SIDEBAR_KEY, ["left", "right"] as const, "left"), +) + +export function setSidebarPosition(value: SidebarPosition) { + if (browser) localStorage.setItem(SIDEBAR_KEY, value) + sidebarPosition.set(value) +} + +// Auto-update +export const autoUpdate = writable( + getStoredBool(AUTO_UPDATE_KEY, true), +) + +export function setAutoUpdate(value: boolean) { + if (browser) localStorage.setItem(AUTO_UPDATE_KEY, String(value)) + autoUpdate.set(value) +} + +// Default IDE +export const defaultIde = writable( + getStoredString(DEFAULT_IDE_KEY, "vscode"), +) + +export function setDefaultIde(value: string) { + if (browser) localStorage.setItem(DEFAULT_IDE_KEY, value) + defaultIde.set(value) +} + +// Fixed IDE (always use default) +export const fixedIde = writable(getStoredBool(FIXED_IDE_KEY, false)) + +export function setFixedIde(value: boolean) { + if (browser) localStorage.setItem(FIXED_IDE_KEY, String(value)) + fixedIde.set(value) +} + +// ── Context Options (Devsy CLI) ───────────────────────────────────── + +// Options stored in Devsy CLI context (devpod context set-options) +export interface ContextOptions { + telemetry: boolean + agentUrl: string + dotfilesUrl: string + dotfilesScript: string + dockerCredentialForwarding: boolean + gitCredentialForwarding: boolean + gitSshSignatureForwarding: boolean + sshAgentForwarding: boolean + sshAddPrivateKeys: boolean + sshStrictHostKeyChecking: boolean + gpgAgentForwarding: boolean + agentInjectTimeout: string + registryCache: string + exitAfterTimeout: boolean + sshConfigPath: string + sshConfigIncludePath: string +} + +// Options stored locally (not supported by Devsy CLI context) +export interface LocalOptions { + debugFlag: boolean + sshKeyPath: string + httpProxy: string + httpsProxy: string + noProxy: string + additionalCliFlags: string + additionalEnvVars: string + experimentalMultiDevcontainer: boolean +} + +export const DEFAULT_CONTEXT_OPTIONS: ContextOptions = { + telemetry: true, + agentUrl: "", + dotfilesUrl: "", + dotfilesScript: "", + dockerCredentialForwarding: true, + gitCredentialForwarding: true, + gitSshSignatureForwarding: true, + sshAgentForwarding: true, + sshAddPrivateKeys: true, + sshStrictHostKeyChecking: false, + gpgAgentForwarding: false, + agentInjectTimeout: "20", + registryCache: "", + exitAfterTimeout: true, + sshConfigPath: "", + sshConfigIncludePath: "", +} + +export const DEFAULT_LOCAL_OPTIONS: LocalOptions = { + debugFlag: false, + sshKeyPath: "", + httpProxy: "", + httpsProxy: "", + noProxy: "", + additionalCliFlags: "", + additionalEnvVars: "", + experimentalMultiDevcontainer: false, +} + +// Map from our keys to Devsy CLI context option keys +export const CONTEXT_OPTION_KEYS: Record = { + telemetry: "TELEMETRY", + agentUrl: "AGENT_URL", + dotfilesUrl: "DOTFILES_URL", + dotfilesScript: "DOTFILES_SCRIPT", + dockerCredentialForwarding: "SSH_INJECT_DOCKER_CREDENTIALS", + gitCredentialForwarding: "SSH_INJECT_GIT_CREDENTIALS", + gitSshSignatureForwarding: "GIT_SSH_SIGNATURE_FORWARDING", + sshAgentForwarding: "SSH_AGENT_FORWARDING", + sshAddPrivateKeys: "SSH_ADD_PRIVATE_KEYS", + sshStrictHostKeyChecking: "SSH_STRICT_HOST_KEY_CHECKING", + gpgAgentForwarding: "GPG_AGENT_FORWARDING", + agentInjectTimeout: "AGENT_INJECT_TIMEOUT", + registryCache: "REGISTRY_CACHE", + exitAfterTimeout: "EXIT_AFTER_TIMEOUT", + sshConfigPath: "SSH_CONFIG_PATH", + sshConfigIncludePath: "SSH_CONFIG_INCLUDE_PATH", +} + +export const contextOptions = writable({ + ...DEFAULT_CONTEXT_OPTIONS, +}) + +const LOCAL_OPTIONS_KEY = "devsy-local-options" + +export const localOptions = writable({ + ...DEFAULT_LOCAL_OPTIONS, +}) + +export function loadLocalOptions(): LocalOptions { + if (!browser) return { ...DEFAULT_LOCAL_OPTIONS } + try { + const stored = localStorage.getItem(LOCAL_OPTIONS_KEY) + if (stored) { + return { ...DEFAULT_LOCAL_OPTIONS, ...JSON.parse(stored) } + } + } catch { + // ignore + } + return { ...DEFAULT_LOCAL_OPTIONS } +} + +export function saveLocalOption( + key: keyof LocalOptions, + value: string | boolean, +) { + if (!browser) return + const current = loadLocalOptions() + ;(current as unknown as Record)[key] = value + localStorage.setItem(LOCAL_OPTIONS_KEY, JSON.stringify(current)) + localOptions.set(current) +} + +export function parseContextOptions( + raw: Record, +): ContextOptions { + function str(key: string, fallback = ""): string { + return raw[key]?.value ?? fallback + } + function bool(key: string, fallback = false): boolean { + const v = raw[key]?.value + if (v === undefined || v === "") return fallback + return v !== "false" + } + + return { + telemetry: bool("TELEMETRY", true), + agentUrl: str("AGENT_URL"), + dotfilesUrl: str("DOTFILES_URL"), + dotfilesScript: str("DOTFILES_SCRIPT"), + dockerCredentialForwarding: bool("SSH_INJECT_DOCKER_CREDENTIALS", true), + gitCredentialForwarding: bool("SSH_INJECT_GIT_CREDENTIALS", true), + gitSshSignatureForwarding: bool("GIT_SSH_SIGNATURE_FORWARDING", true), + sshAgentForwarding: bool("SSH_AGENT_FORWARDING", true), + sshAddPrivateKeys: bool("SSH_ADD_PRIVATE_KEYS", true), + sshStrictHostKeyChecking: bool("SSH_STRICT_HOST_KEY_CHECKING"), + gpgAgentForwarding: bool("GPG_AGENT_FORWARDING"), + agentInjectTimeout: str("AGENT_INJECT_TIMEOUT", "20"), + registryCache: str("REGISTRY_CACHE"), + exitAfterTimeout: bool("EXIT_AFTER_TIMEOUT", true), + sshConfigPath: str("SSH_CONFIG_PATH"), + sshConfigIncludePath: str("SSH_CONFIG_INCLUDE_PATH"), + } +} + +// ── Init ──────────────────────────────────────────────────────────── + +export function initSettings() { + const unsubTheme = theme.subscribe((value) => { + applyTheme(value) + }) + const unsubColor = colorScheme.subscribe((value) => { + applyColorScheme(value) + }) + const unsubScale = uiScale.subscribe((value) => { + applyUIScale(value) + }) + const unsubscribe = () => { + unsubTheme() + unsubColor() + unsubScale() + } + + if (browser) { + const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)") + const handler = () => { + let current = "dark" as Theme + theme.subscribe((v) => (current = v))() + if (current === "system") { + applyTheme("system") + } + } + mediaQuery.addEventListener("change", handler) + return () => { + unsubscribe() + mediaQuery.removeEventListener("change", handler) + } + } + + return unsubscribe +} diff --git a/desktop/src/renderer/src/lib/stores/terminal-instances.ts b/desktop/src/renderer/src/lib/stores/terminal-instances.ts new file mode 100644 index 000000000..2403e51f2 --- /dev/null +++ b/desktop/src/renderer/src/lib/stores/terminal-instances.ts @@ -0,0 +1,40 @@ +import type { FitAddon } from "@xterm/addon-fit" +import type { Terminal } from "@xterm/xterm" + +export interface TerminalInstance { + term: Terminal + fitAddon: FitAddon + unlistenOutput?: () => void + unlistenExit?: () => void + unsubscribeTheme?: () => void +} + +const instances = new Map() + +export function getTerminalInstance( + sessionId: string, +): TerminalInstance | undefined { + return instances.get(sessionId) +} + +export function setTerminalInstance( + sessionId: string, + instance: TerminalInstance, +): void { + instances.set(sessionId, instance) +} + +export function destroyTerminalInstance(sessionId: string): void { + const instance = instances.get(sessionId) + if (instance) { + instance.unlistenOutput?.() + instance.unlistenExit?.() + instance.unsubscribeTheme?.() + instance.term.dispose() + instances.delete(sessionId) + } +} + +export function hasTerminalInstance(sessionId: string): boolean { + return instances.has(sessionId) +} diff --git a/desktop/src/renderer/src/lib/stores/terminals.test.ts b/desktop/src/renderer/src/lib/stores/terminals.test.ts new file mode 100644 index 000000000..cb208f881 --- /dev/null +++ b/desktop/src/renderer/src/lib/stores/terminals.test.ts @@ -0,0 +1,98 @@ +import { get } from "svelte/store" +import { beforeEach, describe, expect, it } from "vitest" + +import { + addTerminal, + clearTerminals, + removeTerminal, + terminalCount, + terminals, +} from "./terminals.js" + +describe("terminals store", () => { + beforeEach(() => { + terminals.set([]) + }) + + it("starts with empty terminals", () => { + expect(get(terminals)).toEqual([]) + expect(get(terminalCount)).toBe(0) + }) + + it("addTerminal adds a session", () => { + addTerminal({ id: "t-1", label: "Shell", type: "shell" }) + + const current = get(terminals) + expect(current).toHaveLength(1) + expect(current[0].id).toBe("t-1") + expect(current[0].type).toBe("shell") + }) + + it("addTerminal adds multiple sessions", () => { + addTerminal({ id: "t-1", label: "Shell", type: "shell" }) + addTerminal({ + id: "t-2", + label: "SSH: ws-1", + type: "ssh", + workspaceId: "ws-1", + }) + + expect(get(terminals)).toHaveLength(2) + expect(get(terminalCount)).toBe(2) + }) + + it("removeTerminal removes by id", () => { + addTerminal({ id: "t-1", label: "Shell", type: "shell" }) + addTerminal({ id: "t-2", label: "Shell 2", type: "shell" }) + + removeTerminal("t-1") + + const current = get(terminals) + expect(current).toHaveLength(1) + expect(current[0].id).toBe("t-2") + }) + + it("removeTerminal is safe with non-existent id", () => { + addTerminal({ id: "t-1", label: "Shell", type: "shell" }) + + removeTerminal("non-existent") + + expect(get(terminals)).toHaveLength(1) + }) + + it("clearTerminals removes all sessions", () => { + addTerminal({ id: "t-1", label: "Shell", type: "shell" }) + addTerminal({ id: "t-2", label: "Shell 2", type: "shell" }) + + clearTerminals() + + expect(get(terminals)).toEqual([]) + expect(get(terminalCount)).toBe(0) + }) + + it("terminalCount is derived from terminals length", () => { + expect(get(terminalCount)).toBe(0) + + addTerminal({ id: "t-1", label: "Shell", type: "shell" }) + expect(get(terminalCount)).toBe(1) + + addTerminal({ id: "t-2", label: "Shell 2", type: "shell" }) + expect(get(terminalCount)).toBe(2) + + removeTerminal("t-1") + expect(get(terminalCount)).toBe(1) + }) + + it("preserves workspaceId on ssh sessions", () => { + addTerminal({ + id: "t-1", + label: "SSH: my-ws", + type: "ssh", + workspaceId: "my-ws", + }) + + const session = get(terminals)[0] + expect(session.workspaceId).toBe("my-ws") + expect(session.type).toBe("ssh") + }) +}) diff --git a/desktop/src/renderer/src/lib/stores/terminals.ts b/desktop/src/renderer/src/lib/stores/terminals.ts new file mode 100644 index 000000000..fedbbb23d --- /dev/null +++ b/desktop/src/renderer/src/lib/stores/terminals.ts @@ -0,0 +1,30 @@ +import { derived, writable } from "svelte/store" + +export interface TerminalSession { + id: string + label: string + type: "shell" | "ssh" + workspaceId?: string +} + +export const terminals = writable([]) + +export const terminalCount = derived(terminals, ($t) => $t.length) + +export function addTerminal(session: TerminalSession) { + terminals.update((list) => [...list, session]) +} + +export function removeTerminal(id: string) { + terminals.update((list) => list.filter((s) => s.id !== id)) +} + +export function renameTerminal(id: string, label: string) { + terminals.update((list) => + list.map((s) => (s.id === id ? { ...s, label } : s)), + ) +} + +export function clearTerminals() { + terminals.set([]) +} diff --git a/desktop/src/renderer/src/lib/stores/toasts.test.ts b/desktop/src/renderer/src/lib/stores/toasts.test.ts new file mode 100644 index 000000000..03177e4e7 --- /dev/null +++ b/desktop/src/renderer/src/lib/stores/toasts.test.ts @@ -0,0 +1,80 @@ +import { get } from "svelte/store" +import { describe, expect, it, vi } from "vitest" + +// Mock svelte-sonner before importing toasts +vi.mock("svelte-sonner", () => ({ + toast: { + success: vi.fn(), + error: vi.fn(), + info: vi.fn(), + dismiss: vi.fn(), + }, +})) + +import { toast as sonnerToast } from "svelte-sonner" +import { notificationHistory, toasts } from "./toasts.js" + +describe("toasts store", () => { + it("success calls sonner.success and adds to history", () => { + toasts.success("It worked!") + expect(sonnerToast.success).toHaveBeenCalledWith("It worked!", { + duration: 5000, + }) + const history = get(notificationHistory) + expect(history.length).toBeGreaterThanOrEqual(1) + expect(history[0].message).toBe("It worked!") + expect(history[0].variant).toBe("success") + }) + + it("error calls sonner.error and adds to history", () => { + toasts.error("Something failed") + expect(sonnerToast.error).toHaveBeenCalledWith("Something failed", { + duration: 8000, + }) + const history = get(notificationHistory) + expect(history[0].message).toBe("Something failed") + expect(history[0].variant).toBe("error") + }) + + it("info calls sonner.info and adds to history", () => { + toasts.info("FYI") + expect(sonnerToast.info).toHaveBeenCalledWith("FYI", { duration: 5000 }) + const history = get(notificationHistory) + expect(history[0].message).toBe("FYI") + expect(history[0].variant).toBe("default") + }) + + it("assigns unique ids in history", () => { + toasts.success("first") + toasts.error("second") + const history = get(notificationHistory) + expect(history[0].id).not.toBe(history[1].id) + }) + + it("dismiss calls sonner.dismiss", () => { + toasts.dismiss(123) + expect(sonnerToast.dismiss).toHaveBeenCalledWith(123) + }) + + it("removes an item from history", () => { + toasts.success("to remove") + const history = get(notificationHistory) + const id = history[0].id + notificationHistory.remove(id) + const updated = get(notificationHistory) + expect(updated.find((t) => t.id === id)).toBeUndefined() + }) + + it("clears all history", () => { + toasts.success("a") + toasts.error("b") + notificationHistory.clear() + expect(get(notificationHistory)).toEqual([]) + }) + + it("unreadCount reflects recent items", () => { + notificationHistory.clear() + toasts.success("recent") + expect(get(notificationHistory.unreadCount)).toBe(1) + }) +}) diff --git a/desktop/src/renderer/src/lib/stores/toasts.ts b/desktop/src/renderer/src/lib/stores/toasts.ts new file mode 100644 index 000000000..5b010781f --- /dev/null +++ b/desktop/src/renderer/src/lib/stores/toasts.ts @@ -0,0 +1,67 @@ +import { derived, writable } from "svelte/store" +import { toast as sonnerToast } from "svelte-sonner" + +export interface Toast { + id: string + message: string + variant: "default" | "success" | "error" + timestamp: number + duration: number +} + +export const DURATION_MS: Record = { + error: 8000, + success: 5000, + default: 5000, +} + +const MAX_HISTORY = 50 + +const historyStore = writable([]) + +let nextId = 0 + +function add(message: string, variant: Toast["variant"] = "default") { + const id = String(++nextId) + const duration = DURATION_MS[variant] + const toast: Toast = { id, message, variant, timestamp: Date.now(), duration } + + historyStore.update((list) => [toast, ...list].slice(0, MAX_HISTORY)) + + if (variant === "success") { + sonnerToast.success(message, { duration }) + } else if (variant === "error") { + sonnerToast.error(message, { duration }) + } else { + sonnerToast.info(message, { duration }) + } + + return id +} + +function removeFromHistory(id: string) { + historyStore.update((list) => list.filter((t) => t.id !== id)) +} + +function clearHistory() { + historyStore.set([]) +} + +const unreadCount = derived(historyStore, ($history) => { + const fiveMinAgo = Date.now() - 5 * 60 * 1000 + return $history.filter((t) => t.timestamp > fiveMinAgo).length +}) + +export const toasts = { + success: (message: string) => add(message, "success"), + error: (message: string) => add(message, "error"), + info: (message: string) => add(message, "default"), + dismiss: (id?: string | number) => sonnerToast.dismiss(id), +} + +export const notificationHistory = { + subscribe: historyStore.subscribe, + remove: removeFromHistory, + clear: clearHistory, + unreadCount, +} diff --git a/desktop/src/renderer/src/lib/stores/workspaces.test.ts b/desktop/src/renderer/src/lib/stores/workspaces.test.ts new file mode 100644 index 000000000..2586cd2d5 --- /dev/null +++ b/desktop/src/renderer/src/lib/stores/workspaces.test.ts @@ -0,0 +1,176 @@ +import { get } from "svelte/store" +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest" +import { + mockInvoke, + mockListen, + resetTauriMocks, +} from "$lib/__mocks__/tauri.js" + +import { + destroyWorkspaces, + initWorkspaces, + workspaces, + workspacesLoading, +} from "./workspaces.js" + +describe("workspaces store", () => { + beforeEach(() => { + vi.useFakeTimers() + resetTauriMocks() + workspaces.set([]) + workspacesLoading.set(true) + }) + + afterEach(() => { + destroyWorkspaces() + vi.useRealTimers() + }) + + it("loads workspaces on init", async () => { + const mockWorkspaces = [ + { id: "ws-1", source: { gitRepository: "github.com/org/repo" } }, + { id: "ws-2", source: { image: "ubuntu:latest" } }, + ] + mockInvoke.mockImplementation((cmd: string) => { + if (cmd === "workspace_list") return Promise.resolve(mockWorkspaces) + if (cmd === "workspace_status") + return Promise.resolve('{"state":"Stopped"}') + return Promise.resolve(undefined) + }) + + await initWorkspaces() + + expect(get(workspacesLoading)).toBe(false) + const current = get(workspaces) + expect(current).toHaveLength(2) + expect(current[0].id).toBe("ws-1") + expect(current[1].id).toBe("ws-2") + }) + + it("sets loading false even on error", async () => { + mockInvoke.mockRejectedValue(new Error("Tauri not available")) + + await initWorkspaces() + + expect(get(workspacesLoading)).toBe(false) + expect(get(workspaces)).toEqual([]) + }) + + it("subscribes to workspace change events", async () => { + mockInvoke.mockImplementation((cmd: string) => { + if (cmd === "workspace_list") return Promise.resolve([]) + if (cmd === "workspace_status") + return Promise.resolve('{"state":"Stopped"}') + return Promise.resolve(undefined) + }) + + await initWorkspaces() + + expect(mockListen).toHaveBeenCalledWith( + "workspaces-changed", + expect.any(Function), + ) + }) + + it("fetches status for each workspace after loading", async () => { + const mockWorkspaces = [{ id: "ws-1" }, { id: "ws-2" }] + mockInvoke.mockImplementation( + (cmd: string, args?: Record) => { + if (cmd === "workspace_list") return Promise.resolve(mockWorkspaces) + if (cmd === "workspace_status") { + const wsId = args?.workspaceId as string + if (wsId === "ws-1") return Promise.resolve('{"state":"Running"}') + if (wsId === "ws-2") return Promise.resolve('{"state":"Stopped"}') + } + return Promise.resolve(undefined) + }, + ) + + await initWorkspaces() + // Let status fetches resolve + await vi.waitFor(() => { + const current = get(workspaces) + expect(current.find((w) => w.id === "ws-1")?.status).toBe("Running") + expect(current.find((w) => w.id === "ws-2")?.status).toBe("Stopped") + }) + }) + + it("handles status fetch failures gracefully", async () => { + const mockWorkspaces = [{ id: "ws-1" }] + mockInvoke.mockImplementation((cmd: string) => { + if (cmd === "workspace_list") return Promise.resolve(mockWorkspaces) + if (cmd === "workspace_status") + return Promise.reject(new Error("timeout")) + return Promise.resolve(undefined) + }) + + await initWorkspaces() + // Flush pending promises + await vi.advanceTimersByTimeAsync(0) + + const current = get(workspaces) + expect(current).toHaveLength(1) + // Status should remain undefined since fetch failed + expect(current[0].status).toBeUndefined() + }) + + it("destroyWorkspaces cleans up listener", async () => { + const mockUnlisten = vi.fn() + mockListen.mockResolvedValue(mockUnlisten) + mockInvoke.mockImplementation((cmd: string) => { + if (cmd === "workspace_list") return Promise.resolve([]) + return Promise.resolve(undefined) + }) + + await initWorkspaces() + destroyWorkspaces() + + expect(mockUnlisten).toHaveBeenCalled() + }) + + it("polls statuses every 10 seconds", async () => { + const mockWorkspaces = [{ id: "ws-1" }] + let statusCallCount = 0 + mockInvoke.mockImplementation((cmd: string) => { + if (cmd === "workspace_list") return Promise.resolve(mockWorkspaces) + if (cmd === "workspace_status") { + statusCallCount++ + return Promise.resolve('{"state":"Running"}') + } + return Promise.resolve(undefined) + }) + + await initWorkspaces() + // Initial fetch + const initialCalls = statusCallCount + + // Advance past one poll interval + vi.advanceTimersByTime(10_000) + await vi.waitFor(() => { + expect(statusCallCount).toBeGreaterThan(initialCalls) + }) + }) + + it("destroyWorkspaces stops polling", async () => { + mockInvoke.mockImplementation((cmd: string) => { + if (cmd === "workspace_list") return Promise.resolve([{ id: "ws-1" }]) + if (cmd === "workspace_status") + return Promise.resolve('{"state":"Stopped"}') + return Promise.resolve(undefined) + }) + + await initWorkspaces() + destroyWorkspaces() + + const callsBefore = mockInvoke.mock.calls.filter( + (c: string[]) => c[0] === "workspace_status", + ).length + + vi.advanceTimersByTime(30_000) + + const callsAfter = mockInvoke.mock.calls.filter( + (c: string[]) => c[0] === "workspace_status", + ).length + expect(callsAfter).toBe(callsBefore) + }) +}) diff --git a/desktop/src/renderer/src/lib/stores/workspaces.ts b/desktop/src/renderer/src/lib/stores/workspaces.ts new file mode 100644 index 000000000..49ce23220 --- /dev/null +++ b/desktop/src/renderer/src/lib/stores/workspaces.ts @@ -0,0 +1,84 @@ +import { get, writable } from "svelte/store" +import { workspaceList, workspaceStatus } from "$lib/ipc/commands.js" +import { onWorkspacesChanged } from "$lib/ipc/events.js" +import type { UnlistenFn } from "$lib/ipc/types.js" +import type { Workspace } from "$lib/types/index.js" + +export const workspaces = writable([]) +export const workspacesLoading = writable(true) + +let unlisten: UnlistenFn | null = null +let pollInterval: ReturnType | null = null + +const STATUS_POLL_MS = 10_000 + +export async function initWorkspaces() { + workspacesLoading.set(true) + try { + const list = await workspaceList() + workspaces.set(list) + fetchStatuses(list) + } catch { + // Tauri not available (e.g. during SSR or browser preview) + } finally { + workspacesLoading.set(false) + } + + try { + unlisten = await onWorkspacesChanged((updated) => { + workspaces.set(updated) + fetchStatuses(updated) + }) + } catch { + // Event listener setup failed + } + + // Poll statuses periodically to keep dashboard and badges fresh + pollInterval = setInterval(() => { + const current = get(workspaces) + if (current.length > 0) { + fetchStatuses(current) + } + }, STATUS_POLL_MS) +} + +export function destroyWorkspaces() { + if (unlisten) { + unlisten() + unlisten = null + } + if (pollInterval) { + clearInterval(pollInterval) + pollInterval = null + } +} + +/** Fetch status for each workspace and merge into store */ +function fetchStatuses(list: Workspace[]) { + for (const ws of list) { + workspaceStatus(ws.id) + .then((raw) => { + try { + const parsed = JSON.parse(raw) as { state?: string } + if (parsed.state) { + workspaces.update((current) => + current.map((w) => + w.id === ws.id ? { ...w, status: parsed.state } : w, + ), + ) + } + } catch { + // Status response wasn't valid JSON — use raw as status + const status = raw.trim() + if (status) { + workspaces.update((current) => + current.map((w) => (w.id === ws.id ? { ...w, status } : w)), + ) + } + } + }) + .catch(() => { + // Status fetch failed — leave as-is + }) + } +} diff --git a/desktop/src/renderer/src/lib/types/index.ts b/desktop/src/renderer/src/lib/types/index.ts new file mode 100644 index 000000000..42fcfb598 --- /dev/null +++ b/desktop/src/renderer/src/lib/types/index.ts @@ -0,0 +1,132 @@ +// Types matching the Rust daemon types (camelCase) + +export interface WorkspaceSource { + gitRepository?: string + gitBranch?: string + gitCommit?: string + localFolder?: string + image?: string +} + +export interface WorkspaceIDEConfig { + name?: string + options?: Record +} + +export interface WorkspaceMachineConfig { + id?: string + autoDelete?: boolean +} + +export interface WorkspaceProviderConfig { + name?: string + options?: Record +} + +export interface Workspace { + id: string + uid?: string + picture?: string + provider?: WorkspaceProviderConfig + machine?: WorkspaceMachineConfig + ide?: WorkspaceIDEConfig + source?: WorkspaceSource + created?: string + lastUsed?: string + context?: string + status?: string +} + +export type OptionValue = string | number | boolean + +export interface ProviderSource { + github?: string + file?: string + url?: string + raw?: string +} + +export interface ProviderOptionGroup { + name?: string + options?: string[] + defaultVisible?: boolean +} + +export interface ProviderOption { + name: string + displayName?: string + description?: string + default?: OptionValue + value?: OptionValue + enum?: string[] + required?: boolean + hidden?: boolean + password?: boolean + command?: string + type?: string + group?: string +} + +export interface Provider { + name: string + version?: string + source?: ProviderSource + description?: string + options?: Record + optionGroups?: ProviderOptionGroup[] + isDefault?: boolean + state?: { + initialized?: boolean + singleMachine?: boolean + } +} + +export interface MachineProviderConfig { + name?: string +} + +export interface Machine { + id: string + provider?: MachineProviderConfig + status?: string + created?: string + lastUsed?: string +} + +export interface Context { + name: string + options?: Record +} + +export interface CommandProgress { + commandId: string + message: string + done: boolean +} + +export interface AuditEntry { + id: number + timestamp: string + action: string + resourceType: string + resourceId: string + details: string + success: boolean +} + +export interface LogEntry { + workspaceId: string + filename: string + createdAt: string + sizeBytes: number +} + +export interface SshKeyInfo { + name: string + keyType: string + fingerprint: string + comment: string + publicKey: string + path: string + hasPassphrase: boolean +} diff --git a/desktop/src/renderer/src/lib/utils.ts b/desktop/src/renderer/src/lib/utils.ts new file mode 100644 index 000000000..1865ad9f9 --- /dev/null +++ b/desktop/src/renderer/src/lib/utils.ts @@ -0,0 +1,17 @@ +import { type ClassValue, clsx } from "clsx" +import { twMerge } from "tailwind-merge" +import { tv } from "tailwind-variants" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} + +export type WithElementRef = T & { + ref?: E | null +} + +export type WithoutChildren = Omit +export type WithoutChildrenOrChild = Omit +export type WithoutChild = Omit + +export { tv } diff --git a/desktop/src/renderer/src/lib/utils/error.ts b/desktop/src/renderer/src/lib/utils/error.ts new file mode 100644 index 000000000..30a256e6e --- /dev/null +++ b/desktop/src/renderer/src/lib/utils/error.ts @@ -0,0 +1,16 @@ +/** + * Extract a human-readable message from CLI error output. + * The CLI errors contain a FATAL line with the actual message after the file reference. + * Pattern: '... FATAL : ' + * Falls back to the raw string if no FATAL line is found. + */ +export function extractErrorMessage(err: unknown): string { + const raw = err instanceof Error ? err.message : String(err) + // Match: FATAL : + const fatalMatch = raw.match(/FATAL\s+\S+:\d+\s+(.+)/i) + if (fatalMatch) return fatalMatch[1].trim() + // Fallback: try to get the last meaningful segment after 'Error:' + const parts = raw.split("Error:") + const last = parts[parts.length - 1]?.trim() + return last || raw +} diff --git a/desktop/src/renderer/src/lib/utils/log-parser.ts b/desktop/src/renderer/src/lib/utils/log-parser.ts new file mode 100644 index 000000000..1d29cdd6b --- /dev/null +++ b/desktop/src/renderer/src/lib/utils/log-parser.ts @@ -0,0 +1,126 @@ +// biome-ignore lint/suspicious/noControlCharactersInRegex: ANSI escape stripping requires matching ESC (0x1b) +const ANSI_RE = /\x1b\[[0-9;]*m/g +const BRACKET_RE = /\[0[;0-9]*m/g + +/** Strip ANSI escape codes from a string */ +export function stripAnsi(str: string): string { + return str.replace(ANSI_RE, "").replace(BRACKET_RE, "") +} + +export interface ParsedLogLine { + time: string + level: "info" | "warn" | "fatal" | "debug" | "error" | "" + message: string + source: string + origin: "cli" | "tunnel" | "" +} + +/** Try to extract an inner structured log embedded in the message field. */ +function tryParseInnerLog( + message: string, +): { level: ParsedLogLine["level"]; msg: string } | null { + // Handle raw JSON messages like {"level":"debug","msg":"..."} + if (message.startsWith("{")) { + try { + const parsed = JSON.parse(message) + if (parsed.msg) { + const level = (parsed.level?.toLowerCase() ?? + "") as ParsedLogLine["level"] + return { + level: ["info", "warn", "fatal", "debug", "error"].includes(level) + ? level + : "info", + msg: parsed.msg, + } + } + } catch { + /* not valid JSON */ + } + } + + // Pattern: ISO8601 timestamp, then DEBUG/INFO/WARN/ERROR, then source.go:NNN, then optional JSON + const match = message.match( + /^\d{4}-\d{2}-\d{2}T[^\s]+\s+(DEBUG|INFO|WARN|ERROR)\s+\S+\.\w+:\d+\s*(.*)$/, + ) + if (!match) return null + + const level = match[1].toLowerCase() as ParsedLogLine["level"] + const rest = match[2].trim() + + // Try to parse JSON payload + if (rest.startsWith("{")) { + try { + const parsed = JSON.parse(rest) + if (parsed.msg) { + return { level, msg: parsed.msg } + } + } catch { + // Not valid JSON, use rest as message + } + } + + // Non-JSON inner message + return { level, msg: rest || message } +} + +/** + * Parse a Devsy CLI log line into structured fields. + * + * Supports two formats: + * - Zap console (current): `2026-04-23T05:14:03.279-0500\tINFO\tmessage\tsource.go:NNN` + * - Legacy: `HH:MM:SS level message source.go:NNN` + * + * ANSI codes are stripped before parsing. + */ +export function parseLogLine(raw: string): ParsedLogLine { + const clean = stripAnsi(raw) + + // Zap console format (tab-separated): ISO8601\tLEVEL\tmessage\tsource.go:NNN + const zapMatch = clean.match( + /^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}[^\t]*)\t(INFO|WARN|FATAL|DEBUG|ERROR)\t(.*?)(?:\t(\S+\.\w+:\d+))?\s*$/, + ) + if (zapMatch) { + // Extract just HH:MM:SS from the ISO8601 timestamp for display + const timeMatch = zapMatch[1].match(/T(\d{2}:\d{2}:\d{2})/) + const outerLevel = zapMatch[2].toLowerCase() as ParsedLogLine["level"] + const outerMessage = zapMatch[3] + const outerSource = zapMatch[4] ?? "" + + // Check for embedded tunnel log + const inner = tryParseInnerLog(outerMessage) + if (inner) { + return { + time: timeMatch ? timeMatch[1] : zapMatch[1], + level: inner.level, + message: inner.msg, + source: outerSource, + origin: "tunnel", + } + } + + return { + time: timeMatch ? timeMatch[1] : zapMatch[1], + level: outerLevel, + message: outerMessage, + source: outerSource, + origin: "cli", + } + } + + // Legacy format (space-separated): HH:MM:SS level message source.go:NNN + const legacyMatch = clean.match( + /^(\d{1,2}:\d{2}:\d{2})\s+(info|warn|fatal|debug|error)\s+(.*?)\s+(\S+\.\w+:\d+)\s*$/, + ) + if (legacyMatch) { + return { + time: legacyMatch[1], + level: legacyMatch[2] as ParsedLogLine["level"], + message: legacyMatch[3], + source: legacyMatch[4], + origin: "cli", + } + } + + // Continuation or unstructured line + return { time: "", level: "", message: clean.trim(), source: "", origin: "" } +} diff --git a/desktop/src/renderer/src/lib/utils/time.test.ts b/desktop/src/renderer/src/lib/utils/time.test.ts new file mode 100644 index 000000000..71ddfaaca --- /dev/null +++ b/desktop/src/renderer/src/lib/utils/time.test.ts @@ -0,0 +1,81 @@ +import { afterEach, describe, expect, it, vi } from "vitest" +import { formatTimestamp, timeAgo } from "./time.js" + +describe("timeAgo", () => { + afterEach(() => { + vi.useRealTimers() + }) + + it("returns 'Unknown' for undefined input", () => { + expect(timeAgo(undefined)).toBe("Unknown") + }) + + it("returns 'Unknown' for empty string", () => { + expect(timeAgo("")).toBe("Unknown") + }) + + it("returns 'Just now' for timestamps less than a minute ago", () => { + const now = new Date().toISOString() + expect(timeAgo(now)).toBe("Just now") + }) + + it("returns minutes ago for recent timestamps", () => { + vi.useFakeTimers() + vi.setSystemTime(new Date("2026-01-15T12:30:00Z")) + expect(timeAgo("2026-01-15T12:25:00Z")).toBe("5m ago") + }) + + it("returns hours ago for timestamps within a day", () => { + vi.useFakeTimers() + vi.setSystemTime(new Date("2026-01-15T15:00:00Z")) + expect(timeAgo("2026-01-15T12:00:00Z")).toBe("3h ago") + }) + + it("returns days ago for older timestamps", () => { + vi.useFakeTimers() + vi.setSystemTime(new Date("2026-01-20T12:00:00Z")) + expect(timeAgo("2026-01-15T12:00:00Z")).toBe("5d ago") + }) + + it("handles boundary: exactly 60 minutes shows 1h", () => { + vi.useFakeTimers() + vi.setSystemTime(new Date("2026-01-15T13:00:00Z")) + expect(timeAgo("2026-01-15T12:00:00Z")).toBe("1h ago") + }) + + it("handles boundary: exactly 24 hours shows 1d", () => { + vi.useFakeTimers() + vi.setSystemTime(new Date("2026-01-16T12:00:00Z")) + expect(timeAgo("2026-01-15T12:00:00Z")).toBe("1d ago") + }) + + it("handles boundary: 59 minutes stays in minutes", () => { + vi.useFakeTimers() + vi.setSystemTime(new Date("2026-01-15T12:59:00Z")) + expect(timeAgo("2026-01-15T12:00:00Z")).toBe("59m ago") + }) + + it("handles boundary: 23 hours stays in hours", () => { + vi.useFakeTimers() + vi.setSystemTime(new Date("2026-01-15T11:00:00Z")) + expect(timeAgo("2026-01-14T12:00:00Z")).toBe("23h ago") + }) +}) + +describe("formatTimestamp", () => { + it("formats a valid ISO timestamp", () => { + const result = formatTimestamp("2026-01-15T12:00:00Z") + // Output is locale-dependent, just verify it's not the raw string + expect(result).not.toBe("2026-01-15T12:00:00Z") + expect(result.length).toBeGreaterThan(0) + }) + + it("returns the input for an invalid date string", () => { + expect(formatTimestamp("not-a-date")).toBe("Invalid Date") + }) + + it("handles empty string", () => { + const result = formatTimestamp("") + expect(typeof result).toBe("string") + }) +}) diff --git a/desktop/src/renderer/src/lib/utils/time.ts b/desktop/src/renderer/src/lib/utils/time.ts new file mode 100644 index 000000000..094f4c68e --- /dev/null +++ b/desktop/src/renderer/src/lib/utils/time.ts @@ -0,0 +1,30 @@ +export function timeAgo(timestamp?: string): string { + if (!timestamp) return "Unknown" + const diff = Date.now() - new Date(timestamp).getTime() + const minutes = Math.floor(diff / 60000) + if (minutes < 1) return "Just now" + if (minutes < 60) return `${minutes}m ago` + const hours = Math.floor(minutes / 60) + if (hours < 24) return `${hours}h ago` + const days = Math.floor(hours / 24) + return `${days}d ago` +} + +export function timeAgoMs(ts: number): string { + const diff = Date.now() - ts + const minutes = Math.floor(diff / 60000) + if (minutes < 1) return "Just now" + if (minutes < 60) return `${minutes}m ago` + const hours = Math.floor(minutes / 60) + if (hours < 24) return `${hours}h ago` + const days = Math.floor(hours / 24) + return `${days}d ago` +} + +export function formatTimestamp(ts: string): string { + try { + return new Date(ts).toLocaleString() + } catch { + return ts + } +} diff --git a/desktop/src/renderer/src/main.ts b/desktop/src/renderer/src/main.ts new file mode 100644 index 000000000..e45fba5e6 --- /dev/null +++ b/desktop/src/renderer/src/main.ts @@ -0,0 +1,8 @@ +import { mount } from "svelte" +import App from "./App.svelte" + +const app = mount(App, { + target: document.getElementById("app")!, +}) + +export default app diff --git a/desktop/src/renderer/src/pages/ContextsPage.svelte b/desktop/src/renderer/src/pages/ContextsPage.svelte new file mode 100644 index 000000000..3f777453d --- /dev/null +++ b/desktop/src/renderer/src/pages/ContextsPage.svelte @@ -0,0 +1,199 @@ + + +
    +
    +

    Contexts

    + + + {#snippet child({ props })} + + {/snippet} + + + + Create Context + Create a new context to organize your workspace configurations. + +
    { e.preventDefault(); handleCreate() }} class="space-y-4"> +
    + + (newContextName = e.currentTarget.value)} + disabled={creating} + /> +
    + + + + +
    +
    +
    +
    + + {#if $contextsLoading} +
    + {#each Array(2) as _} + + {/each} +
    + {:else if $contexts.length === 0} +
    + +

    No contexts found.

    +
    + {:else} +
    + + (searchTerm = e.currentTarget.value)} + /> +
    + {#if filteredContexts.length === 0} +
    + +

    No contexts matching "{searchTerm}"

    +
    + {:else} +
    + {#each filteredContexts as ctx (ctx.name)} + +
    + {/if} + + {/each} +
    + {/if} + {/if} + + +{#if selectedCtx} + +{/if} diff --git a/desktop/src/renderer/src/pages/DashboardPage.svelte b/desktop/src/renderer/src/pages/DashboardPage.svelte new file mode 100644 index 000000000..50aee83a3 --- /dev/null +++ b/desktop/src/renderer/src/pages/DashboardPage.svelte @@ -0,0 +1,152 @@ + + +
    +
    +

    Dashboard

    + {#if $activeContext} +

    + Context: {$activeContext} +

    + {/if} +
    + + {#if loading} +
    + {#each Array(3) as _} +
    +
    + + +
    + +
    + {/each} +
    +
    + + +
    + {:else} +
    + {#each stats as stat (stat.label)} + {@const Icon = stat.icon} + + {/each} +
    + +
    + + +
    + + {#if runningWorkspaces.length > 0} +
    +

    Active Workspaces

    +
    + {#each runningWorkspaces as ws (ws.id)} +
    +
    + +
    + + +
    +
    +
    + {#if ws.provider?.name} + {ws.provider.name} + {/if} + {ws.status} +
    +
    + {/each} +
    +
    + {/if} + {/if} +
    diff --git a/desktop/src/renderer/src/pages/MachineDetailPage.svelte b/desktop/src/renderer/src/pages/MachineDetailPage.svelte new file mode 100644 index 000000000..a48de9962 --- /dev/null +++ b/desktop/src/renderer/src/pages/MachineDetailPage.svelte @@ -0,0 +1,272 @@ + + +
    +
    + +

    {id}

    + {#if status} + {status} + {/if} + {#if polling} + updating... + {/if} +
    + + {#if machine} +
    + {#if isStopped} + + {/if} + {#if isRunning} + + {/if} + + + + + {#snippet child({ props })} + + {/snippet} + + + (confirmForceDeleteOpen = true)} + disabled={polling} + > + + Force Delete + + + +
    + {/if} + + + + {#if !machine} +

    Machine not found.

    + {:else} + + + Details + Activity + + + +
    +
    ID
    +
    {machine.id}
    + +
    Provider
    +
    {machine.provider?.name ?? "N/A"}
    + +
    Status
    +
    {status ?? machine.status ?? "Unknown"}
    + +
    Created
    +
    {machine.created ? formatTimestamp(machine.created) : "N/A"}
    + +
    Last Used
    +
    {machine.lastUsed ? formatTimestamp(machine.lastUsed) : "N/A"}
    +
    +
    + + +
    + {#if auditLoading} +
    + {#each { length: 5 } as _} +
    + + + +
    + {/each} +
    + {:else if auditEntries.length === 0} +

    + No activity recorded for this machine. +

    + {:else} + +
    + {#each auditEntries as entry} +
    + + {entry.action} + +
    + {#if entry.details} + {entry.details} + {/if} +
    + + {formatTimestamp(entry.timestamp)} + +
    + {/each} +
    +
    + {/if} +
    +
    +
    + {/if} +
    + + handleDelete(false)} +/> + + handleDelete(true)} +/> diff --git a/desktop/src/renderer/src/pages/MachinesPage.svelte b/desktop/src/renderer/src/pages/MachinesPage.svelte new file mode 100644 index 000000000..74e288c12 --- /dev/null +++ b/desktop/src/renderer/src/pages/MachinesPage.svelte @@ -0,0 +1,104 @@ + + +
    +
    +

    Machines

    +
    + +
    + (search = e.currentTarget.value)} + class="flex-1" + /> + + + {#snippet child({ props })} + + {/snippet} + + + + + Name + + + Newest + + + + +
    + + {#if $machinesLoading} +
    + {#each Array(3) as _} + + {/each} +
    + {:else if filtered.length === 0} +
    + {#if search} + +

    No machines match your search.

    + {:else} + +

    No machines yet.

    +

    + Machines are created automatically when you start a workspace with a provider that supports them. +

    + {/if} +
    + {:else} +
    + {#each filtered as machine (machine.id)} + + {/each} +
    + {/if} +
    diff --git a/desktop/src/renderer/src/pages/NotFoundPage.svelte b/desktop/src/renderer/src/pages/NotFoundPage.svelte new file mode 100644 index 000000000..ec1f688a8 --- /dev/null +++ b/desktop/src/renderer/src/pages/NotFoundPage.svelte @@ -0,0 +1,17 @@ + + +
    +
    + +

    404

    +

    Page not found

    +
    + + +
    +
    +
    diff --git a/desktop/src/renderer/src/pages/ProviderAddPage.svelte b/desktop/src/renderer/src/pages/ProviderAddPage.svelte new file mode 100644 index 000000000..9e093738e --- /dev/null +++ b/desktop/src/renderer/src/pages/ProviderAddPage.svelte @@ -0,0 +1,211 @@ + + +
    +
    + +

    Add Provider

    +
    + +
    { e.preventDefault(); handleSubmit() }}> + {#if error} +
    {error}
    + {/if} + +
    + + { providerSource = e.currentTarget.value; error = "" }} + /> +
    +
    + + (customName = e.currentTarget.value)} + /> +
    + + +
    + + {#if pendingSource} +
    +

    + Provider "{pendingSource}" already exists. Choose a different name: +

    +
    { e.preventDefault(); handleConfirmName() }}> +
    + + (pendingName = e.currentTarget.value)} + /> +
    + + +
    +
    + {/if} + +
    +

    Providers

    +
    + {#each PROVIDERS as p (p.name)} + + {/each} +
    +
    +
    diff --git a/desktop/src/renderer/src/pages/ProviderDetailPage.svelte b/desktop/src/renderer/src/pages/ProviderDetailPage.svelte new file mode 100644 index 000000000..24448e048 --- /dev/null +++ b/desktop/src/renderer/src/pages/ProviderDetailPage.svelte @@ -0,0 +1,328 @@ + + +
    +
    + + +

    {id}

    + {#if provider?.version} + {provider.version} + {/if} + {#if provider?.state?.initialized} + initialized + {/if} +
    + + {#if provider} +
    + {#if !isInitialized} + + {:else} + + {/if} + + +
    + {/if} + + {#if !provider} +

    Provider not found.

    + {:else} + {#if isSetup && !loading && hasUnfilledRequired} +
    +

    Configure required options

    +

    + This provider needs configuration before it can be used. + Fill in the required fields below and save. +

    +
    + {:else if !isInitialized && !loading} + + + Provider not initialized + + This provider needs to be initialized before it can create workspaces. + + + + {/if} + + {#if provider.description} +

    {provider.description}

    + {/if} + + + +
    +

    + {isSetup ? "Configure Provider" : "Options"} +

    + + {#if loading} +
    + {#each { length: 4 } as _} +
    + + +
    + {/each} + +
    + {:else if Object.keys(options).length === 0} +

    No configurable options available.

    + {:else} + {#each Object.entries(groupedOptions) as [group, entries] (group)} + {#if group} +

    + {group} +

    + {/if} + +
    + {#each entries as [key, opt] (key)} +
    + + {#if opt.description} +

    {opt.description}

    + {/if} + {#if opt.enum && opt.enum.length > 0} + (optionValues[key] = v)} + > + + {optionValues[key] || "-- Select --"} + + + {#each opt.enum as enumVal} + + {/each} + + + {:else} + (optionValues[key] = e.currentTarget.value)} + /> + {/if} +
    + {/each} +
    + {/each} + +
    + + {#if isSetup && !hasUnfilledRequired} + + {:else if isDirty} + + Unsaved changes + {/if} +
    + {/if} +
    + {/if} +
    + + diff --git a/desktop/src/renderer/src/pages/ProvidersPage.svelte b/desktop/src/renderer/src/pages/ProvidersPage.svelte new file mode 100644 index 000000000..dd63e046c --- /dev/null +++ b/desktop/src/renderer/src/pages/ProvidersPage.svelte @@ -0,0 +1,137 @@ + + +
    +
    +

    Providers

    + +
    + +
    + (search = e.currentTarget.value)} + class="flex-1" + /> + + + {#snippet child({ props })} + + {/snippet} + + + + + Name + + + Version + + + + +
    + + {#if $providersLoading} +
    + {#each Array(3) as _} + + {/each} +
    + {:else if filtered.length === 0} +
    + {#if search} + +

    No providers match your search.

    + {:else} + +

    No providers configured yet.

    + + {/if} +
    + {:else} +
    + {#each filtered as provider (provider.name)} + + {/each} +
    + {/if} +
    + +{#if setupProvider} + { setupProviderName = null }} + /> +{/if} diff --git a/desktop/src/renderer/src/pages/SettingsPage.svelte b/desktop/src/renderer/src/pages/SettingsPage.svelte new file mode 100644 index 000000000..edf2efed5 --- /dev/null +++ b/desktop/src/renderer/src/pages/SettingsPage.svelte @@ -0,0 +1,484 @@ + + +
    +

    Settings

    + + + + General + Appearance + Experimental + + + + + {#if loading} +
    + +
    +
    + + +
    + +
    + + +
    + + + +
    + + + + + + + +
    + + +
    +
    + + +
    +
    + {:else} +
    +
    +
    + +

    Run all commands with --debug flag

    +
    + toggleLocal("debugFlag")} disabled={loading || saving} /> +
    + +
    + +

    Path to SSH key for signing Git commits

    + (local.sshKeyPath = e.currentTarget.value)} + onblur={() => saveLocal("sshKeyPath", local.sshKeyPath)} + disabled={loading || saving} + /> +
    + + + +
    +

    Proxy Configuration

    +
    + + (local.httpProxy = e.currentTarget.value)} + onblur={() => saveLocal("httpProxy", local.httpProxy)} + disabled={loading || saving} + /> +
    +
    + + (local.httpsProxy = e.currentTarget.value)} + onblur={() => saveLocal("httpsProxy", local.httpsProxy)} + disabled={loading || saving} + /> +
    +
    + + (local.noProxy = e.currentTarget.value)} + onblur={() => saveLocal("noProxy", local.noProxy)} + disabled={loading || saving} + /> +
    +
    + + + +

    Updates

    + +
    +
    + +

    Download and install new Devsy versions in background

    +
    + setAutoUpdate(v)} /> +
    + +
    + + {#if cliVersion} +

    Devsy CLI: {cliVersion}

    + {:else} +

    Version information not available

    + {/if} +
    + +
    + +

    Install a specific Devsy CLI version. Useful for downgrading if a newer version introduced issues.

    +
    + (targetVersion = e.currentTarget.value)} + onkeydown={(e) => { if (e.key === "Enter") handleUpgrade() }} + disabled={upgrading} + class="max-w-48 font-mono" + /> + +
    + {#if upgradeResult} +
    +

    + Switched to {upgradeResult}. Restart the application to use the new version. +

    +
    + {/if} +
    + + + +
    +

    Keyboard Shortcuts

    +
    + {#each shortcuts as shortcut} +
    + {shortcut.action} + {shortcut.keys} +
    + {/each} +
    +
    + +
    + {/if} +
    + + + +
    +
    +

    Theme

    +
    + {#each THEMES as t (t.value)} + + {/each} +
    +
    + + + +
    +

    Color Scheme

    +
    + {#each COLOR_SCHEMES as c (c.value)} + + {/each} +
    +
    + + + +
    +

    UI Scale

    +

    Adjust the overall size of text and interface elements

    +
    + {#each UI_SCALES as s (s.value)} + + {/each} +
    +
    + +
    +
    + + + +
    +
    +

    + Experimental features may be unstable. Use at your own risk. +

    +
    + +
    +
    + +

    Check for multiple devcontainers when creating workspaces. May take longer for larger repos.

    +
    + toggleLocal("experimentalMultiDevcontainer")} disabled={loading || saving} /> +
    + + + +
    + +

    Append custom flags to all Devsy CLI commands

    + (local.additionalCliFlags = e.currentTarget.value)} + onblur={() => saveLocal("additionalCliFlags", local.additionalCliFlags)} + disabled={loading || saving} + /> +
    + +
    + +

    Comma-separated environment variables passed to Devsy commands

    + (local.additionalEnvVars = e.currentTarget.value)} + onblur={() => saveLocal("additionalEnvVars", local.additionalEnvVars)} + disabled={loading || saving} + /> +
    +
    +
    +
    +
    diff --git a/desktop/src/renderer/src/pages/SshKeysPage.svelte b/desktop/src/renderer/src/pages/SshKeysPage.svelte new file mode 100644 index 000000000..ab665439d --- /dev/null +++ b/desktop/src/renderer/src/pages/SshKeysPage.svelte @@ -0,0 +1,212 @@ + + +
    +
    +

    SSH Keys

    + +
    + + {#if showGenerate} +
    +

    Generate New SSH Key

    + + {#if generateError} +
    + {generateError} +
    + {/if} + +
    +
    + + (newKeyName = e.currentTarget.value)} + /> +
    +
    + + + + + {newKeyType === "ed25519" ? "Ed25519 (recommended)" : newKeyType === "rsa" ? "RSA (4096-bit)" : "ECDSA"} + + + + + + + + +
    +
    + +
    + + (newKeyComment = e.currentTarget.value)} + /> +
    + +
    + + +
    +
    + {/if} + + + + {#if loading} +
    + {#each Array(2) as _} + + {/each} +
    + {:else if keys.length === 0} +
    + +

    No SSH keys found in ~/.ssh

    + +
    + {:else} + +
    + {#each keys as key (key.name)} +
    + +
    +
    + {key.name} + {key.keyType} + {#if key.hasPassphrase} + + {:else} + + {/if} +
    + {#if key.comment} +

    {key.comment}

    + {/if} + {#if key.fingerprint} +

    + {key.fingerprint} +

    + {/if} +

    {key.path}

    +
    + +
    + {/each} +
    +
    + +

    + {keys.length} key{keys.length === 1 ? "" : "s"} found. + Keys with have a passphrase. + Keys with do not. +

    + {/if} +
    diff --git a/desktop/src/renderer/src/pages/TerminalsPage.svelte b/desktop/src/renderer/src/pages/TerminalsPage.svelte new file mode 100644 index 000000000..a60e45c52 --- /dev/null +++ b/desktop/src/renderer/src/pages/TerminalsPage.svelte @@ -0,0 +1,248 @@ + + +
    + +
    + +
    + {#each $terminals as session (session.id)} + + + {/each} +
    + + + + +
    + + + {#if runningWorkspaces.length > 0} + + + {#snippet child({ props })} + + {/snippet} + + + Running Workspaces + + {#each runningWorkspaces as ws (ws.id)} + createSsh(ws.id)}> + + {ws.id} + + {/each} + + + {/if} +
    +
    + + + {#if $terminals.length > 0} +
    + {#each $terminals as session (session.id)} +
    + +
    + {/each} +
    + {:else} +
    +
    +
    + +
    +
    +

    No active terminals

    +

    Open a local shell or SSH into a running workspace to get started

    +
    +
    + + {#if runningWorkspaces.length > 0} + + + {#snippet child({ props })} + + {/snippet} + + + Running Workspaces + + {#each runningWorkspaces as ws (ws.id)} + createSsh(ws.id)}> + + {ws.id} + + {/each} + + + {/if} +
    +
    +
    + {/if} +
    diff --git a/desktop/src/renderer/src/pages/WorkspaceDetailPage.svelte b/desktop/src/renderer/src/pages/WorkspaceDetailPage.svelte new file mode 100644 index 000000000..2c6c8b3e5 --- /dev/null +++ b/desktop/src/renderer/src/pages/WorkspaceDetailPage.svelte @@ -0,0 +1,702 @@ + + +
    +
    + +

    {id}

    + {#if workspace?.provider?.name} + {workspace.provider.name} + {/if} + {#if workspace?.status} + {workspace.status} + {/if} +
    + + {#if workspace} + + {#if isRunning || isBusy} + + {:else} + + {/if} + + + {#if sshSessionId && !sshExited} + + {:else} + + {/if} + + + + {#snippet child({ props })} + + {/snippet} + + + + + Rebuild + + + + Reset + + + (confirmDeleteOpen = true)} + disabled={operationRunning} + > + + Delete + + + + + {/if} + + + + {#if !workspace} +

    Workspace not found.

    + {:else} + + + Overview + Logs + Terminal + + + +
    +
    ID
    +
    {workspace.id}
    + +
    UID
    +
    {workspace.uid ?? "N/A"}
    + +
    Provider
    +
    {workspace.provider?.name ?? "N/A"}
    + +
    Machine
    +
    {workspace.machine?.id ?? "N/A"}
    + +
    IDE
    +
    + + + {#snippet child({ props })} + + {/snippet} + + + + + + No IDE found. + + {#each filteredIdes as ide (ide.value)} + { + selectedIde = ide.value + ideComboOpen = false + ideSearch = "" + }} + > + + {ide.label} + + {/each} + + + + + +
    + +
    Source
    +
    + {workspace.source?.gitRepository + ?? workspace.source?.localFolder + ?? workspace.source?.image + ?? "N/A"} +
    + + {#if workspace.source?.gitBranch} +
    Branch
    +
    {workspace.source.gitBranch}
    + {/if} + +
    Status
    +
    {workspace.status ?? "Unknown"}
    + +
    Created
    +
    {workspace.created ? formatTimestamp(workspace.created) : "N/A"}
    + +
    Last Used
    +
    {workspace.lastUsed ? formatTimestamp(workspace.lastUsed) : "N/A"}
    + +
    Context
    +
    {workspace.context ?? "N/A"}
    +
    +
    + + +
    + + + + Live Output + {#if outputLines.length > 0} + ({outputLines.length} lines) + {/if} + {#if operationRunning} + streaming... + {/if} + + + {#if outputLines.length > 0} +
    + + + {#snippet child({ props })} + + {/snippet} + + Copy output + +
    + {/if} +
    + {#if outputLines.length === 0} +
    +

    + {operationRunning ? "Waiting for output..." : "No output yet. Run an operation to see live output."} +

    +
    + {:else} + +
    + {/if} +
    +
    +
    + + + + Log Files + {#if logEntries.length > 0} + ({logEntries.length} files) + {/if} + + + {#if logsLoading} +
    +
    + {#each { length: 4 } as _} + + {/each} +
    +
    + {:else if logEntries.length === 0} +

    No log files found for this workspace.

    + {:else} + + {#each logEntries as entry (entry.filename)} + +
    + viewLog(entry)}> + {entry.filename} + {Math.round(entry.sizeBytes / 1024)}KB + +
    + {#if selectedLog === entry.filename && logContent} + + + {#snippet child({ props })} + + {/snippet} + + Copy log + + {/if} + + + {#snippet child({ props })} + + {/snippet} + + Delete log + +
    +
    + +
    + {#if selectedLog === entry.filename} + + {:else} +

    Loading...

    + {/if} +
    +
    +
    + {/each} +
    + {/if} +
    +
    +
    +
    +
    + + +
    + {#if sshSessionId} +
    + {#if sshConnectionFailed} +
    +
    + +

    SSH connection failed

    +

    The workspace may not be running or the SSH server is not available.

    +
    +
    + {:else} + + {/if} +
    + {#if sshExited} +
    + {sshConnectionFailed ? "Connection failed" : "Session ended"} + + +
    + {/if} + {:else} +
    +
    +

    No active terminal session.

    + +
    +
    + {/if} +
    +
    + +
    + {/if} +
    + + diff --git a/desktop/src/renderer/src/pages/WorkspacesPage.svelte b/desktop/src/renderer/src/pages/WorkspacesPage.svelte new file mode 100644 index 000000000..ded06a61e --- /dev/null +++ b/desktop/src/renderer/src/pages/WorkspacesPage.svelte @@ -0,0 +1,280 @@ + + +
    +
    +

    Workspaces

    + +
    + +
    + (search = e.currentTarget.value)} + class="flex-1" + /> + + + {#snippet child({ props })} + + {/snippet} + + + + + Recent + + + Name + + + + +
    + + {#if $workspacesLoading} + + {:else if filtered.length === 0} +
    + {#if search} + +

    No workspaces match your search.

    + {:else} + +

    No workspaces yet.

    + + {/if} +
    + {:else} +
    + + + + Name + Provider + IDE + Status + Last Used + + + + + {#each filtered as ws (ws.id)} + {@const busy = actingOn === ws.id} + goto(`/workspaces/${ws.id}`)} + > + {ws.id} + + {#if ws.provider?.name} + {ws.provider.name} + {/if} + + + {#if ws.ide?.name} + {ws.ide.name} + {/if} + + + {#if ws.status} + {ws.status} + {/if} + + {timeAgo(ws.lastUsed)} + + e.stopPropagation()}> + + + {#snippet child({ props })} + + {/snippet} + + + {#if isRunning(ws)} + goto(`/workspaces/${ws.id}?action=open-ide`)}> + + Open IDE + + handleStop(ws)} disabled={busy}> + + Stop + + {:else if isStopped(ws)} + handleStart(ws)} disabled={busy}> + + Start + + {/if} + + { confirmDeleteId = ws.id; confirmDeleteOpen = true }} + disabled={busy} + > + + Delete + + + + + + {/each} + + +
    + {/if} +
    + + + + diff --git a/desktop/src/renderer/tsconfig.json b/desktop/src/renderer/tsconfig.json new file mode 100644 index 000000000..eac2032cf --- /dev/null +++ b/desktop/src/renderer/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "bundler", + "module": "ESNext", + "target": "ESNext", + "verbatimModuleSyntax": false, + "types": ["vite/client"], + "paths": { + "$lib/*": ["./src/lib/*"] + } + }, + "include": ["src/**/*.ts", "src/**/*.svelte"] +} diff --git a/desktop/src/routes.constants.ts b/desktop/src/routes.constants.ts deleted file mode 100644 index 0997bdfc8..000000000 --- a/desktop/src/routes.constants.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { Params, Path } from "react-router-dom" -import { TActionID } from "./contexts" -import { TProInstanceDetail, exists } from "./lib" -import { TProviderID, TSupportedIDE, TWorkspaceID } from "./types" - -export const Routes = { - ROOT: "/", - SETTINGS: "/settings", - WORKSPACES: "/workspaces", - ACTIONS: "/actions", - get ACTION(): string { - return `${Routes.ACTIONS}/:action` - }, - get WORKSPACE_CREATE(): string { - return `${Routes.WORKSPACES}/new` - }, - toWorkspaceCreate( - options: Readonly<{ - workspaceID: TWorkspaceID | null - providerID: TProviderID | null - ide: string | null - rawSource: string | null - }> - ): Partial { - const searchParams = new URLSearchParams() - for (const [key, value] of Object.entries(options)) { - if (exists(value)) { - searchParams.set(key, value) - } - } - - return { - pathname: Routes.WORKSPACE_CREATE, - search: searchParams.toString(), - } - }, - toAction(actionID: TActionID, onSuccess?: string): string { - if (onSuccess) { - return `${Routes.ACTIONS}/${actionID}?onSuccess=${encodeURIComponent(onSuccess)}` - } - - return `${Routes.ACTIONS}/${actionID}` - }, - getActionID(params: Params): string | undefined { - // Needs to match `:action` from detail route exactly! - return params["action"] - }, - getWorkspaceCreateParamsFromSearchParams(searchParams: URLSearchParams): Partial< - Readonly<{ - workspaceID: TWorkspaceID - providerID: TProviderID - ide: TSupportedIDE - rawSource: string - }> - > { - return { - workspaceID: searchParams.get("workspaceID") ?? undefined, - providerID: searchParams.get("providerID") ?? undefined, - ide: (searchParams.get("ide") as TSupportedIDE | null) ?? undefined, - rawSource: searchParams.get("rawSource") ?? undefined, - } - }, - PROVIDERS: "/providers", - get PROVIDER(): string { - return `${Routes.PROVIDERS}/:provider` - }, - toProvider(providerID: string): string { - return `${Routes.PROVIDERS}/${providerID}` - }, - getProviderId(params: Params): string | undefined { - // Needs to match `:provider` from detail route exactly! - return params["provider"] - }, - PRO: "/pro", - PRO_INSTANCE: "/pro/:host", - PRO_WORKSPACE: "/pro/:host/:workspace", - PRO_WORKSPACE_SELECT_PRESET: "/pro/:host/select-preset", - PRO_WORKSPACE_CREATE: "/pro/:host/new", - PRO_SETTINGS: "/pro/:host/user/settings", - PRO_CREDENTIALS: "/pro/:host/user/credentials", - PRO_PROFILE: "/pro/:host/user/profile", - toProInstance(host: string): string { - return `/pro/${host}` - }, - toProWorkspace(host: string, instanceID: string): string { - const base = this.toProInstance(host) - - return `${base}/${instanceID}` - }, - toProWorkspaceCreate(host: string, fromPreset?: string): string { - const base = this.toProInstance(host) - - return `${base}/new${fromPreset ? `?fromPreset=${fromPreset}` : ""}` - }, - toProSelectPreset(host: string): string { - const base = this.toProInstance(host) - - return `${base}/select-preset` - }, - toProWorkspaceDetail(host: string, instanceID: string, detail: TProInstanceDetail): string { - const base = this.toProInstance(host) - - return `${base}/${instanceID}?tab=${detail}` - }, - toProSettings(host: string): string { - const base = this.toProInstance(host) - - return `${base}/user/settings` - }, - toProCredentials(host: string): string { - const base = this.toProInstance(host) - - return `${base}/user/credentials` - }, - toProProfile(host: string): string { - const base = this.toProInstance(host) - - return `${base}/user/profile` - }, - getProWorkspaceDetailsParams( - searchParams: URLSearchParams - ): Partial> { - return { tab: searchParams.get("tab") as TProInstanceDetail | null } - }, -} as const diff --git a/desktop/src/routes.tsx b/desktop/src/routes.tsx deleted file mode 100644 index 9371d8150..000000000 --- a/desktop/src/routes.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import { createBrowserRouter } from "react-router-dom" -import { App, ErrorPage } from "./App" -import { ProRoot } from "./ProRoot" -import { Routes } from "./routes.constants" -import { Actions, Pro, Providers, Settings, Workspaces } from "./views" - -export const router = createBrowserRouter([ - { - path: Routes.ROOT, - element: , - errorElement: , - children: [ - { - path: Routes.PRO, - element: , - children: [ - { - path: Routes.PRO_INSTANCE, - element: , - children: [ - { - index: true, - element: , - }, - { - path: Routes.PRO_WORKSPACE, - element: , - }, - { - path: Routes.PRO_WORKSPACE_CREATE, - element: , - }, - { - path: Routes.PRO_WORKSPACE_SELECT_PRESET, - element: , - }, - { path: Routes.PRO_SETTINGS, element: }, - { path: Routes.PRO_CREDENTIALS, element: }, - { path: Routes.PRO_PROFILE, element: }, - ], - }, - ], - }, - { - path: Routes.WORKSPACES, - element: , - children: [ - { - index: true, - element: , - }, - { - path: Routes.WORKSPACE_CREATE, - element: , - }, - ], - }, - { - path: Routes.PROVIDERS, - element: , - children: [ - { index: true, element: }, - { - path: Routes.PROVIDER, - element: , - }, - ], - }, - { - path: Routes.ACTIONS, - element: , - children: [{ path: Routes.ACTION, element: }], - }, - { path: Routes.SETTINGS, element: }, - ], - }, -]) diff --git a/desktop/src/runner.ts b/desktop/src/runner.ts deleted file mode 100644 index fed746402..000000000 --- a/desktop/src/runner.ts +++ /dev/null @@ -1,609 +0,0 @@ -import { V1Affinity } from "@devsy/client/gen/models/V1Affinity" -import { V1Container } from "@devsy/client/gen/models/V1Container" -import { V1EnvFromSource } from "@devsy/client/gen/models/V1EnvFromSource" -import { V1EnvVar } from "@devsy/client/gen/models/V1EnvVar" -import { V1HostAlias } from "@devsy/client/gen/models/V1HostAlias" -import { V1ObjectMeta } from "@devsy/client/gen/models/V1ObjectMeta" -import { V1ResourceRequirements } from "@devsy/client/gen/models/V1ResourceRequirements" -import { V1Toleration } from "@devsy/client/gen/models/V1Toleration" -import { V1Volume } from "@devsy/client/gen/models/V1Volume" -import { V1VolumeMount } from "@devsy/client/gen/models/V1VolumeMount" -import { StorageV1Condition } from "@devsy/client/gen/models/agentstorageV1Condition" -import { StorageV1Access } from "@devsy/client/gen/models/storageV1Access" -import { StorageV1TemplateMetadata } from "@devsy/client/gen/models/storageV1TemplateMetadata" -import { StorageV1UserOrTeam } from "@devsy/client/gen/models/storageV1UserOrTeam" - -/** - * Runner holds the Runner information - */ -export class ManagementV1Runner { - /** - * APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources - */ - "apiVersion"?: string - /** - * Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds - */ - "kind"?: string - "metadata"?: V1ObjectMeta - "spec"?: ManagementV1RunnerSpec - "status"?: ManagementV1RunnerStatus - - static readonly discriminator: string | undefined = undefined - - static readonly attributeTypeMap: Array<{ - name: string - baseName: string - type: string - format: string - }> = [ - { - name: "apiVersion", - baseName: "apiVersion", - type: "string", - format: "", - }, - { - name: "kind", - baseName: "kind", - type: "string", - format: "", - }, - { - name: "metadata", - baseName: "metadata", - type: "V1ObjectMeta", - format: "", - }, - { - name: "spec", - baseName: "spec", - type: "ManagementV1RunnerSpec", - format: "", - }, - { - name: "status", - baseName: "status", - type: "ManagementV1RunnerStatus", - format: "", - }, - ] - - static getAttributeTypeMap() { - return ManagementV1Runner.attributeTypeMap - } - - public constructor() {} -} - -/** - * RunnerSpec holds the specification - */ -export class ManagementV1RunnerSpec { - /** - * Access holds the access rights for users and teams - */ - "access"?: Array - "clusterRef"?: StorageV1RunnerClusterRef - /** - * Description describes a cluster access object - */ - "description"?: string - /** - * The display name shown in the UI - */ - "displayName"?: string - /** - * Endpoint is the hostname used to connect directly to the runner - */ - "endpoint"?: string - /** - * NetworkPeerName is the network peer name used to connect directly to the runner - */ - "networkPeerName"?: string - "owner"?: StorageV1UserOrTeam - /** - * If unusable is true, no Devsy workspaces can be scheduled on this runner. - */ - "unusable"?: boolean - - static readonly discriminator: string | undefined = undefined - - static readonly attributeTypeMap: Array<{ - name: string - baseName: string - type: string - format: string - }> = [ - { - name: "access", - baseName: "access", - type: "Array", - format: "", - }, - { - name: "clusterRef", - baseName: "clusterRef", - type: "StorageV1RunnerClusterRef", - format: "", - }, - { - name: "description", - baseName: "description", - type: "string", - format: "", - }, - { - name: "displayName", - baseName: "displayName", - type: "string", - format: "", - }, - { - name: "endpoint", - baseName: "endpoint", - type: "string", - format: "", - }, - { - name: "networkPeerName", - baseName: "networkPeerName", - type: "string", - format: "", - }, - { - name: "owner", - baseName: "owner", - type: "StorageV1UserOrTeam", - format: "", - }, - { - name: "unusable", - baseName: "unusable", - type: "boolean", - format: "", - }, - ] - - static getAttributeTypeMap() { - return ManagementV1RunnerSpec.attributeTypeMap - } - - public constructor() {} -} - -/** - * RunnerStatus holds the status - */ -export class ManagementV1RunnerStatus { - /** - * Conditions holds several conditions the virtual cluster might be in - */ - "conditions"?: Array - /** - * Message describes the reason in human-readable form - */ - "message"?: string - /** - * Phase describes the current phase the space instance is in - */ - "phase"?: string - /** - * Reason describes the reason in machine-readable form - */ - "reason"?: string - - static readonly discriminator: string | undefined = undefined - - static readonly attributeTypeMap: Array<{ - name: string - baseName: string - type: string - format: string - }> = [ - { - name: "conditions", - baseName: "conditions", - type: "Array", - format: "", - }, - { - name: "message", - baseName: "message", - type: "string", - format: "", - }, - { - name: "phase", - baseName: "phase", - type: "string", - format: "", - }, - { - name: "reason", - baseName: "reason", - type: "string", - format: "", - }, - ] - - static getAttributeTypeMap() { - return ManagementV1RunnerStatus.attributeTypeMap - } - - public constructor() {} -} - -export class StorageV1RunnerClusterRef { - /** - * Cluster is the connected cluster the space will be created in - */ - "cluster"?: string - /** - * Namespace is the namespace inside the connected cluster holding the space - */ - "namespace"?: string - "persistentVolumeClaimTemplate"?: StorageV1RunnerPersistentVolumeClaimTemplate - "podTemplate"?: StorageV1RunnerPodTemplate - "serviceTemplate"?: StorageV1RunnerServiceTemplate - - static readonly discriminator: string | undefined = undefined - - static readonly attributeTypeMap: Array<{ - name: string - baseName: string - type: string - format: string - }> = [ - { - name: "cluster", - baseName: "cluster", - type: "string", - format: "", - }, - { - name: "namespace", - baseName: "namespace", - type: "string", - format: "", - }, - { - name: "persistentVolumeClaimTemplate", - baseName: "persistentVolumeClaimTemplate", - type: "StorageV1RunnerPersistentVolumeClaimTemplate", - format: "", - }, - { - name: "podTemplate", - baseName: "podTemplate", - type: "StorageV1RunnerPodTemplate", - format: "", - }, - { - name: "serviceTemplate", - baseName: "serviceTemplate", - type: "StorageV1RunnerServiceTemplate", - format: "", - }, - ] - - static getAttributeTypeMap() { - return StorageV1RunnerClusterRef.attributeTypeMap - } - - public constructor() {} -} - -export class StorageV1RunnerPodTemplate { - "metadata"?: StorageV1TemplateMetadata - "spec"?: StorageV1RunnerPodTemplateSpec - - static readonly discriminator: string | undefined = undefined - - static readonly attributeTypeMap: Array<{ - name: string - baseName: string - type: string - format: string - }> = [ - { - name: "metadata", - baseName: "metadata", - type: "StorageV1TemplateMetadata", - format: "", - }, - { - name: "spec", - baseName: "spec", - type: "StorageV1RunnerPodTemplateSpec", - format: "", - }, - ] - - static getAttributeTypeMap() { - return StorageV1RunnerPodTemplate.attributeTypeMap - } - - public constructor() {} -} - -export class StorageV1RunnerPersistentVolumeClaimTemplateSpec { - /** - * accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 - */ - "accessModes"?: Array - /** - * storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 - */ - "storageClassName"?: string - /** - * storageSize is the size of the storage to reserve for the pvc - */ - "storageSize"?: string - - static readonly discriminator: string | undefined = undefined - - static readonly attributeTypeMap: Array<{ - name: string - baseName: string - type: string - format: string - }> = [ - { - name: "accessModes", - baseName: "accessModes", - type: "Array", - format: "", - }, - { - name: "storageClassName", - baseName: "storageClassName", - type: "string", - format: "", - }, - { - name: "storageSize", - baseName: "storageSize", - type: "string", - format: "", - }, - ] - - static getAttributeTypeMap() { - return StorageV1RunnerPersistentVolumeClaimTemplateSpec.attributeTypeMap - } - - public constructor() {} -} - -export enum EStorageV1RunnerPersistentVolumeClaimTemplateSpecAccessModes { - ReadOnlyMany = "ReadOnlyMany", - ReadWriteMany = "ReadWriteMany", - ReadWriteOnce = "ReadWriteOnce", - ReadWriteOncePod = "ReadWriteOncePod", -} - -export class StorageV1RunnerPodTemplateSpec { - "affinity"?: V1Affinity - /** - * List of environment variables to set in the container. Cannot be updated. - */ - "env"?: Array - /** - * List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. - */ - "envFrom"?: Array - /** - * Set host aliases for the Runner Pod - */ - "hostAliases"?: Array - /** - * Runner pod image to use other than default - */ - "image"?: string - /** - * Set up Init Containers for the Runner - */ - "initContainers"?: Array - /** - * Set the NodeSelector for the Runner Pod - */ - "nodeSelector"?: { [key: string]: string } - "resource"?: V1ResourceRequirements - /** - * Set the Tolerations for the Runner Pod - */ - "tolerations"?: Array - /** - * Set Volume Mounts for the Runner Pod - */ - "volumeMounts"?: Array - /** - * Set Volumes for the Runner Pod - */ - "volumes"?: Array - - static readonly discriminator: string | undefined = undefined - - static readonly attributeTypeMap: Array<{ - name: string - baseName: string - type: string - format: string - }> = [ - { - name: "affinity", - baseName: "affinity", - type: "V1Affinity", - format: "", - }, - { - name: "env", - baseName: "env", - type: "Array", - format: "", - }, - { - name: "envFrom", - baseName: "envFrom", - type: "Array", - format: "", - }, - { - name: "hostAliases", - baseName: "hostAliases", - type: "Array", - format: "", - }, - { - name: "image", - baseName: "image", - type: "string", - format: "", - }, - { - name: "initContainers", - baseName: "initContainers", - type: "Array", - format: "", - }, - { - name: "nodeSelector", - baseName: "nodeSelector", - type: "{ [key: string]: string; }", - format: "", - }, - { - name: "resource", - baseName: "resource", - type: "V1ResourceRequirements", - format: "", - }, - { - name: "tolerations", - baseName: "tolerations", - type: "Array", - format: "", - }, - { - name: "volumeMounts", - baseName: "volumeMounts", - type: "Array", - format: "", - }, - { - name: "volumes", - baseName: "volumes", - type: "Array", - format: "", - }, - ] - - static getAttributeTypeMap() { - return StorageV1RunnerPodTemplateSpec.attributeTypeMap - } - - public constructor() {} -} - -export class StorageV1RunnerPersistentVolumeClaimTemplate { - "metadata"?: StorageV1TemplateMetadata - "spec"?: StorageV1RunnerPersistentVolumeClaimTemplateSpec - - static readonly discriminator: string | undefined = undefined - - static readonly attributeTypeMap: Array<{ - name: string - baseName: string - type: string - format: string - }> = [ - { - name: "metadata", - baseName: "metadata", - type: "StorageV1TemplateMetadata", - format: "", - }, - { - name: "spec", - baseName: "spec", - type: "StorageV1RunnerPersistentVolumeClaimTemplateSpec", - format: "", - }, - ] - - static getAttributeTypeMap() { - return StorageV1RunnerPersistentVolumeClaimTemplate.attributeTypeMap - } - - public constructor() {} -} - -export class StorageV1RunnerServiceTemplate { - "metadata"?: StorageV1TemplateMetadata - "spec"?: StorageV1RunnerServiceTemplateSpec - - static readonly discriminator: string | undefined = undefined - - static readonly attributeTypeMap: Array<{ - name: string - baseName: string - type: string - format: string - }> = [ - { - name: "metadata", - baseName: "metadata", - type: "StorageV1TemplateMetadata", - format: "", - }, - { - name: "spec", - baseName: "spec", - type: "StorageV1RunnerServiceTemplateSpec", - format: "", - }, - ] - - static getAttributeTypeMap() { - return StorageV1RunnerServiceTemplate.attributeTypeMap - } - - public constructor() {} -} - -export class StorageV1RunnerServiceTemplateSpec { - /** - * type determines how the Service is exposed. Defaults to ClusterIP Possible enum values: - `\"ClusterIP\"` means a service will only be accessible inside the cluster, via the cluster IP. - `\"ExternalName\"` means a service consists of only a reference to an external name that kubedns or equivalent will return as a CNAME record, with no exposing or proxying of any pods involved. - `\"LoadBalancer\"` means a service will be exposed via an external load balancer (if the cloud provider supports it), in addition to \'NodePort\' type. - `\"NodePort\"` means a service will be exposed on one port of every node, in addition to \'ClusterIP\' type. - */ - "type"?: EStorageV1RunnerServiceTemplateSpecType - - static readonly discriminator: string | undefined = undefined - - static readonly attributeTypeMap: Array<{ - name: string - baseName: string - type: string - format: string - }> = [ - { - name: "type", - baseName: "type", - type: "StorageV1RunnerServiceTemplateSpecTypeEnum", - format: "", - }, - ] - - static getAttributeTypeMap() { - return StorageV1RunnerServiceTemplateSpec.attributeTypeMap - } - - public constructor() {} -} - -export enum EStorageV1RunnerServiceTemplateSpecType { - ClusterIp = "ClusterIP", - ExternalName = "ExternalName", - LoadBalancer = "LoadBalancer", - NodePort = "NodePort", -} diff --git a/desktop/src/types.ts b/desktop/src/types.ts deleted file mode 100644 index 4ce3635a6..000000000 --- a/desktop/src/types.ts +++ /dev/null @@ -1,324 +0,0 @@ -import { UseMutationResult } from "@tanstack/react-query" -import { TStreamEventListenerFn } from "./client" - -type TMaybe = T | null | undefined -export type TUnsubscribeFn = VoidFunction -export type TComparable = Readonly<{ eq(b: T): boolean }> -export type TIdentifiable = Readonly<{ id: string }> -export type TStreamID = string -export type TDeepNonNullable = { - [K in keyof T]-?: T[K] extends object ? TDeepNonNullable : Required> -} - -//#region Shared -export type TLogOutput = Readonly<{ time: Date; message?: string; level: string }> -export type TQueryResult> = [ - TData | undefined, - Pick, -] -export type TRunnable = Readonly<{ run(config: TRunConfig): void }> -//#endregion - -//#region IDE -export type TIDEs = readonly TIDE[] -export type TIDE = Readonly<{ - name: TMaybe - displayName: string - default: TMaybe - icon: TMaybe - iconDark: TMaybe - experimental: TMaybe - group: TMaybe<"Primary" | "JetBrains" | "Other"> -}> -//#endregion - -//#region Provider -export type TProviderID = string -export type TOptionID = string -export type TWithProviderID = Readonly<{ providerID: TProviderID }> -export type TProviders = Record -export type TProvider = Readonly<{ - config: TMaybe - default: TMaybe - state: TMaybe< - Readonly<{ - initialized: TMaybe - singleMachine: TMaybe - creationTimestamp: TMaybe - options: TMaybe - }> - > -}> & { - isProxyProvider: boolean -} -export type TNamedProvider = TProvider & Readonly<{ name: string }> -export type TProviderConfig = Readonly<{ - name: TMaybe - version: TMaybe - source: TMaybe - description: TMaybe - optionGroups: TProviderOptionGroup[] - options: TProviderOptions - icon: TMaybe - home: TMaybe - exec: - | TMaybe & { proxy: never; daemon: never }> - | TMaybe<{ proxy: TMaybe>; daemon: never }> - | TMaybe<{ daemon: TMaybe>; proxy: never }> -}> -export type TProviderOptionGroup = Readonly<{ - name: TMaybe - options: TMaybe - defaultVisible: TMaybe -}> -export type TProviderSource = Readonly<{ - internal: TMaybe - github: TMaybe - file: TMaybe - url: TMaybe - raw: TMaybe -}> -export type TProviderOptions = Record -export type TProviderOption = Readonly<{ - // Value is the options current value - value: TMaybe - // Children are the children generated by this option - children: TMaybe - // If value is a password - password: TMaybe - // DisplayName of the option, preferred over the option name by a supporting tool. - displayName: TMaybe - // A description of the option displayed to the user by a supporting tool. - description: TMaybe - // If required is true and the user doesn't supply a value, devsy will ask the user - required: TMaybe - // Allowed values for this option. - enum: TMaybe - // Suggestions are suggestions to show in the Devsy UI for this option - suggestions: TMaybe - // Hidden specifies if the option should be hidden - hidden: TMaybe - // Local means the variable is not resolved immediately and instead later when the workspace / machine was created. - local: TMaybe - // Default value if the user omits this option from their configuration. - default: TMaybe - // Command is the command to run to specify an option - command: TMaybe - // SubOptionsCommand is the command to retrieve sub options - subOptionsCommand: TMaybe - // Type is the provider option type. Can be one of: string, multiline, duration, number or boolean. Defaults to string - type: TMaybe<"string" | "duration" | "number" | "boolean" | "multiline"> - // Mutable specifies if an option can be changed on the workspace or machine after creating it - mutable: TMaybe -}> -export type TOptionEnum = Readonly<{ - value: TMaybe - displayName: TMaybe -}> - -export type TAddProviderConfig = Readonly<{ - name?: TProviderConfig["name"] -}> -export type TConfigureProviderConfig = Readonly<{ - options: Record - useAsDefaultProvider?: boolean - reuseMachine?: boolean - reconfigure?: boolean -}> -export type TProviderManager = Readonly<{ - remove: TRunnable & - Pick & { target: TWithProviderID | undefined } - rename: TRunnable<{ oldProviderID: string; newProviderID: string }> & - Pick & { - target: { oldProviderID: string; newProviderID: string } | undefined - } -}> -export type TCheckProviderUpdateResult = Readonly<{ - updateAvailable: boolean - latestVersion?: string -}> - -//#endregion - -//#region Workspace -export type TWorkspaceID = NonNullable -export type TWithWorkspaceID = Readonly<{ workspaceID: TWorkspaceID }> -export type TWorkspace = Readonly<{ - id: string - uid: string - picture: TMaybe - machine: TMaybe }>> - provider: TMaybe; options: TMaybe }>> - status: TMaybe<"Running" | "Busy" | "Stopped" | "NotFound"> - ide: TMaybe<{ - name: TMaybe - }> - creationTimestamp: string - lastUsed: string - source: TMaybe -}> -export type TWorkspaceWithoutStatus = Omit & Readonly<{ status: null }> -export type TWorkspaceStatusResult = Readonly<{ - id: TMaybe - context: TMaybe - provider: TMaybe - state: TMaybe -}> -export type TWorkspaceSourceType = "local" | "git" | "image" -export type TWorkspaceStartConfig = Readonly<{ - id: string - prebuildRepositories?: string[] - devcontainerPath?: string - ideConfig?: TWorkspace["ide"] - providerConfig?: Readonly<{ providerID?: TProviderID; options?: Record }> - // Instead of starting a workspace just by ID, the sourceConfig starts it with a `source/ID` combination - sourceConfig?: Readonly<{ - source: string - type?: TWorkspaceSourceType - }> -}> -export type TWorkspaceSource = { - gitRepository: TMaybe - gitBranch: TMaybe - gitCommit: TMaybe - gitPRReference: TMaybe - gitSubPath: TMaybe - localFolder: TMaybe - image: TMaybe -} -export const SUPPORTED_IDES = [ - "none", - "vscode", - "vscode-insiders", - "intellj", - "goland", - "rustrover", - "pycharm", - "phpstorm", - "clion", - "rubymine", - "rider", - "webstorm", - "openvscode", - "jupyternotebook", - "fleet", - "windsurf", - "antigravity", - "bob", -] as const -export type TSupportedIDE = (typeof SUPPORTED_IDES)[number] -export type TImportWorkspaceConfig = Readonly<{ - workspaceID: string - workspaceUID: string - devsyProHost: string - project: string - options: Record | null -}> - -//#endregion - -//#region Context -export type TContextOptions = Record -// See pkg/config/context.go -export type TContextOptionName = - | "AGENT_URL" - | "TELEMETRY" - | "SSH_INJECT_DOCKER_CREDENTIALS" - | "SSH_INJECT_GIT_CREDENTIALS" - | "GIT_SSH_SIGNATURE_FORWARDING" - | "GPG_AGENT_FORWARDING" - | "SSH_STRICT_HOST_KEY_CHECKING" - | "SSH_ADD_PRIVATE_KEYS" - | "SSH_AGENT_FORWARDING" -export type TContextOption = Readonly<{ - name: TContextOptionName - description: string | null | undefined - default: string | null | undefined - enum: readonly string[] | null | undefined - value: string | null | undefined -}> -//#endregion - -//#region Pro -export type TProID = string -export type TWithProID = Readonly<{ id: TProID }> -export type TProInstance = Readonly<{ - host: TMaybe - provider: TMaybe - creationTimestamp: TMaybe - authenticated: TMaybe - capabilities: TMaybe -}> -export type TProInstances = readonly TProInstance[] -export type TProInstanceManager = Readonly<{ - login: TRunnable & - Pick, "status" | "error" | "reset"> & { - provider: TProvider | undefined - } - disconnect: TRunnable & - Pick & { target: TWithProID | undefined } -}> -export type TProInstanceLoginConfig = Readonly<{ - host: string - accessKey?: string - streamListener?: TStreamEventListenerFn -}> -export type TListProInstancesConfig = Readonly< - | { - authenticate?: boolean - } - | undefined -> -export type TPlatformVersionInfo = Readonly<{ - serverVersion: TMaybe - remoteProviderVersion: TMaybe - currentProviderVersion: TMaybe -}> -//#endregion - -export type TDevcontainerSetup = Readonly<{ - isGitRepository: boolean - isLocal: boolean - isImage: boolean - configPaths: string[] -}> -//#region CommunityContributions -export type TCommunityContributions = Readonly<{ - providers: readonly TCommunityProvider[] -}> -export type TCommunityProvider = Readonly<{ - repository: string -}> -//#endregion -export type TPlatformHealthCheck = Readonly<{ - healthy: TMaybe - online: TMaybe - loginRequired: TMaybe - details: TMaybe -}> -export type TPlatformUpdateCheck = Readonly<{ - available: TMaybe - newVersion: TMaybe -}> -export const UserSecret = { - GIT_HTTP: "devsy-git-http", - GIT_SSH: "devsy-git-ssh", -} as const -export type TUserSecretType = (typeof UserSecret)[keyof typeof UserSecret] -export type TGitCredentialData = { - password?: string - key?: string - host?: string - user?: string - path?: string -} -export type TGitCredentialHelperData = Readonly<{ - host: string - path?: string - username?: string - password: string -}> - -export function isWithWorkspaceID(arg: unknown): arg is TWithWorkspaceID { - return typeof arg === "object" && arg !== null && "workspaceID" in arg -} diff --git a/desktop/src/useCommunityContributions.ts b/desktop/src/useCommunityContributions.ts deleted file mode 100644 index 5154514df..000000000 --- a/desktop/src/useCommunityContributions.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { useQuery } from "@tanstack/react-query" -import { client } from "@/client" -import { TCommunityContributions } from "@/types" -import { QueryKeys } from "@/queryKeys" - -export function useCommunityContributions(): Readonly<{ - contributions: TCommunityContributions | undefined - isLoading: boolean -}> { - const { data, isLoading } = useQuery({ - queryKey: QueryKeys.COMMUNITY_CONTRIBUTIONS, - queryFn: async () => { - return (await client.fetchCommunityContributions()).unwrap() - }, - refetchOnWindowFocus: false, - refetchOnMount: false, - refetchOnReconnect: false, - }) - - return { contributions: data, isLoading } -} diff --git a/desktop/src/useIDEs.ts b/desktop/src/useIDEs.ts deleted file mode 100644 index 5fb624b56..000000000 --- a/desktop/src/useIDEs.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { useQuery } from "@tanstack/react-query" -import { useMemo } from "react" -import { client } from "@/client" -import { useSettings } from "@/contexts" -import { QueryKeys } from "@/queryKeys" -import { TIDE, TIDEs } from "@/types" - -// See pkg/config/ide.go for names -const FLEET_IDE_NAME = "fleet" -const JUPYTER_IDE_NAME = "jupyternotebook" -const VSCODE_INSIDERS = "vscode-insiders" -const CURSOR = "cursor" -const POSITRON = "positron" -const CODIUM = "codium" -const ZED = "zed" -const RSTUDIO = "rstudio" -const WINDSURF = "windsurf" -const ANTIGRAVITY = "antigravity" -const BOB = "bob" - -export function useIDEs() { - const idesQuery = useQuery({ - queryKey: QueryKeys.IDES, - queryFn: async () => (await client.ides.listAll()).unwrap(), - }) - const settings = useSettings() - - const ides = useMemo( - () => - idesQuery.data?.filter((ide) => { - if (!ide.experimental) return true - - if (ide.name === FLEET_IDE_NAME && settings.experimental_fleet) return true - if (ide.name === JUPYTER_IDE_NAME && settings.experimental_jupyterNotebooks) return true - if (ide.name === VSCODE_INSIDERS && settings.experimental_vscodeInsiders) return true - if (ide.name === CURSOR && settings.experimental_cursor) return true - if (ide.name === POSITRON && settings.experimental_positron) return true - if (ide.name === CODIUM && settings.experimental_codium) return true - if (ide.name === ZED && settings.experimental_zed) return true - if (ide.name === RSTUDIO && settings.experimental_rstudio) return true - if (ide.name === WINDSURF && settings.experimental_windsurf) return true - if (ide.name === ANTIGRAVITY && settings.experimental_antigravity) return true - if (ide.name === BOB && settings.experimental_bob) return true - - return false - }), - [settings, idesQuery.data] - ) - - return useMemo( - () => ({ ides, defaultIDE: idesQuery.data?.find((ide) => ide.default) }), - [ides, idesQuery.data] - ) -} - -export function useGroupIDEs(ides?: TIDEs) { - return useMemo(() => { - return ides?.reduce( - (accum, ide) => { - const group = ide.group ?? "Other" - - if (group === "Primary") { - accum.primary.push(ide) - } else { - if (!accum.subMenus[group]) { - accum.subMenus[group] = [] - accum.subMenuGroups.push(group) - } - - accum.subMenus[group]!.push(ide) - } - - return accum - }, - { - primary: [] as TIDE[], - subMenuGroups: [] as string[], - subMenus: {} as { [key: string]: TIDE[] }, - } - ) - }, [ides]) -} diff --git a/desktop/src/useWelcomeModal.tsx b/desktop/src/useWelcomeModal.tsx deleted file mode 100644 index b2a0d8b53..000000000 --- a/desktop/src/useWelcomeModal.tsx +++ /dev/null @@ -1,183 +0,0 @@ -import { - Code, - Heading, - HStack, - Link, - Modal, - ModalBody, - ModalCloseButton, - ModalContent, - ModalFooter, - ModalOverlay, - Text, - useDisclosure, - VStack, -} from "@chakra-ui/react" -import { useCallback, useEffect, useMemo, useState } from "react" -import { useNavigate } from "react-router" -import { client } from "./client" -import { BINARY_NAME, GITHUB_RELEASES_URL, WEBSITE_DOCS_URL } from "./client/repo" -import { DevsyOSSBadge, Step, Steps, useInstallCLI } from "./components" -import { Briefcase, CommandLine, DevsyWordmark } from "./icons" -import { Routes } from "./routes.constants" - -const IS_FIRST_VISIT_KEY = `${BINARY_NAME}-is-first-visit` - -export function useWelcomeModal() { - const navigate = useNavigate() - const { isOpen, onClose, onOpen } = useDisclosure() - const [isCancellable, setIsCancellable] = useState(false) - const { - badge: installCLIBadge, - button: installCLIButton, - helpText: installCLIHelpText, - errorMessage: installCLIErrorMessage, - } = useInstallCLI() - const handleSetupFinished = useCallback(() => { - onClose() - navigate(Routes.WORKSPACE_CREATE) - }, [navigate, onClose]) - - // Open the welcome modal on first visit, except if we start with a `SetupPro` event - useEffect(() => { - const maybeFirstVisit = localStorage.getItem(IS_FIRST_VISIT_KEY) - let shouldShowWelcomeModal = maybeFirstVisit === null && !isOpen - - const listenerPromise = client.subscribe("event", (event) => { - if (event.type === "SetupPro") { - shouldShowWelcomeModal = false - onClose() - } - }) - - if (shouldShowWelcomeModal) { - onOpen() - localStorage.setItem(IS_FIRST_VISIT_KEY, "false") - - return - } - - return () => { - listenerPromise.then((unsubscribe) => unsubscribe()) - } - }, [isOpen, onClose, onOpen]) - - const modal = useMemo(() => { - return ( - - - - {isCancellable && } - - - - - - - - Welcome to - - - - - - - - Devsy is a tool to create reproducible developer environments. - - - Each developer environment runs in a separate container and is specified through - a devcontainer.json. Through Devsy providers these containers can be created on - the local computer, any reachable remote machine or in a public or private - cloud. It's also possible to extend Devsy and write your own custom - providers.
    - For more information, head over to our{" "} - client.openUrl(WEBSITE_DOCS_URL)}>documentation. -
    - - Let's set you up! -
    - - - - - - CLI - - - - - Devsy ships with a powerful CLI that allows you to create, manage and connect to - your workspaces and providers. You can either{" "} - client.openUrl(GITHUB_RELEASES_URL)}> - download the standalone binary - {" "} - or directly add it to your $PATH. -
    - - Feel free to skip this step. You can always install the CLI from the{" "} - Settings tab. - -
    - - - {installCLIButton} - {installCLIBadge} - - - {installCLIHelpText} - - - {installCLIErrorMessage} -
    - - - - - - Workspaces - - - - - Workspaces are your reproducible development environment on a per-project basis. - Turn a local folder, Git repository or Docker container into a workspace and - connect it to your favorite coding tool. Or just SSH into them and start - developing. - - -
    -
    -
    - -
    -
    - ) - }, [ - handleSetupFinished, - installCLIBadge, - installCLIButton, - installCLIErrorMessage, - installCLIHelpText, - isCancellable, - isOpen, - onClose, - ]) - - const show = useCallback( - ({ cancellable = false }: Readonly<{ cancellable?: boolean }>) => { - setIsCancellable(cancellable) - onOpen() - }, - [onOpen] - ) - - return { modal, show } -} diff --git a/desktop/src/views/Actions/Action.tsx b/desktop/src/views/Actions/Action.tsx deleted file mode 100644 index 2154cb5f9..000000000 --- a/desktop/src/views/Actions/Action.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import { useDownloadLogs } from "@/lib" -import { DownloadIcon } from "@chakra-ui/icons" -import { Box, Button, IconButton, Tooltip } from "@chakra-ui/react" -import { useEffect, useMemo, useState } from "react" -import { HiStop } from "react-icons/hi2" -import { useNavigate } from "react-router" -import { useParams, useSearchParams } from "react-router-dom" -import { TerminalSearchBar, ToolbarActions, useStreamingTerminal } from "@/components" -import { useAction } from "@/contexts" -import { Routes } from "@/routes.constants" -import { TSearchOptions } from "@/components/Terminal/useTerminalSearch" - -export function Action() { - const [searchParams] = useSearchParams() - const params = useParams() - const navigate = useNavigate() - const actionID = useMemo(() => Routes.getActionID(params), [params]) - const action = useAction(actionID) - - const [searchOptions, setSearchOptions] = useState({}) - - const { - terminal, - connectStream, - clear, - search: { totalSearchResults, nextSearchResult, prevSearchResult, activeSearchResult }, - } = useStreamingTerminal({ searchOptions }) - - const { download, isDownloading: isDownloadingLogs } = useDownloadLogs() - - useEffect(() => { - if (action === undefined) { - return - } - - clear() - - return action.connectOrReplay(connectStream) - }, [action, actionID, clear, connectStream]) - - useEffect(() => { - const onSuccess = searchParams.get("onSuccess") - if (onSuccess && action?.data.status === "success") { - navigate(onSuccess) - } - }, [searchParams, action, navigate]) - - return ( - <> - - {action?.data.status === "pending" && ( - - )} - {actionID !== undefined && ( - - } - onClick={() => download({ actionID })} - /> - - )} - - - - {terminal} - - - ) -} diff --git a/desktop/src/views/Actions/Actions.tsx b/desktop/src/views/Actions/Actions.tsx deleted file mode 100644 index f03594848..000000000 --- a/desktop/src/views/Actions/Actions.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { Box } from "@chakra-ui/react" -import { Outlet } from "react-router-dom" -import { NavigationViewLayout } from "@/components" -import { useActionTitle } from "./useActionTitle" - -export function Actions() { - const title = useActionTitle() - - return ( - - - - - - ) -} diff --git a/desktop/src/views/Actions/index.ts b/desktop/src/views/Actions/index.ts deleted file mode 100644 index fac74a797..000000000 --- a/desktop/src/views/Actions/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { Action } from "./Action" -export { Actions } from "./Actions" diff --git a/desktop/src/views/Actions/useActionTitle.tsx b/desktop/src/views/Actions/useActionTitle.tsx deleted file mode 100644 index 37389b6d8..000000000 --- a/desktop/src/views/Actions/useActionTitle.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import { IconButton } from "@chakra-ui/react" -import { useMemo } from "react" -import { useLocation, useMatch, useNavigate } from "react-router-dom" -import { TViewTitle } from "@/components" -import { getAction, useWorkspaceStore } from "@/contexts" -import { ArrowLeft } from "@/icons" -import { exists, getActionDisplayName } from "@/lib" -import { Routes } from "@/routes.constants" - -export function useActionTitle(): TViewTitle | null { - const { store } = useWorkspaceStore() - const navigate = useNavigate() - const location = useLocation() - - const matchAction = useMatch(Routes.ACTION) - - return useMemo(() => { - if (!exists(matchAction)) { - return null - } - const maybeActionID = Routes.getActionID(matchAction.params) - if (!maybeActionID) { - return null - } - const maybeAction = getAction(maybeActionID, store) - if (maybeAction === undefined) { - return null - } - - const targetRoute = - // Unfortunately `Location` isn't typed, so be careful if you change this - exists(location.state?.origin) && location.state?.origin !== "" - ? location.state?.origin - : Routes.WORKSPACES - - return { - label: getActionDisplayName(maybeAction), - priority: "regular", - leadingAction: ( - } - onClick={() => { - navigate(targetRoute) - }} - /> - ), - } - }, [location.state?.origin, matchAction, navigate, store]) -} diff --git a/desktop/src/views/Pro/BackToWorkspaces.tsx b/desktop/src/views/Pro/BackToWorkspaces.tsx deleted file mode 100644 index f5f957811..000000000 --- a/desktop/src/views/Pro/BackToWorkspaces.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { useProContext } from "@/contexts" -import { Routes } from "@/routes.constants" -import { ChevronLeftIcon } from "@chakra-ui/icons" -import { Link } from "@chakra-ui/react" -import { Link as RouterLink } from "react-router-dom" - -export function BackToWorkspaces() { - const { host } = useProContext() - - return ( - - Back to Workspaces - - ) -} diff --git a/desktop/src/views/Pro/CreateWorkspace/CreateWorkspace.tsx b/desktop/src/views/Pro/CreateWorkspace/CreateWorkspace.tsx deleted file mode 100644 index 611f0739d..000000000 --- a/desktop/src/views/Pro/CreateWorkspace/CreateWorkspace.tsx +++ /dev/null @@ -1,251 +0,0 @@ -import { client as globalClient } from "@/client/client" -import { - ProWorkspaceInstance, - ProWorkspaceStore, - useProContext, - useTemplates, - useWorkspace, - useWorkspaceStore, -} from "@/contexts" -import { - Annotations, - Failed, - Labels, - randomString, - Result, - Return, - safeMaxName, - Source, -} from "@/lib" -import { Routes } from "@/routes.constants" -import { Box, Heading, HStack, VStack } from "@chakra-ui/react" -import { getProjectNamespace, NewResource, Resources } from "@devsy/client" -import { ManagementV1DevsyWorkspaceInstance } from "@devsy/client/gen/models/managementV1DevsyWorkspaceInstance" -import * as jsyaml from "js-yaml" -import { useEffect, useMemo, useState } from "react" -import { useNavigate } from "react-router-dom" -import { BackToWorkspaces } from "../BackToWorkspaces" -import { CreateWorkspaceForm } from "./CreateWorkspaceForm" -import { TFormValues } from "./types" -import { useLocation } from "react-router" -import { DaemonClient } from "@/client/pro/client" - -export function CreateWorkspace() { - const workspace = useWorkspace(undefined) - const { store } = useWorkspaceStore() - const [globalError, setGlobalError] = useState(null) - const { host, currentProject, managementSelfQuery, client } = useProContext() - const navigate = useNavigate() - - const { data: templates, isLoading: isTemplatesLoading } = useTemplates() - - const presets = templates?.presets - - const [presetId, setPresetId] = useState(undefined) - const routerLocation = useLocation() - - useEffect(() => { - const searchParams = new URLSearchParams(routerLocation.search) - const fromPreset = searchParams.get("fromPreset") - - if (fromPreset && !presetId) { - setPresetId(fromPreset) - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) - - const preset = useMemo(() => { - if (!presetId) { - return undefined - } - - return (presets ?? []).find((p) => p.metadata?.name === presetId) - }, [presetId, presets]) - - const handleReset = () => { - setGlobalError(null) - navigate(Routes.toProInstance(host)) - } - - const handleSubmit = async (values: TFormValues) => { - setGlobalError(null) - const shouldUseRunner = !(client instanceof DaemonClient) - const instanceRes = await buildWorkspaceInstance( - values, - currentProject?.metadata?.name, - managementSelfQuery.data?.status?.projectNamespacePrefix, - presetId, - shouldUseRunner - ) - if (instanceRes.err) { - setGlobalError(instanceRes.val) - - return - } - - const createRes = await client.createWorkspace(instanceRes.val.instance) - if (createRes.err) { - setGlobalError(createRes.val) - - return - } - // update workspace store immediately - const instance = new ProWorkspaceInstance(createRes.val) - store.setWorkspace(instance.id, instance) - - workspace.create({ - id: instanceRes.val.workspaceID, - workspaceKey: instance.id, - ideConfig: { - name: values.defaultIDE, - }, - }) - - navigate(Routes.toProWorkspace(host, instance.id)) - } - - return ( - - - - - Create Workspace - - - - - ) -} - -async function buildWorkspaceInstance( - values: TFormValues, - currentProject: string | undefined, - projectNamespacePrefix: string | undefined, - preset: string | undefined, - shouldUseRunner: boolean -): Promise> { - const instance = NewResource(Resources.ManagementV1DevsyWorkspaceInstance) - const workspaceSource = new Source(values.sourceType, values.source) - - // Workspace name - const sourceIDRes = await globalClient.workspaces.newID(workspaceSource.stringify()) - if (sourceIDRes.err) { - return sourceIDRes - } - const id = getID(sourceIDRes.val) - - // Kubernetes name - const kubeNameRes = await getKubeName(values.name || id) - if (kubeNameRes.err) { - return kubeNameRes - } - const kubeName = kubeNameRes.val - - // ID/UID - const uidRes = await globalClient.workspaces.newUID() - if (uidRes.err) { - return uidRes - } - const uid = uidRes.val - const displayName = values.name - const ns = getProjectNamespace(currentProject, projectNamespacePrefix) - - if (!instance.metadata) { - instance.metadata = {} - } - if (!instance.metadata.labels) { - instance.metadata.labels = {} - } - if (!instance.metadata.annotations) { - instance.metadata.annotations = {} - } - if (!instance.spec) { - instance.spec = {} - } - instance.metadata.generateName = `${kubeName}-` - instance.metadata.namespace = ns - instance.metadata.labels[Labels.WorkspaceID] = id - instance.metadata.labels[Labels.WorkspaceUID] = uid - instance.metadata.annotations[Annotations.WorkspaceSource] = workspaceSource.stringify() - instance.spec.displayName = displayName - - // TODO: Remove when removing proxy provider - if (shouldUseRunner) { - instance.spec.runnerRef = { - runner: values.target, - } - } else { - instance.spec.target = { - cluster: { name: values.target }, - } - } - - // Template, version and parameters - const { workspaceTemplate: template, workspaceTemplateVersion, ...parameters } = values.options - - try { - instance.spec.parameters = jsyaml.dump(parameters) - } catch (err) { - return Return.Failed(err as any) - } - - if (preset) { - instance.spec.presetRef = { name: preset } - } else { - let templateVersion = workspaceTemplateVersion - if (templateVersion === "latest") { - templateVersion = "" - } - instance.spec.templateRef = { - name: template, - version: templateVersion, - } - - // Environment template - if (values.devcontainerType === "external") { - instance.spec.environmentRef = { - name: values.devcontainerJSON, - } - - if (values.envTemplateVersion !== "latest") { - instance.spec.environmentRef.version = values.envTemplateVersion - } - } - } - - return Return.Value({ workspaceID: id, instance }) -} - -async function getKubeName(name: string): Promise> { - try { - const kubeName = await safeMaxName( - name - .toLowerCase() - .replace(/[^a-z0-9]/g, "-") - .replace(/--+/g, "-") - .replace(/(^[^a-z0-9])|([^a-z0-9]$)/, ""), - 39 - ) - - return Return.Value(kubeName) - } catch (err) { - return Return.Failed(`Failed to get kubernetes name from ${name}: ${err}`) - } -} - -function getID(name: string): string { - if (name.length <= 48 - 6) { - return `${name}-${randomString(5)}` - } - const start = name.substring(0, 48 - 6) - - return `${start}-${randomString(5)}` -} diff --git a/desktop/src/views/Pro/CreateWorkspace/CreateWorkspaceForm.tsx b/desktop/src/views/Pro/CreateWorkspace/CreateWorkspaceForm.tsx deleted file mode 100644 index 166965ec6..000000000 --- a/desktop/src/views/Pro/CreateWorkspace/CreateWorkspaceForm.tsx +++ /dev/null @@ -1,388 +0,0 @@ -import { BottomActionBar, BottomActionBarError, Form } from "@/components" -import { ProWorkspaceInstance, useProjectClusters, useTemplates } from "@/contexts" -import { Code, Laptop, Parameters } from "@/icons" -import { - Annotations, - exists, - Failed, - getParametersWithValues, - Labels, - Source, - useFormErrors, -} from "@/lib" -import { useIDEs } from "@/useIDEs" -import { - Box, - Button, - ButtonGroup, - FormControl, - FormErrorMessage, - FormHelperText, - FormLabel, - Grid, - Input, - Spinner, - VStack, - useColorModeValue, -} from "@chakra-ui/react" -import { ManagementV1DevsyWorkspaceTemplate } from "@devsy/client/gen/models/managementV1DevsyWorkspaceTemplate" -import { ReactNode, useCallback, useEffect, useMemo, useRef } from "react" -import { Controller, DefaultValues, FormProvider, useForm } from "react-hook-form" -import { DevContainerInput } from "./DevContainerInput" -import { IDEInput } from "./IDEInput" -import { InfrastructureTemplateInput } from "./InfrastructureTemplateInput" -import { SourceInput } from "./SourceInput" -import { FieldName, TFormValues } from "./types" -import { TargetInput } from "@/views/Pro/CreateWorkspace/RunnerInput" -import { ManagementV1DevsyWorkspacePreset } from "@devsy/client/gen/models/managementV1DevsyWorkspacePreset" -import { Gold } from "@/icons/Gold" -import { PresetInput } from "@/views/Pro/CreateWorkspace/PresetInput" - -type TCreateWorkspaceFormProps = Readonly<{ - instance?: ProWorkspaceInstance - template?: ManagementV1DevsyWorkspaceTemplate - onSubmit: (data: TFormValues) => void - onReset: VoidFunction - error: Failed | null - preset?: ManagementV1DevsyWorkspacePreset - presets?: readonly ManagementV1DevsyWorkspacePreset[] - setPreset?: (preset: string | undefined) => void - loading?: boolean -}> -export function CreateWorkspaceForm({ - instance, - template, - onSubmit, - onReset, - error, - preset, - presets, - loading, - setPreset, -}: TCreateWorkspaceFormProps) { - const defaultValues = useMemo(() => getDefaultValues(instance, template), [instance, template]) - const containerRef = useRef(null) - - const { ides, defaultIDE } = useIDEs() - const { data: templates, isLoading: isTemplatesLoading } = useTemplates() - const { data: projectClusterData, isLoading: projectClusterDataLoading } = useProjectClusters() - - const form = useForm({ mode: "onChange", defaultValues }) - const { - sourceError, - defaultIDEError, - nameError, - devcontainerJSONError, - optionsError, - targetError, - } = useFormErrors(Object.values(FieldName), form.formState) - - const isUpdate = useMemo(() => { - return !!instance - }, [instance]) - - const resetPreset = useCallback(() => { - setPreset?.(undefined) - }, [setPreset]) - - useEffect(() => { - if (!form.getFieldState(FieldName.DEFAULT_IDE).isDirty && defaultIDE && defaultIDE.name) { - form.setValue(FieldName.DEFAULT_IDE, defaultIDE.name, { - shouldDirty: false, - shouldTouch: true, - }) - } - }, [defaultIDE, form]) - - useEffect(() => { - if (!isUpdate && preset) { - const opts = { shouldDirty: true } // To enable the create workspace button. - - const sourceType = preset.spec?.source.image ? "image" : "git" - const source = preset.spec?.source.image ?? preset.spec?.source.git - - form.setValue(FieldName.SOURCE_TYPE, sourceType, opts) - form.setValue(FieldName.SOURCE, source ?? "", opts) - - if (preset.spec?.infrastructureRef.name) { - form.setValue( - `${FieldName.OPTIONS}.workspaceTemplate`, - preset.spec.infrastructureRef.name, - opts - ) - form.setValue( - `${FieldName.OPTIONS}.workspaceTemplateVersion`, - preset.spec.infrastructureRef.version ?? "latest", - opts - ) - } - - if (preset.spec?.environmentRef?.name) { - form.setValue(FieldName.DEVCONTAINER_TYPE, "external", opts) - form.setValue(FieldName.DEVCONTAINER_JSON, preset.spec.environmentRef.name, opts) - form.setValue( - FieldName.ENV_TEMPLATE_VERSION, - preset.spec.environmentRef.version ?? "latest", - opts - ) - } else { - form.setValue(FieldName.DEVCONTAINER_TYPE, "path", opts) - form.setValue(FieldName.ENV_TEMPLATE_VERSION, "latest", opts) - form.setValue(FieldName.DEVCONTAINER_JSON, "", opts) - } - } - }, [preset, form, isUpdate]) - const inputBg = useColorModeValue("white", "background.darkest") - - return ( -
    - - - {presets?.length ? ( - - - - Workspace Preset - - }> - - - - ) : ( - <> - )} - - - - Source Code - - }> - - - {exists(sourceError) && ( - {sourceError.message ?? "Error"} - )} - - - - - - - Parameters - - }> - {isTemplatesLoading ? ( - - ) : ( - - )} - - {exists(optionsError) && ( - {optionsError.message ?? "Error"} - )} - - - - - - - Cluster - - }> - {projectClusterDataLoading ? ( - - ) : ( - - )} - - {exists(targetError) && ( - {targetError.message ?? "Error"} - )} - - - - - - - - Default IDE - - - The default IDE to use when starting the workspace. This can be changed later. - - - }> - ( - field.onChange(name)} /> - )} - /> - {exists(defaultIDEError) && ( - {defaultIDEError.message ?? "Error"} - )} - - - - - - - - Devcontainer.json - - - Set an external source or a relative path in the source code. Otherwise, we’ll - look in the code repository. - - - }> - - - {exists(devcontainerJSONError) && ( - {devcontainerJSONError.message ?? "Error"} - )} - - - - - - - Workspace Name - - }> - - - {exists(nameError) && ( - {nameError.message ?? "Error"} - )} - - - - - - - - - - - - - - ) -} - -type TCreateWorkspaceRowProps = Readonly<{ - label: ReactNode - children: ReactNode -}> -function CreateWorkspaceRow({ label, children }: TCreateWorkspaceRowProps) { - return ( - - - {label} - - - {children} - - - ) -} - -function getDefaultValues( - instance: ProWorkspaceInstance | undefined, - template: ManagementV1DevsyWorkspaceTemplate | undefined -): DefaultValues | undefined { - if (instance === undefined) { - return undefined - } - const defaultValues: DefaultValues = { - defaultIDE: instance.status?.ide?.name ?? "none", - target: instance.spec?.runnerRef?.runner ?? instance.spec?.target?.cluster?.name, - } - - // source - const rawSource = instance.metadata?.annotations?.[Annotations.WorkspaceSource] - if (rawSource) { - const source = Source.fromRaw(rawSource) - defaultValues.sourceType = source.type - defaultValues.source = source.value - } - - // infrastructure template - if (template && instance.spec?.parameters) { - if (!defaultValues.options) { - defaultValues.options = {} - } - defaultValues.options.workspaceTemplate = instance.spec.templateRef?.name - defaultValues.options.workspaceTemplateVersion = instance.spec.templateRef?.version - - const parameters = getParametersWithValues(instance, template) - if (parameters && parameters.length > 0) { - for (const parameter of parameters) { - if (!parameter.variable) { - continue - } - defaultValues.options[parameter.variable] = parameter.value - } - } - } - - // environment template - const environmentRefName = instance.spec?.environmentRef?.name - if (environmentRefName) { - defaultValues.devcontainerType = "external" - defaultValues.devcontainerJSON = environmentRefName - defaultValues.envTemplateVersion = instance.spec?.environmentRef?.version ?? "latest" - } - - // name - const name = instance.spec?.displayName ?? instance.metadata?.labels?.[Labels.WorkspaceID] - if (name) { - defaultValues.name = name - } - - return defaultValues -} diff --git a/desktop/src/views/Pro/CreateWorkspace/DevContainerInput.tsx b/desktop/src/views/Pro/CreateWorkspace/DevContainerInput.tsx deleted file mode 100644 index cb06e07c9..000000000 --- a/desktop/src/views/Pro/CreateWorkspace/DevContainerInput.tsx +++ /dev/null @@ -1,161 +0,0 @@ -import { getDisplayName } from "@/lib" -import { - Box, - Input, - InputGroup, - InputLeftAddon, - Select, - useColorMode, - useColorModeValue, - useToken, -} from "@chakra-ui/react" -import { ManagementV1DevsyEnvironmentTemplate } from "@devsy/client/gen/models/managementV1DevsyEnvironmentTemplate" -import { useEffect, useMemo, useState } from "react" -import { useFormContext } from "react-hook-form" -import { FieldName } from "./types" - -type TDevContainerInputProps = Readonly<{ - environmentTemplates: readonly ManagementV1DevsyEnvironmentTemplate[] - resetPreset?: VoidFunction -}> -export function DevContainerInput({ - resetPreset, - environmentTemplates: templates, -}: TDevContainerInputProps) { - const errorBorderColor = useToken("colors", "red.500") - const { register, watch, resetField } = useFormContext() - const devContainerType = watch(FieldName.DEVCONTAINER_TYPE, "path") - const envTemplateValue = watch(FieldName.DEVCONTAINER_JSON) - const bg = useColorModeValue("white", "background.darkest") - const { colorMode } = useColorMode() - - const [envReference, setEnvReference] = useState(envTemplateValue) - - // Need the extra render cycle, because the form will not report the default value of the - // environment template immediately if the type is changed. - useEffect(() => { - setEnvReference(envTemplateValue) - }, [envTemplateValue]) - - const envTemplate = useMemo(() => { - return determineEnvironmentTemplate(templates, envReference, devContainerType) - }, [templates, envReference, devContainerType]) - - const versions = useMemo(() => { - if (devContainerType === "path") { - return undefined - } - - return envTemplate?.spec?.versions?.map((v) => v.version!) - }, [envTemplate, devContainerType]) - - const inputProps = useMemo( - () => - register(FieldName.DEVCONTAINER_JSON, { - required: false, - onChange: () => { - resetPreset?.() - resetField(FieldName.ENV_TEMPLATE_VERSION, { defaultValue: "latest" }) - }, - }), - [register, resetField, resetPreset] - ) - - const { input } = useMemo(() => { - if (devContainerType === "path") { - return { input: } - } - - return { - input: ( - - ), - } - }, [devContainerType, inputProps, templates]) - - return ( - - - - - - - {input} - - - - {versions?.length && ( - - - - - - )} - - ) -} - -function determineEnvironmentTemplate( - templates: readonly ManagementV1DevsyEnvironmentTemplate[], - envTemplateValue: string | undefined, - devContainerType: "path" | "external" | undefined -): ManagementV1DevsyEnvironmentTemplate | undefined { - if (devContainerType === "path" || !envTemplateValue) { - return undefined - } - - return templates.find((t) => t.metadata?.name === envTemplateValue) -} diff --git a/desktop/src/views/Pro/CreateWorkspace/IDEInput.tsx b/desktop/src/views/Pro/CreateWorkspace/IDEInput.tsx deleted file mode 100644 index 1855244b1..000000000 --- a/desktop/src/views/Pro/CreateWorkspace/IDEInput.tsx +++ /dev/null @@ -1,89 +0,0 @@ -import { IDEIcon } from "@/components" -import { SSH_HOST_SUFFIX } from "@/client/repo" -import { TIDE } from "@/types" -import { InfoIcon } from "@chakra-ui/icons" -import { Box, Card, HStack, Text, Tooltip, useColorModeValue } from "@chakra-ui/react" -import { ReactElement, cloneElement } from "react" -import { ControllerRenderProps } from "react-hook-form" -import { FieldName, TFormValues } from "./types" - -type TIDEInputProps = Readonly<{ - ides: readonly TIDE[] | undefined - field: ControllerRenderProps - onClick: (name: NonNullable) => void -}> -export function IDEInput({ ides, field, onClick }: TIDEInputProps) { - return ( - - {ides?.map((ide) => { - const isSelected = field.value === ide.name - - return ( - - } - isSelected={isSelected} - onClick={() => onClick(ide.name!)} - /> - - ) - })} - - ) -} - -type TIDECardProps = Readonly<{ - name: string - icon: ReactElement - isSelected: boolean - onClick: VoidFunction -}> -function IDECard({ name, isSelected, icon, onClick }: TIDECardProps) { - const iconColor = useColorModeValue("gray.700", "gray.500") - - const content = - name === "None" ? ( - - - SSH - - - - - - ) : ( - cloneElement(icon, { boxSize: "10" }) - ) - - return ( - - - {content} - - - ) -} diff --git a/desktop/src/views/Pro/CreateWorkspace/InfrastructureTemplateInput.tsx b/desktop/src/views/Pro/CreateWorkspace/InfrastructureTemplateInput.tsx deleted file mode 100644 index 314a9b873..000000000 --- a/desktop/src/views/Pro/CreateWorkspace/InfrastructureTemplateInput.tsx +++ /dev/null @@ -1,410 +0,0 @@ -import { useBorderColor } from "@/Theme" -import { exists, getDisplayName, getParameters, sortByVersionDesc } from "@/lib" -import { TProviderOption } from "@/types" -import { TOptionWithID } from "@/views/Providers" -import { - FormControl, - FormErrorMessage, - FormHelperText, - FormLabel, - Input, - Select, - SimpleGrid, - Switch, - Textarea, - VStack, - useColorModeValue, -} from "@chakra-ui/react" -import { ManagementV1DevsyWorkspaceTemplate } from "@devsy/client/gen/models/managementV1DevsyWorkspaceTemplate" -import { StorageV1AppParameter } from "@devsy/client/gen/models/storageV1AppParameter" -import { ReactNode, useEffect, useMemo } from "react" -import { ChangeHandler, Controller, useFormContext } from "react-hook-form" -import { FieldName, TFormValues } from "./types" - -type TOptionsInputProps = Readonly<{ - resetPreset?: VoidFunction - infraTemplates: readonly ManagementV1DevsyWorkspaceTemplate[] - defaultInfraTemplate: ManagementV1DevsyWorkspaceTemplate | undefined -}> -export function InfrastructureTemplateInput({ - infraTemplates: templates, - defaultInfraTemplate, - resetPreset, -}: TOptionsInputProps) { - const { getValues, watch, resetField, formState, unregister, setValue } = - useFormContext() - const borderColor = useBorderColor() - - const defaultTemplate = defaultInfraTemplate ?? templates[0] - const selectedTemplateName = watch( - `${FieldName.OPTIONS}.workspaceTemplate`, - defaultTemplate?.metadata?.name - ) - const selectedTemplateVersion = watch(`${FieldName.OPTIONS}.workspaceTemplateVersion`) - const currentTemplate = useMemo( - () => templates.find((template) => template.metadata?.name === selectedTemplateName), - [selectedTemplateName, templates] - ) - const currentParameters = useMemo(() => { - let v = selectedTemplateVersion - if (selectedTemplateVersion === "latest") { - v = "" - } - - const params = getParameters(currentTemplate, v) - - return !params ? params : [...params] - }, [currentTemplate, selectedTemplateVersion]) - - useEffect(() => { - const value = getValues() - - // Apply default values manually when the set of parameters changes. - currentParameters?.forEach((p) => { - if (!p.variable) { - return - } - - const paramValue = getDeepValue(value.options, p.variable) - if (paramValue == null && p.defaultValue != null) { - if (p.type === "number") { - setValue(`${FieldName.OPTIONS}.${p.variable}`, parseFloat(p.defaultValue)) - } else if (p.type === "boolean") { - setValue(`${FieldName.OPTIONS}.${p.variable}`, p.defaultValue === "true") - } else { - setValue(`${FieldName.OPTIONS}.${p.variable}`, p.defaultValue) - } - } - }) - - // resetField won't properly delete the keys when you switch templates, - // so it's probably best to clean it up every time the set of parameters changes... - return () => { - currentParameters?.forEach((p) => { - unregister(`${FieldName.OPTIONS}.${p.variable?.split(/\./)[0]}`) - }) - } - }, [currentParameters, unregister, getValues, setValue]) - - const currentTemplateVersions = useMemo(() => { - return currentTemplate?.spec?.versions?.slice().sort(sortByVersionDesc) - }, [currentTemplate?.spec?.versions]) - - const resetTemplate = () => { - resetPreset?.() - - // reset all other options, including version - const options = getValues("options") - for (const [k] of Object.entries(options)) { - if (k === "workspaceTemplate") { - continue - } - if (k === "workspaceTemplateVersion") { - resetField(`${FieldName.OPTIONS}.workspaceTemplateVersion`, { - defaultValue: "latest", - }) - continue - } - resetField(`${FieldName.OPTIONS}.${k}`, {}) - } - } - - const resetTemplateVersion = () => { - resetPreset?.() - - const resetOptions: Parameters[1] = { - defaultValue: undefined, - } - // reset all parameters options - const options = getValues("options") - for (const [k] of Object.entries(options)) { - if (k === "workspaceTemplate" || k === "workspaceTemplateVersion") { - continue - } - resetField(`${FieldName.OPTIONS}.${k}`, resetOptions) - } - } - const bg = useColorModeValue("gray.50", "gray.900") - - return ( - - - ({ - value: template.metadata!.name!, - displayName: getDisplayName(template), - }))} - onChange={resetTemplate} - /> - {currentTemplateVersions && currentTemplateVersions.length > 0 && ( - ({ - value: version.version, - displayName: version.version, - })), - ]} - onChange={resetTemplateVersion} - /> - )} - - - {currentParameters && currentParameters.length > 0 && ( - - {currentParameters.map((param) => { - const paramID = param.variable - if (!paramID) { - return null - } - const fieldID = `${FieldName.OPTIONS}.${paramID}` - - let defaultValue = param.defaultValue - if (typeof formState.defaultValues?.options?.[paramID] === "string") { - defaultValue = formState.defaultValues.options[paramID] as string - } - - return ( - ({ - value: option, - displayName: option, - }))} - isRequired={param.required} - /> - ) - })} - - )} - - ) -} - -type TOptionFormFieldProps = Partial< - Pick -> & - Readonly<{ - id: string - isRequired?: boolean - placeholder?: string - onChange?: VoidFunction - }> -function OptionFormField({ - id, - defaultValue, - description, - type, - displayName, - enum: enumProp, - placeholder, - isRequired = false, - onChange, -}: TOptionFormFieldProps) { - const inputBackground = useColorModeValue("white", "background.darkest") - const { register, formState, control } = useFormContext() - const optionError = formState.errors[id] - - const input = useMemo(() => { - const registerProps = register(id, { required: isRequired }) - const defaultValueProp = exists(defaultValue) ? { defaultValue } : {} - const props = { - ...defaultValueProp, - ...registerProps, - onChange: (e: Parameters[0]) => { - registerProps.onChange(e) - onChange?.() - }, - background: inputBackground, - } - - if (enumProp?.length) { - let ph: string | undefined = placeholder ?? "Select option" - if (defaultValue) { - ph = undefined - } - - return ( - - ) - } - - switch (type) { - case "boolean": - return ( - { - let isChecked = value - if (typeof value === "string") { - isChecked = value === "true" - } - - return ( - onChange(e.target.checked)} - onBlur={onBlur} - isChecked={isChecked} - /> - ) - }} - /> - ) - case "number": - return ( - { - // This prevents the input field from increasing/decreasing the numbers when the scroll event is captured - // while this input field is focused - ;(e.target as HTMLInputElement).blur() - }} - {...props} - /> - ) - case "duration": - return ( - - ) - case "string": - return ( - - ) - case "multiline": - return ( -