diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4e5b2d96d..f550b4b81 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,10 +29,10 @@ jobs: run: pnpm install --frozen-lockfile - name: Frontend format check - run: npx oxfmt --check "src/**/*.{ts,vue}" + run: npx oxfmt --check "apps/desktop/src/**/*.{ts,vue}" - name: TypeScript check - run: npx vue-tsc --noEmit + run: npx vue-tsc --noEmit --project apps/desktop/tsconfig.json - name: Frontend tests run: pnpm test:coverage diff --git a/components.json b/apps/desktop/components.json similarity index 91% rename from components.json rename to apps/desktop/components.json index 3a2ebf95c..2c03417c4 100644 --- a/components.json +++ b/apps/desktop/components.json @@ -5,7 +5,7 @@ "typescript": true, "tailwind": { "config": "", - "css": "src/styles/globals.css", + "css": "apps/desktop/src/styles/globals.css", "baseColor": "neutral", "cssVariables": true, "prefix": "" diff --git a/index.html b/apps/desktop/index.html similarity index 100% rename from index.html rename to apps/desktop/index.html diff --git a/public/favicon.png b/apps/desktop/public/favicon.png similarity index 100% rename from public/favicon.png rename to apps/desktop/public/favicon.png diff --git a/public/icons/ai/openai.svg b/apps/desktop/public/icons/ai/openai.svg similarity index 100% rename from public/icons/ai/openai.svg rename to apps/desktop/public/icons/ai/openai.svg diff --git a/public/icons/database/access.png b/apps/desktop/public/icons/database/access.png similarity index 100% rename from public/icons/database/access.png rename to apps/desktop/public/icons/database/access.png diff --git a/public/icons/database/apache_kylin.svg b/apps/desktop/public/icons/database/apache_kylin.svg similarity index 100% rename from public/icons/database/apache_kylin.svg rename to apps/desktop/public/icons/database/apache_kylin.svg diff --git a/public/icons/database/bigquery.svg b/apps/desktop/public/icons/database/bigquery.svg similarity index 100% rename from public/icons/database/bigquery.svg rename to apps/desktop/public/icons/database/bigquery.svg diff --git a/public/icons/database/cassandra.svg b/apps/desktop/public/icons/database/cassandra.svg similarity index 100% rename from public/icons/database/cassandra.svg rename to apps/desktop/public/icons/database/cassandra.svg diff --git a/public/icons/database/clickhouse.svg b/apps/desktop/public/icons/database/clickhouse.svg similarity index 100% rename from public/icons/database/clickhouse.svg rename to apps/desktop/public/icons/database/clickhouse.svg diff --git a/public/icons/database/cockroachdb.svg b/apps/desktop/public/icons/database/cockroachdb.svg similarity index 100% rename from public/icons/database/cockroachdb.svg rename to apps/desktop/public/icons/database/cockroachdb.svg diff --git a/public/icons/database/db2.svg b/apps/desktop/public/icons/database/db2.svg similarity index 100% rename from public/icons/database/db2.svg rename to apps/desktop/public/icons/database/db2.svg diff --git a/public/icons/database/dm.svg b/apps/desktop/public/icons/database/dm.svg similarity index 100% rename from public/icons/database/dm.svg rename to apps/desktop/public/icons/database/dm.svg diff --git a/public/icons/database/doris.svg b/apps/desktop/public/icons/database/doris.svg similarity index 100% rename from public/icons/database/doris.svg rename to apps/desktop/public/icons/database/doris.svg diff --git a/public/icons/database/duckdb.svg b/apps/desktop/public/icons/database/duckdb.svg similarity index 100% rename from public/icons/database/duckdb.svg rename to apps/desktop/public/icons/database/duckdb.svg diff --git a/public/icons/database/elasticsearch.svg b/apps/desktop/public/icons/database/elasticsearch.svg similarity index 100% rename from public/icons/database/elasticsearch.svg rename to apps/desktop/public/icons/database/elasticsearch.svg diff --git a/public/icons/database/gaussdb.svg b/apps/desktop/public/icons/database/gaussdb.svg similarity index 100% rename from public/icons/database/gaussdb.svg rename to apps/desktop/public/icons/database/gaussdb.svg diff --git a/public/icons/database/goldendb.png b/apps/desktop/public/icons/database/goldendb.png similarity index 100% rename from public/icons/database/goldendb.png rename to apps/desktop/public/icons/database/goldendb.png diff --git a/public/icons/database/h2.svg b/apps/desktop/public/icons/database/h2.svg similarity index 100% rename from public/icons/database/h2.svg rename to apps/desktop/public/icons/database/h2.svg diff --git a/public/icons/database/hive.svg b/apps/desktop/public/icons/database/hive.svg similarity index 100% rename from public/icons/database/hive.svg rename to apps/desktop/public/icons/database/hive.svg diff --git a/public/icons/database/informix.svg b/apps/desktop/public/icons/database/informix.svg similarity index 100% rename from public/icons/database/informix.svg rename to apps/desktop/public/icons/database/informix.svg diff --git a/public/icons/database/kingbase.svg b/apps/desktop/public/icons/database/kingbase.svg similarity index 100% rename from public/icons/database/kingbase.svg rename to apps/desktop/public/icons/database/kingbase.svg diff --git a/public/icons/database/mariadb.svg b/apps/desktop/public/icons/database/mariadb.svg similarity index 100% rename from public/icons/database/mariadb.svg rename to apps/desktop/public/icons/database/mariadb.svg diff --git a/public/icons/database/mongodb.svg b/apps/desktop/public/icons/database/mongodb.svg similarity index 100% rename from public/icons/database/mongodb.svg rename to apps/desktop/public/icons/database/mongodb.svg diff --git a/public/icons/database/mysql.svg b/apps/desktop/public/icons/database/mysql.svg similarity index 100% rename from public/icons/database/mysql.svg rename to apps/desktop/public/icons/database/mysql.svg diff --git a/public/icons/database/neo4j.svg b/apps/desktop/public/icons/database/neo4j.svg similarity index 100% rename from public/icons/database/neo4j.svg rename to apps/desktop/public/icons/database/neo4j.svg diff --git a/public/icons/database/oceanbase.svg b/apps/desktop/public/icons/database/oceanbase.svg similarity index 100% rename from public/icons/database/oceanbase.svg rename to apps/desktop/public/icons/database/oceanbase.svg diff --git a/public/icons/database/opengauss.svg b/apps/desktop/public/icons/database/opengauss.svg similarity index 100% rename from public/icons/database/opengauss.svg rename to apps/desktop/public/icons/database/opengauss.svg diff --git a/public/icons/database/oracle.svg b/apps/desktop/public/icons/database/oracle.svg similarity index 100% rename from public/icons/database/oracle.svg rename to apps/desktop/public/icons/database/oracle.svg diff --git a/public/icons/database/postgres.svg b/apps/desktop/public/icons/database/postgres.svg similarity index 100% rename from public/icons/database/postgres.svg rename to apps/desktop/public/icons/database/postgres.svg diff --git a/public/icons/database/presto.svg b/apps/desktop/public/icons/database/presto.svg similarity index 100% rename from public/icons/database/presto.svg rename to apps/desktop/public/icons/database/presto.svg diff --git a/public/icons/database/redis.svg b/apps/desktop/public/icons/database/redis.svg similarity index 100% rename from public/icons/database/redis.svg rename to apps/desktop/public/icons/database/redis.svg diff --git a/public/icons/database/redshift.svg b/apps/desktop/public/icons/database/redshift.svg similarity index 100% rename from public/icons/database/redshift.svg rename to apps/desktop/public/icons/database/redshift.svg diff --git a/public/icons/database/selectdb.svg b/apps/desktop/public/icons/database/selectdb.svg similarity index 100% rename from public/icons/database/selectdb.svg rename to apps/desktop/public/icons/database/selectdb.svg diff --git a/public/icons/database/snowflake.svg b/apps/desktop/public/icons/database/snowflake.svg similarity index 100% rename from public/icons/database/snowflake.svg rename to apps/desktop/public/icons/database/snowflake.svg diff --git a/public/icons/database/sqlite.svg b/apps/desktop/public/icons/database/sqlite.svg similarity index 100% rename from public/icons/database/sqlite.svg rename to apps/desktop/public/icons/database/sqlite.svg diff --git a/public/icons/database/sqlserver.svg b/apps/desktop/public/icons/database/sqlserver.svg similarity index 100% rename from public/icons/database/sqlserver.svg rename to apps/desktop/public/icons/database/sqlserver.svg diff --git a/public/icons/database/starrocks.svg b/apps/desktop/public/icons/database/starrocks.svg similarity index 100% rename from public/icons/database/starrocks.svg rename to apps/desktop/public/icons/database/starrocks.svg diff --git a/public/icons/database/sundb.svg b/apps/desktop/public/icons/database/sundb.svg similarity index 100% rename from public/icons/database/sundb.svg rename to apps/desktop/public/icons/database/sundb.svg diff --git a/public/icons/database/tdengine.svg b/apps/desktop/public/icons/database/tdengine.svg similarity index 100% rename from public/icons/database/tdengine.svg rename to apps/desktop/public/icons/database/tdengine.svg diff --git a/public/icons/database/tidb.svg b/apps/desktop/public/icons/database/tidb.svg similarity index 100% rename from public/icons/database/tidb.svg rename to apps/desktop/public/icons/database/tidb.svg diff --git a/public/icons/database/vastbase.png b/apps/desktop/public/icons/database/vastbase.png similarity index 100% rename from public/icons/database/vastbase.png rename to apps/desktop/public/icons/database/vastbase.png diff --git a/public/logo.png b/apps/desktop/public/logo.png similarity index 100% rename from public/logo.png rename to apps/desktop/public/logo.png diff --git a/src/App.vue b/apps/desktop/src/App.vue similarity index 100% rename from src/App.vue rename to apps/desktop/src/App.vue diff --git a/src/components/auth/LoginPage.vue b/apps/desktop/src/components/auth/LoginPage.vue similarity index 100% rename from src/components/auth/LoginPage.vue rename to apps/desktop/src/components/auth/LoginPage.vue diff --git a/src/components/chart/QueryChart.vue b/apps/desktop/src/components/chart/QueryChart.vue similarity index 100% rename from src/components/chart/QueryChart.vue rename to apps/desktop/src/components/chart/QueryChart.vue diff --git a/src/components/config/ConfigPassphraseDialog.vue b/apps/desktop/src/components/config/ConfigPassphraseDialog.vue similarity index 100% rename from src/components/config/ConfigPassphraseDialog.vue rename to apps/desktop/src/components/config/ConfigPassphraseDialog.vue diff --git a/src/components/config/DriverStoreDialog.vue b/apps/desktop/src/components/config/DriverStoreDialog.vue similarity index 100% rename from src/components/config/DriverStoreDialog.vue rename to apps/desktop/src/components/config/DriverStoreDialog.vue diff --git a/src/components/connection/ConnectionDialog.vue b/apps/desktop/src/components/connection/ConnectionDialog.vue similarity index 100% rename from src/components/connection/ConnectionDialog.vue rename to apps/desktop/src/components/connection/ConnectionDialog.vue diff --git a/src/components/connection/ConnectionErrorIndicator.vue b/apps/desktop/src/components/connection/ConnectionErrorIndicator.vue similarity index 100% rename from src/components/connection/ConnectionErrorIndicator.vue rename to apps/desktop/src/components/connection/ConnectionErrorIndicator.vue diff --git a/src/components/diagram/SchemaDiagramDialog.vue b/apps/desktop/src/components/diagram/SchemaDiagramDialog.vue similarity index 100% rename from src/components/diagram/SchemaDiagramDialog.vue rename to apps/desktop/src/components/diagram/SchemaDiagramDialog.vue diff --git a/src/components/diff/DataCompareDialog.vue b/apps/desktop/src/components/diff/DataCompareDialog.vue similarity index 100% rename from src/components/diff/DataCompareDialog.vue rename to apps/desktop/src/components/diff/DataCompareDialog.vue diff --git a/src/components/diff/SchemaDiffDialog.vue b/apps/desktop/src/components/diff/SchemaDiffDialog.vue similarity index 100% rename from src/components/diff/SchemaDiffDialog.vue rename to apps/desktop/src/components/diff/SchemaDiffDialog.vue diff --git a/src/components/editor/AiAssistant.vue b/apps/desktop/src/components/editor/AiAssistant.vue similarity index 100% rename from src/components/editor/AiAssistant.vue rename to apps/desktop/src/components/editor/AiAssistant.vue diff --git a/src/components/editor/ColumnInfoPanel.vue b/apps/desktop/src/components/editor/ColumnInfoPanel.vue similarity index 100% rename from src/components/editor/ColumnInfoPanel.vue rename to apps/desktop/src/components/editor/ColumnInfoPanel.vue diff --git a/src/components/editor/DangerConfirmDialog.vue b/apps/desktop/src/components/editor/DangerConfirmDialog.vue similarity index 100% rename from src/components/editor/DangerConfirmDialog.vue rename to apps/desktop/src/components/editor/DangerConfirmDialog.vue diff --git a/src/components/editor/EditorSettingsDialog.vue b/apps/desktop/src/components/editor/EditorSettingsDialog.vue similarity index 100% rename from src/components/editor/EditorSettingsDialog.vue rename to apps/desktop/src/components/editor/EditorSettingsDialog.vue diff --git a/src/components/editor/QueryEditor.vue b/apps/desktop/src/components/editor/QueryEditor.vue similarity index 100% rename from src/components/editor/QueryEditor.vue rename to apps/desktop/src/components/editor/QueryEditor.vue diff --git a/src/components/editor/QueryHistory.vue b/apps/desktop/src/components/editor/QueryHistory.vue similarity index 100% rename from src/components/editor/QueryHistory.vue rename to apps/desktop/src/components/editor/QueryHistory.vue diff --git a/src/components/explain/ExplainPlanNodeTree.vue b/apps/desktop/src/components/explain/ExplainPlanNodeTree.vue similarity index 100% rename from src/components/explain/ExplainPlanNodeTree.vue rename to apps/desktop/src/components/explain/ExplainPlanNodeTree.vue diff --git a/src/components/explain/ExplainPlanViewer.vue b/apps/desktop/src/components/explain/ExplainPlanViewer.vue similarity index 100% rename from src/components/explain/ExplainPlanViewer.vue rename to apps/desktop/src/components/explain/ExplainPlanViewer.vue diff --git a/src/components/export/DatabaseExportDialog.vue b/apps/desktop/src/components/export/DatabaseExportDialog.vue similarity index 100% rename from src/components/export/DatabaseExportDialog.vue rename to apps/desktop/src/components/export/DatabaseExportDialog.vue diff --git a/src/components/grid/DataGrid.vue b/apps/desktop/src/components/grid/DataGrid.vue similarity index 100% rename from src/components/grid/DataGrid.vue rename to apps/desktop/src/components/grid/DataGrid.vue diff --git a/src/components/icons/AiProviderLogo.vue b/apps/desktop/src/components/icons/AiProviderLogo.vue similarity index 100% rename from src/components/icons/AiProviderLogo.vue rename to apps/desktop/src/components/icons/AiProviderLogo.vue diff --git a/src/components/icons/DatabaseIcon.vue b/apps/desktop/src/components/icons/DatabaseIcon.vue similarity index 100% rename from src/components/icons/DatabaseIcon.vue rename to apps/desktop/src/components/icons/DatabaseIcon.vue diff --git a/src/components/import/TableImportDialog.vue b/apps/desktop/src/components/import/TableImportDialog.vue similarity index 100% rename from src/components/import/TableImportDialog.vue rename to apps/desktop/src/components/import/TableImportDialog.vue diff --git a/src/components/layout/AppDialogs.vue b/apps/desktop/src/components/layout/AppDialogs.vue similarity index 100% rename from src/components/layout/AppDialogs.vue rename to apps/desktop/src/components/layout/AppDialogs.vue diff --git a/src/components/layout/AppSidebar.vue b/apps/desktop/src/components/layout/AppSidebar.vue similarity index 100% rename from src/components/layout/AppSidebar.vue rename to apps/desktop/src/components/layout/AppSidebar.vue diff --git a/src/components/layout/AppTabBar.vue b/apps/desktop/src/components/layout/AppTabBar.vue similarity index 100% rename from src/components/layout/AppTabBar.vue rename to apps/desktop/src/components/layout/AppTabBar.vue diff --git a/src/components/layout/AppToolbar.vue b/apps/desktop/src/components/layout/AppToolbar.vue similarity index 100% rename from src/components/layout/AppToolbar.vue rename to apps/desktop/src/components/layout/AppToolbar.vue diff --git a/src/components/layout/ContentArea.vue b/apps/desktop/src/components/layout/ContentArea.vue similarity index 100% rename from src/components/layout/ContentArea.vue rename to apps/desktop/src/components/layout/ContentArea.vue diff --git a/src/components/layout/EditorToolbar.vue b/apps/desktop/src/components/layout/EditorToolbar.vue similarity index 100% rename from src/components/layout/EditorToolbar.vue rename to apps/desktop/src/components/layout/EditorToolbar.vue diff --git a/src/components/layout/UpdateDialog.vue b/apps/desktop/src/components/layout/UpdateDialog.vue similarity index 100% rename from src/components/layout/UpdateDialog.vue rename to apps/desktop/src/components/layout/UpdateDialog.vue diff --git a/src/components/layout/WelcomeScreen.vue b/apps/desktop/src/components/layout/WelcomeScreen.vue similarity index 100% rename from src/components/layout/WelcomeScreen.vue rename to apps/desktop/src/components/layout/WelcomeScreen.vue diff --git a/src/components/layout/WindowControls.vue b/apps/desktop/src/components/layout/WindowControls.vue similarity index 100% rename from src/components/layout/WindowControls.vue rename to apps/desktop/src/components/layout/WindowControls.vue diff --git a/src/components/lineage/FieldLineageDialog.vue b/apps/desktop/src/components/lineage/FieldLineageDialog.vue similarity index 100% rename from src/components/lineage/FieldLineageDialog.vue rename to apps/desktop/src/components/lineage/FieldLineageDialog.vue diff --git a/src/components/mongo/JsonEditNode.vue b/apps/desktop/src/components/mongo/JsonEditNode.vue similarity index 100% rename from src/components/mongo/JsonEditNode.vue rename to apps/desktop/src/components/mongo/JsonEditNode.vue diff --git a/src/components/mongo/MongoDocBrowser.vue b/apps/desktop/src/components/mongo/MongoDocBrowser.vue similarity index 100% rename from src/components/mongo/MongoDocBrowser.vue rename to apps/desktop/src/components/mongo/MongoDocBrowser.vue diff --git a/src/components/objects/ObjectBrowser.vue b/apps/desktop/src/components/objects/ObjectBrowser.vue similarity index 100% rename from src/components/objects/ObjectBrowser.vue rename to apps/desktop/src/components/objects/ObjectBrowser.vue diff --git a/src/components/redis/RedisKeyBrowser.vue b/apps/desktop/src/components/redis/RedisKeyBrowser.vue similarity index 100% rename from src/components/redis/RedisKeyBrowser.vue rename to apps/desktop/src/components/redis/RedisKeyBrowser.vue diff --git a/src/components/redis/RedisValueViewer.vue b/apps/desktop/src/components/redis/RedisValueViewer.vue similarity index 100% rename from src/components/redis/RedisValueViewer.vue rename to apps/desktop/src/components/redis/RedisValueViewer.vue diff --git a/src/components/search/DatabaseSearchDialog.vue b/apps/desktop/src/components/search/DatabaseSearchDialog.vue similarity index 100% rename from src/components/search/DatabaseSearchDialog.vue rename to apps/desktop/src/components/search/DatabaseSearchDialog.vue diff --git a/src/components/sidebar/ConnectionTree.vue b/apps/desktop/src/components/sidebar/ConnectionTree.vue similarity index 100% rename from src/components/sidebar/ConnectionTree.vue rename to apps/desktop/src/components/sidebar/ConnectionTree.vue diff --git a/src/components/sidebar/TreeItem.vue b/apps/desktop/src/components/sidebar/TreeItem.vue similarity index 100% rename from src/components/sidebar/TreeItem.vue rename to apps/desktop/src/components/sidebar/TreeItem.vue diff --git a/src/components/sidebar/VisibleDatabasesDialog.vue b/apps/desktop/src/components/sidebar/VisibleDatabasesDialog.vue similarity index 100% rename from src/components/sidebar/VisibleDatabasesDialog.vue rename to apps/desktop/src/components/sidebar/VisibleDatabasesDialog.vue diff --git a/src/components/sql-file/SqlFileExecutionDialog.vue b/apps/desktop/src/components/sql-file/SqlFileExecutionDialog.vue similarity index 100% rename from src/components/sql-file/SqlFileExecutionDialog.vue rename to apps/desktop/src/components/sql-file/SqlFileExecutionDialog.vue diff --git a/src/components/structure/TableStructureEditorDialog.vue b/apps/desktop/src/components/structure/TableStructureEditorDialog.vue similarity index 100% rename from src/components/structure/TableStructureEditorDialog.vue rename to apps/desktop/src/components/structure/TableStructureEditorDialog.vue diff --git a/src/components/transfer/DataTransferDialog.vue b/apps/desktop/src/components/transfer/DataTransferDialog.vue similarity index 100% rename from src/components/transfer/DataTransferDialog.vue rename to apps/desktop/src/components/transfer/DataTransferDialog.vue diff --git a/src/components/ui/badge/Badge.vue b/apps/desktop/src/components/ui/badge/Badge.vue similarity index 100% rename from src/components/ui/badge/Badge.vue rename to apps/desktop/src/components/ui/badge/Badge.vue diff --git a/src/components/ui/badge/index.ts b/apps/desktop/src/components/ui/badge/index.ts similarity index 100% rename from src/components/ui/badge/index.ts rename to apps/desktop/src/components/ui/badge/index.ts diff --git a/src/components/ui/button/Button.vue b/apps/desktop/src/components/ui/button/Button.vue similarity index 100% rename from src/components/ui/button/Button.vue rename to apps/desktop/src/components/ui/button/Button.vue diff --git a/src/components/ui/button/index.ts b/apps/desktop/src/components/ui/button/index.ts similarity index 100% rename from src/components/ui/button/index.ts rename to apps/desktop/src/components/ui/button/index.ts diff --git a/src/components/ui/context-menu/ContextMenu.vue b/apps/desktop/src/components/ui/context-menu/ContextMenu.vue similarity index 100% rename from src/components/ui/context-menu/ContextMenu.vue rename to apps/desktop/src/components/ui/context-menu/ContextMenu.vue diff --git a/src/components/ui/context-menu/ContextMenuCheckboxItem.vue b/apps/desktop/src/components/ui/context-menu/ContextMenuCheckboxItem.vue similarity index 100% rename from src/components/ui/context-menu/ContextMenuCheckboxItem.vue rename to apps/desktop/src/components/ui/context-menu/ContextMenuCheckboxItem.vue diff --git a/src/components/ui/context-menu/ContextMenuContent.vue b/apps/desktop/src/components/ui/context-menu/ContextMenuContent.vue similarity index 100% rename from src/components/ui/context-menu/ContextMenuContent.vue rename to apps/desktop/src/components/ui/context-menu/ContextMenuContent.vue diff --git a/src/components/ui/context-menu/ContextMenuGroup.vue b/apps/desktop/src/components/ui/context-menu/ContextMenuGroup.vue similarity index 100% rename from src/components/ui/context-menu/ContextMenuGroup.vue rename to apps/desktop/src/components/ui/context-menu/ContextMenuGroup.vue diff --git a/src/components/ui/context-menu/ContextMenuItem.vue b/apps/desktop/src/components/ui/context-menu/ContextMenuItem.vue similarity index 100% rename from src/components/ui/context-menu/ContextMenuItem.vue rename to apps/desktop/src/components/ui/context-menu/ContextMenuItem.vue diff --git a/src/components/ui/context-menu/ContextMenuLabel.vue b/apps/desktop/src/components/ui/context-menu/ContextMenuLabel.vue similarity index 100% rename from src/components/ui/context-menu/ContextMenuLabel.vue rename to apps/desktop/src/components/ui/context-menu/ContextMenuLabel.vue diff --git a/src/components/ui/context-menu/ContextMenuPortal.vue b/apps/desktop/src/components/ui/context-menu/ContextMenuPortal.vue similarity index 100% rename from src/components/ui/context-menu/ContextMenuPortal.vue rename to apps/desktop/src/components/ui/context-menu/ContextMenuPortal.vue diff --git a/src/components/ui/context-menu/ContextMenuRadioGroup.vue b/apps/desktop/src/components/ui/context-menu/ContextMenuRadioGroup.vue similarity index 100% rename from src/components/ui/context-menu/ContextMenuRadioGroup.vue rename to apps/desktop/src/components/ui/context-menu/ContextMenuRadioGroup.vue diff --git a/src/components/ui/context-menu/ContextMenuRadioItem.vue b/apps/desktop/src/components/ui/context-menu/ContextMenuRadioItem.vue similarity index 100% rename from src/components/ui/context-menu/ContextMenuRadioItem.vue rename to apps/desktop/src/components/ui/context-menu/ContextMenuRadioItem.vue diff --git a/src/components/ui/context-menu/ContextMenuSeparator.vue b/apps/desktop/src/components/ui/context-menu/ContextMenuSeparator.vue similarity index 100% rename from src/components/ui/context-menu/ContextMenuSeparator.vue rename to apps/desktop/src/components/ui/context-menu/ContextMenuSeparator.vue diff --git a/src/components/ui/context-menu/ContextMenuShortcut.vue b/apps/desktop/src/components/ui/context-menu/ContextMenuShortcut.vue similarity index 100% rename from src/components/ui/context-menu/ContextMenuShortcut.vue rename to apps/desktop/src/components/ui/context-menu/ContextMenuShortcut.vue diff --git a/src/components/ui/context-menu/ContextMenuSub.vue b/apps/desktop/src/components/ui/context-menu/ContextMenuSub.vue similarity index 100% rename from src/components/ui/context-menu/ContextMenuSub.vue rename to apps/desktop/src/components/ui/context-menu/ContextMenuSub.vue diff --git a/src/components/ui/context-menu/ContextMenuSubContent.vue b/apps/desktop/src/components/ui/context-menu/ContextMenuSubContent.vue similarity index 100% rename from src/components/ui/context-menu/ContextMenuSubContent.vue rename to apps/desktop/src/components/ui/context-menu/ContextMenuSubContent.vue diff --git a/src/components/ui/context-menu/ContextMenuSubTrigger.vue b/apps/desktop/src/components/ui/context-menu/ContextMenuSubTrigger.vue similarity index 100% rename from src/components/ui/context-menu/ContextMenuSubTrigger.vue rename to apps/desktop/src/components/ui/context-menu/ContextMenuSubTrigger.vue diff --git a/src/components/ui/context-menu/ContextMenuTrigger.vue b/apps/desktop/src/components/ui/context-menu/ContextMenuTrigger.vue similarity index 100% rename from src/components/ui/context-menu/ContextMenuTrigger.vue rename to apps/desktop/src/components/ui/context-menu/ContextMenuTrigger.vue diff --git a/src/components/ui/context-menu/index.ts b/apps/desktop/src/components/ui/context-menu/index.ts similarity index 100% rename from src/components/ui/context-menu/index.ts rename to apps/desktop/src/components/ui/context-menu/index.ts diff --git a/src/components/ui/dialog/Dialog.vue b/apps/desktop/src/components/ui/dialog/Dialog.vue similarity index 100% rename from src/components/ui/dialog/Dialog.vue rename to apps/desktop/src/components/ui/dialog/Dialog.vue diff --git a/src/components/ui/dialog/DialogClose.vue b/apps/desktop/src/components/ui/dialog/DialogClose.vue similarity index 100% rename from src/components/ui/dialog/DialogClose.vue rename to apps/desktop/src/components/ui/dialog/DialogClose.vue diff --git a/src/components/ui/dialog/DialogContent.vue b/apps/desktop/src/components/ui/dialog/DialogContent.vue similarity index 100% rename from src/components/ui/dialog/DialogContent.vue rename to apps/desktop/src/components/ui/dialog/DialogContent.vue diff --git a/src/components/ui/dialog/DialogDescription.vue b/apps/desktop/src/components/ui/dialog/DialogDescription.vue similarity index 100% rename from src/components/ui/dialog/DialogDescription.vue rename to apps/desktop/src/components/ui/dialog/DialogDescription.vue diff --git a/src/components/ui/dialog/DialogFooter.vue b/apps/desktop/src/components/ui/dialog/DialogFooter.vue similarity index 100% rename from src/components/ui/dialog/DialogFooter.vue rename to apps/desktop/src/components/ui/dialog/DialogFooter.vue diff --git a/src/components/ui/dialog/DialogHeader.vue b/apps/desktop/src/components/ui/dialog/DialogHeader.vue similarity index 100% rename from src/components/ui/dialog/DialogHeader.vue rename to apps/desktop/src/components/ui/dialog/DialogHeader.vue diff --git a/src/components/ui/dialog/DialogOverlay.vue b/apps/desktop/src/components/ui/dialog/DialogOverlay.vue similarity index 100% rename from src/components/ui/dialog/DialogOverlay.vue rename to apps/desktop/src/components/ui/dialog/DialogOverlay.vue diff --git a/src/components/ui/dialog/DialogScrollContent.vue b/apps/desktop/src/components/ui/dialog/DialogScrollContent.vue similarity index 100% rename from src/components/ui/dialog/DialogScrollContent.vue rename to apps/desktop/src/components/ui/dialog/DialogScrollContent.vue diff --git a/src/components/ui/dialog/DialogTitle.vue b/apps/desktop/src/components/ui/dialog/DialogTitle.vue similarity index 100% rename from src/components/ui/dialog/DialogTitle.vue rename to apps/desktop/src/components/ui/dialog/DialogTitle.vue diff --git a/src/components/ui/dialog/DialogTrigger.vue b/apps/desktop/src/components/ui/dialog/DialogTrigger.vue similarity index 100% rename from src/components/ui/dialog/DialogTrigger.vue rename to apps/desktop/src/components/ui/dialog/DialogTrigger.vue diff --git a/src/components/ui/dialog/index.ts b/apps/desktop/src/components/ui/dialog/index.ts similarity index 100% rename from src/components/ui/dialog/index.ts rename to apps/desktop/src/components/ui/dialog/index.ts diff --git a/src/components/ui/dropdown-menu/DropdownMenu.vue b/apps/desktop/src/components/ui/dropdown-menu/DropdownMenu.vue similarity index 100% rename from src/components/ui/dropdown-menu/DropdownMenu.vue rename to apps/desktop/src/components/ui/dropdown-menu/DropdownMenu.vue diff --git a/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue b/apps/desktop/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue similarity index 100% rename from src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue rename to apps/desktop/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue diff --git a/src/components/ui/dropdown-menu/DropdownMenuContent.vue b/apps/desktop/src/components/ui/dropdown-menu/DropdownMenuContent.vue similarity index 100% rename from src/components/ui/dropdown-menu/DropdownMenuContent.vue rename to apps/desktop/src/components/ui/dropdown-menu/DropdownMenuContent.vue diff --git a/src/components/ui/dropdown-menu/DropdownMenuGroup.vue b/apps/desktop/src/components/ui/dropdown-menu/DropdownMenuGroup.vue similarity index 100% rename from src/components/ui/dropdown-menu/DropdownMenuGroup.vue rename to apps/desktop/src/components/ui/dropdown-menu/DropdownMenuGroup.vue diff --git a/src/components/ui/dropdown-menu/DropdownMenuItem.vue b/apps/desktop/src/components/ui/dropdown-menu/DropdownMenuItem.vue similarity index 100% rename from src/components/ui/dropdown-menu/DropdownMenuItem.vue rename to apps/desktop/src/components/ui/dropdown-menu/DropdownMenuItem.vue diff --git a/src/components/ui/dropdown-menu/DropdownMenuLabel.vue b/apps/desktop/src/components/ui/dropdown-menu/DropdownMenuLabel.vue similarity index 100% rename from src/components/ui/dropdown-menu/DropdownMenuLabel.vue rename to apps/desktop/src/components/ui/dropdown-menu/DropdownMenuLabel.vue diff --git a/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue b/apps/desktop/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue similarity index 100% rename from src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue rename to apps/desktop/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue diff --git a/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue b/apps/desktop/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue similarity index 100% rename from src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue rename to apps/desktop/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue diff --git a/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue b/apps/desktop/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue similarity index 100% rename from src/components/ui/dropdown-menu/DropdownMenuSeparator.vue rename to apps/desktop/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue diff --git a/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue b/apps/desktop/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue similarity index 100% rename from src/components/ui/dropdown-menu/DropdownMenuShortcut.vue rename to apps/desktop/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue diff --git a/src/components/ui/dropdown-menu/DropdownMenuSub.vue b/apps/desktop/src/components/ui/dropdown-menu/DropdownMenuSub.vue similarity index 100% rename from src/components/ui/dropdown-menu/DropdownMenuSub.vue rename to apps/desktop/src/components/ui/dropdown-menu/DropdownMenuSub.vue diff --git a/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue b/apps/desktop/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue similarity index 100% rename from src/components/ui/dropdown-menu/DropdownMenuSubContent.vue rename to apps/desktop/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue diff --git a/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue b/apps/desktop/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue similarity index 100% rename from src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue rename to apps/desktop/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue diff --git a/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue b/apps/desktop/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue similarity index 100% rename from src/components/ui/dropdown-menu/DropdownMenuTrigger.vue rename to apps/desktop/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue diff --git a/src/components/ui/dropdown-menu/index.ts b/apps/desktop/src/components/ui/dropdown-menu/index.ts similarity index 100% rename from src/components/ui/dropdown-menu/index.ts rename to apps/desktop/src/components/ui/dropdown-menu/index.ts diff --git a/src/components/ui/input/Input.vue b/apps/desktop/src/components/ui/input/Input.vue similarity index 100% rename from src/components/ui/input/Input.vue rename to apps/desktop/src/components/ui/input/Input.vue diff --git a/src/components/ui/input/index.ts b/apps/desktop/src/components/ui/input/index.ts similarity index 100% rename from src/components/ui/input/index.ts rename to apps/desktop/src/components/ui/input/index.ts diff --git a/src/components/ui/label/Label.vue b/apps/desktop/src/components/ui/label/Label.vue similarity index 100% rename from src/components/ui/label/Label.vue rename to apps/desktop/src/components/ui/label/Label.vue diff --git a/src/components/ui/label/index.ts b/apps/desktop/src/components/ui/label/index.ts similarity index 100% rename from src/components/ui/label/index.ts rename to apps/desktop/src/components/ui/label/index.ts diff --git a/src/components/ui/popover/Popover.vue b/apps/desktop/src/components/ui/popover/Popover.vue similarity index 100% rename from src/components/ui/popover/Popover.vue rename to apps/desktop/src/components/ui/popover/Popover.vue diff --git a/src/components/ui/popover/PopoverAnchor.vue b/apps/desktop/src/components/ui/popover/PopoverAnchor.vue similarity index 100% rename from src/components/ui/popover/PopoverAnchor.vue rename to apps/desktop/src/components/ui/popover/PopoverAnchor.vue diff --git a/src/components/ui/popover/PopoverContent.vue b/apps/desktop/src/components/ui/popover/PopoverContent.vue similarity index 100% rename from src/components/ui/popover/PopoverContent.vue rename to apps/desktop/src/components/ui/popover/PopoverContent.vue diff --git a/src/components/ui/popover/PopoverDescription.vue b/apps/desktop/src/components/ui/popover/PopoverDescription.vue similarity index 100% rename from src/components/ui/popover/PopoverDescription.vue rename to apps/desktop/src/components/ui/popover/PopoverDescription.vue diff --git a/src/components/ui/popover/PopoverHeader.vue b/apps/desktop/src/components/ui/popover/PopoverHeader.vue similarity index 100% rename from src/components/ui/popover/PopoverHeader.vue rename to apps/desktop/src/components/ui/popover/PopoverHeader.vue diff --git a/src/components/ui/popover/PopoverTitle.vue b/apps/desktop/src/components/ui/popover/PopoverTitle.vue similarity index 100% rename from src/components/ui/popover/PopoverTitle.vue rename to apps/desktop/src/components/ui/popover/PopoverTitle.vue diff --git a/src/components/ui/popover/PopoverTrigger.vue b/apps/desktop/src/components/ui/popover/PopoverTrigger.vue similarity index 100% rename from src/components/ui/popover/PopoverTrigger.vue rename to apps/desktop/src/components/ui/popover/PopoverTrigger.vue diff --git a/src/components/ui/popover/index.ts b/apps/desktop/src/components/ui/popover/index.ts similarity index 100% rename from src/components/ui/popover/index.ts rename to apps/desktop/src/components/ui/popover/index.ts diff --git a/src/components/ui/scroll-area/ScrollArea.vue b/apps/desktop/src/components/ui/scroll-area/ScrollArea.vue similarity index 100% rename from src/components/ui/scroll-area/ScrollArea.vue rename to apps/desktop/src/components/ui/scroll-area/ScrollArea.vue diff --git a/src/components/ui/scroll-area/ScrollBar.vue b/apps/desktop/src/components/ui/scroll-area/ScrollBar.vue similarity index 100% rename from src/components/ui/scroll-area/ScrollBar.vue rename to apps/desktop/src/components/ui/scroll-area/ScrollBar.vue diff --git a/src/components/ui/scroll-area/index.ts b/apps/desktop/src/components/ui/scroll-area/index.ts similarity index 100% rename from src/components/ui/scroll-area/index.ts rename to apps/desktop/src/components/ui/scroll-area/index.ts diff --git a/src/components/ui/searchable-select/SearchableSelect.vue b/apps/desktop/src/components/ui/searchable-select/SearchableSelect.vue similarity index 100% rename from src/components/ui/searchable-select/SearchableSelect.vue rename to apps/desktop/src/components/ui/searchable-select/SearchableSelect.vue diff --git a/src/components/ui/searchable-select/index.ts b/apps/desktop/src/components/ui/searchable-select/index.ts similarity index 100% rename from src/components/ui/searchable-select/index.ts rename to apps/desktop/src/components/ui/searchable-select/index.ts diff --git a/src/components/ui/select/Select.vue b/apps/desktop/src/components/ui/select/Select.vue similarity index 100% rename from src/components/ui/select/Select.vue rename to apps/desktop/src/components/ui/select/Select.vue diff --git a/src/components/ui/select/SelectContent.vue b/apps/desktop/src/components/ui/select/SelectContent.vue similarity index 100% rename from src/components/ui/select/SelectContent.vue rename to apps/desktop/src/components/ui/select/SelectContent.vue diff --git a/src/components/ui/select/SelectGroup.vue b/apps/desktop/src/components/ui/select/SelectGroup.vue similarity index 100% rename from src/components/ui/select/SelectGroup.vue rename to apps/desktop/src/components/ui/select/SelectGroup.vue diff --git a/src/components/ui/select/SelectItem.vue b/apps/desktop/src/components/ui/select/SelectItem.vue similarity index 100% rename from src/components/ui/select/SelectItem.vue rename to apps/desktop/src/components/ui/select/SelectItem.vue diff --git a/src/components/ui/select/SelectItemText.vue b/apps/desktop/src/components/ui/select/SelectItemText.vue similarity index 100% rename from src/components/ui/select/SelectItemText.vue rename to apps/desktop/src/components/ui/select/SelectItemText.vue diff --git a/src/components/ui/select/SelectLabel.vue b/apps/desktop/src/components/ui/select/SelectLabel.vue similarity index 100% rename from src/components/ui/select/SelectLabel.vue rename to apps/desktop/src/components/ui/select/SelectLabel.vue diff --git a/src/components/ui/select/SelectScrollDownButton.vue b/apps/desktop/src/components/ui/select/SelectScrollDownButton.vue similarity index 100% rename from src/components/ui/select/SelectScrollDownButton.vue rename to apps/desktop/src/components/ui/select/SelectScrollDownButton.vue diff --git a/src/components/ui/select/SelectScrollUpButton.vue b/apps/desktop/src/components/ui/select/SelectScrollUpButton.vue similarity index 100% rename from src/components/ui/select/SelectScrollUpButton.vue rename to apps/desktop/src/components/ui/select/SelectScrollUpButton.vue diff --git a/src/components/ui/select/SelectSeparator.vue b/apps/desktop/src/components/ui/select/SelectSeparator.vue similarity index 100% rename from src/components/ui/select/SelectSeparator.vue rename to apps/desktop/src/components/ui/select/SelectSeparator.vue diff --git a/src/components/ui/select/SelectTrigger.vue b/apps/desktop/src/components/ui/select/SelectTrigger.vue similarity index 100% rename from src/components/ui/select/SelectTrigger.vue rename to apps/desktop/src/components/ui/select/SelectTrigger.vue diff --git a/src/components/ui/select/SelectValue.vue b/apps/desktop/src/components/ui/select/SelectValue.vue similarity index 100% rename from src/components/ui/select/SelectValue.vue rename to apps/desktop/src/components/ui/select/SelectValue.vue diff --git a/src/components/ui/select/index.ts b/apps/desktop/src/components/ui/select/index.ts similarity index 100% rename from src/components/ui/select/index.ts rename to apps/desktop/src/components/ui/select/index.ts diff --git a/src/components/ui/separator/Separator.vue b/apps/desktop/src/components/ui/separator/Separator.vue similarity index 100% rename from src/components/ui/separator/Separator.vue rename to apps/desktop/src/components/ui/separator/Separator.vue diff --git a/src/components/ui/separator/index.ts b/apps/desktop/src/components/ui/separator/index.ts similarity index 100% rename from src/components/ui/separator/index.ts rename to apps/desktop/src/components/ui/separator/index.ts diff --git a/src/components/ui/sheet/Sheet.vue b/apps/desktop/src/components/ui/sheet/Sheet.vue similarity index 100% rename from src/components/ui/sheet/Sheet.vue rename to apps/desktop/src/components/ui/sheet/Sheet.vue diff --git a/src/components/ui/sheet/SheetClose.vue b/apps/desktop/src/components/ui/sheet/SheetClose.vue similarity index 100% rename from src/components/ui/sheet/SheetClose.vue rename to apps/desktop/src/components/ui/sheet/SheetClose.vue diff --git a/src/components/ui/sheet/SheetContent.vue b/apps/desktop/src/components/ui/sheet/SheetContent.vue similarity index 100% rename from src/components/ui/sheet/SheetContent.vue rename to apps/desktop/src/components/ui/sheet/SheetContent.vue diff --git a/src/components/ui/sheet/SheetDescription.vue b/apps/desktop/src/components/ui/sheet/SheetDescription.vue similarity index 100% rename from src/components/ui/sheet/SheetDescription.vue rename to apps/desktop/src/components/ui/sheet/SheetDescription.vue diff --git a/src/components/ui/sheet/SheetFooter.vue b/apps/desktop/src/components/ui/sheet/SheetFooter.vue similarity index 100% rename from src/components/ui/sheet/SheetFooter.vue rename to apps/desktop/src/components/ui/sheet/SheetFooter.vue diff --git a/src/components/ui/sheet/SheetHeader.vue b/apps/desktop/src/components/ui/sheet/SheetHeader.vue similarity index 100% rename from src/components/ui/sheet/SheetHeader.vue rename to apps/desktop/src/components/ui/sheet/SheetHeader.vue diff --git a/src/components/ui/sheet/SheetOverlay.vue b/apps/desktop/src/components/ui/sheet/SheetOverlay.vue similarity index 100% rename from src/components/ui/sheet/SheetOverlay.vue rename to apps/desktop/src/components/ui/sheet/SheetOverlay.vue diff --git a/src/components/ui/sheet/SheetTitle.vue b/apps/desktop/src/components/ui/sheet/SheetTitle.vue similarity index 100% rename from src/components/ui/sheet/SheetTitle.vue rename to apps/desktop/src/components/ui/sheet/SheetTitle.vue diff --git a/src/components/ui/sheet/SheetTrigger.vue b/apps/desktop/src/components/ui/sheet/SheetTrigger.vue similarity index 100% rename from src/components/ui/sheet/SheetTrigger.vue rename to apps/desktop/src/components/ui/sheet/SheetTrigger.vue diff --git a/src/components/ui/sheet/index.ts b/apps/desktop/src/components/ui/sheet/index.ts similarity index 100% rename from src/components/ui/sheet/index.ts rename to apps/desktop/src/components/ui/sheet/index.ts diff --git a/src/components/ui/switch/Switch.vue b/apps/desktop/src/components/ui/switch/Switch.vue similarity index 100% rename from src/components/ui/switch/Switch.vue rename to apps/desktop/src/components/ui/switch/Switch.vue diff --git a/src/components/ui/switch/index.ts b/apps/desktop/src/components/ui/switch/index.ts similarity index 100% rename from src/components/ui/switch/index.ts rename to apps/desktop/src/components/ui/switch/index.ts diff --git a/src/components/ui/tabs/Tabs.vue b/apps/desktop/src/components/ui/tabs/Tabs.vue similarity index 100% rename from src/components/ui/tabs/Tabs.vue rename to apps/desktop/src/components/ui/tabs/Tabs.vue diff --git a/src/components/ui/tabs/TabsContent.vue b/apps/desktop/src/components/ui/tabs/TabsContent.vue similarity index 100% rename from src/components/ui/tabs/TabsContent.vue rename to apps/desktop/src/components/ui/tabs/TabsContent.vue diff --git a/src/components/ui/tabs/TabsList.vue b/apps/desktop/src/components/ui/tabs/TabsList.vue similarity index 100% rename from src/components/ui/tabs/TabsList.vue rename to apps/desktop/src/components/ui/tabs/TabsList.vue diff --git a/src/components/ui/tabs/TabsTrigger.vue b/apps/desktop/src/components/ui/tabs/TabsTrigger.vue similarity index 100% rename from src/components/ui/tabs/TabsTrigger.vue rename to apps/desktop/src/components/ui/tabs/TabsTrigger.vue diff --git a/src/components/ui/tabs/index.ts b/apps/desktop/src/components/ui/tabs/index.ts similarity index 100% rename from src/components/ui/tabs/index.ts rename to apps/desktop/src/components/ui/tabs/index.ts diff --git a/src/components/ui/tooltip/Tooltip.vue b/apps/desktop/src/components/ui/tooltip/Tooltip.vue similarity index 100% rename from src/components/ui/tooltip/Tooltip.vue rename to apps/desktop/src/components/ui/tooltip/Tooltip.vue diff --git a/src/components/ui/tooltip/TooltipContent.vue b/apps/desktop/src/components/ui/tooltip/TooltipContent.vue similarity index 100% rename from src/components/ui/tooltip/TooltipContent.vue rename to apps/desktop/src/components/ui/tooltip/TooltipContent.vue diff --git a/src/components/ui/tooltip/TooltipProvider.vue b/apps/desktop/src/components/ui/tooltip/TooltipProvider.vue similarity index 100% rename from src/components/ui/tooltip/TooltipProvider.vue rename to apps/desktop/src/components/ui/tooltip/TooltipProvider.vue diff --git a/src/components/ui/tooltip/TooltipTrigger.vue b/apps/desktop/src/components/ui/tooltip/TooltipTrigger.vue similarity index 100% rename from src/components/ui/tooltip/TooltipTrigger.vue rename to apps/desktop/src/components/ui/tooltip/TooltipTrigger.vue diff --git a/src/components/ui/tooltip/index.ts b/apps/desktop/src/components/ui/tooltip/index.ts similarity index 100% rename from src/components/ui/tooltip/index.ts rename to apps/desktop/src/components/ui/tooltip/index.ts diff --git a/src/composables/useAppUpdater.ts b/apps/desktop/src/composables/useAppUpdater.ts similarity index 100% rename from src/composables/useAppUpdater.ts rename to apps/desktop/src/composables/useAppUpdater.ts diff --git a/src/composables/useDataGridActions.ts b/apps/desktop/src/composables/useDataGridActions.ts similarity index 100% rename from src/composables/useDataGridActions.ts rename to apps/desktop/src/composables/useDataGridActions.ts diff --git a/src/composables/useDataGridColumnResize.ts b/apps/desktop/src/composables/useDataGridColumnResize.ts similarity index 100% rename from src/composables/useDataGridColumnResize.ts rename to apps/desktop/src/composables/useDataGridColumnResize.ts diff --git a/src/composables/useDataGridEditor.ts b/apps/desktop/src/composables/useDataGridEditor.ts similarity index 100% rename from src/composables/useDataGridEditor.ts rename to apps/desktop/src/composables/useDataGridEditor.ts diff --git a/src/composables/useDataGridExport.ts b/apps/desktop/src/composables/useDataGridExport.ts similarity index 100% rename from src/composables/useDataGridExport.ts rename to apps/desktop/src/composables/useDataGridExport.ts diff --git a/src/composables/useDataGridSelection.ts b/apps/desktop/src/composables/useDataGridSelection.ts similarity index 100% rename from src/composables/useDataGridSelection.ts rename to apps/desktop/src/composables/useDataGridSelection.ts diff --git a/src/composables/useDatabaseOptions.ts b/apps/desktop/src/composables/useDatabaseOptions.ts similarity index 100% rename from src/composables/useDatabaseOptions.ts rename to apps/desktop/src/composables/useDatabaseOptions.ts diff --git a/src/composables/useDialogSources.ts b/apps/desktop/src/composables/useDialogSources.ts similarity index 100% rename from src/composables/useDialogSources.ts rename to apps/desktop/src/composables/useDialogSources.ts diff --git a/src/composables/useDragSort.ts b/apps/desktop/src/composables/useDragSort.ts similarity index 100% rename from src/composables/useDragSort.ts rename to apps/desktop/src/composables/useDragSort.ts diff --git a/src/composables/useFileDrop.ts b/apps/desktop/src/composables/useFileDrop.ts similarity index 100% rename from src/composables/useFileDrop.ts rename to apps/desktop/src/composables/useFileDrop.ts diff --git a/src/composables/useFlatTree.ts b/apps/desktop/src/composables/useFlatTree.ts similarity index 100% rename from src/composables/useFlatTree.ts rename to apps/desktop/src/composables/useFlatTree.ts diff --git a/src/composables/useNavigationTargets.ts b/apps/desktop/src/composables/useNavigationTargets.ts similarity index 100% rename from src/composables/useNavigationTargets.ts rename to apps/desktop/src/composables/useNavigationTargets.ts diff --git a/src/composables/usePanelResize.ts b/apps/desktop/src/composables/usePanelResize.ts similarity index 100% rename from src/composables/usePanelResize.ts rename to apps/desktop/src/composables/usePanelResize.ts diff --git a/src/composables/useSchemaOptions.ts b/apps/desktop/src/composables/useSchemaOptions.ts similarity index 100% rename from src/composables/useSchemaOptions.ts rename to apps/desktop/src/composables/useSchemaOptions.ts diff --git a/src/composables/useSqlExecution.ts b/apps/desktop/src/composables/useSqlExecution.ts similarity index 100% rename from src/composables/useSqlExecution.ts rename to apps/desktop/src/composables/useSqlExecution.ts diff --git a/src/composables/useTabScroll.ts b/apps/desktop/src/composables/useTabScroll.ts similarity index 100% rename from src/composables/useTabScroll.ts rename to apps/desktop/src/composables/useTabScroll.ts diff --git a/src/composables/useTauriEvents.ts b/apps/desktop/src/composables/useTauriEvents.ts similarity index 100% rename from src/composables/useTauriEvents.ts rename to apps/desktop/src/composables/useTauriEvents.ts diff --git a/src/composables/useTheme.ts b/apps/desktop/src/composables/useTheme.ts similarity index 100% rename from src/composables/useTheme.ts rename to apps/desktop/src/composables/useTheme.ts diff --git a/src/composables/useToast.ts b/apps/desktop/src/composables/useToast.ts similarity index 100% rename from src/composables/useToast.ts rename to apps/desktop/src/composables/useToast.ts diff --git a/src/composables/useWindowControls.ts b/apps/desktop/src/composables/useWindowControls.ts similarity index 100% rename from src/composables/useWindowControls.ts rename to apps/desktop/src/composables/useWindowControls.ts diff --git a/src/env.d.ts b/apps/desktop/src/env.d.ts similarity index 100% rename from src/env.d.ts rename to apps/desktop/src/env.d.ts diff --git a/src/i18n/backend-errors.ts b/apps/desktop/src/i18n/backend-errors.ts similarity index 100% rename from src/i18n/backend-errors.ts rename to apps/desktop/src/i18n/backend-errors.ts diff --git a/src/i18n/index.ts b/apps/desktop/src/i18n/index.ts similarity index 100% rename from src/i18n/index.ts rename to apps/desktop/src/i18n/index.ts diff --git a/src/i18n/locales/en.ts b/apps/desktop/src/i18n/locales/en.ts similarity index 100% rename from src/i18n/locales/en.ts rename to apps/desktop/src/i18n/locales/en.ts diff --git a/src/i18n/locales/es.ts b/apps/desktop/src/i18n/locales/es.ts similarity index 100% rename from src/i18n/locales/es.ts rename to apps/desktop/src/i18n/locales/es.ts diff --git a/src/i18n/locales/zh-CN.ts b/apps/desktop/src/i18n/locales/zh-CN.ts similarity index 100% rename from src/i18n/locales/zh-CN.ts rename to apps/desktop/src/i18n/locales/zh-CN.ts diff --git a/src/lib/actionActivation.ts b/apps/desktop/src/lib/actionActivation.ts similarity index 100% rename from src/lib/actionActivation.ts rename to apps/desktop/src/lib/actionActivation.ts diff --git a/src/lib/agentDriverInstallHint.ts b/apps/desktop/src/lib/agentDriverInstallHint.ts similarity index 100% rename from src/lib/agentDriverInstallHint.ts rename to apps/desktop/src/lib/agentDriverInstallHint.ts diff --git a/src/lib/agentDriverUpdateBadge.ts b/apps/desktop/src/lib/agentDriverUpdateBadge.ts similarity index 100% rename from src/lib/agentDriverUpdateBadge.ts rename to apps/desktop/src/lib/agentDriverUpdateBadge.ts diff --git a/src/lib/ai.ts b/apps/desktop/src/lib/ai.ts similarity index 100% rename from src/lib/ai.ts rename to apps/desktop/src/lib/ai.ts diff --git a/src/lib/aiAgentPlan.ts b/apps/desktop/src/lib/aiAgentPlan.ts similarity index 100% rename from src/lib/aiAgentPlan.ts rename to apps/desktop/src/lib/aiAgentPlan.ts diff --git a/src/lib/aiAgentStepPresentation.ts b/apps/desktop/src/lib/aiAgentStepPresentation.ts similarity index 100% rename from src/lib/aiAgentStepPresentation.ts rename to apps/desktop/src/lib/aiAgentStepPresentation.ts diff --git a/src/lib/aiSkills.ts b/apps/desktop/src/lib/aiSkills.ts similarity index 100% rename from src/lib/aiSkills.ts rename to apps/desktop/src/lib/aiSkills.ts diff --git a/src/lib/aiSqlExecutionPolicy.ts b/apps/desktop/src/lib/aiSqlExecutionPolicy.ts similarity index 100% rename from src/lib/aiSqlExecutionPolicy.ts rename to apps/desktop/src/lib/aiSqlExecutionPolicy.ts diff --git a/src/lib/aiTableMentions.ts b/apps/desktop/src/lib/aiTableMentions.ts similarity index 100% rename from src/lib/aiTableMentions.ts rename to apps/desktop/src/lib/aiTableMentions.ts diff --git a/src/lib/api.ts b/apps/desktop/src/lib/api.ts similarity index 100% rename from src/lib/api.ts rename to apps/desktop/src/lib/api.ts diff --git a/src/lib/appTheme.ts b/apps/desktop/src/lib/appTheme.ts similarity index 100% rename from src/lib/appTheme.ts rename to apps/desktop/src/lib/appTheme.ts diff --git a/src/lib/cellValue.ts b/apps/desktop/src/lib/cellValue.ts similarity index 100% rename from src/lib/cellValue.ts rename to apps/desktop/src/lib/cellValue.ts diff --git a/src/lib/color.ts b/apps/desktop/src/lib/color.ts similarity index 100% rename from src/lib/color.ts rename to apps/desktop/src/lib/color.ts diff --git a/src/lib/columnFormatter.ts b/apps/desktop/src/lib/columnFormatter.ts similarity index 100% rename from src/lib/columnFormatter.ts rename to apps/desktop/src/lib/columnFormatter.ts diff --git a/src/lib/configCrypto.ts b/apps/desktop/src/lib/configCrypto.ts similarity index 100% rename from src/lib/configCrypto.ts rename to apps/desktop/src/lib/configCrypto.ts diff --git a/src/lib/connectionHealth.ts b/apps/desktop/src/lib/connectionHealth.ts similarity index 100% rename from src/lib/connectionHealth.ts rename to apps/desktop/src/lib/connectionHealth.ts diff --git a/src/lib/connectionPresentation.ts b/apps/desktop/src/lib/connectionPresentation.ts similarity index 100% rename from src/lib/connectionPresentation.ts rename to apps/desktop/src/lib/connectionPresentation.ts diff --git a/src/lib/connectionUrl.ts b/apps/desktop/src/lib/connectionUrl.ts similarity index 100% rename from src/lib/connectionUrl.ts rename to apps/desktop/src/lib/connectionUrl.ts diff --git a/src/lib/createDatabaseSql.ts b/apps/desktop/src/lib/createDatabaseSql.ts similarity index 100% rename from src/lib/createDatabaseSql.ts rename to apps/desktop/src/lib/createDatabaseSql.ts diff --git a/src/lib/dataCompare.ts b/apps/desktop/src/lib/dataCompare.ts similarity index 100% rename from src/lib/dataCompare.ts rename to apps/desktop/src/lib/dataCompare.ts diff --git a/src/lib/dataGridColumnWidth.ts b/apps/desktop/src/lib/dataGridColumnWidth.ts similarity index 100% rename from src/lib/dataGridColumnWidth.ts rename to apps/desktop/src/lib/dataGridColumnWidth.ts diff --git a/src/lib/dataGridScrollGutter.ts b/apps/desktop/src/lib/dataGridScrollGutter.ts similarity index 100% rename from src/lib/dataGridScrollGutter.ts rename to apps/desktop/src/lib/dataGridScrollGutter.ts diff --git a/src/lib/dataGridSql.ts b/apps/desktop/src/lib/dataGridSql.ts similarity index 100% rename from src/lib/dataGridSql.ts rename to apps/desktop/src/lib/dataGridSql.ts diff --git a/src/lib/dataGridTranspose.ts b/apps/desktop/src/lib/dataGridTranspose.ts similarity index 100% rename from src/lib/dataGridTranspose.ts rename to apps/desktop/src/lib/dataGridTranspose.ts diff --git a/src/lib/databaseCapabilities.ts b/apps/desktop/src/lib/databaseCapabilities.ts similarity index 100% rename from src/lib/databaseCapabilities.ts rename to apps/desktop/src/lib/databaseCapabilities.ts diff --git a/src/lib/databaseCapabilitySets.ts b/apps/desktop/src/lib/databaseCapabilitySets.ts similarity index 100% rename from src/lib/databaseCapabilitySets.ts rename to apps/desktop/src/lib/databaseCapabilitySets.ts diff --git a/src/lib/databaseExport.ts b/apps/desktop/src/lib/databaseExport.ts similarity index 100% rename from src/lib/databaseExport.ts rename to apps/desktop/src/lib/databaseExport.ts diff --git a/src/lib/databaseExportSelection.ts b/apps/desktop/src/lib/databaseExportSelection.ts similarity index 100% rename from src/lib/databaseExportSelection.ts rename to apps/desktop/src/lib/databaseExportSelection.ts diff --git a/src/lib/databaseFeatureSupport.ts b/apps/desktop/src/lib/databaseFeatureSupport.ts similarity index 100% rename from src/lib/databaseFeatureSupport.ts rename to apps/desktop/src/lib/databaseFeatureSupport.ts diff --git a/src/lib/databaseOptionSearch.ts b/apps/desktop/src/lib/databaseOptionSearch.ts similarity index 100% rename from src/lib/databaseOptionSearch.ts rename to apps/desktop/src/lib/databaseOptionSearch.ts diff --git a/src/lib/databaseSearch.ts b/apps/desktop/src/lib/databaseSearch.ts similarity index 100% rename from src/lib/databaseSearch.ts rename to apps/desktop/src/lib/databaseSearch.ts diff --git a/src/lib/databaseTableDataCapabilities.ts b/apps/desktop/src/lib/databaseTableDataCapabilities.ts similarity index 100% rename from src/lib/databaseTableDataCapabilities.ts rename to apps/desktop/src/lib/databaseTableDataCapabilities.ts diff --git a/src/lib/databaseTree.ts b/apps/desktop/src/lib/databaseTree.ts similarity index 100% rename from src/lib/databaseTree.ts rename to apps/desktop/src/lib/databaseTree.ts diff --git a/src/lib/dbeaverImport.ts b/apps/desktop/src/lib/dbeaverImport.ts similarity index 100% rename from src/lib/dbeaverImport.ts rename to apps/desktop/src/lib/dbeaverImport.ts diff --git a/src/lib/defaultDatabase.ts b/apps/desktop/src/lib/defaultDatabase.ts similarity index 100% rename from src/lib/defaultDatabase.ts rename to apps/desktop/src/lib/defaultDatabase.ts diff --git a/src/lib/diagramSvgExport.ts b/apps/desktop/src/lib/diagramSvgExport.ts similarity index 100% rename from src/lib/diagramSvgExport.ts rename to apps/desktop/src/lib/diagramSvgExport.ts diff --git a/src/lib/diagramZoom.ts b/apps/desktop/src/lib/diagramZoom.ts similarity index 100% rename from src/lib/diagramZoom.ts rename to apps/desktop/src/lib/diagramZoom.ts diff --git a/src/lib/editorThemes.ts b/apps/desktop/src/lib/editorThemes.ts similarity index 100% rename from src/lib/editorThemes.ts rename to apps/desktop/src/lib/editorThemes.ts diff --git a/src/lib/engineeringDiagram.ts b/apps/desktop/src/lib/engineeringDiagram.ts similarity index 100% rename from src/lib/engineeringDiagram.ts rename to apps/desktop/src/lib/engineeringDiagram.ts diff --git a/src/lib/erDiagram.ts b/apps/desktop/src/lib/erDiagram.ts similarity index 100% rename from src/lib/erDiagram.ts rename to apps/desktop/src/lib/erDiagram.ts diff --git a/src/lib/explainPlan.ts b/apps/desktop/src/lib/explainPlan.ts similarity index 100% rename from src/lib/explainPlan.ts rename to apps/desktop/src/lib/explainPlan.ts diff --git a/src/lib/exportFormats.ts b/apps/desktop/src/lib/exportFormats.ts similarity index 100% rename from src/lib/exportFormats.ts rename to apps/desktop/src/lib/exportFormats.ts diff --git a/src/lib/fieldLineage.ts b/apps/desktop/src/lib/fieldLineage.ts similarity index 100% rename from src/lib/fieldLineage.ts rename to apps/desktop/src/lib/fieldLineage.ts diff --git a/src/lib/gridRowStatus.ts b/apps/desktop/src/lib/gridRowStatus.ts similarity index 100% rename from src/lib/gridRowStatus.ts rename to apps/desktop/src/lib/gridRowStatus.ts diff --git a/src/lib/gridSelection.ts b/apps/desktop/src/lib/gridSelection.ts similarity index 100% rename from src/lib/gridSelection.ts rename to apps/desktop/src/lib/gridSelection.ts diff --git a/src/lib/historyActions.ts b/apps/desktop/src/lib/historyActions.ts similarity index 100% rename from src/lib/historyActions.ts rename to apps/desktop/src/lib/historyActions.ts diff --git a/src/lib/historyActivityKind.ts b/apps/desktop/src/lib/historyActivityKind.ts similarity index 100% rename from src/lib/historyActivityKind.ts rename to apps/desktop/src/lib/historyActivityKind.ts diff --git a/src/lib/historyAiAnalysis.ts b/apps/desktop/src/lib/historyAiAnalysis.ts similarity index 100% rename from src/lib/historyAiAnalysis.ts rename to apps/desktop/src/lib/historyAiAnalysis.ts diff --git a/src/lib/historyVirtualList.ts b/apps/desktop/src/lib/historyVirtualList.ts similarity index 100% rename from src/lib/historyVirtualList.ts rename to apps/desktop/src/lib/historyVirtualList.ts diff --git a/src/lib/http.ts b/apps/desktop/src/lib/http.ts similarity index 100% rename from src/lib/http.ts rename to apps/desktop/src/lib/http.ts diff --git a/src/lib/httpSqlFileProgress.ts b/apps/desktop/src/lib/httpSqlFileProgress.ts similarity index 100% rename from src/lib/httpSqlFileProgress.ts rename to apps/desktop/src/lib/httpSqlFileProgress.ts diff --git a/src/lib/keyboardShortcuts.ts b/apps/desktop/src/lib/keyboardShortcuts.ts similarity index 100% rename from src/lib/keyboardShortcuts.ts rename to apps/desktop/src/lib/keyboardShortcuts.ts diff --git a/src/lib/markdownTable.ts b/apps/desktop/src/lib/markdownTable.ts similarity index 100% rename from src/lib/markdownTable.ts rename to apps/desktop/src/lib/markdownTable.ts diff --git a/src/lib/mongoShellCommand.ts b/apps/desktop/src/lib/mongoShellCommand.ts similarity index 100% rename from src/lib/mongoShellCommand.ts rename to apps/desktop/src/lib/mongoShellCommand.ts diff --git a/src/lib/navicatImport.ts b/apps/desktop/src/lib/navicatImport.ts similarity index 100% rename from src/lib/navicatImport.ts rename to apps/desktop/src/lib/navicatImport.ts diff --git a/src/lib/objectRenameSql.ts b/apps/desktop/src/lib/objectRenameSql.ts similarity index 100% rename from src/lib/objectRenameSql.ts rename to apps/desktop/src/lib/objectRenameSql.ts diff --git a/src/lib/objectSourceEditor.ts b/apps/desktop/src/lib/objectSourceEditor.ts similarity index 100% rename from src/lib/objectSourceEditor.ts rename to apps/desktop/src/lib/objectSourceEditor.ts diff --git a/src/lib/openTabsPersistence.ts b/apps/desktop/src/lib/openTabsPersistence.ts similarity index 100% rename from src/lib/openTabsPersistence.ts rename to apps/desktop/src/lib/openTabsPersistence.ts diff --git a/src/lib/pinnedItems.ts b/apps/desktop/src/lib/pinnedItems.ts similarity index 100% rename from src/lib/pinnedItems.ts rename to apps/desktop/src/lib/pinnedItems.ts diff --git a/src/lib/platform.ts b/apps/desktop/src/lib/platform.ts similarity index 100% rename from src/lib/platform.ts rename to apps/desktop/src/lib/platform.ts diff --git a/src/lib/queryExecutionState.ts b/apps/desktop/src/lib/queryExecutionState.ts similarity index 100% rename from src/lib/queryExecutionState.ts rename to apps/desktop/src/lib/queryExecutionState.ts diff --git a/src/lib/queryResultPagination.ts b/apps/desktop/src/lib/queryResultPagination.ts similarity index 100% rename from src/lib/queryResultPagination.ts rename to apps/desktop/src/lib/queryResultPagination.ts diff --git a/src/lib/queryResultSort.ts b/apps/desktop/src/lib/queryResultSort.ts similarity index 100% rename from src/lib/queryResultSort.ts rename to apps/desktop/src/lib/queryResultSort.ts diff --git a/src/lib/redisCommandSafety.ts b/apps/desktop/src/lib/redisCommandSafety.ts similarity index 100% rename from src/lib/redisCommandSafety.ts rename to apps/desktop/src/lib/redisCommandSafety.ts diff --git a/src/lib/redisKeyTree.ts b/apps/desktop/src/lib/redisKeyTree.ts similarity index 100% rename from src/lib/redisKeyTree.ts rename to apps/desktop/src/lib/redisKeyTree.ts diff --git a/src/lib/redisValuePresentation.ts b/apps/desktop/src/lib/redisValuePresentation.ts similarity index 100% rename from src/lib/redisValuePresentation.ts rename to apps/desktop/src/lib/redisValuePresentation.ts diff --git a/src/lib/schemaDiff.ts b/apps/desktop/src/lib/schemaDiff.ts similarity index 100% rename from src/lib/schemaDiff.ts rename to apps/desktop/src/lib/schemaDiff.ts diff --git a/src/lib/schemaTreeCache.ts b/apps/desktop/src/lib/schemaTreeCache.ts similarity index 100% rename from src/lib/schemaTreeCache.ts rename to apps/desktop/src/lib/schemaTreeCache.ts diff --git a/src/lib/shortcutRegistry.ts b/apps/desktop/src/lib/shortcutRegistry.ts similarity index 100% rename from src/lib/shortcutRegistry.ts rename to apps/desktop/src/lib/shortcutRegistry.ts diff --git a/src/lib/sidebarLayout.ts b/apps/desktop/src/lib/sidebarLayout.ts similarity index 100% rename from src/lib/sidebarLayout.ts rename to apps/desktop/src/lib/sidebarLayout.ts diff --git a/src/lib/sidebarSearch.ts b/apps/desktop/src/lib/sidebarSearch.ts similarity index 100% rename from src/lib/sidebarSearch.ts rename to apps/desktop/src/lib/sidebarSearch.ts diff --git a/src/lib/sidebarSearchTree.ts b/apps/desktop/src/lib/sidebarSearchTree.ts similarity index 100% rename from src/lib/sidebarSearchTree.ts rename to apps/desktop/src/lib/sidebarSearchTree.ts diff --git a/src/lib/sidebarTreeItemLayout.ts b/apps/desktop/src/lib/sidebarTreeItemLayout.ts similarity index 100% rename from src/lib/sidebarTreeItemLayout.ts rename to apps/desktop/src/lib/sidebarTreeItemLayout.ts diff --git a/src/lib/sqlAnalysis.ts b/apps/desktop/src/lib/sqlAnalysis.ts similarity index 100% rename from src/lib/sqlAnalysis.ts rename to apps/desktop/src/lib/sqlAnalysis.ts diff --git a/src/lib/sqlCompletion.ts b/apps/desktop/src/lib/sqlCompletion.ts similarity index 100% rename from src/lib/sqlCompletion.ts rename to apps/desktop/src/lib/sqlCompletion.ts diff --git a/src/lib/sqlDiagnostics.ts b/apps/desktop/src/lib/sqlDiagnostics.ts similarity index 100% rename from src/lib/sqlDiagnostics.ts rename to apps/desktop/src/lib/sqlDiagnostics.ts diff --git a/src/lib/sqlExecutionTarget.ts b/apps/desktop/src/lib/sqlExecutionTarget.ts similarity index 100% rename from src/lib/sqlExecutionTarget.ts rename to apps/desktop/src/lib/sqlExecutionTarget.ts diff --git a/src/lib/sqlFileOpen.ts b/apps/desktop/src/lib/sqlFileOpen.ts similarity index 100% rename from src/lib/sqlFileOpen.ts rename to apps/desktop/src/lib/sqlFileOpen.ts diff --git a/src/lib/sqlFormatter.ts b/apps/desktop/src/lib/sqlFormatter.ts similarity index 100% rename from src/lib/sqlFormatter.ts rename to apps/desktop/src/lib/sqlFormatter.ts diff --git a/src/lib/sqlMetadataRefresh.ts b/apps/desktop/src/lib/sqlMetadataRefresh.ts similarity index 100% rename from src/lib/sqlMetadataRefresh.ts rename to apps/desktop/src/lib/sqlMetadataRefresh.ts diff --git a/src/lib/sqlNavigation.ts b/apps/desktop/src/lib/sqlNavigation.ts similarity index 100% rename from src/lib/sqlNavigation.ts rename to apps/desktop/src/lib/sqlNavigation.ts diff --git a/src/lib/sqlServerTree.ts b/apps/desktop/src/lib/sqlServerTree.ts similarity index 100% rename from src/lib/sqlServerTree.ts rename to apps/desktop/src/lib/sqlServerTree.ts diff --git a/src/lib/sqlStatementSplit.ts b/apps/desktop/src/lib/sqlStatementSplit.ts similarity index 100% rename from src/lib/sqlStatementSplit.ts rename to apps/desktop/src/lib/sqlStatementSplit.ts diff --git a/src/lib/tabCloseActions.ts b/apps/desktop/src/lib/tabCloseActions.ts similarity index 100% rename from src/lib/tabCloseActions.ts rename to apps/desktop/src/lib/tabCloseActions.ts diff --git a/src/lib/tabPresentation.ts b/apps/desktop/src/lib/tabPresentation.ts similarity index 100% rename from src/lib/tabPresentation.ts rename to apps/desktop/src/lib/tabPresentation.ts diff --git a/src/lib/tableDataExport.ts b/apps/desktop/src/lib/tableDataExport.ts similarity index 100% rename from src/lib/tableDataExport.ts rename to apps/desktop/src/lib/tableDataExport.ts diff --git a/src/lib/tableEditing.ts b/apps/desktop/src/lib/tableEditing.ts similarity index 100% rename from src/lib/tableEditing.ts rename to apps/desktop/src/lib/tableEditing.ts diff --git a/src/lib/tableImport.ts b/apps/desktop/src/lib/tableImport.ts similarity index 100% rename from src/lib/tableImport.ts rename to apps/desktop/src/lib/tableImport.ts diff --git a/src/lib/tableSelectSql.ts b/apps/desktop/src/lib/tableSelectSql.ts similarity index 100% rename from src/lib/tableSelectSql.ts rename to apps/desktop/src/lib/tableSelectSql.ts diff --git a/src/lib/tableStructureEditorSql.ts b/apps/desktop/src/lib/tableStructureEditorSql.ts similarity index 100% rename from src/lib/tableStructureEditorSql.ts rename to apps/desktop/src/lib/tableStructureEditorSql.ts diff --git a/src/lib/tableStructureEditorState.ts b/apps/desktop/src/lib/tableStructureEditorState.ts similarity index 100% rename from src/lib/tableStructureEditorState.ts rename to apps/desktop/src/lib/tableStructureEditorState.ts diff --git a/src/lib/tableTree.ts b/apps/desktop/src/lib/tableTree.ts similarity index 100% rename from src/lib/tableTree.ts rename to apps/desktop/src/lib/tableTree.ts diff --git a/src/lib/tauri.ts b/apps/desktop/src/lib/tauri.ts similarity index 100% rename from src/lib/tauri.ts rename to apps/desktop/src/lib/tauri.ts diff --git a/src/lib/tauriRuntime.ts b/apps/desktop/src/lib/tauriRuntime.ts similarity index 100% rename from src/lib/tauriRuntime.ts rename to apps/desktop/src/lib/tauriRuntime.ts diff --git a/src/lib/transferProgressState.ts b/apps/desktop/src/lib/transferProgressState.ts similarity index 100% rename from src/lib/transferProgressState.ts rename to apps/desktop/src/lib/transferProgressState.ts diff --git a/src/lib/treeNodeClick.ts b/apps/desktop/src/lib/treeNodeClick.ts similarity index 100% rename from src/lib/treeNodeClick.ts rename to apps/desktop/src/lib/treeNodeClick.ts diff --git a/src/lib/treeRefreshTarget.ts b/apps/desktop/src/lib/treeRefreshTarget.ts similarity index 100% rename from src/lib/treeRefreshTarget.ts rename to apps/desktop/src/lib/treeRefreshTarget.ts diff --git a/src/lib/utils.ts b/apps/desktop/src/lib/utils.ts similarity index 100% rename from src/lib/utils.ts rename to apps/desktop/src/lib/utils.ts diff --git a/src/lib/visibleDatabases.ts b/apps/desktop/src/lib/visibleDatabases.ts similarity index 100% rename from src/lib/visibleDatabases.ts rename to apps/desktop/src/lib/visibleDatabases.ts diff --git a/src/lib/xlsxExport.ts b/apps/desktop/src/lib/xlsxExport.ts similarity index 100% rename from src/lib/xlsxExport.ts rename to apps/desktop/src/lib/xlsxExport.ts diff --git a/src/main.ts b/apps/desktop/src/main.ts similarity index 100% rename from src/main.ts rename to apps/desktop/src/main.ts diff --git a/src/stores/connectionStore.ts b/apps/desktop/src/stores/connectionStore.ts similarity index 100% rename from src/stores/connectionStore.ts rename to apps/desktop/src/stores/connectionStore.ts diff --git a/src/stores/historyStore.ts b/apps/desktop/src/stores/historyStore.ts similarity index 100% rename from src/stores/historyStore.ts rename to apps/desktop/src/stores/historyStore.ts diff --git a/src/stores/queryStore.ts b/apps/desktop/src/stores/queryStore.ts similarity index 100% rename from src/stores/queryStore.ts rename to apps/desktop/src/stores/queryStore.ts diff --git a/src/stores/savedSqlStore.ts b/apps/desktop/src/stores/savedSqlStore.ts similarity index 100% rename from src/stores/savedSqlStore.ts rename to apps/desktop/src/stores/savedSqlStore.ts diff --git a/src/stores/settingsStore.ts b/apps/desktop/src/stores/settingsStore.ts similarity index 100% rename from src/stores/settingsStore.ts rename to apps/desktop/src/stores/settingsStore.ts diff --git a/src/styles/globals.css b/apps/desktop/src/styles/globals.css similarity index 100% rename from src/styles/globals.css rename to apps/desktop/src/styles/globals.css diff --git a/src/types/database.ts b/apps/desktop/src/types/database.ts similarity index 100% rename from src/types/database.ts rename to apps/desktop/src/types/database.ts diff --git a/src/types/editor.ts b/apps/desktop/src/types/editor.ts similarity index 100% rename from src/types/editor.ts rename to apps/desktop/src/types/editor.ts diff --git a/src/types/vue-virtual-scroller.d.ts b/apps/desktop/src/types/vue-virtual-scroller.d.ts similarity index 100% rename from src/types/vue-virtual-scroller.d.ts rename to apps/desktop/src/types/vue-virtual-scroller.d.ts diff --git a/tsconfig.json b/apps/desktop/tsconfig.json similarity index 100% rename from tsconfig.json rename to apps/desktop/tsconfig.json diff --git a/vite.config.ts b/apps/desktop/vite.config.ts similarity index 95% rename from vite.config.ts rename to apps/desktop/vite.config.ts index b49fa486b..e05845ea0 100644 --- a/vite.config.ts +++ b/apps/desktop/vite.config.ts @@ -7,6 +7,7 @@ const host = process.env.TAURI_DEV_HOST; const isTauri = !!host || !!process.env.TAURI_ENV_ARCH; export default defineConfig(async () => ({ + root: __dirname, plugins: [vue(), tailwindcss()], resolve: { alias: { @@ -15,6 +16,8 @@ export default defineConfig(async () => ({ }, clearScreen: false, build: { + outDir: "../../dist", + emptyOutDir: true, rollupOptions: { output: { manualChunks: { diff --git a/codecov.yml b/codecov.yml index 57d4b77a8..4a9b848a4 100644 --- a/codecov.yml +++ b/codecov.yml @@ -12,4 +12,4 @@ ignore: - "src-tauri/" - "plugins/" - "docs/" - - "public/" + - "apps/desktop/public/" diff --git a/deploy/Dockerfile b/deploy/Dockerfile index bc22be4dc..7cc9e2ee1 100644 --- a/deploy/Dockerfile +++ b/deploy/Dockerfile @@ -7,9 +7,7 @@ RUN npm i -g pnpm COPY package.json pnpm-lock.yaml ./ RUN --mount=type=cache,target=/root/.local/share/pnpm/store \ pnpm install --frozen-lockfile -COPY src/ src/ -COPY index.html vite.config.ts tsconfig.json ./ -COPY public/ public/ +COPY apps/desktop/ apps/desktop/ RUN pnpm build # Stage 2: Cross-compile Rust backend for the requested platform (native, no emulation) diff --git a/package.json b/package.json index 978efd822..9d3086933 100644 --- a/package.json +++ b/package.json @@ -8,21 +8,21 @@ "node": ">=22.13.0" }, "scripts": { - "dev": "vite", + "dev": "vite --config apps/desktop/vite.config.ts", "dev:tauri": "tauri dev", - "dev:web": "vite --port 5173 --mode web", + "dev:web": "vite --config apps/desktop/vite.config.ts --port 5173 --mode web", "dev:backend": "RUST_LOG=${RUST_LOG:-info} DBX_PASSWORD=${DBX_PASSWORD:-test} cargo watch -x 'run -p dbx-web'", "build:packages": "pnpm --filter @dbx-app/node-core build && pnpm --filter @dbx-app/cli build && pnpm --filter @dbx-app/mcp-server build", "test:packages": "pnpm --filter @dbx-app/node-core test && pnpm --filter @dbx-app/cli test && pnpm --filter @dbx-app/mcp-server test", "pack:packages": "rm -rf /tmp/dbx-pack-check && mkdir -p /tmp/dbx-pack-check && pnpm --filter @dbx-app/node-core pack --pack-destination /tmp/dbx-pack-check && pnpm --filter @dbx-app/cli pack --pack-destination /tmp/dbx-pack-check && pnpm --filter @dbx-app/mcp-server pack --pack-destination /tmp/dbx-pack-check", "publish:dry-run": "pnpm build:packages && pnpm pack:packages", - "build": "vue-tsc --noEmit && vite build", - "check": "oxfmt --check \"src/**/*.{ts,vue}\" && pnpm lint && vue-tsc --noEmit && pnpm test", - "lint": "oxlint --vue-plugin src", - "fmt": "oxfmt \"src/**/*.{ts,vue}\"", - "test": "tsx --test packages/app-tests/*.test.ts", - "test:coverage": "c8 --reporter=lcov --reporter=text tsx --test packages/app-tests/*.test.ts", - "preview": "vite preview", + "build": "vue-tsc --noEmit --project apps/desktop/tsconfig.json && vite build --config apps/desktop/vite.config.ts", + "check": "oxfmt --check \"apps/desktop/src/**/*.{ts,vue}\" && pnpm lint && vue-tsc --noEmit --project apps/desktop/tsconfig.json && pnpm test", + "lint": "oxlint --vue-plugin apps/desktop/src", + "fmt": "oxfmt \"apps/desktop/src/**/*.{ts,vue}\"", + "test": "tsx --tsconfig apps/desktop/tsconfig.json --test packages/app-tests/*.test.ts", + "test:coverage": "c8 --reporter=lcov --reporter=text tsx --tsconfig apps/desktop/tsconfig.json --test packages/app-tests/*.test.ts", + "preview": "vite preview --config apps/desktop/vite.config.ts", "tauri": "tauri", "prepare": "husky" }, @@ -93,6 +93,6 @@ ] }, "lint-staged": { - "src/**/*.{ts,vue}": "oxfmt" + "apps/desktop/src/**/*.{ts,vue}": "oxfmt" } } diff --git a/packages/app-tests/actionActivation.test.ts b/packages/app-tests/actionActivation.test.ts index 2c20606f4..62f011840 100644 --- a/packages/app-tests/actionActivation.test.ts +++ b/packages/app-tests/actionActivation.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { shouldSuppressRepeatedActivation, tryStartExclusiveActivation } from "../../src/lib/actionActivation.ts"; +import { shouldSuppressRepeatedActivation, tryStartExclusiveActivation } from "../../apps/desktop/src/lib/actionActivation.ts"; test("allows the first activation", () => { const guard = {}; diff --git a/packages/app-tests/agentDriverInstallHint.test.ts b/packages/app-tests/agentDriverInstallHint.test.ts index 39168557c..7a9788c91 100644 --- a/packages/app-tests/agentDriverInstallHint.test.ts +++ b/packages/app-tests/agentDriverInstallHint.test.ts @@ -1,6 +1,6 @@ import assert from "node:assert/strict"; import test from "node:test"; -import { showAgentDriverInstallHint } from "../../src/lib/agentDriverInstallHint.ts"; +import { showAgentDriverInstallHint } from "../../apps/desktop/src/lib/agentDriverInstallHint.ts"; test("hides the agent driver install hint when the selected driver is installed", () => { assert.equal(showAgentDriverInstallHint("informix", [{ db_type: "informix", installed: true }]), false); diff --git a/packages/app-tests/agentDriverUpdateBadge.test.ts b/packages/app-tests/agentDriverUpdateBadge.test.ts index 0a4ae2f34..fe058efa8 100644 --- a/packages/app-tests/agentDriverUpdateBadge.test.ts +++ b/packages/app-tests/agentDriverUpdateBadge.test.ts @@ -1,7 +1,7 @@ import assert from "node:assert/strict"; import test from "node:test"; -import { countAvailableAgentDriverUpdates } from "../../src/lib/agentDriverUpdateBadge.ts"; +import { countAvailableAgentDriverUpdates } from "../../apps/desktop/src/lib/agentDriverUpdateBadge.ts"; test("returns zero when there are no available agent driver updates", () => { assert.equal(countAvailableAgentDriverUpdates([]), 0); diff --git a/packages/app-tests/aiAgentPlan.test.ts b/packages/app-tests/aiAgentPlan.test.ts index 810b76464..c43f2562f 100644 --- a/packages/app-tests/aiAgentPlan.test.ts +++ b/packages/app-tests/aiAgentPlan.test.ts @@ -1,8 +1,8 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { buildAiAgentPlan } from "../../src/lib/aiAgentPlan.ts"; -import type { AiAction, AiAssistantMode } from "../../src/lib/ai.ts"; -import type { ConnectionConfig } from "../../src/types/database.ts"; +import { buildAiAgentPlan } from "../../apps/desktop/src/lib/aiAgentPlan.ts"; +import type { AiAction, AiAssistantMode } from "../../apps/desktop/src/lib/ai.ts"; +import type { ConnectionConfig } from "../../apps/desktop/src/types/database.ts"; function conn(overrides: Partial = {}): ConnectionConfig { return { diff --git a/packages/app-tests/aiAgentStepPresentation.test.ts b/packages/app-tests/aiAgentStepPresentation.test.ts index 74541ffed..216cdd95e 100644 --- a/packages/app-tests/aiAgentStepPresentation.test.ts +++ b/packages/app-tests/aiAgentStepPresentation.test.ts @@ -1,7 +1,7 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { buildAiAgentStepItems } from "../../src/lib/aiAgentStepPresentation.ts"; -import type { AiAgentPlan } from "../../src/lib/aiAgentPlan.ts"; +import { buildAiAgentStepItems } from "../../apps/desktop/src/lib/aiAgentStepPresentation.ts"; +import type { AiAgentPlan } from "../../apps/desktop/src/lib/aiAgentPlan.ts"; test("presents auto-execute agent plans as completed generation, safety, and execution steps", () => { const plan: AiAgentPlan = { diff --git a/packages/app-tests/aiPrompt.test.ts b/packages/app-tests/aiPrompt.test.ts index 5e4691fca..bd232d892 100644 --- a/packages/app-tests/aiPrompt.test.ts +++ b/packages/app-tests/aiPrompt.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import type { AiContext } from "../../src/lib/ai.ts"; +import type { AiContext } from "../../apps/desktop/src/lib/ai.ts"; class MemoryStorage { private values = new Map(); @@ -27,7 +27,7 @@ Object.defineProperty(globalThis, "localStorage", { configurable: true, }); -const { buildSystemPrompt } = await import("../../src/lib/ai.ts"); +const { buildSystemPrompt } = await import("../../apps/desktop/src/lib/ai.ts"); function context(overrides: Partial = {}): AiContext { return { diff --git a/packages/app-tests/aiPromptEval.test.ts b/packages/app-tests/aiPromptEval.test.ts index eba358179..d36517659 100644 --- a/packages/app-tests/aiPromptEval.test.ts +++ b/packages/app-tests/aiPromptEval.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import type { AiAction, AiAssistantMode, AiContext } from "../../src/lib/ai.ts"; +import type { AiAction, AiAssistantMode, AiContext } from "../../apps/desktop/src/lib/ai.ts"; class MemoryStorage { private values = new Map(); @@ -27,7 +27,7 @@ Object.defineProperty(globalThis, "localStorage", { configurable: true, }); -const { buildSystemPrompt } = await import("../../src/lib/ai.ts"); +const { buildSystemPrompt } = await import("../../apps/desktop/src/lib/ai.ts"); function baseContext(overrides: Partial = {}): AiContext { return { diff --git a/packages/app-tests/aiSkills.test.ts b/packages/app-tests/aiSkills.test.ts index 8fd47942e..accc54821 100644 --- a/packages/app-tests/aiSkills.test.ts +++ b/packages/app-tests/aiSkills.test.ts @@ -1,7 +1,7 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import type { AiAction } from "../../src/lib/ai.ts"; -import { AI_SKILL_DEFINITIONS, aiSkillForAction } from "../../src/lib/aiSkills.ts"; +import type { AiAction } from "../../apps/desktop/src/lib/ai.ts"; +import { AI_SKILL_DEFINITIONS, aiSkillForAction } from "../../apps/desktop/src/lib/aiSkills.ts"; const actions: AiAction[] = ["generate", "explain", "optimize", "fix", "convert", "sampleData"]; diff --git a/packages/app-tests/aiSqlExecutionPolicy.test.ts b/packages/app-tests/aiSqlExecutionPolicy.test.ts index bc540a57d..89ec89b47 100644 --- a/packages/app-tests/aiSqlExecutionPolicy.test.ts +++ b/packages/app-tests/aiSqlExecutionPolicy.test.ts @@ -4,8 +4,8 @@ import { classifyAiSqlExecution, classifyConnectionEnvironment, shouldAttemptAiAutoExecute, -} from "../../src/lib/aiSqlExecutionPolicy.ts"; -import type { ConnectionConfig } from "../../src/types/database.ts"; +} from "../../apps/desktop/src/lib/aiSqlExecutionPolicy.ts"; +import type { ConnectionConfig } from "../../apps/desktop/src/types/database.ts"; function conn(overrides: Partial = {}): ConnectionConfig { return { diff --git a/packages/app-tests/aiTableMentions.test.ts b/packages/app-tests/aiTableMentions.test.ts index 4b3aefa51..cbb256165 100644 --- a/packages/app-tests/aiTableMentions.test.ts +++ b/packages/app-tests/aiTableMentions.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { formatAiTableMention, parseAiTableMentions } from "../../src/lib/aiTableMentions.ts"; +import { formatAiTableMention, parseAiTableMentions } from "../../apps/desktop/src/lib/aiTableMentions.ts"; test("parses simple and schema-qualified AI table mentions", () => { assert.deepEqual(parseAiTableMentions("show @users and join @public.orders"), [ diff --git a/packages/app-tests/apiBackendContract.test.ts b/packages/app-tests/apiBackendContract.test.ts index 3f985c602..74010d114 100644 --- a/packages/app-tests/apiBackendContract.test.ts +++ b/packages/app-tests/apiBackendContract.test.ts @@ -8,5 +8,5 @@ function exportedFunctions(path: string): string[] { } test("Tauri and HTTP backends expose the same API functions", () => { - assert.deepEqual(exportedFunctions("src/lib/http.ts"), exportedFunctions("src/lib/tauri.ts")); + assert.deepEqual(exportedFunctions("apps/desktop/src/lib/http.ts"), exportedFunctions("apps/desktop/src/lib/tauri.ts")); }); diff --git a/packages/app-tests/appTheme.test.ts b/packages/app-tests/appTheme.test.ts index c1bf9ebf9..821b53b40 100644 --- a/packages/app-tests/appTheme.test.ts +++ b/packages/app-tests/appTheme.test.ts @@ -4,7 +4,7 @@ import { getTauriThemeForMode, normalizeAppThemeMode, resolveAppThemeAppearance, -} from "../../src/lib/appTheme.ts"; +} from "../../apps/desktop/src/lib/appTheme.ts"; test("normalizes stored app theme modes", () => { assert.equal(normalizeAppThemeMode("dark"), "dark"); diff --git a/packages/app-tests/appUpdateBadge.test.ts b/packages/app-tests/appUpdateBadge.test.ts index 782660414..6d66146c5 100644 --- a/packages/app-tests/appUpdateBadge.test.ts +++ b/packages/app-tests/appUpdateBadge.test.ts @@ -3,7 +3,7 @@ import { strict as assert } from "node:assert"; import test from "node:test"; test("toolbar update button can show a red update badge", () => { - const source = readFileSync("src/components/layout/AppToolbar.vue", "utf8"); + const source = readFileSync("apps/desktop/src/components/layout/AppToolbar.vue", "utf8"); assert.match(source, /hasUpdateAvailable/); assert.match(source, /v-if="hasUpdateAvailable"/); @@ -11,7 +11,7 @@ test("toolbar update button can show a red update badge", () => { }); test("app schedules hourly silent update checks and clears the timer", () => { - const source = readFileSync("src/App.vue", "utf8"); + const source = readFileSync("apps/desktop/src/App.vue", "utf8"); assert.match(source, /UPDATE_CHECK_INTERVAL_MS\s*=\s*60\s*\*\s*60\s*\*\s*1000/); assert.match(source, /setInterval\(\(\)\s*=>\s*{[\s\S]*checkUpdates\(\{\s*silent:\s*true\s*}\)/); @@ -19,15 +19,15 @@ test("app schedules hourly silent update checks and clears the timer", () => { }); test("app passes update availability to the toolbar badge", () => { - const source = readFileSync("src/App.vue", "utf8"); + const source = readFileSync("apps/desktop/src/App.vue", "utf8"); assert.match(source, /:has-update-available="hasUpdateAvailable"/); }); test("driver manager entry can show an update count badge", () => { - const toolbarSource = readFileSync("src/components/layout/AppToolbar.vue", "utf8"); - const tabSource = readFileSync("src/components/layout/AppTabBar.vue", "utf8"); - const appSource = readFileSync("src/App.vue", "utf8"); + const toolbarSource = readFileSync("apps/desktop/src/components/layout/AppToolbar.vue", "utf8"); + const tabSource = readFileSync("apps/desktop/src/components/layout/AppTabBar.vue", "utf8"); + const appSource = readFileSync("apps/desktop/src/App.vue", "utf8"); assert.match(toolbarSource, /agentDriverUpdateCount/); assert.match(toolbarSource, /v-if="agentDriverUpdateCount > 0"/); diff --git a/packages/app-tests/cellValue.test.ts b/packages/app-tests/cellValue.test.ts index 9f7dd1472..239e5379a 100644 --- a/packages/app-tests/cellValue.test.ts +++ b/packages/app-tests/cellValue.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { displayCellValue } from "../../src/lib/cellValue.ts"; +import { displayCellValue } from "../../apps/desktop/src/lib/cellValue.ts"; test("displayCellValue returns NULL for null", () => { assert.equal(displayCellValue(null), "NULL"); diff --git a/packages/app-tests/columnFormatter.test.ts b/packages/app-tests/columnFormatter.test.ts index 55a20ea85..fd8a0d151 100644 --- a/packages/app-tests/columnFormatter.test.ts +++ b/packages/app-tests/columnFormatter.test.ts @@ -6,7 +6,7 @@ import { resolveColumnFormatter, normalizeColumnFormatter, type ColumnFormatterConfig, -} from "../../src/lib/columnFormatter.ts"; +} from "../../apps/desktop/src/lib/columnFormatter.ts"; test("formats unix timestamps in seconds, milliseconds, and auto mode", () => { assert.equal( diff --git a/packages/app-tests/configCrypto.test.ts b/packages/app-tests/configCrypto.test.ts index 77d67922f..2949bda1f 100644 --- a/packages/app-tests/configCrypto.test.ts +++ b/packages/app-tests/configCrypto.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { encryptConfig, decryptConfig, isEncryptedConfig } from "../../src/lib/configCrypto.ts"; +import { encryptConfig, decryptConfig, isEncryptedConfig } from "../../apps/desktop/src/lib/configCrypto.ts"; test("encrypts and decrypts config round-trip", async () => { const original = JSON.stringify([{ id: "1", name: "test", password: "secret123" }]); diff --git a/packages/app-tests/connectionHealth.test.ts b/packages/app-tests/connectionHealth.test.ts index d344a4523..29399c255 100644 --- a/packages/app-tests/connectionHealth.test.ts +++ b/packages/app-tests/connectionHealth.test.ts @@ -1,6 +1,6 @@ import assert from "node:assert/strict"; import test from "node:test"; -import { staleConnectionMessage, shouldMarkDisconnected } from "../../src/lib/connectionHealth.ts"; +import { staleConnectionMessage, shouldMarkDisconnected } from "../../apps/desktop/src/lib/connectionHealth.ts"; test("metadata connection errors should turn off connected state", () => { assert.equal(shouldMarkDisconnected(new Error("connection closed by server")), true); diff --git a/packages/app-tests/connectionPresentation.test.ts b/packages/app-tests/connectionPresentation.test.ts index 6962a2b78..198a1c776 100644 --- a/packages/app-tests/connectionPresentation.test.ts +++ b/packages/app-tests/connectionPresentation.test.ts @@ -1,7 +1,7 @@ import test from "node:test"; import assert from "node:assert/strict"; -import type { ConnectionConfig } from "../../src/types/database.ts"; -import { connectionDriverLabel, connectionEndpointLabel, connectionIconType, connectionOptionSubtitle } from "../../src/lib/connectionPresentation.ts"; +import type { ConnectionConfig } from "../../apps/desktop/src/types/database.ts"; +import { connectionDriverLabel, connectionEndpointLabel, connectionIconType, connectionOptionSubtitle } from "../../apps/desktop/src/lib/connectionPresentation.ts"; const baseConnection: ConnectionConfig = { id: "conn-1", diff --git a/packages/app-tests/connectionUrl.test.ts b/packages/app-tests/connectionUrl.test.ts index cbc36dd07..2551baa73 100644 --- a/packages/app-tests/connectionUrl.test.ts +++ b/packages/app-tests/connectionUrl.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { parseConnectionUrl } from "../../src/lib/connectionUrl.ts"; +import { parseConnectionUrl } from "../../apps/desktop/src/lib/connectionUrl.ts"; test("parses postgres connection URLs", () => { assert.deepEqual(parseConnectionUrl("postgresql://alice:secret@db.example.com:5433/app?sslmode=require"), { diff --git a/packages/app-tests/connectionUrlPlaceholder.test.ts b/packages/app-tests/connectionUrlPlaceholder.test.ts index 2397d41b6..928fbf548 100644 --- a/packages/app-tests/connectionUrlPlaceholder.test.ts +++ b/packages/app-tests/connectionUrlPlaceholder.test.ts @@ -1,6 +1,6 @@ import test from "node:test"; import assert from "node:assert/strict"; -import { connectionUrlPlaceholder } from "../../src/lib/connectionPresentation.ts"; +import { connectionUrlPlaceholder } from "../../apps/desktop/src/lib/connectionPresentation.ts"; const expected: Record = { mysql: "mysql://user:password@host:port/database", diff --git a/packages/app-tests/createDatabaseSql.test.ts b/packages/app-tests/createDatabaseSql.test.ts index 1bfd3647b..e2c855aea 100644 --- a/packages/app-tests/createDatabaseSql.test.ts +++ b/packages/app-tests/createDatabaseSql.test.ts @@ -1,6 +1,6 @@ import assert from "node:assert/strict"; import test from "node:test"; -import { buildCreateDatabaseSql, supportsCreateDatabaseCharset } from "../../src/lib/createDatabaseSql.ts"; +import { buildCreateDatabaseSql, supportsCreateDatabaseCharset } from "../../apps/desktop/src/lib/createDatabaseSql.ts"; test("builds MySQL create database SQL with charset and collation", () => { assert.equal( diff --git a/packages/app-tests/dataCompare.test.ts b/packages/app-tests/dataCompare.test.ts index 0f9cf7757..90d9ca77f 100644 --- a/packages/app-tests/dataCompare.test.ts +++ b/packages/app-tests/dataCompare.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { compareDataRows, generateDataSyncSql } from "../../src/lib/dataCompare.ts"; +import { compareDataRows, generateDataSyncSql } from "../../apps/desktop/src/lib/dataCompare.ts"; test("compares rows by primary key and reports added, removed, and modified rows", () => { const diff = compareDataRows({ diff --git a/packages/app-tests/dataGridColumnWidth.test.ts b/packages/app-tests/dataGridColumnWidth.test.ts index e7ee87209..00369a985 100644 --- a/packages/app-tests/dataGridColumnWidth.test.ts +++ b/packages/app-tests/dataGridColumnWidth.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { calculateDataGridColumnWidth, DATA_GRID_HEADER_CONTROL_WIDTH } from "../../src/lib/dataGridColumnWidth.ts"; +import { calculateDataGridColumnWidth, DATA_GRID_HEADER_CONTROL_WIDTH } from "../../apps/desktop/src/lib/dataGridColumnWidth.ts"; test("reserves header control space when auto-sizing a column from the header", () => { const width = calculateDataGridColumnWidth({ diff --git a/packages/app-tests/dataGridEditor.test.ts b/packages/app-tests/dataGridEditor.test.ts index 8cbac2344..848c9c787 100644 --- a/packages/app-tests/dataGridEditor.test.ts +++ b/packages/app-tests/dataGridEditor.test.ts @@ -2,8 +2,8 @@ import { strict as assert } from "node:assert"; import test from "node:test"; import { computed, nextTick, ref } from "vue"; import { createPinia, setActivePinia } from "pinia"; -import { useDataGridEditor } from "../../src/composables/useDataGridEditor.ts"; -import type { ColumnInfo } from "../../src/types/database.ts"; +import { useDataGridEditor } from "../../apps/desktop/src/composables/useDataGridEditor.ts"; +import type { ColumnInfo } from "../../apps/desktop/src/types/database.ts"; type CellValue = string | number | boolean | null; diff --git a/packages/app-tests/dataGridScrollGutter.test.ts b/packages/app-tests/dataGridScrollGutter.test.ts index b04150dcd..584477db9 100644 --- a/packages/app-tests/dataGridScrollGutter.test.ts +++ b/packages/app-tests/dataGridScrollGutter.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { dataGridHeaderContentWidth, scrollbarGutterWidth } from "../../src/lib/dataGridScrollGutter.ts"; +import { dataGridHeaderContentWidth, scrollbarGutterWidth } from "../../apps/desktop/src/lib/dataGridScrollGutter.ts"; test("calculates scrollbar gutter from element dimensions", () => { assert.equal(scrollbarGutterWidth({ offsetWidth: 1000, clientWidth: 985 }), 15); diff --git a/packages/app-tests/dataGridSql.test.ts b/packages/app-tests/dataGridSql.test.ts index 09c3b35d7..c01139dc3 100644 --- a/packages/app-tests/dataGridSql.test.ts +++ b/packages/app-tests/dataGridSql.test.ts @@ -7,8 +7,8 @@ import { normalizeDataGridSaveError, formatGridSqlLiteral, validateDataGridSave, -} from "../../src/lib/dataGridSql.ts"; -import { DBX_NEO4J_ELEMENT_ID_COLUMN } from "../../src/lib/tableEditing.ts"; +} from "../../apps/desktop/src/lib/dataGridSql.ts"; +import { DBX_NEO4J_ELEMENT_ID_COLUMN } from "../../apps/desktop/src/lib/tableEditing.ts"; test("builds SQL Server grid save statements with schema and bracket quoting", () => { const statements = buildDataGridSaveStatements({ diff --git a/packages/app-tests/dataGridTranspose.test.ts b/packages/app-tests/dataGridTranspose.test.ts index cc9b9da16..57115a115 100644 --- a/packages/app-tests/dataGridTranspose.test.ts +++ b/packages/app-tests/dataGridTranspose.test.ts @@ -7,7 +7,7 @@ import { transposeFieldWidth, transposeScrollLeftForRecord, visibleTransposeRecordWindow, -} from "../../src/lib/dataGridTranspose.ts"; +} from "../../apps/desktop/src/lib/dataGridTranspose.ts"; test("row number double click opens transpose for a row", () => { assert.deepEqual(nextTransposeState(false, null, 2), { diff --git a/packages/app-tests/databaseCapabilities.test.ts b/packages/app-tests/databaseCapabilities.test.ts index 0a05651fe..528874909 100644 --- a/packages/app-tests/databaseCapabilities.test.ts +++ b/packages/app-tests/databaseCapabilities.test.ts @@ -18,7 +18,7 @@ import { supportsTransfer, usesPostgresLikeStructureCopy, usesTreeSchemaMode, -} from "../../src/lib/databaseCapabilities.ts"; +} from "../../apps/desktop/src/lib/databaseCapabilities.ts"; test("treats Trino catalogs as schema tree roots", () => { assert.equal(TREE_SCHEMA_TYPES.has("trino"), true); diff --git a/packages/app-tests/databaseExport.test.ts b/packages/app-tests/databaseExport.test.ts index 61a2be9c5..79429c9d5 100644 --- a/packages/app-tests/databaseExport.test.ts +++ b/packages/app-tests/databaseExport.test.ts @@ -7,7 +7,7 @@ import { buildDatabaseSqlExport, buildInsertStatements, formatSqlLiteral, -} from "../../src/lib/databaseExport.ts"; +} from "../../apps/desktop/src/lib/databaseExport.ts"; test("formats SQL literals for exported INSERT statements", () => { assert.equal(formatSqlLiteral(null), "NULL"); diff --git a/packages/app-tests/databaseExportSelection.test.ts b/packages/app-tests/databaseExportSelection.test.ts index 60f6678c7..ce36afcad 100644 --- a/packages/app-tests/databaseExportSelection.test.ts +++ b/packages/app-tests/databaseExportSelection.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { buildSelectedTablesPayload } from "../../src/lib/databaseExportSelection.ts"; +import { buildSelectedTablesPayload } from "../../apps/desktop/src/lib/databaseExportSelection.ts"; test("omits selected table payload when every table is selected", () => { assert.equal(buildSelectedTablesPayload(["users", "orders"], ["users", "orders"]), undefined); diff --git a/packages/app-tests/databaseOptionSearch.test.ts b/packages/app-tests/databaseOptionSearch.test.ts index f9d6e6aa8..3827e5215 100644 --- a/packages/app-tests/databaseOptionSearch.test.ts +++ b/packages/app-tests/databaseOptionSearch.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { filterDatabaseOptions } from "../../src/lib/databaseOptionSearch.ts"; +import { filterDatabaseOptions } from "../../apps/desktop/src/lib/databaseOptionSearch.ts"; test("returns all database options when the search query is empty", () => { assert.deepEqual(filterDatabaseOptions(["app", "analytics"], ""), ["app", "analytics"]); diff --git a/packages/app-tests/databaseSearch.test.ts b/packages/app-tests/databaseSearch.test.ts index e2f45209d..258c60c60 100644 --- a/packages/app-tests/databaseSearch.test.ts +++ b/packages/app-tests/databaseSearch.test.ts @@ -1,11 +1,11 @@ import test from "node:test"; import assert from "node:assert/strict"; -import type { ColumnInfo } from "../../src/types/database.ts"; +import type { ColumnInfo } from "../../apps/desktop/src/types/database.ts"; import { buildDatabaseSearchSql, buildSearchResultWhere, findMatchedSearchColumns, -} from "../../src/lib/databaseSearch.ts"; +} from "../../apps/desktop/src/lib/databaseSearch.ts"; function col(name: string, dataType: string, primary = false): ColumnInfo { return { diff --git a/packages/app-tests/databaseTree.test.ts b/packages/app-tests/databaseTree.test.ts index 6a509408f..2011f2fe3 100644 --- a/packages/app-tests/databaseTree.test.ts +++ b/packages/app-tests/databaseTree.test.ts @@ -1,6 +1,6 @@ import assert from "node:assert/strict"; import test from "node:test"; -import { buildDatabaseTreeNodes } from "../../src/lib/databaseTree.ts"; +import { buildDatabaseTreeNodes } from "../../apps/desktop/src/lib/databaseTree.ts"; test("设置默认库后侧边栏数据库树仍保留全部数据库", () => { const nodes = buildDatabaseTreeNodes("conn-1", [ diff --git a/packages/app-tests/defaultDatabase.test.ts b/packages/app-tests/defaultDatabase.test.ts index d56536da4..4a54ebd33 100644 --- a/packages/app-tests/defaultDatabase.test.ts +++ b/packages/app-tests/defaultDatabase.test.ts @@ -1,6 +1,6 @@ import assert from "node:assert/strict"; import test from "node:test"; -import { isDefaultDatabase, resolveDefaultDatabase } from "../../src/lib/defaultDatabase.ts"; +import { isDefaultDatabase, resolveDefaultDatabase } from "../../apps/desktop/src/lib/defaultDatabase.ts"; test("优先使用连接上已保存的默认数据库", () => { assert.equal(resolveDefaultDatabase({ database: "analytics" }, ["app", "analytics"]), "analytics"); diff --git a/packages/app-tests/diagramSvgExport.test.ts b/packages/app-tests/diagramSvgExport.test.ts index 0d22fa24a..d7d982b87 100644 --- a/packages/app-tests/diagramSvgExport.test.ts +++ b/packages/app-tests/diagramSvgExport.test.ts @@ -1,12 +1,12 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { buildEngineeringDiagram } from "../../src/lib/engineeringDiagram.ts"; +import { buildEngineeringDiagram } from "../../apps/desktop/src/lib/engineeringDiagram.ts"; import { buildEngineeringDiagramSvg, buildTableDiagramSvg, diagramSvgFileName, -} from "../../src/lib/diagramSvgExport.ts"; -import { buildDiagramRelationships, type DiagramTable } from "../../src/lib/erDiagram.ts"; +} from "../../apps/desktop/src/lib/diagramSvgExport.ts"; +import { buildDiagramRelationships, type DiagramTable } from "../../apps/desktop/src/lib/erDiagram.ts"; const tables: DiagramTable[] = [ { diff --git a/packages/app-tests/diagramZoom.test.ts b/packages/app-tests/diagramZoom.test.ts index dc50b59cc..664ec79d3 100644 --- a/packages/app-tests/diagramZoom.test.ts +++ b/packages/app-tests/diagramZoom.test.ts @@ -4,7 +4,7 @@ import { clampDiagramZoom, zoomFromGestureScale, zoomFromWheelDelta, -} from "../../src/lib/diagramZoom.ts"; +} from "../../apps/desktop/src/lib/diagramZoom.ts"; test("clamps diagram zoom to supported bounds", () => { assert.equal(clampDiagramZoom(0.2), 0.6); diff --git a/packages/app-tests/engineeringDiagram.test.ts b/packages/app-tests/engineeringDiagram.test.ts index 4e2b36d11..a1da86cba 100644 --- a/packages/app-tests/engineeringDiagram.test.ts +++ b/packages/app-tests/engineeringDiagram.test.ts @@ -1,7 +1,7 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { buildEngineeringDiagram } from "../../src/lib/engineeringDiagram.ts"; -import type { DiagramRelationship, DiagramTable } from "../../src/lib/erDiagram.ts"; +import { buildEngineeringDiagram } from "../../apps/desktop/src/lib/engineeringDiagram.ts"; +import type { DiagramRelationship, DiagramTable } from "../../apps/desktop/src/lib/erDiagram.ts"; const tables: DiagramTable[] = [ { diff --git a/packages/app-tests/erDiagram.test.ts b/packages/app-tests/erDiagram.test.ts index fb92e5bcd..b3a4fb445 100644 --- a/packages/app-tests/erDiagram.test.ts +++ b/packages/app-tests/erDiagram.test.ts @@ -4,7 +4,7 @@ import { buildDiagramRelationships, filterDiagramTables, layoutDiagramTables, -} from "../../src/lib/erDiagram.ts"; +} from "../../apps/desktop/src/lib/erDiagram.ts"; test("builds relationships only between tables in the diagram", () => { const relationships = buildDiagramRelationships([ diff --git a/packages/app-tests/explainPlan.test.ts b/packages/app-tests/explainPlan.test.ts index cf7b2cc47..01404cfe1 100644 --- a/packages/app-tests/explainPlan.test.ts +++ b/packages/app-tests/explainPlan.test.ts @@ -5,7 +5,7 @@ import { flattenExplainPlanNodes, parseExplainResult, supportsExplainPlan, -} from "../../src/lib/explainPlan.ts"; +} from "../../apps/desktop/src/lib/explainPlan.ts"; test("builds PostgreSQL JSON explain SQL from a selected query", () => { const result = buildExplainSql("postgres", " select * from users where id = 1; "); diff --git a/packages/app-tests/fieldLineage.test.ts b/packages/app-tests/fieldLineage.test.ts index 59167952a..5d345df66 100644 --- a/packages/app-tests/fieldLineage.test.ts +++ b/packages/app-tests/fieldLineage.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { analyzeFieldLineage, identifierInSql, summarizeLineageCounts } from "../../src/lib/fieldLineage.ts"; +import { analyzeFieldLineage, identifierInSql, summarizeLineageCounts } from "../../apps/desktop/src/lib/fieldLineage.ts"; test("detects outgoing and incoming foreign key lineage as certain", () => { const result = analyzeFieldLineage({ diff --git a/packages/app-tests/gridRowStatus.test.ts b/packages/app-tests/gridRowStatus.test.ts index 21a5ed747..d6a60a99f 100644 --- a/packages/app-tests/gridRowStatus.test.ts +++ b/packages/app-tests/gridRowStatus.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { matchesRowStatusFilter, rowStatusFilterAfterAddingRow, type RowStatus } from "../../src/lib/gridRowStatus.ts"; +import { matchesRowStatusFilter, rowStatusFilterAfterAddingRow, type RowStatus } from "../../apps/desktop/src/lib/gridRowStatus.ts"; const statuses: RowStatus[] = ["clean", "edited", "new", "deleted"]; diff --git a/packages/app-tests/gridSelection.test.ts b/packages/app-tests/gridSelection.test.ts index 7427426fe..242aa130c 100644 --- a/packages/app-tests/gridSelection.test.ts +++ b/packages/app-tests/gridSelection.test.ts @@ -8,7 +8,7 @@ import { formatSelectionAsTsv, isCellInSelection, normalizeSelectionRange, -} from "../../src/lib/gridSelection.ts"; +} from "../../apps/desktop/src/lib/gridSelection.ts"; test("normalizes a dragged cell range in either direction", () => { const range = normalizeSelectionRange( diff --git a/packages/app-tests/historyActions.test.ts b/packages/app-tests/historyActions.test.ts index 04386640c..8dff1da88 100644 --- a/packages/app-tests/historyActions.test.ts +++ b/packages/app-tests/historyActions.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { shouldDeleteHistoryEntry, shouldClearHistory } from "../../src/lib/historyActions.ts"; +import { shouldDeleteHistoryEntry, shouldClearHistory } from "../../apps/desktop/src/lib/historyActions.ts"; test("requires confirmation before deleting history entries", () => { assert.equal(shouldDeleteHistoryEntry(() => false), false); diff --git a/packages/app-tests/historyActivityKind.test.ts b/packages/app-tests/historyActivityKind.test.ts index caa8f0a69..f15e4c5b7 100644 --- a/packages/app-tests/historyActivityKind.test.ts +++ b/packages/app-tests/historyActivityKind.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { resolveHistoryActivityKind } from "../../src/lib/historyActivityKind.ts"; +import { resolveHistoryActivityKind } from "../../apps/desktop/src/lib/historyActivityKind.ts"; test("legacy INSERT history entries are treated as data changes", () => { assert.equal( diff --git a/packages/app-tests/historyAiAnalysis.test.ts b/packages/app-tests/historyAiAnalysis.test.ts index 33fdf5468..9ca7c9c1b 100644 --- a/packages/app-tests/historyAiAnalysis.test.ts +++ b/packages/app-tests/historyAiAnalysis.test.ts @@ -4,7 +4,7 @@ import { buildHistoryAiAnalysisPrompt, canRollbackHistoryEntry, type HistoryAiAnalysisEntry, -} from "../../src/lib/historyAiAnalysis.ts"; +} from "../../apps/desktop/src/lib/historyAiAnalysis.ts"; const baseEntry: HistoryAiAnalysisEntry = { id: "h1", diff --git a/packages/app-tests/historyVirtualList.test.ts b/packages/app-tests/historyVirtualList.test.ts index a20c78d05..84f0ddad3 100644 --- a/packages/app-tests/historyVirtualList.test.ts +++ b/packages/app-tests/historyVirtualList.test.ts @@ -4,7 +4,7 @@ import { HISTORY_ROW_HEIGHT, HISTORY_SCROLL_BUFFER, shouldVirtualizeHistory, -} from "../../src/lib/historyVirtualList.ts"; +} from "../../apps/desktop/src/lib/historyVirtualList.ts"; test("history list virtualizes every non-empty result set", () => { assert.equal(shouldVirtualizeHistory(0), false); diff --git a/packages/app-tests/keyboardShortcuts.test.ts b/packages/app-tests/keyboardShortcuts.test.ts index 756cb6677..bd9f1834f 100644 --- a/packages/app-tests/keyboardShortcuts.test.ts +++ b/packages/app-tests/keyboardShortcuts.test.ts @@ -8,8 +8,8 @@ import { isFocusSearchShortcut, isObjectSourceSaveShortcutTarget, isSaveShortcut, -} from "../../src/lib/keyboardShortcuts.ts"; -import { shortcutToCodeMirrorKey } from "../../src/lib/shortcutRegistry.ts"; +} from "../../apps/desktop/src/lib/keyboardShortcuts.ts"; +import { shortcutToCodeMirrorKey } from "../../apps/desktop/src/lib/shortcutRegistry.ts"; test("matches Cmd+Enter for SQL execution", () => { assert.equal(isExecuteSqlShortcut({ key: "Enter", metaKey: true }), true); diff --git a/packages/app-tests/markdownTable.test.ts b/packages/app-tests/markdownTable.test.ts index f4db75d06..d0dde7eee 100644 --- a/packages/app-tests/markdownTable.test.ts +++ b/packages/app-tests/markdownTable.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { formatMarkdownTable } from "../../src/lib/markdownTable.ts"; +import { formatMarkdownTable } from "../../apps/desktop/src/lib/markdownTable.ts"; test("escapes markdown table pipes and normalizes newlines", () => { const markdown = formatMarkdownTable({ diff --git a/packages/app-tests/mongoShellCommand.test.ts b/packages/app-tests/mongoShellCommand.test.ts index b12eed17c..e60949dd2 100644 --- a/packages/app-tests/mongoShellCommand.test.ts +++ b/packages/app-tests/mongoShellCommand.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { mongoDocumentsToQueryResult, parseMongoFindCommand } from "../../src/lib/mongoShellCommand.ts"; +import { mongoDocumentsToQueryResult, parseMongoFindCommand } from "../../apps/desktop/src/lib/mongoShellCommand.ts"; test("parseMongoFindCommand parses db collection find with an empty JSON filter", () => { assert.deepEqual(parseMongoFindCommand("db.users.find({})"), { diff --git a/packages/app-tests/objectRenameSql.test.ts b/packages/app-tests/objectRenameSql.test.ts index 30fdc3131..870b70abd 100644 --- a/packages/app-tests/objectRenameSql.test.ts +++ b/packages/app-tests/objectRenameSql.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { buildRenameObjectSql, supportsObjectRename } from "../../src/lib/objectRenameSql.ts"; +import { buildRenameObjectSql, supportsObjectRename } from "../../apps/desktop/src/lib/objectRenameSql.ts"; test("builds MySQL table and view rename statements", () => { assert.equal( diff --git a/packages/app-tests/objectSourceEditor.test.ts b/packages/app-tests/objectSourceEditor.test.ts index fdf1c6f0e..e27ad14c5 100644 --- a/packages/app-tests/objectSourceEditor.test.ts +++ b/packages/app-tests/objectSourceEditor.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { buildExecutableObjectSourceSql, objectSourceSaveExecutionMode } from "../../src/lib/objectSourceEditor.ts"; +import { buildExecutableObjectSourceSql, objectSourceSaveExecutionMode } from "../../apps/desktop/src/lib/objectSourceEditor.ts"; test("SQL Server edited source saves as ALTER", () => { const sql = buildExecutableObjectSourceSql({ diff --git a/packages/app-tests/openTabsPersistence.test.ts b/packages/app-tests/openTabsPersistence.test.ts index 411b32695..402cf75f8 100644 --- a/packages/app-tests/openTabsPersistence.test.ts +++ b/packages/app-tests/openTabsPersistence.test.ts @@ -1,7 +1,7 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { restoreOpenTabsState, serializeOpenTabs } from "../../src/lib/openTabsPersistence.ts"; -import type { QueryTab } from "../../src/types/database.ts"; +import { restoreOpenTabsState, serializeOpenTabs } from "../../apps/desktop/src/lib/openTabsPersistence.ts"; +import type { QueryTab } from "../../apps/desktop/src/types/database.ts"; function queryTab(overrides: Partial = {}): QueryTab { return { diff --git a/packages/app-tests/pinnedItems.test.ts b/packages/app-tests/pinnedItems.test.ts index 3a72a2104..287017308 100644 --- a/packages/app-tests/pinnedItems.test.ts +++ b/packages/app-tests/pinnedItems.test.ts @@ -1,7 +1,7 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { applyPinnedTreeNodeState, orderPinnedFirst } from "../../src/lib/pinnedItems.ts"; -import type { TreeNode } from "../../src/types/database.ts"; +import { applyPinnedTreeNodeState, orderPinnedFirst } from "../../apps/desktop/src/lib/pinnedItems.ts"; +import type { TreeNode } from "../../apps/desktop/src/types/database.ts"; test("orders pinned items before unpinned items without changing relative order", () => { const items = [ diff --git a/packages/app-tests/queryExecutionState.test.ts b/packages/app-tests/queryExecutionState.test.ts index 77fd55968..f85b42311 100644 --- a/packages/app-tests/queryExecutionState.test.ts +++ b/packages/app-tests/queryExecutionState.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { canCancelQueryExecution, queryExecutionLabelKey } from "../../src/lib/queryExecutionState.ts"; +import { canCancelQueryExecution, queryExecutionLabelKey } from "../../apps/desktop/src/lib/queryExecutionState.ts"; test("only allows cancelling an active execution with an execution id", () => { assert.equal(canCancelQueryExecution({ isExecuting: true, executionId: "exec-1" }), true); diff --git a/packages/app-tests/queryResultPagination.test.ts b/packages/app-tests/queryResultPagination.test.ts index 7210ce49d..77c450365 100644 --- a/packages/app-tests/queryResultPagination.test.ts +++ b/packages/app-tests/queryResultPagination.test.ts @@ -4,7 +4,7 @@ import { buildCountQuerySql, buildPaginatedQuerySql, buildQueryPaginationExecutionPlan, -} from "../../src/lib/queryResultPagination.ts"; +} from "../../apps/desktop/src/lib/queryResultPagination.ts"; test("wraps a single select query with limit and offset", () => { const result = buildPaginatedQuerySql("SELECT id, name FROM users;", "postgres", 100, 200); diff --git a/packages/app-tests/queryResultSort.test.ts b/packages/app-tests/queryResultSort.test.ts index 9d0b26333..40efb697d 100644 --- a/packages/app-tests/queryResultSort.test.ts +++ b/packages/app-tests/queryResultSort.test.ts @@ -1,6 +1,6 @@ import assert from "node:assert/strict"; import test from "node:test"; -import { buildSortedQuerySql } from "../../src/lib/queryResultSort.ts"; +import { buildSortedQuerySql } from "../../apps/desktop/src/lib/queryResultSort.ts"; test("wraps a single select query with outer order by", () => { const result = buildSortedQuerySql("SELECT id, name FROM users;", "postgres", ["id", "name"], 1, "name", "asc"); diff --git a/packages/app-tests/queryStore.test.ts b/packages/app-tests/queryStore.test.ts index 19b67ee9c..69e8d8c15 100644 --- a/packages/app-tests/queryStore.test.ts +++ b/packages/app-tests/queryStore.test.ts @@ -1,7 +1,7 @@ import { strict as assert } from "node:assert"; import test from "node:test"; import { createPinia, setActivePinia } from "pinia"; -import { useQueryStore } from "../../src/stores/queryStore.ts"; +import { useQueryStore } from "../../apps/desktop/src/stores/queryStore.ts"; test("setErrorResult stops loading and shows the error result", () => { setActivePinia(createPinia()); diff --git a/packages/app-tests/redisCommandSafety.test.ts b/packages/app-tests/redisCommandSafety.test.ts index 1957f909b..d04fdfecb 100644 --- a/packages/app-tests/redisCommandSafety.test.ts +++ b/packages/app-tests/redisCommandSafety.test.ts @@ -1,6 +1,6 @@ import test from "node:test"; import assert from "node:assert/strict"; -import { classifyRedisCommandSafety, firstRedisCommandToken } from "../../src/lib/redisCommandSafety.ts"; +import { classifyRedisCommandSafety, firstRedisCommandToken } from "../../apps/desktop/src/lib/redisCommandSafety.ts"; test("firstRedisCommandToken reads the first command token case-insensitively", () => { assert.equal(firstRedisCommandToken(" get user:1"), "GET"); diff --git a/packages/app-tests/redisKeyTree.test.ts b/packages/app-tests/redisKeyTree.test.ts index 5f4834f9d..adb23e46f 100644 --- a/packages/app-tests/redisKeyTree.test.ts +++ b/packages/app-tests/redisKeyTree.test.ts @@ -6,8 +6,8 @@ import { collectExpandedGroupIds, flattenVisibleRedisKeyTree, type RedisKeyTreeNode, -} from "../../src/lib/redisKeyTree.ts"; -import type { RedisKeyInfo } from "../../src/lib/api.ts"; +} from "../../apps/desktop/src/lib/redisKeyTree.ts"; +import type { RedisKeyInfo } from "../../apps/desktop/src/lib/api.ts"; function makeKey(key_display: string, key_raw: string, key_type = "string", ttl = -1): RedisKeyInfo { return { key_display, key_raw, key_type, ttl }; diff --git a/packages/app-tests/redisValuePresentation.test.ts b/packages/app-tests/redisValuePresentation.test.ts index 79f792d78..fb7c5eb95 100644 --- a/packages/app-tests/redisValuePresentation.test.ts +++ b/packages/app-tests/redisValuePresentation.test.ts @@ -6,7 +6,7 @@ import { formatRedisMemberDetail, getRedisMemberSelectionKey, highlightRedisJsonDetail, -} from "../../src/lib/redisValuePresentation.ts"; +} from "../../apps/desktop/src/lib/redisValuePresentation.ts"; test("formats JSON object strings for Redis member details", () => { const detail = formatRedisMemberDetail('{"id":1,"name":"Ada","tags":["dbx","redis"]}'); diff --git a/packages/app-tests/releasePresentation.test.ts b/packages/app-tests/releasePresentation.test.ts index 7112f92c0..2ccb7feb5 100644 --- a/packages/app-tests/releasePresentation.test.ts +++ b/packages/app-tests/releasePresentation.test.ts @@ -3,7 +3,7 @@ import { strict as assert } from "node:assert"; import test from "node:test"; test("settings about panel uses the app version prop instead of a hard-coded version", () => { - const source = readFileSync("src/components/editor/EditorSettingsDialog.vue", "utf8"); + const source = readFileSync("apps/desktop/src/components/editor/EditorSettingsDialog.vue", "utf8"); assert.equal(source.includes("v0.5.0"), false); assert.match(source, /appVersion/); diff --git a/packages/app-tests/schemaDiff.test.ts b/packages/app-tests/schemaDiff.test.ts index dd281760a..88d9cf7cd 100644 --- a/packages/app-tests/schemaDiff.test.ts +++ b/packages/app-tests/schemaDiff.test.ts @@ -1,7 +1,7 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { diffForeignKeys, diffIndexes, generateSyncSql, type TableDiff } from "../../src/lib/schemaDiff.ts"; -import type { ForeignKeyInfo, IndexInfo } from "../../src/types/database.ts"; +import { diffForeignKeys, diffIndexes, generateSyncSql, type TableDiff } from "../../apps/desktop/src/lib/schemaDiff.ts"; +import type { ForeignKeyInfo, IndexInfo } from "../../apps/desktop/src/types/database.ts"; function index(overrides: Partial): IndexInfo { return { diff --git a/packages/app-tests/schemaOptions.test.ts b/packages/app-tests/schemaOptions.test.ts index b1c1dd0a5..5f00038f0 100644 --- a/packages/app-tests/schemaOptions.test.ts +++ b/packages/app-tests/schemaOptions.test.ts @@ -1,6 +1,6 @@ import test from "node:test"; import assert from "node:assert/strict"; -import { hasSchemaOptionsCacheEntry } from "../../src/composables/useSchemaOptions.ts"; +import { hasSchemaOptionsCacheEntry } from "../../apps/desktop/src/composables/useSchemaOptions.ts"; test("treats an empty schema option list as a loaded cache entry", () => { const options = { diff --git a/packages/app-tests/schemaTreeCache.test.ts b/packages/app-tests/schemaTreeCache.test.ts index 3a84d4024..b7916eda7 100644 --- a/packages/app-tests/schemaTreeCache.test.ts +++ b/packages/app-tests/schemaTreeCache.test.ts @@ -4,7 +4,7 @@ import { SCHEMA_TREE_CACHE_TTL_MS, decodeSchemaTreeCache, encodeSchemaTreeCache, -} from "../../src/lib/schemaTreeCache.ts"; +} from "../../apps/desktop/src/lib/schemaTreeCache.ts"; const children = [{ id: "conn:db", label: "db", type: "database" }]; const now = Date.parse("2026-05-17T10:00:00.000Z"); diff --git a/packages/app-tests/settingsDialogLayout.test.ts b/packages/app-tests/settingsDialogLayout.test.ts index a3c62a9c8..3cefa82e4 100644 --- a/packages/app-tests/settingsDialogLayout.test.ts +++ b/packages/app-tests/settingsDialogLayout.test.ts @@ -2,7 +2,7 @@ import { readFileSync } from "node:fs"; import { strict as assert } from "node:assert"; import test from "node:test"; -const source = readFileSync("src/components/editor/EditorSettingsDialog.vue", "utf8"); +const source = readFileSync("apps/desktop/src/components/editor/EditorSettingsDialog.vue", "utf8"); test("settings dialog uses a side category navigation", () => { assert.match(source, /settingsCategoryNav/); diff --git a/packages/app-tests/settingsStore.test.ts b/packages/app-tests/settingsStore.test.ts index 1bcb23b1d..3e88a39d9 100644 --- a/packages/app-tests/settingsStore.test.ts +++ b/packages/app-tests/settingsStore.test.ts @@ -5,7 +5,7 @@ import { DEFAULT_EDITOR_SETTINGS, normalizeAiConfig, normalizeEditorSettings, -} from "../../src/stores/settingsStore.ts"; +} from "../../apps/desktop/src/stores/settingsStore.ts"; test("defaults Redis scan page size to 1000 keys", () => { assert.equal(DEFAULT_EDITOR_SETTINGS.redisScanPageSize, 1000); diff --git a/packages/app-tests/sidebarLayout.test.ts b/packages/app-tests/sidebarLayout.test.ts index 283a89142..72b7af5af 100644 --- a/packages/app-tests/sidebarLayout.test.ts +++ b/packages/app-tests/sidebarLayout.test.ts @@ -12,8 +12,8 @@ import { appendConnectionToLayout, removeConnectionFromSidebarLayout, emptyLayout, -} from "../../src/lib/sidebarLayout.ts"; -import type { ConnectionConfig, SidebarLayout } from "../../src/types/database.ts"; +} from "../../apps/desktop/src/lib/sidebarLayout.ts"; +import type { ConnectionConfig, SidebarLayout } from "../../apps/desktop/src/types/database.ts"; function conn(id: string, name?: string): ConnectionConfig { return { diff --git a/packages/app-tests/sidebarSearch.test.ts b/packages/app-tests/sidebarSearch.test.ts index 871bdd1f1..cd54e3d04 100644 --- a/packages/app-tests/sidebarSearch.test.ts +++ b/packages/app-tests/sidebarSearch.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import { test } from "node:test"; -import { matchSidebarLabel } from "../../src/lib/sidebarSearch.ts"; +import { matchSidebarLabel } from "../../apps/desktop/src/lib/sidebarSearch.ts"; test("matches exact and prefix labels first", () => { assert.equal(matchSidebarLabel("orders", "orders")?.kind, "exact"); diff --git a/packages/app-tests/sidebarSearchTree.test.ts b/packages/app-tests/sidebarSearchTree.test.ts index ebd9be975..77fc4d329 100644 --- a/packages/app-tests/sidebarSearchTree.test.ts +++ b/packages/app-tests/sidebarSearchTree.test.ts @@ -1,7 +1,7 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { filterSidebarTree } from "../../src/lib/sidebarSearchTree.ts"; -import type { TreeNode } from "../../src/types/database.ts"; +import { filterSidebarTree } from "../../apps/desktop/src/lib/sidebarSearchTree.ts"; +import type { TreeNode } from "../../apps/desktop/src/types/database.ts"; test("preserves loaded table children when the table itself matches search", () => { const nodes: TreeNode[] = [ diff --git a/packages/app-tests/sidebarTreeItemLayout.test.ts b/packages/app-tests/sidebarTreeItemLayout.test.ts index b22b043cd..aa09aad3b 100644 --- a/packages/app-tests/sidebarTreeItemLayout.test.ts +++ b/packages/app-tests/sidebarTreeItemLayout.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { canTreeNodeExpand, canTreeNodeShowExpander, treeItemPaddingLeft } from "../../src/lib/sidebarTreeItemLayout.ts"; +import { canTreeNodeExpand, canTreeNodeShowExpander, treeItemPaddingLeft } from "../../apps/desktop/src/lib/sidebarTreeItemLayout.ts"; test("treeItemPaddingLeft converts tree depth to sidebar indentation", () => { assert.equal(treeItemPaddingLeft(0), "8px"); diff --git a/packages/app-tests/sqlAnalysis.test.ts b/packages/app-tests/sqlAnalysis.test.ts index 9b295be8d..77a71f86c 100644 --- a/packages/app-tests/sqlAnalysis.test.ts +++ b/packages/app-tests/sqlAnalysis.test.ts @@ -6,7 +6,7 @@ import { analyzeEditableQuery, analyzeEditableQueryEditability, queryEditabilityMessageKey, -} from "../../src/lib/sqlAnalysis.ts"; +} from "../../apps/desktop/src/lib/sqlAnalysis.ts"; test("recognizes a simple single-table SELECT as editable", () => { const result = analyzeEditableQueryEditability("select id, name from public.users where active = true order by id"); diff --git a/packages/app-tests/sqlCompletion.test.ts b/packages/app-tests/sqlCompletion.test.ts index ebe3b3307..ca97d74e2 100644 --- a/packages/app-tests/sqlCompletion.test.ts +++ b/packages/app-tests/sqlCompletion.test.ts @@ -6,7 +6,7 @@ import { shouldAutoOpenSqlCompletion, type SqlCompletionColumn, type SqlCompletionTable, -} from "../../src/lib/sqlCompletion.ts"; +} from "../../apps/desktop/src/lib/sqlCompletion.ts"; const tables: SqlCompletionTable[] = [ { name: "users", schema: "public", type: "table" }, diff --git a/packages/app-tests/sqlDiagnostics.test.ts b/packages/app-tests/sqlDiagnostics.test.ts index 1ef0f0cb4..a2767d4c4 100644 --- a/packages/app-tests/sqlDiagnostics.test.ts +++ b/packages/app-tests/sqlDiagnostics.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { parseSqlErrorLocation } from "../../src/lib/sqlDiagnostics.ts"; +import { parseSqlErrorLocation } from "../../apps/desktop/src/lib/sqlDiagnostics.ts"; test("parses generic line and column error positions", () => { assert.deepEqual(parseSqlErrorLocation("syntax error at line 3 column 12"), { diff --git a/packages/app-tests/sqlExecutionTarget.test.ts b/packages/app-tests/sqlExecutionTarget.test.ts index 65eb23edd..9e9ffa86e 100644 --- a/packages/app-tests/sqlExecutionTarget.test.ts +++ b/packages/app-tests/sqlExecutionTarget.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { resolveExecutableSql } from "../../src/lib/sqlExecutionTarget.ts"; +import { resolveExecutableSql } from "../../apps/desktop/src/lib/sqlExecutionTarget.ts"; test("uses selected SQL when the editor has a non-empty selection", () => { const sql = "SELECT * FROM users;\nSELECT * FROM orders;"; diff --git a/packages/app-tests/sqlFileOpen.test.ts b/packages/app-tests/sqlFileOpen.test.ts index 31c23fa72..60ed7628a 100644 --- a/packages/app-tests/sqlFileOpen.test.ts +++ b/packages/app-tests/sqlFileOpen.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { externalSqlFilePaths, isSqlFilePath, sqlFileTitleFromPath } from "../../src/lib/sqlFileOpen.ts"; +import { externalSqlFilePaths, isSqlFilePath, sqlFileTitleFromPath } from "../../apps/desktop/src/lib/sqlFileOpen.ts"; test("detects SQL file paths case-insensitively", () => { assert.equal(isSqlFilePath("/tmp/report.sql"), true); diff --git a/packages/app-tests/sqlFormatter.test.ts b/packages/app-tests/sqlFormatter.test.ts index f64648e89..934cfca02 100644 --- a/packages/app-tests/sqlFormatter.test.ts +++ b/packages/app-tests/sqlFormatter.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { formatSqlText } from "../../src/lib/sqlFormatter.ts"; +import { formatSqlText } from "../../apps/desktop/src/lib/sqlFormatter.ts"; test("formats SQL with uppercase keywords and readable line breaks", async () => { const formatted = await formatSqlText("select id, name from users where active = 1 order by name", "postgres"); diff --git a/packages/app-tests/sqlMetadataRefresh.test.ts b/packages/app-tests/sqlMetadataRefresh.test.ts index 3662a3cbc..bb38b5d9d 100644 --- a/packages/app-tests/sqlMetadataRefresh.test.ts +++ b/packages/app-tests/sqlMetadataRefresh.test.ts @@ -1,6 +1,6 @@ import assert from "node:assert/strict"; import test from "node:test"; -import { sqlMetadataRefreshScope, sqlMetadataRefreshTarget } from "../../src/lib/sqlMetadataRefresh.ts"; +import { sqlMetadataRefreshScope, sqlMetadataRefreshTarget } from "../../apps/desktop/src/lib/sqlMetadataRefresh.ts"; test("database DDL refreshes the connection database list", () => { assert.equal(sqlMetadataRefreshScope("CREATE DATABASE app;"), "connection"); diff --git a/packages/app-tests/sqlServerTree.test.ts b/packages/app-tests/sqlServerTree.test.ts index eb132055c..6554a2a72 100644 --- a/packages/app-tests/sqlServerTree.test.ts +++ b/packages/app-tests/sqlServerTree.test.ts @@ -1,7 +1,7 @@ import test from "node:test"; import assert from "node:assert/strict"; -import { buildSqlServerDatabaseTreeNodes } from "../../src/lib/sqlServerTree.ts"; -import type { ObjectInfo } from "../../src/types/database.ts"; +import { buildSqlServerDatabaseTreeNodes } from "../../apps/desktop/src/lib/sqlServerTree.ts"; +import type { ObjectInfo } from "../../apps/desktop/src/types/database.ts"; function obj(name: string, objectType = "TABLE"): ObjectInfo { return { diff --git a/packages/app-tests/sqlStatementSplit.test.ts b/packages/app-tests/sqlStatementSplit.test.ts index 298ef46e6..af62045d2 100644 --- a/packages/app-tests/sqlStatementSplit.test.ts +++ b/packages/app-tests/sqlStatementSplit.test.ts @@ -1,6 +1,6 @@ import test from "node:test"; import assert from "node:assert/strict"; -import { findStatementAtCursor } from "../../src/lib/sqlStatementSplit.ts"; +import { findStatementAtCursor } from "../../apps/desktop/src/lib/sqlStatementSplit.ts"; test("finds single statement", () => { assert.equal(findStatementAtCursor("SELECT 1", 3), "SELECT 1"); diff --git a/packages/app-tests/tabCloseActions.test.ts b/packages/app-tests/tabCloseActions.test.ts index 4f550dc24..397ca65f7 100644 --- a/packages/app-tests/tabCloseActions.test.ts +++ b/packages/app-tests/tabCloseActions.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { closeAllTabsState, closeOtherTabsState } from "../../src/lib/tabCloseActions.ts"; +import { closeAllTabsState, closeOtherTabsState } from "../../apps/desktop/src/lib/tabCloseActions.ts"; test("close other tabs keeps the target tab and makes it active", () => { const tabs = [{ id: "a" }, { id: "b" }, { id: "c" }]; diff --git a/packages/app-tests/tableDataExport.test.ts b/packages/app-tests/tableDataExport.test.ts index 8ee7d9c52..7149c116f 100644 --- a/packages/app-tests/tableDataExport.test.ts +++ b/packages/app-tests/tableDataExport.test.ts @@ -1,7 +1,7 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { fetchTableDataForExport, TABLE_DATA_EXPORT_PAGE_SIZE } from "../../src/lib/tableDataExport.ts"; -import type { QueryResult } from "../../src/types/database.ts"; +import { fetchTableDataForExport, TABLE_DATA_EXPORT_PAGE_SIZE } from "../../apps/desktop/src/lib/tableDataExport.ts"; +import type { QueryResult } from "../../apps/desktop/src/types/database.ts"; function result(rows: QueryResult["rows"]): QueryResult { return { diff --git a/packages/app-tests/tableEditing.test.ts b/packages/app-tests/tableEditing.test.ts index 4da78b054..66d22befa 100644 --- a/packages/app-tests/tableEditing.test.ts +++ b/packages/app-tests/tableEditing.test.ts @@ -12,8 +12,8 @@ import { isTableDataEditable, supportsDataGridTransaction, usesSyntheticRowIdKey, -} from "../../src/lib/tableEditing.ts"; -import type { ColumnInfo } from "../../src/types/database.ts"; +} from "../../apps/desktop/src/lib/tableEditing.ts"; +import type { ColumnInfo } from "../../apps/desktop/src/types/database.ts"; function column(name: string, isPrimaryKey = false): ColumnInfo { return { diff --git a/packages/app-tests/tableImport.test.ts b/packages/app-tests/tableImport.test.ts index ef8d3dc56..555f0d9b0 100644 --- a/packages/app-tests/tableImport.test.ts +++ b/packages/app-tests/tableImport.test.ts @@ -3,7 +3,7 @@ import test from "node:test"; import { autoMapImportColumns, normalizeImportColumnName, -} from "../../src/lib/tableImport.ts"; +} from "../../apps/desktop/src/lib/tableImport.ts"; test("normalizes import column names for matching", () => { assert.equal(normalizeImportColumnName(" User ID "), "user id"); diff --git a/packages/app-tests/tableSelectSql.test.ts b/packages/app-tests/tableSelectSql.test.ts index 7a3908164..076026456 100644 --- a/packages/app-tests/tableSelectSql.test.ts +++ b/packages/app-tests/tableSelectSql.test.ts @@ -1,7 +1,7 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { DBX_ROWID_COLUMN } from "../../src/lib/tableEditing.ts"; -import { buildTableSelectSql } from "../../src/lib/tableSelectSql.ts"; +import { DBX_ROWID_COLUMN } from "../../apps/desktop/src/lib/tableEditing.ts"; +import { buildTableSelectSql } from "../../apps/desktop/src/lib/tableSelectSql.ts"; test("builds a MySQL table WHERE query from search input", () => { const sql = buildTableSelectSql({ diff --git a/packages/app-tests/tableStructureEditorPresentation.test.ts b/packages/app-tests/tableStructureEditorPresentation.test.ts index acebad04d..d59fc9e94 100644 --- a/packages/app-tests/tableStructureEditorPresentation.test.ts +++ b/packages/app-tests/tableStructureEditorPresentation.test.ts @@ -2,7 +2,7 @@ import { readFileSync } from "node:fs"; import { strict as assert } from "node:assert"; import test from "node:test"; -const source = readFileSync("src/components/structure/TableStructureEditorDialog.vue", "utf8"); +const source = readFileSync("apps/desktop/src/components/structure/TableStructureEditorDialog.vue", "utf8"); test("column comments can be expanded into a multiline editor", () => { assert.match(source, /PopoverContent/); diff --git a/packages/app-tests/tableStructureEditorSql.test.ts b/packages/app-tests/tableStructureEditorSql.test.ts index 618b1746e..f35b36c4d 100644 --- a/packages/app-tests/tableStructureEditorSql.test.ts +++ b/packages/app-tests/tableStructureEditorSql.test.ts @@ -4,7 +4,7 @@ import { buildTableStructureChangeSql, type EditableStructureColumn, type EditableStructureIndex, -} from "../../src/lib/tableStructureEditorSql.ts"; +} from "../../apps/desktop/src/lib/tableStructureEditorSql.ts"; function column(overrides: Partial): EditableStructureColumn { return { diff --git a/packages/app-tests/tableStructureEditorState.test.ts b/packages/app-tests/tableStructureEditorState.test.ts index 09229705e..ef9388e6d 100644 --- a/packages/app-tests/tableStructureEditorState.test.ts +++ b/packages/app-tests/tableStructureEditorState.test.ts @@ -4,8 +4,8 @@ import { createColumnDrafts, createIndexDrafts, toColumnNames, -} from "../../src/lib/tableStructureEditorState.ts"; -import type { ColumnInfo, IndexInfo } from "../../src/types/database.ts"; +} from "../../apps/desktop/src/lib/tableStructureEditorState.ts"; +import type { ColumnInfo, IndexInfo } from "../../apps/desktop/src/types/database.ts"; const columns: ColumnInfo[] = [ { diff --git a/packages/app-tests/tableTree.test.ts b/packages/app-tests/tableTree.test.ts index 726019f95..d792b6afe 100644 --- a/packages/app-tests/tableTree.test.ts +++ b/packages/app-tests/tableTree.test.ts @@ -1,7 +1,7 @@ import assert from "node:assert/strict"; import test from "node:test"; -import { buildTableTreeNodes, expandCachedObjectBrowserNodes, objectGroupRefreshParentId } from "../../src/lib/tableTree.ts"; -import type { TableInfo } from "../../src/types/database.ts"; +import { buildTableTreeNodes, expandCachedObjectBrowserNodes, objectGroupRefreshParentId } from "../../apps/desktop/src/lib/tableTree.ts"; +import type { TableInfo } from "../../apps/desktop/src/types/database.ts"; function table(name: string, tableType: "TABLE" | "VIEW" = "TABLE"): TableInfo { return { name, table_type: tableType }; diff --git a/packages/app-tests/tauriRuntime.test.ts b/packages/app-tests/tauriRuntime.test.ts index 01ecd3c57..2db27fe6f 100644 --- a/packages/app-tests/tauriRuntime.test.ts +++ b/packages/app-tests/tauriRuntime.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { isTauriRuntime } from "../../src/lib/tauriRuntime.ts"; +import { isTauriRuntime } from "../../apps/desktop/src/lib/tauriRuntime.ts"; test("detects plain browser-like globals as non-Tauri runtime", () => { assert.equal(isTauriRuntime({}), false); diff --git a/packages/app-tests/transferProgressState.test.ts b/packages/app-tests/transferProgressState.test.ts index 5e2fd2755..bc42f844a 100644 --- a/packages/app-tests/transferProgressState.test.ts +++ b/packages/app-tests/transferProgressState.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { nextTransferTerminalState } from "../../src/lib/transferProgressState.ts"; +import { nextTransferTerminalState } from "../../apps/desktop/src/lib/transferProgressState.ts"; test("marks transfer as failed when a table progress event reports error", () => { const state = nextTransferTerminalState( diff --git a/packages/app-tests/treeNodeClick.test.ts b/packages/app-tests/treeNodeClick.test.ts index d1ba3f6da..31380f983 100644 --- a/packages/app-tests/treeNodeClick.test.ts +++ b/packages/app-tests/treeNodeClick.test.ts @@ -1,6 +1,6 @@ import test from "node:test"; import assert from "node:assert/strict"; -import { sidebarSelectionCopyAction, treeNodeRowAction, treeNodeRowDoubleClickAction } from "../../src/lib/treeNodeClick.ts"; +import { sidebarSelectionCopyAction, treeNodeRowAction, treeNodeRowDoubleClickAction } from "../../apps/desktop/src/lib/treeNodeClick.ts"; test("table and view rows open data without toggling structure groups", () => { assert.equal(treeNodeRowAction("table", true), "open-data"); diff --git a/packages/app-tests/treeRefreshTarget.test.ts b/packages/app-tests/treeRefreshTarget.test.ts index 7185d1ea1..fb88b3c35 100644 --- a/packages/app-tests/treeRefreshTarget.test.ts +++ b/packages/app-tests/treeRefreshTarget.test.ts @@ -1,7 +1,7 @@ import assert from "node:assert/strict"; import test from "node:test"; -import { findDatabaseTreeNode } from "../../src/lib/treeRefreshTarget.ts"; -import type { TreeNode } from "../../src/types/database.ts"; +import { findDatabaseTreeNode } from "../../apps/desktop/src/lib/treeRefreshTarget.ts"; +import type { TreeNode } from "../../apps/desktop/src/types/database.ts"; test("finds database refresh targets inside grouped sidebar trees", () => { const target: TreeNode = { diff --git a/packages/app-tests/useFlatTree.test.ts b/packages/app-tests/useFlatTree.test.ts index b929ff981..ec8fe5af2 100644 --- a/packages/app-tests/useFlatTree.test.ts +++ b/packages/app-tests/useFlatTree.test.ts @@ -6,8 +6,8 @@ import { SIDEBAR_TREE_SCROLL_BUFFER, flattenTree, shouldVirtualizeFlatTree, -} from "../../src/composables/useFlatTree.ts"; -import type { TreeNode } from "../../src/types/database.ts"; +} from "../../apps/desktop/src/composables/useFlatTree.ts"; +import type { TreeNode } from "../../apps/desktop/src/types/database.ts"; test("flattenTree preserves depth and node type for virtualized sidebar rows", () => { const nodes: TreeNode[] = [ diff --git a/packages/app-tests/useSqlExecution.test.ts b/packages/app-tests/useSqlExecution.test.ts index 26b4a31f9..cd98405ec 100644 --- a/packages/app-tests/useSqlExecution.test.ts +++ b/packages/app-tests/useSqlExecution.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { isDangerousSql, stripSqlComments } from "../../src/composables/useSqlExecution.ts"; +import { isDangerousSql, stripSqlComments } from "../../apps/desktop/src/composables/useSqlExecution.ts"; test("stripSqlComments removes block comments", () => { assert.equal(stripSqlComments("SELECT /* drop */ 1").includes("drop"), false); diff --git a/packages/app-tests/visibleDatabases.test.ts b/packages/app-tests/visibleDatabases.test.ts index e0216c33d..ca3aa903d 100644 --- a/packages/app-tests/visibleDatabases.test.ts +++ b/packages/app-tests/visibleDatabases.test.ts @@ -4,7 +4,7 @@ import { filterVisibleDatabaseNames, normalizeVisibleDatabaseSelection, visibleDatabaseFilterIsEnabled, -} from "../../src/lib/visibleDatabases.ts"; +} from "../../apps/desktop/src/lib/visibleDatabases.ts"; test("undefined visible database filter keeps every database", () => { assert.deepEqual(filterVisibleDatabaseNames(["app", "analytics"], undefined), ["app", "analytics"]); diff --git a/packages/app-tests/xlsxExport.test.ts b/packages/app-tests/xlsxExport.test.ts index 26b33ff23..fb91f59ff 100644 --- a/packages/app-tests/xlsxExport.test.ts +++ b/packages/app-tests/xlsxExport.test.ts @@ -1,6 +1,6 @@ import { strict as assert } from "node:assert"; import test from "node:test"; -import { buildXlsxWorkbook } from "../../src/lib/xlsxExport.ts"; +import { buildXlsxWorkbook } from "../../apps/desktop/src/lib/xlsxExport.ts"; test("builds an xlsx workbook zip with worksheet data", () => { const workbook = buildXlsxWorkbook({