From 6915778c06a910cc5a4794a511554defeb0cdfef Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Fri, 6 Mar 2026 09:23:19 -0800 Subject: [PATCH] Refactor desktop app into separate client and proxy apps --- .claude-context.md | 14 +- .gitattributes | 4 +- .github/workflows/release-app.yml | 8 +- .github/workflows/release-cli-npm.yml | 6 +- .gitignore | 3 +- Cargo.lock | 12 +- Cargo.toml | 3 +- README.md | 2 +- {src-web => apps/yaak-client}/.gitignore | 0 .../yaak-client}/commands/commands.tsx | 0 .../commands/createEnvironment.tsx | 0 .../commands/deleteWebsocketConnections.ts | 0 .../yaak-client}/commands/moveToWorkspace.tsx | 0 .../commands/openFolderSettings.tsx | 0 .../yaak-client}/commands/openSettings.tsx | 0 .../commands/openWorkspaceFromSyncDir.tsx | 0 .../commands/openWorkspaceSettings.tsx | 0 .../yaak-client}/commands/switchWorkspace.tsx | 0 .../components/BinaryFileEditor.tsx | 0 .../yaak-client}/components/CargoFeature.tsx | 0 .../components/CloneGitRepositoryDialog.tsx | 0 .../components/ColorIndicator.tsx | 0 .../components/CommandPaletteDialog.tsx | 0 .../components/ConfirmLargeRequestBody.tsx | 0 .../components/ConfirmLargeResponse.tsx | 0 .../ConfirmLargeResponseRequest.tsx | 0 .../yaak-client}/components/CookieDialog.tsx | 0 .../components/CookieDropdown.tsx | 0 .../yaak-client}/components/CopyButton.tsx | 0 .../components/CopyIconButton.tsx | 0 .../components/CreateDropdown.tsx | 0 .../components/CreateEnvironmentDialog.tsx | 0 .../components/CreateWorkspaceDialog.tsx | 0 .../yaak-client}/components/Dialogs.tsx | 0 .../components/DnsOverridesEditor.tsx | 0 .../yaak-client}/components/DropMarker.tsx | 0 .../yaak-client}/components/DynamicForm.tsx | 0 .../components/EmptyStateText.tsx | 0 .../components/EncryptionHelp.tsx | 0 .../components/EnvironmentActionsDropdown.tsx | 0 .../components/EnvironmentColorIndicator.tsx | 0 .../components/EnvironmentColorPicker.tsx | 0 .../components/EnvironmentEditDialog.tsx | 0 .../components/EnvironmentEditor.tsx | 0 .../components/EnvironmentSharableTooltip.tsx | 0 .../yaak-client}/components/ErrorBoundary.tsx | 0 .../components/ExportDataDialog.tsx | 0 .../yaak-client}/components/FolderLayout.tsx | 0 .../components/FolderSettingsDialog.tsx | 0 .../components/FormMultipartEditor.tsx | 0 .../components/FormUrlencodedEditor.tsx | 0 .../yaak-client}/components/GlobalHooks.tsx | 0 .../components/GrpcConnectionLayout.tsx | 0 .../yaak-client}/components/GrpcEditor.tsx | 0 .../components/GrpcProtoSelectionDialog.tsx | 0 .../components/GrpcRequestPane.tsx | 0 .../components/GrpcResponsePane.tsx | 0 .../yaak-client}/components/HeaderSize.tsx | 0 .../yaak-client}/components/HeadersEditor.tsx | 0 .../components/HttpAuthenticationEditor.tsx | 0 .../components/HttpRequestLayout.tsx | 0 .../components/HttpRequestPane.tsx | 0 .../components/HttpResponsePane.tsx | 0 .../components/HttpResponseTimeline.tsx | 0 .../components/ImportCurlButton.tsx | 0 .../components/ImportDataDialog.tsx | 0 .../yaak-client}/components/IsDev.tsx | 0 .../components/KeyboardShortcutsDialog.tsx | 0 .../yaak-client}/components/LicenseBadge.tsx | 0 .../yaak-client}/components/LocalImage.tsx | 0 .../yaak-client}/components/Markdown.tsx | 0 .../components/MarkdownEditor.tsx | 0 .../components/MoveToWorkspaceDialog.tsx | 0 .../yaak-client}/components/Overlay.tsx | 0 .../yaak-client}/components/Portal.tsx | 0 .../yaak-client}/components/Prose.css | 0 .../yaak-client}/components/Prose.tsx | 0 .../RecentGrpcConnectionsDropdown.tsx | 0 .../RecentHttpResponsesDropdown.tsx | 0 .../components/RecentRequestsDropdown.tsx | 0 .../RecentWebsocketConnectionsDropdown.tsx | 0 .../components/RedirectToLatestWorkspace.tsx | 0 .../components/RequestBodyViewer.tsx | 0 .../components/RequestMethodDropdown.tsx | 0 .../yaak-client}/components/ResizeHandle.tsx | 0 .../components/ResponseCookies.tsx | 0 .../components/ResponseHeaders.tsx | 0 .../yaak-client}/components/ResponseInfo.tsx | 0 .../yaak-client}/components/RouteError.tsx | 0 .../yaak-client}/components/SelectFile.tsx | 0 .../components/Settings/Settings.tsx | 0 .../Settings/SettingsCertificates.tsx | 0 .../components/Settings/SettingsGeneral.tsx | 0 .../components/Settings/SettingsHotkeys.tsx | 0 .../components/Settings/SettingsInterface.tsx | 0 .../components/Settings/SettingsLicense.tsx | 0 .../components/Settings/SettingsPlugins.tsx | 0 .../components/Settings/SettingsProxy.tsx | 0 .../components/Settings/SettingsTheme.tsx | 0 .../components/SettingsDropdown.tsx | 0 .../yaak-client}/components/Sidebar.tsx | 0 .../components/SidebarActions.tsx | 0 .../components/SwitchWorkspaceDialog.tsx | 0 .../components/SyncToFilesystemSetting.tsx | 0 .../components/TemplateFunctionDialog.tsx | 0 .../yaak-client}/components/Toasts.tsx | 0 .../yaak-client}/components/UrlBar.tsx | 0 .../components/UrlParameterEditor.tsx | 0 .../components/WebsocketRequestLayout.tsx | 0 .../components/WebsocketRequestPane.tsx | 0 .../components/WebsocketResponsePane.tsx | 0 .../components/WindowControls.tsx | 0 .../yaak-client}/components/Workspace.tsx | 0 .../components/WorkspaceActionsDropdown.tsx | 0 .../components/WorkspaceEncryptionSetting.tsx | 0 .../components/WorkspaceHeader.tsx | 0 .../components/WorkspaceSettingsDialog.tsx | 0 .../yaak-client}/components/core/Alert.tsx | 0 .../components/core/AutoScroller.tsx | 0 .../yaak-client}/components/core/Banner.tsx | 0 .../components/core/BulkPairEditor.tsx | 0 .../yaak-client}/components/core/Button.tsx | 0 .../components/core/ButtonInfiniteLoading.tsx | 0 .../yaak-client}/components/core/Checkbox.tsx | 0 .../components/core/ColorPicker.tsx | 0 .../yaak-client}/components/core/Confirm.tsx | 0 .../components/core/CountBadge.tsx | 0 .../components/core/DetailsBanner.tsx | 0 .../yaak-client}/components/core/Dialog.tsx | 0 .../components/core/DismissibleBanner.tsx | 0 .../yaak-client}/components/core/Dropdown.tsx | 0 .../core/Editor/BetterMatchDecorator.ts | 0 .../components/core/Editor/DiffViewer.css | 0 .../components/core/Editor/DiffViewer.tsx | 0 .../components/core/Editor/Editor.css | 0 .../components/core/Editor/Editor.tsx | 0 .../components/core/Editor/LazyEditor.tsx | 0 .../components/core/Editor/extensions.ts | 0 .../core/Editor/filter/extension.ts | 0 .../core/Editor/filter/filter.grammar | 0 .../components/core/Editor/filter/filter.ts | 0 .../core/Editor/filter/highlight.ts | 0 .../components/core/Editor/filter/query.ts | 0 .../core/Editor/genericCompletion.ts | 0 .../core/Editor/hyperlink/extension.ts | 0 .../components/core/Editor/json-lint.ts | 0 .../components/core/Editor/pairs/extension.ts | 0 .../components/core/Editor/pairs/highlight.ts | 0 .../core/Editor/pairs/pairs.grammar | 0 .../core/Editor/pairs/pairs.terms.ts | 0 .../components/core/Editor/pairs/pairs.ts | 0 .../core/Editor/searchMatchCount.ts | 0 .../components/core/Editor/singleLine.ts | 0 .../components/core/Editor/text/extension.ts | 0 .../components/core/Editor/text/text.grammar | 0 .../components/core/Editor/text/text.terms.ts | 0 .../components/core/Editor/text/text.ts | 0 .../core/Editor/timeline/extension.ts | 0 .../core/Editor/timeline/highlight.ts | 0 .../core/Editor/timeline/timeline.grammar | 0 .../core/Editor/timeline/timeline.terms.ts | 0 .../core/Editor/timeline/timeline.ts | 0 .../components/core/Editor/twig/completion.ts | 0 .../components/core/Editor/twig/extension.ts | 0 .../components/core/Editor/twig/highlight.ts | 0 .../core/Editor/twig/pathParameters.ts | 0 .../core/Editor/twig/templateTags.ts | 0 .../components/core/Editor/twig/twig.grammar | 0 .../components/core/Editor/twig/twig.terms.ts | 0 .../components/core/Editor/twig/twig.test.ts | 0 .../components/core/Editor/twig/twig.ts | 0 .../components/core/Editor/twig/util.ts | 0 .../components/core/Editor/url/completion.ts | 0 .../components/core/Editor/url/extension.ts | 0 .../components/core/Editor/url/highlight.ts | 0 .../components/core/Editor/url/url.grammar | 0 .../components/core/Editor/url/url.terms.ts | 0 .../components/core/Editor/url/url.ts | 0 .../components/core/EventViewer.tsx | 0 .../components/core/EventViewerRow.tsx | 0 .../components/core/FormattedError.tsx | 0 .../yaak-client}/components/core/Heading.tsx | 0 .../yaak-client}/components/core/Hotkey.tsx | 0 .../components/core/HotkeyLabel.tsx | 0 .../components/core/HotkeyList.tsx | 0 .../components/core/HttpMethodTag.tsx | 0 .../core/HttpResponseDurationTag.tsx | 0 .../components/core/HttpStatusTag.tsx | 0 .../yaak-client}/components/core/Icon.tsx | 0 .../components/core/IconButton.tsx | 0 .../components/core/IconTooltip.tsx | 0 .../components/core/InlineCode.tsx | 0 .../yaak-client}/components/core/Input.tsx | 0 .../components/core/JsonAttributeTree.tsx | 0 .../components/core/KeyValueRow.tsx | 0 .../yaak-client}/components/core/Label.tsx | 0 .../yaak-client}/components/core/Link.tsx | 0 .../components/core/LoadingIcon.tsx | 0 .../components/core/PairEditor.tsx | 0 .../components/core/PairEditor.util.tsx | 0 .../components/core/PairOrBulkEditor.tsx | 0 .../components/core/PillButton.tsx | 0 .../components/core/PlainInput.tsx | 0 .../yaak-client}/components/core/Prompt.tsx | 0 .../components/core/RadioCards.tsx | 0 .../components/core/RadioDropdown.tsx | 0 .../components/core/SegmentedControl.tsx | 0 .../yaak-client}/components/core/Select.tsx | 0 .../components/core/Separator.tsx | 0 .../yaak-client}/components/core/SizeTag.tsx | 0 .../components/core/SplitLayout.tsx | 0 .../yaak-client}/components/core/Stacks.tsx | 0 .../yaak-client}/components/core/Table.tsx | 0 .../components/core/Tabs/Tabs.tsx | 0 .../yaak-client}/components/core/Toast.tsx | 0 .../yaak-client}/components/core/Tooltip.tsx | 0 .../components/core/WebsocketStatusTag.tsx | 0 .../components/core/tree/Tree.tsx | 0 .../components/core/tree/TreeDragOverlay.tsx | 0 .../components/core/tree/TreeDropMarker.tsx | 0 .../components/core/tree/TreeIndentGuide.tsx | 0 .../components/core/tree/TreeItem.tsx | 0 .../components/core/tree/TreeItemList.tsx | 0 .../components/core/tree/atoms.ts | 0 .../components/core/tree/common.ts | 0 .../core/tree/useSelectableItems.ts | 0 .../components/git/BranchSelectionDialog.tsx | 0 .../components/git/GitCommitDialog.tsx | 0 .../components/git/GitDropdown.tsx | 0 .../components/git/GitRemotesDialog.tsx | 0 .../components/git/HistoryDialog.tsx | 0 .../yaak-client}/components/git/callbacks.tsx | 0 .../components/git/credentials.tsx | 0 .../yaak-client}/components/git/diverged.tsx | 0 .../yaak-client}/components/git/git-util.ts | 0 .../components/git/showAddRemoteDialog.tsx | 0 .../components/git/uncommitted.tsx | 0 .../graphql/GraphQLDocsExplorer.tsx | 0 .../components/graphql/GraphQLEditor.tsx | 0 .../components/graphql/graphqlAtoms.ts | 0 .../responseViewers/AudioViewer.tsx | 0 .../responseViewers/BinaryViewer.tsx | 0 .../components/responseViewers/CsvViewer.tsx | 0 .../responseViewers/EventStreamViewer.tsx | 0 .../responseViewers/HTMLOrTextViewer.tsx | 0 .../responseViewers/ImageViewer.tsx | 0 .../components/responseViewers/JsonViewer.tsx | 0 .../responseViewers/MultipartViewer.tsx | 0 .../components/responseViewers/PdfViewer.css | 0 .../components/responseViewers/PdfViewer.tsx | 0 .../components/responseViewers/SvgViewer.tsx | 0 .../components/responseViewers/TextViewer.tsx | 0 .../responseViewers/VideoViewer.tsx | 0 .../responseViewers/WebPageViewer.tsx | 0 {src-web => apps/yaak-client}/font-size.ts | 0 {src-web => apps/yaak-client}/font.ts | 0 .../yaak-client}/hooks/useActiveCookieJar.ts | 0 .../hooks/useActiveEnvironment.ts | 0 .../hooks/useActiveEnvironmentVariables.ts | 0 .../yaak-client}/hooks/useActiveFolder.ts | 0 .../yaak-client}/hooks/useActiveFolderId.ts | 0 .../yaak-client}/hooks/useActiveRequest.ts | 0 .../yaak-client}/hooks/useActiveRequestId.ts | 0 .../yaak-client}/hooks/useActiveWorkspace.ts | 0 .../hooks/useActiveWorkspaceChangedToast.tsx | 0 .../yaak-client}/hooks/useAllRequests.ts | 0 .../yaak-client}/hooks/useAuthTab.tsx | 0 .../hooks/useCancelHttpResponse.ts | 0 .../yaak-client}/hooks/useCheckForUpdates.tsx | 0 .../yaak-client}/hooks/useClickOutside.ts | 0 .../yaak-client}/hooks/useContainerQuery.ts | 0 .../yaak-client}/hooks/useCopyHttpResponse.ts | 0 .../yaak-client}/hooks/useCreateCookieJar.ts | 0 .../hooks/useCreateDropdownItems.tsx | 0 .../yaak-client}/hooks/useCreateWorkspace.tsx | 0 .../yaak-client}/hooks/useDebouncedState.ts | 0 .../yaak-client}/hooks/useDebouncedValue.ts | 0 .../hooks/useDeleteGrpcConnections.ts | 0 .../hooks/useDeleteHttpResponses.ts | 0 .../hooks/useDeleteSendHistory.tsx | 0 .../hooks/useEnvironmentValueVisibility.ts | 0 .../hooks/useEnvironmentVariables.ts | 0 .../hooks/useEnvironmentsBreakdown.ts | 0 .../hooks/useEventViewerKeyboard.ts | 0 .../yaak-client}/hooks/useExportData.tsx | 0 .../yaak-client}/hooks/useFastMutation.ts | 0 .../hooks/useFloatingSidebarHidden.ts | 0 .../yaak-client}/hooks/useFolderActions.ts | 0 .../yaak-client}/hooks/useFormatText.ts | 0 .../yaak-client}/hooks/useGrpc.ts | 0 .../yaak-client}/hooks/useGrpcProtoFiles.ts | 0 .../hooks/useGrpcRequestActions.ts | 0 .../yaak-client}/hooks/useHeadersTab.tsx | 0 .../yaak-client}/hooks/useHotKey.ts | 0 .../hooks/useHttpAuthentication.ts | 0 .../hooks/useHttpAuthenticationConfig.ts | 0 .../hooks/useHttpRequestActions.ts | 0 .../yaak-client}/hooks/useHttpRequestBody.ts | 0 .../hooks/useHttpResponseEvents.ts | 0 .../yaak-client}/hooks/useImportCurl.ts | 0 .../hooks/useInheritedAuthentication.ts | 0 .../yaak-client}/hooks/useInheritedHeaders.ts | 0 .../yaak-client}/hooks/useInstallPlugin.ts | 0 .../hooks/useIntrospectGraphQL.ts | 0 .../hooks/useIsEncryptionEnabled.ts | 0 .../yaak-client}/hooks/useIsFullscreen.ts | 0 .../yaak-client}/hooks/useKeyValue.ts | 0 .../yaak-client}/hooks/useKeyboardEvent.ts | 0 .../hooks/useLatestGrpcConnection.ts | 0 .../hooks/useLatestHttpResponse.ts | 0 .../hooks/useListenToTauriEvent.ts | 0 .../yaak-client}/hooks/useModelAncestors.ts | 0 .../yaak-client}/hooks/useParentFolders.ts | 0 .../hooks/usePinnedGrpcConnection.ts | 0 .../hooks/usePinnedHttpResponse.ts | 0 .../hooks/usePinnedWebsocketConnection.ts | 0 .../yaak-client}/hooks/usePluginInfo.ts | 0 .../yaak-client}/hooks/usePlugins.ts | 0 .../yaak-client}/hooks/usePortal.ts | 0 .../hooks/usePreferredAppearance.ts | 0 .../yaak-client}/hooks/useRandomKey.ts | 0 .../yaak-client}/hooks/useRecentCookieJars.ts | 0 .../hooks/useRecentEnvironments.ts | 0 .../yaak-client}/hooks/useRecentRequests.ts | 0 .../yaak-client}/hooks/useRecentWorkspaces.ts | 0 .../yaak-client}/hooks/useRenderTemplate.ts | 0 .../yaak-client}/hooks/useRequestEditor.tsx | 0 .../yaak-client}/hooks/useRequestUpdateKey.ts | 0 .../hooks/useResolvedAppearance.ts | 0 .../yaak-client}/hooks/useResolvedTheme.ts | 0 .../hooks/useResponseBodyEventSource.ts | 0 .../yaak-client}/hooks/useResponseBodyText.ts | 0 .../yaak-client}/hooks/useResponseViewMode.ts | 0 .../yaak-client}/hooks/useSaveResponse.tsx | 0 .../yaak-client}/hooks/useScrollIntoView.ts | 0 .../hooks/useSendAnyHttpRequest.ts | 0 .../yaak-client}/hooks/useSendManyRequests.ts | 0 .../hooks/useShouldFloatSidebar.ts | 0 .../yaak-client}/hooks/useSidebarHidden.ts | 0 .../hooks/useSidebarItemCollapsed.ts | 0 .../yaak-client}/hooks/useSidebarWidth.ts | 0 .../yaak-client}/hooks/useStateWithDeps.ts | 0 .../hooks/useStoplightsVisible.ts | 0 .../hooks/useSyncFontSizeSetting.ts | 0 .../hooks/useSyncWorkspaceChildModels.ts | 0 .../hooks/useSyncWorkspaceRequestTitle.ts | 0 .../yaak-client}/hooks/useSyncZoomSetting.ts | 0 .../hooks/useTemplateFunctionConfig.ts | 0 .../hooks/useTemplateFunctions.tsx | 0 .../hooks/useTemplateTokensToString.ts | 0 .../yaak-client}/hooks/useTimedBoolean.ts | 0 .../yaak-client}/hooks/useTimelineViewMode.ts | 0 .../yaak-client}/hooks/useToggle.ts | 0 .../hooks/useToggleCommandPalette.tsx | 0 .../hooks/useWebsocketRequestActions.ts | 0 .../yaak-client}/hooks/useWindowFocus.ts | 0 .../yaak-client}/hooks/useWorkspaceActions.ts | 0 .../yaak-client}/hooks/useZoom.ts | 0 {src-web => apps/yaak-client}/index.html | 0 {src-web => apps/yaak-client}/init/sync.ts | 0 {src-web => apps/yaak-client}/lib/alert.ts | 0 {src-web => apps/yaak-client}/lib/appInfo.ts | 0 apps/yaak-client/lib/atoms.ts | 25 ++ .../lib/atoms/atomWithKVStorage.ts | 0 .../yaak-client}/lib/capitalize.ts | 0 {src-web => apps/yaak-client}/lib/clamp.ts | 0 {src-web => apps/yaak-client}/lib/color.ts | 0 {src-web => apps/yaak-client}/lib/confirm.ts | 0 .../yaak-client}/lib/constants.ts | 0 .../yaak-client}/lib/contentType.ts | 0 {src-web => apps/yaak-client}/lib/copy.ts | 0 .../lib/createRequestAndNavigate.tsx | 0 .../yaak-client}/lib/data/charsets.ts | 0 .../yaak-client}/lib/data/connections.ts | 0 .../yaak-client}/lib/data/encodings.ts | 0 .../yaak-client}/lib/data/headerNames.ts | 0 .../yaak-client}/lib/data/mimetypes.ts | 0 .../yaak-client}/lib/defaultHeaders.ts | 0 .../lib/deleteModelWithConfirm.tsx | 0 {src-web => apps/yaak-client}/lib/dialog.ts | 0 {src-web => apps/yaak-client}/lib/diffYaml.ts | 0 {src-web => apps/yaak-client}/lib/dnd.ts | 0 .../duplicateRequestOrFolderAndNavigate.tsx | 0 .../yaak-client}/lib/editEnvironment.tsx | 0 .../yaak-client}/lib/encryption.ts | 0 .../yaak-client}/lib/formatters.ts | 0 .../yaak-client}/lib/generateId.ts | 0 .../yaak-client}/lib/getNodeText.ts | 0 .../yaak-client}/lib/importData.tsx | 0 apps/yaak-client/lib/initGlobalListeners.tsx | 322 ++++++++++++++++++ {src-web => apps/yaak-client}/lib/jotai.ts | 0 .../yaak-client}/lib/keyValueStore.ts | 0 {src-web => apps/yaak-client}/lib/markdown.ts | 0 .../yaak-client}/lib/minPromiseMillis.ts | 0 .../yaak-client}/lib/model_util.test.ts | 0 .../yaak-client}/lib/model_util.ts | 0 .../yaak-client}/lib/pluralize.ts | 0 .../lib/prepareImportQuerystring.ts | 0 .../yaak-client}/lib/prompt-form.tsx | 0 {src-web => apps/yaak-client}/lib/prompt.ts | 0 .../yaak-client}/lib/queryClient.ts | 0 .../lib/renameModelWithPrompt.tsx | 0 .../yaak-client}/lib/resolvedModelName.ts | 0 .../yaak-client}/lib/responseBody.ts | 0 {src-web => apps/yaak-client}/lib/reveal.ts | 0 {src-web => apps/yaak-client}/lib/router.ts | 0 {src-web => apps/yaak-client}/lib/scopes.ts | 0 .../yaak-client}/lib/sendEphemeralRequest.ts | 0 .../lib/setWorkspaceSearchParams.ts | 0 {src-web => apps/yaak-client}/lib/settings.ts | 0 .../lib/setupOrConfigureEncryption.tsx | 0 .../yaak-client}/lib/showColorPicker.tsx | 0 {src-web => apps/yaak-client}/lib/sleep.ts | 0 {src-web => apps/yaak-client}/lib/tauri.ts | 0 .../yaak-client}/lib/theme/appearance.ts | 0 .../yaak-client}/lib/theme/themes.ts | 0 .../yaak-client}/lib/theme/window.ts | 0 .../yaak-client}/lib/theme/yaakColor.ts | 0 {src-web => apps/yaak-client}/lib/toast.tsx | 0 {src-web => apps/yaak-client}/lib/truncate.ts | 0 {src-web => apps/yaak-client}/main.css | 0 {src-web => apps/yaak-client}/main.tsx | 0 {src-web => apps/yaak-client}/modules.d.ts | 0 {src-web => apps/yaak-client}/package.json | 2 +- .../yaak-client}/postcss.config.cjs | 0 .../yaak-client}/routeTree.gen.ts | 0 .../yaak-client}/routes/__root.tsx | 0 .../yaak-client}/routes/index.tsx | 0 .../routes/workspaces/$workspaceId/index.tsx | 0 .../$workspaceId/requests/$requestId.tsx | 0 .../workspaces/$workspaceId/settings.tsx | 0 .../yaak-client}/routes/workspaces/index.tsx | 0 .../yaak-client}/tailwind.config.cjs | 0 {src-web => apps/yaak-client}/theme.ts | 0 {src-web => apps/yaak-client}/tsconfig.json | 0 .../yaak-client}/tsconfig.node.json | 0 {src-web => apps/yaak-client}/tsr.config.json | 0 {src-web => apps/yaak-client}/vite-env.d.ts | 0 apps/yaak-client/vite.config.ts | 67 ++++ apps/yaak-proxy/index.html | 12 + apps/yaak-proxy/main.css | 95 ++++++ apps/yaak-proxy/main.tsx | 77 +++++ apps/yaak-proxy/package.json | 23 ++ apps/yaak-proxy/tsconfig.json | 22 ++ apps/yaak-proxy/tsconfig.node.json | 10 + apps/yaak-proxy/vite-env.d.ts | 1 + biome.json | 8 +- crates-cli/yaak-cli/src/context.rs | 4 +- .../{yaak-app => yaak-app-client}/.gitignore | 0 .../{yaak-app => yaak-app-client}/Cargo.toml | 4 +- .../bindings/gen_watch.ts | 0 .../bindings/index.ts | 0 .../bindings/plugins_ext.ts | 0 .../{yaak-app => yaak-app-client}/build.rs | 0 .../capabilities/default.json | 0 .../icons/dev/128x128.png | Bin .../icons/dev/128x128@2x.png | Bin .../icons/dev/32x32.png | Bin .../icons/dev/64x64.png | Bin .../icons/dev/Square107x107Logo.png | Bin .../icons/dev/Square142x142Logo.png | Bin .../icons/dev/Square150x150Logo.png | Bin .../icons/dev/Square284x284Logo.png | Bin .../icons/dev/Square30x30Logo.png | Bin .../icons/dev/Square310x310Logo.png | Bin .../icons/dev/Square44x44Logo.png | Bin .../icons/dev/Square71x71Logo.png | Bin .../icons/dev/Square89x89Logo.png | Bin .../icons/dev/StoreLogo.png | Bin .../dev/android/mipmap-hdpi/ic_launcher.png | Bin .../mipmap-hdpi/ic_launcher_foreground.png | Bin .../android/mipmap-hdpi/ic_launcher_round.png | Bin .../dev/android/mipmap-mdpi/ic_launcher.png | Bin .../mipmap-mdpi/ic_launcher_foreground.png | Bin .../android/mipmap-mdpi/ic_launcher_round.png | Bin .../dev/android/mipmap-xhdpi/ic_launcher.png | Bin .../mipmap-xhdpi/ic_launcher_foreground.png | Bin .../mipmap-xhdpi/ic_launcher_round.png | Bin .../dev/android/mipmap-xxhdpi/ic_launcher.png | Bin .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin .../mipmap-xxhdpi/ic_launcher_round.png | Bin .../android/mipmap-xxxhdpi/ic_launcher.png | Bin .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin .../mipmap-xxxhdpi/ic_launcher_round.png | Bin .../icons/dev/icon.icns | Bin .../icons/dev/icon.ico | Bin .../icons/dev/icon.png | Bin .../icons/dev/ios/AppIcon-20x20@1x.png | Bin .../icons/dev/ios/AppIcon-20x20@2x-1.png | Bin .../icons/dev/ios/AppIcon-20x20@2x.png | Bin .../icons/dev/ios/AppIcon-20x20@3x.png | Bin .../icons/dev/ios/AppIcon-29x29@1x.png | Bin .../icons/dev/ios/AppIcon-29x29@2x-1.png | Bin .../icons/dev/ios/AppIcon-29x29@2x.png | Bin .../icons/dev/ios/AppIcon-29x29@3x.png | Bin .../icons/dev/ios/AppIcon-40x40@1x.png | Bin .../icons/dev/ios/AppIcon-40x40@2x-1.png | Bin .../icons/dev/ios/AppIcon-40x40@2x.png | Bin .../icons/dev/ios/AppIcon-40x40@3x.png | Bin .../icons/dev/ios/AppIcon-512@2x.png | Bin .../icons/dev/ios/AppIcon-60x60@2x.png | Bin .../icons/dev/ios/AppIcon-60x60@3x.png | Bin .../icons/dev/ios/AppIcon-76x76@1x.png | Bin .../icons/dev/ios/AppIcon-76x76@2x.png | Bin .../icons/dev/ios/AppIcon-83.5x83.5@2x.png | Bin .../icons/icon-dev.png | Bin .../icons/icon.png | Bin .../icons/release/128x128.png | Bin .../icons/release/128x128@2x.png | Bin .../icons/release/32x32.png | Bin .../icons/release/64x64.png | Bin .../icons/release/Square107x107Logo.png | Bin .../icons/release/Square142x142Logo.png | Bin .../icons/release/Square150x150Logo.png | Bin .../icons/release/Square284x284Logo.png | Bin .../icons/release/Square30x30Logo.png | Bin .../icons/release/Square310x310Logo.png | Bin .../icons/release/Square44x44Logo.png | Bin .../icons/release/Square71x71Logo.png | Bin .../icons/release/Square89x89Logo.png | Bin .../icons/release/StoreLogo.png | Bin .../android/mipmap-hdpi/ic_launcher.png | Bin .../mipmap-hdpi/ic_launcher_foreground.png | Bin .../android/mipmap-hdpi/ic_launcher_round.png | Bin .../android/mipmap-mdpi/ic_launcher.png | Bin .../mipmap-mdpi/ic_launcher_foreground.png | Bin .../android/mipmap-mdpi/ic_launcher_round.png | Bin .../android/mipmap-xhdpi/ic_launcher.png | Bin .../mipmap-xhdpi/ic_launcher_foreground.png | Bin .../mipmap-xhdpi/ic_launcher_round.png | Bin .../android/mipmap-xxhdpi/ic_launcher.png | Bin .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin .../mipmap-xxhdpi/ic_launcher_round.png | Bin .../android/mipmap-xxxhdpi/ic_launcher.png | Bin .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin .../mipmap-xxxhdpi/ic_launcher_round.png | Bin .../icons/release/icon.icns | Bin .../icons/release/icon.ico | Bin .../icons/release/icon.png | Bin .../icons/release/ios/AppIcon-20x20@1x.png | Bin .../icons/release/ios/AppIcon-20x20@2x-1.png | Bin .../icons/release/ios/AppIcon-20x20@2x.png | Bin .../icons/release/ios/AppIcon-20x20@3x.png | Bin .../icons/release/ios/AppIcon-29x29@1x.png | Bin .../icons/release/ios/AppIcon-29x29@2x-1.png | Bin .../icons/release/ios/AppIcon-29x29@2x.png | Bin .../icons/release/ios/AppIcon-29x29@3x.png | Bin .../icons/release/ios/AppIcon-40x40@1x.png | Bin .../icons/release/ios/AppIcon-40x40@2x-1.png | Bin .../icons/release/ios/AppIcon-40x40@2x.png | Bin .../icons/release/ios/AppIcon-40x40@3x.png | Bin .../icons/release/ios/AppIcon-512@2x.png | Bin .../icons/release/ios/AppIcon-60x60@2x.png | Bin .../icons/release/ios/AppIcon-60x60@3x.png | Bin .../icons/release/ios/AppIcon-76x76@1x.png | Bin .../icons/release/ios/AppIcon-76x76@2x.png | Bin .../release/ios/AppIcon-83.5x83.5@2x.png | Bin .../macos/entitlements.plist | 0 .../macos/entitlements.yaaknode.plist | 0 .../macos/entitlements.yaakprotoc.plist | 0 crates-tauri/yaak-app-client/package.json | 6 + .../src/commands.rs | 0 .../src/encoding.rs | 0 .../src/error.rs | 0 .../src/git_ext.rs | 0 .../{yaak-app => yaak-app-client}/src/grpc.rs | 0 .../src/history.rs | 0 .../src/http_request.rs | 0 .../src/import.rs | 0 .../{yaak-app => yaak-app-client}/src/lib.rs | 0 crates-tauri/yaak-app-client/src/main.rs | 5 + .../src/models_ext.rs | 0 .../src/notifications.rs | 0 .../src/plugin_events.rs | 0 .../src/plugins_ext.rs | 0 .../src/render.rs | 0 .../src/sync_ext.rs | 0 .../src/updates.rs | 0 .../src/uri_scheme.rs | 0 .../src/window.rs | 0 .../src/window_menu.rs | 0 .../src/ws_ext.rs | 0 .../static/greg.jpeg | Bin .../tauri.conf.json | 15 +- .../tauri.development.conf.json | 0 .../tauri.linux.conf.json | 0 .../tauri.release.conf.json | 0 .../template.desktop | 0 crates-tauri/yaak-app-proxy/.gitignore | 8 + crates-tauri/yaak-app-proxy/Cargo.toml | 18 + crates-tauri/yaak-app-proxy/bindings/index.ts | 1 + crates-tauri/yaak-app-proxy/build.rs | 3 + .../yaak-app-proxy/capabilities/default.json | 10 + .../{yaak-app => yaak-app-proxy}/package.json | 2 +- crates-tauri/yaak-app-proxy/src/lib.rs | 63 ++++ .../{yaak-app => yaak-app-proxy}/src/main.rs | 2 +- .../tauri.development.conf.json | 13 + .../yaak-app-proxy/tauri.release.conf.json | 5 + crates-tauri/yaak-app-proxy/template.desktop | 9 + crates-tauri/yaak-license/index.ts | 34 +- crates/yaak-git/index.ts | 244 +++++++------ crates/yaak-models/guest-js/store.ts | 142 ++++---- crates/yaak-plugins/src/manager.rs | 2 +- crates/yaak-sync/index.ts | 41 ++- package-lock.json | 316 +++++++++-------- package.json | 28 +- packages/plugin-runtime/package.json | 2 +- scripts/replace-version.cjs | 17 +- scripts/run-workspaces-dev.mjs | 51 +-- scripts/vendor-plugins.cjs | 26 +- src-web/lib/atoms.ts | 22 -- src-web/lib/initGlobalListeners.tsx | 298 ---------------- src-web/vite.config.ts | 61 ---- 613 files changed, 1356 insertions(+), 812 deletions(-) rename {src-web => apps/yaak-client}/.gitignore (100%) rename {src-web => apps/yaak-client}/commands/commands.tsx (100%) rename {src-web => apps/yaak-client}/commands/createEnvironment.tsx (100%) rename {src-web => apps/yaak-client}/commands/deleteWebsocketConnections.ts (100%) rename {src-web => apps/yaak-client}/commands/moveToWorkspace.tsx (100%) rename {src-web => apps/yaak-client}/commands/openFolderSettings.tsx (100%) rename {src-web => apps/yaak-client}/commands/openSettings.tsx (100%) rename {src-web => apps/yaak-client}/commands/openWorkspaceFromSyncDir.tsx (100%) rename {src-web => apps/yaak-client}/commands/openWorkspaceSettings.tsx (100%) rename {src-web => apps/yaak-client}/commands/switchWorkspace.tsx (100%) rename {src-web => apps/yaak-client}/components/BinaryFileEditor.tsx (100%) rename {src-web => apps/yaak-client}/components/CargoFeature.tsx (100%) rename {src-web => apps/yaak-client}/components/CloneGitRepositoryDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/ColorIndicator.tsx (100%) rename {src-web => apps/yaak-client}/components/CommandPaletteDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/ConfirmLargeRequestBody.tsx (100%) rename {src-web => apps/yaak-client}/components/ConfirmLargeResponse.tsx (100%) rename {src-web => apps/yaak-client}/components/ConfirmLargeResponseRequest.tsx (100%) rename {src-web => apps/yaak-client}/components/CookieDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/CookieDropdown.tsx (100%) rename {src-web => apps/yaak-client}/components/CopyButton.tsx (100%) rename {src-web => apps/yaak-client}/components/CopyIconButton.tsx (100%) rename {src-web => apps/yaak-client}/components/CreateDropdown.tsx (100%) rename {src-web => apps/yaak-client}/components/CreateEnvironmentDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/CreateWorkspaceDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/Dialogs.tsx (100%) rename {src-web => apps/yaak-client}/components/DnsOverridesEditor.tsx (100%) rename {src-web => apps/yaak-client}/components/DropMarker.tsx (100%) rename {src-web => apps/yaak-client}/components/DynamicForm.tsx (100%) rename {src-web => apps/yaak-client}/components/EmptyStateText.tsx (100%) rename {src-web => apps/yaak-client}/components/EncryptionHelp.tsx (100%) rename {src-web => apps/yaak-client}/components/EnvironmentActionsDropdown.tsx (100%) rename {src-web => apps/yaak-client}/components/EnvironmentColorIndicator.tsx (100%) rename {src-web => apps/yaak-client}/components/EnvironmentColorPicker.tsx (100%) rename {src-web => apps/yaak-client}/components/EnvironmentEditDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/EnvironmentEditor.tsx (100%) rename {src-web => apps/yaak-client}/components/EnvironmentSharableTooltip.tsx (100%) rename {src-web => apps/yaak-client}/components/ErrorBoundary.tsx (100%) rename {src-web => apps/yaak-client}/components/ExportDataDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/FolderLayout.tsx (100%) rename {src-web => apps/yaak-client}/components/FolderSettingsDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/FormMultipartEditor.tsx (100%) rename {src-web => apps/yaak-client}/components/FormUrlencodedEditor.tsx (100%) rename {src-web => apps/yaak-client}/components/GlobalHooks.tsx (100%) rename {src-web => apps/yaak-client}/components/GrpcConnectionLayout.tsx (100%) rename {src-web => apps/yaak-client}/components/GrpcEditor.tsx (100%) rename {src-web => apps/yaak-client}/components/GrpcProtoSelectionDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/GrpcRequestPane.tsx (100%) rename {src-web => apps/yaak-client}/components/GrpcResponsePane.tsx (100%) rename {src-web => apps/yaak-client}/components/HeaderSize.tsx (100%) rename {src-web => apps/yaak-client}/components/HeadersEditor.tsx (100%) rename {src-web => apps/yaak-client}/components/HttpAuthenticationEditor.tsx (100%) rename {src-web => apps/yaak-client}/components/HttpRequestLayout.tsx (100%) rename {src-web => apps/yaak-client}/components/HttpRequestPane.tsx (100%) rename {src-web => apps/yaak-client}/components/HttpResponsePane.tsx (100%) rename {src-web => apps/yaak-client}/components/HttpResponseTimeline.tsx (100%) rename {src-web => apps/yaak-client}/components/ImportCurlButton.tsx (100%) rename {src-web => apps/yaak-client}/components/ImportDataDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/IsDev.tsx (100%) rename {src-web => apps/yaak-client}/components/KeyboardShortcutsDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/LicenseBadge.tsx (100%) rename {src-web => apps/yaak-client}/components/LocalImage.tsx (100%) rename {src-web => apps/yaak-client}/components/Markdown.tsx (100%) rename {src-web => apps/yaak-client}/components/MarkdownEditor.tsx (100%) rename {src-web => apps/yaak-client}/components/MoveToWorkspaceDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/Overlay.tsx (100%) rename {src-web => apps/yaak-client}/components/Portal.tsx (100%) rename {src-web => apps/yaak-client}/components/Prose.css (100%) rename {src-web => apps/yaak-client}/components/Prose.tsx (100%) rename {src-web => apps/yaak-client}/components/RecentGrpcConnectionsDropdown.tsx (100%) rename {src-web => apps/yaak-client}/components/RecentHttpResponsesDropdown.tsx (100%) rename {src-web => apps/yaak-client}/components/RecentRequestsDropdown.tsx (100%) rename {src-web => apps/yaak-client}/components/RecentWebsocketConnectionsDropdown.tsx (100%) rename {src-web => apps/yaak-client}/components/RedirectToLatestWorkspace.tsx (100%) rename {src-web => apps/yaak-client}/components/RequestBodyViewer.tsx (100%) rename {src-web => apps/yaak-client}/components/RequestMethodDropdown.tsx (100%) rename {src-web => apps/yaak-client}/components/ResizeHandle.tsx (100%) rename {src-web => apps/yaak-client}/components/ResponseCookies.tsx (100%) rename {src-web => apps/yaak-client}/components/ResponseHeaders.tsx (100%) rename {src-web => apps/yaak-client}/components/ResponseInfo.tsx (100%) rename {src-web => apps/yaak-client}/components/RouteError.tsx (100%) rename {src-web => apps/yaak-client}/components/SelectFile.tsx (100%) rename {src-web => apps/yaak-client}/components/Settings/Settings.tsx (100%) rename {src-web => apps/yaak-client}/components/Settings/SettingsCertificates.tsx (100%) rename {src-web => apps/yaak-client}/components/Settings/SettingsGeneral.tsx (100%) rename {src-web => apps/yaak-client}/components/Settings/SettingsHotkeys.tsx (100%) rename {src-web => apps/yaak-client}/components/Settings/SettingsInterface.tsx (100%) rename {src-web => apps/yaak-client}/components/Settings/SettingsLicense.tsx (100%) rename {src-web => apps/yaak-client}/components/Settings/SettingsPlugins.tsx (100%) rename {src-web => apps/yaak-client}/components/Settings/SettingsProxy.tsx (100%) rename {src-web => apps/yaak-client}/components/Settings/SettingsTheme.tsx (100%) rename {src-web => apps/yaak-client}/components/SettingsDropdown.tsx (100%) rename {src-web => apps/yaak-client}/components/Sidebar.tsx (100%) rename {src-web => apps/yaak-client}/components/SidebarActions.tsx (100%) rename {src-web => apps/yaak-client}/components/SwitchWorkspaceDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/SyncToFilesystemSetting.tsx (100%) rename {src-web => apps/yaak-client}/components/TemplateFunctionDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/Toasts.tsx (100%) rename {src-web => apps/yaak-client}/components/UrlBar.tsx (100%) rename {src-web => apps/yaak-client}/components/UrlParameterEditor.tsx (100%) rename {src-web => apps/yaak-client}/components/WebsocketRequestLayout.tsx (100%) rename {src-web => apps/yaak-client}/components/WebsocketRequestPane.tsx (100%) rename {src-web => apps/yaak-client}/components/WebsocketResponsePane.tsx (100%) rename {src-web => apps/yaak-client}/components/WindowControls.tsx (100%) rename {src-web => apps/yaak-client}/components/Workspace.tsx (100%) rename {src-web => apps/yaak-client}/components/WorkspaceActionsDropdown.tsx (100%) rename {src-web => apps/yaak-client}/components/WorkspaceEncryptionSetting.tsx (100%) rename {src-web => apps/yaak-client}/components/WorkspaceHeader.tsx (100%) rename {src-web => apps/yaak-client}/components/WorkspaceSettingsDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Alert.tsx (100%) rename {src-web => apps/yaak-client}/components/core/AutoScroller.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Banner.tsx (100%) rename {src-web => apps/yaak-client}/components/core/BulkPairEditor.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Button.tsx (100%) rename {src-web => apps/yaak-client}/components/core/ButtonInfiniteLoading.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Checkbox.tsx (100%) rename {src-web => apps/yaak-client}/components/core/ColorPicker.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Confirm.tsx (100%) rename {src-web => apps/yaak-client}/components/core/CountBadge.tsx (100%) rename {src-web => apps/yaak-client}/components/core/DetailsBanner.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Dialog.tsx (100%) rename {src-web => apps/yaak-client}/components/core/DismissibleBanner.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Dropdown.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Editor/BetterMatchDecorator.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/DiffViewer.css (100%) rename {src-web => apps/yaak-client}/components/core/Editor/DiffViewer.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Editor/Editor.css (100%) rename {src-web => apps/yaak-client}/components/core/Editor/Editor.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Editor/LazyEditor.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Editor/extensions.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/filter/extension.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/filter/filter.grammar (100%) rename {src-web => apps/yaak-client}/components/core/Editor/filter/filter.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/filter/highlight.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/filter/query.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/genericCompletion.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/hyperlink/extension.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/json-lint.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/pairs/extension.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/pairs/highlight.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/pairs/pairs.grammar (100%) rename {src-web => apps/yaak-client}/components/core/Editor/pairs/pairs.terms.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/pairs/pairs.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/searchMatchCount.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/singleLine.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/text/extension.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/text/text.grammar (100%) rename {src-web => apps/yaak-client}/components/core/Editor/text/text.terms.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/text/text.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/timeline/extension.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/timeline/highlight.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/timeline/timeline.grammar (100%) rename {src-web => apps/yaak-client}/components/core/Editor/timeline/timeline.terms.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/timeline/timeline.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/twig/completion.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/twig/extension.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/twig/highlight.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/twig/pathParameters.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/twig/templateTags.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/twig/twig.grammar (100%) rename {src-web => apps/yaak-client}/components/core/Editor/twig/twig.terms.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/twig/twig.test.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/twig/twig.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/twig/util.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/url/completion.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/url/extension.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/url/highlight.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/url/url.grammar (100%) rename {src-web => apps/yaak-client}/components/core/Editor/url/url.terms.ts (100%) rename {src-web => apps/yaak-client}/components/core/Editor/url/url.ts (100%) rename {src-web => apps/yaak-client}/components/core/EventViewer.tsx (100%) rename {src-web => apps/yaak-client}/components/core/EventViewerRow.tsx (100%) rename {src-web => apps/yaak-client}/components/core/FormattedError.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Heading.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Hotkey.tsx (100%) rename {src-web => apps/yaak-client}/components/core/HotkeyLabel.tsx (100%) rename {src-web => apps/yaak-client}/components/core/HotkeyList.tsx (100%) rename {src-web => apps/yaak-client}/components/core/HttpMethodTag.tsx (100%) rename {src-web => apps/yaak-client}/components/core/HttpResponseDurationTag.tsx (100%) rename {src-web => apps/yaak-client}/components/core/HttpStatusTag.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Icon.tsx (100%) rename {src-web => apps/yaak-client}/components/core/IconButton.tsx (100%) rename {src-web => apps/yaak-client}/components/core/IconTooltip.tsx (100%) rename {src-web => apps/yaak-client}/components/core/InlineCode.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Input.tsx (100%) rename {src-web => apps/yaak-client}/components/core/JsonAttributeTree.tsx (100%) rename {src-web => apps/yaak-client}/components/core/KeyValueRow.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Label.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Link.tsx (100%) rename {src-web => apps/yaak-client}/components/core/LoadingIcon.tsx (100%) rename {src-web => apps/yaak-client}/components/core/PairEditor.tsx (100%) rename {src-web => apps/yaak-client}/components/core/PairEditor.util.tsx (100%) rename {src-web => apps/yaak-client}/components/core/PairOrBulkEditor.tsx (100%) rename {src-web => apps/yaak-client}/components/core/PillButton.tsx (100%) rename {src-web => apps/yaak-client}/components/core/PlainInput.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Prompt.tsx (100%) rename {src-web => apps/yaak-client}/components/core/RadioCards.tsx (100%) rename {src-web => apps/yaak-client}/components/core/RadioDropdown.tsx (100%) rename {src-web => apps/yaak-client}/components/core/SegmentedControl.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Select.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Separator.tsx (100%) rename {src-web => apps/yaak-client}/components/core/SizeTag.tsx (100%) rename {src-web => apps/yaak-client}/components/core/SplitLayout.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Stacks.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Table.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Tabs/Tabs.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Toast.tsx (100%) rename {src-web => apps/yaak-client}/components/core/Tooltip.tsx (100%) rename {src-web => apps/yaak-client}/components/core/WebsocketStatusTag.tsx (100%) rename {src-web => apps/yaak-client}/components/core/tree/Tree.tsx (100%) rename {src-web => apps/yaak-client}/components/core/tree/TreeDragOverlay.tsx (100%) rename {src-web => apps/yaak-client}/components/core/tree/TreeDropMarker.tsx (100%) rename {src-web => apps/yaak-client}/components/core/tree/TreeIndentGuide.tsx (100%) rename {src-web => apps/yaak-client}/components/core/tree/TreeItem.tsx (100%) rename {src-web => apps/yaak-client}/components/core/tree/TreeItemList.tsx (100%) rename {src-web => apps/yaak-client}/components/core/tree/atoms.ts (100%) rename {src-web => apps/yaak-client}/components/core/tree/common.ts (100%) rename {src-web => apps/yaak-client}/components/core/tree/useSelectableItems.ts (100%) rename {src-web => apps/yaak-client}/components/git/BranchSelectionDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/git/GitCommitDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/git/GitDropdown.tsx (100%) rename {src-web => apps/yaak-client}/components/git/GitRemotesDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/git/HistoryDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/git/callbacks.tsx (100%) rename {src-web => apps/yaak-client}/components/git/credentials.tsx (100%) rename {src-web => apps/yaak-client}/components/git/diverged.tsx (100%) rename {src-web => apps/yaak-client}/components/git/git-util.ts (100%) rename {src-web => apps/yaak-client}/components/git/showAddRemoteDialog.tsx (100%) rename {src-web => apps/yaak-client}/components/git/uncommitted.tsx (100%) rename {src-web => apps/yaak-client}/components/graphql/GraphQLDocsExplorer.tsx (100%) rename {src-web => apps/yaak-client}/components/graphql/GraphQLEditor.tsx (100%) rename {src-web => apps/yaak-client}/components/graphql/graphqlAtoms.ts (100%) rename {src-web => apps/yaak-client}/components/responseViewers/AudioViewer.tsx (100%) rename {src-web => apps/yaak-client}/components/responseViewers/BinaryViewer.tsx (100%) rename {src-web => apps/yaak-client}/components/responseViewers/CsvViewer.tsx (100%) rename {src-web => apps/yaak-client}/components/responseViewers/EventStreamViewer.tsx (100%) rename {src-web => apps/yaak-client}/components/responseViewers/HTMLOrTextViewer.tsx (100%) rename {src-web => apps/yaak-client}/components/responseViewers/ImageViewer.tsx (100%) rename {src-web => apps/yaak-client}/components/responseViewers/JsonViewer.tsx (100%) rename {src-web => apps/yaak-client}/components/responseViewers/MultipartViewer.tsx (100%) rename {src-web => apps/yaak-client}/components/responseViewers/PdfViewer.css (100%) rename {src-web => apps/yaak-client}/components/responseViewers/PdfViewer.tsx (100%) rename {src-web => apps/yaak-client}/components/responseViewers/SvgViewer.tsx (100%) rename {src-web => apps/yaak-client}/components/responseViewers/TextViewer.tsx (100%) rename {src-web => apps/yaak-client}/components/responseViewers/VideoViewer.tsx (100%) rename {src-web => apps/yaak-client}/components/responseViewers/WebPageViewer.tsx (100%) rename {src-web => apps/yaak-client}/font-size.ts (100%) rename {src-web => apps/yaak-client}/font.ts (100%) rename {src-web => apps/yaak-client}/hooks/useActiveCookieJar.ts (100%) rename {src-web => apps/yaak-client}/hooks/useActiveEnvironment.ts (100%) rename {src-web => apps/yaak-client}/hooks/useActiveEnvironmentVariables.ts (100%) rename {src-web => apps/yaak-client}/hooks/useActiveFolder.ts (100%) rename {src-web => apps/yaak-client}/hooks/useActiveFolderId.ts (100%) rename {src-web => apps/yaak-client}/hooks/useActiveRequest.ts (100%) rename {src-web => apps/yaak-client}/hooks/useActiveRequestId.ts (100%) rename {src-web => apps/yaak-client}/hooks/useActiveWorkspace.ts (100%) rename {src-web => apps/yaak-client}/hooks/useActiveWorkspaceChangedToast.tsx (100%) rename {src-web => apps/yaak-client}/hooks/useAllRequests.ts (100%) rename {src-web => apps/yaak-client}/hooks/useAuthTab.tsx (100%) rename {src-web => apps/yaak-client}/hooks/useCancelHttpResponse.ts (100%) rename {src-web => apps/yaak-client}/hooks/useCheckForUpdates.tsx (100%) rename {src-web => apps/yaak-client}/hooks/useClickOutside.ts (100%) rename {src-web => apps/yaak-client}/hooks/useContainerQuery.ts (100%) rename {src-web => apps/yaak-client}/hooks/useCopyHttpResponse.ts (100%) rename {src-web => apps/yaak-client}/hooks/useCreateCookieJar.ts (100%) rename {src-web => apps/yaak-client}/hooks/useCreateDropdownItems.tsx (100%) rename {src-web => apps/yaak-client}/hooks/useCreateWorkspace.tsx (100%) rename {src-web => apps/yaak-client}/hooks/useDebouncedState.ts (100%) rename {src-web => apps/yaak-client}/hooks/useDebouncedValue.ts (100%) rename {src-web => apps/yaak-client}/hooks/useDeleteGrpcConnections.ts (100%) rename {src-web => apps/yaak-client}/hooks/useDeleteHttpResponses.ts (100%) rename {src-web => apps/yaak-client}/hooks/useDeleteSendHistory.tsx (100%) rename {src-web => apps/yaak-client}/hooks/useEnvironmentValueVisibility.ts (100%) rename {src-web => apps/yaak-client}/hooks/useEnvironmentVariables.ts (100%) rename {src-web => apps/yaak-client}/hooks/useEnvironmentsBreakdown.ts (100%) rename {src-web => apps/yaak-client}/hooks/useEventViewerKeyboard.ts (100%) rename {src-web => apps/yaak-client}/hooks/useExportData.tsx (100%) rename {src-web => apps/yaak-client}/hooks/useFastMutation.ts (100%) rename {src-web => apps/yaak-client}/hooks/useFloatingSidebarHidden.ts (100%) rename {src-web => apps/yaak-client}/hooks/useFolderActions.ts (100%) rename {src-web => apps/yaak-client}/hooks/useFormatText.ts (100%) rename {src-web => apps/yaak-client}/hooks/useGrpc.ts (100%) rename {src-web => apps/yaak-client}/hooks/useGrpcProtoFiles.ts (100%) rename {src-web => apps/yaak-client}/hooks/useGrpcRequestActions.ts (100%) rename {src-web => apps/yaak-client}/hooks/useHeadersTab.tsx (100%) rename {src-web => apps/yaak-client}/hooks/useHotKey.ts (100%) rename {src-web => apps/yaak-client}/hooks/useHttpAuthentication.ts (100%) rename {src-web => apps/yaak-client}/hooks/useHttpAuthenticationConfig.ts (100%) rename {src-web => apps/yaak-client}/hooks/useHttpRequestActions.ts (100%) rename {src-web => apps/yaak-client}/hooks/useHttpRequestBody.ts (100%) rename {src-web => apps/yaak-client}/hooks/useHttpResponseEvents.ts (100%) rename {src-web => apps/yaak-client}/hooks/useImportCurl.ts (100%) rename {src-web => apps/yaak-client}/hooks/useInheritedAuthentication.ts (100%) rename {src-web => apps/yaak-client}/hooks/useInheritedHeaders.ts (100%) rename {src-web => apps/yaak-client}/hooks/useInstallPlugin.ts (100%) rename {src-web => apps/yaak-client}/hooks/useIntrospectGraphQL.ts (100%) rename {src-web => apps/yaak-client}/hooks/useIsEncryptionEnabled.ts (100%) rename {src-web => apps/yaak-client}/hooks/useIsFullscreen.ts (100%) rename {src-web => apps/yaak-client}/hooks/useKeyValue.ts (100%) rename {src-web => apps/yaak-client}/hooks/useKeyboardEvent.ts (100%) rename {src-web => apps/yaak-client}/hooks/useLatestGrpcConnection.ts (100%) rename {src-web => apps/yaak-client}/hooks/useLatestHttpResponse.ts (100%) rename {src-web => apps/yaak-client}/hooks/useListenToTauriEvent.ts (100%) rename {src-web => apps/yaak-client}/hooks/useModelAncestors.ts (100%) rename {src-web => apps/yaak-client}/hooks/useParentFolders.ts (100%) rename {src-web => apps/yaak-client}/hooks/usePinnedGrpcConnection.ts (100%) rename {src-web => apps/yaak-client}/hooks/usePinnedHttpResponse.ts (100%) rename {src-web => apps/yaak-client}/hooks/usePinnedWebsocketConnection.ts (100%) rename {src-web => apps/yaak-client}/hooks/usePluginInfo.ts (100%) rename {src-web => apps/yaak-client}/hooks/usePlugins.ts (100%) rename {src-web => apps/yaak-client}/hooks/usePortal.ts (100%) rename {src-web => apps/yaak-client}/hooks/usePreferredAppearance.ts (100%) rename {src-web => apps/yaak-client}/hooks/useRandomKey.ts (100%) rename {src-web => apps/yaak-client}/hooks/useRecentCookieJars.ts (100%) rename {src-web => apps/yaak-client}/hooks/useRecentEnvironments.ts (100%) rename {src-web => apps/yaak-client}/hooks/useRecentRequests.ts (100%) rename {src-web => apps/yaak-client}/hooks/useRecentWorkspaces.ts (100%) rename {src-web => apps/yaak-client}/hooks/useRenderTemplate.ts (100%) rename {src-web => apps/yaak-client}/hooks/useRequestEditor.tsx (100%) rename {src-web => apps/yaak-client}/hooks/useRequestUpdateKey.ts (100%) rename {src-web => apps/yaak-client}/hooks/useResolvedAppearance.ts (100%) rename {src-web => apps/yaak-client}/hooks/useResolvedTheme.ts (100%) rename {src-web => apps/yaak-client}/hooks/useResponseBodyEventSource.ts (100%) rename {src-web => apps/yaak-client}/hooks/useResponseBodyText.ts (100%) rename {src-web => apps/yaak-client}/hooks/useResponseViewMode.ts (100%) rename {src-web => apps/yaak-client}/hooks/useSaveResponse.tsx (100%) rename {src-web => apps/yaak-client}/hooks/useScrollIntoView.ts (100%) rename {src-web => apps/yaak-client}/hooks/useSendAnyHttpRequest.ts (100%) rename {src-web => apps/yaak-client}/hooks/useSendManyRequests.ts (100%) rename {src-web => apps/yaak-client}/hooks/useShouldFloatSidebar.ts (100%) rename {src-web => apps/yaak-client}/hooks/useSidebarHidden.ts (100%) rename {src-web => apps/yaak-client}/hooks/useSidebarItemCollapsed.ts (100%) rename {src-web => apps/yaak-client}/hooks/useSidebarWidth.ts (100%) rename {src-web => apps/yaak-client}/hooks/useStateWithDeps.ts (100%) rename {src-web => apps/yaak-client}/hooks/useStoplightsVisible.ts (100%) rename {src-web => apps/yaak-client}/hooks/useSyncFontSizeSetting.ts (100%) rename {src-web => apps/yaak-client}/hooks/useSyncWorkspaceChildModels.ts (100%) rename {src-web => apps/yaak-client}/hooks/useSyncWorkspaceRequestTitle.ts (100%) rename {src-web => apps/yaak-client}/hooks/useSyncZoomSetting.ts (100%) rename {src-web => apps/yaak-client}/hooks/useTemplateFunctionConfig.ts (100%) rename {src-web => apps/yaak-client}/hooks/useTemplateFunctions.tsx (100%) rename {src-web => apps/yaak-client}/hooks/useTemplateTokensToString.ts (100%) rename {src-web => apps/yaak-client}/hooks/useTimedBoolean.ts (100%) rename {src-web => apps/yaak-client}/hooks/useTimelineViewMode.ts (100%) rename {src-web => apps/yaak-client}/hooks/useToggle.ts (100%) rename {src-web => apps/yaak-client}/hooks/useToggleCommandPalette.tsx (100%) rename {src-web => apps/yaak-client}/hooks/useWebsocketRequestActions.ts (100%) rename {src-web => apps/yaak-client}/hooks/useWindowFocus.ts (100%) rename {src-web => apps/yaak-client}/hooks/useWorkspaceActions.ts (100%) rename {src-web => apps/yaak-client}/hooks/useZoom.ts (100%) rename {src-web => apps/yaak-client}/index.html (100%) rename {src-web => apps/yaak-client}/init/sync.ts (100%) rename {src-web => apps/yaak-client}/lib/alert.ts (100%) rename {src-web => apps/yaak-client}/lib/appInfo.ts (100%) create mode 100644 apps/yaak-client/lib/atoms.ts rename {src-web => apps/yaak-client}/lib/atoms/atomWithKVStorage.ts (100%) rename {src-web => apps/yaak-client}/lib/capitalize.ts (100%) rename {src-web => apps/yaak-client}/lib/clamp.ts (100%) rename {src-web => apps/yaak-client}/lib/color.ts (100%) rename {src-web => apps/yaak-client}/lib/confirm.ts (100%) rename {src-web => apps/yaak-client}/lib/constants.ts (100%) rename {src-web => apps/yaak-client}/lib/contentType.ts (100%) rename {src-web => apps/yaak-client}/lib/copy.ts (100%) rename {src-web => apps/yaak-client}/lib/createRequestAndNavigate.tsx (100%) rename {src-web => apps/yaak-client}/lib/data/charsets.ts (100%) rename {src-web => apps/yaak-client}/lib/data/connections.ts (100%) rename {src-web => apps/yaak-client}/lib/data/encodings.ts (100%) rename {src-web => apps/yaak-client}/lib/data/headerNames.ts (100%) rename {src-web => apps/yaak-client}/lib/data/mimetypes.ts (100%) rename {src-web => apps/yaak-client}/lib/defaultHeaders.ts (100%) rename {src-web => apps/yaak-client}/lib/deleteModelWithConfirm.tsx (100%) rename {src-web => apps/yaak-client}/lib/dialog.ts (100%) rename {src-web => apps/yaak-client}/lib/diffYaml.ts (100%) rename {src-web => apps/yaak-client}/lib/dnd.ts (100%) rename {src-web => apps/yaak-client}/lib/duplicateRequestOrFolderAndNavigate.tsx (100%) rename {src-web => apps/yaak-client}/lib/editEnvironment.tsx (100%) rename {src-web => apps/yaak-client}/lib/encryption.ts (100%) rename {src-web => apps/yaak-client}/lib/formatters.ts (100%) rename {src-web => apps/yaak-client}/lib/generateId.ts (100%) rename {src-web => apps/yaak-client}/lib/getNodeText.ts (100%) rename {src-web => apps/yaak-client}/lib/importData.tsx (100%) create mode 100644 apps/yaak-client/lib/initGlobalListeners.tsx rename {src-web => apps/yaak-client}/lib/jotai.ts (100%) rename {src-web => apps/yaak-client}/lib/keyValueStore.ts (100%) rename {src-web => apps/yaak-client}/lib/markdown.ts (100%) rename {src-web => apps/yaak-client}/lib/minPromiseMillis.ts (100%) rename {src-web => apps/yaak-client}/lib/model_util.test.ts (100%) rename {src-web => apps/yaak-client}/lib/model_util.ts (100%) rename {src-web => apps/yaak-client}/lib/pluralize.ts (100%) rename {src-web => apps/yaak-client}/lib/prepareImportQuerystring.ts (100%) rename {src-web => apps/yaak-client}/lib/prompt-form.tsx (100%) rename {src-web => apps/yaak-client}/lib/prompt.ts (100%) rename {src-web => apps/yaak-client}/lib/queryClient.ts (100%) rename {src-web => apps/yaak-client}/lib/renameModelWithPrompt.tsx (100%) rename {src-web => apps/yaak-client}/lib/resolvedModelName.ts (100%) rename {src-web => apps/yaak-client}/lib/responseBody.ts (100%) rename {src-web => apps/yaak-client}/lib/reveal.ts (100%) rename {src-web => apps/yaak-client}/lib/router.ts (100%) rename {src-web => apps/yaak-client}/lib/scopes.ts (100%) rename {src-web => apps/yaak-client}/lib/sendEphemeralRequest.ts (100%) rename {src-web => apps/yaak-client}/lib/setWorkspaceSearchParams.ts (100%) rename {src-web => apps/yaak-client}/lib/settings.ts (100%) rename {src-web => apps/yaak-client}/lib/setupOrConfigureEncryption.tsx (100%) rename {src-web => apps/yaak-client}/lib/showColorPicker.tsx (100%) rename {src-web => apps/yaak-client}/lib/sleep.ts (100%) rename {src-web => apps/yaak-client}/lib/tauri.ts (100%) rename {src-web => apps/yaak-client}/lib/theme/appearance.ts (100%) rename {src-web => apps/yaak-client}/lib/theme/themes.ts (100%) rename {src-web => apps/yaak-client}/lib/theme/window.ts (100%) rename {src-web => apps/yaak-client}/lib/theme/yaakColor.ts (100%) rename {src-web => apps/yaak-client}/lib/toast.tsx (100%) rename {src-web => apps/yaak-client}/lib/truncate.ts (100%) rename {src-web => apps/yaak-client}/main.css (100%) rename {src-web => apps/yaak-client}/main.tsx (100%) rename {src-web => apps/yaak-client}/modules.d.ts (100%) rename {src-web => apps/yaak-client}/package.json (98%) rename {src-web => apps/yaak-client}/postcss.config.cjs (100%) rename {src-web => apps/yaak-client}/routeTree.gen.ts (100%) rename {src-web => apps/yaak-client}/routes/__root.tsx (100%) rename {src-web => apps/yaak-client}/routes/index.tsx (100%) rename {src-web => apps/yaak-client}/routes/workspaces/$workspaceId/index.tsx (100%) rename {src-web => apps/yaak-client}/routes/workspaces/$workspaceId/requests/$requestId.tsx (100%) rename {src-web => apps/yaak-client}/routes/workspaces/$workspaceId/settings.tsx (100%) rename {src-web => apps/yaak-client}/routes/workspaces/index.tsx (100%) rename {src-web => apps/yaak-client}/tailwind.config.cjs (100%) rename {src-web => apps/yaak-client}/theme.ts (100%) rename {src-web => apps/yaak-client}/tsconfig.json (100%) rename {src-web => apps/yaak-client}/tsconfig.node.json (100%) rename {src-web => apps/yaak-client}/tsr.config.json (100%) rename {src-web => apps/yaak-client}/vite-env.d.ts (100%) create mode 100644 apps/yaak-client/vite.config.ts create mode 100644 apps/yaak-proxy/index.html create mode 100644 apps/yaak-proxy/main.css create mode 100644 apps/yaak-proxy/main.tsx create mode 100644 apps/yaak-proxy/package.json create mode 100644 apps/yaak-proxy/tsconfig.json create mode 100644 apps/yaak-proxy/tsconfig.node.json create mode 100644 apps/yaak-proxy/vite-env.d.ts rename crates-tauri/{yaak-app => yaak-app-client}/.gitignore (100%) rename crates-tauri/{yaak-app => yaak-app-client}/Cargo.toml (97%) rename crates-tauri/{yaak-app => yaak-app-client}/bindings/gen_watch.ts (100%) rename crates-tauri/{yaak-app => yaak-app-client}/bindings/index.ts (100%) rename crates-tauri/{yaak-app => yaak-app-client}/bindings/plugins_ext.ts (100%) rename crates-tauri/{yaak-app => yaak-app-client}/build.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/capabilities/default.json (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/128x128.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/128x128@2x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/32x32.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/64x64.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/Square107x107Logo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/Square142x142Logo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/Square150x150Logo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/Square284x284Logo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/Square30x30Logo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/Square310x310Logo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/Square44x44Logo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/Square71x71Logo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/Square89x89Logo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/StoreLogo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/android/mipmap-hdpi/ic_launcher.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/android/mipmap-hdpi/ic_launcher_foreground.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/android/mipmap-hdpi/ic_launcher_round.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/android/mipmap-mdpi/ic_launcher.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/android/mipmap-mdpi/ic_launcher_foreground.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/android/mipmap-mdpi/ic_launcher_round.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/android/mipmap-xhdpi/ic_launcher.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/android/mipmap-xhdpi/ic_launcher_foreground.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/android/mipmap-xhdpi/ic_launcher_round.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/android/mipmap-xxhdpi/ic_launcher.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/android/mipmap-xxhdpi/ic_launcher_foreground.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/android/mipmap-xxhdpi/ic_launcher_round.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/android/mipmap-xxxhdpi/ic_launcher.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/android/mipmap-xxxhdpi/ic_launcher_foreground.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/android/mipmap-xxxhdpi/ic_launcher_round.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/icon.icns (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/icon.ico (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/icon.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/ios/AppIcon-20x20@1x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/ios/AppIcon-20x20@2x-1.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/ios/AppIcon-20x20@2x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/ios/AppIcon-20x20@3x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/ios/AppIcon-29x29@1x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/ios/AppIcon-29x29@2x-1.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/ios/AppIcon-29x29@2x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/ios/AppIcon-29x29@3x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/ios/AppIcon-40x40@1x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/ios/AppIcon-40x40@2x-1.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/ios/AppIcon-40x40@2x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/ios/AppIcon-40x40@3x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/ios/AppIcon-512@2x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/ios/AppIcon-60x60@2x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/ios/AppIcon-60x60@3x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/ios/AppIcon-76x76@1x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/ios/AppIcon-76x76@2x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/dev/ios/AppIcon-83.5x83.5@2x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/icon-dev.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/icon.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/128x128.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/128x128@2x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/32x32.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/64x64.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/Square107x107Logo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/Square142x142Logo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/Square150x150Logo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/Square284x284Logo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/Square30x30Logo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/Square310x310Logo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/Square44x44Logo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/Square71x71Logo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/Square89x89Logo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/StoreLogo.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/android/mipmap-hdpi/ic_launcher.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/android/mipmap-hdpi/ic_launcher_foreground.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/android/mipmap-hdpi/ic_launcher_round.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/android/mipmap-mdpi/ic_launcher.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/android/mipmap-mdpi/ic_launcher_foreground.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/android/mipmap-mdpi/ic_launcher_round.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/android/mipmap-xhdpi/ic_launcher.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/android/mipmap-xhdpi/ic_launcher_foreground.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/android/mipmap-xhdpi/ic_launcher_round.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/android/mipmap-xxhdpi/ic_launcher.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/android/mipmap-xxhdpi/ic_launcher_foreground.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/android/mipmap-xxhdpi/ic_launcher_round.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/android/mipmap-xxxhdpi/ic_launcher.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/android/mipmap-xxxhdpi/ic_launcher_foreground.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/android/mipmap-xxxhdpi/ic_launcher_round.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/icon.icns (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/icon.ico (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/icon.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/ios/AppIcon-20x20@1x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/ios/AppIcon-20x20@2x-1.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/ios/AppIcon-20x20@2x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/ios/AppIcon-20x20@3x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/ios/AppIcon-29x29@1x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/ios/AppIcon-29x29@2x-1.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/ios/AppIcon-29x29@2x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/ios/AppIcon-29x29@3x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/ios/AppIcon-40x40@1x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/ios/AppIcon-40x40@2x-1.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/ios/AppIcon-40x40@2x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/ios/AppIcon-40x40@3x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/ios/AppIcon-512@2x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/ios/AppIcon-60x60@2x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/ios/AppIcon-60x60@3x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/ios/AppIcon-76x76@1x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/ios/AppIcon-76x76@2x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/icons/release/ios/AppIcon-83.5x83.5@2x.png (100%) rename crates-tauri/{yaak-app => yaak-app-client}/macos/entitlements.plist (100%) rename crates-tauri/{yaak-app => yaak-app-client}/macos/entitlements.yaaknode.plist (100%) rename crates-tauri/{yaak-app => yaak-app-client}/macos/entitlements.yaakprotoc.plist (100%) create mode 100644 crates-tauri/yaak-app-client/package.json rename crates-tauri/{yaak-app => yaak-app-client}/src/commands.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/src/encoding.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/src/error.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/src/git_ext.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/src/grpc.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/src/history.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/src/http_request.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/src/import.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/src/lib.rs (100%) create mode 100644 crates-tauri/yaak-app-client/src/main.rs rename crates-tauri/{yaak-app => yaak-app-client}/src/models_ext.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/src/notifications.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/src/plugin_events.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/src/plugins_ext.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/src/render.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/src/sync_ext.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/src/updates.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/src/uri_scheme.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/src/window.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/src/window_menu.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/src/ws_ext.rs (100%) rename crates-tauri/{yaak-app => yaak-app-client}/static/greg.jpeg (100%) rename crates-tauri/{yaak-app => yaak-app-client}/tauri.conf.json (72%) rename crates-tauri/{yaak-app => yaak-app-client}/tauri.development.conf.json (100%) rename crates-tauri/{yaak-app => yaak-app-client}/tauri.linux.conf.json (100%) rename crates-tauri/{yaak-app => yaak-app-client}/tauri.release.conf.json (100%) rename crates-tauri/{yaak-app => yaak-app-client}/template.desktop (100%) create mode 100644 crates-tauri/yaak-app-proxy/.gitignore create mode 100644 crates-tauri/yaak-app-proxy/Cargo.toml create mode 100644 crates-tauri/yaak-app-proxy/bindings/index.ts create mode 100644 crates-tauri/yaak-app-proxy/build.rs create mode 100644 crates-tauri/yaak-app-proxy/capabilities/default.json rename crates-tauri/{yaak-app => yaak-app-proxy}/package.json (63%) create mode 100644 crates-tauri/yaak-app-proxy/src/lib.rs rename crates-tauri/{yaak-app => yaak-app-proxy}/src/main.rs (71%) create mode 100644 crates-tauri/yaak-app-proxy/tauri.development.conf.json create mode 100644 crates-tauri/yaak-app-proxy/tauri.release.conf.json create mode 100644 crates-tauri/yaak-app-proxy/template.desktop delete mode 100644 src-web/lib/atoms.ts delete mode 100644 src-web/lib/initGlobalListeners.tsx delete mode 100644 src-web/vite.config.ts diff --git a/.claude-context.md b/.claude-context.md index 2ca845f7..21d5e990 100644 --- a/.claude-context.md +++ b/.claude-context.md @@ -6,14 +6,14 @@ Make Yaak runnable as a standalone CLI without Tauri as a dependency. The core R ## Project Structure ``` crates/ # Core crates - should NOT depend on Tauri -crates-tauri/ # Tauri-specific crates (yaak-app, yaak-tauri-utils, etc.) +crates-tauri/ # Tauri-specific crates (yaak-app-client, yaak-tauri-utils, etc.) crates-cli/ # CLI crate (yaak-cli) ``` ## Completed Work ### 1. Folder Restructure -- Moved Tauri-dependent app code to `crates-tauri/yaak-app/` +- Moved Tauri-dependent app code to `crates-tauri/yaak-app-client/` - Created `crates-tauri/yaak-tauri-utils/` for shared Tauri utilities (window traits, api_client, error handling) - Created `crates-cli/yaak-cli/` for the standalone CLI @@ -43,13 +43,13 @@ crates-cli/ # CLI crate (yaak-cli) 3. Move extension traits (e.g., `SomethingManagerExt`) to yaak-app or yaak-tauri-utils 4. Initialize managers in yaak-app's `.setup()` block 5. Remove `tauri` from Cargo.toml dependencies -6. Update `crates-tauri/yaak-app/capabilities/default.json` to remove the plugin permission +6. Update `crates-tauri/yaak-app-client/capabilities/default.json` to remove the plugin permission 7. Replace `tauri::async_runtime::block_on` with `tokio::runtime::Handle::current().block_on()` ## Key Files -- `crates-tauri/yaak-app/src/lib.rs` - Main Tauri app, setup block initializes managers -- `crates-tauri/yaak-app/src/commands.rs` - Migrated Tauri commands -- `crates-tauri/yaak-app/src/models_ext.rs` - Database plugin and extension traits +- `crates-tauri/yaak-app-client/src/lib.rs` - Main Tauri app, setup block initializes managers +- `crates-tauri/yaak-app-client/src/commands.rs` - Migrated Tauri commands +- `crates-tauri/yaak-app-client/src/models_ext.rs` - Database plugin and extension traits - `crates-tauri/yaak-tauri-utils/src/window.rs` - WorkspaceWindowTrait for window state - `crates/yaak-models/src/lib.rs` - Contains `init_standalone()` for CLI usage @@ -68,5 +68,5 @@ e718a5f1 Refactor models_ext to use init_standalone from yaak-models ## Testing - Run `cargo check -p ` to verify a crate builds without Tauri -- Run `npm run app-dev` to test the Tauri app still works +- Run `npm run client:dev` to test the Tauri app still works - Run `cargo run -p yaak-cli -- --help` to test the CLI diff --git a/.gitattributes b/.gitattributes index 4565c740..67ab542c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,5 +1,5 @@ -crates-tauri/yaak-app/vendored/**/* linguist-generated=true -crates-tauri/yaak-app/gen/schemas/**/* linguist-generated=true +crates-tauri/yaak-app-client/vendored/**/* linguist-generated=true +crates-tauri/yaak-app-client/gen/schemas/**/* linguist-generated=true **/bindings/* linguist-generated=true crates/yaak-templates/pkg/* linguist-generated=true diff --git a/.github/workflows/release-app.yml b/.github/workflows/release-app.yml index d3a73d5c..8b4d36e9 100644 --- a/.github/workflows/release-app.yml +++ b/.github/workflows/release-app.yml @@ -122,8 +122,8 @@ jobs: security list-keychain -d user -s $KEYCHAIN_PATH # Sign vendored binaries with hardened runtime and their specific entitlements - codesign --force --options runtime --entitlements crates-tauri/yaak-app/macos/entitlements.yaakprotoc.plist --sign "$APPLE_SIGNING_IDENTITY" crates-tauri/yaak-app/vendored/protoc/yaakprotoc || true - codesign --force --options runtime --entitlements crates-tauri/yaak-app/macos/entitlements.yaaknode.plist --sign "$APPLE_SIGNING_IDENTITY" crates-tauri/yaak-app/vendored/node/yaaknode || true + codesign --force --options runtime --entitlements crates-tauri/yaak-app-client/macos/entitlements.yaakprotoc.plist --sign "$APPLE_SIGNING_IDENTITY" crates-tauri/yaak-app-client/vendored/protoc/yaakprotoc || true + codesign --force --options runtime --entitlements crates-tauri/yaak-app-client/macos/entitlements.yaaknode.plist --sign "$APPLE_SIGNING_IDENTITY" crates-tauri/yaak-app-client/vendored/node/yaaknode || true - uses: tauri-apps/tauri-action@v0 env: @@ -152,7 +152,7 @@ jobs: releaseBody: "[Changelog __VERSION__](https://yaak.app/blog/__VERSION__)" releaseDraft: true prerelease: true - args: "${{ matrix.args }} --config ./crates-tauri/yaak-app/tauri.release.conf.json" + args: "${{ matrix.args }} --config ./crates-tauri/yaak-app-client/tauri.release.conf.json" # Build a per-machine NSIS installer for enterprise deployment (PDQ, SCCM, Intune) - name: Build and upload machine-wide installer (Windows only) @@ -168,7 +168,7 @@ jobs: TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} run: | Get-ChildItem -Recurse -Path target -File -Filter "*.exe.sig" | Remove-Item -Force - npx tauri bundle ${{ matrix.args }} --bundles nsis --config ./crates-tauri/yaak-app/tauri.release.conf.json --config '{"bundle":{"createUpdaterArtifacts":true,"windows":{"nsis":{"installMode":"perMachine"}}}}' + npx tauri bundle ${{ matrix.args }} --bundles nsis --config ./crates-tauri/yaak-app-client/tauri.release.conf.json --config '{"bundle":{"createUpdaterArtifacts":true,"windows":{"nsis":{"installMode":"perMachine"}}}}' $setup = Get-ChildItem -Recurse -Path target -Filter "*setup*.exe" | Select-Object -First 1 $setupSig = "$($setup.FullName).sig" $dest = $setup.FullName -replace '-setup\.exe$', '-setup-machine.exe' diff --git a/.github/workflows/release-cli-npm.yml b/.github/workflows/release-cli-npm.yml index e0413584..c08e687a 100644 --- a/.github/workflows/release-cli-npm.yml +++ b/.github/workflows/release-cli-npm.yml @@ -45,8 +45,8 @@ jobs: with: name: vendored-assets path: | - crates-tauri/yaak-app/vendored/plugin-runtime/index.cjs - crates-tauri/yaak-app/vendored/plugins + crates-tauri/yaak-app-client/vendored/plugin-runtime/index.cjs + crates-tauri/yaak-app-client/vendored/plugins if-no-files-found: error build-binaries: @@ -107,7 +107,7 @@ jobs: uses: actions/download-artifact@v4 with: name: vendored-assets - path: crates-tauri/yaak-app/vendored + path: crates-tauri/yaak-app-client/vendored - name: Set CLI build version shell: bash diff --git a/.gitignore b/.gitignore index c91877d6..5beed3a8 100644 --- a/.gitignore +++ b/.gitignore @@ -39,7 +39,8 @@ codebook.toml target # Per-worktree Tauri config (generated by post-checkout hook) -crates-tauri/yaak-app/tauri.worktree.conf.json +crates-tauri/yaak-app-client/tauri.worktree.conf.json +crates-tauri/yaak-app-proxy/tauri.worktree.conf.json # Tauri auto-generated permission files **/permissions/autogenerated diff --git a/Cargo.lock b/Cargo.lock index 455e8cc1..9fc5b8d7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10240,7 +10240,7 @@ dependencies = [ ] [[package]] -name = "yaak-app" +name = "yaak-app-client" version = "0.0.0" dependencies = [ "charset", @@ -10300,6 +10300,16 @@ dependencies = [ "yaak-ws", ] +[[package]] +name = "yaak-app-proxy" +version = "0.0.0" +dependencies = [ + "serde", + "tauri", + "tauri-build", + "yaak-proxy", +] + [[package]] name = "yaak-cli" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index e47b8be2..473cd12f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,7 +21,8 @@ members = [ # CLI crates "crates-cli/yaak-cli", # Tauri-specific crates - "crates-tauri/yaak-app", + "crates-tauri/yaak-app-client", + "crates-tauri/yaak-app-proxy", "crates-tauri/yaak-fonts", "crates-tauri/yaak-license", "crates-tauri/yaak-mac-window", diff --git a/README.md b/README.md index 3533a39a..abe75b9f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

- +

diff --git a/src-web/.gitignore b/apps/yaak-client/.gitignore similarity index 100% rename from src-web/.gitignore rename to apps/yaak-client/.gitignore diff --git a/src-web/commands/commands.tsx b/apps/yaak-client/commands/commands.tsx similarity index 100% rename from src-web/commands/commands.tsx rename to apps/yaak-client/commands/commands.tsx diff --git a/src-web/commands/createEnvironment.tsx b/apps/yaak-client/commands/createEnvironment.tsx similarity index 100% rename from src-web/commands/createEnvironment.tsx rename to apps/yaak-client/commands/createEnvironment.tsx diff --git a/src-web/commands/deleteWebsocketConnections.ts b/apps/yaak-client/commands/deleteWebsocketConnections.ts similarity index 100% rename from src-web/commands/deleteWebsocketConnections.ts rename to apps/yaak-client/commands/deleteWebsocketConnections.ts diff --git a/src-web/commands/moveToWorkspace.tsx b/apps/yaak-client/commands/moveToWorkspace.tsx similarity index 100% rename from src-web/commands/moveToWorkspace.tsx rename to apps/yaak-client/commands/moveToWorkspace.tsx diff --git a/src-web/commands/openFolderSettings.tsx b/apps/yaak-client/commands/openFolderSettings.tsx similarity index 100% rename from src-web/commands/openFolderSettings.tsx rename to apps/yaak-client/commands/openFolderSettings.tsx diff --git a/src-web/commands/openSettings.tsx b/apps/yaak-client/commands/openSettings.tsx similarity index 100% rename from src-web/commands/openSettings.tsx rename to apps/yaak-client/commands/openSettings.tsx diff --git a/src-web/commands/openWorkspaceFromSyncDir.tsx b/apps/yaak-client/commands/openWorkspaceFromSyncDir.tsx similarity index 100% rename from src-web/commands/openWorkspaceFromSyncDir.tsx rename to apps/yaak-client/commands/openWorkspaceFromSyncDir.tsx diff --git a/src-web/commands/openWorkspaceSettings.tsx b/apps/yaak-client/commands/openWorkspaceSettings.tsx similarity index 100% rename from src-web/commands/openWorkspaceSettings.tsx rename to apps/yaak-client/commands/openWorkspaceSettings.tsx diff --git a/src-web/commands/switchWorkspace.tsx b/apps/yaak-client/commands/switchWorkspace.tsx similarity index 100% rename from src-web/commands/switchWorkspace.tsx rename to apps/yaak-client/commands/switchWorkspace.tsx diff --git a/src-web/components/BinaryFileEditor.tsx b/apps/yaak-client/components/BinaryFileEditor.tsx similarity index 100% rename from src-web/components/BinaryFileEditor.tsx rename to apps/yaak-client/components/BinaryFileEditor.tsx diff --git a/src-web/components/CargoFeature.tsx b/apps/yaak-client/components/CargoFeature.tsx similarity index 100% rename from src-web/components/CargoFeature.tsx rename to apps/yaak-client/components/CargoFeature.tsx diff --git a/src-web/components/CloneGitRepositoryDialog.tsx b/apps/yaak-client/components/CloneGitRepositoryDialog.tsx similarity index 100% rename from src-web/components/CloneGitRepositoryDialog.tsx rename to apps/yaak-client/components/CloneGitRepositoryDialog.tsx diff --git a/src-web/components/ColorIndicator.tsx b/apps/yaak-client/components/ColorIndicator.tsx similarity index 100% rename from src-web/components/ColorIndicator.tsx rename to apps/yaak-client/components/ColorIndicator.tsx diff --git a/src-web/components/CommandPaletteDialog.tsx b/apps/yaak-client/components/CommandPaletteDialog.tsx similarity index 100% rename from src-web/components/CommandPaletteDialog.tsx rename to apps/yaak-client/components/CommandPaletteDialog.tsx diff --git a/src-web/components/ConfirmLargeRequestBody.tsx b/apps/yaak-client/components/ConfirmLargeRequestBody.tsx similarity index 100% rename from src-web/components/ConfirmLargeRequestBody.tsx rename to apps/yaak-client/components/ConfirmLargeRequestBody.tsx diff --git a/src-web/components/ConfirmLargeResponse.tsx b/apps/yaak-client/components/ConfirmLargeResponse.tsx similarity index 100% rename from src-web/components/ConfirmLargeResponse.tsx rename to apps/yaak-client/components/ConfirmLargeResponse.tsx diff --git a/src-web/components/ConfirmLargeResponseRequest.tsx b/apps/yaak-client/components/ConfirmLargeResponseRequest.tsx similarity index 100% rename from src-web/components/ConfirmLargeResponseRequest.tsx rename to apps/yaak-client/components/ConfirmLargeResponseRequest.tsx diff --git a/src-web/components/CookieDialog.tsx b/apps/yaak-client/components/CookieDialog.tsx similarity index 100% rename from src-web/components/CookieDialog.tsx rename to apps/yaak-client/components/CookieDialog.tsx diff --git a/src-web/components/CookieDropdown.tsx b/apps/yaak-client/components/CookieDropdown.tsx similarity index 100% rename from src-web/components/CookieDropdown.tsx rename to apps/yaak-client/components/CookieDropdown.tsx diff --git a/src-web/components/CopyButton.tsx b/apps/yaak-client/components/CopyButton.tsx similarity index 100% rename from src-web/components/CopyButton.tsx rename to apps/yaak-client/components/CopyButton.tsx diff --git a/src-web/components/CopyIconButton.tsx b/apps/yaak-client/components/CopyIconButton.tsx similarity index 100% rename from src-web/components/CopyIconButton.tsx rename to apps/yaak-client/components/CopyIconButton.tsx diff --git a/src-web/components/CreateDropdown.tsx b/apps/yaak-client/components/CreateDropdown.tsx similarity index 100% rename from src-web/components/CreateDropdown.tsx rename to apps/yaak-client/components/CreateDropdown.tsx diff --git a/src-web/components/CreateEnvironmentDialog.tsx b/apps/yaak-client/components/CreateEnvironmentDialog.tsx similarity index 100% rename from src-web/components/CreateEnvironmentDialog.tsx rename to apps/yaak-client/components/CreateEnvironmentDialog.tsx diff --git a/src-web/components/CreateWorkspaceDialog.tsx b/apps/yaak-client/components/CreateWorkspaceDialog.tsx similarity index 100% rename from src-web/components/CreateWorkspaceDialog.tsx rename to apps/yaak-client/components/CreateWorkspaceDialog.tsx diff --git a/src-web/components/Dialogs.tsx b/apps/yaak-client/components/Dialogs.tsx similarity index 100% rename from src-web/components/Dialogs.tsx rename to apps/yaak-client/components/Dialogs.tsx diff --git a/src-web/components/DnsOverridesEditor.tsx b/apps/yaak-client/components/DnsOverridesEditor.tsx similarity index 100% rename from src-web/components/DnsOverridesEditor.tsx rename to apps/yaak-client/components/DnsOverridesEditor.tsx diff --git a/src-web/components/DropMarker.tsx b/apps/yaak-client/components/DropMarker.tsx similarity index 100% rename from src-web/components/DropMarker.tsx rename to apps/yaak-client/components/DropMarker.tsx diff --git a/src-web/components/DynamicForm.tsx b/apps/yaak-client/components/DynamicForm.tsx similarity index 100% rename from src-web/components/DynamicForm.tsx rename to apps/yaak-client/components/DynamicForm.tsx diff --git a/src-web/components/EmptyStateText.tsx b/apps/yaak-client/components/EmptyStateText.tsx similarity index 100% rename from src-web/components/EmptyStateText.tsx rename to apps/yaak-client/components/EmptyStateText.tsx diff --git a/src-web/components/EncryptionHelp.tsx b/apps/yaak-client/components/EncryptionHelp.tsx similarity index 100% rename from src-web/components/EncryptionHelp.tsx rename to apps/yaak-client/components/EncryptionHelp.tsx diff --git a/src-web/components/EnvironmentActionsDropdown.tsx b/apps/yaak-client/components/EnvironmentActionsDropdown.tsx similarity index 100% rename from src-web/components/EnvironmentActionsDropdown.tsx rename to apps/yaak-client/components/EnvironmentActionsDropdown.tsx diff --git a/src-web/components/EnvironmentColorIndicator.tsx b/apps/yaak-client/components/EnvironmentColorIndicator.tsx similarity index 100% rename from src-web/components/EnvironmentColorIndicator.tsx rename to apps/yaak-client/components/EnvironmentColorIndicator.tsx diff --git a/src-web/components/EnvironmentColorPicker.tsx b/apps/yaak-client/components/EnvironmentColorPicker.tsx similarity index 100% rename from src-web/components/EnvironmentColorPicker.tsx rename to apps/yaak-client/components/EnvironmentColorPicker.tsx diff --git a/src-web/components/EnvironmentEditDialog.tsx b/apps/yaak-client/components/EnvironmentEditDialog.tsx similarity index 100% rename from src-web/components/EnvironmentEditDialog.tsx rename to apps/yaak-client/components/EnvironmentEditDialog.tsx diff --git a/src-web/components/EnvironmentEditor.tsx b/apps/yaak-client/components/EnvironmentEditor.tsx similarity index 100% rename from src-web/components/EnvironmentEditor.tsx rename to apps/yaak-client/components/EnvironmentEditor.tsx diff --git a/src-web/components/EnvironmentSharableTooltip.tsx b/apps/yaak-client/components/EnvironmentSharableTooltip.tsx similarity index 100% rename from src-web/components/EnvironmentSharableTooltip.tsx rename to apps/yaak-client/components/EnvironmentSharableTooltip.tsx diff --git a/src-web/components/ErrorBoundary.tsx b/apps/yaak-client/components/ErrorBoundary.tsx similarity index 100% rename from src-web/components/ErrorBoundary.tsx rename to apps/yaak-client/components/ErrorBoundary.tsx diff --git a/src-web/components/ExportDataDialog.tsx b/apps/yaak-client/components/ExportDataDialog.tsx similarity index 100% rename from src-web/components/ExportDataDialog.tsx rename to apps/yaak-client/components/ExportDataDialog.tsx diff --git a/src-web/components/FolderLayout.tsx b/apps/yaak-client/components/FolderLayout.tsx similarity index 100% rename from src-web/components/FolderLayout.tsx rename to apps/yaak-client/components/FolderLayout.tsx diff --git a/src-web/components/FolderSettingsDialog.tsx b/apps/yaak-client/components/FolderSettingsDialog.tsx similarity index 100% rename from src-web/components/FolderSettingsDialog.tsx rename to apps/yaak-client/components/FolderSettingsDialog.tsx diff --git a/src-web/components/FormMultipartEditor.tsx b/apps/yaak-client/components/FormMultipartEditor.tsx similarity index 100% rename from src-web/components/FormMultipartEditor.tsx rename to apps/yaak-client/components/FormMultipartEditor.tsx diff --git a/src-web/components/FormUrlencodedEditor.tsx b/apps/yaak-client/components/FormUrlencodedEditor.tsx similarity index 100% rename from src-web/components/FormUrlencodedEditor.tsx rename to apps/yaak-client/components/FormUrlencodedEditor.tsx diff --git a/src-web/components/GlobalHooks.tsx b/apps/yaak-client/components/GlobalHooks.tsx similarity index 100% rename from src-web/components/GlobalHooks.tsx rename to apps/yaak-client/components/GlobalHooks.tsx diff --git a/src-web/components/GrpcConnectionLayout.tsx b/apps/yaak-client/components/GrpcConnectionLayout.tsx similarity index 100% rename from src-web/components/GrpcConnectionLayout.tsx rename to apps/yaak-client/components/GrpcConnectionLayout.tsx diff --git a/src-web/components/GrpcEditor.tsx b/apps/yaak-client/components/GrpcEditor.tsx similarity index 100% rename from src-web/components/GrpcEditor.tsx rename to apps/yaak-client/components/GrpcEditor.tsx diff --git a/src-web/components/GrpcProtoSelectionDialog.tsx b/apps/yaak-client/components/GrpcProtoSelectionDialog.tsx similarity index 100% rename from src-web/components/GrpcProtoSelectionDialog.tsx rename to apps/yaak-client/components/GrpcProtoSelectionDialog.tsx diff --git a/src-web/components/GrpcRequestPane.tsx b/apps/yaak-client/components/GrpcRequestPane.tsx similarity index 100% rename from src-web/components/GrpcRequestPane.tsx rename to apps/yaak-client/components/GrpcRequestPane.tsx diff --git a/src-web/components/GrpcResponsePane.tsx b/apps/yaak-client/components/GrpcResponsePane.tsx similarity index 100% rename from src-web/components/GrpcResponsePane.tsx rename to apps/yaak-client/components/GrpcResponsePane.tsx diff --git a/src-web/components/HeaderSize.tsx b/apps/yaak-client/components/HeaderSize.tsx similarity index 100% rename from src-web/components/HeaderSize.tsx rename to apps/yaak-client/components/HeaderSize.tsx diff --git a/src-web/components/HeadersEditor.tsx b/apps/yaak-client/components/HeadersEditor.tsx similarity index 100% rename from src-web/components/HeadersEditor.tsx rename to apps/yaak-client/components/HeadersEditor.tsx diff --git a/src-web/components/HttpAuthenticationEditor.tsx b/apps/yaak-client/components/HttpAuthenticationEditor.tsx similarity index 100% rename from src-web/components/HttpAuthenticationEditor.tsx rename to apps/yaak-client/components/HttpAuthenticationEditor.tsx diff --git a/src-web/components/HttpRequestLayout.tsx b/apps/yaak-client/components/HttpRequestLayout.tsx similarity index 100% rename from src-web/components/HttpRequestLayout.tsx rename to apps/yaak-client/components/HttpRequestLayout.tsx diff --git a/src-web/components/HttpRequestPane.tsx b/apps/yaak-client/components/HttpRequestPane.tsx similarity index 100% rename from src-web/components/HttpRequestPane.tsx rename to apps/yaak-client/components/HttpRequestPane.tsx diff --git a/src-web/components/HttpResponsePane.tsx b/apps/yaak-client/components/HttpResponsePane.tsx similarity index 100% rename from src-web/components/HttpResponsePane.tsx rename to apps/yaak-client/components/HttpResponsePane.tsx diff --git a/src-web/components/HttpResponseTimeline.tsx b/apps/yaak-client/components/HttpResponseTimeline.tsx similarity index 100% rename from src-web/components/HttpResponseTimeline.tsx rename to apps/yaak-client/components/HttpResponseTimeline.tsx diff --git a/src-web/components/ImportCurlButton.tsx b/apps/yaak-client/components/ImportCurlButton.tsx similarity index 100% rename from src-web/components/ImportCurlButton.tsx rename to apps/yaak-client/components/ImportCurlButton.tsx diff --git a/src-web/components/ImportDataDialog.tsx b/apps/yaak-client/components/ImportDataDialog.tsx similarity index 100% rename from src-web/components/ImportDataDialog.tsx rename to apps/yaak-client/components/ImportDataDialog.tsx diff --git a/src-web/components/IsDev.tsx b/apps/yaak-client/components/IsDev.tsx similarity index 100% rename from src-web/components/IsDev.tsx rename to apps/yaak-client/components/IsDev.tsx diff --git a/src-web/components/KeyboardShortcutsDialog.tsx b/apps/yaak-client/components/KeyboardShortcutsDialog.tsx similarity index 100% rename from src-web/components/KeyboardShortcutsDialog.tsx rename to apps/yaak-client/components/KeyboardShortcutsDialog.tsx diff --git a/src-web/components/LicenseBadge.tsx b/apps/yaak-client/components/LicenseBadge.tsx similarity index 100% rename from src-web/components/LicenseBadge.tsx rename to apps/yaak-client/components/LicenseBadge.tsx diff --git a/src-web/components/LocalImage.tsx b/apps/yaak-client/components/LocalImage.tsx similarity index 100% rename from src-web/components/LocalImage.tsx rename to apps/yaak-client/components/LocalImage.tsx diff --git a/src-web/components/Markdown.tsx b/apps/yaak-client/components/Markdown.tsx similarity index 100% rename from src-web/components/Markdown.tsx rename to apps/yaak-client/components/Markdown.tsx diff --git a/src-web/components/MarkdownEditor.tsx b/apps/yaak-client/components/MarkdownEditor.tsx similarity index 100% rename from src-web/components/MarkdownEditor.tsx rename to apps/yaak-client/components/MarkdownEditor.tsx diff --git a/src-web/components/MoveToWorkspaceDialog.tsx b/apps/yaak-client/components/MoveToWorkspaceDialog.tsx similarity index 100% rename from src-web/components/MoveToWorkspaceDialog.tsx rename to apps/yaak-client/components/MoveToWorkspaceDialog.tsx diff --git a/src-web/components/Overlay.tsx b/apps/yaak-client/components/Overlay.tsx similarity index 100% rename from src-web/components/Overlay.tsx rename to apps/yaak-client/components/Overlay.tsx diff --git a/src-web/components/Portal.tsx b/apps/yaak-client/components/Portal.tsx similarity index 100% rename from src-web/components/Portal.tsx rename to apps/yaak-client/components/Portal.tsx diff --git a/src-web/components/Prose.css b/apps/yaak-client/components/Prose.css similarity index 100% rename from src-web/components/Prose.css rename to apps/yaak-client/components/Prose.css diff --git a/src-web/components/Prose.tsx b/apps/yaak-client/components/Prose.tsx similarity index 100% rename from src-web/components/Prose.tsx rename to apps/yaak-client/components/Prose.tsx diff --git a/src-web/components/RecentGrpcConnectionsDropdown.tsx b/apps/yaak-client/components/RecentGrpcConnectionsDropdown.tsx similarity index 100% rename from src-web/components/RecentGrpcConnectionsDropdown.tsx rename to apps/yaak-client/components/RecentGrpcConnectionsDropdown.tsx diff --git a/src-web/components/RecentHttpResponsesDropdown.tsx b/apps/yaak-client/components/RecentHttpResponsesDropdown.tsx similarity index 100% rename from src-web/components/RecentHttpResponsesDropdown.tsx rename to apps/yaak-client/components/RecentHttpResponsesDropdown.tsx diff --git a/src-web/components/RecentRequestsDropdown.tsx b/apps/yaak-client/components/RecentRequestsDropdown.tsx similarity index 100% rename from src-web/components/RecentRequestsDropdown.tsx rename to apps/yaak-client/components/RecentRequestsDropdown.tsx diff --git a/src-web/components/RecentWebsocketConnectionsDropdown.tsx b/apps/yaak-client/components/RecentWebsocketConnectionsDropdown.tsx similarity index 100% rename from src-web/components/RecentWebsocketConnectionsDropdown.tsx rename to apps/yaak-client/components/RecentWebsocketConnectionsDropdown.tsx diff --git a/src-web/components/RedirectToLatestWorkspace.tsx b/apps/yaak-client/components/RedirectToLatestWorkspace.tsx similarity index 100% rename from src-web/components/RedirectToLatestWorkspace.tsx rename to apps/yaak-client/components/RedirectToLatestWorkspace.tsx diff --git a/src-web/components/RequestBodyViewer.tsx b/apps/yaak-client/components/RequestBodyViewer.tsx similarity index 100% rename from src-web/components/RequestBodyViewer.tsx rename to apps/yaak-client/components/RequestBodyViewer.tsx diff --git a/src-web/components/RequestMethodDropdown.tsx b/apps/yaak-client/components/RequestMethodDropdown.tsx similarity index 100% rename from src-web/components/RequestMethodDropdown.tsx rename to apps/yaak-client/components/RequestMethodDropdown.tsx diff --git a/src-web/components/ResizeHandle.tsx b/apps/yaak-client/components/ResizeHandle.tsx similarity index 100% rename from src-web/components/ResizeHandle.tsx rename to apps/yaak-client/components/ResizeHandle.tsx diff --git a/src-web/components/ResponseCookies.tsx b/apps/yaak-client/components/ResponseCookies.tsx similarity index 100% rename from src-web/components/ResponseCookies.tsx rename to apps/yaak-client/components/ResponseCookies.tsx diff --git a/src-web/components/ResponseHeaders.tsx b/apps/yaak-client/components/ResponseHeaders.tsx similarity index 100% rename from src-web/components/ResponseHeaders.tsx rename to apps/yaak-client/components/ResponseHeaders.tsx diff --git a/src-web/components/ResponseInfo.tsx b/apps/yaak-client/components/ResponseInfo.tsx similarity index 100% rename from src-web/components/ResponseInfo.tsx rename to apps/yaak-client/components/ResponseInfo.tsx diff --git a/src-web/components/RouteError.tsx b/apps/yaak-client/components/RouteError.tsx similarity index 100% rename from src-web/components/RouteError.tsx rename to apps/yaak-client/components/RouteError.tsx diff --git a/src-web/components/SelectFile.tsx b/apps/yaak-client/components/SelectFile.tsx similarity index 100% rename from src-web/components/SelectFile.tsx rename to apps/yaak-client/components/SelectFile.tsx diff --git a/src-web/components/Settings/Settings.tsx b/apps/yaak-client/components/Settings/Settings.tsx similarity index 100% rename from src-web/components/Settings/Settings.tsx rename to apps/yaak-client/components/Settings/Settings.tsx diff --git a/src-web/components/Settings/SettingsCertificates.tsx b/apps/yaak-client/components/Settings/SettingsCertificates.tsx similarity index 100% rename from src-web/components/Settings/SettingsCertificates.tsx rename to apps/yaak-client/components/Settings/SettingsCertificates.tsx diff --git a/src-web/components/Settings/SettingsGeneral.tsx b/apps/yaak-client/components/Settings/SettingsGeneral.tsx similarity index 100% rename from src-web/components/Settings/SettingsGeneral.tsx rename to apps/yaak-client/components/Settings/SettingsGeneral.tsx diff --git a/src-web/components/Settings/SettingsHotkeys.tsx b/apps/yaak-client/components/Settings/SettingsHotkeys.tsx similarity index 100% rename from src-web/components/Settings/SettingsHotkeys.tsx rename to apps/yaak-client/components/Settings/SettingsHotkeys.tsx diff --git a/src-web/components/Settings/SettingsInterface.tsx b/apps/yaak-client/components/Settings/SettingsInterface.tsx similarity index 100% rename from src-web/components/Settings/SettingsInterface.tsx rename to apps/yaak-client/components/Settings/SettingsInterface.tsx diff --git a/src-web/components/Settings/SettingsLicense.tsx b/apps/yaak-client/components/Settings/SettingsLicense.tsx similarity index 100% rename from src-web/components/Settings/SettingsLicense.tsx rename to apps/yaak-client/components/Settings/SettingsLicense.tsx diff --git a/src-web/components/Settings/SettingsPlugins.tsx b/apps/yaak-client/components/Settings/SettingsPlugins.tsx similarity index 100% rename from src-web/components/Settings/SettingsPlugins.tsx rename to apps/yaak-client/components/Settings/SettingsPlugins.tsx diff --git a/src-web/components/Settings/SettingsProxy.tsx b/apps/yaak-client/components/Settings/SettingsProxy.tsx similarity index 100% rename from src-web/components/Settings/SettingsProxy.tsx rename to apps/yaak-client/components/Settings/SettingsProxy.tsx diff --git a/src-web/components/Settings/SettingsTheme.tsx b/apps/yaak-client/components/Settings/SettingsTheme.tsx similarity index 100% rename from src-web/components/Settings/SettingsTheme.tsx rename to apps/yaak-client/components/Settings/SettingsTheme.tsx diff --git a/src-web/components/SettingsDropdown.tsx b/apps/yaak-client/components/SettingsDropdown.tsx similarity index 100% rename from src-web/components/SettingsDropdown.tsx rename to apps/yaak-client/components/SettingsDropdown.tsx diff --git a/src-web/components/Sidebar.tsx b/apps/yaak-client/components/Sidebar.tsx similarity index 100% rename from src-web/components/Sidebar.tsx rename to apps/yaak-client/components/Sidebar.tsx diff --git a/src-web/components/SidebarActions.tsx b/apps/yaak-client/components/SidebarActions.tsx similarity index 100% rename from src-web/components/SidebarActions.tsx rename to apps/yaak-client/components/SidebarActions.tsx diff --git a/src-web/components/SwitchWorkspaceDialog.tsx b/apps/yaak-client/components/SwitchWorkspaceDialog.tsx similarity index 100% rename from src-web/components/SwitchWorkspaceDialog.tsx rename to apps/yaak-client/components/SwitchWorkspaceDialog.tsx diff --git a/src-web/components/SyncToFilesystemSetting.tsx b/apps/yaak-client/components/SyncToFilesystemSetting.tsx similarity index 100% rename from src-web/components/SyncToFilesystemSetting.tsx rename to apps/yaak-client/components/SyncToFilesystemSetting.tsx diff --git a/src-web/components/TemplateFunctionDialog.tsx b/apps/yaak-client/components/TemplateFunctionDialog.tsx similarity index 100% rename from src-web/components/TemplateFunctionDialog.tsx rename to apps/yaak-client/components/TemplateFunctionDialog.tsx diff --git a/src-web/components/Toasts.tsx b/apps/yaak-client/components/Toasts.tsx similarity index 100% rename from src-web/components/Toasts.tsx rename to apps/yaak-client/components/Toasts.tsx diff --git a/src-web/components/UrlBar.tsx b/apps/yaak-client/components/UrlBar.tsx similarity index 100% rename from src-web/components/UrlBar.tsx rename to apps/yaak-client/components/UrlBar.tsx diff --git a/src-web/components/UrlParameterEditor.tsx b/apps/yaak-client/components/UrlParameterEditor.tsx similarity index 100% rename from src-web/components/UrlParameterEditor.tsx rename to apps/yaak-client/components/UrlParameterEditor.tsx diff --git a/src-web/components/WebsocketRequestLayout.tsx b/apps/yaak-client/components/WebsocketRequestLayout.tsx similarity index 100% rename from src-web/components/WebsocketRequestLayout.tsx rename to apps/yaak-client/components/WebsocketRequestLayout.tsx diff --git a/src-web/components/WebsocketRequestPane.tsx b/apps/yaak-client/components/WebsocketRequestPane.tsx similarity index 100% rename from src-web/components/WebsocketRequestPane.tsx rename to apps/yaak-client/components/WebsocketRequestPane.tsx diff --git a/src-web/components/WebsocketResponsePane.tsx b/apps/yaak-client/components/WebsocketResponsePane.tsx similarity index 100% rename from src-web/components/WebsocketResponsePane.tsx rename to apps/yaak-client/components/WebsocketResponsePane.tsx diff --git a/src-web/components/WindowControls.tsx b/apps/yaak-client/components/WindowControls.tsx similarity index 100% rename from src-web/components/WindowControls.tsx rename to apps/yaak-client/components/WindowControls.tsx diff --git a/src-web/components/Workspace.tsx b/apps/yaak-client/components/Workspace.tsx similarity index 100% rename from src-web/components/Workspace.tsx rename to apps/yaak-client/components/Workspace.tsx diff --git a/src-web/components/WorkspaceActionsDropdown.tsx b/apps/yaak-client/components/WorkspaceActionsDropdown.tsx similarity index 100% rename from src-web/components/WorkspaceActionsDropdown.tsx rename to apps/yaak-client/components/WorkspaceActionsDropdown.tsx diff --git a/src-web/components/WorkspaceEncryptionSetting.tsx b/apps/yaak-client/components/WorkspaceEncryptionSetting.tsx similarity index 100% rename from src-web/components/WorkspaceEncryptionSetting.tsx rename to apps/yaak-client/components/WorkspaceEncryptionSetting.tsx diff --git a/src-web/components/WorkspaceHeader.tsx b/apps/yaak-client/components/WorkspaceHeader.tsx similarity index 100% rename from src-web/components/WorkspaceHeader.tsx rename to apps/yaak-client/components/WorkspaceHeader.tsx diff --git a/src-web/components/WorkspaceSettingsDialog.tsx b/apps/yaak-client/components/WorkspaceSettingsDialog.tsx similarity index 100% rename from src-web/components/WorkspaceSettingsDialog.tsx rename to apps/yaak-client/components/WorkspaceSettingsDialog.tsx diff --git a/src-web/components/core/Alert.tsx b/apps/yaak-client/components/core/Alert.tsx similarity index 100% rename from src-web/components/core/Alert.tsx rename to apps/yaak-client/components/core/Alert.tsx diff --git a/src-web/components/core/AutoScroller.tsx b/apps/yaak-client/components/core/AutoScroller.tsx similarity index 100% rename from src-web/components/core/AutoScroller.tsx rename to apps/yaak-client/components/core/AutoScroller.tsx diff --git a/src-web/components/core/Banner.tsx b/apps/yaak-client/components/core/Banner.tsx similarity index 100% rename from src-web/components/core/Banner.tsx rename to apps/yaak-client/components/core/Banner.tsx diff --git a/src-web/components/core/BulkPairEditor.tsx b/apps/yaak-client/components/core/BulkPairEditor.tsx similarity index 100% rename from src-web/components/core/BulkPairEditor.tsx rename to apps/yaak-client/components/core/BulkPairEditor.tsx diff --git a/src-web/components/core/Button.tsx b/apps/yaak-client/components/core/Button.tsx similarity index 100% rename from src-web/components/core/Button.tsx rename to apps/yaak-client/components/core/Button.tsx diff --git a/src-web/components/core/ButtonInfiniteLoading.tsx b/apps/yaak-client/components/core/ButtonInfiniteLoading.tsx similarity index 100% rename from src-web/components/core/ButtonInfiniteLoading.tsx rename to apps/yaak-client/components/core/ButtonInfiniteLoading.tsx diff --git a/src-web/components/core/Checkbox.tsx b/apps/yaak-client/components/core/Checkbox.tsx similarity index 100% rename from src-web/components/core/Checkbox.tsx rename to apps/yaak-client/components/core/Checkbox.tsx diff --git a/src-web/components/core/ColorPicker.tsx b/apps/yaak-client/components/core/ColorPicker.tsx similarity index 100% rename from src-web/components/core/ColorPicker.tsx rename to apps/yaak-client/components/core/ColorPicker.tsx diff --git a/src-web/components/core/Confirm.tsx b/apps/yaak-client/components/core/Confirm.tsx similarity index 100% rename from src-web/components/core/Confirm.tsx rename to apps/yaak-client/components/core/Confirm.tsx diff --git a/src-web/components/core/CountBadge.tsx b/apps/yaak-client/components/core/CountBadge.tsx similarity index 100% rename from src-web/components/core/CountBadge.tsx rename to apps/yaak-client/components/core/CountBadge.tsx diff --git a/src-web/components/core/DetailsBanner.tsx b/apps/yaak-client/components/core/DetailsBanner.tsx similarity index 100% rename from src-web/components/core/DetailsBanner.tsx rename to apps/yaak-client/components/core/DetailsBanner.tsx diff --git a/src-web/components/core/Dialog.tsx b/apps/yaak-client/components/core/Dialog.tsx similarity index 100% rename from src-web/components/core/Dialog.tsx rename to apps/yaak-client/components/core/Dialog.tsx diff --git a/src-web/components/core/DismissibleBanner.tsx b/apps/yaak-client/components/core/DismissibleBanner.tsx similarity index 100% rename from src-web/components/core/DismissibleBanner.tsx rename to apps/yaak-client/components/core/DismissibleBanner.tsx diff --git a/src-web/components/core/Dropdown.tsx b/apps/yaak-client/components/core/Dropdown.tsx similarity index 100% rename from src-web/components/core/Dropdown.tsx rename to apps/yaak-client/components/core/Dropdown.tsx diff --git a/src-web/components/core/Editor/BetterMatchDecorator.ts b/apps/yaak-client/components/core/Editor/BetterMatchDecorator.ts similarity index 100% rename from src-web/components/core/Editor/BetterMatchDecorator.ts rename to apps/yaak-client/components/core/Editor/BetterMatchDecorator.ts diff --git a/src-web/components/core/Editor/DiffViewer.css b/apps/yaak-client/components/core/Editor/DiffViewer.css similarity index 100% rename from src-web/components/core/Editor/DiffViewer.css rename to apps/yaak-client/components/core/Editor/DiffViewer.css diff --git a/src-web/components/core/Editor/DiffViewer.tsx b/apps/yaak-client/components/core/Editor/DiffViewer.tsx similarity index 100% rename from src-web/components/core/Editor/DiffViewer.tsx rename to apps/yaak-client/components/core/Editor/DiffViewer.tsx diff --git a/src-web/components/core/Editor/Editor.css b/apps/yaak-client/components/core/Editor/Editor.css similarity index 100% rename from src-web/components/core/Editor/Editor.css rename to apps/yaak-client/components/core/Editor/Editor.css diff --git a/src-web/components/core/Editor/Editor.tsx b/apps/yaak-client/components/core/Editor/Editor.tsx similarity index 100% rename from src-web/components/core/Editor/Editor.tsx rename to apps/yaak-client/components/core/Editor/Editor.tsx diff --git a/src-web/components/core/Editor/LazyEditor.tsx b/apps/yaak-client/components/core/Editor/LazyEditor.tsx similarity index 100% rename from src-web/components/core/Editor/LazyEditor.tsx rename to apps/yaak-client/components/core/Editor/LazyEditor.tsx diff --git a/src-web/components/core/Editor/extensions.ts b/apps/yaak-client/components/core/Editor/extensions.ts similarity index 100% rename from src-web/components/core/Editor/extensions.ts rename to apps/yaak-client/components/core/Editor/extensions.ts diff --git a/src-web/components/core/Editor/filter/extension.ts b/apps/yaak-client/components/core/Editor/filter/extension.ts similarity index 100% rename from src-web/components/core/Editor/filter/extension.ts rename to apps/yaak-client/components/core/Editor/filter/extension.ts diff --git a/src-web/components/core/Editor/filter/filter.grammar b/apps/yaak-client/components/core/Editor/filter/filter.grammar similarity index 100% rename from src-web/components/core/Editor/filter/filter.grammar rename to apps/yaak-client/components/core/Editor/filter/filter.grammar diff --git a/src-web/components/core/Editor/filter/filter.ts b/apps/yaak-client/components/core/Editor/filter/filter.ts similarity index 100% rename from src-web/components/core/Editor/filter/filter.ts rename to apps/yaak-client/components/core/Editor/filter/filter.ts diff --git a/src-web/components/core/Editor/filter/highlight.ts b/apps/yaak-client/components/core/Editor/filter/highlight.ts similarity index 100% rename from src-web/components/core/Editor/filter/highlight.ts rename to apps/yaak-client/components/core/Editor/filter/highlight.ts diff --git a/src-web/components/core/Editor/filter/query.ts b/apps/yaak-client/components/core/Editor/filter/query.ts similarity index 100% rename from src-web/components/core/Editor/filter/query.ts rename to apps/yaak-client/components/core/Editor/filter/query.ts diff --git a/src-web/components/core/Editor/genericCompletion.ts b/apps/yaak-client/components/core/Editor/genericCompletion.ts similarity index 100% rename from src-web/components/core/Editor/genericCompletion.ts rename to apps/yaak-client/components/core/Editor/genericCompletion.ts diff --git a/src-web/components/core/Editor/hyperlink/extension.ts b/apps/yaak-client/components/core/Editor/hyperlink/extension.ts similarity index 100% rename from src-web/components/core/Editor/hyperlink/extension.ts rename to apps/yaak-client/components/core/Editor/hyperlink/extension.ts diff --git a/src-web/components/core/Editor/json-lint.ts b/apps/yaak-client/components/core/Editor/json-lint.ts similarity index 100% rename from src-web/components/core/Editor/json-lint.ts rename to apps/yaak-client/components/core/Editor/json-lint.ts diff --git a/src-web/components/core/Editor/pairs/extension.ts b/apps/yaak-client/components/core/Editor/pairs/extension.ts similarity index 100% rename from src-web/components/core/Editor/pairs/extension.ts rename to apps/yaak-client/components/core/Editor/pairs/extension.ts diff --git a/src-web/components/core/Editor/pairs/highlight.ts b/apps/yaak-client/components/core/Editor/pairs/highlight.ts similarity index 100% rename from src-web/components/core/Editor/pairs/highlight.ts rename to apps/yaak-client/components/core/Editor/pairs/highlight.ts diff --git a/src-web/components/core/Editor/pairs/pairs.grammar b/apps/yaak-client/components/core/Editor/pairs/pairs.grammar similarity index 100% rename from src-web/components/core/Editor/pairs/pairs.grammar rename to apps/yaak-client/components/core/Editor/pairs/pairs.grammar diff --git a/src-web/components/core/Editor/pairs/pairs.terms.ts b/apps/yaak-client/components/core/Editor/pairs/pairs.terms.ts similarity index 100% rename from src-web/components/core/Editor/pairs/pairs.terms.ts rename to apps/yaak-client/components/core/Editor/pairs/pairs.terms.ts diff --git a/src-web/components/core/Editor/pairs/pairs.ts b/apps/yaak-client/components/core/Editor/pairs/pairs.ts similarity index 100% rename from src-web/components/core/Editor/pairs/pairs.ts rename to apps/yaak-client/components/core/Editor/pairs/pairs.ts diff --git a/src-web/components/core/Editor/searchMatchCount.ts b/apps/yaak-client/components/core/Editor/searchMatchCount.ts similarity index 100% rename from src-web/components/core/Editor/searchMatchCount.ts rename to apps/yaak-client/components/core/Editor/searchMatchCount.ts diff --git a/src-web/components/core/Editor/singleLine.ts b/apps/yaak-client/components/core/Editor/singleLine.ts similarity index 100% rename from src-web/components/core/Editor/singleLine.ts rename to apps/yaak-client/components/core/Editor/singleLine.ts diff --git a/src-web/components/core/Editor/text/extension.ts b/apps/yaak-client/components/core/Editor/text/extension.ts similarity index 100% rename from src-web/components/core/Editor/text/extension.ts rename to apps/yaak-client/components/core/Editor/text/extension.ts diff --git a/src-web/components/core/Editor/text/text.grammar b/apps/yaak-client/components/core/Editor/text/text.grammar similarity index 100% rename from src-web/components/core/Editor/text/text.grammar rename to apps/yaak-client/components/core/Editor/text/text.grammar diff --git a/src-web/components/core/Editor/text/text.terms.ts b/apps/yaak-client/components/core/Editor/text/text.terms.ts similarity index 100% rename from src-web/components/core/Editor/text/text.terms.ts rename to apps/yaak-client/components/core/Editor/text/text.terms.ts diff --git a/src-web/components/core/Editor/text/text.ts b/apps/yaak-client/components/core/Editor/text/text.ts similarity index 100% rename from src-web/components/core/Editor/text/text.ts rename to apps/yaak-client/components/core/Editor/text/text.ts diff --git a/src-web/components/core/Editor/timeline/extension.ts b/apps/yaak-client/components/core/Editor/timeline/extension.ts similarity index 100% rename from src-web/components/core/Editor/timeline/extension.ts rename to apps/yaak-client/components/core/Editor/timeline/extension.ts diff --git a/src-web/components/core/Editor/timeline/highlight.ts b/apps/yaak-client/components/core/Editor/timeline/highlight.ts similarity index 100% rename from src-web/components/core/Editor/timeline/highlight.ts rename to apps/yaak-client/components/core/Editor/timeline/highlight.ts diff --git a/src-web/components/core/Editor/timeline/timeline.grammar b/apps/yaak-client/components/core/Editor/timeline/timeline.grammar similarity index 100% rename from src-web/components/core/Editor/timeline/timeline.grammar rename to apps/yaak-client/components/core/Editor/timeline/timeline.grammar diff --git a/src-web/components/core/Editor/timeline/timeline.terms.ts b/apps/yaak-client/components/core/Editor/timeline/timeline.terms.ts similarity index 100% rename from src-web/components/core/Editor/timeline/timeline.terms.ts rename to apps/yaak-client/components/core/Editor/timeline/timeline.terms.ts diff --git a/src-web/components/core/Editor/timeline/timeline.ts b/apps/yaak-client/components/core/Editor/timeline/timeline.ts similarity index 100% rename from src-web/components/core/Editor/timeline/timeline.ts rename to apps/yaak-client/components/core/Editor/timeline/timeline.ts diff --git a/src-web/components/core/Editor/twig/completion.ts b/apps/yaak-client/components/core/Editor/twig/completion.ts similarity index 100% rename from src-web/components/core/Editor/twig/completion.ts rename to apps/yaak-client/components/core/Editor/twig/completion.ts diff --git a/src-web/components/core/Editor/twig/extension.ts b/apps/yaak-client/components/core/Editor/twig/extension.ts similarity index 100% rename from src-web/components/core/Editor/twig/extension.ts rename to apps/yaak-client/components/core/Editor/twig/extension.ts diff --git a/src-web/components/core/Editor/twig/highlight.ts b/apps/yaak-client/components/core/Editor/twig/highlight.ts similarity index 100% rename from src-web/components/core/Editor/twig/highlight.ts rename to apps/yaak-client/components/core/Editor/twig/highlight.ts diff --git a/src-web/components/core/Editor/twig/pathParameters.ts b/apps/yaak-client/components/core/Editor/twig/pathParameters.ts similarity index 100% rename from src-web/components/core/Editor/twig/pathParameters.ts rename to apps/yaak-client/components/core/Editor/twig/pathParameters.ts diff --git a/src-web/components/core/Editor/twig/templateTags.ts b/apps/yaak-client/components/core/Editor/twig/templateTags.ts similarity index 100% rename from src-web/components/core/Editor/twig/templateTags.ts rename to apps/yaak-client/components/core/Editor/twig/templateTags.ts diff --git a/src-web/components/core/Editor/twig/twig.grammar b/apps/yaak-client/components/core/Editor/twig/twig.grammar similarity index 100% rename from src-web/components/core/Editor/twig/twig.grammar rename to apps/yaak-client/components/core/Editor/twig/twig.grammar diff --git a/src-web/components/core/Editor/twig/twig.terms.ts b/apps/yaak-client/components/core/Editor/twig/twig.terms.ts similarity index 100% rename from src-web/components/core/Editor/twig/twig.terms.ts rename to apps/yaak-client/components/core/Editor/twig/twig.terms.ts diff --git a/src-web/components/core/Editor/twig/twig.test.ts b/apps/yaak-client/components/core/Editor/twig/twig.test.ts similarity index 100% rename from src-web/components/core/Editor/twig/twig.test.ts rename to apps/yaak-client/components/core/Editor/twig/twig.test.ts diff --git a/src-web/components/core/Editor/twig/twig.ts b/apps/yaak-client/components/core/Editor/twig/twig.ts similarity index 100% rename from src-web/components/core/Editor/twig/twig.ts rename to apps/yaak-client/components/core/Editor/twig/twig.ts diff --git a/src-web/components/core/Editor/twig/util.ts b/apps/yaak-client/components/core/Editor/twig/util.ts similarity index 100% rename from src-web/components/core/Editor/twig/util.ts rename to apps/yaak-client/components/core/Editor/twig/util.ts diff --git a/src-web/components/core/Editor/url/completion.ts b/apps/yaak-client/components/core/Editor/url/completion.ts similarity index 100% rename from src-web/components/core/Editor/url/completion.ts rename to apps/yaak-client/components/core/Editor/url/completion.ts diff --git a/src-web/components/core/Editor/url/extension.ts b/apps/yaak-client/components/core/Editor/url/extension.ts similarity index 100% rename from src-web/components/core/Editor/url/extension.ts rename to apps/yaak-client/components/core/Editor/url/extension.ts diff --git a/src-web/components/core/Editor/url/highlight.ts b/apps/yaak-client/components/core/Editor/url/highlight.ts similarity index 100% rename from src-web/components/core/Editor/url/highlight.ts rename to apps/yaak-client/components/core/Editor/url/highlight.ts diff --git a/src-web/components/core/Editor/url/url.grammar b/apps/yaak-client/components/core/Editor/url/url.grammar similarity index 100% rename from src-web/components/core/Editor/url/url.grammar rename to apps/yaak-client/components/core/Editor/url/url.grammar diff --git a/src-web/components/core/Editor/url/url.terms.ts b/apps/yaak-client/components/core/Editor/url/url.terms.ts similarity index 100% rename from src-web/components/core/Editor/url/url.terms.ts rename to apps/yaak-client/components/core/Editor/url/url.terms.ts diff --git a/src-web/components/core/Editor/url/url.ts b/apps/yaak-client/components/core/Editor/url/url.ts similarity index 100% rename from src-web/components/core/Editor/url/url.ts rename to apps/yaak-client/components/core/Editor/url/url.ts diff --git a/src-web/components/core/EventViewer.tsx b/apps/yaak-client/components/core/EventViewer.tsx similarity index 100% rename from src-web/components/core/EventViewer.tsx rename to apps/yaak-client/components/core/EventViewer.tsx diff --git a/src-web/components/core/EventViewerRow.tsx b/apps/yaak-client/components/core/EventViewerRow.tsx similarity index 100% rename from src-web/components/core/EventViewerRow.tsx rename to apps/yaak-client/components/core/EventViewerRow.tsx diff --git a/src-web/components/core/FormattedError.tsx b/apps/yaak-client/components/core/FormattedError.tsx similarity index 100% rename from src-web/components/core/FormattedError.tsx rename to apps/yaak-client/components/core/FormattedError.tsx diff --git a/src-web/components/core/Heading.tsx b/apps/yaak-client/components/core/Heading.tsx similarity index 100% rename from src-web/components/core/Heading.tsx rename to apps/yaak-client/components/core/Heading.tsx diff --git a/src-web/components/core/Hotkey.tsx b/apps/yaak-client/components/core/Hotkey.tsx similarity index 100% rename from src-web/components/core/Hotkey.tsx rename to apps/yaak-client/components/core/Hotkey.tsx diff --git a/src-web/components/core/HotkeyLabel.tsx b/apps/yaak-client/components/core/HotkeyLabel.tsx similarity index 100% rename from src-web/components/core/HotkeyLabel.tsx rename to apps/yaak-client/components/core/HotkeyLabel.tsx diff --git a/src-web/components/core/HotkeyList.tsx b/apps/yaak-client/components/core/HotkeyList.tsx similarity index 100% rename from src-web/components/core/HotkeyList.tsx rename to apps/yaak-client/components/core/HotkeyList.tsx diff --git a/src-web/components/core/HttpMethodTag.tsx b/apps/yaak-client/components/core/HttpMethodTag.tsx similarity index 100% rename from src-web/components/core/HttpMethodTag.tsx rename to apps/yaak-client/components/core/HttpMethodTag.tsx diff --git a/src-web/components/core/HttpResponseDurationTag.tsx b/apps/yaak-client/components/core/HttpResponseDurationTag.tsx similarity index 100% rename from src-web/components/core/HttpResponseDurationTag.tsx rename to apps/yaak-client/components/core/HttpResponseDurationTag.tsx diff --git a/src-web/components/core/HttpStatusTag.tsx b/apps/yaak-client/components/core/HttpStatusTag.tsx similarity index 100% rename from src-web/components/core/HttpStatusTag.tsx rename to apps/yaak-client/components/core/HttpStatusTag.tsx diff --git a/src-web/components/core/Icon.tsx b/apps/yaak-client/components/core/Icon.tsx similarity index 100% rename from src-web/components/core/Icon.tsx rename to apps/yaak-client/components/core/Icon.tsx diff --git a/src-web/components/core/IconButton.tsx b/apps/yaak-client/components/core/IconButton.tsx similarity index 100% rename from src-web/components/core/IconButton.tsx rename to apps/yaak-client/components/core/IconButton.tsx diff --git a/src-web/components/core/IconTooltip.tsx b/apps/yaak-client/components/core/IconTooltip.tsx similarity index 100% rename from src-web/components/core/IconTooltip.tsx rename to apps/yaak-client/components/core/IconTooltip.tsx diff --git a/src-web/components/core/InlineCode.tsx b/apps/yaak-client/components/core/InlineCode.tsx similarity index 100% rename from src-web/components/core/InlineCode.tsx rename to apps/yaak-client/components/core/InlineCode.tsx diff --git a/src-web/components/core/Input.tsx b/apps/yaak-client/components/core/Input.tsx similarity index 100% rename from src-web/components/core/Input.tsx rename to apps/yaak-client/components/core/Input.tsx diff --git a/src-web/components/core/JsonAttributeTree.tsx b/apps/yaak-client/components/core/JsonAttributeTree.tsx similarity index 100% rename from src-web/components/core/JsonAttributeTree.tsx rename to apps/yaak-client/components/core/JsonAttributeTree.tsx diff --git a/src-web/components/core/KeyValueRow.tsx b/apps/yaak-client/components/core/KeyValueRow.tsx similarity index 100% rename from src-web/components/core/KeyValueRow.tsx rename to apps/yaak-client/components/core/KeyValueRow.tsx diff --git a/src-web/components/core/Label.tsx b/apps/yaak-client/components/core/Label.tsx similarity index 100% rename from src-web/components/core/Label.tsx rename to apps/yaak-client/components/core/Label.tsx diff --git a/src-web/components/core/Link.tsx b/apps/yaak-client/components/core/Link.tsx similarity index 100% rename from src-web/components/core/Link.tsx rename to apps/yaak-client/components/core/Link.tsx diff --git a/src-web/components/core/LoadingIcon.tsx b/apps/yaak-client/components/core/LoadingIcon.tsx similarity index 100% rename from src-web/components/core/LoadingIcon.tsx rename to apps/yaak-client/components/core/LoadingIcon.tsx diff --git a/src-web/components/core/PairEditor.tsx b/apps/yaak-client/components/core/PairEditor.tsx similarity index 100% rename from src-web/components/core/PairEditor.tsx rename to apps/yaak-client/components/core/PairEditor.tsx diff --git a/src-web/components/core/PairEditor.util.tsx b/apps/yaak-client/components/core/PairEditor.util.tsx similarity index 100% rename from src-web/components/core/PairEditor.util.tsx rename to apps/yaak-client/components/core/PairEditor.util.tsx diff --git a/src-web/components/core/PairOrBulkEditor.tsx b/apps/yaak-client/components/core/PairOrBulkEditor.tsx similarity index 100% rename from src-web/components/core/PairOrBulkEditor.tsx rename to apps/yaak-client/components/core/PairOrBulkEditor.tsx diff --git a/src-web/components/core/PillButton.tsx b/apps/yaak-client/components/core/PillButton.tsx similarity index 100% rename from src-web/components/core/PillButton.tsx rename to apps/yaak-client/components/core/PillButton.tsx diff --git a/src-web/components/core/PlainInput.tsx b/apps/yaak-client/components/core/PlainInput.tsx similarity index 100% rename from src-web/components/core/PlainInput.tsx rename to apps/yaak-client/components/core/PlainInput.tsx diff --git a/src-web/components/core/Prompt.tsx b/apps/yaak-client/components/core/Prompt.tsx similarity index 100% rename from src-web/components/core/Prompt.tsx rename to apps/yaak-client/components/core/Prompt.tsx diff --git a/src-web/components/core/RadioCards.tsx b/apps/yaak-client/components/core/RadioCards.tsx similarity index 100% rename from src-web/components/core/RadioCards.tsx rename to apps/yaak-client/components/core/RadioCards.tsx diff --git a/src-web/components/core/RadioDropdown.tsx b/apps/yaak-client/components/core/RadioDropdown.tsx similarity index 100% rename from src-web/components/core/RadioDropdown.tsx rename to apps/yaak-client/components/core/RadioDropdown.tsx diff --git a/src-web/components/core/SegmentedControl.tsx b/apps/yaak-client/components/core/SegmentedControl.tsx similarity index 100% rename from src-web/components/core/SegmentedControl.tsx rename to apps/yaak-client/components/core/SegmentedControl.tsx diff --git a/src-web/components/core/Select.tsx b/apps/yaak-client/components/core/Select.tsx similarity index 100% rename from src-web/components/core/Select.tsx rename to apps/yaak-client/components/core/Select.tsx diff --git a/src-web/components/core/Separator.tsx b/apps/yaak-client/components/core/Separator.tsx similarity index 100% rename from src-web/components/core/Separator.tsx rename to apps/yaak-client/components/core/Separator.tsx diff --git a/src-web/components/core/SizeTag.tsx b/apps/yaak-client/components/core/SizeTag.tsx similarity index 100% rename from src-web/components/core/SizeTag.tsx rename to apps/yaak-client/components/core/SizeTag.tsx diff --git a/src-web/components/core/SplitLayout.tsx b/apps/yaak-client/components/core/SplitLayout.tsx similarity index 100% rename from src-web/components/core/SplitLayout.tsx rename to apps/yaak-client/components/core/SplitLayout.tsx diff --git a/src-web/components/core/Stacks.tsx b/apps/yaak-client/components/core/Stacks.tsx similarity index 100% rename from src-web/components/core/Stacks.tsx rename to apps/yaak-client/components/core/Stacks.tsx diff --git a/src-web/components/core/Table.tsx b/apps/yaak-client/components/core/Table.tsx similarity index 100% rename from src-web/components/core/Table.tsx rename to apps/yaak-client/components/core/Table.tsx diff --git a/src-web/components/core/Tabs/Tabs.tsx b/apps/yaak-client/components/core/Tabs/Tabs.tsx similarity index 100% rename from src-web/components/core/Tabs/Tabs.tsx rename to apps/yaak-client/components/core/Tabs/Tabs.tsx diff --git a/src-web/components/core/Toast.tsx b/apps/yaak-client/components/core/Toast.tsx similarity index 100% rename from src-web/components/core/Toast.tsx rename to apps/yaak-client/components/core/Toast.tsx diff --git a/src-web/components/core/Tooltip.tsx b/apps/yaak-client/components/core/Tooltip.tsx similarity index 100% rename from src-web/components/core/Tooltip.tsx rename to apps/yaak-client/components/core/Tooltip.tsx diff --git a/src-web/components/core/WebsocketStatusTag.tsx b/apps/yaak-client/components/core/WebsocketStatusTag.tsx similarity index 100% rename from src-web/components/core/WebsocketStatusTag.tsx rename to apps/yaak-client/components/core/WebsocketStatusTag.tsx diff --git a/src-web/components/core/tree/Tree.tsx b/apps/yaak-client/components/core/tree/Tree.tsx similarity index 100% rename from src-web/components/core/tree/Tree.tsx rename to apps/yaak-client/components/core/tree/Tree.tsx diff --git a/src-web/components/core/tree/TreeDragOverlay.tsx b/apps/yaak-client/components/core/tree/TreeDragOverlay.tsx similarity index 100% rename from src-web/components/core/tree/TreeDragOverlay.tsx rename to apps/yaak-client/components/core/tree/TreeDragOverlay.tsx diff --git a/src-web/components/core/tree/TreeDropMarker.tsx b/apps/yaak-client/components/core/tree/TreeDropMarker.tsx similarity index 100% rename from src-web/components/core/tree/TreeDropMarker.tsx rename to apps/yaak-client/components/core/tree/TreeDropMarker.tsx diff --git a/src-web/components/core/tree/TreeIndentGuide.tsx b/apps/yaak-client/components/core/tree/TreeIndentGuide.tsx similarity index 100% rename from src-web/components/core/tree/TreeIndentGuide.tsx rename to apps/yaak-client/components/core/tree/TreeIndentGuide.tsx diff --git a/src-web/components/core/tree/TreeItem.tsx b/apps/yaak-client/components/core/tree/TreeItem.tsx similarity index 100% rename from src-web/components/core/tree/TreeItem.tsx rename to apps/yaak-client/components/core/tree/TreeItem.tsx diff --git a/src-web/components/core/tree/TreeItemList.tsx b/apps/yaak-client/components/core/tree/TreeItemList.tsx similarity index 100% rename from src-web/components/core/tree/TreeItemList.tsx rename to apps/yaak-client/components/core/tree/TreeItemList.tsx diff --git a/src-web/components/core/tree/atoms.ts b/apps/yaak-client/components/core/tree/atoms.ts similarity index 100% rename from src-web/components/core/tree/atoms.ts rename to apps/yaak-client/components/core/tree/atoms.ts diff --git a/src-web/components/core/tree/common.ts b/apps/yaak-client/components/core/tree/common.ts similarity index 100% rename from src-web/components/core/tree/common.ts rename to apps/yaak-client/components/core/tree/common.ts diff --git a/src-web/components/core/tree/useSelectableItems.ts b/apps/yaak-client/components/core/tree/useSelectableItems.ts similarity index 100% rename from src-web/components/core/tree/useSelectableItems.ts rename to apps/yaak-client/components/core/tree/useSelectableItems.ts diff --git a/src-web/components/git/BranchSelectionDialog.tsx b/apps/yaak-client/components/git/BranchSelectionDialog.tsx similarity index 100% rename from src-web/components/git/BranchSelectionDialog.tsx rename to apps/yaak-client/components/git/BranchSelectionDialog.tsx diff --git a/src-web/components/git/GitCommitDialog.tsx b/apps/yaak-client/components/git/GitCommitDialog.tsx similarity index 100% rename from src-web/components/git/GitCommitDialog.tsx rename to apps/yaak-client/components/git/GitCommitDialog.tsx diff --git a/src-web/components/git/GitDropdown.tsx b/apps/yaak-client/components/git/GitDropdown.tsx similarity index 100% rename from src-web/components/git/GitDropdown.tsx rename to apps/yaak-client/components/git/GitDropdown.tsx diff --git a/src-web/components/git/GitRemotesDialog.tsx b/apps/yaak-client/components/git/GitRemotesDialog.tsx similarity index 100% rename from src-web/components/git/GitRemotesDialog.tsx rename to apps/yaak-client/components/git/GitRemotesDialog.tsx diff --git a/src-web/components/git/HistoryDialog.tsx b/apps/yaak-client/components/git/HistoryDialog.tsx similarity index 100% rename from src-web/components/git/HistoryDialog.tsx rename to apps/yaak-client/components/git/HistoryDialog.tsx diff --git a/src-web/components/git/callbacks.tsx b/apps/yaak-client/components/git/callbacks.tsx similarity index 100% rename from src-web/components/git/callbacks.tsx rename to apps/yaak-client/components/git/callbacks.tsx diff --git a/src-web/components/git/credentials.tsx b/apps/yaak-client/components/git/credentials.tsx similarity index 100% rename from src-web/components/git/credentials.tsx rename to apps/yaak-client/components/git/credentials.tsx diff --git a/src-web/components/git/diverged.tsx b/apps/yaak-client/components/git/diverged.tsx similarity index 100% rename from src-web/components/git/diverged.tsx rename to apps/yaak-client/components/git/diverged.tsx diff --git a/src-web/components/git/git-util.ts b/apps/yaak-client/components/git/git-util.ts similarity index 100% rename from src-web/components/git/git-util.ts rename to apps/yaak-client/components/git/git-util.ts diff --git a/src-web/components/git/showAddRemoteDialog.tsx b/apps/yaak-client/components/git/showAddRemoteDialog.tsx similarity index 100% rename from src-web/components/git/showAddRemoteDialog.tsx rename to apps/yaak-client/components/git/showAddRemoteDialog.tsx diff --git a/src-web/components/git/uncommitted.tsx b/apps/yaak-client/components/git/uncommitted.tsx similarity index 100% rename from src-web/components/git/uncommitted.tsx rename to apps/yaak-client/components/git/uncommitted.tsx diff --git a/src-web/components/graphql/GraphQLDocsExplorer.tsx b/apps/yaak-client/components/graphql/GraphQLDocsExplorer.tsx similarity index 100% rename from src-web/components/graphql/GraphQLDocsExplorer.tsx rename to apps/yaak-client/components/graphql/GraphQLDocsExplorer.tsx diff --git a/src-web/components/graphql/GraphQLEditor.tsx b/apps/yaak-client/components/graphql/GraphQLEditor.tsx similarity index 100% rename from src-web/components/graphql/GraphQLEditor.tsx rename to apps/yaak-client/components/graphql/GraphQLEditor.tsx diff --git a/src-web/components/graphql/graphqlAtoms.ts b/apps/yaak-client/components/graphql/graphqlAtoms.ts similarity index 100% rename from src-web/components/graphql/graphqlAtoms.ts rename to apps/yaak-client/components/graphql/graphqlAtoms.ts diff --git a/src-web/components/responseViewers/AudioViewer.tsx b/apps/yaak-client/components/responseViewers/AudioViewer.tsx similarity index 100% rename from src-web/components/responseViewers/AudioViewer.tsx rename to apps/yaak-client/components/responseViewers/AudioViewer.tsx diff --git a/src-web/components/responseViewers/BinaryViewer.tsx b/apps/yaak-client/components/responseViewers/BinaryViewer.tsx similarity index 100% rename from src-web/components/responseViewers/BinaryViewer.tsx rename to apps/yaak-client/components/responseViewers/BinaryViewer.tsx diff --git a/src-web/components/responseViewers/CsvViewer.tsx b/apps/yaak-client/components/responseViewers/CsvViewer.tsx similarity index 100% rename from src-web/components/responseViewers/CsvViewer.tsx rename to apps/yaak-client/components/responseViewers/CsvViewer.tsx diff --git a/src-web/components/responseViewers/EventStreamViewer.tsx b/apps/yaak-client/components/responseViewers/EventStreamViewer.tsx similarity index 100% rename from src-web/components/responseViewers/EventStreamViewer.tsx rename to apps/yaak-client/components/responseViewers/EventStreamViewer.tsx diff --git a/src-web/components/responseViewers/HTMLOrTextViewer.tsx b/apps/yaak-client/components/responseViewers/HTMLOrTextViewer.tsx similarity index 100% rename from src-web/components/responseViewers/HTMLOrTextViewer.tsx rename to apps/yaak-client/components/responseViewers/HTMLOrTextViewer.tsx diff --git a/src-web/components/responseViewers/ImageViewer.tsx b/apps/yaak-client/components/responseViewers/ImageViewer.tsx similarity index 100% rename from src-web/components/responseViewers/ImageViewer.tsx rename to apps/yaak-client/components/responseViewers/ImageViewer.tsx diff --git a/src-web/components/responseViewers/JsonViewer.tsx b/apps/yaak-client/components/responseViewers/JsonViewer.tsx similarity index 100% rename from src-web/components/responseViewers/JsonViewer.tsx rename to apps/yaak-client/components/responseViewers/JsonViewer.tsx diff --git a/src-web/components/responseViewers/MultipartViewer.tsx b/apps/yaak-client/components/responseViewers/MultipartViewer.tsx similarity index 100% rename from src-web/components/responseViewers/MultipartViewer.tsx rename to apps/yaak-client/components/responseViewers/MultipartViewer.tsx diff --git a/src-web/components/responseViewers/PdfViewer.css b/apps/yaak-client/components/responseViewers/PdfViewer.css similarity index 100% rename from src-web/components/responseViewers/PdfViewer.css rename to apps/yaak-client/components/responseViewers/PdfViewer.css diff --git a/src-web/components/responseViewers/PdfViewer.tsx b/apps/yaak-client/components/responseViewers/PdfViewer.tsx similarity index 100% rename from src-web/components/responseViewers/PdfViewer.tsx rename to apps/yaak-client/components/responseViewers/PdfViewer.tsx diff --git a/src-web/components/responseViewers/SvgViewer.tsx b/apps/yaak-client/components/responseViewers/SvgViewer.tsx similarity index 100% rename from src-web/components/responseViewers/SvgViewer.tsx rename to apps/yaak-client/components/responseViewers/SvgViewer.tsx diff --git a/src-web/components/responseViewers/TextViewer.tsx b/apps/yaak-client/components/responseViewers/TextViewer.tsx similarity index 100% rename from src-web/components/responseViewers/TextViewer.tsx rename to apps/yaak-client/components/responseViewers/TextViewer.tsx diff --git a/src-web/components/responseViewers/VideoViewer.tsx b/apps/yaak-client/components/responseViewers/VideoViewer.tsx similarity index 100% rename from src-web/components/responseViewers/VideoViewer.tsx rename to apps/yaak-client/components/responseViewers/VideoViewer.tsx diff --git a/src-web/components/responseViewers/WebPageViewer.tsx b/apps/yaak-client/components/responseViewers/WebPageViewer.tsx similarity index 100% rename from src-web/components/responseViewers/WebPageViewer.tsx rename to apps/yaak-client/components/responseViewers/WebPageViewer.tsx diff --git a/src-web/font-size.ts b/apps/yaak-client/font-size.ts similarity index 100% rename from src-web/font-size.ts rename to apps/yaak-client/font-size.ts diff --git a/src-web/font.ts b/apps/yaak-client/font.ts similarity index 100% rename from src-web/font.ts rename to apps/yaak-client/font.ts diff --git a/src-web/hooks/useActiveCookieJar.ts b/apps/yaak-client/hooks/useActiveCookieJar.ts similarity index 100% rename from src-web/hooks/useActiveCookieJar.ts rename to apps/yaak-client/hooks/useActiveCookieJar.ts diff --git a/src-web/hooks/useActiveEnvironment.ts b/apps/yaak-client/hooks/useActiveEnvironment.ts similarity index 100% rename from src-web/hooks/useActiveEnvironment.ts rename to apps/yaak-client/hooks/useActiveEnvironment.ts diff --git a/src-web/hooks/useActiveEnvironmentVariables.ts b/apps/yaak-client/hooks/useActiveEnvironmentVariables.ts similarity index 100% rename from src-web/hooks/useActiveEnvironmentVariables.ts rename to apps/yaak-client/hooks/useActiveEnvironmentVariables.ts diff --git a/src-web/hooks/useActiveFolder.ts b/apps/yaak-client/hooks/useActiveFolder.ts similarity index 100% rename from src-web/hooks/useActiveFolder.ts rename to apps/yaak-client/hooks/useActiveFolder.ts diff --git a/src-web/hooks/useActiveFolderId.ts b/apps/yaak-client/hooks/useActiveFolderId.ts similarity index 100% rename from src-web/hooks/useActiveFolderId.ts rename to apps/yaak-client/hooks/useActiveFolderId.ts diff --git a/src-web/hooks/useActiveRequest.ts b/apps/yaak-client/hooks/useActiveRequest.ts similarity index 100% rename from src-web/hooks/useActiveRequest.ts rename to apps/yaak-client/hooks/useActiveRequest.ts diff --git a/src-web/hooks/useActiveRequestId.ts b/apps/yaak-client/hooks/useActiveRequestId.ts similarity index 100% rename from src-web/hooks/useActiveRequestId.ts rename to apps/yaak-client/hooks/useActiveRequestId.ts diff --git a/src-web/hooks/useActiveWorkspace.ts b/apps/yaak-client/hooks/useActiveWorkspace.ts similarity index 100% rename from src-web/hooks/useActiveWorkspace.ts rename to apps/yaak-client/hooks/useActiveWorkspace.ts diff --git a/src-web/hooks/useActiveWorkspaceChangedToast.tsx b/apps/yaak-client/hooks/useActiveWorkspaceChangedToast.tsx similarity index 100% rename from src-web/hooks/useActiveWorkspaceChangedToast.tsx rename to apps/yaak-client/hooks/useActiveWorkspaceChangedToast.tsx diff --git a/src-web/hooks/useAllRequests.ts b/apps/yaak-client/hooks/useAllRequests.ts similarity index 100% rename from src-web/hooks/useAllRequests.ts rename to apps/yaak-client/hooks/useAllRequests.ts diff --git a/src-web/hooks/useAuthTab.tsx b/apps/yaak-client/hooks/useAuthTab.tsx similarity index 100% rename from src-web/hooks/useAuthTab.tsx rename to apps/yaak-client/hooks/useAuthTab.tsx diff --git a/src-web/hooks/useCancelHttpResponse.ts b/apps/yaak-client/hooks/useCancelHttpResponse.ts similarity index 100% rename from src-web/hooks/useCancelHttpResponse.ts rename to apps/yaak-client/hooks/useCancelHttpResponse.ts diff --git a/src-web/hooks/useCheckForUpdates.tsx b/apps/yaak-client/hooks/useCheckForUpdates.tsx similarity index 100% rename from src-web/hooks/useCheckForUpdates.tsx rename to apps/yaak-client/hooks/useCheckForUpdates.tsx diff --git a/src-web/hooks/useClickOutside.ts b/apps/yaak-client/hooks/useClickOutside.ts similarity index 100% rename from src-web/hooks/useClickOutside.ts rename to apps/yaak-client/hooks/useClickOutside.ts diff --git a/src-web/hooks/useContainerQuery.ts b/apps/yaak-client/hooks/useContainerQuery.ts similarity index 100% rename from src-web/hooks/useContainerQuery.ts rename to apps/yaak-client/hooks/useContainerQuery.ts diff --git a/src-web/hooks/useCopyHttpResponse.ts b/apps/yaak-client/hooks/useCopyHttpResponse.ts similarity index 100% rename from src-web/hooks/useCopyHttpResponse.ts rename to apps/yaak-client/hooks/useCopyHttpResponse.ts diff --git a/src-web/hooks/useCreateCookieJar.ts b/apps/yaak-client/hooks/useCreateCookieJar.ts similarity index 100% rename from src-web/hooks/useCreateCookieJar.ts rename to apps/yaak-client/hooks/useCreateCookieJar.ts diff --git a/src-web/hooks/useCreateDropdownItems.tsx b/apps/yaak-client/hooks/useCreateDropdownItems.tsx similarity index 100% rename from src-web/hooks/useCreateDropdownItems.tsx rename to apps/yaak-client/hooks/useCreateDropdownItems.tsx diff --git a/src-web/hooks/useCreateWorkspace.tsx b/apps/yaak-client/hooks/useCreateWorkspace.tsx similarity index 100% rename from src-web/hooks/useCreateWorkspace.tsx rename to apps/yaak-client/hooks/useCreateWorkspace.tsx diff --git a/src-web/hooks/useDebouncedState.ts b/apps/yaak-client/hooks/useDebouncedState.ts similarity index 100% rename from src-web/hooks/useDebouncedState.ts rename to apps/yaak-client/hooks/useDebouncedState.ts diff --git a/src-web/hooks/useDebouncedValue.ts b/apps/yaak-client/hooks/useDebouncedValue.ts similarity index 100% rename from src-web/hooks/useDebouncedValue.ts rename to apps/yaak-client/hooks/useDebouncedValue.ts diff --git a/src-web/hooks/useDeleteGrpcConnections.ts b/apps/yaak-client/hooks/useDeleteGrpcConnections.ts similarity index 100% rename from src-web/hooks/useDeleteGrpcConnections.ts rename to apps/yaak-client/hooks/useDeleteGrpcConnections.ts diff --git a/src-web/hooks/useDeleteHttpResponses.ts b/apps/yaak-client/hooks/useDeleteHttpResponses.ts similarity index 100% rename from src-web/hooks/useDeleteHttpResponses.ts rename to apps/yaak-client/hooks/useDeleteHttpResponses.ts diff --git a/src-web/hooks/useDeleteSendHistory.tsx b/apps/yaak-client/hooks/useDeleteSendHistory.tsx similarity index 100% rename from src-web/hooks/useDeleteSendHistory.tsx rename to apps/yaak-client/hooks/useDeleteSendHistory.tsx diff --git a/src-web/hooks/useEnvironmentValueVisibility.ts b/apps/yaak-client/hooks/useEnvironmentValueVisibility.ts similarity index 100% rename from src-web/hooks/useEnvironmentValueVisibility.ts rename to apps/yaak-client/hooks/useEnvironmentValueVisibility.ts diff --git a/src-web/hooks/useEnvironmentVariables.ts b/apps/yaak-client/hooks/useEnvironmentVariables.ts similarity index 100% rename from src-web/hooks/useEnvironmentVariables.ts rename to apps/yaak-client/hooks/useEnvironmentVariables.ts diff --git a/src-web/hooks/useEnvironmentsBreakdown.ts b/apps/yaak-client/hooks/useEnvironmentsBreakdown.ts similarity index 100% rename from src-web/hooks/useEnvironmentsBreakdown.ts rename to apps/yaak-client/hooks/useEnvironmentsBreakdown.ts diff --git a/src-web/hooks/useEventViewerKeyboard.ts b/apps/yaak-client/hooks/useEventViewerKeyboard.ts similarity index 100% rename from src-web/hooks/useEventViewerKeyboard.ts rename to apps/yaak-client/hooks/useEventViewerKeyboard.ts diff --git a/src-web/hooks/useExportData.tsx b/apps/yaak-client/hooks/useExportData.tsx similarity index 100% rename from src-web/hooks/useExportData.tsx rename to apps/yaak-client/hooks/useExportData.tsx diff --git a/src-web/hooks/useFastMutation.ts b/apps/yaak-client/hooks/useFastMutation.ts similarity index 100% rename from src-web/hooks/useFastMutation.ts rename to apps/yaak-client/hooks/useFastMutation.ts diff --git a/src-web/hooks/useFloatingSidebarHidden.ts b/apps/yaak-client/hooks/useFloatingSidebarHidden.ts similarity index 100% rename from src-web/hooks/useFloatingSidebarHidden.ts rename to apps/yaak-client/hooks/useFloatingSidebarHidden.ts diff --git a/src-web/hooks/useFolderActions.ts b/apps/yaak-client/hooks/useFolderActions.ts similarity index 100% rename from src-web/hooks/useFolderActions.ts rename to apps/yaak-client/hooks/useFolderActions.ts diff --git a/src-web/hooks/useFormatText.ts b/apps/yaak-client/hooks/useFormatText.ts similarity index 100% rename from src-web/hooks/useFormatText.ts rename to apps/yaak-client/hooks/useFormatText.ts diff --git a/src-web/hooks/useGrpc.ts b/apps/yaak-client/hooks/useGrpc.ts similarity index 100% rename from src-web/hooks/useGrpc.ts rename to apps/yaak-client/hooks/useGrpc.ts diff --git a/src-web/hooks/useGrpcProtoFiles.ts b/apps/yaak-client/hooks/useGrpcProtoFiles.ts similarity index 100% rename from src-web/hooks/useGrpcProtoFiles.ts rename to apps/yaak-client/hooks/useGrpcProtoFiles.ts diff --git a/src-web/hooks/useGrpcRequestActions.ts b/apps/yaak-client/hooks/useGrpcRequestActions.ts similarity index 100% rename from src-web/hooks/useGrpcRequestActions.ts rename to apps/yaak-client/hooks/useGrpcRequestActions.ts diff --git a/src-web/hooks/useHeadersTab.tsx b/apps/yaak-client/hooks/useHeadersTab.tsx similarity index 100% rename from src-web/hooks/useHeadersTab.tsx rename to apps/yaak-client/hooks/useHeadersTab.tsx diff --git a/src-web/hooks/useHotKey.ts b/apps/yaak-client/hooks/useHotKey.ts similarity index 100% rename from src-web/hooks/useHotKey.ts rename to apps/yaak-client/hooks/useHotKey.ts diff --git a/src-web/hooks/useHttpAuthentication.ts b/apps/yaak-client/hooks/useHttpAuthentication.ts similarity index 100% rename from src-web/hooks/useHttpAuthentication.ts rename to apps/yaak-client/hooks/useHttpAuthentication.ts diff --git a/src-web/hooks/useHttpAuthenticationConfig.ts b/apps/yaak-client/hooks/useHttpAuthenticationConfig.ts similarity index 100% rename from src-web/hooks/useHttpAuthenticationConfig.ts rename to apps/yaak-client/hooks/useHttpAuthenticationConfig.ts diff --git a/src-web/hooks/useHttpRequestActions.ts b/apps/yaak-client/hooks/useHttpRequestActions.ts similarity index 100% rename from src-web/hooks/useHttpRequestActions.ts rename to apps/yaak-client/hooks/useHttpRequestActions.ts diff --git a/src-web/hooks/useHttpRequestBody.ts b/apps/yaak-client/hooks/useHttpRequestBody.ts similarity index 100% rename from src-web/hooks/useHttpRequestBody.ts rename to apps/yaak-client/hooks/useHttpRequestBody.ts diff --git a/src-web/hooks/useHttpResponseEvents.ts b/apps/yaak-client/hooks/useHttpResponseEvents.ts similarity index 100% rename from src-web/hooks/useHttpResponseEvents.ts rename to apps/yaak-client/hooks/useHttpResponseEvents.ts diff --git a/src-web/hooks/useImportCurl.ts b/apps/yaak-client/hooks/useImportCurl.ts similarity index 100% rename from src-web/hooks/useImportCurl.ts rename to apps/yaak-client/hooks/useImportCurl.ts diff --git a/src-web/hooks/useInheritedAuthentication.ts b/apps/yaak-client/hooks/useInheritedAuthentication.ts similarity index 100% rename from src-web/hooks/useInheritedAuthentication.ts rename to apps/yaak-client/hooks/useInheritedAuthentication.ts diff --git a/src-web/hooks/useInheritedHeaders.ts b/apps/yaak-client/hooks/useInheritedHeaders.ts similarity index 100% rename from src-web/hooks/useInheritedHeaders.ts rename to apps/yaak-client/hooks/useInheritedHeaders.ts diff --git a/src-web/hooks/useInstallPlugin.ts b/apps/yaak-client/hooks/useInstallPlugin.ts similarity index 100% rename from src-web/hooks/useInstallPlugin.ts rename to apps/yaak-client/hooks/useInstallPlugin.ts diff --git a/src-web/hooks/useIntrospectGraphQL.ts b/apps/yaak-client/hooks/useIntrospectGraphQL.ts similarity index 100% rename from src-web/hooks/useIntrospectGraphQL.ts rename to apps/yaak-client/hooks/useIntrospectGraphQL.ts diff --git a/src-web/hooks/useIsEncryptionEnabled.ts b/apps/yaak-client/hooks/useIsEncryptionEnabled.ts similarity index 100% rename from src-web/hooks/useIsEncryptionEnabled.ts rename to apps/yaak-client/hooks/useIsEncryptionEnabled.ts diff --git a/src-web/hooks/useIsFullscreen.ts b/apps/yaak-client/hooks/useIsFullscreen.ts similarity index 100% rename from src-web/hooks/useIsFullscreen.ts rename to apps/yaak-client/hooks/useIsFullscreen.ts diff --git a/src-web/hooks/useKeyValue.ts b/apps/yaak-client/hooks/useKeyValue.ts similarity index 100% rename from src-web/hooks/useKeyValue.ts rename to apps/yaak-client/hooks/useKeyValue.ts diff --git a/src-web/hooks/useKeyboardEvent.ts b/apps/yaak-client/hooks/useKeyboardEvent.ts similarity index 100% rename from src-web/hooks/useKeyboardEvent.ts rename to apps/yaak-client/hooks/useKeyboardEvent.ts diff --git a/src-web/hooks/useLatestGrpcConnection.ts b/apps/yaak-client/hooks/useLatestGrpcConnection.ts similarity index 100% rename from src-web/hooks/useLatestGrpcConnection.ts rename to apps/yaak-client/hooks/useLatestGrpcConnection.ts diff --git a/src-web/hooks/useLatestHttpResponse.ts b/apps/yaak-client/hooks/useLatestHttpResponse.ts similarity index 100% rename from src-web/hooks/useLatestHttpResponse.ts rename to apps/yaak-client/hooks/useLatestHttpResponse.ts diff --git a/src-web/hooks/useListenToTauriEvent.ts b/apps/yaak-client/hooks/useListenToTauriEvent.ts similarity index 100% rename from src-web/hooks/useListenToTauriEvent.ts rename to apps/yaak-client/hooks/useListenToTauriEvent.ts diff --git a/src-web/hooks/useModelAncestors.ts b/apps/yaak-client/hooks/useModelAncestors.ts similarity index 100% rename from src-web/hooks/useModelAncestors.ts rename to apps/yaak-client/hooks/useModelAncestors.ts diff --git a/src-web/hooks/useParentFolders.ts b/apps/yaak-client/hooks/useParentFolders.ts similarity index 100% rename from src-web/hooks/useParentFolders.ts rename to apps/yaak-client/hooks/useParentFolders.ts diff --git a/src-web/hooks/usePinnedGrpcConnection.ts b/apps/yaak-client/hooks/usePinnedGrpcConnection.ts similarity index 100% rename from src-web/hooks/usePinnedGrpcConnection.ts rename to apps/yaak-client/hooks/usePinnedGrpcConnection.ts diff --git a/src-web/hooks/usePinnedHttpResponse.ts b/apps/yaak-client/hooks/usePinnedHttpResponse.ts similarity index 100% rename from src-web/hooks/usePinnedHttpResponse.ts rename to apps/yaak-client/hooks/usePinnedHttpResponse.ts diff --git a/src-web/hooks/usePinnedWebsocketConnection.ts b/apps/yaak-client/hooks/usePinnedWebsocketConnection.ts similarity index 100% rename from src-web/hooks/usePinnedWebsocketConnection.ts rename to apps/yaak-client/hooks/usePinnedWebsocketConnection.ts diff --git a/src-web/hooks/usePluginInfo.ts b/apps/yaak-client/hooks/usePluginInfo.ts similarity index 100% rename from src-web/hooks/usePluginInfo.ts rename to apps/yaak-client/hooks/usePluginInfo.ts diff --git a/src-web/hooks/usePlugins.ts b/apps/yaak-client/hooks/usePlugins.ts similarity index 100% rename from src-web/hooks/usePlugins.ts rename to apps/yaak-client/hooks/usePlugins.ts diff --git a/src-web/hooks/usePortal.ts b/apps/yaak-client/hooks/usePortal.ts similarity index 100% rename from src-web/hooks/usePortal.ts rename to apps/yaak-client/hooks/usePortal.ts diff --git a/src-web/hooks/usePreferredAppearance.ts b/apps/yaak-client/hooks/usePreferredAppearance.ts similarity index 100% rename from src-web/hooks/usePreferredAppearance.ts rename to apps/yaak-client/hooks/usePreferredAppearance.ts diff --git a/src-web/hooks/useRandomKey.ts b/apps/yaak-client/hooks/useRandomKey.ts similarity index 100% rename from src-web/hooks/useRandomKey.ts rename to apps/yaak-client/hooks/useRandomKey.ts diff --git a/src-web/hooks/useRecentCookieJars.ts b/apps/yaak-client/hooks/useRecentCookieJars.ts similarity index 100% rename from src-web/hooks/useRecentCookieJars.ts rename to apps/yaak-client/hooks/useRecentCookieJars.ts diff --git a/src-web/hooks/useRecentEnvironments.ts b/apps/yaak-client/hooks/useRecentEnvironments.ts similarity index 100% rename from src-web/hooks/useRecentEnvironments.ts rename to apps/yaak-client/hooks/useRecentEnvironments.ts diff --git a/src-web/hooks/useRecentRequests.ts b/apps/yaak-client/hooks/useRecentRequests.ts similarity index 100% rename from src-web/hooks/useRecentRequests.ts rename to apps/yaak-client/hooks/useRecentRequests.ts diff --git a/src-web/hooks/useRecentWorkspaces.ts b/apps/yaak-client/hooks/useRecentWorkspaces.ts similarity index 100% rename from src-web/hooks/useRecentWorkspaces.ts rename to apps/yaak-client/hooks/useRecentWorkspaces.ts diff --git a/src-web/hooks/useRenderTemplate.ts b/apps/yaak-client/hooks/useRenderTemplate.ts similarity index 100% rename from src-web/hooks/useRenderTemplate.ts rename to apps/yaak-client/hooks/useRenderTemplate.ts diff --git a/src-web/hooks/useRequestEditor.tsx b/apps/yaak-client/hooks/useRequestEditor.tsx similarity index 100% rename from src-web/hooks/useRequestEditor.tsx rename to apps/yaak-client/hooks/useRequestEditor.tsx diff --git a/src-web/hooks/useRequestUpdateKey.ts b/apps/yaak-client/hooks/useRequestUpdateKey.ts similarity index 100% rename from src-web/hooks/useRequestUpdateKey.ts rename to apps/yaak-client/hooks/useRequestUpdateKey.ts diff --git a/src-web/hooks/useResolvedAppearance.ts b/apps/yaak-client/hooks/useResolvedAppearance.ts similarity index 100% rename from src-web/hooks/useResolvedAppearance.ts rename to apps/yaak-client/hooks/useResolvedAppearance.ts diff --git a/src-web/hooks/useResolvedTheme.ts b/apps/yaak-client/hooks/useResolvedTheme.ts similarity index 100% rename from src-web/hooks/useResolvedTheme.ts rename to apps/yaak-client/hooks/useResolvedTheme.ts diff --git a/src-web/hooks/useResponseBodyEventSource.ts b/apps/yaak-client/hooks/useResponseBodyEventSource.ts similarity index 100% rename from src-web/hooks/useResponseBodyEventSource.ts rename to apps/yaak-client/hooks/useResponseBodyEventSource.ts diff --git a/src-web/hooks/useResponseBodyText.ts b/apps/yaak-client/hooks/useResponseBodyText.ts similarity index 100% rename from src-web/hooks/useResponseBodyText.ts rename to apps/yaak-client/hooks/useResponseBodyText.ts diff --git a/src-web/hooks/useResponseViewMode.ts b/apps/yaak-client/hooks/useResponseViewMode.ts similarity index 100% rename from src-web/hooks/useResponseViewMode.ts rename to apps/yaak-client/hooks/useResponseViewMode.ts diff --git a/src-web/hooks/useSaveResponse.tsx b/apps/yaak-client/hooks/useSaveResponse.tsx similarity index 100% rename from src-web/hooks/useSaveResponse.tsx rename to apps/yaak-client/hooks/useSaveResponse.tsx diff --git a/src-web/hooks/useScrollIntoView.ts b/apps/yaak-client/hooks/useScrollIntoView.ts similarity index 100% rename from src-web/hooks/useScrollIntoView.ts rename to apps/yaak-client/hooks/useScrollIntoView.ts diff --git a/src-web/hooks/useSendAnyHttpRequest.ts b/apps/yaak-client/hooks/useSendAnyHttpRequest.ts similarity index 100% rename from src-web/hooks/useSendAnyHttpRequest.ts rename to apps/yaak-client/hooks/useSendAnyHttpRequest.ts diff --git a/src-web/hooks/useSendManyRequests.ts b/apps/yaak-client/hooks/useSendManyRequests.ts similarity index 100% rename from src-web/hooks/useSendManyRequests.ts rename to apps/yaak-client/hooks/useSendManyRequests.ts diff --git a/src-web/hooks/useShouldFloatSidebar.ts b/apps/yaak-client/hooks/useShouldFloatSidebar.ts similarity index 100% rename from src-web/hooks/useShouldFloatSidebar.ts rename to apps/yaak-client/hooks/useShouldFloatSidebar.ts diff --git a/src-web/hooks/useSidebarHidden.ts b/apps/yaak-client/hooks/useSidebarHidden.ts similarity index 100% rename from src-web/hooks/useSidebarHidden.ts rename to apps/yaak-client/hooks/useSidebarHidden.ts diff --git a/src-web/hooks/useSidebarItemCollapsed.ts b/apps/yaak-client/hooks/useSidebarItemCollapsed.ts similarity index 100% rename from src-web/hooks/useSidebarItemCollapsed.ts rename to apps/yaak-client/hooks/useSidebarItemCollapsed.ts diff --git a/src-web/hooks/useSidebarWidth.ts b/apps/yaak-client/hooks/useSidebarWidth.ts similarity index 100% rename from src-web/hooks/useSidebarWidth.ts rename to apps/yaak-client/hooks/useSidebarWidth.ts diff --git a/src-web/hooks/useStateWithDeps.ts b/apps/yaak-client/hooks/useStateWithDeps.ts similarity index 100% rename from src-web/hooks/useStateWithDeps.ts rename to apps/yaak-client/hooks/useStateWithDeps.ts diff --git a/src-web/hooks/useStoplightsVisible.ts b/apps/yaak-client/hooks/useStoplightsVisible.ts similarity index 100% rename from src-web/hooks/useStoplightsVisible.ts rename to apps/yaak-client/hooks/useStoplightsVisible.ts diff --git a/src-web/hooks/useSyncFontSizeSetting.ts b/apps/yaak-client/hooks/useSyncFontSizeSetting.ts similarity index 100% rename from src-web/hooks/useSyncFontSizeSetting.ts rename to apps/yaak-client/hooks/useSyncFontSizeSetting.ts diff --git a/src-web/hooks/useSyncWorkspaceChildModels.ts b/apps/yaak-client/hooks/useSyncWorkspaceChildModels.ts similarity index 100% rename from src-web/hooks/useSyncWorkspaceChildModels.ts rename to apps/yaak-client/hooks/useSyncWorkspaceChildModels.ts diff --git a/src-web/hooks/useSyncWorkspaceRequestTitle.ts b/apps/yaak-client/hooks/useSyncWorkspaceRequestTitle.ts similarity index 100% rename from src-web/hooks/useSyncWorkspaceRequestTitle.ts rename to apps/yaak-client/hooks/useSyncWorkspaceRequestTitle.ts diff --git a/src-web/hooks/useSyncZoomSetting.ts b/apps/yaak-client/hooks/useSyncZoomSetting.ts similarity index 100% rename from src-web/hooks/useSyncZoomSetting.ts rename to apps/yaak-client/hooks/useSyncZoomSetting.ts diff --git a/src-web/hooks/useTemplateFunctionConfig.ts b/apps/yaak-client/hooks/useTemplateFunctionConfig.ts similarity index 100% rename from src-web/hooks/useTemplateFunctionConfig.ts rename to apps/yaak-client/hooks/useTemplateFunctionConfig.ts diff --git a/src-web/hooks/useTemplateFunctions.tsx b/apps/yaak-client/hooks/useTemplateFunctions.tsx similarity index 100% rename from src-web/hooks/useTemplateFunctions.tsx rename to apps/yaak-client/hooks/useTemplateFunctions.tsx diff --git a/src-web/hooks/useTemplateTokensToString.ts b/apps/yaak-client/hooks/useTemplateTokensToString.ts similarity index 100% rename from src-web/hooks/useTemplateTokensToString.ts rename to apps/yaak-client/hooks/useTemplateTokensToString.ts diff --git a/src-web/hooks/useTimedBoolean.ts b/apps/yaak-client/hooks/useTimedBoolean.ts similarity index 100% rename from src-web/hooks/useTimedBoolean.ts rename to apps/yaak-client/hooks/useTimedBoolean.ts diff --git a/src-web/hooks/useTimelineViewMode.ts b/apps/yaak-client/hooks/useTimelineViewMode.ts similarity index 100% rename from src-web/hooks/useTimelineViewMode.ts rename to apps/yaak-client/hooks/useTimelineViewMode.ts diff --git a/src-web/hooks/useToggle.ts b/apps/yaak-client/hooks/useToggle.ts similarity index 100% rename from src-web/hooks/useToggle.ts rename to apps/yaak-client/hooks/useToggle.ts diff --git a/src-web/hooks/useToggleCommandPalette.tsx b/apps/yaak-client/hooks/useToggleCommandPalette.tsx similarity index 100% rename from src-web/hooks/useToggleCommandPalette.tsx rename to apps/yaak-client/hooks/useToggleCommandPalette.tsx diff --git a/src-web/hooks/useWebsocketRequestActions.ts b/apps/yaak-client/hooks/useWebsocketRequestActions.ts similarity index 100% rename from src-web/hooks/useWebsocketRequestActions.ts rename to apps/yaak-client/hooks/useWebsocketRequestActions.ts diff --git a/src-web/hooks/useWindowFocus.ts b/apps/yaak-client/hooks/useWindowFocus.ts similarity index 100% rename from src-web/hooks/useWindowFocus.ts rename to apps/yaak-client/hooks/useWindowFocus.ts diff --git a/src-web/hooks/useWorkspaceActions.ts b/apps/yaak-client/hooks/useWorkspaceActions.ts similarity index 100% rename from src-web/hooks/useWorkspaceActions.ts rename to apps/yaak-client/hooks/useWorkspaceActions.ts diff --git a/src-web/hooks/useZoom.ts b/apps/yaak-client/hooks/useZoom.ts similarity index 100% rename from src-web/hooks/useZoom.ts rename to apps/yaak-client/hooks/useZoom.ts diff --git a/src-web/index.html b/apps/yaak-client/index.html similarity index 100% rename from src-web/index.html rename to apps/yaak-client/index.html diff --git a/src-web/init/sync.ts b/apps/yaak-client/init/sync.ts similarity index 100% rename from src-web/init/sync.ts rename to apps/yaak-client/init/sync.ts diff --git a/src-web/lib/alert.ts b/apps/yaak-client/lib/alert.ts similarity index 100% rename from src-web/lib/alert.ts rename to apps/yaak-client/lib/alert.ts diff --git a/src-web/lib/appInfo.ts b/apps/yaak-client/lib/appInfo.ts similarity index 100% rename from src-web/lib/appInfo.ts rename to apps/yaak-client/lib/appInfo.ts diff --git a/apps/yaak-client/lib/atoms.ts b/apps/yaak-client/lib/atoms.ts new file mode 100644 index 00000000..f8dd844d --- /dev/null +++ b/apps/yaak-client/lib/atoms.ts @@ -0,0 +1,25 @@ +import deepEqual from "@gilbarbara/deep-equal"; +import type { UpdateInfo } from "@yaakapp-internal/tauri-client"; +import type { Atom } from "jotai"; +import { atom } from "jotai"; +import { selectAtom } from "jotai/utils"; +import type { SplitLayoutLayout } from "../components/core/SplitLayout"; +import { atomWithKVStorage } from "./atoms/atomWithKVStorage"; + +export function deepEqualAtom(a: Atom) { + return selectAtom( + a, + (v) => v, + (a, b) => deepEqual(a, b), + ); +} + +export const workspaceLayoutAtom = atomWithKVStorage( + "workspace_layout", + "horizontal", +); + +export const updateAvailableAtom = atom | null>(null); diff --git a/src-web/lib/atoms/atomWithKVStorage.ts b/apps/yaak-client/lib/atoms/atomWithKVStorage.ts similarity index 100% rename from src-web/lib/atoms/atomWithKVStorage.ts rename to apps/yaak-client/lib/atoms/atomWithKVStorage.ts diff --git a/src-web/lib/capitalize.ts b/apps/yaak-client/lib/capitalize.ts similarity index 100% rename from src-web/lib/capitalize.ts rename to apps/yaak-client/lib/capitalize.ts diff --git a/src-web/lib/clamp.ts b/apps/yaak-client/lib/clamp.ts similarity index 100% rename from src-web/lib/clamp.ts rename to apps/yaak-client/lib/clamp.ts diff --git a/src-web/lib/color.ts b/apps/yaak-client/lib/color.ts similarity index 100% rename from src-web/lib/color.ts rename to apps/yaak-client/lib/color.ts diff --git a/src-web/lib/confirm.ts b/apps/yaak-client/lib/confirm.ts similarity index 100% rename from src-web/lib/confirm.ts rename to apps/yaak-client/lib/confirm.ts diff --git a/src-web/lib/constants.ts b/apps/yaak-client/lib/constants.ts similarity index 100% rename from src-web/lib/constants.ts rename to apps/yaak-client/lib/constants.ts diff --git a/src-web/lib/contentType.ts b/apps/yaak-client/lib/contentType.ts similarity index 100% rename from src-web/lib/contentType.ts rename to apps/yaak-client/lib/contentType.ts diff --git a/src-web/lib/copy.ts b/apps/yaak-client/lib/copy.ts similarity index 100% rename from src-web/lib/copy.ts rename to apps/yaak-client/lib/copy.ts diff --git a/src-web/lib/createRequestAndNavigate.tsx b/apps/yaak-client/lib/createRequestAndNavigate.tsx similarity index 100% rename from src-web/lib/createRequestAndNavigate.tsx rename to apps/yaak-client/lib/createRequestAndNavigate.tsx diff --git a/src-web/lib/data/charsets.ts b/apps/yaak-client/lib/data/charsets.ts similarity index 100% rename from src-web/lib/data/charsets.ts rename to apps/yaak-client/lib/data/charsets.ts diff --git a/src-web/lib/data/connections.ts b/apps/yaak-client/lib/data/connections.ts similarity index 100% rename from src-web/lib/data/connections.ts rename to apps/yaak-client/lib/data/connections.ts diff --git a/src-web/lib/data/encodings.ts b/apps/yaak-client/lib/data/encodings.ts similarity index 100% rename from src-web/lib/data/encodings.ts rename to apps/yaak-client/lib/data/encodings.ts diff --git a/src-web/lib/data/headerNames.ts b/apps/yaak-client/lib/data/headerNames.ts similarity index 100% rename from src-web/lib/data/headerNames.ts rename to apps/yaak-client/lib/data/headerNames.ts diff --git a/src-web/lib/data/mimetypes.ts b/apps/yaak-client/lib/data/mimetypes.ts similarity index 100% rename from src-web/lib/data/mimetypes.ts rename to apps/yaak-client/lib/data/mimetypes.ts diff --git a/src-web/lib/defaultHeaders.ts b/apps/yaak-client/lib/defaultHeaders.ts similarity index 100% rename from src-web/lib/defaultHeaders.ts rename to apps/yaak-client/lib/defaultHeaders.ts diff --git a/src-web/lib/deleteModelWithConfirm.tsx b/apps/yaak-client/lib/deleteModelWithConfirm.tsx similarity index 100% rename from src-web/lib/deleteModelWithConfirm.tsx rename to apps/yaak-client/lib/deleteModelWithConfirm.tsx diff --git a/src-web/lib/dialog.ts b/apps/yaak-client/lib/dialog.ts similarity index 100% rename from src-web/lib/dialog.ts rename to apps/yaak-client/lib/dialog.ts diff --git a/src-web/lib/diffYaml.ts b/apps/yaak-client/lib/diffYaml.ts similarity index 100% rename from src-web/lib/diffYaml.ts rename to apps/yaak-client/lib/diffYaml.ts diff --git a/src-web/lib/dnd.ts b/apps/yaak-client/lib/dnd.ts similarity index 100% rename from src-web/lib/dnd.ts rename to apps/yaak-client/lib/dnd.ts diff --git a/src-web/lib/duplicateRequestOrFolderAndNavigate.tsx b/apps/yaak-client/lib/duplicateRequestOrFolderAndNavigate.tsx similarity index 100% rename from src-web/lib/duplicateRequestOrFolderAndNavigate.tsx rename to apps/yaak-client/lib/duplicateRequestOrFolderAndNavigate.tsx diff --git a/src-web/lib/editEnvironment.tsx b/apps/yaak-client/lib/editEnvironment.tsx similarity index 100% rename from src-web/lib/editEnvironment.tsx rename to apps/yaak-client/lib/editEnvironment.tsx diff --git a/src-web/lib/encryption.ts b/apps/yaak-client/lib/encryption.ts similarity index 100% rename from src-web/lib/encryption.ts rename to apps/yaak-client/lib/encryption.ts diff --git a/src-web/lib/formatters.ts b/apps/yaak-client/lib/formatters.ts similarity index 100% rename from src-web/lib/formatters.ts rename to apps/yaak-client/lib/formatters.ts diff --git a/src-web/lib/generateId.ts b/apps/yaak-client/lib/generateId.ts similarity index 100% rename from src-web/lib/generateId.ts rename to apps/yaak-client/lib/generateId.ts diff --git a/src-web/lib/getNodeText.ts b/apps/yaak-client/lib/getNodeText.ts similarity index 100% rename from src-web/lib/getNodeText.ts rename to apps/yaak-client/lib/getNodeText.ts diff --git a/src-web/lib/importData.tsx b/apps/yaak-client/lib/importData.tsx similarity index 100% rename from src-web/lib/importData.tsx rename to apps/yaak-client/lib/importData.tsx diff --git a/apps/yaak-client/lib/initGlobalListeners.tsx b/apps/yaak-client/lib/initGlobalListeners.tsx new file mode 100644 index 00000000..4da61335 --- /dev/null +++ b/apps/yaak-client/lib/initGlobalListeners.tsx @@ -0,0 +1,322 @@ +import { emit } from "@tauri-apps/api/event"; +import { openUrl } from "@tauri-apps/plugin-opener"; +import { debounce } from "@yaakapp-internal/lib"; +import type { + FormInput, + InternalEvent, + JsonPrimitive, + ShowToastRequest, +} from "@yaakapp-internal/plugins"; +import { updateAllPlugins } from "@yaakapp-internal/plugins"; +import type { + PluginUpdateNotification, + UpdateInfo, + UpdateResponse, + YaakNotification, +} from "@yaakapp-internal/tauri-client"; +import { openSettings } from "../commands/openSettings"; +import { Button } from "../components/core/Button"; +import { ButtonInfiniteLoading } from "../components/core/ButtonInfiniteLoading"; +import { Icon } from "../components/core/Icon"; +import { HStack, VStack } from "../components/core/Stacks"; + +// Listen for toasts +import { listenToTauriEvent } from "../hooks/useListenToTauriEvent"; +import { updateAvailableAtom } from "./atoms"; +import { stringToColor } from "./color"; +import { generateId } from "./generateId"; +import { jotaiStore } from "./jotai"; +import { showPrompt } from "./prompt"; +import { showPromptForm } from "./prompt-form"; +import { invokeCmd } from "./tauri"; +import { showToast } from "./toast"; + +export function initGlobalListeners() { + listenToTauriEvent("show_toast", (event) => { + showToast({ ...event.payload }); + }); + + listenToTauriEvent("settings", () => openSettings.mutate(null)); + + // Track active dynamic form dialogs so follow-up input updates can reach them + const activeForms = new Map void>(); + + // Listen for plugin events + listenToTauriEvent( + "plugin_event", + async ({ payload: event }) => { + if (event.payload.type === "prompt_text_request") { + const value = await showPrompt(event.payload); + const result: InternalEvent = { + id: generateId(), + replyId: event.id, + pluginName: event.pluginName, + pluginRefId: event.pluginRefId, + context: event.context, + payload: { + type: "prompt_text_response", + value, + }, + }; + await emit(event.id, result); + } else if (event.payload.type === "prompt_form_request") { + if (event.replyId != null) { + // Follow-up update from plugin runtime — update the active dialog's inputs + const updateInputs = activeForms.get(event.replyId); + if (updateInputs) { + updateInputs(event.payload.inputs); + } + return; + } + + // Initial request — show the dialog with bidirectional support + const emitFormResponse = ( + values: Record | null, + done: boolean, + ) => { + const result: InternalEvent = { + id: generateId(), + replyId: event.id, + pluginName: event.pluginName, + pluginRefId: event.pluginRefId, + context: event.context, + payload: { + type: "prompt_form_response", + values, + done, + }, + }; + emit(event.id, result); + }; + + const values = await showPromptForm({ + id: event.payload.id, + title: event.payload.title, + description: event.payload.description, + size: event.payload.size, + inputs: event.payload.inputs, + confirmText: event.payload.confirmText, + cancelText: event.payload.cancelText, + onValuesChange: debounce( + (values) => emitFormResponse(values, false), + 150, + ), + onInputsUpdated: (cb) => activeForms.set(event.id, cb), + }); + + // Clean up and send final response + activeForms.delete(event.id); + emitFormResponse(values, true); + } + }, + ); + + listenToTauriEvent( + "update_installed", + async ({ payload: version }) => { + console.log("Got update installed event", version); + showUpdateInstalledToast(version); + }, + ); + + // Listen for update events + listenToTauriEvent("update_available", async ({ payload }) => { + console.log("Got update available", payload); + showUpdateAvailableToast(payload); + }); + + listenToTauriEvent("notification", ({ payload }) => { + console.log("Got notification event", payload); + showNotificationToast(payload); + }); + + // Listen for plugin update events + listenToTauriEvent( + "plugin_updates_available", + ({ payload }) => { + console.log("Got plugin updates event", payload); + showPluginUpdatesToast(payload); + }, + ); +} + +function showUpdateInstalledToast(version: string) { + const UPDATE_TOAST_ID = "update-info"; + + showToast({ + id: UPDATE_TOAST_ID, + color: "primary", + timeout: null, + message: ( + +

Yaak {version} was installed

+

+ Start using the new version now? +

+
+ ), + action: ({ hide }) => ( + { + hide(); + setTimeout(() => invokeCmd("cmd_restart", {}), 200); + }} + > + Relaunch Yaak + + ), + }); +} + +async function showUpdateAvailableToast(updateInfo: UpdateInfo) { + const UPDATE_TOAST_ID = "update-info"; + const { version, replyEventId, downloaded } = updateInfo; + + jotaiStore.set(updateAvailableAtom, { version, downloaded }); + + // Acknowledge the event, so we don't time out and try the fallback update logic + await emit(replyEventId, { type: "ack" }); + + showToast({ + id: UPDATE_TOAST_ID, + color: "info", + timeout: null, + message: ( + +

Yaak {version} is available

+

+ {downloaded ? "Do you want to install" : "Download and install"} the + update? +

+
+ ), + action: () => ( + + { + await emit(replyEventId, { + type: "action", + action: "install", + }); + }} + > + {downloaded ? "Install Now" : "Download and Install"} + + + + ), + }); +} + +function showPluginUpdatesToast(updateInfo: PluginUpdateNotification) { + const PLUGIN_UPDATE_TOAST_ID = "plugin-updates"; + const count = updateInfo.updateCount; + const pluginNames = updateInfo.plugins.map((p: { name: string }) => p.name); + + showToast({ + id: PLUGIN_UPDATE_TOAST_ID, + color: "info", + timeout: null, + message: ( + +

+ {count === 1 ? "1 plugin update" : `${count} plugin updates`}{" "} + available +

+

+ {count === 1 + ? pluginNames[0] + : `${pluginNames.slice(0, 2).join(", ")}${count > 2 ? `, and ${count - 2} more` : ""}`} +

+
+ ), + action: ({ hide }) => ( + + { + const updated = await updateAllPlugins(); + hide(); + if (updated.length > 0) { + showToast({ + color: "success", + message: `Successfully updated ${updated.length} plugin${updated.length === 1 ? "" : "s"}`, + }); + } + }} + > + Update All + + + + ), + }); +} + +function showNotificationToast(n: YaakNotification) { + const actionUrl = n.action?.url; + const actionLabel = n.action?.label; + showToast({ + id: n.id, + timeout: n.timeout ?? null, + color: stringToColor(n.color) ?? undefined, + message: ( + + {n.title &&

{n.title}

} +

{n.message}

+
+ ), + onClose: () => { + invokeCmd("cmd_dismiss_notification", { notificationId: n.id }).catch( + console.error, + ); + }, + action: ({ hide }) => { + return actionLabel && actionUrl ? ( + + ) : null; + }, + }); +} diff --git a/src-web/lib/jotai.ts b/apps/yaak-client/lib/jotai.ts similarity index 100% rename from src-web/lib/jotai.ts rename to apps/yaak-client/lib/jotai.ts diff --git a/src-web/lib/keyValueStore.ts b/apps/yaak-client/lib/keyValueStore.ts similarity index 100% rename from src-web/lib/keyValueStore.ts rename to apps/yaak-client/lib/keyValueStore.ts diff --git a/src-web/lib/markdown.ts b/apps/yaak-client/lib/markdown.ts similarity index 100% rename from src-web/lib/markdown.ts rename to apps/yaak-client/lib/markdown.ts diff --git a/src-web/lib/minPromiseMillis.ts b/apps/yaak-client/lib/minPromiseMillis.ts similarity index 100% rename from src-web/lib/minPromiseMillis.ts rename to apps/yaak-client/lib/minPromiseMillis.ts diff --git a/src-web/lib/model_util.test.ts b/apps/yaak-client/lib/model_util.test.ts similarity index 100% rename from src-web/lib/model_util.test.ts rename to apps/yaak-client/lib/model_util.test.ts diff --git a/src-web/lib/model_util.ts b/apps/yaak-client/lib/model_util.ts similarity index 100% rename from src-web/lib/model_util.ts rename to apps/yaak-client/lib/model_util.ts diff --git a/src-web/lib/pluralize.ts b/apps/yaak-client/lib/pluralize.ts similarity index 100% rename from src-web/lib/pluralize.ts rename to apps/yaak-client/lib/pluralize.ts diff --git a/src-web/lib/prepareImportQuerystring.ts b/apps/yaak-client/lib/prepareImportQuerystring.ts similarity index 100% rename from src-web/lib/prepareImportQuerystring.ts rename to apps/yaak-client/lib/prepareImportQuerystring.ts diff --git a/src-web/lib/prompt-form.tsx b/apps/yaak-client/lib/prompt-form.tsx similarity index 100% rename from src-web/lib/prompt-form.tsx rename to apps/yaak-client/lib/prompt-form.tsx diff --git a/src-web/lib/prompt.ts b/apps/yaak-client/lib/prompt.ts similarity index 100% rename from src-web/lib/prompt.ts rename to apps/yaak-client/lib/prompt.ts diff --git a/src-web/lib/queryClient.ts b/apps/yaak-client/lib/queryClient.ts similarity index 100% rename from src-web/lib/queryClient.ts rename to apps/yaak-client/lib/queryClient.ts diff --git a/src-web/lib/renameModelWithPrompt.tsx b/apps/yaak-client/lib/renameModelWithPrompt.tsx similarity index 100% rename from src-web/lib/renameModelWithPrompt.tsx rename to apps/yaak-client/lib/renameModelWithPrompt.tsx diff --git a/src-web/lib/resolvedModelName.ts b/apps/yaak-client/lib/resolvedModelName.ts similarity index 100% rename from src-web/lib/resolvedModelName.ts rename to apps/yaak-client/lib/resolvedModelName.ts diff --git a/src-web/lib/responseBody.ts b/apps/yaak-client/lib/responseBody.ts similarity index 100% rename from src-web/lib/responseBody.ts rename to apps/yaak-client/lib/responseBody.ts diff --git a/src-web/lib/reveal.ts b/apps/yaak-client/lib/reveal.ts similarity index 100% rename from src-web/lib/reveal.ts rename to apps/yaak-client/lib/reveal.ts diff --git a/src-web/lib/router.ts b/apps/yaak-client/lib/router.ts similarity index 100% rename from src-web/lib/router.ts rename to apps/yaak-client/lib/router.ts diff --git a/src-web/lib/scopes.ts b/apps/yaak-client/lib/scopes.ts similarity index 100% rename from src-web/lib/scopes.ts rename to apps/yaak-client/lib/scopes.ts diff --git a/src-web/lib/sendEphemeralRequest.ts b/apps/yaak-client/lib/sendEphemeralRequest.ts similarity index 100% rename from src-web/lib/sendEphemeralRequest.ts rename to apps/yaak-client/lib/sendEphemeralRequest.ts diff --git a/src-web/lib/setWorkspaceSearchParams.ts b/apps/yaak-client/lib/setWorkspaceSearchParams.ts similarity index 100% rename from src-web/lib/setWorkspaceSearchParams.ts rename to apps/yaak-client/lib/setWorkspaceSearchParams.ts diff --git a/src-web/lib/settings.ts b/apps/yaak-client/lib/settings.ts similarity index 100% rename from src-web/lib/settings.ts rename to apps/yaak-client/lib/settings.ts diff --git a/src-web/lib/setupOrConfigureEncryption.tsx b/apps/yaak-client/lib/setupOrConfigureEncryption.tsx similarity index 100% rename from src-web/lib/setupOrConfigureEncryption.tsx rename to apps/yaak-client/lib/setupOrConfigureEncryption.tsx diff --git a/src-web/lib/showColorPicker.tsx b/apps/yaak-client/lib/showColorPicker.tsx similarity index 100% rename from src-web/lib/showColorPicker.tsx rename to apps/yaak-client/lib/showColorPicker.tsx diff --git a/src-web/lib/sleep.ts b/apps/yaak-client/lib/sleep.ts similarity index 100% rename from src-web/lib/sleep.ts rename to apps/yaak-client/lib/sleep.ts diff --git a/src-web/lib/tauri.ts b/apps/yaak-client/lib/tauri.ts similarity index 100% rename from src-web/lib/tauri.ts rename to apps/yaak-client/lib/tauri.ts diff --git a/src-web/lib/theme/appearance.ts b/apps/yaak-client/lib/theme/appearance.ts similarity index 100% rename from src-web/lib/theme/appearance.ts rename to apps/yaak-client/lib/theme/appearance.ts diff --git a/src-web/lib/theme/themes.ts b/apps/yaak-client/lib/theme/themes.ts similarity index 100% rename from src-web/lib/theme/themes.ts rename to apps/yaak-client/lib/theme/themes.ts diff --git a/src-web/lib/theme/window.ts b/apps/yaak-client/lib/theme/window.ts similarity index 100% rename from src-web/lib/theme/window.ts rename to apps/yaak-client/lib/theme/window.ts diff --git a/src-web/lib/theme/yaakColor.ts b/apps/yaak-client/lib/theme/yaakColor.ts similarity index 100% rename from src-web/lib/theme/yaakColor.ts rename to apps/yaak-client/lib/theme/yaakColor.ts diff --git a/src-web/lib/toast.tsx b/apps/yaak-client/lib/toast.tsx similarity index 100% rename from src-web/lib/toast.tsx rename to apps/yaak-client/lib/toast.tsx diff --git a/src-web/lib/truncate.ts b/apps/yaak-client/lib/truncate.ts similarity index 100% rename from src-web/lib/truncate.ts rename to apps/yaak-client/lib/truncate.ts diff --git a/src-web/main.css b/apps/yaak-client/main.css similarity index 100% rename from src-web/main.css rename to apps/yaak-client/main.css diff --git a/src-web/main.tsx b/apps/yaak-client/main.tsx similarity index 100% rename from src-web/main.tsx rename to apps/yaak-client/main.tsx diff --git a/src-web/modules.d.ts b/apps/yaak-client/modules.d.ts similarity index 100% rename from src-web/modules.d.ts rename to apps/yaak-client/modules.d.ts diff --git a/src-web/package.json b/apps/yaak-client/package.json similarity index 98% rename from src-web/package.json rename to apps/yaak-client/package.json index 3f360cbc..b0ea9a47 100644 --- a/src-web/package.json +++ b/apps/yaak-client/package.json @@ -1,5 +1,5 @@ { - "name": "@yaakapp/app", + "name": "@yaakapp/yaak-client", "private": true, "version": "1.0.0", "type": "module", diff --git a/src-web/postcss.config.cjs b/apps/yaak-client/postcss.config.cjs similarity index 100% rename from src-web/postcss.config.cjs rename to apps/yaak-client/postcss.config.cjs diff --git a/src-web/routeTree.gen.ts b/apps/yaak-client/routeTree.gen.ts similarity index 100% rename from src-web/routeTree.gen.ts rename to apps/yaak-client/routeTree.gen.ts diff --git a/src-web/routes/__root.tsx b/apps/yaak-client/routes/__root.tsx similarity index 100% rename from src-web/routes/__root.tsx rename to apps/yaak-client/routes/__root.tsx diff --git a/src-web/routes/index.tsx b/apps/yaak-client/routes/index.tsx similarity index 100% rename from src-web/routes/index.tsx rename to apps/yaak-client/routes/index.tsx diff --git a/src-web/routes/workspaces/$workspaceId/index.tsx b/apps/yaak-client/routes/workspaces/$workspaceId/index.tsx similarity index 100% rename from src-web/routes/workspaces/$workspaceId/index.tsx rename to apps/yaak-client/routes/workspaces/$workspaceId/index.tsx diff --git a/src-web/routes/workspaces/$workspaceId/requests/$requestId.tsx b/apps/yaak-client/routes/workspaces/$workspaceId/requests/$requestId.tsx similarity index 100% rename from src-web/routes/workspaces/$workspaceId/requests/$requestId.tsx rename to apps/yaak-client/routes/workspaces/$workspaceId/requests/$requestId.tsx diff --git a/src-web/routes/workspaces/$workspaceId/settings.tsx b/apps/yaak-client/routes/workspaces/$workspaceId/settings.tsx similarity index 100% rename from src-web/routes/workspaces/$workspaceId/settings.tsx rename to apps/yaak-client/routes/workspaces/$workspaceId/settings.tsx diff --git a/src-web/routes/workspaces/index.tsx b/apps/yaak-client/routes/workspaces/index.tsx similarity index 100% rename from src-web/routes/workspaces/index.tsx rename to apps/yaak-client/routes/workspaces/index.tsx diff --git a/src-web/tailwind.config.cjs b/apps/yaak-client/tailwind.config.cjs similarity index 100% rename from src-web/tailwind.config.cjs rename to apps/yaak-client/tailwind.config.cjs diff --git a/src-web/theme.ts b/apps/yaak-client/theme.ts similarity index 100% rename from src-web/theme.ts rename to apps/yaak-client/theme.ts diff --git a/src-web/tsconfig.json b/apps/yaak-client/tsconfig.json similarity index 100% rename from src-web/tsconfig.json rename to apps/yaak-client/tsconfig.json diff --git a/src-web/tsconfig.node.json b/apps/yaak-client/tsconfig.node.json similarity index 100% rename from src-web/tsconfig.node.json rename to apps/yaak-client/tsconfig.node.json diff --git a/src-web/tsr.config.json b/apps/yaak-client/tsr.config.json similarity index 100% rename from src-web/tsr.config.json rename to apps/yaak-client/tsr.config.json diff --git a/src-web/vite-env.d.ts b/apps/yaak-client/vite-env.d.ts similarity index 100% rename from src-web/vite-env.d.ts rename to apps/yaak-client/vite-env.d.ts diff --git a/apps/yaak-client/vite.config.ts b/apps/yaak-client/vite.config.ts new file mode 100644 index 00000000..632a3bf8 --- /dev/null +++ b/apps/yaak-client/vite.config.ts @@ -0,0 +1,67 @@ +// @ts-ignore +import { tanstackRouter } from "@tanstack/router-plugin/vite"; +import react from "@vitejs/plugin-react"; +import { createRequire } from "node:module"; +import path from "node:path"; +import { defineConfig, normalizePath } from "vite"; +import { viteStaticCopy } from "vite-plugin-static-copy"; +import svgr from "vite-plugin-svgr"; +import topLevelAwait from "vite-plugin-top-level-await"; +import wasm from "vite-plugin-wasm"; + +const require = createRequire(import.meta.url); +const cMapsDir = normalizePath( + path.join(path.dirname(require.resolve("pdfjs-dist/package.json")), "cmaps"), +); +const standardFontsDir = normalizePath( + path.join( + path.dirname(require.resolve("pdfjs-dist/package.json")), + "standard_fonts", + ), +); + +// https://vitejs.dev/config/ +export default defineConfig(async () => { + return { + plugins: [ + wasm(), + tanstackRouter({ + target: "react", + routesDirectory: "./routes", + generatedRouteTree: "./routeTree.gen.ts", + autoCodeSplitting: true, + }), + svgr(), + react(), + topLevelAwait(), + viteStaticCopy({ + targets: [ + { src: cMapsDir, dest: "" }, + { src: standardFontsDir, dest: "" }, + ], + }), + ], + build: { + sourcemap: true, + outDir: "../../dist/apps/yaak-client", + emptyOutDir: true, + rollupOptions: { + output: { + // Make chunk names readable + chunkFileNames: "assets/chunk-[name]-[hash].js", + entryFileNames: "assets/entry-[name]-[hash].js", + assetFileNames: "assets/asset-[name]-[hash][extname]", + }, + }, + }, + clearScreen: false, + server: { + port: parseInt( + process.env.YAAK_CLIENT_DEV_PORT ?? process.env.YAAK_DEV_PORT ?? "1420", + 10, + ), + strictPort: true, + }, + envPrefix: ["VITE_", "TAURI_"], + }; +}); diff --git a/apps/yaak-proxy/index.html b/apps/yaak-proxy/index.html new file mode 100644 index 00000000..61707262 --- /dev/null +++ b/apps/yaak-proxy/index.html @@ -0,0 +1,12 @@ + + + + + + Yaak Proxy + + +
+ + + diff --git a/apps/yaak-proxy/main.css b/apps/yaak-proxy/main.css new file mode 100644 index 00000000..dc94457c --- /dev/null +++ b/apps/yaak-proxy/main.css @@ -0,0 +1,95 @@ +:root { + color: #f4efe7; + background: + radial-gradient(circle at top, rgba(217, 119, 6, 0.35), transparent 45%), + linear-gradient(180deg, #18212b 0%, #0f141a 100%); + font-family: "IBM Plex Sans", "Segoe UI", sans-serif; +} + +* { + box-sizing: border-box; +} + +html, +body, +#root { + margin: 0; + min-height: 100%; +} + +body { + min-height: 100vh; +} + +.app-shell { + min-height: 100vh; + display: grid; + place-items: center; + padding: 24px; +} + +.hero-card { + width: min(680px, 100%); + padding: 40px; + border: 1px solid rgba(244, 239, 231, 0.12); + border-radius: 28px; + background: rgba(9, 12, 16, 0.7); + box-shadow: 0 24px 80px rgba(0, 0, 0, 0.35); + backdrop-filter: blur(18px); +} + +.eyebrow { + margin: 0 0 12px; + font-size: 12px; + letter-spacing: 0.24em; + text-transform: uppercase; + color: #f6ad55; +} + +h1 { + margin: 0; + font-size: clamp(44px, 8vw, 84px); + line-height: 0.95; +} + +.lede { + margin: 20px 0 0; + max-width: 48ch; + font-size: 18px; + line-height: 1.6; + color: rgba(244, 239, 231, 0.78); +} + +.controls { + margin-top: 28px; + display: flex; + gap: 12px; +} + +.btn { + border: 0; + border-radius: 10px; + padding: 10px 14px; + background: #f6ad55; + color: #111; + font-weight: 700; + cursor: pointer; +} + +.btn.ghost { + background: rgba(255, 255, 255, 0.12); + color: #f4efe7; +} + +.btn:disabled { + opacity: 0.6; + cursor: default; +} + +.status { + margin-top: 14px; + display: flex; + gap: 16px; + color: rgba(244, 239, 231, 0.88); + font-size: 14px; +} diff --git a/apps/yaak-proxy/main.tsx b/apps/yaak-proxy/main.tsx new file mode 100644 index 00000000..def1b0d1 --- /dev/null +++ b/apps/yaak-proxy/main.tsx @@ -0,0 +1,77 @@ +import "./main.css"; +import { invoke } from "@tauri-apps/api/core"; +import { StrictMode } from "react"; +import { useState } from "react"; +import { createRoot } from "react-dom/client"; + +type ProxyStartResult = { + port: number; + alreadyRunning: boolean; +}; + +function App() { + const [status, setStatus] = useState("Idle"); + const [port, setPort] = useState(null); + const [busy, setBusy] = useState(false); + + async function startProxy() { + setBusy(true); + setStatus("Starting..."); + try { + const result = await invoke("proxy_start", { + port: 9090, + }); + setPort(result.port); + setStatus(result.alreadyRunning ? "Already running" : "Running"); + } catch (err) { + setStatus(`Failed: ${String(err)}`); + } finally { + setBusy(false); + } + } + + async function stopProxy() { + setBusy(true); + setStatus("Stopping..."); + try { + const stopped = await invoke("proxy_stop"); + setPort(null); + setStatus(stopped ? "Stopped" : "Not running"); + } catch (err) { + setStatus(`Failed: ${String(err)}`); + } finally { + setBusy(false); + } + } + + return ( +
+
+

Monorepo Smoke Test

+

Yaak Proxy

+

+ This is a minimal proxy app stub running on the new `apps/yaak-proxy` + and `crates-tauri/yaak-app-proxy` structure. +

+
+ + +
+
+ Status: {status} + {port != null ? Port: {port} : null} +
+
+
+ ); +} + +createRoot(document.getElementById("root") as HTMLElement).render( + + + , +); diff --git a/apps/yaak-proxy/package.json b/apps/yaak-proxy/package.json new file mode 100644 index 00000000..2a11a291 --- /dev/null +++ b/apps/yaak-proxy/package.json @@ -0,0 +1,23 @@ +{ + "name": "@yaakapp/yaak-proxy", + "private": true, + "version": "1.0.0", + "type": "module", + "scripts": { + "dev": "vite dev --force", + "build": "vite build", + "lint": "tsc --noEmit" + }, + "dependencies": { + "@tauri-apps/api": "^2.9.1", + "react": "^19.1.0", + "react-dom": "^19.1.0" + }, + "devDependencies": { + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.6", + "@vitejs/plugin-react": "^4.6.0", + "typescript": "^5.8.3", + "vite": "^7.0.8" + } +} diff --git a/apps/yaak-proxy/tsconfig.json b/apps/yaak-proxy/tsconfig.json new file mode 100644 index 00000000..7ba5265a --- /dev/null +++ b/apps/yaak-proxy/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "es2021", + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "useDefineForClassFields": true, + "allowJs": false, + "skipLibCheck": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "noUncheckedIndexedAccess": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": ["."], + "exclude": ["vite.config.ts"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/apps/yaak-proxy/tsconfig.node.json b/apps/yaak-proxy/tsconfig.node.json new file mode 100644 index 00000000..c87264aa --- /dev/null +++ b/apps/yaak-proxy/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true, + "noUncheckedIndexedAccess": true + }, + "include": ["vite.config.ts"] +} diff --git a/apps/yaak-proxy/vite-env.d.ts b/apps/yaak-proxy/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/apps/yaak-proxy/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/biome.json b/biome.json index 2a9cd936..df48641a 100644 --- a/biome.json +++ b/biome.json @@ -42,10 +42,10 @@ "!scripts", "!crates", "!crates-tauri", - "!src-web/tailwind.config.cjs", - "!src-web/postcss.config.cjs", - "!src-web/vite.config.ts", - "!src-web/routeTree.gen.ts", + "!apps/yaak-client/tailwind.config.cjs", + "!apps/yaak-client/postcss.config.cjs", + "!apps/yaak-client/vite.config.ts", + "!apps/yaak-client/routeTree.gen.ts", "!packages/plugin-runtime-types/lib", "!**/bindings", "!flatpak" diff --git a/crates-cli/yaak-cli/src/context.rs b/crates-cli/yaak-cli/src/context.rs index 0e1a38f3..8e839f14 100644 --- a/crates-cli/yaak-cli/src/context.rs +++ b/crates-cli/yaak-cli/src/context.rs @@ -13,10 +13,10 @@ use yaak_plugins::manager::PluginManager; const EMBEDDED_PLUGIN_RUNTIME: &str = include_str!(concat!( env!("CARGO_MANIFEST_DIR"), - "/../../crates-tauri/yaak-app/vendored/plugin-runtime/index.cjs" + "/../../crates-tauri/yaak-app-client/vendored/plugin-runtime/index.cjs" )); static EMBEDDED_VENDORED_PLUGINS: Dir<'_> = - include_dir!("$CARGO_MANIFEST_DIR/../../crates-tauri/yaak-app/vendored/plugins"); + include_dir!("$CARGO_MANIFEST_DIR/../../crates-tauri/yaak-app-client/vendored/plugins"); #[derive(Clone, Debug, Default)] pub struct CliExecutionContext { diff --git a/crates-tauri/yaak-app/.gitignore b/crates-tauri/yaak-app-client/.gitignore similarity index 100% rename from crates-tauri/yaak-app/.gitignore rename to crates-tauri/yaak-app-client/.gitignore diff --git a/crates-tauri/yaak-app/Cargo.toml b/crates-tauri/yaak-app-client/Cargo.toml similarity index 97% rename from crates-tauri/yaak-app/Cargo.toml rename to crates-tauri/yaak-app-client/Cargo.toml index cf1e9113..df757a68 100644 --- a/crates-tauri/yaak-app/Cargo.toml +++ b/crates-tauri/yaak-app-client/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "yaak-app" +name = "yaak-app-client" version = "0.0.0" edition = "2024" authors = ["Gregory Schier"] @@ -7,7 +7,7 @@ publish = false # Produce a library for mobile support [lib] -name = "tauri_app_lib" +name = "tauri_app_client_lib" crate-type = ["staticlib", "cdylib", "lib"] [features] diff --git a/crates-tauri/yaak-app/bindings/gen_watch.ts b/crates-tauri/yaak-app-client/bindings/gen_watch.ts similarity index 100% rename from crates-tauri/yaak-app/bindings/gen_watch.ts rename to crates-tauri/yaak-app-client/bindings/gen_watch.ts diff --git a/crates-tauri/yaak-app/bindings/index.ts b/crates-tauri/yaak-app-client/bindings/index.ts similarity index 100% rename from crates-tauri/yaak-app/bindings/index.ts rename to crates-tauri/yaak-app-client/bindings/index.ts diff --git a/crates-tauri/yaak-app/bindings/plugins_ext.ts b/crates-tauri/yaak-app-client/bindings/plugins_ext.ts similarity index 100% rename from crates-tauri/yaak-app/bindings/plugins_ext.ts rename to crates-tauri/yaak-app-client/bindings/plugins_ext.ts diff --git a/crates-tauri/yaak-app/build.rs b/crates-tauri/yaak-app-client/build.rs similarity index 100% rename from crates-tauri/yaak-app/build.rs rename to crates-tauri/yaak-app-client/build.rs diff --git a/crates-tauri/yaak-app/capabilities/default.json b/crates-tauri/yaak-app-client/capabilities/default.json similarity index 100% rename from crates-tauri/yaak-app/capabilities/default.json rename to crates-tauri/yaak-app-client/capabilities/default.json diff --git a/crates-tauri/yaak-app/icons/dev/128x128.png b/crates-tauri/yaak-app-client/icons/dev/128x128.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/128x128.png rename to crates-tauri/yaak-app-client/icons/dev/128x128.png diff --git a/crates-tauri/yaak-app/icons/dev/128x128@2x.png b/crates-tauri/yaak-app-client/icons/dev/128x128@2x.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/128x128@2x.png rename to crates-tauri/yaak-app-client/icons/dev/128x128@2x.png diff --git a/crates-tauri/yaak-app/icons/dev/32x32.png b/crates-tauri/yaak-app-client/icons/dev/32x32.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/32x32.png rename to crates-tauri/yaak-app-client/icons/dev/32x32.png diff --git a/crates-tauri/yaak-app/icons/dev/64x64.png b/crates-tauri/yaak-app-client/icons/dev/64x64.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/64x64.png rename to crates-tauri/yaak-app-client/icons/dev/64x64.png diff --git a/crates-tauri/yaak-app/icons/dev/Square107x107Logo.png b/crates-tauri/yaak-app-client/icons/dev/Square107x107Logo.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/Square107x107Logo.png rename to crates-tauri/yaak-app-client/icons/dev/Square107x107Logo.png diff --git a/crates-tauri/yaak-app/icons/dev/Square142x142Logo.png b/crates-tauri/yaak-app-client/icons/dev/Square142x142Logo.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/Square142x142Logo.png rename to crates-tauri/yaak-app-client/icons/dev/Square142x142Logo.png diff --git a/crates-tauri/yaak-app/icons/dev/Square150x150Logo.png b/crates-tauri/yaak-app-client/icons/dev/Square150x150Logo.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/Square150x150Logo.png rename to crates-tauri/yaak-app-client/icons/dev/Square150x150Logo.png diff --git a/crates-tauri/yaak-app/icons/dev/Square284x284Logo.png b/crates-tauri/yaak-app-client/icons/dev/Square284x284Logo.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/Square284x284Logo.png rename to crates-tauri/yaak-app-client/icons/dev/Square284x284Logo.png diff --git a/crates-tauri/yaak-app/icons/dev/Square30x30Logo.png b/crates-tauri/yaak-app-client/icons/dev/Square30x30Logo.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/Square30x30Logo.png rename to crates-tauri/yaak-app-client/icons/dev/Square30x30Logo.png diff --git a/crates-tauri/yaak-app/icons/dev/Square310x310Logo.png b/crates-tauri/yaak-app-client/icons/dev/Square310x310Logo.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/Square310x310Logo.png rename to crates-tauri/yaak-app-client/icons/dev/Square310x310Logo.png diff --git a/crates-tauri/yaak-app/icons/dev/Square44x44Logo.png b/crates-tauri/yaak-app-client/icons/dev/Square44x44Logo.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/Square44x44Logo.png rename to crates-tauri/yaak-app-client/icons/dev/Square44x44Logo.png diff --git a/crates-tauri/yaak-app/icons/dev/Square71x71Logo.png b/crates-tauri/yaak-app-client/icons/dev/Square71x71Logo.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/Square71x71Logo.png rename to crates-tauri/yaak-app-client/icons/dev/Square71x71Logo.png diff --git a/crates-tauri/yaak-app/icons/dev/Square89x89Logo.png b/crates-tauri/yaak-app-client/icons/dev/Square89x89Logo.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/Square89x89Logo.png rename to crates-tauri/yaak-app-client/icons/dev/Square89x89Logo.png diff --git a/crates-tauri/yaak-app/icons/dev/StoreLogo.png b/crates-tauri/yaak-app-client/icons/dev/StoreLogo.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/StoreLogo.png rename to crates-tauri/yaak-app-client/icons/dev/StoreLogo.png diff --git a/crates-tauri/yaak-app/icons/dev/android/mipmap-hdpi/ic_launcher.png b/crates-tauri/yaak-app-client/icons/dev/android/mipmap-hdpi/ic_launcher.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/android/mipmap-hdpi/ic_launcher.png rename to crates-tauri/yaak-app-client/icons/dev/android/mipmap-hdpi/ic_launcher.png diff --git a/crates-tauri/yaak-app/icons/dev/android/mipmap-hdpi/ic_launcher_foreground.png b/crates-tauri/yaak-app-client/icons/dev/android/mipmap-hdpi/ic_launcher_foreground.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/android/mipmap-hdpi/ic_launcher_foreground.png rename to crates-tauri/yaak-app-client/icons/dev/android/mipmap-hdpi/ic_launcher_foreground.png diff --git a/crates-tauri/yaak-app/icons/dev/android/mipmap-hdpi/ic_launcher_round.png b/crates-tauri/yaak-app-client/icons/dev/android/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/android/mipmap-hdpi/ic_launcher_round.png rename to crates-tauri/yaak-app-client/icons/dev/android/mipmap-hdpi/ic_launcher_round.png diff --git a/crates-tauri/yaak-app/icons/dev/android/mipmap-mdpi/ic_launcher.png b/crates-tauri/yaak-app-client/icons/dev/android/mipmap-mdpi/ic_launcher.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/android/mipmap-mdpi/ic_launcher.png rename to crates-tauri/yaak-app-client/icons/dev/android/mipmap-mdpi/ic_launcher.png diff --git a/crates-tauri/yaak-app/icons/dev/android/mipmap-mdpi/ic_launcher_foreground.png b/crates-tauri/yaak-app-client/icons/dev/android/mipmap-mdpi/ic_launcher_foreground.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/android/mipmap-mdpi/ic_launcher_foreground.png rename to crates-tauri/yaak-app-client/icons/dev/android/mipmap-mdpi/ic_launcher_foreground.png diff --git a/crates-tauri/yaak-app/icons/dev/android/mipmap-mdpi/ic_launcher_round.png b/crates-tauri/yaak-app-client/icons/dev/android/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/android/mipmap-mdpi/ic_launcher_round.png rename to crates-tauri/yaak-app-client/icons/dev/android/mipmap-mdpi/ic_launcher_round.png diff --git a/crates-tauri/yaak-app/icons/dev/android/mipmap-xhdpi/ic_launcher.png b/crates-tauri/yaak-app-client/icons/dev/android/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/android/mipmap-xhdpi/ic_launcher.png rename to crates-tauri/yaak-app-client/icons/dev/android/mipmap-xhdpi/ic_launcher.png diff --git a/crates-tauri/yaak-app/icons/dev/android/mipmap-xhdpi/ic_launcher_foreground.png b/crates-tauri/yaak-app-client/icons/dev/android/mipmap-xhdpi/ic_launcher_foreground.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/android/mipmap-xhdpi/ic_launcher_foreground.png rename to crates-tauri/yaak-app-client/icons/dev/android/mipmap-xhdpi/ic_launcher_foreground.png diff --git a/crates-tauri/yaak-app/icons/dev/android/mipmap-xhdpi/ic_launcher_round.png b/crates-tauri/yaak-app-client/icons/dev/android/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/android/mipmap-xhdpi/ic_launcher_round.png rename to crates-tauri/yaak-app-client/icons/dev/android/mipmap-xhdpi/ic_launcher_round.png diff --git a/crates-tauri/yaak-app/icons/dev/android/mipmap-xxhdpi/ic_launcher.png b/crates-tauri/yaak-app-client/icons/dev/android/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/android/mipmap-xxhdpi/ic_launcher.png rename to crates-tauri/yaak-app-client/icons/dev/android/mipmap-xxhdpi/ic_launcher.png diff --git a/crates-tauri/yaak-app/icons/dev/android/mipmap-xxhdpi/ic_launcher_foreground.png b/crates-tauri/yaak-app-client/icons/dev/android/mipmap-xxhdpi/ic_launcher_foreground.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/android/mipmap-xxhdpi/ic_launcher_foreground.png rename to crates-tauri/yaak-app-client/icons/dev/android/mipmap-xxhdpi/ic_launcher_foreground.png diff --git a/crates-tauri/yaak-app/icons/dev/android/mipmap-xxhdpi/ic_launcher_round.png b/crates-tauri/yaak-app-client/icons/dev/android/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/android/mipmap-xxhdpi/ic_launcher_round.png rename to crates-tauri/yaak-app-client/icons/dev/android/mipmap-xxhdpi/ic_launcher_round.png diff --git a/crates-tauri/yaak-app/icons/dev/android/mipmap-xxxhdpi/ic_launcher.png b/crates-tauri/yaak-app-client/icons/dev/android/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/android/mipmap-xxxhdpi/ic_launcher.png rename to crates-tauri/yaak-app-client/icons/dev/android/mipmap-xxxhdpi/ic_launcher.png diff --git a/crates-tauri/yaak-app/icons/dev/android/mipmap-xxxhdpi/ic_launcher_foreground.png b/crates-tauri/yaak-app-client/icons/dev/android/mipmap-xxxhdpi/ic_launcher_foreground.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/android/mipmap-xxxhdpi/ic_launcher_foreground.png rename to crates-tauri/yaak-app-client/icons/dev/android/mipmap-xxxhdpi/ic_launcher_foreground.png diff --git a/crates-tauri/yaak-app/icons/dev/android/mipmap-xxxhdpi/ic_launcher_round.png b/crates-tauri/yaak-app-client/icons/dev/android/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/android/mipmap-xxxhdpi/ic_launcher_round.png rename to crates-tauri/yaak-app-client/icons/dev/android/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/crates-tauri/yaak-app/icons/dev/icon.icns b/crates-tauri/yaak-app-client/icons/dev/icon.icns similarity index 100% rename from crates-tauri/yaak-app/icons/dev/icon.icns rename to crates-tauri/yaak-app-client/icons/dev/icon.icns diff --git a/crates-tauri/yaak-app/icons/dev/icon.ico b/crates-tauri/yaak-app-client/icons/dev/icon.ico similarity index 100% rename from crates-tauri/yaak-app/icons/dev/icon.ico rename to crates-tauri/yaak-app-client/icons/dev/icon.ico diff --git a/crates-tauri/yaak-app/icons/dev/icon.png b/crates-tauri/yaak-app-client/icons/dev/icon.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/icon.png rename to crates-tauri/yaak-app-client/icons/dev/icon.png diff --git a/crates-tauri/yaak-app/icons/dev/ios/AppIcon-20x20@1x.png b/crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-20x20@1x.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/ios/AppIcon-20x20@1x.png rename to crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-20x20@1x.png diff --git a/crates-tauri/yaak-app/icons/dev/ios/AppIcon-20x20@2x-1.png b/crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-20x20@2x-1.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/ios/AppIcon-20x20@2x-1.png rename to crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-20x20@2x-1.png diff --git a/crates-tauri/yaak-app/icons/dev/ios/AppIcon-20x20@2x.png b/crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-20x20@2x.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/ios/AppIcon-20x20@2x.png rename to crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-20x20@2x.png diff --git a/crates-tauri/yaak-app/icons/dev/ios/AppIcon-20x20@3x.png b/crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-20x20@3x.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/ios/AppIcon-20x20@3x.png rename to crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-20x20@3x.png diff --git a/crates-tauri/yaak-app/icons/dev/ios/AppIcon-29x29@1x.png b/crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-29x29@1x.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/ios/AppIcon-29x29@1x.png rename to crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-29x29@1x.png diff --git a/crates-tauri/yaak-app/icons/dev/ios/AppIcon-29x29@2x-1.png b/crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-29x29@2x-1.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/ios/AppIcon-29x29@2x-1.png rename to crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-29x29@2x-1.png diff --git a/crates-tauri/yaak-app/icons/dev/ios/AppIcon-29x29@2x.png b/crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-29x29@2x.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/ios/AppIcon-29x29@2x.png rename to crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-29x29@2x.png diff --git a/crates-tauri/yaak-app/icons/dev/ios/AppIcon-29x29@3x.png b/crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-29x29@3x.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/ios/AppIcon-29x29@3x.png rename to crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-29x29@3x.png diff --git a/crates-tauri/yaak-app/icons/dev/ios/AppIcon-40x40@1x.png b/crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-40x40@1x.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/ios/AppIcon-40x40@1x.png rename to crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-40x40@1x.png diff --git a/crates-tauri/yaak-app/icons/dev/ios/AppIcon-40x40@2x-1.png b/crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-40x40@2x-1.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/ios/AppIcon-40x40@2x-1.png rename to crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-40x40@2x-1.png diff --git a/crates-tauri/yaak-app/icons/dev/ios/AppIcon-40x40@2x.png b/crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-40x40@2x.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/ios/AppIcon-40x40@2x.png rename to crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-40x40@2x.png diff --git a/crates-tauri/yaak-app/icons/dev/ios/AppIcon-40x40@3x.png b/crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-40x40@3x.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/ios/AppIcon-40x40@3x.png rename to crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-40x40@3x.png diff --git a/crates-tauri/yaak-app/icons/dev/ios/AppIcon-512@2x.png b/crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-512@2x.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/ios/AppIcon-512@2x.png rename to crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-512@2x.png diff --git a/crates-tauri/yaak-app/icons/dev/ios/AppIcon-60x60@2x.png b/crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-60x60@2x.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/ios/AppIcon-60x60@2x.png rename to crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-60x60@2x.png diff --git a/crates-tauri/yaak-app/icons/dev/ios/AppIcon-60x60@3x.png b/crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-60x60@3x.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/ios/AppIcon-60x60@3x.png rename to crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-60x60@3x.png diff --git a/crates-tauri/yaak-app/icons/dev/ios/AppIcon-76x76@1x.png b/crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-76x76@1x.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/ios/AppIcon-76x76@1x.png rename to crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-76x76@1x.png diff --git a/crates-tauri/yaak-app/icons/dev/ios/AppIcon-76x76@2x.png b/crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-76x76@2x.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/ios/AppIcon-76x76@2x.png rename to crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-76x76@2x.png diff --git a/crates-tauri/yaak-app/icons/dev/ios/AppIcon-83.5x83.5@2x.png b/crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-83.5x83.5@2x.png similarity index 100% rename from crates-tauri/yaak-app/icons/dev/ios/AppIcon-83.5x83.5@2x.png rename to crates-tauri/yaak-app-client/icons/dev/ios/AppIcon-83.5x83.5@2x.png diff --git a/crates-tauri/yaak-app/icons/icon-dev.png b/crates-tauri/yaak-app-client/icons/icon-dev.png similarity index 100% rename from crates-tauri/yaak-app/icons/icon-dev.png rename to crates-tauri/yaak-app-client/icons/icon-dev.png diff --git a/crates-tauri/yaak-app/icons/icon.png b/crates-tauri/yaak-app-client/icons/icon.png similarity index 100% rename from crates-tauri/yaak-app/icons/icon.png rename to crates-tauri/yaak-app-client/icons/icon.png diff --git a/crates-tauri/yaak-app/icons/release/128x128.png b/crates-tauri/yaak-app-client/icons/release/128x128.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/128x128.png rename to crates-tauri/yaak-app-client/icons/release/128x128.png diff --git a/crates-tauri/yaak-app/icons/release/128x128@2x.png b/crates-tauri/yaak-app-client/icons/release/128x128@2x.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/128x128@2x.png rename to crates-tauri/yaak-app-client/icons/release/128x128@2x.png diff --git a/crates-tauri/yaak-app/icons/release/32x32.png b/crates-tauri/yaak-app-client/icons/release/32x32.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/32x32.png rename to crates-tauri/yaak-app-client/icons/release/32x32.png diff --git a/crates-tauri/yaak-app/icons/release/64x64.png b/crates-tauri/yaak-app-client/icons/release/64x64.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/64x64.png rename to crates-tauri/yaak-app-client/icons/release/64x64.png diff --git a/crates-tauri/yaak-app/icons/release/Square107x107Logo.png b/crates-tauri/yaak-app-client/icons/release/Square107x107Logo.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/Square107x107Logo.png rename to crates-tauri/yaak-app-client/icons/release/Square107x107Logo.png diff --git a/crates-tauri/yaak-app/icons/release/Square142x142Logo.png b/crates-tauri/yaak-app-client/icons/release/Square142x142Logo.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/Square142x142Logo.png rename to crates-tauri/yaak-app-client/icons/release/Square142x142Logo.png diff --git a/crates-tauri/yaak-app/icons/release/Square150x150Logo.png b/crates-tauri/yaak-app-client/icons/release/Square150x150Logo.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/Square150x150Logo.png rename to crates-tauri/yaak-app-client/icons/release/Square150x150Logo.png diff --git a/crates-tauri/yaak-app/icons/release/Square284x284Logo.png b/crates-tauri/yaak-app-client/icons/release/Square284x284Logo.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/Square284x284Logo.png rename to crates-tauri/yaak-app-client/icons/release/Square284x284Logo.png diff --git a/crates-tauri/yaak-app/icons/release/Square30x30Logo.png b/crates-tauri/yaak-app-client/icons/release/Square30x30Logo.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/Square30x30Logo.png rename to crates-tauri/yaak-app-client/icons/release/Square30x30Logo.png diff --git a/crates-tauri/yaak-app/icons/release/Square310x310Logo.png b/crates-tauri/yaak-app-client/icons/release/Square310x310Logo.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/Square310x310Logo.png rename to crates-tauri/yaak-app-client/icons/release/Square310x310Logo.png diff --git a/crates-tauri/yaak-app/icons/release/Square44x44Logo.png b/crates-tauri/yaak-app-client/icons/release/Square44x44Logo.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/Square44x44Logo.png rename to crates-tauri/yaak-app-client/icons/release/Square44x44Logo.png diff --git a/crates-tauri/yaak-app/icons/release/Square71x71Logo.png b/crates-tauri/yaak-app-client/icons/release/Square71x71Logo.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/Square71x71Logo.png rename to crates-tauri/yaak-app-client/icons/release/Square71x71Logo.png diff --git a/crates-tauri/yaak-app/icons/release/Square89x89Logo.png b/crates-tauri/yaak-app-client/icons/release/Square89x89Logo.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/Square89x89Logo.png rename to crates-tauri/yaak-app-client/icons/release/Square89x89Logo.png diff --git a/crates-tauri/yaak-app/icons/release/StoreLogo.png b/crates-tauri/yaak-app-client/icons/release/StoreLogo.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/StoreLogo.png rename to crates-tauri/yaak-app-client/icons/release/StoreLogo.png diff --git a/crates-tauri/yaak-app/icons/release/android/mipmap-hdpi/ic_launcher.png b/crates-tauri/yaak-app-client/icons/release/android/mipmap-hdpi/ic_launcher.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/android/mipmap-hdpi/ic_launcher.png rename to crates-tauri/yaak-app-client/icons/release/android/mipmap-hdpi/ic_launcher.png diff --git a/crates-tauri/yaak-app/icons/release/android/mipmap-hdpi/ic_launcher_foreground.png b/crates-tauri/yaak-app-client/icons/release/android/mipmap-hdpi/ic_launcher_foreground.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/android/mipmap-hdpi/ic_launcher_foreground.png rename to crates-tauri/yaak-app-client/icons/release/android/mipmap-hdpi/ic_launcher_foreground.png diff --git a/crates-tauri/yaak-app/icons/release/android/mipmap-hdpi/ic_launcher_round.png b/crates-tauri/yaak-app-client/icons/release/android/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/android/mipmap-hdpi/ic_launcher_round.png rename to crates-tauri/yaak-app-client/icons/release/android/mipmap-hdpi/ic_launcher_round.png diff --git a/crates-tauri/yaak-app/icons/release/android/mipmap-mdpi/ic_launcher.png b/crates-tauri/yaak-app-client/icons/release/android/mipmap-mdpi/ic_launcher.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/android/mipmap-mdpi/ic_launcher.png rename to crates-tauri/yaak-app-client/icons/release/android/mipmap-mdpi/ic_launcher.png diff --git a/crates-tauri/yaak-app/icons/release/android/mipmap-mdpi/ic_launcher_foreground.png b/crates-tauri/yaak-app-client/icons/release/android/mipmap-mdpi/ic_launcher_foreground.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/android/mipmap-mdpi/ic_launcher_foreground.png rename to crates-tauri/yaak-app-client/icons/release/android/mipmap-mdpi/ic_launcher_foreground.png diff --git a/crates-tauri/yaak-app/icons/release/android/mipmap-mdpi/ic_launcher_round.png b/crates-tauri/yaak-app-client/icons/release/android/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/android/mipmap-mdpi/ic_launcher_round.png rename to crates-tauri/yaak-app-client/icons/release/android/mipmap-mdpi/ic_launcher_round.png diff --git a/crates-tauri/yaak-app/icons/release/android/mipmap-xhdpi/ic_launcher.png b/crates-tauri/yaak-app-client/icons/release/android/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/android/mipmap-xhdpi/ic_launcher.png rename to crates-tauri/yaak-app-client/icons/release/android/mipmap-xhdpi/ic_launcher.png diff --git a/crates-tauri/yaak-app/icons/release/android/mipmap-xhdpi/ic_launcher_foreground.png b/crates-tauri/yaak-app-client/icons/release/android/mipmap-xhdpi/ic_launcher_foreground.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/android/mipmap-xhdpi/ic_launcher_foreground.png rename to crates-tauri/yaak-app-client/icons/release/android/mipmap-xhdpi/ic_launcher_foreground.png diff --git a/crates-tauri/yaak-app/icons/release/android/mipmap-xhdpi/ic_launcher_round.png b/crates-tauri/yaak-app-client/icons/release/android/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/android/mipmap-xhdpi/ic_launcher_round.png rename to crates-tauri/yaak-app-client/icons/release/android/mipmap-xhdpi/ic_launcher_round.png diff --git a/crates-tauri/yaak-app/icons/release/android/mipmap-xxhdpi/ic_launcher.png b/crates-tauri/yaak-app-client/icons/release/android/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/android/mipmap-xxhdpi/ic_launcher.png rename to crates-tauri/yaak-app-client/icons/release/android/mipmap-xxhdpi/ic_launcher.png diff --git a/crates-tauri/yaak-app/icons/release/android/mipmap-xxhdpi/ic_launcher_foreground.png b/crates-tauri/yaak-app-client/icons/release/android/mipmap-xxhdpi/ic_launcher_foreground.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/android/mipmap-xxhdpi/ic_launcher_foreground.png rename to crates-tauri/yaak-app-client/icons/release/android/mipmap-xxhdpi/ic_launcher_foreground.png diff --git a/crates-tauri/yaak-app/icons/release/android/mipmap-xxhdpi/ic_launcher_round.png b/crates-tauri/yaak-app-client/icons/release/android/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/android/mipmap-xxhdpi/ic_launcher_round.png rename to crates-tauri/yaak-app-client/icons/release/android/mipmap-xxhdpi/ic_launcher_round.png diff --git a/crates-tauri/yaak-app/icons/release/android/mipmap-xxxhdpi/ic_launcher.png b/crates-tauri/yaak-app-client/icons/release/android/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/android/mipmap-xxxhdpi/ic_launcher.png rename to crates-tauri/yaak-app-client/icons/release/android/mipmap-xxxhdpi/ic_launcher.png diff --git a/crates-tauri/yaak-app/icons/release/android/mipmap-xxxhdpi/ic_launcher_foreground.png b/crates-tauri/yaak-app-client/icons/release/android/mipmap-xxxhdpi/ic_launcher_foreground.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/android/mipmap-xxxhdpi/ic_launcher_foreground.png rename to crates-tauri/yaak-app-client/icons/release/android/mipmap-xxxhdpi/ic_launcher_foreground.png diff --git a/crates-tauri/yaak-app/icons/release/android/mipmap-xxxhdpi/ic_launcher_round.png b/crates-tauri/yaak-app-client/icons/release/android/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/android/mipmap-xxxhdpi/ic_launcher_round.png rename to crates-tauri/yaak-app-client/icons/release/android/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/crates-tauri/yaak-app/icons/release/icon.icns b/crates-tauri/yaak-app-client/icons/release/icon.icns similarity index 100% rename from crates-tauri/yaak-app/icons/release/icon.icns rename to crates-tauri/yaak-app-client/icons/release/icon.icns diff --git a/crates-tauri/yaak-app/icons/release/icon.ico b/crates-tauri/yaak-app-client/icons/release/icon.ico similarity index 100% rename from crates-tauri/yaak-app/icons/release/icon.ico rename to crates-tauri/yaak-app-client/icons/release/icon.ico diff --git a/crates-tauri/yaak-app/icons/release/icon.png b/crates-tauri/yaak-app-client/icons/release/icon.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/icon.png rename to crates-tauri/yaak-app-client/icons/release/icon.png diff --git a/crates-tauri/yaak-app/icons/release/ios/AppIcon-20x20@1x.png b/crates-tauri/yaak-app-client/icons/release/ios/AppIcon-20x20@1x.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/ios/AppIcon-20x20@1x.png rename to crates-tauri/yaak-app-client/icons/release/ios/AppIcon-20x20@1x.png diff --git a/crates-tauri/yaak-app/icons/release/ios/AppIcon-20x20@2x-1.png b/crates-tauri/yaak-app-client/icons/release/ios/AppIcon-20x20@2x-1.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/ios/AppIcon-20x20@2x-1.png rename to crates-tauri/yaak-app-client/icons/release/ios/AppIcon-20x20@2x-1.png diff --git a/crates-tauri/yaak-app/icons/release/ios/AppIcon-20x20@2x.png b/crates-tauri/yaak-app-client/icons/release/ios/AppIcon-20x20@2x.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/ios/AppIcon-20x20@2x.png rename to crates-tauri/yaak-app-client/icons/release/ios/AppIcon-20x20@2x.png diff --git a/crates-tauri/yaak-app/icons/release/ios/AppIcon-20x20@3x.png b/crates-tauri/yaak-app-client/icons/release/ios/AppIcon-20x20@3x.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/ios/AppIcon-20x20@3x.png rename to crates-tauri/yaak-app-client/icons/release/ios/AppIcon-20x20@3x.png diff --git a/crates-tauri/yaak-app/icons/release/ios/AppIcon-29x29@1x.png b/crates-tauri/yaak-app-client/icons/release/ios/AppIcon-29x29@1x.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/ios/AppIcon-29x29@1x.png rename to crates-tauri/yaak-app-client/icons/release/ios/AppIcon-29x29@1x.png diff --git a/crates-tauri/yaak-app/icons/release/ios/AppIcon-29x29@2x-1.png b/crates-tauri/yaak-app-client/icons/release/ios/AppIcon-29x29@2x-1.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/ios/AppIcon-29x29@2x-1.png rename to crates-tauri/yaak-app-client/icons/release/ios/AppIcon-29x29@2x-1.png diff --git a/crates-tauri/yaak-app/icons/release/ios/AppIcon-29x29@2x.png b/crates-tauri/yaak-app-client/icons/release/ios/AppIcon-29x29@2x.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/ios/AppIcon-29x29@2x.png rename to crates-tauri/yaak-app-client/icons/release/ios/AppIcon-29x29@2x.png diff --git a/crates-tauri/yaak-app/icons/release/ios/AppIcon-29x29@3x.png b/crates-tauri/yaak-app-client/icons/release/ios/AppIcon-29x29@3x.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/ios/AppIcon-29x29@3x.png rename to crates-tauri/yaak-app-client/icons/release/ios/AppIcon-29x29@3x.png diff --git a/crates-tauri/yaak-app/icons/release/ios/AppIcon-40x40@1x.png b/crates-tauri/yaak-app-client/icons/release/ios/AppIcon-40x40@1x.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/ios/AppIcon-40x40@1x.png rename to crates-tauri/yaak-app-client/icons/release/ios/AppIcon-40x40@1x.png diff --git a/crates-tauri/yaak-app/icons/release/ios/AppIcon-40x40@2x-1.png b/crates-tauri/yaak-app-client/icons/release/ios/AppIcon-40x40@2x-1.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/ios/AppIcon-40x40@2x-1.png rename to crates-tauri/yaak-app-client/icons/release/ios/AppIcon-40x40@2x-1.png diff --git a/crates-tauri/yaak-app/icons/release/ios/AppIcon-40x40@2x.png b/crates-tauri/yaak-app-client/icons/release/ios/AppIcon-40x40@2x.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/ios/AppIcon-40x40@2x.png rename to crates-tauri/yaak-app-client/icons/release/ios/AppIcon-40x40@2x.png diff --git a/crates-tauri/yaak-app/icons/release/ios/AppIcon-40x40@3x.png b/crates-tauri/yaak-app-client/icons/release/ios/AppIcon-40x40@3x.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/ios/AppIcon-40x40@3x.png rename to crates-tauri/yaak-app-client/icons/release/ios/AppIcon-40x40@3x.png diff --git a/crates-tauri/yaak-app/icons/release/ios/AppIcon-512@2x.png b/crates-tauri/yaak-app-client/icons/release/ios/AppIcon-512@2x.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/ios/AppIcon-512@2x.png rename to crates-tauri/yaak-app-client/icons/release/ios/AppIcon-512@2x.png diff --git a/crates-tauri/yaak-app/icons/release/ios/AppIcon-60x60@2x.png b/crates-tauri/yaak-app-client/icons/release/ios/AppIcon-60x60@2x.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/ios/AppIcon-60x60@2x.png rename to crates-tauri/yaak-app-client/icons/release/ios/AppIcon-60x60@2x.png diff --git a/crates-tauri/yaak-app/icons/release/ios/AppIcon-60x60@3x.png b/crates-tauri/yaak-app-client/icons/release/ios/AppIcon-60x60@3x.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/ios/AppIcon-60x60@3x.png rename to crates-tauri/yaak-app-client/icons/release/ios/AppIcon-60x60@3x.png diff --git a/crates-tauri/yaak-app/icons/release/ios/AppIcon-76x76@1x.png b/crates-tauri/yaak-app-client/icons/release/ios/AppIcon-76x76@1x.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/ios/AppIcon-76x76@1x.png rename to crates-tauri/yaak-app-client/icons/release/ios/AppIcon-76x76@1x.png diff --git a/crates-tauri/yaak-app/icons/release/ios/AppIcon-76x76@2x.png b/crates-tauri/yaak-app-client/icons/release/ios/AppIcon-76x76@2x.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/ios/AppIcon-76x76@2x.png rename to crates-tauri/yaak-app-client/icons/release/ios/AppIcon-76x76@2x.png diff --git a/crates-tauri/yaak-app/icons/release/ios/AppIcon-83.5x83.5@2x.png b/crates-tauri/yaak-app-client/icons/release/ios/AppIcon-83.5x83.5@2x.png similarity index 100% rename from crates-tauri/yaak-app/icons/release/ios/AppIcon-83.5x83.5@2x.png rename to crates-tauri/yaak-app-client/icons/release/ios/AppIcon-83.5x83.5@2x.png diff --git a/crates-tauri/yaak-app/macos/entitlements.plist b/crates-tauri/yaak-app-client/macos/entitlements.plist similarity index 100% rename from crates-tauri/yaak-app/macos/entitlements.plist rename to crates-tauri/yaak-app-client/macos/entitlements.plist diff --git a/crates-tauri/yaak-app/macos/entitlements.yaaknode.plist b/crates-tauri/yaak-app-client/macos/entitlements.yaaknode.plist similarity index 100% rename from crates-tauri/yaak-app/macos/entitlements.yaaknode.plist rename to crates-tauri/yaak-app-client/macos/entitlements.yaaknode.plist diff --git a/crates-tauri/yaak-app/macos/entitlements.yaakprotoc.plist b/crates-tauri/yaak-app-client/macos/entitlements.yaakprotoc.plist similarity index 100% rename from crates-tauri/yaak-app/macos/entitlements.yaakprotoc.plist rename to crates-tauri/yaak-app-client/macos/entitlements.yaakprotoc.plist diff --git a/crates-tauri/yaak-app-client/package.json b/crates-tauri/yaak-app-client/package.json new file mode 100644 index 00000000..4daeed13 --- /dev/null +++ b/crates-tauri/yaak-app-client/package.json @@ -0,0 +1,6 @@ +{ + "name": "@yaakapp-internal/tauri-client", + "private": true, + "version": "1.0.0", + "main": "bindings/index.ts" +} diff --git a/crates-tauri/yaak-app/src/commands.rs b/crates-tauri/yaak-app-client/src/commands.rs similarity index 100% rename from crates-tauri/yaak-app/src/commands.rs rename to crates-tauri/yaak-app-client/src/commands.rs diff --git a/crates-tauri/yaak-app/src/encoding.rs b/crates-tauri/yaak-app-client/src/encoding.rs similarity index 100% rename from crates-tauri/yaak-app/src/encoding.rs rename to crates-tauri/yaak-app-client/src/encoding.rs diff --git a/crates-tauri/yaak-app/src/error.rs b/crates-tauri/yaak-app-client/src/error.rs similarity index 100% rename from crates-tauri/yaak-app/src/error.rs rename to crates-tauri/yaak-app-client/src/error.rs diff --git a/crates-tauri/yaak-app/src/git_ext.rs b/crates-tauri/yaak-app-client/src/git_ext.rs similarity index 100% rename from crates-tauri/yaak-app/src/git_ext.rs rename to crates-tauri/yaak-app-client/src/git_ext.rs diff --git a/crates-tauri/yaak-app/src/grpc.rs b/crates-tauri/yaak-app-client/src/grpc.rs similarity index 100% rename from crates-tauri/yaak-app/src/grpc.rs rename to crates-tauri/yaak-app-client/src/grpc.rs diff --git a/crates-tauri/yaak-app/src/history.rs b/crates-tauri/yaak-app-client/src/history.rs similarity index 100% rename from crates-tauri/yaak-app/src/history.rs rename to crates-tauri/yaak-app-client/src/history.rs diff --git a/crates-tauri/yaak-app/src/http_request.rs b/crates-tauri/yaak-app-client/src/http_request.rs similarity index 100% rename from crates-tauri/yaak-app/src/http_request.rs rename to crates-tauri/yaak-app-client/src/http_request.rs diff --git a/crates-tauri/yaak-app/src/import.rs b/crates-tauri/yaak-app-client/src/import.rs similarity index 100% rename from crates-tauri/yaak-app/src/import.rs rename to crates-tauri/yaak-app-client/src/import.rs diff --git a/crates-tauri/yaak-app/src/lib.rs b/crates-tauri/yaak-app-client/src/lib.rs similarity index 100% rename from crates-tauri/yaak-app/src/lib.rs rename to crates-tauri/yaak-app-client/src/lib.rs diff --git a/crates-tauri/yaak-app-client/src/main.rs b/crates-tauri/yaak-app-client/src/main.rs new file mode 100644 index 00000000..3e677761 --- /dev/null +++ b/crates-tauri/yaak-app-client/src/main.rs @@ -0,0 +1,5 @@ +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +fn main() { + tauri_app_client_lib::run(); +} diff --git a/crates-tauri/yaak-app/src/models_ext.rs b/crates-tauri/yaak-app-client/src/models_ext.rs similarity index 100% rename from crates-tauri/yaak-app/src/models_ext.rs rename to crates-tauri/yaak-app-client/src/models_ext.rs diff --git a/crates-tauri/yaak-app/src/notifications.rs b/crates-tauri/yaak-app-client/src/notifications.rs similarity index 100% rename from crates-tauri/yaak-app/src/notifications.rs rename to crates-tauri/yaak-app-client/src/notifications.rs diff --git a/crates-tauri/yaak-app/src/plugin_events.rs b/crates-tauri/yaak-app-client/src/plugin_events.rs similarity index 100% rename from crates-tauri/yaak-app/src/plugin_events.rs rename to crates-tauri/yaak-app-client/src/plugin_events.rs diff --git a/crates-tauri/yaak-app/src/plugins_ext.rs b/crates-tauri/yaak-app-client/src/plugins_ext.rs similarity index 100% rename from crates-tauri/yaak-app/src/plugins_ext.rs rename to crates-tauri/yaak-app-client/src/plugins_ext.rs diff --git a/crates-tauri/yaak-app/src/render.rs b/crates-tauri/yaak-app-client/src/render.rs similarity index 100% rename from crates-tauri/yaak-app/src/render.rs rename to crates-tauri/yaak-app-client/src/render.rs diff --git a/crates-tauri/yaak-app/src/sync_ext.rs b/crates-tauri/yaak-app-client/src/sync_ext.rs similarity index 100% rename from crates-tauri/yaak-app/src/sync_ext.rs rename to crates-tauri/yaak-app-client/src/sync_ext.rs diff --git a/crates-tauri/yaak-app/src/updates.rs b/crates-tauri/yaak-app-client/src/updates.rs similarity index 100% rename from crates-tauri/yaak-app/src/updates.rs rename to crates-tauri/yaak-app-client/src/updates.rs diff --git a/crates-tauri/yaak-app/src/uri_scheme.rs b/crates-tauri/yaak-app-client/src/uri_scheme.rs similarity index 100% rename from crates-tauri/yaak-app/src/uri_scheme.rs rename to crates-tauri/yaak-app-client/src/uri_scheme.rs diff --git a/crates-tauri/yaak-app/src/window.rs b/crates-tauri/yaak-app-client/src/window.rs similarity index 100% rename from crates-tauri/yaak-app/src/window.rs rename to crates-tauri/yaak-app-client/src/window.rs diff --git a/crates-tauri/yaak-app/src/window_menu.rs b/crates-tauri/yaak-app-client/src/window_menu.rs similarity index 100% rename from crates-tauri/yaak-app/src/window_menu.rs rename to crates-tauri/yaak-app-client/src/window_menu.rs diff --git a/crates-tauri/yaak-app/src/ws_ext.rs b/crates-tauri/yaak-app-client/src/ws_ext.rs similarity index 100% rename from crates-tauri/yaak-app/src/ws_ext.rs rename to crates-tauri/yaak-app-client/src/ws_ext.rs diff --git a/crates-tauri/yaak-app/static/greg.jpeg b/crates-tauri/yaak-app-client/static/greg.jpeg similarity index 100% rename from crates-tauri/yaak-app/static/greg.jpeg rename to crates-tauri/yaak-app-client/static/greg.jpeg diff --git a/crates-tauri/yaak-app/tauri.conf.json b/crates-tauri/yaak-app-client/tauri.conf.json similarity index 72% rename from crates-tauri/yaak-app/tauri.conf.json rename to crates-tauri/yaak-app-client/tauri.conf.json index 606c72d0..164a7863 100644 --- a/crates-tauri/yaak-app/tauri.conf.json +++ b/crates-tauri/yaak-app-client/tauri.conf.json @@ -3,10 +3,10 @@ "version": "0.0.0", "identifier": "app.yaak.desktop", "build": { - "beforeBuildCommand": "npm run tauri-before-build", - "beforeDevCommand": "npm run tauri-before-dev", + "beforeBuildCommand": "npm --prefix ../.. run client:tauri-before-build", + "beforeDevCommand": "npm --prefix ../.. run client:tauri-before-dev", "devUrl": "http://localhost:1420", - "frontendDist": "../../dist" + "frontendDist": "../../dist/apps/yaak-client" }, "app": { "withGlobalTauri": false, @@ -14,10 +14,7 @@ "assetProtocol": { "enable": true, "scope": { - "allow": [ - "$APPDATA/responses/*", - "$RESOURCE/static/*" - ] + "allow": ["$APPDATA/responses/*", "$RESOURCE/static/*"] } } } @@ -25,9 +22,7 @@ "plugins": { "deep-link": { "desktop": { - "schemes": [ - "yaak" - ] + "schemes": ["yaak"] } } }, diff --git a/crates-tauri/yaak-app/tauri.development.conf.json b/crates-tauri/yaak-app-client/tauri.development.conf.json similarity index 100% rename from crates-tauri/yaak-app/tauri.development.conf.json rename to crates-tauri/yaak-app-client/tauri.development.conf.json diff --git a/crates-tauri/yaak-app/tauri.linux.conf.json b/crates-tauri/yaak-app-client/tauri.linux.conf.json similarity index 100% rename from crates-tauri/yaak-app/tauri.linux.conf.json rename to crates-tauri/yaak-app-client/tauri.linux.conf.json diff --git a/crates-tauri/yaak-app/tauri.release.conf.json b/crates-tauri/yaak-app-client/tauri.release.conf.json similarity index 100% rename from crates-tauri/yaak-app/tauri.release.conf.json rename to crates-tauri/yaak-app-client/tauri.release.conf.json diff --git a/crates-tauri/yaak-app/template.desktop b/crates-tauri/yaak-app-client/template.desktop similarity index 100% rename from crates-tauri/yaak-app/template.desktop rename to crates-tauri/yaak-app-client/template.desktop diff --git a/crates-tauri/yaak-app-proxy/.gitignore b/crates-tauri/yaak-app-proxy/.gitignore new file mode 100644 index 00000000..8cc96754 --- /dev/null +++ b/crates-tauri/yaak-app-proxy/.gitignore @@ -0,0 +1,8 @@ +# Generated by Cargo +# will have compiled files and executables +target/ + +gen/* + +**/permissions/autogenerated +**/permissions/schemas diff --git a/crates-tauri/yaak-app-proxy/Cargo.toml b/crates-tauri/yaak-app-proxy/Cargo.toml new file mode 100644 index 00000000..9cc4c880 --- /dev/null +++ b/crates-tauri/yaak-app-proxy/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "yaak-app-proxy" +version = "0.0.0" +edition = "2024" +authors = ["Gregory Schier"] +publish = false + +[lib] +name = "tauri_app_proxy_lib" +crate-type = ["staticlib", "cdylib", "lib"] + +[build-dependencies] +tauri-build = { version = "2.5.3", features = [] } + +[dependencies] +serde = { workspace = true, features = ["derive"] } +tauri = { workspace = true } +yaak-proxy = { workspace = true } diff --git a/crates-tauri/yaak-app-proxy/bindings/index.ts b/crates-tauri/yaak-app-proxy/bindings/index.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/crates-tauri/yaak-app-proxy/bindings/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/crates-tauri/yaak-app-proxy/build.rs b/crates-tauri/yaak-app-proxy/build.rs new file mode 100644 index 00000000..d860e1e6 --- /dev/null +++ b/crates-tauri/yaak-app-proxy/build.rs @@ -0,0 +1,3 @@ +fn main() { + tauri_build::build() +} diff --git a/crates-tauri/yaak-app-proxy/capabilities/default.json b/crates-tauri/yaak-app-proxy/capabilities/default.json new file mode 100644 index 00000000..b2f104a7 --- /dev/null +++ b/crates-tauri/yaak-app-proxy/capabilities/default.json @@ -0,0 +1,10 @@ +{ + "identifier": "default", + "description": "Default capabilities for the Yaak Proxy app", + "windows": [ + "*" + ], + "permissions": [ + "core:default" + ] +} diff --git a/crates-tauri/yaak-app/package.json b/crates-tauri/yaak-app-proxy/package.json similarity index 63% rename from crates-tauri/yaak-app/package.json rename to crates-tauri/yaak-app-proxy/package.json index bfdc28b6..60bedc32 100644 --- a/crates-tauri/yaak-app/package.json +++ b/crates-tauri/yaak-app-proxy/package.json @@ -1,5 +1,5 @@ { - "name": "@yaakapp-internal/tauri", + "name": "@yaakapp-internal/tauri-proxy", "private": true, "version": "1.0.0", "main": "bindings/index.ts" diff --git a/crates-tauri/yaak-app-proxy/src/lib.rs b/crates-tauri/yaak-app-proxy/src/lib.rs new file mode 100644 index 00000000..201ab28d --- /dev/null +++ b/crates-tauri/yaak-app-proxy/src/lib.rs @@ -0,0 +1,63 @@ +use serde::Serialize; +use std::sync::Mutex; +use tauri::State; +use yaak_proxy::ProxyHandle; + +#[derive(Serialize)] +#[serde(rename_all = "camelCase")] +struct ProxyMetadata { + name: String, + version: String, +} + +#[derive(Default)] +struct ProxyState { + handle: Mutex>, +} + +#[derive(Serialize)] +#[serde(rename_all = "camelCase")] +struct ProxyStartResult { + port: u16, + already_running: bool, +} + +#[tauri::command] +fn proxy_metadata(app_handle: tauri::AppHandle) -> ProxyMetadata { + ProxyMetadata { + name: app_handle.package_info().name.clone(), + version: app_handle.package_info().version.to_string(), + } +} + +#[tauri::command] +fn proxy_start( + state: State<'_, ProxyState>, + port: Option, +) -> Result { + let mut handle = state.handle.lock().map_err(|_| "failed to lock proxy state".to_string())?; + + if let Some(existing) = handle.as_ref() { + return Ok(ProxyStartResult { port: existing.port, already_running: true }); + } + + let proxy_handle = yaak_proxy::start_proxy(port.unwrap_or(0))?; + let started_port = proxy_handle.port; + *handle = Some(proxy_handle); + + Ok(ProxyStartResult { port: started_port, already_running: false }) +} + +#[tauri::command] +fn proxy_stop(state: State<'_, ProxyState>) -> Result { + let mut handle = state.handle.lock().map_err(|_| "failed to lock proxy state".to_string())?; + Ok(handle.take().is_some()) +} + +pub fn run() { + tauri::Builder::default() + .manage(ProxyState::default()) + .invoke_handler(tauri::generate_handler![proxy_metadata, proxy_start, proxy_stop]) + .run(tauri::generate_context!()) + .expect("error while running yaak proxy tauri application"); +} diff --git a/crates-tauri/yaak-app/src/main.rs b/crates-tauri/yaak-app-proxy/src/main.rs similarity index 71% rename from crates-tauri/yaak-app/src/main.rs rename to crates-tauri/yaak-app-proxy/src/main.rs index f657cdb2..70fd252a 100644 --- a/crates-tauri/yaak-app/src/main.rs +++ b/crates-tauri/yaak-app-proxy/src/main.rs @@ -1,5 +1,5 @@ #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] fn main() { - tauri_app_lib::run(); + tauri_app_proxy_lib::run(); } diff --git a/crates-tauri/yaak-app-proxy/tauri.development.conf.json b/crates-tauri/yaak-app-proxy/tauri.development.conf.json new file mode 100644 index 00000000..b8f1acb4 --- /dev/null +++ b/crates-tauri/yaak-app-proxy/tauri.development.conf.json @@ -0,0 +1,13 @@ +{ + "productName": "Yaak Proxy Dev", + "identifier": "app.yaak.proxy.dev", + "bundle": { + "icon": [ + "../yaak-app-client/icons/dev/32x32.png", + "../yaak-app-client/icons/dev/128x128.png", + "../yaak-app-client/icons/dev/128x128@2x.png", + "../yaak-app-client/icons/dev/icon.icns", + "../yaak-app-client/icons/dev/icon.ico" + ] + } +} diff --git a/crates-tauri/yaak-app-proxy/tauri.release.conf.json b/crates-tauri/yaak-app-proxy/tauri.release.conf.json new file mode 100644 index 00000000..b1ec7662 --- /dev/null +++ b/crates-tauri/yaak-app-proxy/tauri.release.conf.json @@ -0,0 +1,5 @@ +{ + "build": { + "features": [] + } +} diff --git a/crates-tauri/yaak-app-proxy/template.desktop b/crates-tauri/yaak-app-proxy/template.desktop new file mode 100644 index 00000000..902aa163 --- /dev/null +++ b/crates-tauri/yaak-app-proxy/template.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Categories={{categories}} +Comment={{comment}} +Exec={{exec}} +Icon={{icon}} +Name={{name}} +StartupWMClass={{exec}} +Terminal=false +Type=Application diff --git a/crates-tauri/yaak-license/index.ts b/crates-tauri/yaak-license/index.ts index 2a2fab8f..3ae6e82a 100644 --- a/crates-tauri/yaak-license/index.ts +++ b/crates-tauri/yaak-license/index.ts @@ -1,31 +1,33 @@ -import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; -import { invoke } from '@tauri-apps/api/core'; -import { listen } from '@tauri-apps/api/event'; -import { appInfo } from '@yaakapp/app/lib/appInfo'; -import { useEffect } from 'react'; -import { LicenseCheckStatus } from './bindings/license'; +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; +import { invoke } from "@tauri-apps/api/core"; +import { listen } from "@tauri-apps/api/event"; +import { appInfo } from "@yaakapp/yaak-client/lib/appInfo"; +import { useEffect } from "react"; +import { LicenseCheckStatus } from "./bindings/license"; -export * from './bindings/license'; +export * from "./bindings/license"; -const CHECK_QUERY_KEY = ['license.check']; +const CHECK_QUERY_KEY = ["license.check"]; export function useLicense() { const queryClient = useQueryClient(); const activate = useMutation({ - mutationKey: ['license.activate'], - mutationFn: (payload) => invoke('plugin:yaak-license|activate', payload), - onSuccess: () => queryClient.invalidateQueries({ queryKey: CHECK_QUERY_KEY }), + mutationKey: ["license.activate"], + mutationFn: (payload) => invoke("plugin:yaak-license|activate", payload), + onSuccess: () => + queryClient.invalidateQueries({ queryKey: CHECK_QUERY_KEY }), }); const deactivate = useMutation({ - mutationKey: ['license.deactivate'], - mutationFn: () => invoke('plugin:yaak-license|deactivate'), - onSuccess: () => queryClient.invalidateQueries({ queryKey: CHECK_QUERY_KEY }), + mutationKey: ["license.deactivate"], + mutationFn: () => invoke("plugin:yaak-license|deactivate"), + onSuccess: () => + queryClient.invalidateQueries({ queryKey: CHECK_QUERY_KEY }), }); // Check the license again after a license is activated useEffect(() => { - const unlisten = listen('license-activated', async () => { + const unlisten = listen("license-activated", async () => { await queryClient.invalidateQueries({ queryKey: CHECK_QUERY_KEY }); }); return () => { @@ -41,7 +43,7 @@ export function useLicense() { if (!appInfo.featureLicense) { return null; } - return invoke('plugin:yaak-license|check'); + return invoke("plugin:yaak-license|check"); }, }); diff --git a/crates/yaak-git/index.ts b/crates/yaak-git/index.ts index b08d838b..e2e5a6ef 100644 --- a/crates/yaak-git/index.ts +++ b/crates/yaak-git/index.ts @@ -1,60 +1,75 @@ -import { useQuery } from '@tanstack/react-query'; -import { invoke } from '@tauri-apps/api/core'; -import { createFastMutation } from '@yaakapp/app/hooks/useFastMutation'; -import { queryClient } from '@yaakapp/app/lib/queryClient'; -import { useMemo } from 'react'; -import { BranchDeleteResult, CloneResult, GitCommit, GitRemote, GitStatusSummary, PullResult, PushResult } from './bindings/gen_git'; -import { showToast } from '@yaakapp/app/lib/toast'; +import { useQuery } from "@tanstack/react-query"; +import { invoke } from "@tauri-apps/api/core"; +import { createFastMutation } from "@yaakapp/yaak-client/hooks/useFastMutation"; +import { queryClient } from "@yaakapp/yaak-client/lib/queryClient"; +import { useMemo } from "react"; +import { + BranchDeleteResult, + CloneResult, + GitCommit, + GitRemote, + GitStatusSummary, + PullResult, + PushResult, +} from "./bindings/gen_git"; +import { showToast } from "@yaakapp/yaak-client/lib/toast"; -export * from './bindings/gen_git'; -export * from './bindings/gen_models'; +export * from "./bindings/gen_git"; +export * from "./bindings/gen_models"; export interface GitCredentials { username: string; password: string; } -export type DivergedStrategy = 'force_reset' | 'merge' | 'cancel'; +export type DivergedStrategy = "force_reset" | "merge" | "cancel"; -export type UncommittedChangesStrategy = 'reset' | 'cancel'; +export type UncommittedChangesStrategy = "reset" | "cancel"; export interface GitCallbacks { addRemote: () => Promise; promptCredentials: ( - result: Extract, + result: Extract, ) => Promise; promptDiverged: ( - result: Extract, + result: Extract, ) => Promise; promptUncommittedChanges: () => Promise; forceSync: () => Promise; } -const onSuccess = () => queryClient.invalidateQueries({ queryKey: ['git'] }); +const onSuccess = () => queryClient.invalidateQueries({ queryKey: ["git"] }); -export function useGit(dir: string, callbacks: GitCallbacks, refreshKey?: string) { - const mutations = useMemo(() => gitMutations(dir, callbacks), [dir, callbacks]); +export function useGit( + dir: string, + callbacks: GitCallbacks, + refreshKey?: string, +) { + const mutations = useMemo( + () => gitMutations(dir, callbacks), + [dir, callbacks], + ); const fetchAll = useQuery({ - queryKey: ['git', 'fetch_all', dir, refreshKey], - queryFn: () => invoke('cmd_git_fetch_all', { dir }), + queryKey: ["git", "fetch_all", dir, refreshKey], + queryFn: () => invoke("cmd_git_fetch_all", { dir }), refetchInterval: 10 * 60_000, }); return [ { remotes: useQuery({ - queryKey: ['git', 'remotes', dir, refreshKey], + queryKey: ["git", "remotes", dir, refreshKey], queryFn: () => getRemotes(dir), placeholderData: (prev) => prev, }), log: useQuery({ - queryKey: ['git', 'log', dir, refreshKey], - queryFn: () => invoke('cmd_git_log', { dir }), + queryKey: ["git", "log", dir, refreshKey], + queryFn: () => invoke("cmd_git_log", { dir }), placeholderData: (prev) => prev, }), status: useQuery({ refetchOnMount: true, - queryKey: ['git', 'status', dir, refreshKey, fetchAll.dataUpdatedAt], - queryFn: () => invoke('cmd_git_status', { dir }), + queryKey: ["git", "status", dir, refreshKey, fetchAll.dataUpdatedAt], + queryFn: () => invoke("cmd_git_status", { dir }), placeholderData: (prev) => prev, }), }, @@ -67,151 +82,180 @@ export const gitMutations = (dir: string, callbacks: GitCallbacks) => { const remotes = await getRemotes(dir); if (remotes.length === 0) { const remote = await callbacks.addRemote(); - if (remote == null) throw new Error('No remote found'); + if (remote == null) throw new Error("No remote found"); } - const result = await invoke('cmd_git_push', { dir }); - if (result.type !== 'needs_credentials') return result; + const result = await invoke("cmd_git_push", { dir }); + if (result.type !== "needs_credentials") return result; // Needs credentials, prompt for them const creds = await callbacks.promptCredentials(result); - if (creds == null) throw new Error('Canceled'); + if (creds == null) throw new Error("Canceled"); - await invoke('cmd_git_add_credential', { + await invoke("cmd_git_add_credential", { remoteUrl: result.url, username: creds.username, password: creds.password, }); // Push again - return invoke('cmd_git_push', { dir }); + return invoke("cmd_git_push", { dir }); }; const handleError = (err: unknown) => { showToast({ id: `${err}`, message: `${err}`, - color: 'danger', + color: "danger", timeout: 5000, }); - } + }; return { init: createFastMutation({ - mutationKey: ['git', 'init'], - mutationFn: () => invoke('cmd_git_initialize', { dir }), + mutationKey: ["git", "init"], + mutationFn: () => invoke("cmd_git_initialize", { dir }), onSuccess, }), add: createFastMutation({ - mutationKey: ['git', 'add', dir], - mutationFn: (args) => invoke('cmd_git_add', { dir, ...args }), + mutationKey: ["git", "add", dir], + mutationFn: (args) => invoke("cmd_git_add", { dir, ...args }), onSuccess, }), addRemote: createFastMutation({ - mutationKey: ['git', 'add-remote'], - mutationFn: (args) => invoke('cmd_git_add_remote', { dir, ...args }), + mutationKey: ["git", "add-remote"], + mutationFn: (args) => invoke("cmd_git_add_remote", { dir, ...args }), onSuccess, }), rmRemote: createFastMutation({ - mutationKey: ['git', 'rm-remote', dir], - mutationFn: (args) => invoke('cmd_git_rm_remote', { dir, ...args }), + mutationKey: ["git", "rm-remote", dir], + mutationFn: (args) => invoke("cmd_git_rm_remote", { dir, ...args }), onSuccess, }), - createBranch: createFastMutation({ - mutationKey: ['git', 'branch', dir], - mutationFn: (args) => invoke('cmd_git_branch', { dir, ...args }), + createBranch: createFastMutation< + void, + string, + { branch: string; base?: string } + >({ + mutationKey: ["git", "branch", dir], + mutationFn: (args) => invoke("cmd_git_branch", { dir, ...args }), onSuccess, }), mergeBranch: createFastMutation({ - mutationKey: ['git', 'merge', dir], - mutationFn: (args) => invoke('cmd_git_merge_branch', { dir, ...args }), + mutationKey: ["git", "merge", dir], + mutationFn: (args) => invoke("cmd_git_merge_branch", { dir, ...args }), onSuccess, }), - deleteBranch: createFastMutation({ - mutationKey: ['git', 'delete-branch', dir], - mutationFn: (args) => invoke('cmd_git_delete_branch', { dir, ...args }), + deleteBranch: createFastMutation< + BranchDeleteResult, + string, + { branch: string; force?: boolean } + >({ + mutationKey: ["git", "delete-branch", dir], + mutationFn: (args) => invoke("cmd_git_delete_branch", { dir, ...args }), onSuccess, }), deleteRemoteBranch: createFastMutation({ - mutationKey: ['git', 'delete-remote-branch', dir], - mutationFn: (args) => invoke('cmd_git_delete_remote_branch', { dir, ...args }), + mutationKey: ["git", "delete-remote-branch", dir], + mutationFn: (args) => + invoke("cmd_git_delete_remote_branch", { dir, ...args }), onSuccess, }), - renameBranch: createFastMutation({ - mutationKey: ['git', 'rename-branch', dir], - mutationFn: (args) => invoke('cmd_git_rename_branch', { dir, ...args }), + renameBranch: createFastMutation< + void, + string, + { oldName: string; newName: string } + >({ + mutationKey: ["git", "rename-branch", dir], + mutationFn: (args) => invoke("cmd_git_rename_branch", { dir, ...args }), onSuccess, }), - checkout: createFastMutation({ - mutationKey: ['git', 'checkout', dir], - mutationFn: (args) => invoke('cmd_git_checkout', { dir, ...args }), + checkout: createFastMutation< + string, + string, + { branch: string; force: boolean } + >({ + mutationKey: ["git", "checkout", dir], + mutationFn: (args) => invoke("cmd_git_checkout", { dir, ...args }), onSuccess, }), commit: createFastMutation({ - mutationKey: ['git', 'commit', dir], - mutationFn: (args) => invoke('cmd_git_commit', { dir, ...args }), + mutationKey: ["git", "commit", dir], + mutationFn: (args) => invoke("cmd_git_commit", { dir, ...args }), onSuccess, }), commitAndPush: createFastMutation({ - mutationKey: ['git', 'commit_push', dir], + mutationKey: ["git", "commit_push", dir], mutationFn: async (args) => { - await invoke('cmd_git_commit', { dir, ...args }); + await invoke("cmd_git_commit", { dir, ...args }); return push(); }, onSuccess, }), push: createFastMutation({ - mutationKey: ['git', 'push', dir], + mutationKey: ["git", "push", dir], mutationFn: push, onSuccess, }), pull: createFastMutation({ - mutationKey: ['git', 'pull', dir], + mutationKey: ["git", "pull", dir], async mutationFn() { - const result = await invoke('cmd_git_pull', { dir }); + const result = await invoke("cmd_git_pull", { dir }); - if (result.type === 'needs_credentials') { + if (result.type === "needs_credentials") { const creds = await callbacks.promptCredentials(result); - if (creds == null) throw new Error('Canceled'); + if (creds == null) throw new Error("Canceled"); - await invoke('cmd_git_add_credential', { + await invoke("cmd_git_add_credential", { remoteUrl: result.url, username: creds.username, password: creds.password, }); // Pull again after credentials - return invoke('cmd_git_pull', { dir }); + return invoke("cmd_git_pull", { dir }); } - if (result.type === 'uncommitted_changes') { - callbacks.promptUncommittedChanges().then(async (strategy) => { - if (strategy === 'cancel') return; + if (result.type === "uncommitted_changes") { + callbacks + .promptUncommittedChanges() + .then(async (strategy) => { + if (strategy === "cancel") return; - await invoke('cmd_git_reset_changes', { dir }); - return invoke('cmd_git_pull', { dir }); - }).then(async () => { onSuccess(); await callbacks.forceSync(); }, handleError); + await invoke("cmd_git_reset_changes", { dir }); + return invoke("cmd_git_pull", { dir }); + }) + .then(async () => { + onSuccess(); + await callbacks.forceSync(); + }, handleError); } - if (result.type === 'diverged') { - callbacks.promptDiverged(result).then((strategy) => { - if (strategy === 'cancel') return; + if (result.type === "diverged") { + callbacks + .promptDiverged(result) + .then((strategy) => { + if (strategy === "cancel") return; - if (strategy === 'force_reset') { - return invoke('cmd_git_pull_force_reset', { + if (strategy === "force_reset") { + return invoke("cmd_git_pull_force_reset", { + dir, + remote: result.remote, + branch: result.branch, + }); + } + + return invoke("cmd_git_pull_merge", { dir, remote: result.remote, branch: result.branch, }); - } - - return invoke('cmd_git_pull_merge', { - dir, - remote: result.remote, - branch: result.branch, - }); - }).then(async () => { onSuccess(); await callbacks.forceSync(); }, handleError); + }) + .then(async () => { + onSuccess(); + await callbacks.forceSync(); + }, handleError); } return result; @@ -219,20 +263,20 @@ export const gitMutations = (dir: string, callbacks: GitCallbacks) => { onSuccess, }), unstage: createFastMutation({ - mutationKey: ['git', 'unstage', dir], - mutationFn: (args) => invoke('cmd_git_unstage', { dir, ...args }), + mutationKey: ["git", "unstage", dir], + mutationFn: (args) => invoke("cmd_git_unstage", { dir, ...args }), onSuccess, }), resetChanges: createFastMutation({ - mutationKey: ['git', 'reset-changes', dir], - mutationFn: () => invoke('cmd_git_reset_changes', { dir }), + mutationKey: ["git", "reset-changes", dir], + mutationFn: () => invoke("cmd_git_reset_changes", { dir }), onSuccess, }), } as const; }; async function getRemotes(dir: string) { - return invoke('cmd_git_remotes', { dir }); + return invoke("cmd_git_remotes", { dir }); } /** @@ -241,21 +285,27 @@ async function getRemotes(dir: string) { export async function gitClone( url: string, dir: string, - promptCredentials: (args: { url: string; error: string | null }) => Promise, + promptCredentials: (args: { + url: string; + error: string | null; + }) => Promise, ): Promise { - const result = await invoke('cmd_git_clone', { url, dir }); - if (result.type !== 'needs_credentials') return result; + const result = await invoke("cmd_git_clone", { url, dir }); + if (result.type !== "needs_credentials") return result; // Prompt for credentials - const creds = await promptCredentials({ url: result.url, error: result.error }); - if (creds == null) return {type: 'cancelled'}; + const creds = await promptCredentials({ + url: result.url, + error: result.error, + }); + if (creds == null) return { type: "cancelled" }; // Store credentials and retry - await invoke('cmd_git_add_credential', { + await invoke("cmd_git_add_credential", { remoteUrl: result.url, username: creds.username, password: creds.password, }); - return invoke('cmd_git_clone', { url, dir }); + return invoke("cmd_git_clone", { url, dir }); } diff --git a/crates/yaak-models/guest-js/store.ts b/crates/yaak-models/guest-js/store.ts index 6cd4d8cb..f1474ad3 100644 --- a/crates/yaak-models/guest-js/store.ts +++ b/crates/yaak-models/guest-js/store.ts @@ -1,10 +1,10 @@ -import { invoke } from '@tauri-apps/api/core'; -import { getCurrentWebviewWindow } from '@tauri-apps/api/webviewWindow'; -import { resolvedModelName } from '@yaakapp/app/lib/resolvedModelName'; -import { AnyModel, ModelPayload } from '../bindings/gen_models'; -import { modelStoreDataAtom } from './atoms'; -import { ExtractModel, JotaiStore, ModelStoreData } from './types'; -import { newStoreData } from './util'; +import { invoke } from "@tauri-apps/api/core"; +import { getCurrentWebviewWindow } from "@tauri-apps/api/webviewWindow"; +import { resolvedModelName } from "@yaakapp/yaak-client/lib/resolvedModelName"; +import { AnyModel, ModelPayload } from "../bindings/gen_models"; +import { modelStoreDataAtom } from "./atoms"; +import { ExtractModel, JotaiStore, ModelStoreData } from "./types"; +import { newStoreData } from "./util"; let _store: JotaiStore | null = null; @@ -12,11 +12,11 @@ export function initModelStore(store: JotaiStore) { _store = store; getCurrentWebviewWindow() - .listen('model_write', ({ payload }) => { + .listen("model_write", ({ payload }) => { if (shouldIgnoreModel(payload)) return; mustStore().set(modelStoreDataAtom, (prev: ModelStoreData) => { - if (payload.change.type === 'upsert') { + if (payload.change.type === "upsert") { return { ...prev, [payload.model.model]: { @@ -36,7 +36,7 @@ export function initModelStore(store: JotaiStore) { function mustStore(): JotaiStore { if (_store == null) { - throw new Error('Model store was not initialized'); + throw new Error("Model store was not initialized"); } return _store; @@ -45,8 +45,8 @@ function mustStore(): JotaiStore { let _activeWorkspaceId: string | null = null; export async function changeModelStoreWorkspace(workspaceId: string | null) { - console.log('Syncing models with new workspace', workspaceId); - const workspaceModelsStr = await invoke('models_workspace_models', { + console.log("Syncing models with new workspace", workspaceId); + const workspaceModelsStr = await invoke("models_workspace_models", { workspaceId, // NOTE: if no workspace id provided, it will just fetch global models }); const workspaceModels = JSON.parse(workspaceModelsStr) as AnyModel[]; @@ -57,25 +57,30 @@ export async function changeModelStoreWorkspace(workspaceId: string | null) { mustStore().set(modelStoreDataAtom, data); - console.log('Synced model store with workspace', workspaceId, data); + console.log("Synced model store with workspace", workspaceId, data); _activeWorkspaceId = workspaceId; } -export function listModels>( - modelType: M | ReadonlyArray, -): T[] { +export function listModels< + M extends AnyModel["model"], + T extends ExtractModel, +>(modelType: M | ReadonlyArray): T[] { let data = mustStore().get(modelStoreDataAtom); - const types: ReadonlyArray = Array.isArray(modelType) ? modelType : [modelType]; + const types: ReadonlyArray = Array.isArray(modelType) + ? modelType + : [modelType]; return types.flatMap((t) => Object.values(data[t]) as T[]); } -export function getModel>( - modelType: M | ReadonlyArray, - id: string, -): T | null { +export function getModel< + M extends AnyModel["model"], + T extends ExtractModel, +>(modelType: M | ReadonlyArray, id: string): T | null { let data = mustStore().get(modelStoreDataAtom); - const types: ReadonlyArray = Array.isArray(modelType) ? modelType : [modelType]; + const types: ReadonlyArray = Array.isArray(modelType) + ? modelType + : [modelType]; for (const t of types) { let v = data[t][id]; if (v?.model === t) return v as T; @@ -83,9 +88,7 @@ export function getModel>( - model: M, - id: string, - patch: Partial | ((prev: T) => T), -): Promise { +export function patchModelById< + M extends AnyModel["model"], + T extends ExtractModel, +>(model: M, id: string, patch: Partial | ((prev: T) => T)): Promise { let prev = getModel(model, id); if (prev == null) { throw new Error(`Failed to get model to patch id=${id} model=${model}`); } - const newModel = typeof patch === 'function' ? patch(prev) : { ...prev, ...patch }; + const newModel = + typeof patch === "function" ? patch(prev) : { ...prev, ...patch }; return updateModel(newModel); } -export async function patchModel>( - base: Pick, - patch: Partial, -): Promise { +export async function patchModel< + M extends AnyModel["model"], + T extends ExtractModel, +>(base: Pick, patch: Partial): Promise { return patchModelById(base.model, base.id, patch); } -export async function updateModel>( - model: T, -): Promise { - return invoke('models_upsert', { model }); +export async function updateModel< + M extends AnyModel["model"], + T extends ExtractModel, +>(model: T): Promise { + return invoke("models_upsert", { model }); } export async function deleteModelById< - M extends AnyModel['model'], + M extends AnyModel["model"], T extends ExtractModel, >(modelType: M | M[], id: string) { let model = getModel(modelType, id); await deleteModel(model); } -export async function deleteModel>( - model: T | null, -) { +export async function deleteModel< + M extends AnyModel["model"], + T extends ExtractModel, +>(model: T | null) { if (model == null) { - throw new Error('Failed to delete null model'); + throw new Error("Failed to delete null model"); } - await invoke('models_delete', { model }); + await invoke("models_delete", { model }); } -export function duplicateModel>( - model: T | null, -) { +export function duplicateModel< + M extends AnyModel["model"], + T extends ExtractModel, +>(model: T | null) { if (model == null) { - throw new Error('Failed to duplicate null model'); + throw new Error("Failed to duplicate null model"); } // If the model has a name, try to duplicate it with a name that doesn't conflict - let name = 'name' in model ? resolvedModelName(model) : undefined; + let name = "name" in model ? resolvedModelName(model) : undefined; if (name != null) { const existingModels = listModels(model.model); for (let i = 0; i < 100; i++) { const hasConflict = existingModels.some((m) => { - if ('folderId' in m && 'folderId' in model && model.folderId !== m.folderId) { + if ( + "folderId" in m && + "folderId" in model && + model.folderId !== m.folderId + ) { return false; } else if (resolvedModelName(m) !== name) { return false; @@ -165,7 +175,7 @@ export function duplicateModel\d+))?$/); if (m != null && m.groups?.n == null) { - name = name.substring(0, m.index) + ' Copy 2'; + name = name.substring(0, m.index) + " Copy 2"; } else if (m != null && m.groups?.n != null) { name = name.substring(0, m.index) + ` Copy ${parseInt(m.groups.n) + 1}`; } else { @@ -174,23 +184,23 @@ export function duplicateModel('models_duplicate', { model: { ...model, name } }); + return invoke("models_duplicate", { model: { ...model, name } }); } -export async function createGlobalModel>( - patch: Partial & Pick, -): Promise { - return invoke('models_upsert', { model: patch }); +export async function createGlobalModel< + T extends Exclude, +>(patch: Partial & Pick): Promise { + return invoke("models_upsert", { model: patch }); } -export async function createWorkspaceModel>( - patch: Partial & Pick, -): Promise { - return invoke('models_upsert', { model: patch }); +export async function createWorkspaceModel< + T extends Extract, +>(patch: Partial & Pick): Promise { + return invoke("models_upsert", { model: patch }); } export function replaceModelsInStore< - M extends AnyModel['model'], + M extends AnyModel["model"], T extends Extract, >(model: M, models: T[]) { const newModels: Record = {}; @@ -207,7 +217,7 @@ export function replaceModelsInStore< } export function mergeModelsInStore< - M extends AnyModel['model'], + M extends AnyModel["model"], T extends Extract, >(model: M, models: T[], filter?: (model: T) => boolean) { mustStore().set(modelStoreDataAtom, (prev: ModelStoreData) => { @@ -236,7 +246,7 @@ export function mergeModelsInStore< function shouldIgnoreModel({ model, updateSource }: ModelPayload) { // Never ignore updates from non-user sources - if (updateSource.type !== 'window') { + if (updateSource.type !== "window") { return false; } @@ -246,11 +256,11 @@ function shouldIgnoreModel({ model, updateSource }: ModelPayload) { } // Only sync models that belong to this workspace, if a workspace ID is present - if ('workspaceId' in model && model.workspaceId !== _activeWorkspaceId) { + if ("workspaceId" in model && model.workspaceId !== _activeWorkspaceId) { return true; } - if (model.model === 'key_value' && model.namespace === 'no_sync') { + if (model.model === "key_value" && model.namespace === "no_sync") { return true; } diff --git a/crates/yaak-plugins/src/manager.rs b/crates/yaak-plugins/src/manager.rs index 26400e63..4f45493e 100644 --- a/crates/yaak-plugins/src/manager.rs +++ b/crates/yaak-plugins/src/manager.rs @@ -198,7 +198,7 @@ impl PluginManager { pub fn get_plugins_dir(&self) -> PathBuf { if self.dev_mode { // Use plugins directly for easy development - // Tauri runs from crates-tauri/yaak-app/, so go up two levels to reach project root + // Tauri runs from crates-tauri/yaak-app-client/, so go up two levels to reach project root env::current_dir() .map(|cwd| cwd.join("../../plugins").canonicalize().unwrap()) .unwrap_or_else(|_| self.vendored_plugin_dir.clone()) diff --git a/crates/yaak-sync/index.ts b/crates/yaak-sync/index.ts index 38f9e30e..f3d92bf3 100644 --- a/crates/yaak-sync/index.ts +++ b/crates/yaak-sync/index.ts @@ -1,24 +1,28 @@ -import { Channel, invoke } from '@tauri-apps/api/core'; -import { emit } from '@tauri-apps/api/event'; -import type { WatchResult } from '@yaakapp-internal/tauri'; -import { SyncOp } from './bindings/gen_sync'; -import { WatchEvent } from './bindings/gen_watch'; +import { Channel, invoke } from "@tauri-apps/api/core"; +import { emit } from "@tauri-apps/api/event"; +import type { WatchResult } from "@yaakapp-internal/tauri-client"; +import { SyncOp } from "./bindings/gen_sync"; +import { WatchEvent } from "./bindings/gen_watch"; -export * from './bindings/gen_models'; +export * from "./bindings/gen_models"; export async function calculateSync(workspaceId: string, syncDir: string) { - return invoke('cmd_sync_calculate', { + return invoke("cmd_sync_calculate", { workspaceId, syncDir, }); } export async function calculateSyncFsOnly(dir: string) { - return invoke('cmd_sync_calculate_fs', { dir }); + return invoke("cmd_sync_calculate_fs", { dir }); } -export async function applySync(workspaceId: string, syncDir: string, syncOps: SyncOp[]) { - return invoke('cmd_sync_apply', { +export async function applySync( + workspaceId: string, + syncDir: string, + syncOps: SyncOp[], +) { + return invoke("cmd_sync_apply", { workspaceId, syncDir, syncOps: syncOps, @@ -30,10 +34,10 @@ export function watchWorkspaceFiles( syncDir: string, callback: (e: WatchEvent) => void, ) { - console.log('Watching workspace files', workspaceId, syncDir); + console.log("Watching workspace files", workspaceId, syncDir); const channel = new Channel(); channel.onmessage = callback; - const unlistenPromise = invoke('cmd_sync_watch', { + const unlistenPromise = invoke("cmd_sync_watch", { workspaceId, syncDir, channel, @@ -46,7 +50,7 @@ export function watchWorkspaceFiles( return () => unlistenPromise .then(async ({ unlistenEvent }) => { - console.log('Unwatching workspace files', workspaceId, syncDir); + console.log("Unwatching workspace files", workspaceId, syncDir); unlistenToWatcher(unlistenEvent); }) .catch(console.error); @@ -59,11 +63,16 @@ function unlistenToWatcher(unlistenEvent: string) { } function getWatchKeys() { - return sessionStorage.getItem('workspace-file-watchers')?.split(',').filter(Boolean) ?? []; + return ( + sessionStorage + .getItem("workspace-file-watchers") + ?.split(",") + .filter(Boolean) ?? [] + ); } function setWatchKeys(keys: string[]) { - sessionStorage.setItem('workspace-file-watchers', keys.join(',')); + sessionStorage.setItem("workspace-file-watchers", keys.join(",")); } function addWatchKey(key: string) { @@ -79,6 +88,6 @@ function removeWatchKey(key: string) { // On page load, unlisten to all zombie watchers const keys = getWatchKeys(); if (keys.length > 0) { - console.log('Unsubscribing to zombie file watchers', keys); + console.log("Unsubscribing to zombie file watchers", keys); keys.forEach(unlistenToWatcher); } diff --git a/package-lock.json b/package-lock.json index f5b32ba5..a308f33d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "yaak-app", + "name": "yaak-monorepo", "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "yaak-app", + "name": "yaak-monorepo", "version": "0.0.0", "workspaces": [ "packages/common-lib", @@ -49,7 +49,8 @@ "plugins/template-function-request", "plugins/template-function-response", "plugins/themes-yaak", - "crates-tauri/yaak-app", + "crates-tauri/yaak-app-client", + "crates-tauri/yaak-app-proxy", "crates-tauri/yaak-fonts", "crates-tauri/yaak-license", "crates-tauri/yaak-mac-window", @@ -61,7 +62,8 @@ "crates/yaak-sync", "crates/yaak-templates", "crates/yaak-ws", - "src-web" + "apps/yaak-client", + "apps/yaak-proxy" ], "dependencies": { "@codemirror/lang-go": "^6.0.1", @@ -82,8 +84,159 @@ "vitest": "^3.2.4" } }, - "crates-tauri/yaak-app": { - "name": "@yaakapp-internal/tauri", + "apps/yaak-client": { + "name": "@yaakapp/yaak-client", + "version": "1.0.0", + "dependencies": { + "@codemirror/commands": "^6.8.1", + "@codemirror/lang-javascript": "^6.2.4", + "@codemirror/lang-json": "^6.0.1", + "@codemirror/lang-markdown": "^6.3.2", + "@codemirror/lang-xml": "^6.1.0", + "@codemirror/lang-yaml": "^6.1.2", + "@codemirror/language": "^6.11.0", + "@codemirror/merge": "^6.11.2", + "@codemirror/search": "^6.5.11", + "@dnd-kit/core": "^6.3.1", + "@gilbarbara/deep-equal": "^0.3.1", + "@lezer/highlight": "^1.1.3", + "@lezer/lr": "^1.3.3", + "@mjackson/multipart-parser": "^0.10.1", + "@prantlf/jsonlint": "^16.0.0", + "@replit/codemirror-emacs": "^6.1.0", + "@replit/codemirror-vim": "^6.3.0", + "@replit/codemirror-vscode-keymap": "^6.0.2", + "@tanstack/react-query": "^5.90.5", + "@tanstack/react-router": "^1.133.13", + "@tanstack/react-virtual": "^3.13.12", + "@tauri-apps/api": "^2.9.1", + "@tauri-apps/plugin-clipboard-manager": "^2.3.2", + "@tauri-apps/plugin-dialog": "^2.4.2", + "@tauri-apps/plugin-fs": "^2.4.4", + "@tauri-apps/plugin-log": "^2.7.1", + "@tauri-apps/plugin-opener": "^2.5.2", + "@tauri-apps/plugin-os": "^2.3.2", + "@tauri-apps/plugin-shell": "^2.3.3", + "buffer": "^6.0.3", + "classnames": "^2.5.1", + "cm6-graphql": "^0.2.1", + "codemirror-json-schema": "0.6.1", + "date-fns": "^4.1.0", + "deep-equal": "^2.2.3", + "eventemitter3": "^5.0.1", + "focus-trap-react": "^11.0.4", + "format-graphql": "^1.5.0", + "fuzzbunny": "^1.0.1", + "hexy": "^0.3.5", + "history": "^5.3.0", + "jotai": "^2.12.2", + "js-md5": "^0.8.3", + "lucide-react": "^0.525.0", + "mime": "^4.0.4", + "motion": "^12.4.7", + "nanoid": "^5.0.9", + "papaparse": "^5.4.1", + "parse-color": "^1.0.0", + "react": "^19.1.0", + "react-colorful": "^5.6.1", + "react-dom": "^19.1.0", + "react-markdown": "^10.1.0", + "react-pdf": "^10.0.1", + "react-syntax-highlighter": "^16.1.0", + "react-use": "^17.6.0", + "rehype-stringify": "^10.0.1", + "remark-frontmatter": "^5.0.0", + "remark-gfm": "^4.0.1", + "slugify": "^1.6.6", + "uuid": "^11.1.0", + "vkbeautify": "^0.99.3", + "whatwg-mimetype": "^4.0.0", + "yaml": "^2.6.1" + }, + "devDependencies": { + "@lezer/generator": "^1.8.0", + "@tailwindcss/container-queries": "^0.1.1", + "@tailwindcss/nesting": "^0.0.0-insiders.565cd3e", + "@tanstack/router-plugin": "^1.127.5", + "@types/node": "^24.0.13", + "@types/papaparse": "^5.3.16", + "@types/parse-color": "^1.0.3", + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.6", + "@types/react-syntax-highlighter": "^15.5.13", + "@types/uuid": "^10.0.0", + "@types/whatwg-mimetype": "^3.0.2", + "@vitejs/plugin-react": "^4.6.0", + "autoprefixer": "^10.4.21", + "decompress": "^4.2.1", + "internal-ip": "^8.0.0", + "postcss": "^8.5.6", + "postcss-nesting": "^13.0.2", + "tailwindcss": "^3.4.17", + "vite": "^7.0.8", + "vite-plugin-static-copy": "^3.1.2", + "vite-plugin-svgr": "^4.3.0", + "vite-plugin-top-level-await": "^1.5.0", + "vite-plugin-wasm": "^3.5.0" + } + }, + "apps/yaak-client/node_modules/@types/node": { + "version": "24.10.4", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "apps/yaak-client/node_modules/nanoid": { + "version": "5.1.6", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, + "apps/yaak-client/node_modules/uuid": { + "version": "11.1.0", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "apps/yaak-proxy": { + "name": "@yaakapp/yaak-proxy", + "version": "1.0.0", + "dependencies": { + "@tauri-apps/api": "^2.9.1", + "react": "^19.1.0", + "react-dom": "^19.1.0" + }, + "devDependencies": { + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.6", + "@vitejs/plugin-react": "^4.6.0", + "typescript": "^5.8.3", + "vite": "^7.0.8" + } + }, + "crates-tauri/yaak-app-client": { + "name": "@yaakapp-internal/tauri-client", + "version": "1.0.0" + }, + "crates-tauri/yaak-app-proxy": { + "name": "@yaakapp-internal/tauri-proxy", "version": "1.0.0" }, "crates-tauri/yaak-fonts": { @@ -4282,8 +4435,12 @@ "resolved": "crates/yaak-sync", "link": true }, - "node_modules/@yaakapp-internal/tauri": { - "resolved": "crates-tauri/yaak-app", + "node_modules/@yaakapp-internal/tauri-client": { + "resolved": "crates-tauri/yaak-app-client", + "link": true + }, + "node_modules/@yaakapp-internal/tauri-proxy": { + "resolved": "crates-tauri/yaak-app-proxy", "link": true }, "node_modules/@yaakapp-internal/templates": { @@ -4298,10 +4455,6 @@ "resolved": "packages/plugin-runtime-types", "link": true }, - "node_modules/@yaakapp/app": { - "resolved": "src-web", - "link": true - }, "node_modules/@yaakapp/cli": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/@yaakapp/cli/-/cli-0.5.1.tgz", @@ -4399,6 +4552,14 @@ "win32" ] }, + "node_modules/@yaakapp/yaak-client": { + "resolved": "apps/yaak-client", + "link": true + }, + "node_modules/@yaakapp/yaak-proxy": { + "resolved": "apps/yaak-proxy", + "link": true + }, "node_modules/accepts": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", @@ -16300,137 +16461,6 @@ "plugins/themes-yaak": { "name": "@yaak/themes-yaak", "version": "0.1.0" - }, - "src-web": { - "name": "@yaakapp/app", - "version": "1.0.0", - "dependencies": { - "@codemirror/commands": "^6.8.1", - "@codemirror/lang-javascript": "^6.2.4", - "@codemirror/lang-json": "^6.0.1", - "@codemirror/lang-markdown": "^6.3.2", - "@codemirror/lang-xml": "^6.1.0", - "@codemirror/lang-yaml": "^6.1.2", - "@codemirror/language": "^6.11.0", - "@codemirror/merge": "^6.11.2", - "@codemirror/search": "^6.5.11", - "@dnd-kit/core": "^6.3.1", - "@gilbarbara/deep-equal": "^0.3.1", - "@lezer/highlight": "^1.1.3", - "@lezer/lr": "^1.3.3", - "@mjackson/multipart-parser": "^0.10.1", - "@prantlf/jsonlint": "^16.0.0", - "@replit/codemirror-emacs": "^6.1.0", - "@replit/codemirror-vim": "^6.3.0", - "@replit/codemirror-vscode-keymap": "^6.0.2", - "@tanstack/react-query": "^5.90.5", - "@tanstack/react-router": "^1.133.13", - "@tanstack/react-virtual": "^3.13.12", - "@tauri-apps/api": "^2.9.1", - "@tauri-apps/plugin-clipboard-manager": "^2.3.2", - "@tauri-apps/plugin-dialog": "^2.4.2", - "@tauri-apps/plugin-fs": "^2.4.4", - "@tauri-apps/plugin-log": "^2.7.1", - "@tauri-apps/plugin-opener": "^2.5.2", - "@tauri-apps/plugin-os": "^2.3.2", - "@tauri-apps/plugin-shell": "^2.3.3", - "buffer": "^6.0.3", - "classnames": "^2.5.1", - "cm6-graphql": "^0.2.1", - "codemirror-json-schema": "0.6.1", - "date-fns": "^4.1.0", - "deep-equal": "^2.2.3", - "eventemitter3": "^5.0.1", - "focus-trap-react": "^11.0.4", - "format-graphql": "^1.5.0", - "fuzzbunny": "^1.0.1", - "hexy": "^0.3.5", - "history": "^5.3.0", - "jotai": "^2.12.2", - "js-md5": "^0.8.3", - "lucide-react": "^0.525.0", - "mime": "^4.0.4", - "motion": "^12.4.7", - "nanoid": "^5.0.9", - "papaparse": "^5.4.1", - "parse-color": "^1.0.0", - "react": "^19.1.0", - "react-colorful": "^5.6.1", - "react-dom": "^19.1.0", - "react-markdown": "^10.1.0", - "react-pdf": "^10.0.1", - "react-syntax-highlighter": "^16.1.0", - "react-use": "^17.6.0", - "rehype-stringify": "^10.0.1", - "remark-frontmatter": "^5.0.0", - "remark-gfm": "^4.0.1", - "slugify": "^1.6.6", - "uuid": "^11.1.0", - "vkbeautify": "^0.99.3", - "whatwg-mimetype": "^4.0.0", - "yaml": "^2.6.1" - }, - "devDependencies": { - "@lezer/generator": "^1.8.0", - "@tailwindcss/container-queries": "^0.1.1", - "@tailwindcss/nesting": "^0.0.0-insiders.565cd3e", - "@tanstack/router-plugin": "^1.127.5", - "@types/node": "^24.0.13", - "@types/papaparse": "^5.3.16", - "@types/parse-color": "^1.0.3", - "@types/react": "^19.1.8", - "@types/react-dom": "^19.1.6", - "@types/react-syntax-highlighter": "^15.5.13", - "@types/uuid": "^10.0.0", - "@types/whatwg-mimetype": "^3.0.2", - "@vitejs/plugin-react": "^4.6.0", - "autoprefixer": "^10.4.21", - "decompress": "^4.2.1", - "internal-ip": "^8.0.0", - "postcss": "^8.5.6", - "postcss-nesting": "^13.0.2", - "tailwindcss": "^3.4.17", - "vite": "^7.0.8", - "vite-plugin-static-copy": "^3.1.2", - "vite-plugin-svgr": "^4.3.0", - "vite-plugin-top-level-await": "^1.5.0", - "vite-plugin-wasm": "^3.5.0" - } - }, - "src-web/node_modules/@types/node": { - "version": "24.10.4", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "src-web/node_modules/nanoid": { - "version": "5.1.6", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.js" - }, - "engines": { - "node": "^18 || >=20" - } - }, - "src-web/node_modules/uuid": { - "version": "11.1.0", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/esm/bin/uuid" - } } } } diff --git a/package.json b/package.json index 3467c2b8..f758d6fb 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "yaak-app", + "name": "yaak-monorepo", "private": true, "version": "0.0.0", "repository": { @@ -48,7 +48,8 @@ "plugins/template-function-request", "plugins/template-function-response", "plugins/themes-yaak", - "crates-tauri/yaak-app", + "crates-tauri/yaak-app-client", + "crates-tauri/yaak-app-proxy", "crates-tauri/yaak-fonts", "crates-tauri/yaak-license", "crates-tauri/yaak-mac-window", @@ -60,20 +61,23 @@ "crates/yaak-sync", "crates/yaak-templates", "crates/yaak-ws", - "src-web" + "apps/yaak-client", + "apps/yaak-proxy" ], "scripts": { "prepare": "husky", "init": "npm install && npm run bootstrap", - "start": "npm run app-dev", - "app-build": "tauri build", - "app-dev": "node scripts/run-dev.mjs", + "start": "npm run client:dev", + "client:build": "tauri build --config crates-tauri/yaak-app-client/tauri.conf.json", + "client:dev": "node scripts/run-dev.mjs client", + "proxy:build": "tauri build --config crates-tauri/yaak-app-proxy/tauri.conf.json", + "proxy:dev": "node scripts/run-dev.mjs proxy", "migration": "node scripts/create-migration.cjs", "build": "npm run --workspaces --if-present build", "test": "npm run --workspaces --if-present test", - "icons": "run-p icons:*", - "icons:dev": "tauri icon crates-tauri/yaak-app/icons/icon-dev.png --output crates-tauri/yaak-app/icons/dev", - "icons:release": "tauri icon crates-tauri/yaak-app/icons/icon.png --output crates-tauri/yaak-app/icons/release", + "icons": "run-p client:icons:*", + "client:icons:dev": "tauri icon crates-tauri/yaak-app-client/icons/icon-dev.png --output crates-tauri/yaak-app-client/icons/dev", + "client:icons:release": "tauri icon crates-tauri/yaak-app-client/icons/icon.png --output crates-tauri/yaak-app-client/icons/release", "bootstrap": "run-s bootstrap:*", "bootstrap:install-wasm-pack": "node scripts/install-wasm-pack.cjs", "bootstrap:build": "npm run build", @@ -88,8 +92,10 @@ "format": "biome format --write .", "replace-version": "node scripts/replace-version.cjs", "tauri": "tauri", - "tauri-before-build": "npm run bootstrap", - "tauri-before-dev": "node scripts/run-workspaces-dev.mjs" + "client:tauri-before-build": "npm run bootstrap", + "client:tauri-before-dev": "node scripts/run-workspaces-dev.mjs apps/yaak-client", + "proxy:tauri-before-build": "npm run bootstrap", + "proxy:tauri-before-dev": "node scripts/run-workspaces-dev.mjs apps/yaak-proxy" }, "overrides": { "js-yaml": "^4.1.1" diff --git a/packages/plugin-runtime/package.json b/packages/plugin-runtime/package.json index fc634785..a1b5f022 100644 --- a/packages/plugin-runtime/package.json +++ b/packages/plugin-runtime/package.json @@ -3,7 +3,7 @@ "scripts": { "bootstrap": "npm run build", "build": "run-p build:*", - "build:main": "esbuild src/index.ts --bundle --platform=node --outfile=../../crates-tauri/yaak-app/vendored/plugin-runtime/index.cjs" + "build:main": "esbuild src/index.ts --bundle --platform=node --outfile=../../crates-tauri/yaak-app-client/vendored/plugin-runtime/index.cjs" }, "dependencies": { "ws": "^8.18.0" diff --git a/scripts/replace-version.cjs b/scripts/replace-version.cjs index f5bc6edc..09e0bba2 100644 --- a/scripts/replace-version.cjs +++ b/scripts/replace-version.cjs @@ -1,15 +1,18 @@ -const path = require('path'); -const fs = require('fs'); +const path = require("path"); +const fs = require("fs"); -const version = process.env.YAAK_VERSION?.replace('v', ''); +const version = process.env.YAAK_VERSION?.replace("v", ""); if (!version) { - throw new Error('YAAK_VERSION environment variable not set') + throw new Error("YAAK_VERSION environment variable not set"); } -const tauriConfigPath = path.join(__dirname, '../crates-tauri/yaak-app/tauri.conf.json'); -const tauriConfig = JSON.parse(fs.readFileSync(tauriConfigPath, 'utf8')); +const tauriConfigPath = path.join( + __dirname, + "../crates-tauri/yaak-app-client/tauri.conf.json", +); +const tauriConfig = JSON.parse(fs.readFileSync(tauriConfigPath, "utf8")); tauriConfig.version = version; -console.log('Writing version ' + version + ' to ' + tauriConfigPath) +console.log("Writing version " + version + " to " + tauriConfigPath); fs.writeFileSync(tauriConfigPath, JSON.stringify(tauriConfig, null, 2)); diff --git a/scripts/run-workspaces-dev.mjs b/scripts/run-workspaces-dev.mjs index 563d93cf..dc2e87f3 100644 --- a/scripts/run-workspaces-dev.mjs +++ b/scripts/run-workspaces-dev.mjs @@ -1,32 +1,39 @@ #!/usr/bin/env node /** - * Runs `npm run dev` in parallel for all workspaces that have a dev script. + * Runs `npm run dev` in parallel for the provided workspaces, or all + * workspaces with a dev script when none are specified. * Handles cleanup of child processes on exit. */ -import { spawn } from 'child_process'; -import fs from 'fs'; -import path from 'path'; -import { fileURLToPath } from 'url'; +import { spawn } from "child_process"; +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); -const rootDir = path.join(__dirname, '..'); +const rootDir = path.join(__dirname, ".."); // Read root package.json to get workspaces -const rootPkg = JSON.parse(fs.readFileSync(path.join(rootDir, 'package.json'), 'utf8')); +const rootPkg = JSON.parse( + fs.readFileSync(path.join(rootDir, "package.json"), "utf8"), +); const workspaces = rootPkg.workspaces || []; -// Find all workspaces with a dev script -const workspacesWithDev = workspaces.filter((ws) => { - const pkgPath = path.join(rootDir, ws, 'package.json'); +const requestedWorkspaces = process.argv.slice(2); +const workspaceCandidates = + requestedWorkspaces.length > 0 ? requestedWorkspaces : workspaces; + +// Find all candidate workspaces with a dev script +const workspacesWithDev = workspaceCandidates.filter((ws) => { + const pkgPath = path.join(rootDir, ws, "package.json"); if (!fs.existsSync(pkgPath)) return false; - const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8')); + const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8")); return pkg.scripts?.dev != null; }); if (workspacesWithDev.length === 0) { - console.log('No workspaces with dev script found'); + console.log("No workspaces with dev script found"); process.exit(0); } @@ -37,13 +44,13 @@ const children = []; // Spawn all dev processes for (const ws of workspacesWithDev) { const cwd = path.join(rootDir, ws); - const child = spawn('npm', ['run', 'dev'], { + const child = spawn("npm", ["run", "dev"], { cwd, - stdio: 'inherit', - shell: process.platform === 'win32', + stdio: "inherit", + shell: process.platform === "win32", }); - child.on('error', (err) => { + child.on("error", (err) => { console.error(`Error in ${ws}:`, err.message); }); @@ -55,27 +62,27 @@ function cleanup() { for (const { ws, child } of children) { if (child.exitCode === null) { // Process still running - if (process.platform === 'win32') { - spawn('taskkill', ['/pid', child.pid, '/f', '/t'], { shell: true }); + if (process.platform === "win32") { + spawn("taskkill", ["/pid", child.pid, "/f", "/t"], { shell: true }); } else { - child.kill('SIGTERM'); + child.kill("SIGTERM"); } } } } // Handle various exit signals -process.on('SIGINT', () => { +process.on("SIGINT", () => { cleanup(); process.exit(0); }); -process.on('SIGTERM', () => { +process.on("SIGTERM", () => { cleanup(); process.exit(0); }); -process.on('exit', cleanup); +process.on("exit", cleanup); // Keep the process running process.stdin.resume(); diff --git a/scripts/vendor-plugins.cjs b/scripts/vendor-plugins.cjs index 6b900929..7527750b 100644 --- a/scripts/vendor-plugins.cjs +++ b/scripts/vendor-plugins.cjs @@ -1,31 +1,37 @@ -const { readdirSync, cpSync, existsSync, mkdirSync } = require('node:fs'); -const path = require('node:path'); +const { readdirSync, cpSync, existsSync, mkdirSync } = require("node:fs"); +const path = require("node:path"); -const pluginsDir = path.join(__dirname, '..', 'plugins'); -const externalPluginsDir = path.join(__dirname, '..', 'plugins-external'); +const pluginsDir = path.join(__dirname, "..", "plugins"); +const externalPluginsDir = path.join(__dirname, "..", "plugins-external"); // Get list of external (non-bundled) plugins const externalPlugins = new Set(); if (existsSync(externalPluginsDir)) { for (const name of readdirSync(externalPluginsDir)) { - if (!name.startsWith('.')) { + if (!name.startsWith(".")) { externalPlugins.add(name); } } } -console.log('Copying Yaak plugins to', pluginsDir); +console.log("Copying Yaak plugins to", pluginsDir); for (const name of readdirSync(pluginsDir)) { const dir = path.join(pluginsDir, name); - if (name.startsWith('.')) continue; + if (name.startsWith(".")) continue; if (externalPlugins.has(name)) { console.log(`Skipping ${name} (external plugin)`); continue; } - const destDir = path.join(__dirname, '../crates-tauri/yaak-app/vendored/plugins/', name); + const destDir = path.join( + __dirname, + "../crates-tauri/yaak-app-client/vendored/plugins/", + name, + ); mkdirSync(destDir, { recursive: true }); console.log(`Copying ${name} to ${destDir}`); - cpSync(path.join(dir, 'package.json'), path.join(destDir, 'package.json')); - cpSync(path.join(dir, 'build'), path.join(destDir, 'build'), { recursive: true }); + cpSync(path.join(dir, "package.json"), path.join(destDir, "package.json")); + cpSync(path.join(dir, "build"), path.join(destDir, "build"), { + recursive: true, + }); } diff --git a/src-web/lib/atoms.ts b/src-web/lib/atoms.ts deleted file mode 100644 index 71dfa991..00000000 --- a/src-web/lib/atoms.ts +++ /dev/null @@ -1,22 +0,0 @@ -import deepEqual from '@gilbarbara/deep-equal'; -import type { UpdateInfo } from '@yaakapp-internal/tauri'; -import type { Atom } from 'jotai'; -import { atom } from 'jotai'; -import { selectAtom } from 'jotai/utils'; -import type { SplitLayoutLayout } from '../components/core/SplitLayout'; -import { atomWithKVStorage } from './atoms/atomWithKVStorage'; - -export function deepEqualAtom(a: Atom) { - return selectAtom( - a, - (v) => v, - (a, b) => deepEqual(a, b), - ); -} - -export const workspaceLayoutAtom = atomWithKVStorage( - 'workspace_layout', - 'horizontal', -); - -export const updateAvailableAtom = atom | null>(null); diff --git a/src-web/lib/initGlobalListeners.tsx b/src-web/lib/initGlobalListeners.tsx deleted file mode 100644 index 796c4234..00000000 --- a/src-web/lib/initGlobalListeners.tsx +++ /dev/null @@ -1,298 +0,0 @@ -import { emit } from '@tauri-apps/api/event'; -import { openUrl } from '@tauri-apps/plugin-opener'; -import { debounce } from '@yaakapp-internal/lib'; -import type { - FormInput, - InternalEvent, - JsonPrimitive, - ShowToastRequest, -} from '@yaakapp-internal/plugins'; -import { updateAllPlugins } from '@yaakapp-internal/plugins'; -import type { - PluginUpdateNotification, - UpdateInfo, - UpdateResponse, - YaakNotification, -} from '@yaakapp-internal/tauri'; -import { openSettings } from '../commands/openSettings'; -import { Button } from '../components/core/Button'; -import { ButtonInfiniteLoading } from '../components/core/ButtonInfiniteLoading'; -import { Icon } from '../components/core/Icon'; -import { HStack, VStack } from '../components/core/Stacks'; - -// Listen for toasts -import { listenToTauriEvent } from '../hooks/useListenToTauriEvent'; -import { updateAvailableAtom } from './atoms'; -import { stringToColor } from './color'; -import { generateId } from './generateId'; -import { jotaiStore } from './jotai'; -import { showPrompt } from './prompt'; -import { showPromptForm } from './prompt-form'; -import { invokeCmd } from './tauri'; -import { showToast } from './toast'; - -export function initGlobalListeners() { - listenToTauriEvent('show_toast', (event) => { - showToast({ ...event.payload }); - }); - - listenToTauriEvent('settings', () => openSettings.mutate(null)); - - // Track active dynamic form dialogs so follow-up input updates can reach them - const activeForms = new Map void>(); - - // Listen for plugin events - listenToTauriEvent('plugin_event', async ({ payload: event }) => { - if (event.payload.type === 'prompt_text_request') { - const value = await showPrompt(event.payload); - const result: InternalEvent = { - id: generateId(), - replyId: event.id, - pluginName: event.pluginName, - pluginRefId: event.pluginRefId, - context: event.context, - payload: { - type: 'prompt_text_response', - value, - }, - }; - await emit(event.id, result); - } else if (event.payload.type === 'prompt_form_request') { - if (event.replyId != null) { - // Follow-up update from plugin runtime — update the active dialog's inputs - const updateInputs = activeForms.get(event.replyId); - if (updateInputs) { - updateInputs(event.payload.inputs); - } - return; - } - - // Initial request — show the dialog with bidirectional support - const emitFormResponse = (values: Record | null, done: boolean) => { - const result: InternalEvent = { - id: generateId(), - replyId: event.id, - pluginName: event.pluginName, - pluginRefId: event.pluginRefId, - context: event.context, - payload: { - type: 'prompt_form_response', - values, - done, - }, - }; - emit(event.id, result); - }; - - const values = await showPromptForm({ - id: event.payload.id, - title: event.payload.title, - description: event.payload.description, - size: event.payload.size, - inputs: event.payload.inputs, - confirmText: event.payload.confirmText, - cancelText: event.payload.cancelText, - onValuesChange: debounce((values) => emitFormResponse(values, false), 150), - onInputsUpdated: (cb) => activeForms.set(event.id, cb), - }); - - // Clean up and send final response - activeForms.delete(event.id); - emitFormResponse(values, true); - } - }); - - listenToTauriEvent('update_installed', async ({ payload: version }) => { - console.log('Got update installed event', version); - showUpdateInstalledToast(version); - }); - - // Listen for update events - listenToTauriEvent('update_available', async ({ payload }) => { - console.log('Got update available', payload); - showUpdateAvailableToast(payload); - }); - - listenToTauriEvent('notification', ({ payload }) => { - console.log('Got notification event', payload); - showNotificationToast(payload); - }); - - // Listen for plugin update events - listenToTauriEvent('plugin_updates_available', ({ payload }) => { - console.log('Got plugin updates event', payload); - showPluginUpdatesToast(payload); - }); -} - -function showUpdateInstalledToast(version: string) { - const UPDATE_TOAST_ID = 'update-info'; - - showToast({ - id: UPDATE_TOAST_ID, - color: 'primary', - timeout: null, - message: ( - -

Yaak {version} was installed

-

Start using the new version now?

-
- ), - action: ({ hide }) => ( - { - hide(); - setTimeout(() => invokeCmd('cmd_restart', {}), 200); - }} - > - Relaunch Yaak - - ), - }); -} - -async function showUpdateAvailableToast(updateInfo: UpdateInfo) { - const UPDATE_TOAST_ID = 'update-info'; - const { version, replyEventId, downloaded } = updateInfo; - - jotaiStore.set(updateAvailableAtom, { version, downloaded }); - - // Acknowledge the event, so we don't time out and try the fallback update logic - await emit(replyEventId, { type: 'ack' }); - - showToast({ - id: UPDATE_TOAST_ID, - color: 'info', - timeout: null, - message: ( - -

Yaak {version} is available

-

- {downloaded ? 'Do you want to install' : 'Download and install'} the update? -

-
- ), - action: () => ( - - { - await emit(replyEventId, { type: 'action', action: 'install' }); - }} - > - {downloaded ? 'Install Now' : 'Download and Install'} - - - - ), - }); -} - -function showPluginUpdatesToast(updateInfo: PluginUpdateNotification) { - const PLUGIN_UPDATE_TOAST_ID = 'plugin-updates'; - const count = updateInfo.updateCount; - const pluginNames = updateInfo.plugins.map((p: { name: string }) => p.name); - - showToast({ - id: PLUGIN_UPDATE_TOAST_ID, - color: 'info', - timeout: null, - message: ( - -

- {count === 1 ? '1 plugin update' : `${count} plugin updates`} available -

-

- {count === 1 - ? pluginNames[0] - : `${pluginNames.slice(0, 2).join(', ')}${count > 2 ? `, and ${count - 2} more` : ''}`} -

-
- ), - action: ({ hide }) => ( - - { - const updated = await updateAllPlugins(); - hide(); - if (updated.length > 0) { - showToast({ - color: 'success', - message: `Successfully updated ${updated.length} plugin${updated.length === 1 ? '' : 's'}`, - }); - } - }} - > - Update All - - - - ), - }); -} - -function showNotificationToast(n: YaakNotification) { - const actionUrl = n.action?.url; - const actionLabel = n.action?.label; - showToast({ - id: n.id, - timeout: n.timeout ?? null, - color: stringToColor(n.color) ?? undefined, - message: ( - - {n.title &&

{n.title}

} -

{n.message}

-
- ), - onClose: () => { - invokeCmd('cmd_dismiss_notification', { notificationId: n.id }).catch(console.error); - }, - action: ({ hide }) => { - return actionLabel && actionUrl ? ( - - ) : null; - }, - }); -} diff --git a/src-web/vite.config.ts b/src-web/vite.config.ts deleted file mode 100644 index 857f182b..00000000 --- a/src-web/vite.config.ts +++ /dev/null @@ -1,61 +0,0 @@ -// @ts-ignore -import { tanstackRouter } from '@tanstack/router-plugin/vite'; -import react from '@vitejs/plugin-react'; -import { createRequire } from 'node:module'; -import path from 'node:path'; -import { defineConfig, normalizePath } from 'vite'; -import { viteStaticCopy } from 'vite-plugin-static-copy'; -import svgr from 'vite-plugin-svgr'; -import topLevelAwait from 'vite-plugin-top-level-await'; -import wasm from 'vite-plugin-wasm'; - -const require = createRequire(import.meta.url); -const cMapsDir = normalizePath( - path.join(path.dirname(require.resolve('pdfjs-dist/package.json')), 'cmaps'), -); -const standardFontsDir = normalizePath( - path.join(path.dirname(require.resolve('pdfjs-dist/package.json')), 'standard_fonts'), -); - -// https://vitejs.dev/config/ -export default defineConfig(async () => { - return { - plugins: [ - wasm(), - tanstackRouter({ - target: 'react', - routesDirectory: './routes', - generatedRouteTree: './routeTree.gen.ts', - autoCodeSplitting: true, - }), - svgr(), - react(), - topLevelAwait(), - viteStaticCopy({ - targets: [ - { src: cMapsDir, dest: '' }, - { src: standardFontsDir, dest: '' }, - ], - }), - ], - build: { - sourcemap: true, - outDir: '../dist', - emptyOutDir: true, - rollupOptions: { - output: { - // Make chunk names readable - chunkFileNames: 'assets/chunk-[name]-[hash].js', - entryFileNames: 'assets/entry-[name]-[hash].js', - assetFileNames: 'assets/asset-[name]-[hash][extname]', - }, - }, - }, - clearScreen: false, - server: { - port: parseInt(process.env.YAAK_DEV_PORT ?? '1420', 10), - strictPort: true, - }, - envPrefix: ['VITE_', 'TAURI_'], -}; -});