From bd0ba5ab88d7d89bb24ec9f79187b69e2b0a6b31 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Fri, 3 Oct 2025 06:46:07 -0400 Subject: [PATCH 01/23] turn on codex medium reasoning again --- packages/opencode/src/provider/transform.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index 920699a2b..3232a5f17 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -92,7 +92,7 @@ export namespace ProviderTransform { } if (modelID.includes("gpt-5") && !modelID.includes("gpt-5-chat")) { - if (!modelID.includes("codex")) result["reasoningEffort"] = "medium" + result["reasoningEffort"] = "medium" if (providerID !== "azure") { result["textVerbosity"] = modelID.includes("codex") ? "medium" : "low" } From 253105bcf5a494c82bf35d01512de895e5f585e1 Mon Sep 17 00:00:00 2001 From: opencode Date: Fri, 3 Oct 2025 10:53:10 +0000 Subject: [PATCH 02/23] release: v0.14.1 --- bun.lock | 20 ++++++++++---------- packages/app/package.json | 2 +- packages/console/app/package.json | 2 +- packages/console/core/package.json | 2 +- packages/console/function/package.json | 2 +- packages/console/mail/package.json | 2 +- packages/console/scripts/package.json | 2 +- packages/function/package.json | 2 +- packages/opencode/package.json | 2 +- packages/plugin/package.json | 2 +- packages/sdk/js/package.json | 2 +- packages/web/package.json | 2 +- sdks/vscode/package.json | 2 +- 13 files changed, 22 insertions(+), 22 deletions(-) diff --git a/bun.lock b/bun.lock index f279671ca..1a0c12129 100644 --- a/bun.lock +++ b/bun.lock @@ -12,7 +12,7 @@ }, "packages/app": { "name": "@opencode/app", - "version": "0.14.0", + "version": "0.14.1", "dependencies": { "@kobalte/core": "catalog:", "@opencode-ai/sdk": "workspace:*", @@ -61,7 +61,7 @@ }, "packages/console/core": { "name": "@opencode/console-core", - "version": "0.14.0", + "version": "0.14.1", "dependencies": { "@aws-sdk/client-sts": "3.782.0", "@jsx-email/render": "1.1.1", @@ -81,7 +81,7 @@ }, "packages/console/function": { "name": "@opencode/console-function", - "version": "0.14.0", + "version": "0.14.1", "dependencies": { "@ai-sdk/anthropic": "2.0.0", "@ai-sdk/openai": "2.0.2", @@ -101,7 +101,7 @@ }, "packages/console/mail": { "name": "@opencode/console-mail", - "version": "0.14.0", + "version": "0.14.1", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", @@ -117,7 +117,7 @@ }, "packages/console/scripts": { "name": "@opencode/console-scripts", - "version": "0.14.0", + "version": "0.14.1", "dependencies": { "@opencode/console-core": "workspace:*", "tsx": "4.20.5", @@ -129,7 +129,7 @@ }, "packages/function": { "name": "@opencode/function", - "version": "0.14.0", + "version": "0.14.1", "dependencies": { "@octokit/auth-app": "8.0.1", "@octokit/rest": "22.0.0", @@ -144,7 +144,7 @@ }, "packages/opencode": { "name": "opencode", - "version": "0.14.0", + "version": "0.14.1", "bin": { "opencode": "./bin/opencode", }, @@ -196,7 +196,7 @@ }, "packages/plugin": { "name": "@opencode-ai/plugin", - "version": "0.14.0", + "version": "0.14.1", "dependencies": { "@opencode-ai/sdk": "workspace:*", "zod": "catalog:", @@ -208,7 +208,7 @@ }, "packages/sdk/js": { "name": "@opencode-ai/sdk", - "version": "0.14.0", + "version": "0.14.1", "dependencies": { "@hey-api/openapi-ts": "0.81.0", }, @@ -220,7 +220,7 @@ }, "packages/web": { "name": "@opencode/web", - "version": "0.14.0", + "version": "0.14.1", "dependencies": { "@astrojs/cloudflare": "12.6.3", "@astrojs/markdown-remark": "6.3.1", diff --git a/packages/app/package.json b/packages/app/package.json index 67cc93ad9..1cc84cc30 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/app", - "version": "0.14.0", + "version": "0.14.1", "description": "", "type": "module", "scripts": { diff --git a/packages/console/app/package.json b/packages/console/app/package.json index 5b25a5f7c..20d7ed243 100644 --- a/packages/console/app/package.json +++ b/packages/console/app/package.json @@ -7,7 +7,7 @@ "dev:remote": "VITE_AUTH_URL=https://auth.dev.opencode.ai bun sst shell --stage=dev bun dev", "build": "vinxi build && ../../opencode/script/schema.ts ./.output/public/config.json", "start": "vinxi start", - "version": "0.14.0" + "version": "0.14.1" }, "dependencies": { "@ibm/plex": "6.4.1", diff --git a/packages/console/core/package.json b/packages/console/core/package.json index 4ae04b9a6..2ad0aaf38 100644 --- a/packages/console/core/package.json +++ b/packages/console/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/console-core", - "version": "0.14.0", + "version": "0.14.1", "private": true, "type": "module", "dependencies": { diff --git a/packages/console/function/package.json b/packages/console/function/package.json index 9843feee0..3239b0b15 100644 --- a/packages/console/function/package.json +++ b/packages/console/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/console-function", - "version": "0.14.0", + "version": "0.14.1", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/console/mail/package.json b/packages/console/mail/package.json index e03825290..666b06d1a 100644 --- a/packages/console/mail/package.json +++ b/packages/console/mail/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/console-mail", - "version": "0.14.0", + "version": "0.14.1", "private": true, "type": "module", "dependencies": { diff --git a/packages/console/scripts/package.json b/packages/console/scripts/package.json index 005edd094..a83e349eb 100644 --- a/packages/console/scripts/package.json +++ b/packages/console/scripts/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/console-scripts", - "version": "0.14.0", + "version": "0.14.1", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/function/package.json b/packages/function/package.json index 3660eb26a..9bacf0d44 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/function", - "version": "0.14.0", + "version": "0.14.1", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index f8d71b4ab..a8041a000 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "0.14.0", + "version": "0.14.1", "name": "opencode", "type": "module", "private": true, diff --git a/packages/plugin/package.json b/packages/plugin/package.json index c1fe270cb..a69e74854 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/plugin", - "version": "0.14.0", + "version": "0.14.1", "type": "module", "scripts": { "typecheck": "tsc --noEmit", diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index ad34494d0..1271b2ee3 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/sdk", - "version": "0.14.0", + "version": "0.14.1", "type": "module", "scripts": { "typecheck": "tsc --noEmit", diff --git a/packages/web/package.json b/packages/web/package.json index df19307a6..fc5516309 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,7 +1,7 @@ { "name": "@opencode/web", "type": "module", - "version": "0.14.0", + "version": "0.14.1", "scripts": { "dev": "astro dev", "dev:remote": "VITE_API_URL=https://api.opencode.ai astro dev", diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index 8ee62545d..4e01421ad 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -2,7 +2,7 @@ "name": "opencode", "displayName": "opencode", "description": "opencode for VS Code", - "version": "0.14.0", + "version": "0.14.1", "publisher": "sst-dev", "repository": { "type": "git", From ad0f137e35a78d7105354269e6b6c4fd9e70e53c Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Fri, 3 Oct 2025 06:52:15 -0400 Subject: [PATCH 03/23] ci: stuff --- script/publish.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/script/publish.ts b/script/publish.ts index 97ced29ab..142981171 100755 --- a/script/publish.ts +++ b/script/publish.ts @@ -84,6 +84,7 @@ if (!snapshot) { notes.push(line) } } + console.log(notes) server.close() } From 3be1f9b67ec754a1180ddb4de4586f43beb69043 Mon Sep 17 00:00:00 2001 From: Frank Date: Thu, 2 Oct 2025 18:42:52 -0400 Subject: [PATCH 04/23] wip: zen --- .../core/migrations/0023_optimal_paibok.sql | 2 + .../core/migrations/meta/0023_snapshot.json | 738 ++++++++++++++++++ .../core/migrations/meta/_journal.json | 7 + packages/console/core/src/schema/user.sql.ts | 10 +- 4 files changed, 750 insertions(+), 7 deletions(-) create mode 100644 packages/console/core/migrations/0023_optimal_paibok.sql create mode 100644 packages/console/core/migrations/meta/0023_snapshot.json diff --git a/packages/console/core/migrations/0023_optimal_paibok.sql b/packages/console/core/migrations/0023_optimal_paibok.sql new file mode 100644 index 000000000..93e78489f --- /dev/null +++ b/packages/console/core/migrations/0023_optimal_paibok.sql @@ -0,0 +1,2 @@ +CREATE INDEX `global_account_id` ON `user` (`account_id`);--> statement-breakpoint +CREATE INDEX `global_email` ON `user` (`email`); \ No newline at end of file diff --git a/packages/console/core/migrations/meta/0023_snapshot.json b/packages/console/core/migrations/meta/0023_snapshot.json new file mode 100644 index 000000000..8a40e42a4 --- /dev/null +++ b/packages/console/core/migrations/meta/0023_snapshot.json @@ -0,0 +1,738 @@ +{ + "version": "5", + "dialect": "mysql", + "id": "6857f409-1b5d-4752-9d65-a82ee70e6ad2", + "prevId": "2296e9e4-bee6-485b-a146-6666ac8dc0d0", + "tables": { + "account": { + "name": "account", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "email": { + "name": "email", + "columns": [ + "email" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "billing": { + "name": "billing", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "customer_id": { + "name": "customer_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "payment_method_id": { + "name": "payment_method_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "payment_method_last4": { + "name": "payment_method_last4", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "balance": { + "name": "balance", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "monthly_limit": { + "name": "monthly_limit", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "monthly_usage": { + "name": "monthly_usage", + "type": "bigint", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_monthly_usage_updated": { + "name": "time_monthly_usage_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "reload": { + "name": "reload", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "reload_error": { + "name": "reload_error", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_reload_error": { + "name": "time_reload_error", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_reload_locked_till": { + "name": "time_reload_locked_till", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "global_customer_id": { + "name": "global_customer_id", + "columns": [ + "customer_id" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "billing_workspace_id_id_pk": { + "name": "billing_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "payment": { + "name": "payment", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "customer_id": { + "name": "customer_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "invoice_id": { + "name": "invoice_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "payment_id": { + "name": "payment_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "amount": { + "name": "amount", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_refunded": { + "name": "time_refunded", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "payment_workspace_id_id_pk": { + "name": "payment_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "usage": { + "name": "usage", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "model": { + "name": "model", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "input_tokens": { + "name": "input_tokens", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "output_tokens": { + "name": "output_tokens", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "reasoning_tokens": { + "name": "reasoning_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cache_read_tokens": { + "name": "cache_read_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cache_write_5m_tokens": { + "name": "cache_write_5m_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cache_write_1h_tokens": { + "name": "cache_write_1h_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cost": { + "name": "cost", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "usage_workspace_id_id_pk": { + "name": "usage_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "key": { + "name": "key", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "actor": { + "name": "actor", + "type": "json", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "old_name": { + "name": "old_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "key": { + "name": "key", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_used": { + "name": "time_used", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "global_key": { + "name": "global_key", + "columns": [ + "key" + ], + "isUnique": true + }, + "name": { + "name": "name", + "columns": [ + "workspace_id", + "name" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "key_workspace_id_id_pk": { + "name": "key_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "user": { + "name": "user", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "account_id": { + "name": "account_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "old_account_id": { + "name": "old_account_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "old_email": { + "name": "old_email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_seen": { + "name": "time_seen", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "color": { + "name": "color", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "enum('admin','member')", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "user_account_id": { + "name": "user_account_id", + "columns": [ + "workspace_id", + "account_id" + ], + "isUnique": true + }, + "user_email": { + "name": "user_email", + "columns": [ + "workspace_id", + "email" + ], + "isUnique": true + }, + "global_account_id": { + "name": "global_account_id", + "columns": [ + "account_id" + ], + "isUnique": false + }, + "global_email": { + "name": "global_email", + "columns": [ + "email" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "user_workspace_id_id_pk": { + "name": "user_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "workspace": { + "name": "workspace", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "slug": { + "name": "slug", + "columns": [ + "slug" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "workspace_id": { + "name": "workspace_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + } + }, + "views": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "tables": {}, + "indexes": {} + } +} \ No newline at end of file diff --git a/packages/console/core/migrations/meta/_journal.json b/packages/console/core/migrations/meta/_journal.json index a240ce4a4..eec9455b9 100644 --- a/packages/console/core/migrations/meta/_journal.json +++ b/packages/console/core/migrations/meta/_journal.json @@ -162,6 +162,13 @@ "when": 1759427432588, "tag": "0022_nice_dreadnoughts", "breakpoints": true + }, + { + "idx": 23, + "version": "5", + "when": 1759444220653, + "tag": "0023_optimal_paibok", + "breakpoints": true } ] } \ No newline at end of file diff --git a/packages/console/core/src/schema/user.sql.ts b/packages/console/core/src/schema/user.sql.ts index 861c14b47..cce0cb986 100644 --- a/packages/console/core/src/schema/user.sql.ts +++ b/packages/console/core/src/schema/user.sql.ts @@ -1,7 +1,6 @@ -import { mysqlTable, uniqueIndex, varchar, int, mysqlEnum, foreignKey } from "drizzle-orm/mysql-core" +import { mysqlTable, uniqueIndex, varchar, int, mysqlEnum, index } from "drizzle-orm/mysql-core" import { timestamps, ulid, utc, workspaceColumns } from "../drizzle/types" import { workspaceIndexes } from "./workspace.sql" -import { AccountTable } from "./account.sql" export const UserRole = ["admin", "member"] as const @@ -23,10 +22,7 @@ export const UserTable = mysqlTable( ...workspaceIndexes(table), uniqueIndex("user_account_id").on(table.workspaceID, table.accountID), uniqueIndex("user_email").on(table.workspaceID, table.email), - foreignKey({ - columns: [table.accountID], - foreignColumns: [AccountTable.id], - name: "global_account_id", - }), + index("global_account_id").on(table.accountID), + index("global_email").on(table.email), ], ) From 600b512c9cf458a26917f40a6a2ecc0eb9501f5e Mon Sep 17 00:00:00 2001 From: Frank Date: Thu, 2 Oct 2025 19:02:57 -0400 Subject: [PATCH 05/23] wip: zen --- packages/console/app/src/routes/index.tsx | 15 +------------ packages/console/app/src/routes/temp.tsx | 14 ------------ packages/console/app/src/routes/zen/index.tsx | 22 ++++--------------- 3 files changed, 5 insertions(+), 46 deletions(-) diff --git a/packages/console/app/src/routes/index.tsx b/packages/console/app/src/routes/index.tsx index 281cec099..d51e9ec18 100644 --- a/packages/console/app/src/routes/index.tsx +++ b/packages/console/app/src/routes/index.tsx @@ -4,10 +4,7 @@ import { HttpHeader } from "@solidjs/start" import video from "../asset/lander/opencode-min.mp4" import videoPoster from "../asset/lander/opencode-poster.png" import { IconCopy, IconCheck } from "../component/icon" -import { A, createAsync, query } from "@solidjs/router" -import { getActor } from "~/context/auth" -import { withActor } from "~/context/auth.withActor" -import { Account } from "@opencode/console-core/account.js" +import { A, createAsync } from "@solidjs/router" import { EmailSignup } from "~/component/email-signup" import { Tabs } from "@kobalte/core/tabs" import { Faq } from "~/component/faq" @@ -26,18 +23,8 @@ function CopyStatus() { ) } -const defaultWorkspace = query(async () => { - "use server" - const actor = await getActor() - if (actor.type === "account") { - const workspaces = await withActor(() => Account.workspaces()) - return workspaces[0].id - } -}, "defaultWorkspace") - export default function Home() { const githubData = createAsync(() => github()) - const workspace = createAsync(() => defaultWorkspace()) const release = createMemo(() => githubData()?.release) const handleCopyClick = (event: Event) => { diff --git a/packages/console/app/src/routes/temp.tsx b/packages/console/app/src/routes/temp.tsx index 3d663c27e..379f79f7a 100644 --- a/packages/console/app/src/routes/temp.tsx +++ b/packages/console/app/src/routes/temp.tsx @@ -5,10 +5,6 @@ import logoLight from "../asset/logo-ornate-light.svg" import logoDark from "../asset/logo-ornate-dark.svg" import IMG_SPLASH from "../asset/lander/screenshot-splash.png" import { IconCopy, IconCheck } from "../component/icon" -import { createAsync, query } from "@solidjs/router" -import { getActor } from "~/context/auth" -import { withActor } from "~/context/auth.withActor" -import { Account } from "@opencode/console-core/account.js" function CopyStatus() { return ( @@ -19,17 +15,7 @@ function CopyStatus() { ) } -const defaultWorkspace = query(async () => { - "use server" - const actor = await getActor() - if (actor.type === "account") { - const workspaces = await withActor(() => Account.workspaces()) - return workspaces[0].id - } -}, "defaultWorkspace") - export default function Home() { - const workspace = createAsync(() => defaultWorkspace()) onMount(() => { const commands = document.querySelectorAll("[data-copy]") for (const button of commands) { diff --git a/packages/console/app/src/routes/zen/index.tsx b/packages/console/app/src/routes/zen/index.tsx index 57cca2e2b..05c523235 100644 --- a/packages/console/app/src/routes/zen/index.tsx +++ b/packages/console/app/src/routes/zen/index.tsx @@ -10,28 +10,13 @@ import avatarJay from "../../asset/lander/avatar-jay.png" import avatarFrank from "../../asset/lander/avatar-frank.png" import avatarAdam from "../../asset/lander/avatar-adam.png" import avatarDavid from "../../asset/lander/avatar-david.png" -import { A, createAsync, query } from "@solidjs/router" -import { getActor } from "~/context/auth" -import { withActor } from "~/context/auth.withActor" -import { Account } from "@opencode/console-core/account.js" import { EmailSignup } from "~/component/email-signup" import { Faq } from "~/component/faq" import { Legal } from "~/component/legal" import { Footer } from "~/component/footer" import { Header } from "~/component/header" -const defaultWorkspace = query(async () => { - "use server" - const actor = await getActor() - if (actor.type === "account") { - const workspaces = await withActor(() => Account.workspaces()) - return workspaces[0].id - } -}, "defaultWorkspace") - export default function Home() { - const workspace = createAsync(() => defaultWorkspace()) - return (
@@ -146,7 +131,8 @@ export default function Home() {

What problem is Zen solving?

- There are so many models available, but only a few work well with coding agents. Most providers configure them differently with varying results. + There are so many models available, but only a few work well with coding agents. Most providers + configure them differently with varying results.

We're fixing this for everyone, not just OpenCode users.

@@ -216,8 +202,8 @@ export default function Home() { Dax Raad ex-CEO, Terminal Products -
@OpenCode Zen has been life - changing, it's truly a no-brainer. +
+ @OpenCode Zen has been life changing, it's truly a no-brainer.
From 60e21642a5a2585ad052cd89ebcaf6e8ed040042 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 3 Oct 2025 07:36:12 -0400 Subject: [PATCH 06/23] wip: zen --- packages/console/core/src/billing.ts | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/console/core/src/billing.ts b/packages/console/core/src/billing.ts index 9c683a359..34c18668e 100644 --- a/packages/console/core/src/billing.ts +++ b/packages/console/core/src/billing.ts @@ -1,13 +1,14 @@ import { Stripe } from "stripe" -import { Database, eq, sql } from "./drizzle" +import { and, Database, eq, sql } from "./drizzle" import { BillingTable, PaymentTable, UsageTable } from "./schema/billing.sql" import { Actor } from "./actor" import { fn } from "./util/fn" import { z } from "zod" -import { User } from "./user" import { Resource } from "@opencode/console-resource" import { Identifier } from "./identifier" import { centsToMicroCents } from "./util/price" +import { UserTable } from "./schema/user.sql" +import { AccountTable } from "./schema/account.sql" export namespace Billing { export const CHARGE_NAME = "opencode credits" @@ -168,10 +169,19 @@ export namespace Billing { cancelUrl: z.string(), }), async (input) => { - const account = Actor.assert("user") + const user = Actor.assert("user") const { successUrl, cancelUrl } = input - const user = await User.fromID(account.properties.userID) + const email = await Database.use((tx) => + tx + .select({ + email: AccountTable.email, + }) + .from(UserTable) + .innerJoin(AccountTable, eq(UserTable.accountID, AccountTable.id)) + .where(and(eq(UserTable.id, user.properties.userID), eq(UserTable.workspaceID, Actor.workspace()))) + .then((rows) => rows[0]?.email), + ) const customer = await Billing.get() const session = await Billing.stripe().checkout.sessions.create({ mode: "payment", @@ -206,7 +216,7 @@ export namespace Billing { }, } : { - customer_email: user.email!, + customer_email: email, customer_creation: "always", }), currency: "usd", From aae387f7dccc6b31386592380318b2fefe27bf92 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Fri, 3 Oct 2025 12:04:07 +0000 Subject: [PATCH 07/23] ignore: update download stats 2025-10-03 --- STATS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/STATS.md b/STATS.md index 002e391c3..53b370c93 100644 --- a/STATS.md +++ b/STATS.md @@ -97,3 +97,4 @@ | 2025-09-30 | 427,991 (+8,072) | 336,472 (+8,439) | 764,463 (+16,511) | | 2025-10-01 | 433,591 (+5,600) | 341,742 (+5,270) | 775,333 (+10,870) | | 2025-10-02 | 440,852 (+7,261) | 348,099 (+6,357) | 788,951 (+13,618) | +| 2025-10-03 | 446,829 (+5,977) | 359,937 (+11,838) | 806,766 (+17,815) | From 1d58b5548287a3e32ffce3abdcf0f2db08fdb155 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 3 Oct 2025 07:45:35 -0400 Subject: [PATCH 08/23] wip: zen --- packages/console/app/src/routes/workspace.tsx | 15 +++------------ packages/console/core/src/billing.ts | 16 +++------------- packages/console/core/src/user.ts | 13 +++++++++++++ 3 files changed, 19 insertions(+), 25 deletions(-) diff --git a/packages/console/app/src/routes/workspace.tsx b/packages/console/app/src/routes/workspace.tsx index 9a90fb9a9..097e451b2 100644 --- a/packages/console/app/src/routes/workspace.tsx +++ b/packages/console/app/src/routes/workspace.tsx @@ -2,17 +2,7 @@ import "./workspace.css" import { useAuthSession } from "~/context/auth.session" import { IconLogo } from "../component/icon" import { withActor } from "~/context/auth.withActor" -import { - query, - action, - redirect, - createAsync, - RouteSectionProps, - Navigate, - useNavigate, - useParams, - A, -} from "@solidjs/router" +import { query, action, redirect, createAsync, RouteSectionProps, useParams, A } from "@solidjs/router" import { User } from "@opencode/console-core/user.js" import { Actor } from "@opencode/console-core/actor.js" import { getRequestEvent } from "solid-js/web" @@ -21,7 +11,8 @@ const getUserInfo = query(async (workspaceID: string) => { "use server" return withActor(async () => { const actor = Actor.assert("user") - return await User.fromID(actor.properties.userID) + const email = await User.getAccountEmail(actor.properties.userID) + return { email } }, workspaceID) }, "userInfo") diff --git a/packages/console/core/src/billing.ts b/packages/console/core/src/billing.ts index 34c18668e..e79e455bc 100644 --- a/packages/console/core/src/billing.ts +++ b/packages/console/core/src/billing.ts @@ -7,8 +7,7 @@ import { z } from "zod" import { Resource } from "@opencode/console-resource" import { Identifier } from "./identifier" import { centsToMicroCents } from "./util/price" -import { UserTable } from "./schema/user.sql" -import { AccountTable } from "./schema/account.sql" +import { User } from "./user" export namespace Billing { export const CHARGE_NAME = "opencode credits" @@ -172,16 +171,7 @@ export namespace Billing { const user = Actor.assert("user") const { successUrl, cancelUrl } = input - const email = await Database.use((tx) => - tx - .select({ - email: AccountTable.email, - }) - .from(UserTable) - .innerJoin(AccountTable, eq(UserTable.accountID, AccountTable.id)) - .where(and(eq(UserTable.id, user.properties.userID), eq(UserTable.workspaceID, Actor.workspace()))) - .then((rows) => rows[0]?.email), - ) + const email = await User.getAccountEmail(user.properties.userID) const customer = await Billing.get() const session = await Billing.stripe().checkout.sessions.create({ mode: "payment", @@ -216,7 +206,7 @@ export namespace Billing { }, } : { - customer_email: email, + customer_email: email!, customer_creation: "always", }), currency: "usd", diff --git a/packages/console/core/src/user.ts b/packages/console/core/src/user.ts index 8f00722e6..23612de5e 100644 --- a/packages/console/core/src/user.ts +++ b/packages/console/core/src/user.ts @@ -50,6 +50,19 @@ export namespace User { ), ) + export const getAccountEmail = fn(z.string(), (id) => + Database.use((tx) => + tx + .select({ + email: AccountTable.email, + }) + .from(UserTable) + .leftJoin(AccountTable, eq(UserTable.accountID, AccountTable.id)) + .where(and(eq(UserTable.workspaceID, Actor.workspace()), eq(UserTable.id, id))) + .then((rows) => rows[0]?.email), + ), + ) + export const invite = fn( z.object({ email: z.string(), From 3fa280d21878ae391674a21758199df3d2d8c3b5 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Fri, 3 Oct 2025 09:04:28 -0500 Subject: [PATCH 09/23] chore: app -> desktop --- bun.lock | 96 +++++++++---------- infra/desktop.ts | 2 +- packages/{app => desktop}/.gitignore | 0 packages/{app => desktop}/AGENTS.md | 0 packages/{app => desktop}/README.md | 0 packages/{app => desktop}/index.html | 0 packages/{app => desktop}/package.json | 2 +- .../scripts/vite-theme-plugin.ts | 0 .../{app => desktop}/src/assets/favicon.svg | 0 .../src/assets/file-icons/3d.svg | 0 .../src/assets/file-icons/abap.svg | 0 .../src/assets/file-icons/abc.svg | 0 .../src/assets/file-icons/actionscript.svg | 0 .../src/assets/file-icons/ada.svg | 0 .../assets/file-icons/adobe-illustrator.svg | 0 .../file-icons/adobe-illustrator_light.svg | 0 .../src/assets/file-icons/adobe-photoshop.svg | 0 .../file-icons/adobe-photoshop_light.svg | 0 .../src/assets/file-icons/adobe-swc.svg | 0 .../src/assets/file-icons/adonis.svg | 0 .../src/assets/file-icons/advpl.svg | 0 .../src/assets/file-icons/amplify.svg | 0 .../src/assets/file-icons/android.svg | 0 .../src/assets/file-icons/angular.svg | 0 .../src/assets/file-icons/antlr.svg | 0 .../src/assets/file-icons/apiblueprint.svg | 0 .../src/assets/file-icons/apollo.svg | 0 .../src/assets/file-icons/applescript.svg | 0 .../src/assets/file-icons/apps-script.svg | 0 .../src/assets/file-icons/appveyor.svg | 0 .../src/assets/file-icons/architecture.svg | 0 .../src/assets/file-icons/arduino.svg | 0 .../src/assets/file-icons/asciidoc.svg | 0 .../src/assets/file-icons/assembly.svg | 0 .../src/assets/file-icons/astro-config.svg | 0 .../src/assets/file-icons/astro.svg | 0 .../src/assets/file-icons/astyle.svg | 0 .../src/assets/file-icons/audio.svg | 0 .../src/assets/file-icons/aurelia.svg | 0 .../src/assets/file-icons/authors.svg | 0 .../src/assets/file-icons/auto.svg | 0 .../src/assets/file-icons/auto_light.svg | 0 .../src/assets/file-icons/autohotkey.svg | 0 .../src/assets/file-icons/autoit.svg | 0 .../src/assets/file-icons/azure-pipelines.svg | 0 .../src/assets/file-icons/azure.svg | 0 .../src/assets/file-icons/babel.svg | 0 .../src/assets/file-icons/ballerina.svg | 0 .../src/assets/file-icons/bazel.svg | 0 .../src/assets/file-icons/bbx.svg | 0 .../src/assets/file-icons/beancount.svg | 0 .../src/assets/file-icons/bench-js.svg | 0 .../src/assets/file-icons/bench-jsx.svg | 0 .../src/assets/file-icons/bench-ts.svg | 0 .../src/assets/file-icons/bibliography.svg | 0 .../src/assets/file-icons/bibtex-style.svg | 0 .../src/assets/file-icons/bicep.svg | 0 .../src/assets/file-icons/biome.svg | 0 .../src/assets/file-icons/bitbucket.svg | 0 .../src/assets/file-icons/bithound.svg | 0 .../src/assets/file-icons/blender.svg | 0 .../src/assets/file-icons/blink.svg | 0 .../src/assets/file-icons/blink_light.svg | 0 .../src/assets/file-icons/blitz.svg | 0 .../src/assets/file-icons/bower.svg | 0 .../src/assets/file-icons/brainfuck.svg | 0 .../src/assets/file-icons/browserlist.svg | 0 .../assets/file-icons/browserlist_light.svg | 0 .../src/assets/file-icons/bruno.svg | 0 .../src/assets/file-icons/buck.svg | 0 .../src/assets/file-icons/bucklescript.svg | 0 .../src/assets/file-icons/buildkite.svg | 0 .../src/assets/file-icons/bun.svg | 0 .../src/assets/file-icons/bun_light.svg | 0 .../src/assets/file-icons/c.svg | 0 .../src/assets/file-icons/c3.svg | 0 .../src/assets/file-icons/cabal.svg | 0 .../src/assets/file-icons/caddy.svg | 0 .../src/assets/file-icons/cadence.svg | 0 .../src/assets/file-icons/cairo.svg | 0 .../src/assets/file-icons/cake.svg | 0 .../src/assets/file-icons/capacitor.svg | 0 .../src/assets/file-icons/capnp.svg | 0 .../src/assets/file-icons/cbx.svg | 0 .../src/assets/file-icons/cds.svg | 0 .../src/assets/file-icons/certificate.svg | 0 .../src/assets/file-icons/changelog.svg | 0 .../src/assets/file-icons/chess.svg | 0 .../src/assets/file-icons/chess_light.svg | 0 .../src/assets/file-icons/chrome.svg | 0 .../src/assets/file-icons/circleci.svg | 0 .../src/assets/file-icons/circleci_light.svg | 0 .../src/assets/file-icons/citation.svg | 0 .../src/assets/file-icons/clangd.svg | 0 .../src/assets/file-icons/claude.svg | 0 .../src/assets/file-icons/cline.svg | 0 .../src/assets/file-icons/clojure.svg | 0 .../src/assets/file-icons/cloudfoundry.svg | 0 .../src/assets/file-icons/cmake.svg | 0 .../src/assets/file-icons/coala.svg | 0 .../src/assets/file-icons/cobol.svg | 0 .../src/assets/file-icons/coconut.svg | 0 .../src/assets/file-icons/code-climate.svg | 0 .../assets/file-icons/code-climate_light.svg | 0 .../src/assets/file-icons/codecov.svg | 0 .../src/assets/file-icons/codeowners.svg | 0 .../src/assets/file-icons/coderabbit-ai.svg | 0 .../src/assets/file-icons/coffee.svg | 0 .../src/assets/file-icons/coldfusion.svg | 0 .../assets/file-icons/coloredpetrinets.svg | 0 .../src/assets/file-icons/command.svg | 0 .../src/assets/file-icons/commitizen.svg | 0 .../src/assets/file-icons/commitlint.svg | 0 .../src/assets/file-icons/concourse.svg | 0 .../src/assets/file-icons/conduct.svg | 0 .../src/assets/file-icons/console.svg | 0 .../src/assets/file-icons/contentlayer.svg | 0 .../src/assets/file-icons/context.svg | 0 .../src/assets/file-icons/contributing.svg | 0 .../src/assets/file-icons/controller.svg | 0 .../src/assets/file-icons/copilot.svg | 0 .../src/assets/file-icons/copilot_light.svg | 0 .../src/assets/file-icons/cpp.svg | 0 .../src/assets/file-icons/craco.svg | 0 .../src/assets/file-icons/credits.svg | 0 .../src/assets/file-icons/crystal.svg | 0 .../src/assets/file-icons/crystal_light.svg | 0 .../src/assets/file-icons/csharp.svg | 0 .../src/assets/file-icons/css-map.svg | 0 .../src/assets/file-icons/css.svg | 0 .../src/assets/file-icons/cucumber.svg | 0 .../src/assets/file-icons/cuda.svg | 0 .../src/assets/file-icons/cursor.svg | 0 .../src/assets/file-icons/cursor_light.svg | 0 .../src/assets/file-icons/cypress.svg | 0 .../src/assets/file-icons/d.svg | 0 .../src/assets/file-icons/dart.svg | 0 .../src/assets/file-icons/dart_generated.svg | 0 .../src/assets/file-icons/database.svg | 0 .../src/assets/file-icons/deepsource.svg | 0 .../src/assets/file-icons/denizenscript.svg | 0 .../src/assets/file-icons/deno.svg | 0 .../src/assets/file-icons/deno_light.svg | 0 .../src/assets/file-icons/dependabot.svg | 0 .../assets/file-icons/dependencies-update.svg | 0 .../src/assets/file-icons/dhall.svg | 0 .../src/assets/file-icons/diff.svg | 0 .../src/assets/file-icons/dinophp.svg | 0 .../src/assets/file-icons/disc.svg | 0 .../src/assets/file-icons/django.svg | 0 .../src/assets/file-icons/dll.svg | 0 .../src/assets/file-icons/docker.svg | 0 .../assets/file-icons/doctex-installer.svg | 0 .../src/assets/file-icons/document.svg | 0 .../src/assets/file-icons/dotjs.svg | 0 .../src/assets/file-icons/drawio.svg | 0 .../src/assets/file-icons/drizzle.svg | 0 .../src/assets/file-icons/drone.svg | 0 .../src/assets/file-icons/drone_light.svg | 0 .../src/assets/file-icons/duc.svg | 0 .../src/assets/file-icons/dune.svg | 0 .../src/assets/file-icons/edge.svg | 0 .../src/assets/file-icons/editorconfig.svg | 0 .../src/assets/file-icons/ejs.svg | 0 .../src/assets/file-icons/elixir.svg | 0 .../src/assets/file-icons/elm.svg | 0 .../src/assets/file-icons/email.svg | 0 .../src/assets/file-icons/ember.svg | 0 .../src/assets/file-icons/epub.svg | 0 .../src/assets/file-icons/erlang.svg | 0 .../src/assets/file-icons/esbuild.svg | 0 .../src/assets/file-icons/eslint.svg | 0 .../src/assets/file-icons/excalidraw.svg | 0 .../src/assets/file-icons/exe.svg | 0 .../src/assets/file-icons/fastlane.svg | 0 .../src/assets/file-icons/favicon.svg | 0 .../src/assets/file-icons/figma.svg | 0 .../src/assets/file-icons/firebase.svg | 0 .../src/assets/file-icons/flash.svg | 0 .../src/assets/file-icons/flow.svg | 0 .../assets/file-icons/folder-admin-open.svg | 0 .../src/assets/file-icons/folder-admin.svg | 0 .../assets/file-icons/folder-android-open.svg | 0 .../src/assets/file-icons/folder-android.svg | 0 .../assets/file-icons/folder-angular-open.svg | 0 .../src/assets/file-icons/folder-angular.svg | 0 .../file-icons/folder-animation-open.svg | 0 .../assets/file-icons/folder-animation.svg | 0 .../assets/file-icons/folder-ansible-open.svg | 0 .../src/assets/file-icons/folder-ansible.svg | 0 .../src/assets/file-icons/folder-api-open.svg | 0 .../src/assets/file-icons/folder-api.svg | 0 .../assets/file-icons/folder-apollo-open.svg | 0 .../src/assets/file-icons/folder-apollo.svg | 0 .../src/assets/file-icons/folder-app-open.svg | 0 .../src/assets/file-icons/folder-app.svg | 0 .../assets/file-icons/folder-archive-open.svg | 0 .../src/assets/file-icons/folder-archive.svg | 0 .../assets/file-icons/folder-astro-open.svg | 0 .../src/assets/file-icons/folder-astro.svg | 0 .../assets/file-icons/folder-atom-open.svg | 0 .../src/assets/file-icons/folder-atom.svg | 0 .../file-icons/folder-attachment-open.svg | 0 .../assets/file-icons/folder-attachment.svg | 0 .../assets/file-icons/folder-audio-open.svg | 0 .../src/assets/file-icons/folder-audio.svg | 0 .../assets/file-icons/folder-aurelia-open.svg | 0 .../src/assets/file-icons/folder-aurelia.svg | 0 .../src/assets/file-icons/folder-aws-open.svg | 0 .../src/assets/file-icons/folder-aws.svg | 0 .../folder-azure-pipelines-open.svg | 0 .../file-icons/folder-azure-pipelines.svg | 0 .../assets/file-icons/folder-backup-open.svg | 0 .../src/assets/file-icons/folder-backup.svg | 0 .../assets/file-icons/folder-base-open.svg | 0 .../src/assets/file-icons/folder-base.svg | 0 .../assets/file-icons/folder-batch-open.svg | 0 .../src/assets/file-icons/folder-batch.svg | 0 .../file-icons/folder-benchmark-open.svg | 0 .../assets/file-icons/folder-benchmark.svg | 0 .../file-icons/folder-bibliography-open.svg | 0 .../assets/file-icons/folder-bibliography.svg | 0 .../assets/file-icons/folder-bicep-open.svg | 0 .../src/assets/file-icons/folder-bicep.svg | 0 .../assets/file-icons/folder-blender-open.svg | 0 .../src/assets/file-icons/folder-blender.svg | 0 .../assets/file-icons/folder-bloc-open.svg | 0 .../src/assets/file-icons/folder-bloc.svg | 0 .../assets/file-icons/folder-bower-open.svg | 0 .../src/assets/file-icons/folder-bower.svg | 0 .../file-icons/folder-buildkite-open.svg | 0 .../assets/file-icons/folder-buildkite.svg | 0 .../assets/file-icons/folder-cart-open.svg | 0 .../src/assets/file-icons/folder-cart.svg | 0 .../file-icons/folder-changesets-open.svg | 0 .../assets/file-icons/folder-changesets.svg | 0 .../src/assets/file-icons/folder-ci-open.svg | 0 .../src/assets/file-icons/folder-ci.svg | 0 .../file-icons/folder-circleci-open.svg | 0 .../src/assets/file-icons/folder-circleci.svg | 0 .../assets/file-icons/folder-class-open.svg | 0 .../src/assets/file-icons/folder-class.svg | 0 .../assets/file-icons/folder-claude-open.svg | 0 .../src/assets/file-icons/folder-claude.svg | 0 .../assets/file-icons/folder-client-open.svg | 0 .../src/assets/file-icons/folder-client.svg | 0 .../assets/file-icons/folder-cline-open.svg | 0 .../src/assets/file-icons/folder-cline.svg | 0 .../folder-cloud-functions-open.svg | 0 .../file-icons/folder-cloud-functions.svg | 0 .../file-icons/folder-cloudflare-open.svg | 0 .../assets/file-icons/folder-cloudflare.svg | 0 .../assets/file-icons/folder-cluster-open.svg | 0 .../src/assets/file-icons/folder-cluster.svg | 0 .../assets/file-icons/folder-cobol-open.svg | 0 .../src/assets/file-icons/folder-cobol.svg | 0 .../assets/file-icons/folder-command-open.svg | 0 .../src/assets/file-icons/folder-command.svg | 0 .../file-icons/folder-components-open.svg | 0 .../assets/file-icons/folder-components.svg | 0 .../assets/file-icons/folder-config-open.svg | 0 .../src/assets/file-icons/folder-config.svg | 0 .../file-icons/folder-connection-open.svg | 0 .../assets/file-icons/folder-connection.svg | 0 .../assets/file-icons/folder-console-open.svg | 0 .../src/assets/file-icons/folder-console.svg | 0 .../file-icons/folder-constant-open.svg | 0 .../src/assets/file-icons/folder-constant.svg | 0 .../file-icons/folder-container-open.svg | 0 .../assets/file-icons/folder-container.svg | 0 .../assets/file-icons/folder-content-open.svg | 0 .../src/assets/file-icons/folder-content.svg | 0 .../assets/file-icons/folder-context-open.svg | 0 .../src/assets/file-icons/folder-context.svg | 0 .../file-icons/folder-contract-open.svg | 0 .../src/assets/file-icons/folder-contract.svg | 0 .../file-icons/folder-controller-open.svg | 0 .../assets/file-icons/folder-controller.svg | 0 .../assets/file-icons/folder-core-open.svg | 0 .../src/assets/file-icons/folder-core.svg | 0 .../file-icons/folder-coverage-open.svg | 0 .../src/assets/file-icons/folder-coverage.svg | 0 .../src/assets/file-icons/folder-css-open.svg | 0 .../src/assets/file-icons/folder-css.svg | 0 .../assets/file-icons/folder-cursor-open.svg | 0 .../file-icons/folder-cursor-open_light.svg | 0 .../src/assets/file-icons/folder-cursor.svg | 0 .../assets/file-icons/folder-cursor_light.svg | 0 .../assets/file-icons/folder-custom-open.svg | 0 .../src/assets/file-icons/folder-custom.svg | 0 .../assets/file-icons/folder-cypress-open.svg | 0 .../src/assets/file-icons/folder-cypress.svg | 0 .../assets/file-icons/folder-dart-open.svg | 0 .../src/assets/file-icons/folder-dart.svg | 0 .../file-icons/folder-database-open.svg | 0 .../src/assets/file-icons/folder-database.svg | 0 .../assets/file-icons/folder-debug-open.svg | 0 .../src/assets/file-icons/folder-debug.svg | 0 .../file-icons/folder-decorators-open.svg | 0 .../assets/file-icons/folder-decorators.svg | 0 .../assets/file-icons/folder-delta-open.svg | 0 .../src/assets/file-icons/folder-delta.svg | 0 .../assets/file-icons/folder-desktop-open.svg | 0 .../src/assets/file-icons/folder-desktop.svg | 0 .../file-icons/folder-directive-open.svg | 0 .../assets/file-icons/folder-directive.svg | 0 .../assets/file-icons/folder-dist-open.svg | 0 .../src/assets/file-icons/folder-dist.svg | 0 .../assets/file-icons/folder-docker-open.svg | 0 .../src/assets/file-icons/folder-docker.svg | 0 .../assets/file-icons/folder-docs-open.svg | 0 .../src/assets/file-icons/folder-docs.svg | 0 .../file-icons/folder-download-open.svg | 0 .../src/assets/file-icons/folder-download.svg | 0 .../assets/file-icons/folder-drizzle-open.svg | 0 .../src/assets/file-icons/folder-drizzle.svg | 0 .../assets/file-icons/folder-dump-open.svg | 0 .../src/assets/file-icons/folder-dump.svg | 0 .../assets/file-icons/folder-element-open.svg | 0 .../src/assets/file-icons/folder-element.svg | 0 .../assets/file-icons/folder-enum-open.svg | 0 .../src/assets/file-icons/folder-enum.svg | 0 .../file-icons/folder-environment-open.svg | 0 .../assets/file-icons/folder-environment.svg | 0 .../assets/file-icons/folder-error-open.svg | 0 .../src/assets/file-icons/folder-error.svg | 0 .../assets/file-icons/folder-event-open.svg | 0 .../src/assets/file-icons/folder-event.svg | 0 .../file-icons/folder-examples-open.svg | 0 .../src/assets/file-icons/folder-examples.svg | 0 .../assets/file-icons/folder-expo-open.svg | 0 .../src/assets/file-icons/folder-expo.svg | 0 .../assets/file-icons/folder-export-open.svg | 0 .../src/assets/file-icons/folder-export.svg | 0 .../file-icons/folder-fastlane-open.svg | 0 .../src/assets/file-icons/folder-fastlane.svg | 0 .../assets/file-icons/folder-favicon-open.svg | 0 .../src/assets/file-icons/folder-favicon.svg | 0 .../file-icons/folder-firebase-open.svg | 0 .../src/assets/file-icons/folder-firebase.svg | 0 .../file-icons/folder-firestore-open.svg | 0 .../assets/file-icons/folder-firestore.svg | 0 .../assets/file-icons/folder-flow-open.svg | 0 .../src/assets/file-icons/folder-flow.svg | 0 .../assets/file-icons/folder-flutter-open.svg | 0 .../src/assets/file-icons/folder-flutter.svg | 0 .../assets/file-icons/folder-font-open.svg | 0 .../src/assets/file-icons/folder-font.svg | 0 .../assets/file-icons/folder-forgejo-open.svg | 0 .../src/assets/file-icons/folder-forgejo.svg | 0 .../file-icons/folder-functions-open.svg | 0 .../assets/file-icons/folder-functions.svg | 0 .../file-icons/folder-gamemaker-open.svg | 0 .../assets/file-icons/folder-gamemaker.svg | 0 .../file-icons/folder-generator-open.svg | 0 .../assets/file-icons/folder-generator.svg | 0 .../file-icons/folder-gh-workflows-open.svg | 0 .../assets/file-icons/folder-gh-workflows.svg | 0 .../src/assets/file-icons/folder-git-open.svg | 0 .../src/assets/file-icons/folder-git.svg | 0 .../assets/file-icons/folder-gitea-open.svg | 0 .../src/assets/file-icons/folder-gitea.svg | 0 .../assets/file-icons/folder-github-open.svg | 0 .../src/assets/file-icons/folder-github.svg | 0 .../assets/file-icons/folder-gitlab-open.svg | 0 .../src/assets/file-icons/folder-gitlab.svg | 0 .../assets/file-icons/folder-global-open.svg | 0 .../src/assets/file-icons/folder-global.svg | 0 .../assets/file-icons/folder-godot-open.svg | 0 .../src/assets/file-icons/folder-godot.svg | 0 .../assets/file-icons/folder-gradle-open.svg | 0 .../src/assets/file-icons/folder-gradle.svg | 0 .../assets/file-icons/folder-graphql-open.svg | 0 .../src/assets/file-icons/folder-graphql.svg | 0 .../assets/file-icons/folder-guard-open.svg | 0 .../src/assets/file-icons/folder-guard.svg | 0 .../assets/file-icons/folder-gulp-open.svg | 0 .../src/assets/file-icons/folder-gulp.svg | 0 .../assets/file-icons/folder-helm-open.svg | 0 .../src/assets/file-icons/folder-helm.svg | 0 .../assets/file-icons/folder-helper-open.svg | 0 .../src/assets/file-icons/folder-helper.svg | 0 .../assets/file-icons/folder-home-open.svg | 0 .../src/assets/file-icons/folder-home.svg | 0 .../assets/file-icons/folder-hook-open.svg | 0 .../src/assets/file-icons/folder-hook.svg | 0 .../assets/file-icons/folder-husky-open.svg | 0 .../src/assets/file-icons/folder-husky.svg | 0 .../assets/file-icons/folder-i18n-open.svg | 0 .../src/assets/file-icons/folder-i18n.svg | 0 .../assets/file-icons/folder-images-open.svg | 0 .../src/assets/file-icons/folder-images.svg | 0 .../assets/file-icons/folder-import-open.svg | 0 .../src/assets/file-icons/folder-import.svg | 0 .../assets/file-icons/folder-include-open.svg | 0 .../src/assets/file-icons/folder-include.svg | 0 .../file-icons/folder-intellij-open.svg | 0 .../file-icons/folder-intellij-open_light.svg | 0 .../src/assets/file-icons/folder-intellij.svg | 0 .../file-icons/folder-intellij_light.svg | 0 .../file-icons/folder-interceptor-open.svg | 0 .../assets/file-icons/folder-interceptor.svg | 0 .../file-icons/folder-interface-open.svg | 0 .../assets/file-icons/folder-interface.svg | 0 .../src/assets/file-icons/folder-ios-open.svg | 0 .../src/assets/file-icons/folder-ios.svg | 0 .../assets/file-icons/folder-java-open.svg | 0 .../src/assets/file-icons/folder-java.svg | 0 .../file-icons/folder-javascript-open.svg | 0 .../assets/file-icons/folder-javascript.svg | 0 .../assets/file-icons/folder-jinja-open.svg | 0 .../file-icons/folder-jinja-open_light.svg | 0 .../src/assets/file-icons/folder-jinja.svg | 0 .../assets/file-icons/folder-jinja_light.svg | 0 .../src/assets/file-icons/folder-job-open.svg | 0 .../src/assets/file-icons/folder-job.svg | 0 .../assets/file-icons/folder-json-open.svg | 0 .../src/assets/file-icons/folder-json.svg | 0 .../assets/file-icons/folder-jupyter-open.svg | 0 .../src/assets/file-icons/folder-jupyter.svg | 0 .../assets/file-icons/folder-keys-open.svg | 0 .../src/assets/file-icons/folder-keys.svg | 0 .../file-icons/folder-kubernetes-open.svg | 0 .../assets/file-icons/folder-kubernetes.svg | 0 .../assets/file-icons/folder-kusto-open.svg | 0 .../src/assets/file-icons/folder-kusto.svg | 0 .../assets/file-icons/folder-layout-open.svg | 0 .../src/assets/file-icons/folder-layout.svg | 0 .../file-icons/folder-lefthook-open.svg | 0 .../src/assets/file-icons/folder-lefthook.svg | 0 .../assets/file-icons/folder-less-open.svg | 0 .../src/assets/file-icons/folder-less.svg | 0 .../src/assets/file-icons/folder-lib-open.svg | 0 .../src/assets/file-icons/folder-lib.svg | 0 .../assets/file-icons/folder-link-open.svg | 0 .../src/assets/file-icons/folder-link.svg | 0 .../assets/file-icons/folder-linux-open.svg | 0 .../src/assets/file-icons/folder-linux.svg | 0 .../file-icons/folder-liquibase-open.svg | 0 .../assets/file-icons/folder-liquibase.svg | 0 .../src/assets/file-icons/folder-log-open.svg | 0 .../src/assets/file-icons/folder-log.svg | 0 .../assets/file-icons/folder-lottie-open.svg | 0 .../src/assets/file-icons/folder-lottie.svg | 0 .../src/assets/file-icons/folder-lua-open.svg | 0 .../src/assets/file-icons/folder-lua.svg | 0 .../assets/file-icons/folder-luau-open.svg | 0 .../src/assets/file-icons/folder-luau.svg | 0 .../assets/file-icons/folder-macos-open.svg | 0 .../src/assets/file-icons/folder-macos.svg | 0 .../assets/file-icons/folder-mail-open.svg | 0 .../src/assets/file-icons/folder-mail.svg | 0 .../file-icons/folder-mappings-open.svg | 0 .../src/assets/file-icons/folder-mappings.svg | 0 .../file-icons/folder-markdown-open.svg | 0 .../src/assets/file-icons/folder-markdown.svg | 0 .../file-icons/folder-mercurial-open.svg | 0 .../assets/file-icons/folder-mercurial.svg | 0 .../file-icons/folder-messages-open.svg | 0 .../src/assets/file-icons/folder-messages.svg | 0 .../assets/file-icons/folder-meta-open.svg | 0 .../src/assets/file-icons/folder-meta.svg | 0 .../file-icons/folder-middleware-open.svg | 0 .../assets/file-icons/folder-middleware.svg | 0 .../assets/file-icons/folder-mjml-open.svg | 0 .../src/assets/file-icons/folder-mjml.svg | 0 .../assets/file-icons/folder-mobile-open.svg | 0 .../src/assets/file-icons/folder-mobile.svg | 0 .../assets/file-icons/folder-mock-open.svg | 0 .../src/assets/file-icons/folder-mock.svg | 0 .../assets/file-icons/folder-mojo-open.svg | 0 .../src/assets/file-icons/folder-mojo.svg | 0 .../file-icons/folder-molecule-open.svg | 0 .../src/assets/file-icons/folder-molecule.svg | 0 .../assets/file-icons/folder-moon-open.svg | 0 .../src/assets/file-icons/folder-moon.svg | 0 .../assets/file-icons/folder-netlify-open.svg | 0 .../src/assets/file-icons/folder-netlify.svg | 0 .../assets/file-icons/folder-next-open.svg | 0 .../src/assets/file-icons/folder-next.svg | 0 .../file-icons/folder-ngrx-store-open.svg | 0 .../assets/file-icons/folder-ngrx-store.svg | 0 .../assets/file-icons/folder-node-open.svg | 0 .../src/assets/file-icons/folder-node.svg | 0 .../assets/file-icons/folder-nuxt-open.svg | 0 .../src/assets/file-icons/folder-nuxt.svg | 0 .../file-icons/folder-obsidian-open.svg | 0 .../src/assets/file-icons/folder-obsidian.svg | 0 .../src/assets/file-icons/folder-open.svg | 0 .../file-icons/folder-organism-open.svg | 0 .../src/assets/file-icons/folder-organism.svg | 0 .../assets/file-icons/folder-other-open.svg | 0 .../src/assets/file-icons/folder-other.svg | 0 .../file-icons/folder-packages-open.svg | 0 .../src/assets/file-icons/folder-packages.svg | 0 .../src/assets/file-icons/folder-pdf-open.svg | 0 .../src/assets/file-icons/folder-pdf.svg | 0 .../src/assets/file-icons/folder-pdm-open.svg | 0 .../src/assets/file-icons/folder-pdm.svg | 0 .../src/assets/file-icons/folder-php-open.svg | 0 .../src/assets/file-icons/folder-php.svg | 0 .../file-icons/folder-phpmailer-open.svg | 0 .../assets/file-icons/folder-phpmailer.svg | 0 .../assets/file-icons/folder-pipe-open.svg | 0 .../src/assets/file-icons/folder-pipe.svg | 0 .../assets/file-icons/folder-plastic-open.svg | 0 .../src/assets/file-icons/folder-plastic.svg | 0 .../assets/file-icons/folder-plugin-open.svg | 0 .../src/assets/file-icons/folder-plugin.svg | 0 .../assets/file-icons/folder-policy-open.svg | 0 .../src/assets/file-icons/folder-policy.svg | 0 .../file-icons/folder-powershell-open.svg | 0 .../assets/file-icons/folder-powershell.svg | 0 .../assets/file-icons/folder-prisma-open.svg | 0 .../src/assets/file-icons/folder-prisma.svg | 0 .../assets/file-icons/folder-private-open.svg | 0 .../src/assets/file-icons/folder-private.svg | 0 .../assets/file-icons/folder-project-open.svg | 0 .../src/assets/file-icons/folder-project.svg | 0 .../assets/file-icons/folder-prompts-open.svg | 0 .../src/assets/file-icons/folder-prompts.svg | 0 .../assets/file-icons/folder-proto-open.svg | 0 .../src/assets/file-icons/folder-proto.svg | 0 .../assets/file-icons/folder-public-open.svg | 0 .../src/assets/file-icons/folder-public.svg | 0 .../assets/file-icons/folder-python-open.svg | 0 .../src/assets/file-icons/folder-python.svg | 0 .../assets/file-icons/folder-pytorch-open.svg | 0 .../src/assets/file-icons/folder-pytorch.svg | 0 .../assets/file-icons/folder-quasar-open.svg | 0 .../src/assets/file-icons/folder-quasar.svg | 0 .../assets/file-icons/folder-queue-open.svg | 0 .../src/assets/file-icons/folder-queue.svg | 0 .../folder-react-components-open.svg | 0 .../file-icons/folder-react-components.svg | 0 .../file-icons/folder-redux-reducer-open.svg | 0 .../file-icons/folder-redux-reducer.svg | 0 .../file-icons/folder-repository-open.svg | 0 .../assets/file-icons/folder-repository.svg | 0 .../file-icons/folder-resolver-open.svg | 0 .../src/assets/file-icons/folder-resolver.svg | 0 .../file-icons/folder-resource-open.svg | 0 .../src/assets/file-icons/folder-resource.svg | 0 .../assets/file-icons/folder-review-open.svg | 0 .../src/assets/file-icons/folder-review.svg | 0 .../assets/file-icons/folder-robot-open.svg | 0 .../src/assets/file-icons/folder-robot.svg | 0 .../assets/file-icons/folder-routes-open.svg | 0 .../src/assets/file-icons/folder-routes.svg | 0 .../assets/file-icons/folder-rules-open.svg | 0 .../src/assets/file-icons/folder-rules.svg | 0 .../assets/file-icons/folder-rust-open.svg | 0 .../src/assets/file-icons/folder-rust.svg | 0 .../assets/file-icons/folder-sandbox-open.svg | 0 .../src/assets/file-icons/folder-sandbox.svg | 0 .../assets/file-icons/folder-sass-open.svg | 0 .../src/assets/file-icons/folder-sass.svg | 0 .../assets/file-icons/folder-scala-open.svg | 0 .../src/assets/file-icons/folder-scala.svg | 0 .../assets/file-icons/folder-scons-open.svg | 0 .../src/assets/file-icons/folder-scons.svg | 0 .../assets/file-icons/folder-scripts-open.svg | 0 .../src/assets/file-icons/folder-scripts.svg | 0 .../assets/file-icons/folder-secure-open.svg | 0 .../src/assets/file-icons/folder-secure.svg | 0 .../assets/file-icons/folder-seeders-open.svg | 0 .../src/assets/file-icons/folder-seeders.svg | 0 .../assets/file-icons/folder-server-open.svg | 0 .../src/assets/file-icons/folder-server.svg | 0 .../file-icons/folder-serverless-open.svg | 0 .../assets/file-icons/folder-serverless.svg | 0 .../assets/file-icons/folder-shader-open.svg | 0 .../src/assets/file-icons/folder-shader.svg | 0 .../assets/file-icons/folder-shared-open.svg | 0 .../src/assets/file-icons/folder-shared.svg | 0 .../file-icons/folder-snapcraft-open.svg | 0 .../assets/file-icons/folder-snapcraft.svg | 0 .../assets/file-icons/folder-snippet-open.svg | 0 .../src/assets/file-icons/folder-snippet.svg | 0 .../src/assets/file-icons/folder-src-open.svg | 0 .../file-icons/folder-src-tauri-open.svg | 0 .../assets/file-icons/folder-src-tauri.svg | 0 .../src/assets/file-icons/folder-src.svg | 0 .../assets/file-icons/folder-stack-open.svg | 0 .../src/assets/file-icons/folder-stack.svg | 0 .../assets/file-icons/folder-stencil-open.svg | 0 .../src/assets/file-icons/folder-stencil.svg | 0 .../assets/file-icons/folder-store-open.svg | 0 .../src/assets/file-icons/folder-store.svg | 0 .../file-icons/folder-storybook-open.svg | 0 .../assets/file-icons/folder-storybook.svg | 0 .../assets/file-icons/folder-stylus-open.svg | 0 .../src/assets/file-icons/folder-stylus.svg | 0 .../assets/file-icons/folder-sublime-open.svg | 0 .../src/assets/file-icons/folder-sublime.svg | 0 .../file-icons/folder-supabase-open.svg | 0 .../src/assets/file-icons/folder-supabase.svg | 0 .../assets/file-icons/folder-svelte-open.svg | 0 .../src/assets/file-icons/folder-svelte.svg | 0 .../src/assets/file-icons/folder-svg-open.svg | 0 .../src/assets/file-icons/folder-svg.svg | 0 .../assets/file-icons/folder-syntax-open.svg | 0 .../src/assets/file-icons/folder-syntax.svg | 0 .../assets/file-icons/folder-target-open.svg | 0 .../src/assets/file-icons/folder-target.svg | 0 .../file-icons/folder-taskfile-open.svg | 0 .../src/assets/file-icons/folder-taskfile.svg | 0 .../assets/file-icons/folder-tasks-open.svg | 0 .../src/assets/file-icons/folder-tasks.svg | 0 .../file-icons/folder-television-open.svg | 0 .../assets/file-icons/folder-television.svg | 0 .../assets/file-icons/folder-temp-open.svg | 0 .../src/assets/file-icons/folder-temp.svg | 0 .../file-icons/folder-template-open.svg | 0 .../src/assets/file-icons/folder-template.svg | 0 .../file-icons/folder-terraform-open.svg | 0 .../assets/file-icons/folder-terraform.svg | 0 .../assets/file-icons/folder-test-open.svg | 0 .../src/assets/file-icons/folder-test.svg | 0 .../assets/file-icons/folder-theme-open.svg | 0 .../src/assets/file-icons/folder-theme.svg | 0 .../assets/file-icons/folder-tools-open.svg | 0 .../src/assets/file-icons/folder-tools.svg | 0 .../assets/file-icons/folder-trash-open.svg | 0 .../src/assets/file-icons/folder-trash.svg | 0 .../assets/file-icons/folder-trigger-open.svg | 0 .../src/assets/file-icons/folder-trigger.svg | 0 .../file-icons/folder-turborepo-open.svg | 0 .../assets/file-icons/folder-turborepo.svg | 0 .../file-icons/folder-typescript-open.svg | 0 .../assets/file-icons/folder-typescript.svg | 0 .../src/assets/file-icons/folder-ui-open.svg | 0 .../src/assets/file-icons/folder-ui.svg | 0 .../assets/file-icons/folder-unity-open.svg | 0 .../src/assets/file-icons/folder-unity.svg | 0 .../assets/file-icons/folder-update-open.svg | 0 .../src/assets/file-icons/folder-update.svg | 0 .../assets/file-icons/folder-upload-open.svg | 0 .../src/assets/file-icons/folder-upload.svg | 0 .../assets/file-icons/folder-utils-open.svg | 0 .../src/assets/file-icons/folder-utils.svg | 0 .../assets/file-icons/folder-vercel-open.svg | 0 .../src/assets/file-icons/folder-vercel.svg | 0 .../file-icons/folder-verdaccio-open.svg | 0 .../assets/file-icons/folder-verdaccio.svg | 0 .../assets/file-icons/folder-video-open.svg | 0 .../src/assets/file-icons/folder-video.svg | 0 .../assets/file-icons/folder-views-open.svg | 0 .../src/assets/file-icons/folder-views.svg | 0 .../src/assets/file-icons/folder-vm-open.svg | 0 .../src/assets/file-icons/folder-vm.svg | 0 .../assets/file-icons/folder-vscode-open.svg | 0 .../src/assets/file-icons/folder-vscode.svg | 0 .../file-icons/folder-vue-directives-open.svg | 0 .../file-icons/folder-vue-directives.svg | 0 .../src/assets/file-icons/folder-vue-open.svg | 0 .../src/assets/file-icons/folder-vue.svg | 0 .../file-icons/folder-vuepress-open.svg | 0 .../src/assets/file-icons/folder-vuepress.svg | 0 .../file-icons/folder-vuex-store-open.svg | 0 .../assets/file-icons/folder-vuex-store.svg | 0 .../file-icons/folder-wakatime-open.svg | 0 .../src/assets/file-icons/folder-wakatime.svg | 0 .../assets/file-icons/folder-webpack-open.svg | 0 .../src/assets/file-icons/folder-webpack.svg | 0 .../assets/file-icons/folder-windows-open.svg | 0 .../src/assets/file-icons/folder-windows.svg | 0 .../file-icons/folder-wordpress-open.svg | 0 .../assets/file-icons/folder-wordpress.svg | 0 .../assets/file-icons/folder-yarn-open.svg | 0 .../src/assets/file-icons/folder-yarn.svg | 0 .../assets/file-icons/folder-zeabur-open.svg | 0 .../src/assets/file-icons/folder-zeabur.svg | 0 .../src/assets/file-icons/folder.svg | 0 .../src/assets/file-icons/font.svg | 0 .../src/assets/file-icons/forth.svg | 0 .../src/assets/file-icons/fortran.svg | 0 .../src/assets/file-icons/foxpro.svg | 0 .../src/assets/file-icons/freemarker.svg | 0 .../src/assets/file-icons/fsharp.svg | 0 .../src/assets/file-icons/fusebox.svg | 0 .../src/assets/file-icons/gamemaker.svg | 0 .../src/assets/file-icons/garden.svg | 0 .../src/assets/file-icons/gatsby.svg | 0 .../src/assets/file-icons/gcp.svg | 0 .../src/assets/file-icons/gemfile.svg | 0 .../src/assets/file-icons/gemini-ai.svg | 0 .../src/assets/file-icons/gemini.svg | 0 .../src/assets/file-icons/git.svg | 0 .../file-icons/github-actions-workflow.svg | 0 .../src/assets/file-icons/github-sponsors.svg | 0 .../src/assets/file-icons/gitlab.svg | 0 .../src/assets/file-icons/gitpod.svg | 0 .../src/assets/file-icons/gleam.svg | 0 .../src/assets/file-icons/gnuplot.svg | 0 .../src/assets/file-icons/go-mod.svg | 0 .../src/assets/file-icons/go.svg | 0 .../src/assets/file-icons/go_gopher.svg | 0 .../src/assets/file-icons/godot-assets.svg | 0 .../src/assets/file-icons/godot.svg | 0 .../src/assets/file-icons/gradle.svg | 0 .../src/assets/file-icons/grafana-alloy.svg | 0 .../src/assets/file-icons/grain.svg | 0 .../src/assets/file-icons/graphcool.svg | 0 .../src/assets/file-icons/graphql.svg | 0 .../src/assets/file-icons/gridsome.svg | 0 .../src/assets/file-icons/groovy.svg | 0 .../src/assets/file-icons/grunt.svg | 0 .../src/assets/file-icons/gulp.svg | 0 .../src/assets/file-icons/h.svg | 0 .../src/assets/file-icons/hack.svg | 0 .../src/assets/file-icons/hadolint.svg | 0 .../src/assets/file-icons/haml.svg | 0 .../src/assets/file-icons/handlebars.svg | 0 .../src/assets/file-icons/hardhat.svg | 0 .../src/assets/file-icons/harmonix.svg | 0 .../src/assets/file-icons/haskell.svg | 0 .../src/assets/file-icons/haxe.svg | 0 .../src/assets/file-icons/hcl.svg | 0 .../src/assets/file-icons/hcl_light.svg | 0 .../src/assets/file-icons/helm.svg | 0 .../src/assets/file-icons/heroku.svg | 0 .../src/assets/file-icons/hex.svg | 0 .../src/assets/file-icons/histoire.svg | 0 .../src/assets/file-icons/hjson.svg | 0 .../src/assets/file-icons/horusec.svg | 0 .../src/assets/file-icons/hosts.svg | 0 .../src/assets/file-icons/hosts_light.svg | 0 .../src/assets/file-icons/hpp.svg | 0 .../src/assets/file-icons/html.svg | 0 .../src/assets/file-icons/http.svg | 0 .../src/assets/file-icons/huff.svg | 0 .../src/assets/file-icons/huff_light.svg | 0 .../src/assets/file-icons/hurl.svg | 0 .../src/assets/file-icons/husky.svg | 0 .../src/assets/file-icons/i18n.svg | 0 .../src/assets/file-icons/idris.svg | 0 .../src/assets/file-icons/ifanr-cloud.svg | 0 .../src/assets/file-icons/image.svg | 0 .../src/assets/file-icons/imba.svg | 0 .../src/assets/file-icons/installation.svg | 0 .../src/assets/file-icons/ionic.svg | 0 .../src/assets/file-icons/istanbul.svg | 0 .../src/assets/file-icons/jar.svg | 0 .../src/assets/file-icons/java.svg | 0 .../src/assets/file-icons/javaclass.svg | 0 .../src/assets/file-icons/javascript-map.svg | 0 .../src/assets/file-icons/javascript.svg | 0 .../src/assets/file-icons/jenkins.svg | 0 .../src/assets/file-icons/jest.svg | 0 .../src/assets/file-icons/jinja.svg | 0 .../src/assets/file-icons/jinja_light.svg | 0 .../src/assets/file-icons/jsconfig.svg | 0 .../src/assets/file-icons/json.svg | 0 .../src/assets/file-icons/jsr.svg | 0 .../src/assets/file-icons/jsr_light.svg | 0 .../src/assets/file-icons/julia.svg | 0 .../src/assets/file-icons/jupyter.svg | 0 .../src/assets/file-icons/just.svg | 0 .../src/assets/file-icons/karma.svg | 0 .../src/assets/file-icons/kcl.svg | 0 .../src/assets/file-icons/key.svg | 0 .../src/assets/file-icons/keystatic.svg | 0 .../src/assets/file-icons/kivy.svg | 0 .../src/assets/file-icons/kl.svg | 0 .../src/assets/file-icons/knip.svg | 0 .../src/assets/file-icons/kotlin.svg | 0 .../src/assets/file-icons/kubernetes.svg | 0 .../src/assets/file-icons/kusto.svg | 0 .../src/assets/file-icons/label.svg | 0 .../src/assets/file-icons/laravel.svg | 0 .../src/assets/file-icons/latexmk.svg | 0 .../src/assets/file-icons/lbx.svg | 0 .../src/assets/file-icons/lefthook.svg | 0 .../src/assets/file-icons/lerna.svg | 0 .../src/assets/file-icons/less.svg | 0 .../src/assets/file-icons/liara.svg | 0 .../src/assets/file-icons/lib.svg | 0 .../src/assets/file-icons/lighthouse.svg | 0 .../src/assets/file-icons/lilypond.svg | 0 .../src/assets/file-icons/lintstaged.svg | 0 .../src/assets/file-icons/liquid.svg | 0 .../src/assets/file-icons/lisp.svg | 0 .../src/assets/file-icons/livescript.svg | 0 .../src/assets/file-icons/lock.svg | 0 .../src/assets/file-icons/log.svg | 0 .../src/assets/file-icons/lolcode.svg | 0 .../src/assets/file-icons/lottie.svg | 0 .../src/assets/file-icons/lua.svg | 0 .../src/assets/file-icons/luau.svg | 0 .../src/assets/file-icons/lyric.svg | 0 .../src/assets/file-icons/makefile.svg | 0 .../src/assets/file-icons/markdoc-config.svg | 0 .../src/assets/file-icons/markdoc.svg | 0 .../src/assets/file-icons/markdown.svg | 0 .../src/assets/file-icons/markdownlint.svg | 0 .../src/assets/file-icons/markojs.svg | 0 .../src/assets/file-icons/mathematica.svg | 0 .../src/assets/file-icons/matlab.svg | 0 .../src/assets/file-icons/maven.svg | 0 .../src/assets/file-icons/mdsvex.svg | 0 .../src/assets/file-icons/mdx.svg | 0 .../src/assets/file-icons/mercurial.svg | 0 .../src/assets/file-icons/merlin.svg | 0 .../src/assets/file-icons/mermaid.svg | 0 .../src/assets/file-icons/meson.svg | 0 .../assets/file-icons/minecraft-fabric.svg | 0 .../src/assets/file-icons/minecraft.svg | 0 .../src/assets/file-icons/mint.svg | 0 .../src/assets/file-icons/mjml.svg | 0 .../src/assets/file-icons/mocha.svg | 0 .../src/assets/file-icons/modernizr.svg | 0 .../src/assets/file-icons/mojo.svg | 0 .../src/assets/file-icons/moon.svg | 0 .../src/assets/file-icons/moonscript.svg | 0 .../src/assets/file-icons/mxml.svg | 0 .../src/assets/file-icons/nano-staged.svg | 0 .../assets/file-icons/nano-staged_light.svg | 0 .../src/assets/file-icons/ndst.svg | 0 .../src/assets/file-icons/nest.svg | 0 .../src/assets/file-icons/netlify.svg | 0 .../src/assets/file-icons/netlify_light.svg | 0 .../src/assets/file-icons/next.svg | 0 .../src/assets/file-icons/next_light.svg | 0 .../src/assets/file-icons/nginx.svg | 0 .../src/assets/file-icons/ngrx-actions.svg | 0 .../src/assets/file-icons/ngrx-effects.svg | 0 .../src/assets/file-icons/ngrx-entity.svg | 0 .../src/assets/file-icons/ngrx-reducer.svg | 0 .../src/assets/file-icons/ngrx-selectors.svg | 0 .../src/assets/file-icons/ngrx-state.svg | 0 .../src/assets/file-icons/nim.svg | 0 .../src/assets/file-icons/nix.svg | 0 .../src/assets/file-icons/nodejs.svg | 0 .../src/assets/file-icons/nodejs_alt.svg | 0 .../src/assets/file-icons/nodemon.svg | 0 .../src/assets/file-icons/npm.svg | 0 .../src/assets/file-icons/nuget.svg | 0 .../src/assets/file-icons/nunjucks.svg | 0 .../src/assets/file-icons/nuxt.svg | 0 .../src/assets/file-icons/nx.svg | 0 .../src/assets/file-icons/objective-c.svg | 0 .../src/assets/file-icons/objective-cpp.svg | 0 .../src/assets/file-icons/ocaml.svg | 0 .../src/assets/file-icons/odin.svg | 0 .../src/assets/file-icons/opa.svg | 0 .../src/assets/file-icons/opam.svg | 0 .../src/assets/file-icons/openapi.svg | 0 .../src/assets/file-icons/openapi_light.svg | 0 .../src/assets/file-icons/otne.svg | 0 .../src/assets/file-icons/oxlint.svg | 0 .../src/assets/file-icons/packship.svg | 0 .../src/assets/file-icons/palette.svg | 0 .../src/assets/file-icons/panda.svg | 0 .../src/assets/file-icons/parcel.svg | 0 .../src/assets/file-icons/pascal.svg | 0 .../src/assets/file-icons/pawn.svg | 0 .../src/assets/file-icons/payload.svg | 0 .../src/assets/file-icons/payload_light.svg | 0 .../src/assets/file-icons/pdf.svg | 0 .../src/assets/file-icons/pdm.svg | 0 .../src/assets/file-icons/percy.svg | 0 .../src/assets/file-icons/perl.svg | 0 .../src/assets/file-icons/php-cs-fixer.svg | 0 .../src/assets/file-icons/php.svg | 0 .../src/assets/file-icons/php_elephant.svg | 0 .../assets/file-icons/php_elephant_pink.svg | 0 .../src/assets/file-icons/phpstan.svg | 0 .../src/assets/file-icons/phpunit.svg | 0 .../src/assets/file-icons/pinejs.svg | 0 .../src/assets/file-icons/pipeline.svg | 0 .../src/assets/file-icons/pkl.svg | 0 .../src/assets/file-icons/plastic.svg | 0 .../src/assets/file-icons/playwright.svg | 0 .../src/assets/file-icons/plop.svg | 0 .../src/assets/file-icons/pm2-ecosystem.svg | 0 .../src/assets/file-icons/pnpm.svg | 0 .../src/assets/file-icons/pnpm_light.svg | 0 .../src/assets/file-icons/poetry.svg | 0 .../src/assets/file-icons/postcss.svg | 0 .../src/assets/file-icons/posthtml.svg | 0 .../src/assets/file-icons/powerpoint.svg | 0 .../src/assets/file-icons/powershell.svg | 0 .../src/assets/file-icons/pre-commit.svg | 0 .../src/assets/file-icons/prettier.svg | 0 .../src/assets/file-icons/prisma.svg | 0 .../src/assets/file-icons/processing.svg | 0 .../src/assets/file-icons/prolog.svg | 0 .../src/assets/file-icons/prompt.svg | 0 .../src/assets/file-icons/proto.svg | 0 .../src/assets/file-icons/protractor.svg | 0 .../src/assets/file-icons/pug.svg | 0 .../src/assets/file-icons/puppet.svg | 0 .../src/assets/file-icons/puppeteer.svg | 0 .../src/assets/file-icons/purescript.svg | 0 .../src/assets/file-icons/python-misc.svg | 0 .../src/assets/file-icons/python.svg | 0 .../src/assets/file-icons/pytorch.svg | 0 .../src/assets/file-icons/qsharp.svg | 0 .../src/assets/file-icons/quarto.svg | 0 .../src/assets/file-icons/quasar.svg | 0 .../src/assets/file-icons/quokka.svg | 0 .../src/assets/file-icons/qwik.svg | 0 .../src/assets/file-icons/r.svg | 0 .../src/assets/file-icons/racket.svg | 0 .../src/assets/file-icons/raml.svg | 0 .../src/assets/file-icons/razor.svg | 0 .../src/assets/file-icons/rbxmk.svg | 0 .../src/assets/file-icons/rc.svg | 0 .../src/assets/file-icons/react.svg | 0 .../src/assets/file-icons/react_ts.svg | 0 .../src/assets/file-icons/readme.svg | 0 .../src/assets/file-icons/reason.svg | 0 .../src/assets/file-icons/red.svg | 0 .../src/assets/file-icons/redux-action.svg | 0 .../src/assets/file-icons/redux-reducer.svg | 0 .../src/assets/file-icons/redux-selector.svg | 0 .../src/assets/file-icons/redux-store.svg | 0 .../src/assets/file-icons/regedit.svg | 0 .../src/assets/file-icons/remark.svg | 0 .../src/assets/file-icons/remix.svg | 0 .../src/assets/file-icons/remix_light.svg | 0 .../src/assets/file-icons/renovate.svg | 0 .../src/assets/file-icons/replit.svg | 0 .../assets/file-icons/rescript-interface.svg | 0 .../src/assets/file-icons/rescript.svg | 0 .../src/assets/file-icons/restql.svg | 0 .../src/assets/file-icons/riot.svg | 0 .../src/assets/file-icons/roadmap.svg | 0 .../src/assets/file-icons/roblox.svg | 0 .../src/assets/file-icons/robot.svg | 0 .../src/assets/file-icons/robots.svg | 0 .../src/assets/file-icons/rocket.svg | 0 .../src/assets/file-icons/rojo.svg | 0 .../src/assets/file-icons/rollup.svg | 0 .../src/assets/file-icons/rome.svg | 0 .../src/assets/file-icons/routing.svg | 0 .../src/assets/file-icons/rspec.svg | 0 .../src/assets/file-icons/rubocop.svg | 0 .../src/assets/file-icons/rubocop_light.svg | 0 .../src/assets/file-icons/ruby.svg | 0 .../src/assets/file-icons/ruff.svg | 0 .../src/assets/file-icons/rust.svg | 0 .../src/assets/file-icons/salesforce.svg | 0 .../src/assets/file-icons/san.svg | 0 .../src/assets/file-icons/sas.svg | 0 .../src/assets/file-icons/sass.svg | 0 .../src/assets/file-icons/sbt.svg | 0 .../src/assets/file-icons/scala.svg | 0 .../src/assets/file-icons/scheme.svg | 0 .../src/assets/file-icons/scons.svg | 0 .../src/assets/file-icons/scons_light.svg | 0 .../src/assets/file-icons/screwdriver.svg | 0 .../src/assets/file-icons/search.svg | 0 .../assets/file-icons/semantic-release.svg | 0 .../file-icons/semantic-release_light.svg | 0 .../src/assets/file-icons/semgrep.svg | 0 .../src/assets/file-icons/sentry.svg | 0 .../src/assets/file-icons/sequelize.svg | 0 .../src/assets/file-icons/serverless.svg | 0 .../src/assets/file-icons/settings.svg | 0 .../src/assets/file-icons/shader.svg | 0 .../src/assets/file-icons/silverstripe.svg | 0 .../src/assets/file-icons/simulink.svg | 0 .../src/assets/file-icons/siyuan.svg | 0 .../src/assets/file-icons/sketch.svg | 0 .../src/assets/file-icons/slim.svg | 0 .../src/assets/file-icons/slint.svg | 0 .../src/assets/file-icons/slug.svg | 0 .../src/assets/file-icons/smarty.svg | 0 .../src/assets/file-icons/sml.svg | 0 .../src/assets/file-icons/snakemake.svg | 0 .../src/assets/file-icons/snapcraft.svg | 0 .../src/assets/file-icons/snowpack.svg | 0 .../src/assets/file-icons/snowpack_light.svg | 0 .../src/assets/file-icons/snyk.svg | 0 .../src/assets/file-icons/solidity.svg | 0 .../src/assets/file-icons/sonarcloud.svg | 0 .../src/assets/file-icons/spwn.svg | 0 .../src/assets/file-icons/stackblitz.svg | 0 .../src/assets/file-icons/stan.svg | 0 .../src/assets/file-icons/steadybit.svg | 0 .../src/assets/file-icons/stencil.svg | 0 .../src/assets/file-icons/stitches.svg | 0 .../src/assets/file-icons/stitches_light.svg | 0 .../src/assets/file-icons/storybook.svg | 0 .../src/assets/file-icons/stryker.svg | 0 .../src/assets/file-icons/stylable.svg | 0 .../src/assets/file-icons/stylelint.svg | 0 .../src/assets/file-icons/stylelint_light.svg | 0 .../src/assets/file-icons/stylus.svg | 0 .../src/assets/file-icons/sublime.svg | 0 .../src/assets/file-icons/subtitles.svg | 0 .../src/assets/file-icons/supabase.svg | 0 .../src/assets/file-icons/svelte.svg | 0 .../src/assets/file-icons/svg.svg | 0 .../src/assets/file-icons/svgo.svg | 0 .../src/assets/file-icons/svgr.svg | 0 .../src/assets/file-icons/swagger.svg | 0 .../src/assets/file-icons/sway.svg | 0 .../src/assets/file-icons/swc.svg | 0 .../src/assets/file-icons/swift.svg | 0 .../src/assets/file-icons/syncpack.svg | 0 .../src/assets/file-icons/systemd.svg | 0 .../src/assets/file-icons/systemd_light.svg | 0 .../src/assets/file-icons/table.svg | 0 .../src/assets/file-icons/tailwindcss.svg | 0 .../src/assets/file-icons/taskfile.svg | 0 .../src/assets/file-icons/tauri.svg | 0 .../src/assets/file-icons/taze.svg | 0 .../src/assets/file-icons/tcl.svg | 0 .../src/assets/file-icons/teal.svg | 0 .../src/assets/file-icons/templ.svg | 0 .../src/assets/file-icons/template.svg | 0 .../src/assets/file-icons/terraform.svg | 0 .../src/assets/file-icons/test-js.svg | 0 .../src/assets/file-icons/test-jsx.svg | 0 .../src/assets/file-icons/test-ts.svg | 0 .../src/assets/file-icons/tex.svg | 0 .../src/assets/file-icons/textlint.svg | 0 .../src/assets/file-icons/tilt.svg | 0 .../src/assets/file-icons/tldraw.svg | 0 .../src/assets/file-icons/tldraw_light.svg | 0 .../src/assets/file-icons/tobi.svg | 0 .../src/assets/file-icons/tobimake.svg | 0 .../src/assets/file-icons/todo.svg | 0 .../src/assets/file-icons/toml.svg | 0 .../src/assets/file-icons/toml_light.svg | 0 .../src/assets/file-icons/travis.svg | 0 .../src/assets/file-icons/tree.svg | 0 .../src/assets/file-icons/trigger.svg | 0 .../src/assets/file-icons/tsconfig.svg | 0 .../src/assets/file-icons/tsdoc.svg | 0 .../src/assets/file-icons/tsil.svg | 0 .../src/assets/file-icons/tune.svg | 0 .../src/assets/file-icons/turborepo.svg | 0 .../src/assets/file-icons/turborepo_light.svg | 0 .../src/assets/file-icons/twig.svg | 0 .../src/assets/file-icons/twine.svg | 0 .../src/assets/file-icons/typescript-def.svg | 0 .../src/assets/file-icons/typescript.svg | 0 .../src/assets/file-icons/typst.svg | 0 .../src/assets/file-icons/umi.svg | 0 .../src/assets/file-icons/uml.svg | 0 .../src/assets/file-icons/uml_light.svg | 0 .../src/assets/file-icons/unity.svg | 0 .../src/assets/file-icons/unocss.svg | 0 .../src/assets/file-icons/url.svg | 0 .../src/assets/file-icons/uv.svg | 0 .../src/assets/file-icons/vagrant.svg | 0 .../src/assets/file-icons/vala.svg | 0 .../src/assets/file-icons/vanilla-extract.svg | 0 .../src/assets/file-icons/varnish.svg | 0 .../src/assets/file-icons/vedic.svg | 0 .../src/assets/file-icons/velite.svg | 0 .../src/assets/file-icons/velocity.svg | 0 .../src/assets/file-icons/vercel.svg | 0 .../src/assets/file-icons/vercel_light.svg | 0 .../src/assets/file-icons/verdaccio.svg | 0 .../src/assets/file-icons/verified.svg | 0 .../src/assets/file-icons/verilog.svg | 0 .../src/assets/file-icons/vfl.svg | 0 .../src/assets/file-icons/video.svg | 0 .../src/assets/file-icons/vim.svg | 0 .../src/assets/file-icons/virtual.svg | 0 .../src/assets/file-icons/visualstudio.svg | 0 .../src/assets/file-icons/vite.svg | 0 .../src/assets/file-icons/vitest.svg | 0 .../src/assets/file-icons/vlang.svg | 0 .../src/assets/file-icons/vscode.svg | 0 .../src/assets/file-icons/vue-config.svg | 0 .../src/assets/file-icons/vue.svg | 0 .../src/assets/file-icons/vuex-store.svg | 0 .../src/assets/file-icons/wakatime.svg | 0 .../src/assets/file-icons/wakatime_light.svg | 0 .../src/assets/file-icons/wallaby.svg | 0 .../src/assets/file-icons/wally.svg | 0 .../src/assets/file-icons/watchman.svg | 0 .../src/assets/file-icons/webassembly.svg | 0 .../src/assets/file-icons/webhint.svg | 0 .../src/assets/file-icons/webpack.svg | 0 .../src/assets/file-icons/wepy.svg | 0 .../src/assets/file-icons/werf.svg | 0 .../src/assets/file-icons/windicss.svg | 0 .../src/assets/file-icons/wolframlanguage.svg | 0 .../src/assets/file-icons/word.svg | 0 .../src/assets/file-icons/wrangler.svg | 0 .../src/assets/file-icons/wxt.svg | 0 .../src/assets/file-icons/xaml.svg | 0 .../src/assets/file-icons/xmake.svg | 0 .../src/assets/file-icons/xml.svg | 0 .../src/assets/file-icons/yaml.svg | 0 .../src/assets/file-icons/yang.svg | 0 .../src/assets/file-icons/yarn.svg | 0 .../src/assets/file-icons/zeabur.svg | 0 .../src/assets/file-icons/zeabur_light.svg | 0 .../src/assets/file-icons/zig.svg | 0 .../src/assets/file-icons/zip.svg | 0 .../{app => desktop}/src/components/code.tsx | 0 .../src/components/editor-pane.tsx | 0 .../src/components/file-tree.tsx | 0 .../src/components/markdown.tsx | 0 .../src/components/prompt-form.tsx | 0 .../src/components/resizeable-pane.tsx | 0 .../src/components/select-dialog.tsx | 0 .../src/components/select.tsx | 0 .../src/components/session-list.tsx | 0 .../src/components/session-timeline.tsx | 0 .../src/components/sidebar-nav.tsx | 0 .../{app => desktop}/src/context/event.tsx | 0 .../{app => desktop}/src/context/index.ts | 0 .../{app => desktop}/src/context/local.tsx | 0 .../{app => desktop}/src/context/marked.tsx | 0 packages/{app => desktop}/src/context/sdk.tsx | 0 .../{app => desktop}/src/context/shiki.tsx | 0 .../{app => desktop}/src/context/sync.tsx | 0 .../{app => desktop}/src/context/theme.tsx | 0 packages/{app => desktop}/src/env.d.ts | 0 packages/{app => desktop}/src/index.css | 0 packages/{app => desktop}/src/index.tsx | 0 packages/{app => desktop}/src/pages/index.tsx | 0 .../{app => desktop}/src/pages/layout.tsx | 0 packages/{app => desktop}/src/sst-env.d.ts | 0 packages/{app => desktop}/src/ui/button.tsx | 0 .../{app => desktop}/src/ui/collapsible.tsx | 0 .../{app => desktop}/src/ui/file-icon.tsx | 0 .../src/ui/file-icons/sprite.svg | 0 .../src/ui/file-icons/types.ts | 0 .../{app => desktop}/src/ui/icon-button.tsx | 0 packages/{app => desktop}/src/ui/icon.tsx | 0 packages/{app => desktop}/src/ui/index.ts | 0 packages/{app => desktop}/src/ui/link.tsx | 0 packages/{app => desktop}/src/ui/logo.tsx | 0 packages/{app => desktop}/src/ui/tabs.tsx | 0 packages/{app => desktop}/src/ui/tooltip.tsx | 0 packages/{app => desktop}/src/utils/binary.ts | 0 packages/{app => desktop}/src/utils/dom.ts | 0 packages/{app => desktop}/src/utils/index.ts | 0 packages/{app => desktop}/src/utils/path.ts | 0 packages/{app => desktop}/src/utils/speech.ts | 0 packages/{app => desktop}/sst-env.d.ts | 0 packages/{app => desktop}/tsconfig.json | 0 packages/{app => desktop}/vite.config.ts | 0 1143 files changed, 50 insertions(+), 50 deletions(-) rename packages/{app => desktop}/.gitignore (100%) rename packages/{app => desktop}/AGENTS.md (100%) rename packages/{app => desktop}/README.md (100%) rename packages/{app => desktop}/index.html (100%) rename packages/{app => desktop}/package.json (97%) rename packages/{app => desktop}/scripts/vite-theme-plugin.ts (100%) rename packages/{app => desktop}/src/assets/favicon.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/3d.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/abap.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/abc.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/actionscript.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/ada.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/adobe-illustrator.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/adobe-illustrator_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/adobe-photoshop.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/adobe-photoshop_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/adobe-swc.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/adonis.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/advpl.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/amplify.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/android.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/angular.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/antlr.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/apiblueprint.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/apollo.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/applescript.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/apps-script.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/appveyor.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/architecture.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/arduino.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/asciidoc.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/assembly.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/astro-config.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/astro.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/astyle.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/audio.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/aurelia.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/authors.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/auto.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/auto_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/autohotkey.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/autoit.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/azure-pipelines.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/azure.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/babel.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/ballerina.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/bazel.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/bbx.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/beancount.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/bench-js.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/bench-jsx.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/bench-ts.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/bibliography.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/bibtex-style.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/bicep.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/biome.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/bitbucket.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/bithound.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/blender.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/blink.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/blink_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/blitz.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/bower.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/brainfuck.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/browserlist.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/browserlist_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/bruno.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/buck.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/bucklescript.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/buildkite.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/bun.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/bun_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/c.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/c3.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/cabal.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/caddy.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/cadence.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/cairo.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/cake.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/capacitor.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/capnp.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/cbx.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/cds.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/certificate.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/changelog.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/chess.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/chess_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/chrome.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/circleci.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/circleci_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/citation.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/clangd.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/claude.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/cline.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/clojure.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/cloudfoundry.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/cmake.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/coala.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/cobol.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/coconut.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/code-climate.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/code-climate_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/codecov.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/codeowners.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/coderabbit-ai.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/coffee.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/coldfusion.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/coloredpetrinets.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/command.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/commitizen.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/commitlint.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/concourse.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/conduct.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/console.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/contentlayer.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/context.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/contributing.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/controller.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/copilot.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/copilot_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/cpp.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/craco.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/credits.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/crystal.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/crystal_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/csharp.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/css-map.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/css.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/cucumber.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/cuda.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/cursor.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/cursor_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/cypress.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/d.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/dart.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/dart_generated.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/database.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/deepsource.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/denizenscript.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/deno.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/deno_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/dependabot.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/dependencies-update.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/dhall.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/diff.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/dinophp.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/disc.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/django.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/dll.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/docker.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/doctex-installer.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/document.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/dotjs.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/drawio.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/drizzle.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/drone.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/drone_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/duc.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/dune.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/edge.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/editorconfig.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/ejs.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/elixir.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/elm.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/email.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/ember.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/epub.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/erlang.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/esbuild.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/eslint.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/excalidraw.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/exe.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/fastlane.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/favicon.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/figma.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/firebase.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/flash.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/flow.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-admin-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-admin.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-android-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-android.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-angular-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-angular.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-animation-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-animation.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-ansible-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-ansible.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-api-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-api.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-apollo-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-apollo.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-app-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-app.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-archive-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-archive.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-astro-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-astro.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-atom-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-atom.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-attachment-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-attachment.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-audio-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-audio.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-aurelia-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-aurelia.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-aws-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-aws.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-azure-pipelines-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-azure-pipelines.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-backup-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-backup.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-base-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-base.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-batch-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-batch.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-benchmark-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-benchmark.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-bibliography-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-bibliography.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-bicep-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-bicep.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-blender-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-blender.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-bloc-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-bloc.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-bower-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-bower.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-buildkite-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-buildkite.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-cart-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-cart.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-changesets-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-changesets.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-ci-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-ci.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-circleci-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-circleci.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-class-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-class.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-claude-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-claude.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-client-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-client.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-cline-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-cline.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-cloud-functions-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-cloud-functions.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-cloudflare-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-cloudflare.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-cluster-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-cluster.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-cobol-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-cobol.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-command-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-command.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-components-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-components.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-config-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-config.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-connection-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-connection.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-console-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-console.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-constant-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-constant.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-container-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-container.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-content-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-content.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-context-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-context.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-contract-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-contract.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-controller-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-controller.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-core-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-core.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-coverage-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-coverage.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-css-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-css.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-cursor-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-cursor-open_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-cursor.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-cursor_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-custom-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-custom.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-cypress-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-cypress.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-dart-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-dart.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-database-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-database.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-debug-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-debug.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-decorators-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-decorators.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-delta-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-delta.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-desktop-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-desktop.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-directive-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-directive.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-dist-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-dist.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-docker-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-docker.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-docs-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-docs.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-download-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-download.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-drizzle-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-drizzle.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-dump-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-dump.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-element-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-element.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-enum-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-enum.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-environment-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-environment.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-error-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-error.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-event-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-event.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-examples-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-examples.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-expo-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-expo.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-export-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-export.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-fastlane-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-fastlane.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-favicon-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-favicon.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-firebase-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-firebase.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-firestore-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-firestore.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-flow-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-flow.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-flutter-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-flutter.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-font-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-font.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-forgejo-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-forgejo.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-functions-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-functions.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-gamemaker-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-gamemaker.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-generator-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-generator.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-gh-workflows-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-gh-workflows.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-git-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-git.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-gitea-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-gitea.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-github-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-github.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-gitlab-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-gitlab.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-global-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-global.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-godot-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-godot.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-gradle-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-gradle.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-graphql-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-graphql.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-guard-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-guard.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-gulp-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-gulp.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-helm-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-helm.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-helper-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-helper.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-home-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-home.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-hook-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-hook.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-husky-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-husky.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-i18n-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-i18n.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-images-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-images.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-import-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-import.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-include-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-include.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-intellij-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-intellij-open_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-intellij.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-intellij_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-interceptor-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-interceptor.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-interface-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-interface.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-ios-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-ios.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-java-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-java.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-javascript-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-javascript.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-jinja-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-jinja-open_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-jinja.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-jinja_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-job-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-job.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-json-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-json.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-jupyter-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-jupyter.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-keys-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-keys.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-kubernetes-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-kubernetes.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-kusto-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-kusto.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-layout-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-layout.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-lefthook-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-lefthook.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-less-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-less.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-lib-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-lib.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-link-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-link.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-linux-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-linux.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-liquibase-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-liquibase.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-log-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-log.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-lottie-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-lottie.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-lua-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-lua.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-luau-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-luau.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-macos-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-macos.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-mail-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-mail.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-mappings-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-mappings.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-markdown-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-markdown.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-mercurial-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-mercurial.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-messages-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-messages.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-meta-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-meta.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-middleware-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-middleware.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-mjml-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-mjml.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-mobile-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-mobile.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-mock-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-mock.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-mojo-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-mojo.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-molecule-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-molecule.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-moon-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-moon.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-netlify-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-netlify.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-next-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-next.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-ngrx-store-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-ngrx-store.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-node-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-node.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-nuxt-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-nuxt.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-obsidian-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-obsidian.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-organism-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-organism.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-other-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-other.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-packages-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-packages.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-pdf-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-pdf.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-pdm-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-pdm.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-php-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-php.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-phpmailer-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-phpmailer.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-pipe-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-pipe.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-plastic-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-plastic.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-plugin-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-plugin.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-policy-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-policy.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-powershell-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-powershell.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-prisma-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-prisma.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-private-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-private.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-project-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-project.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-prompts-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-prompts.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-proto-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-proto.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-public-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-public.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-python-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-python.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-pytorch-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-pytorch.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-quasar-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-quasar.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-queue-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-queue.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-react-components-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-react-components.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-redux-reducer-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-redux-reducer.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-repository-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-repository.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-resolver-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-resolver.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-resource-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-resource.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-review-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-review.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-robot-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-robot.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-routes-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-routes.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-rules-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-rules.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-rust-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-rust.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-sandbox-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-sandbox.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-sass-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-sass.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-scala-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-scala.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-scons-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-scons.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-scripts-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-scripts.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-secure-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-secure.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-seeders-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-seeders.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-server-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-server.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-serverless-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-serverless.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-shader-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-shader.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-shared-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-shared.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-snapcraft-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-snapcraft.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-snippet-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-snippet.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-src-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-src-tauri-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-src-tauri.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-src.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-stack-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-stack.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-stencil-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-stencil.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-store-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-store.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-storybook-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-storybook.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-stylus-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-stylus.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-sublime-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-sublime.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-supabase-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-supabase.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-svelte-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-svelte.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-svg-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-svg.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-syntax-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-syntax.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-target-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-target.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-taskfile-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-taskfile.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-tasks-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-tasks.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-television-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-television.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-temp-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-temp.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-template-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-template.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-terraform-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-terraform.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-test-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-test.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-theme-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-theme.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-tools-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-tools.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-trash-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-trash.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-trigger-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-trigger.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-turborepo-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-turborepo.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-typescript-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-typescript.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-ui-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-ui.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-unity-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-unity.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-update-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-update.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-upload-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-upload.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-utils-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-utils.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-vercel-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-vercel.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-verdaccio-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-verdaccio.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-video-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-video.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-views-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-views.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-vm-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-vm.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-vscode-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-vscode.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-vue-directives-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-vue-directives.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-vue-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-vue.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-vuepress-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-vuepress.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-vuex-store-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-vuex-store.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-wakatime-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-wakatime.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-webpack-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-webpack.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-windows-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-windows.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-wordpress-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-wordpress.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-yarn-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-yarn.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-zeabur-open.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder-zeabur.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/folder.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/font.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/forth.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/fortran.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/foxpro.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/freemarker.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/fsharp.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/fusebox.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/gamemaker.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/garden.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/gatsby.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/gcp.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/gemfile.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/gemini-ai.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/gemini.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/git.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/github-actions-workflow.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/github-sponsors.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/gitlab.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/gitpod.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/gleam.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/gnuplot.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/go-mod.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/go.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/go_gopher.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/godot-assets.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/godot.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/gradle.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/grafana-alloy.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/grain.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/graphcool.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/graphql.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/gridsome.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/groovy.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/grunt.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/gulp.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/h.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/hack.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/hadolint.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/haml.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/handlebars.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/hardhat.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/harmonix.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/haskell.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/haxe.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/hcl.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/hcl_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/helm.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/heroku.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/hex.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/histoire.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/hjson.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/horusec.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/hosts.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/hosts_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/hpp.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/html.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/http.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/huff.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/huff_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/hurl.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/husky.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/i18n.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/idris.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/ifanr-cloud.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/image.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/imba.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/installation.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/ionic.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/istanbul.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/jar.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/java.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/javaclass.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/javascript-map.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/javascript.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/jenkins.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/jest.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/jinja.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/jinja_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/jsconfig.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/json.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/jsr.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/jsr_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/julia.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/jupyter.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/just.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/karma.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/kcl.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/key.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/keystatic.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/kivy.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/kl.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/knip.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/kotlin.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/kubernetes.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/kusto.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/label.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/laravel.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/latexmk.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/lbx.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/lefthook.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/lerna.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/less.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/liara.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/lib.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/lighthouse.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/lilypond.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/lintstaged.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/liquid.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/lisp.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/livescript.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/lock.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/log.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/lolcode.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/lottie.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/lua.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/luau.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/lyric.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/makefile.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/markdoc-config.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/markdoc.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/markdown.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/markdownlint.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/markojs.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/mathematica.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/matlab.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/maven.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/mdsvex.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/mdx.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/mercurial.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/merlin.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/mermaid.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/meson.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/minecraft-fabric.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/minecraft.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/mint.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/mjml.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/mocha.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/modernizr.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/mojo.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/moon.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/moonscript.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/mxml.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/nano-staged.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/nano-staged_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/ndst.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/nest.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/netlify.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/netlify_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/next.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/next_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/nginx.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/ngrx-actions.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/ngrx-effects.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/ngrx-entity.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/ngrx-reducer.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/ngrx-selectors.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/ngrx-state.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/nim.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/nix.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/nodejs.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/nodejs_alt.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/nodemon.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/npm.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/nuget.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/nunjucks.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/nuxt.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/nx.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/objective-c.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/objective-cpp.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/ocaml.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/odin.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/opa.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/opam.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/openapi.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/openapi_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/otne.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/oxlint.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/packship.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/palette.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/panda.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/parcel.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/pascal.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/pawn.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/payload.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/payload_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/pdf.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/pdm.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/percy.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/perl.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/php-cs-fixer.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/php.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/php_elephant.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/php_elephant_pink.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/phpstan.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/phpunit.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/pinejs.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/pipeline.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/pkl.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/plastic.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/playwright.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/plop.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/pm2-ecosystem.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/pnpm.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/pnpm_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/poetry.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/postcss.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/posthtml.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/powerpoint.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/powershell.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/pre-commit.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/prettier.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/prisma.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/processing.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/prolog.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/prompt.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/proto.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/protractor.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/pug.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/puppet.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/puppeteer.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/purescript.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/python-misc.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/python.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/pytorch.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/qsharp.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/quarto.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/quasar.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/quokka.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/qwik.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/r.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/racket.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/raml.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/razor.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/rbxmk.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/rc.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/react.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/react_ts.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/readme.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/reason.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/red.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/redux-action.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/redux-reducer.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/redux-selector.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/redux-store.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/regedit.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/remark.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/remix.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/remix_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/renovate.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/replit.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/rescript-interface.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/rescript.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/restql.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/riot.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/roadmap.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/roblox.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/robot.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/robots.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/rocket.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/rojo.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/rollup.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/rome.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/routing.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/rspec.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/rubocop.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/rubocop_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/ruby.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/ruff.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/rust.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/salesforce.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/san.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/sas.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/sass.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/sbt.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/scala.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/scheme.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/scons.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/scons_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/screwdriver.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/search.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/semantic-release.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/semantic-release_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/semgrep.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/sentry.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/sequelize.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/serverless.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/settings.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/shader.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/silverstripe.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/simulink.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/siyuan.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/sketch.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/slim.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/slint.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/slug.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/smarty.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/sml.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/snakemake.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/snapcraft.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/snowpack.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/snowpack_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/snyk.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/solidity.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/sonarcloud.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/spwn.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/stackblitz.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/stan.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/steadybit.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/stencil.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/stitches.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/stitches_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/storybook.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/stryker.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/stylable.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/stylelint.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/stylelint_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/stylus.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/sublime.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/subtitles.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/supabase.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/svelte.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/svg.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/svgo.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/svgr.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/swagger.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/sway.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/swc.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/swift.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/syncpack.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/systemd.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/systemd_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/table.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/tailwindcss.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/taskfile.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/tauri.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/taze.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/tcl.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/teal.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/templ.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/template.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/terraform.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/test-js.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/test-jsx.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/test-ts.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/tex.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/textlint.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/tilt.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/tldraw.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/tldraw_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/tobi.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/tobimake.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/todo.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/toml.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/toml_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/travis.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/tree.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/trigger.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/tsconfig.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/tsdoc.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/tsil.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/tune.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/turborepo.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/turborepo_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/twig.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/twine.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/typescript-def.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/typescript.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/typst.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/umi.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/uml.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/uml_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/unity.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/unocss.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/url.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/uv.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/vagrant.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/vala.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/vanilla-extract.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/varnish.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/vedic.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/velite.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/velocity.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/vercel.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/vercel_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/verdaccio.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/verified.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/verilog.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/vfl.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/video.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/vim.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/virtual.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/visualstudio.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/vite.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/vitest.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/vlang.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/vscode.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/vue-config.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/vue.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/vuex-store.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/wakatime.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/wakatime_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/wallaby.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/wally.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/watchman.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/webassembly.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/webhint.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/webpack.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/wepy.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/werf.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/windicss.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/wolframlanguage.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/word.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/wrangler.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/wxt.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/xaml.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/xmake.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/xml.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/yaml.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/yang.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/yarn.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/zeabur.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/zeabur_light.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/zig.svg (100%) rename packages/{app => desktop}/src/assets/file-icons/zip.svg (100%) rename packages/{app => desktop}/src/components/code.tsx (100%) rename packages/{app => desktop}/src/components/editor-pane.tsx (100%) rename packages/{app => desktop}/src/components/file-tree.tsx (100%) rename packages/{app => desktop}/src/components/markdown.tsx (100%) rename packages/{app => desktop}/src/components/prompt-form.tsx (100%) rename packages/{app => desktop}/src/components/resizeable-pane.tsx (100%) rename packages/{app => desktop}/src/components/select-dialog.tsx (100%) rename packages/{app => desktop}/src/components/select.tsx (100%) rename packages/{app => desktop}/src/components/session-list.tsx (100%) rename packages/{app => desktop}/src/components/session-timeline.tsx (100%) rename packages/{app => desktop}/src/components/sidebar-nav.tsx (100%) rename packages/{app => desktop}/src/context/event.tsx (100%) rename packages/{app => desktop}/src/context/index.ts (100%) rename packages/{app => desktop}/src/context/local.tsx (100%) rename packages/{app => desktop}/src/context/marked.tsx (100%) rename packages/{app => desktop}/src/context/sdk.tsx (100%) rename packages/{app => desktop}/src/context/shiki.tsx (100%) rename packages/{app => desktop}/src/context/sync.tsx (100%) rename packages/{app => desktop}/src/context/theme.tsx (100%) rename packages/{app => desktop}/src/env.d.ts (100%) rename packages/{app => desktop}/src/index.css (100%) rename packages/{app => desktop}/src/index.tsx (100%) rename packages/{app => desktop}/src/pages/index.tsx (100%) rename packages/{app => desktop}/src/pages/layout.tsx (100%) rename packages/{app => desktop}/src/sst-env.d.ts (100%) rename packages/{app => desktop}/src/ui/button.tsx (100%) rename packages/{app => desktop}/src/ui/collapsible.tsx (100%) rename packages/{app => desktop}/src/ui/file-icon.tsx (100%) rename packages/{app => desktop}/src/ui/file-icons/sprite.svg (100%) rename packages/{app => desktop}/src/ui/file-icons/types.ts (100%) rename packages/{app => desktop}/src/ui/icon-button.tsx (100%) rename packages/{app => desktop}/src/ui/icon.tsx (100%) rename packages/{app => desktop}/src/ui/index.ts (100%) rename packages/{app => desktop}/src/ui/link.tsx (100%) rename packages/{app => desktop}/src/ui/logo.tsx (100%) rename packages/{app => desktop}/src/ui/tabs.tsx (100%) rename packages/{app => desktop}/src/ui/tooltip.tsx (100%) rename packages/{app => desktop}/src/utils/binary.ts (100%) rename packages/{app => desktop}/src/utils/dom.ts (100%) rename packages/{app => desktop}/src/utils/index.ts (100%) rename packages/{app => desktop}/src/utils/path.ts (100%) rename packages/{app => desktop}/src/utils/speech.ts (100%) rename packages/{app => desktop}/sst-env.d.ts (100%) rename packages/{app => desktop}/tsconfig.json (100%) rename packages/{app => desktop}/vite.config.ts (100%) diff --git a/bun.lock b/bun.lock index 1a0c12129..068a37caa 100644 --- a/bun.lock +++ b/bun.lock @@ -10,40 +10,6 @@ "turbo": "2.5.6", }, }, - "packages/app": { - "name": "@opencode/app", - "version": "0.14.1", - "dependencies": { - "@kobalte/core": "catalog:", - "@opencode-ai/sdk": "workspace:*", - "@shikijs/transformers": "3.9.2", - "@solid-primitives/event-bus": "1.1.2", - "@solid-primitives/resize-observer": "2.1.3", - "@solid-primitives/scroll": "2.1.3", - "@solidjs/router": "0.15.3", - "@thisbeyond/solid-dnd": "0.7.5", - "diff": "8.0.2", - "fuzzysort": "catalog:", - "luxon": "catalog:", - "marked": "16.2.0", - "marked-shiki": "1.2.1", - "remeda": "catalog:", - "shiki": "3.9.2", - "solid-js": "catalog:", - "solid-list": "0.3.0", - "tailwindcss": "4.1.11", - "virtua": "0.42.3", - }, - "devDependencies": { - "@tailwindcss/vite": "4.1.11", - "@types/luxon": "3.7.1", - "@types/node": "catalog:", - "typescript": "catalog:", - "vite": "^6.0.0", - "vite-plugin-icons-spritesheet": "3.0.1", - "vite-plugin-solid": "^2.11.6", - }, - }, "packages/console/app": { "name": "@opencode/console-app", "dependencies": { @@ -127,6 +93,40 @@ "typescript": "catalog:", }, }, + "packages/desktop": { + "name": "@opencode/desktop", + "version": "0.14.1", + "dependencies": { + "@kobalte/core": "catalog:", + "@opencode-ai/sdk": "workspace:*", + "@shikijs/transformers": "3.9.2", + "@solid-primitives/event-bus": "1.1.2", + "@solid-primitives/resize-observer": "2.1.3", + "@solid-primitives/scroll": "2.1.3", + "@solidjs/router": "0.15.3", + "@thisbeyond/solid-dnd": "0.7.5", + "diff": "8.0.2", + "fuzzysort": "catalog:", + "luxon": "catalog:", + "marked": "16.2.0", + "marked-shiki": "1.2.1", + "remeda": "catalog:", + "shiki": "3.9.2", + "solid-js": "catalog:", + "solid-list": "0.3.0", + "tailwindcss": "4.1.11", + "virtua": "0.42.3", + }, + "devDependencies": { + "@tailwindcss/vite": "4.1.11", + "@types/luxon": "3.7.1", + "@types/node": "catalog:", + "typescript": "catalog:", + "vite": "^6.0.0", + "vite-plugin-icons-spritesheet": "3.0.1", + "vite-plugin-solid": "^2.11.6", + }, + }, "packages/function": { "name": "@opencode/function", "version": "0.14.1", @@ -370,7 +370,7 @@ "@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.782.0", "", { "dependencies": { "@aws-sdk/middleware-user-agent": "3.782.0", "@aws-sdk/types": "3.775.0", "@smithy/node-config-provider": "^4.0.2", "@smithy/types": "^4.2.0", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-dMFkUBgh2Bxuw8fYZQoH/u3H4afQ12VSkzEi//qFiDTwbKYq+u+RYjc8GLDM6JSK1BShMu5AVR7HD4ap1TYUnA=="], - "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + "@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="], "@babel/compat-data": ["@babel/compat-data@7.28.4", "", {}, "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw=="], @@ -746,8 +746,6 @@ "@opencode-ai/sdk": ["@opencode-ai/sdk@workspace:packages/sdk/js"], - "@opencode/app": ["@opencode/app@workspace:packages/app"], - "@opencode/console-app": ["@opencode/console-app@workspace:packages/console/app"], "@opencode/console-core": ["@opencode/console-core@workspace:packages/console/core"], @@ -760,6 +758,8 @@ "@opencode/console-scripts": ["@opencode/console-scripts@workspace:packages/console/scripts"], + "@opencode/desktop": ["@opencode/desktop@workspace:packages/desktop"], + "@opencode/function": ["@opencode/function@workspace:packages/function"], "@opencode/web": ["@opencode/web@workspace:packages/web"], @@ -1388,7 +1388,7 @@ "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], - "chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], + "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], "character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="], @@ -3028,6 +3028,8 @@ "@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], + "@babel/core/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], "@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -3036,14 +3038,16 @@ "@babel/helper-create-class-features-plugin/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "@babel/template/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + + "@babel/traverse/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + "@cloudflare/kv-asset-handler/mime": ["mime@3.0.0", "", { "bin": { "mime": "cli.js" } }, "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="], "@cloudflare/unenv-preset/unenv": ["unenv@2.0.0-rc.21", "", { "dependencies": { "defu": "^6.1.4", "exsolve": "^1.0.7", "ohash": "^2.0.11", "pathe": "^2.0.3", "ufo": "^1.6.1" } }, "sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A=="], "@cspotcode/source-map-support/@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.9", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="], - "@dot/log/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "@esbuild-kit/core-utils/esbuild": ["esbuild@0.18.20", "", { "optionalDependencies": { "@esbuild/android-arm": "0.18.20", "@esbuild/android-arm64": "0.18.20", "@esbuild/android-x64": "0.18.20", "@esbuild/darwin-arm64": "0.18.20", "@esbuild/darwin-x64": "0.18.20", "@esbuild/freebsd-arm64": "0.18.20", "@esbuild/freebsd-x64": "0.18.20", "@esbuild/linux-arm": "0.18.20", "@esbuild/linux-arm64": "0.18.20", "@esbuild/linux-ia32": "0.18.20", "@esbuild/linux-loong64": "0.18.20", "@esbuild/linux-mips64el": "0.18.20", "@esbuild/linux-ppc64": "0.18.20", "@esbuild/linux-riscv64": "0.18.20", "@esbuild/linux-s390x": "0.18.20", "@esbuild/linux-x64": "0.18.20", "@esbuild/netbsd-x64": "0.18.20", "@esbuild/openbsd-x64": "0.18.20", "@esbuild/sunos-x64": "0.18.20", "@esbuild/win32-arm64": "0.18.20", "@esbuild/win32-ia32": "0.18.20", "@esbuild/win32-x64": "0.18.20" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA=="], "@expressive-code/plugin-shiki/shiki": ["shiki@3.13.0", "", { "dependencies": { "@shikijs/core": "3.13.0", "@shikijs/engine-javascript": "3.13.0", "@shikijs/engine-oniguruma": "3.13.0", "@shikijs/langs": "3.13.0", "@shikijs/themes": "3.13.0", "@shikijs/types": "3.13.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-aZW4l8Og16CokuCLf8CF8kq+KK2yOygapU5m3+hoGw0Mdosc6fPitjM+ujYarppj5ZIKGyPDPP1vqmQhr+5/0g=="], @@ -3054,8 +3058,6 @@ "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], - "@jsx-email/cli/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "@jsx-email/cli/esbuild": ["esbuild@0.19.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.19.12", "@esbuild/android-arm": "0.19.12", "@esbuild/android-arm64": "0.19.12", "@esbuild/android-x64": "0.19.12", "@esbuild/darwin-arm64": "0.19.12", "@esbuild/darwin-x64": "0.19.12", "@esbuild/freebsd-arm64": "0.19.12", "@esbuild/freebsd-x64": "0.19.12", "@esbuild/linux-arm": "0.19.12", "@esbuild/linux-arm64": "0.19.12", "@esbuild/linux-ia32": "0.19.12", "@esbuild/linux-loong64": "0.19.12", "@esbuild/linux-mips64el": "0.19.12", "@esbuild/linux-ppc64": "0.19.12", "@esbuild/linux-riscv64": "0.19.12", "@esbuild/linux-s390x": "0.19.12", "@esbuild/linux-x64": "0.19.12", "@esbuild/netbsd-x64": "0.19.12", "@esbuild/openbsd-x64": "0.19.12", "@esbuild/sunos-x64": "0.19.12", "@esbuild/win32-arm64": "0.19.12", "@esbuild/win32-ia32": "0.19.12", "@esbuild/win32-x64": "0.19.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg=="], "@jsx-email/cli/tailwindcss": ["tailwindcss@3.3.3", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.5.3", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.2.12", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.18.2", "lilconfig": "^2.1.0", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.0.0", "postcss": "^8.4.23", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", "postcss-load-config": "^4.0.1", "postcss-nested": "^6.0.1", "postcss-selector-parser": "^6.0.11", "resolve": "^1.22.2", "sucrase": "^3.32.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w=="], @@ -3140,12 +3142,8 @@ "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "@tanstack/directive-functions-plugin/@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="], - "@tanstack/router-utils/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - "@tanstack/server-functions-plugin/@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="], - "@vercel/nft/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], "@vercel/nft/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="], @@ -3182,6 +3180,8 @@ "body-parser/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], + "boxen/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], + "compress-commons/is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], "condense-newlines/kind-of": ["kind-of@3.2.2", "", { "dependencies": { "is-buffer": "^1.1.5" } }, "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ=="], @@ -3198,8 +3198,6 @@ "editorconfig/minimatch": ["minimatch@9.0.1", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w=="], - "esbuild-plugin-copy/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "esbuild-plugin-copy/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], "estree-util-to-js/source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], @@ -3394,6 +3392,8 @@ "vinxi/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], + "vite-plugin-icons-spritesheet/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], + "wrangler/esbuild": ["esbuild@0.25.4", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.4", "@esbuild/android-arm": "0.25.4", "@esbuild/android-arm64": "0.25.4", "@esbuild/android-x64": "0.25.4", "@esbuild/darwin-arm64": "0.25.4", "@esbuild/darwin-x64": "0.25.4", "@esbuild/freebsd-arm64": "0.25.4", "@esbuild/freebsd-x64": "0.25.4", "@esbuild/linux-arm": "0.25.4", "@esbuild/linux-arm64": "0.25.4", "@esbuild/linux-ia32": "0.25.4", "@esbuild/linux-loong64": "0.25.4", "@esbuild/linux-mips64el": "0.25.4", "@esbuild/linux-ppc64": "0.25.4", "@esbuild/linux-riscv64": "0.25.4", "@esbuild/linux-s390x": "0.25.4", "@esbuild/linux-x64": "0.25.4", "@esbuild/netbsd-arm64": "0.25.4", "@esbuild/netbsd-x64": "0.25.4", "@esbuild/openbsd-arm64": "0.25.4", "@esbuild/openbsd-x64": "0.25.4", "@esbuild/sunos-x64": "0.25.4", "@esbuild/win32-arm64": "0.25.4", "@esbuild/win32-ia32": "0.25.4", "@esbuild/win32-x64": "0.25.4" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q=="], "wrangler/unenv": ["unenv@2.0.0-rc.21", "", { "dependencies": { "defu": "^6.1.4", "exsolve": "^1.0.7", "ohash": "^2.0.11", "pathe": "^2.0.3", "ufo": "^1.6.1" } }, "sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A=="], diff --git a/infra/desktop.ts b/infra/desktop.ts index 5c4155cc9..d4e32c65d 100644 --- a/infra/desktop.ts +++ b/infra/desktop.ts @@ -2,7 +2,7 @@ import { domain } from "./stage" new sst.cloudflare.StaticSite("Desktop", { domain: "desktop." + domain, - path: "packages/app", + path: "packages/desktop", build: { command: "bun turbo build", output: "./dist", diff --git a/packages/app/.gitignore b/packages/desktop/.gitignore similarity index 100% rename from packages/app/.gitignore rename to packages/desktop/.gitignore diff --git a/packages/app/AGENTS.md b/packages/desktop/AGENTS.md similarity index 100% rename from packages/app/AGENTS.md rename to packages/desktop/AGENTS.md diff --git a/packages/app/README.md b/packages/desktop/README.md similarity index 100% rename from packages/app/README.md rename to packages/desktop/README.md diff --git a/packages/app/index.html b/packages/desktop/index.html similarity index 100% rename from packages/app/index.html rename to packages/desktop/index.html diff --git a/packages/app/package.json b/packages/desktop/package.json similarity index 97% rename from packages/app/package.json rename to packages/desktop/package.json index 1cc84cc30..04a0ce801 100644 --- a/packages/app/package.json +++ b/packages/desktop/package.json @@ -1,5 +1,5 @@ { - "name": "@opencode/app", + "name": "@opencode/desktop", "version": "0.14.1", "description": "", "type": "module", diff --git a/packages/app/scripts/vite-theme-plugin.ts b/packages/desktop/scripts/vite-theme-plugin.ts similarity index 100% rename from packages/app/scripts/vite-theme-plugin.ts rename to packages/desktop/scripts/vite-theme-plugin.ts diff --git a/packages/app/src/assets/favicon.svg b/packages/desktop/src/assets/favicon.svg similarity index 100% rename from packages/app/src/assets/favicon.svg rename to packages/desktop/src/assets/favicon.svg diff --git a/packages/app/src/assets/file-icons/3d.svg b/packages/desktop/src/assets/file-icons/3d.svg similarity index 100% rename from packages/app/src/assets/file-icons/3d.svg rename to packages/desktop/src/assets/file-icons/3d.svg diff --git a/packages/app/src/assets/file-icons/abap.svg b/packages/desktop/src/assets/file-icons/abap.svg similarity index 100% rename from packages/app/src/assets/file-icons/abap.svg rename to packages/desktop/src/assets/file-icons/abap.svg diff --git a/packages/app/src/assets/file-icons/abc.svg b/packages/desktop/src/assets/file-icons/abc.svg similarity index 100% rename from packages/app/src/assets/file-icons/abc.svg rename to packages/desktop/src/assets/file-icons/abc.svg diff --git a/packages/app/src/assets/file-icons/actionscript.svg b/packages/desktop/src/assets/file-icons/actionscript.svg similarity index 100% rename from packages/app/src/assets/file-icons/actionscript.svg rename to packages/desktop/src/assets/file-icons/actionscript.svg diff --git a/packages/app/src/assets/file-icons/ada.svg b/packages/desktop/src/assets/file-icons/ada.svg similarity index 100% rename from packages/app/src/assets/file-icons/ada.svg rename to packages/desktop/src/assets/file-icons/ada.svg diff --git a/packages/app/src/assets/file-icons/adobe-illustrator.svg b/packages/desktop/src/assets/file-icons/adobe-illustrator.svg similarity index 100% rename from packages/app/src/assets/file-icons/adobe-illustrator.svg rename to packages/desktop/src/assets/file-icons/adobe-illustrator.svg diff --git a/packages/app/src/assets/file-icons/adobe-illustrator_light.svg b/packages/desktop/src/assets/file-icons/adobe-illustrator_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/adobe-illustrator_light.svg rename to packages/desktop/src/assets/file-icons/adobe-illustrator_light.svg diff --git a/packages/app/src/assets/file-icons/adobe-photoshop.svg b/packages/desktop/src/assets/file-icons/adobe-photoshop.svg similarity index 100% rename from packages/app/src/assets/file-icons/adobe-photoshop.svg rename to packages/desktop/src/assets/file-icons/adobe-photoshop.svg diff --git a/packages/app/src/assets/file-icons/adobe-photoshop_light.svg b/packages/desktop/src/assets/file-icons/adobe-photoshop_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/adobe-photoshop_light.svg rename to packages/desktop/src/assets/file-icons/adobe-photoshop_light.svg diff --git a/packages/app/src/assets/file-icons/adobe-swc.svg b/packages/desktop/src/assets/file-icons/adobe-swc.svg similarity index 100% rename from packages/app/src/assets/file-icons/adobe-swc.svg rename to packages/desktop/src/assets/file-icons/adobe-swc.svg diff --git a/packages/app/src/assets/file-icons/adonis.svg b/packages/desktop/src/assets/file-icons/adonis.svg similarity index 100% rename from packages/app/src/assets/file-icons/adonis.svg rename to packages/desktop/src/assets/file-icons/adonis.svg diff --git a/packages/app/src/assets/file-icons/advpl.svg b/packages/desktop/src/assets/file-icons/advpl.svg similarity index 100% rename from packages/app/src/assets/file-icons/advpl.svg rename to packages/desktop/src/assets/file-icons/advpl.svg diff --git a/packages/app/src/assets/file-icons/amplify.svg b/packages/desktop/src/assets/file-icons/amplify.svg similarity index 100% rename from packages/app/src/assets/file-icons/amplify.svg rename to packages/desktop/src/assets/file-icons/amplify.svg diff --git a/packages/app/src/assets/file-icons/android.svg b/packages/desktop/src/assets/file-icons/android.svg similarity index 100% rename from packages/app/src/assets/file-icons/android.svg rename to packages/desktop/src/assets/file-icons/android.svg diff --git a/packages/app/src/assets/file-icons/angular.svg b/packages/desktop/src/assets/file-icons/angular.svg similarity index 100% rename from packages/app/src/assets/file-icons/angular.svg rename to packages/desktop/src/assets/file-icons/angular.svg diff --git a/packages/app/src/assets/file-icons/antlr.svg b/packages/desktop/src/assets/file-icons/antlr.svg similarity index 100% rename from packages/app/src/assets/file-icons/antlr.svg rename to packages/desktop/src/assets/file-icons/antlr.svg diff --git a/packages/app/src/assets/file-icons/apiblueprint.svg b/packages/desktop/src/assets/file-icons/apiblueprint.svg similarity index 100% rename from packages/app/src/assets/file-icons/apiblueprint.svg rename to packages/desktop/src/assets/file-icons/apiblueprint.svg diff --git a/packages/app/src/assets/file-icons/apollo.svg b/packages/desktop/src/assets/file-icons/apollo.svg similarity index 100% rename from packages/app/src/assets/file-icons/apollo.svg rename to packages/desktop/src/assets/file-icons/apollo.svg diff --git a/packages/app/src/assets/file-icons/applescript.svg b/packages/desktop/src/assets/file-icons/applescript.svg similarity index 100% rename from packages/app/src/assets/file-icons/applescript.svg rename to packages/desktop/src/assets/file-icons/applescript.svg diff --git a/packages/app/src/assets/file-icons/apps-script.svg b/packages/desktop/src/assets/file-icons/apps-script.svg similarity index 100% rename from packages/app/src/assets/file-icons/apps-script.svg rename to packages/desktop/src/assets/file-icons/apps-script.svg diff --git a/packages/app/src/assets/file-icons/appveyor.svg b/packages/desktop/src/assets/file-icons/appveyor.svg similarity index 100% rename from packages/app/src/assets/file-icons/appveyor.svg rename to packages/desktop/src/assets/file-icons/appveyor.svg diff --git a/packages/app/src/assets/file-icons/architecture.svg b/packages/desktop/src/assets/file-icons/architecture.svg similarity index 100% rename from packages/app/src/assets/file-icons/architecture.svg rename to packages/desktop/src/assets/file-icons/architecture.svg diff --git a/packages/app/src/assets/file-icons/arduino.svg b/packages/desktop/src/assets/file-icons/arduino.svg similarity index 100% rename from packages/app/src/assets/file-icons/arduino.svg rename to packages/desktop/src/assets/file-icons/arduino.svg diff --git a/packages/app/src/assets/file-icons/asciidoc.svg b/packages/desktop/src/assets/file-icons/asciidoc.svg similarity index 100% rename from packages/app/src/assets/file-icons/asciidoc.svg rename to packages/desktop/src/assets/file-icons/asciidoc.svg diff --git a/packages/app/src/assets/file-icons/assembly.svg b/packages/desktop/src/assets/file-icons/assembly.svg similarity index 100% rename from packages/app/src/assets/file-icons/assembly.svg rename to packages/desktop/src/assets/file-icons/assembly.svg diff --git a/packages/app/src/assets/file-icons/astro-config.svg b/packages/desktop/src/assets/file-icons/astro-config.svg similarity index 100% rename from packages/app/src/assets/file-icons/astro-config.svg rename to packages/desktop/src/assets/file-icons/astro-config.svg diff --git a/packages/app/src/assets/file-icons/astro.svg b/packages/desktop/src/assets/file-icons/astro.svg similarity index 100% rename from packages/app/src/assets/file-icons/astro.svg rename to packages/desktop/src/assets/file-icons/astro.svg diff --git a/packages/app/src/assets/file-icons/astyle.svg b/packages/desktop/src/assets/file-icons/astyle.svg similarity index 100% rename from packages/app/src/assets/file-icons/astyle.svg rename to packages/desktop/src/assets/file-icons/astyle.svg diff --git a/packages/app/src/assets/file-icons/audio.svg b/packages/desktop/src/assets/file-icons/audio.svg similarity index 100% rename from packages/app/src/assets/file-icons/audio.svg rename to packages/desktop/src/assets/file-icons/audio.svg diff --git a/packages/app/src/assets/file-icons/aurelia.svg b/packages/desktop/src/assets/file-icons/aurelia.svg similarity index 100% rename from packages/app/src/assets/file-icons/aurelia.svg rename to packages/desktop/src/assets/file-icons/aurelia.svg diff --git a/packages/app/src/assets/file-icons/authors.svg b/packages/desktop/src/assets/file-icons/authors.svg similarity index 100% rename from packages/app/src/assets/file-icons/authors.svg rename to packages/desktop/src/assets/file-icons/authors.svg diff --git a/packages/app/src/assets/file-icons/auto.svg b/packages/desktop/src/assets/file-icons/auto.svg similarity index 100% rename from packages/app/src/assets/file-icons/auto.svg rename to packages/desktop/src/assets/file-icons/auto.svg diff --git a/packages/app/src/assets/file-icons/auto_light.svg b/packages/desktop/src/assets/file-icons/auto_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/auto_light.svg rename to packages/desktop/src/assets/file-icons/auto_light.svg diff --git a/packages/app/src/assets/file-icons/autohotkey.svg b/packages/desktop/src/assets/file-icons/autohotkey.svg similarity index 100% rename from packages/app/src/assets/file-icons/autohotkey.svg rename to packages/desktop/src/assets/file-icons/autohotkey.svg diff --git a/packages/app/src/assets/file-icons/autoit.svg b/packages/desktop/src/assets/file-icons/autoit.svg similarity index 100% rename from packages/app/src/assets/file-icons/autoit.svg rename to packages/desktop/src/assets/file-icons/autoit.svg diff --git a/packages/app/src/assets/file-icons/azure-pipelines.svg b/packages/desktop/src/assets/file-icons/azure-pipelines.svg similarity index 100% rename from packages/app/src/assets/file-icons/azure-pipelines.svg rename to packages/desktop/src/assets/file-icons/azure-pipelines.svg diff --git a/packages/app/src/assets/file-icons/azure.svg b/packages/desktop/src/assets/file-icons/azure.svg similarity index 100% rename from packages/app/src/assets/file-icons/azure.svg rename to packages/desktop/src/assets/file-icons/azure.svg diff --git a/packages/app/src/assets/file-icons/babel.svg b/packages/desktop/src/assets/file-icons/babel.svg similarity index 100% rename from packages/app/src/assets/file-icons/babel.svg rename to packages/desktop/src/assets/file-icons/babel.svg diff --git a/packages/app/src/assets/file-icons/ballerina.svg b/packages/desktop/src/assets/file-icons/ballerina.svg similarity index 100% rename from packages/app/src/assets/file-icons/ballerina.svg rename to packages/desktop/src/assets/file-icons/ballerina.svg diff --git a/packages/app/src/assets/file-icons/bazel.svg b/packages/desktop/src/assets/file-icons/bazel.svg similarity index 100% rename from packages/app/src/assets/file-icons/bazel.svg rename to packages/desktop/src/assets/file-icons/bazel.svg diff --git a/packages/app/src/assets/file-icons/bbx.svg b/packages/desktop/src/assets/file-icons/bbx.svg similarity index 100% rename from packages/app/src/assets/file-icons/bbx.svg rename to packages/desktop/src/assets/file-icons/bbx.svg diff --git a/packages/app/src/assets/file-icons/beancount.svg b/packages/desktop/src/assets/file-icons/beancount.svg similarity index 100% rename from packages/app/src/assets/file-icons/beancount.svg rename to packages/desktop/src/assets/file-icons/beancount.svg diff --git a/packages/app/src/assets/file-icons/bench-js.svg b/packages/desktop/src/assets/file-icons/bench-js.svg similarity index 100% rename from packages/app/src/assets/file-icons/bench-js.svg rename to packages/desktop/src/assets/file-icons/bench-js.svg diff --git a/packages/app/src/assets/file-icons/bench-jsx.svg b/packages/desktop/src/assets/file-icons/bench-jsx.svg similarity index 100% rename from packages/app/src/assets/file-icons/bench-jsx.svg rename to packages/desktop/src/assets/file-icons/bench-jsx.svg diff --git a/packages/app/src/assets/file-icons/bench-ts.svg b/packages/desktop/src/assets/file-icons/bench-ts.svg similarity index 100% rename from packages/app/src/assets/file-icons/bench-ts.svg rename to packages/desktop/src/assets/file-icons/bench-ts.svg diff --git a/packages/app/src/assets/file-icons/bibliography.svg b/packages/desktop/src/assets/file-icons/bibliography.svg similarity index 100% rename from packages/app/src/assets/file-icons/bibliography.svg rename to packages/desktop/src/assets/file-icons/bibliography.svg diff --git a/packages/app/src/assets/file-icons/bibtex-style.svg b/packages/desktop/src/assets/file-icons/bibtex-style.svg similarity index 100% rename from packages/app/src/assets/file-icons/bibtex-style.svg rename to packages/desktop/src/assets/file-icons/bibtex-style.svg diff --git a/packages/app/src/assets/file-icons/bicep.svg b/packages/desktop/src/assets/file-icons/bicep.svg similarity index 100% rename from packages/app/src/assets/file-icons/bicep.svg rename to packages/desktop/src/assets/file-icons/bicep.svg diff --git a/packages/app/src/assets/file-icons/biome.svg b/packages/desktop/src/assets/file-icons/biome.svg similarity index 100% rename from packages/app/src/assets/file-icons/biome.svg rename to packages/desktop/src/assets/file-icons/biome.svg diff --git a/packages/app/src/assets/file-icons/bitbucket.svg b/packages/desktop/src/assets/file-icons/bitbucket.svg similarity index 100% rename from packages/app/src/assets/file-icons/bitbucket.svg rename to packages/desktop/src/assets/file-icons/bitbucket.svg diff --git a/packages/app/src/assets/file-icons/bithound.svg b/packages/desktop/src/assets/file-icons/bithound.svg similarity index 100% rename from packages/app/src/assets/file-icons/bithound.svg rename to packages/desktop/src/assets/file-icons/bithound.svg diff --git a/packages/app/src/assets/file-icons/blender.svg b/packages/desktop/src/assets/file-icons/blender.svg similarity index 100% rename from packages/app/src/assets/file-icons/blender.svg rename to packages/desktop/src/assets/file-icons/blender.svg diff --git a/packages/app/src/assets/file-icons/blink.svg b/packages/desktop/src/assets/file-icons/blink.svg similarity index 100% rename from packages/app/src/assets/file-icons/blink.svg rename to packages/desktop/src/assets/file-icons/blink.svg diff --git a/packages/app/src/assets/file-icons/blink_light.svg b/packages/desktop/src/assets/file-icons/blink_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/blink_light.svg rename to packages/desktop/src/assets/file-icons/blink_light.svg diff --git a/packages/app/src/assets/file-icons/blitz.svg b/packages/desktop/src/assets/file-icons/blitz.svg similarity index 100% rename from packages/app/src/assets/file-icons/blitz.svg rename to packages/desktop/src/assets/file-icons/blitz.svg diff --git a/packages/app/src/assets/file-icons/bower.svg b/packages/desktop/src/assets/file-icons/bower.svg similarity index 100% rename from packages/app/src/assets/file-icons/bower.svg rename to packages/desktop/src/assets/file-icons/bower.svg diff --git a/packages/app/src/assets/file-icons/brainfuck.svg b/packages/desktop/src/assets/file-icons/brainfuck.svg similarity index 100% rename from packages/app/src/assets/file-icons/brainfuck.svg rename to packages/desktop/src/assets/file-icons/brainfuck.svg diff --git a/packages/app/src/assets/file-icons/browserlist.svg b/packages/desktop/src/assets/file-icons/browserlist.svg similarity index 100% rename from packages/app/src/assets/file-icons/browserlist.svg rename to packages/desktop/src/assets/file-icons/browserlist.svg diff --git a/packages/app/src/assets/file-icons/browserlist_light.svg b/packages/desktop/src/assets/file-icons/browserlist_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/browserlist_light.svg rename to packages/desktop/src/assets/file-icons/browserlist_light.svg diff --git a/packages/app/src/assets/file-icons/bruno.svg b/packages/desktop/src/assets/file-icons/bruno.svg similarity index 100% rename from packages/app/src/assets/file-icons/bruno.svg rename to packages/desktop/src/assets/file-icons/bruno.svg diff --git a/packages/app/src/assets/file-icons/buck.svg b/packages/desktop/src/assets/file-icons/buck.svg similarity index 100% rename from packages/app/src/assets/file-icons/buck.svg rename to packages/desktop/src/assets/file-icons/buck.svg diff --git a/packages/app/src/assets/file-icons/bucklescript.svg b/packages/desktop/src/assets/file-icons/bucklescript.svg similarity index 100% rename from packages/app/src/assets/file-icons/bucklescript.svg rename to packages/desktop/src/assets/file-icons/bucklescript.svg diff --git a/packages/app/src/assets/file-icons/buildkite.svg b/packages/desktop/src/assets/file-icons/buildkite.svg similarity index 100% rename from packages/app/src/assets/file-icons/buildkite.svg rename to packages/desktop/src/assets/file-icons/buildkite.svg diff --git a/packages/app/src/assets/file-icons/bun.svg b/packages/desktop/src/assets/file-icons/bun.svg similarity index 100% rename from packages/app/src/assets/file-icons/bun.svg rename to packages/desktop/src/assets/file-icons/bun.svg diff --git a/packages/app/src/assets/file-icons/bun_light.svg b/packages/desktop/src/assets/file-icons/bun_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/bun_light.svg rename to packages/desktop/src/assets/file-icons/bun_light.svg diff --git a/packages/app/src/assets/file-icons/c.svg b/packages/desktop/src/assets/file-icons/c.svg similarity index 100% rename from packages/app/src/assets/file-icons/c.svg rename to packages/desktop/src/assets/file-icons/c.svg diff --git a/packages/app/src/assets/file-icons/c3.svg b/packages/desktop/src/assets/file-icons/c3.svg similarity index 100% rename from packages/app/src/assets/file-icons/c3.svg rename to packages/desktop/src/assets/file-icons/c3.svg diff --git a/packages/app/src/assets/file-icons/cabal.svg b/packages/desktop/src/assets/file-icons/cabal.svg similarity index 100% rename from packages/app/src/assets/file-icons/cabal.svg rename to packages/desktop/src/assets/file-icons/cabal.svg diff --git a/packages/app/src/assets/file-icons/caddy.svg b/packages/desktop/src/assets/file-icons/caddy.svg similarity index 100% rename from packages/app/src/assets/file-icons/caddy.svg rename to packages/desktop/src/assets/file-icons/caddy.svg diff --git a/packages/app/src/assets/file-icons/cadence.svg b/packages/desktop/src/assets/file-icons/cadence.svg similarity index 100% rename from packages/app/src/assets/file-icons/cadence.svg rename to packages/desktop/src/assets/file-icons/cadence.svg diff --git a/packages/app/src/assets/file-icons/cairo.svg b/packages/desktop/src/assets/file-icons/cairo.svg similarity index 100% rename from packages/app/src/assets/file-icons/cairo.svg rename to packages/desktop/src/assets/file-icons/cairo.svg diff --git a/packages/app/src/assets/file-icons/cake.svg b/packages/desktop/src/assets/file-icons/cake.svg similarity index 100% rename from packages/app/src/assets/file-icons/cake.svg rename to packages/desktop/src/assets/file-icons/cake.svg diff --git a/packages/app/src/assets/file-icons/capacitor.svg b/packages/desktop/src/assets/file-icons/capacitor.svg similarity index 100% rename from packages/app/src/assets/file-icons/capacitor.svg rename to packages/desktop/src/assets/file-icons/capacitor.svg diff --git a/packages/app/src/assets/file-icons/capnp.svg b/packages/desktop/src/assets/file-icons/capnp.svg similarity index 100% rename from packages/app/src/assets/file-icons/capnp.svg rename to packages/desktop/src/assets/file-icons/capnp.svg diff --git a/packages/app/src/assets/file-icons/cbx.svg b/packages/desktop/src/assets/file-icons/cbx.svg similarity index 100% rename from packages/app/src/assets/file-icons/cbx.svg rename to packages/desktop/src/assets/file-icons/cbx.svg diff --git a/packages/app/src/assets/file-icons/cds.svg b/packages/desktop/src/assets/file-icons/cds.svg similarity index 100% rename from packages/app/src/assets/file-icons/cds.svg rename to packages/desktop/src/assets/file-icons/cds.svg diff --git a/packages/app/src/assets/file-icons/certificate.svg b/packages/desktop/src/assets/file-icons/certificate.svg similarity index 100% rename from packages/app/src/assets/file-icons/certificate.svg rename to packages/desktop/src/assets/file-icons/certificate.svg diff --git a/packages/app/src/assets/file-icons/changelog.svg b/packages/desktop/src/assets/file-icons/changelog.svg similarity index 100% rename from packages/app/src/assets/file-icons/changelog.svg rename to packages/desktop/src/assets/file-icons/changelog.svg diff --git a/packages/app/src/assets/file-icons/chess.svg b/packages/desktop/src/assets/file-icons/chess.svg similarity index 100% rename from packages/app/src/assets/file-icons/chess.svg rename to packages/desktop/src/assets/file-icons/chess.svg diff --git a/packages/app/src/assets/file-icons/chess_light.svg b/packages/desktop/src/assets/file-icons/chess_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/chess_light.svg rename to packages/desktop/src/assets/file-icons/chess_light.svg diff --git a/packages/app/src/assets/file-icons/chrome.svg b/packages/desktop/src/assets/file-icons/chrome.svg similarity index 100% rename from packages/app/src/assets/file-icons/chrome.svg rename to packages/desktop/src/assets/file-icons/chrome.svg diff --git a/packages/app/src/assets/file-icons/circleci.svg b/packages/desktop/src/assets/file-icons/circleci.svg similarity index 100% rename from packages/app/src/assets/file-icons/circleci.svg rename to packages/desktop/src/assets/file-icons/circleci.svg diff --git a/packages/app/src/assets/file-icons/circleci_light.svg b/packages/desktop/src/assets/file-icons/circleci_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/circleci_light.svg rename to packages/desktop/src/assets/file-icons/circleci_light.svg diff --git a/packages/app/src/assets/file-icons/citation.svg b/packages/desktop/src/assets/file-icons/citation.svg similarity index 100% rename from packages/app/src/assets/file-icons/citation.svg rename to packages/desktop/src/assets/file-icons/citation.svg diff --git a/packages/app/src/assets/file-icons/clangd.svg b/packages/desktop/src/assets/file-icons/clangd.svg similarity index 100% rename from packages/app/src/assets/file-icons/clangd.svg rename to packages/desktop/src/assets/file-icons/clangd.svg diff --git a/packages/app/src/assets/file-icons/claude.svg b/packages/desktop/src/assets/file-icons/claude.svg similarity index 100% rename from packages/app/src/assets/file-icons/claude.svg rename to packages/desktop/src/assets/file-icons/claude.svg diff --git a/packages/app/src/assets/file-icons/cline.svg b/packages/desktop/src/assets/file-icons/cline.svg similarity index 100% rename from packages/app/src/assets/file-icons/cline.svg rename to packages/desktop/src/assets/file-icons/cline.svg diff --git a/packages/app/src/assets/file-icons/clojure.svg b/packages/desktop/src/assets/file-icons/clojure.svg similarity index 100% rename from packages/app/src/assets/file-icons/clojure.svg rename to packages/desktop/src/assets/file-icons/clojure.svg diff --git a/packages/app/src/assets/file-icons/cloudfoundry.svg b/packages/desktop/src/assets/file-icons/cloudfoundry.svg similarity index 100% rename from packages/app/src/assets/file-icons/cloudfoundry.svg rename to packages/desktop/src/assets/file-icons/cloudfoundry.svg diff --git a/packages/app/src/assets/file-icons/cmake.svg b/packages/desktop/src/assets/file-icons/cmake.svg similarity index 100% rename from packages/app/src/assets/file-icons/cmake.svg rename to packages/desktop/src/assets/file-icons/cmake.svg diff --git a/packages/app/src/assets/file-icons/coala.svg b/packages/desktop/src/assets/file-icons/coala.svg similarity index 100% rename from packages/app/src/assets/file-icons/coala.svg rename to packages/desktop/src/assets/file-icons/coala.svg diff --git a/packages/app/src/assets/file-icons/cobol.svg b/packages/desktop/src/assets/file-icons/cobol.svg similarity index 100% rename from packages/app/src/assets/file-icons/cobol.svg rename to packages/desktop/src/assets/file-icons/cobol.svg diff --git a/packages/app/src/assets/file-icons/coconut.svg b/packages/desktop/src/assets/file-icons/coconut.svg similarity index 100% rename from packages/app/src/assets/file-icons/coconut.svg rename to packages/desktop/src/assets/file-icons/coconut.svg diff --git a/packages/app/src/assets/file-icons/code-climate.svg b/packages/desktop/src/assets/file-icons/code-climate.svg similarity index 100% rename from packages/app/src/assets/file-icons/code-climate.svg rename to packages/desktop/src/assets/file-icons/code-climate.svg diff --git a/packages/app/src/assets/file-icons/code-climate_light.svg b/packages/desktop/src/assets/file-icons/code-climate_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/code-climate_light.svg rename to packages/desktop/src/assets/file-icons/code-climate_light.svg diff --git a/packages/app/src/assets/file-icons/codecov.svg b/packages/desktop/src/assets/file-icons/codecov.svg similarity index 100% rename from packages/app/src/assets/file-icons/codecov.svg rename to packages/desktop/src/assets/file-icons/codecov.svg diff --git a/packages/app/src/assets/file-icons/codeowners.svg b/packages/desktop/src/assets/file-icons/codeowners.svg similarity index 100% rename from packages/app/src/assets/file-icons/codeowners.svg rename to packages/desktop/src/assets/file-icons/codeowners.svg diff --git a/packages/app/src/assets/file-icons/coderabbit-ai.svg b/packages/desktop/src/assets/file-icons/coderabbit-ai.svg similarity index 100% rename from packages/app/src/assets/file-icons/coderabbit-ai.svg rename to packages/desktop/src/assets/file-icons/coderabbit-ai.svg diff --git a/packages/app/src/assets/file-icons/coffee.svg b/packages/desktop/src/assets/file-icons/coffee.svg similarity index 100% rename from packages/app/src/assets/file-icons/coffee.svg rename to packages/desktop/src/assets/file-icons/coffee.svg diff --git a/packages/app/src/assets/file-icons/coldfusion.svg b/packages/desktop/src/assets/file-icons/coldfusion.svg similarity index 100% rename from packages/app/src/assets/file-icons/coldfusion.svg rename to packages/desktop/src/assets/file-icons/coldfusion.svg diff --git a/packages/app/src/assets/file-icons/coloredpetrinets.svg b/packages/desktop/src/assets/file-icons/coloredpetrinets.svg similarity index 100% rename from packages/app/src/assets/file-icons/coloredpetrinets.svg rename to packages/desktop/src/assets/file-icons/coloredpetrinets.svg diff --git a/packages/app/src/assets/file-icons/command.svg b/packages/desktop/src/assets/file-icons/command.svg similarity index 100% rename from packages/app/src/assets/file-icons/command.svg rename to packages/desktop/src/assets/file-icons/command.svg diff --git a/packages/app/src/assets/file-icons/commitizen.svg b/packages/desktop/src/assets/file-icons/commitizen.svg similarity index 100% rename from packages/app/src/assets/file-icons/commitizen.svg rename to packages/desktop/src/assets/file-icons/commitizen.svg diff --git a/packages/app/src/assets/file-icons/commitlint.svg b/packages/desktop/src/assets/file-icons/commitlint.svg similarity index 100% rename from packages/app/src/assets/file-icons/commitlint.svg rename to packages/desktop/src/assets/file-icons/commitlint.svg diff --git a/packages/app/src/assets/file-icons/concourse.svg b/packages/desktop/src/assets/file-icons/concourse.svg similarity index 100% rename from packages/app/src/assets/file-icons/concourse.svg rename to packages/desktop/src/assets/file-icons/concourse.svg diff --git a/packages/app/src/assets/file-icons/conduct.svg b/packages/desktop/src/assets/file-icons/conduct.svg similarity index 100% rename from packages/app/src/assets/file-icons/conduct.svg rename to packages/desktop/src/assets/file-icons/conduct.svg diff --git a/packages/app/src/assets/file-icons/console.svg b/packages/desktop/src/assets/file-icons/console.svg similarity index 100% rename from packages/app/src/assets/file-icons/console.svg rename to packages/desktop/src/assets/file-icons/console.svg diff --git a/packages/app/src/assets/file-icons/contentlayer.svg b/packages/desktop/src/assets/file-icons/contentlayer.svg similarity index 100% rename from packages/app/src/assets/file-icons/contentlayer.svg rename to packages/desktop/src/assets/file-icons/contentlayer.svg diff --git a/packages/app/src/assets/file-icons/context.svg b/packages/desktop/src/assets/file-icons/context.svg similarity index 100% rename from packages/app/src/assets/file-icons/context.svg rename to packages/desktop/src/assets/file-icons/context.svg diff --git a/packages/app/src/assets/file-icons/contributing.svg b/packages/desktop/src/assets/file-icons/contributing.svg similarity index 100% rename from packages/app/src/assets/file-icons/contributing.svg rename to packages/desktop/src/assets/file-icons/contributing.svg diff --git a/packages/app/src/assets/file-icons/controller.svg b/packages/desktop/src/assets/file-icons/controller.svg similarity index 100% rename from packages/app/src/assets/file-icons/controller.svg rename to packages/desktop/src/assets/file-icons/controller.svg diff --git a/packages/app/src/assets/file-icons/copilot.svg b/packages/desktop/src/assets/file-icons/copilot.svg similarity index 100% rename from packages/app/src/assets/file-icons/copilot.svg rename to packages/desktop/src/assets/file-icons/copilot.svg diff --git a/packages/app/src/assets/file-icons/copilot_light.svg b/packages/desktop/src/assets/file-icons/copilot_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/copilot_light.svg rename to packages/desktop/src/assets/file-icons/copilot_light.svg diff --git a/packages/app/src/assets/file-icons/cpp.svg b/packages/desktop/src/assets/file-icons/cpp.svg similarity index 100% rename from packages/app/src/assets/file-icons/cpp.svg rename to packages/desktop/src/assets/file-icons/cpp.svg diff --git a/packages/app/src/assets/file-icons/craco.svg b/packages/desktop/src/assets/file-icons/craco.svg similarity index 100% rename from packages/app/src/assets/file-icons/craco.svg rename to packages/desktop/src/assets/file-icons/craco.svg diff --git a/packages/app/src/assets/file-icons/credits.svg b/packages/desktop/src/assets/file-icons/credits.svg similarity index 100% rename from packages/app/src/assets/file-icons/credits.svg rename to packages/desktop/src/assets/file-icons/credits.svg diff --git a/packages/app/src/assets/file-icons/crystal.svg b/packages/desktop/src/assets/file-icons/crystal.svg similarity index 100% rename from packages/app/src/assets/file-icons/crystal.svg rename to packages/desktop/src/assets/file-icons/crystal.svg diff --git a/packages/app/src/assets/file-icons/crystal_light.svg b/packages/desktop/src/assets/file-icons/crystal_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/crystal_light.svg rename to packages/desktop/src/assets/file-icons/crystal_light.svg diff --git a/packages/app/src/assets/file-icons/csharp.svg b/packages/desktop/src/assets/file-icons/csharp.svg similarity index 100% rename from packages/app/src/assets/file-icons/csharp.svg rename to packages/desktop/src/assets/file-icons/csharp.svg diff --git a/packages/app/src/assets/file-icons/css-map.svg b/packages/desktop/src/assets/file-icons/css-map.svg similarity index 100% rename from packages/app/src/assets/file-icons/css-map.svg rename to packages/desktop/src/assets/file-icons/css-map.svg diff --git a/packages/app/src/assets/file-icons/css.svg b/packages/desktop/src/assets/file-icons/css.svg similarity index 100% rename from packages/app/src/assets/file-icons/css.svg rename to packages/desktop/src/assets/file-icons/css.svg diff --git a/packages/app/src/assets/file-icons/cucumber.svg b/packages/desktop/src/assets/file-icons/cucumber.svg similarity index 100% rename from packages/app/src/assets/file-icons/cucumber.svg rename to packages/desktop/src/assets/file-icons/cucumber.svg diff --git a/packages/app/src/assets/file-icons/cuda.svg b/packages/desktop/src/assets/file-icons/cuda.svg similarity index 100% rename from packages/app/src/assets/file-icons/cuda.svg rename to packages/desktop/src/assets/file-icons/cuda.svg diff --git a/packages/app/src/assets/file-icons/cursor.svg b/packages/desktop/src/assets/file-icons/cursor.svg similarity index 100% rename from packages/app/src/assets/file-icons/cursor.svg rename to packages/desktop/src/assets/file-icons/cursor.svg diff --git a/packages/app/src/assets/file-icons/cursor_light.svg b/packages/desktop/src/assets/file-icons/cursor_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/cursor_light.svg rename to packages/desktop/src/assets/file-icons/cursor_light.svg diff --git a/packages/app/src/assets/file-icons/cypress.svg b/packages/desktop/src/assets/file-icons/cypress.svg similarity index 100% rename from packages/app/src/assets/file-icons/cypress.svg rename to packages/desktop/src/assets/file-icons/cypress.svg diff --git a/packages/app/src/assets/file-icons/d.svg b/packages/desktop/src/assets/file-icons/d.svg similarity index 100% rename from packages/app/src/assets/file-icons/d.svg rename to packages/desktop/src/assets/file-icons/d.svg diff --git a/packages/app/src/assets/file-icons/dart.svg b/packages/desktop/src/assets/file-icons/dart.svg similarity index 100% rename from packages/app/src/assets/file-icons/dart.svg rename to packages/desktop/src/assets/file-icons/dart.svg diff --git a/packages/app/src/assets/file-icons/dart_generated.svg b/packages/desktop/src/assets/file-icons/dart_generated.svg similarity index 100% rename from packages/app/src/assets/file-icons/dart_generated.svg rename to packages/desktop/src/assets/file-icons/dart_generated.svg diff --git a/packages/app/src/assets/file-icons/database.svg b/packages/desktop/src/assets/file-icons/database.svg similarity index 100% rename from packages/app/src/assets/file-icons/database.svg rename to packages/desktop/src/assets/file-icons/database.svg diff --git a/packages/app/src/assets/file-icons/deepsource.svg b/packages/desktop/src/assets/file-icons/deepsource.svg similarity index 100% rename from packages/app/src/assets/file-icons/deepsource.svg rename to packages/desktop/src/assets/file-icons/deepsource.svg diff --git a/packages/app/src/assets/file-icons/denizenscript.svg b/packages/desktop/src/assets/file-icons/denizenscript.svg similarity index 100% rename from packages/app/src/assets/file-icons/denizenscript.svg rename to packages/desktop/src/assets/file-icons/denizenscript.svg diff --git a/packages/app/src/assets/file-icons/deno.svg b/packages/desktop/src/assets/file-icons/deno.svg similarity index 100% rename from packages/app/src/assets/file-icons/deno.svg rename to packages/desktop/src/assets/file-icons/deno.svg diff --git a/packages/app/src/assets/file-icons/deno_light.svg b/packages/desktop/src/assets/file-icons/deno_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/deno_light.svg rename to packages/desktop/src/assets/file-icons/deno_light.svg diff --git a/packages/app/src/assets/file-icons/dependabot.svg b/packages/desktop/src/assets/file-icons/dependabot.svg similarity index 100% rename from packages/app/src/assets/file-icons/dependabot.svg rename to packages/desktop/src/assets/file-icons/dependabot.svg diff --git a/packages/app/src/assets/file-icons/dependencies-update.svg b/packages/desktop/src/assets/file-icons/dependencies-update.svg similarity index 100% rename from packages/app/src/assets/file-icons/dependencies-update.svg rename to packages/desktop/src/assets/file-icons/dependencies-update.svg diff --git a/packages/app/src/assets/file-icons/dhall.svg b/packages/desktop/src/assets/file-icons/dhall.svg similarity index 100% rename from packages/app/src/assets/file-icons/dhall.svg rename to packages/desktop/src/assets/file-icons/dhall.svg diff --git a/packages/app/src/assets/file-icons/diff.svg b/packages/desktop/src/assets/file-icons/diff.svg similarity index 100% rename from packages/app/src/assets/file-icons/diff.svg rename to packages/desktop/src/assets/file-icons/diff.svg diff --git a/packages/app/src/assets/file-icons/dinophp.svg b/packages/desktop/src/assets/file-icons/dinophp.svg similarity index 100% rename from packages/app/src/assets/file-icons/dinophp.svg rename to packages/desktop/src/assets/file-icons/dinophp.svg diff --git a/packages/app/src/assets/file-icons/disc.svg b/packages/desktop/src/assets/file-icons/disc.svg similarity index 100% rename from packages/app/src/assets/file-icons/disc.svg rename to packages/desktop/src/assets/file-icons/disc.svg diff --git a/packages/app/src/assets/file-icons/django.svg b/packages/desktop/src/assets/file-icons/django.svg similarity index 100% rename from packages/app/src/assets/file-icons/django.svg rename to packages/desktop/src/assets/file-icons/django.svg diff --git a/packages/app/src/assets/file-icons/dll.svg b/packages/desktop/src/assets/file-icons/dll.svg similarity index 100% rename from packages/app/src/assets/file-icons/dll.svg rename to packages/desktop/src/assets/file-icons/dll.svg diff --git a/packages/app/src/assets/file-icons/docker.svg b/packages/desktop/src/assets/file-icons/docker.svg similarity index 100% rename from packages/app/src/assets/file-icons/docker.svg rename to packages/desktop/src/assets/file-icons/docker.svg diff --git a/packages/app/src/assets/file-icons/doctex-installer.svg b/packages/desktop/src/assets/file-icons/doctex-installer.svg similarity index 100% rename from packages/app/src/assets/file-icons/doctex-installer.svg rename to packages/desktop/src/assets/file-icons/doctex-installer.svg diff --git a/packages/app/src/assets/file-icons/document.svg b/packages/desktop/src/assets/file-icons/document.svg similarity index 100% rename from packages/app/src/assets/file-icons/document.svg rename to packages/desktop/src/assets/file-icons/document.svg diff --git a/packages/app/src/assets/file-icons/dotjs.svg b/packages/desktop/src/assets/file-icons/dotjs.svg similarity index 100% rename from packages/app/src/assets/file-icons/dotjs.svg rename to packages/desktop/src/assets/file-icons/dotjs.svg diff --git a/packages/app/src/assets/file-icons/drawio.svg b/packages/desktop/src/assets/file-icons/drawio.svg similarity index 100% rename from packages/app/src/assets/file-icons/drawio.svg rename to packages/desktop/src/assets/file-icons/drawio.svg diff --git a/packages/app/src/assets/file-icons/drizzle.svg b/packages/desktop/src/assets/file-icons/drizzle.svg similarity index 100% rename from packages/app/src/assets/file-icons/drizzle.svg rename to packages/desktop/src/assets/file-icons/drizzle.svg diff --git a/packages/app/src/assets/file-icons/drone.svg b/packages/desktop/src/assets/file-icons/drone.svg similarity index 100% rename from packages/app/src/assets/file-icons/drone.svg rename to packages/desktop/src/assets/file-icons/drone.svg diff --git a/packages/app/src/assets/file-icons/drone_light.svg b/packages/desktop/src/assets/file-icons/drone_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/drone_light.svg rename to packages/desktop/src/assets/file-icons/drone_light.svg diff --git a/packages/app/src/assets/file-icons/duc.svg b/packages/desktop/src/assets/file-icons/duc.svg similarity index 100% rename from packages/app/src/assets/file-icons/duc.svg rename to packages/desktop/src/assets/file-icons/duc.svg diff --git a/packages/app/src/assets/file-icons/dune.svg b/packages/desktop/src/assets/file-icons/dune.svg similarity index 100% rename from packages/app/src/assets/file-icons/dune.svg rename to packages/desktop/src/assets/file-icons/dune.svg diff --git a/packages/app/src/assets/file-icons/edge.svg b/packages/desktop/src/assets/file-icons/edge.svg similarity index 100% rename from packages/app/src/assets/file-icons/edge.svg rename to packages/desktop/src/assets/file-icons/edge.svg diff --git a/packages/app/src/assets/file-icons/editorconfig.svg b/packages/desktop/src/assets/file-icons/editorconfig.svg similarity index 100% rename from packages/app/src/assets/file-icons/editorconfig.svg rename to packages/desktop/src/assets/file-icons/editorconfig.svg diff --git a/packages/app/src/assets/file-icons/ejs.svg b/packages/desktop/src/assets/file-icons/ejs.svg similarity index 100% rename from packages/app/src/assets/file-icons/ejs.svg rename to packages/desktop/src/assets/file-icons/ejs.svg diff --git a/packages/app/src/assets/file-icons/elixir.svg b/packages/desktop/src/assets/file-icons/elixir.svg similarity index 100% rename from packages/app/src/assets/file-icons/elixir.svg rename to packages/desktop/src/assets/file-icons/elixir.svg diff --git a/packages/app/src/assets/file-icons/elm.svg b/packages/desktop/src/assets/file-icons/elm.svg similarity index 100% rename from packages/app/src/assets/file-icons/elm.svg rename to packages/desktop/src/assets/file-icons/elm.svg diff --git a/packages/app/src/assets/file-icons/email.svg b/packages/desktop/src/assets/file-icons/email.svg similarity index 100% rename from packages/app/src/assets/file-icons/email.svg rename to packages/desktop/src/assets/file-icons/email.svg diff --git a/packages/app/src/assets/file-icons/ember.svg b/packages/desktop/src/assets/file-icons/ember.svg similarity index 100% rename from packages/app/src/assets/file-icons/ember.svg rename to packages/desktop/src/assets/file-icons/ember.svg diff --git a/packages/app/src/assets/file-icons/epub.svg b/packages/desktop/src/assets/file-icons/epub.svg similarity index 100% rename from packages/app/src/assets/file-icons/epub.svg rename to packages/desktop/src/assets/file-icons/epub.svg diff --git a/packages/app/src/assets/file-icons/erlang.svg b/packages/desktop/src/assets/file-icons/erlang.svg similarity index 100% rename from packages/app/src/assets/file-icons/erlang.svg rename to packages/desktop/src/assets/file-icons/erlang.svg diff --git a/packages/app/src/assets/file-icons/esbuild.svg b/packages/desktop/src/assets/file-icons/esbuild.svg similarity index 100% rename from packages/app/src/assets/file-icons/esbuild.svg rename to packages/desktop/src/assets/file-icons/esbuild.svg diff --git a/packages/app/src/assets/file-icons/eslint.svg b/packages/desktop/src/assets/file-icons/eslint.svg similarity index 100% rename from packages/app/src/assets/file-icons/eslint.svg rename to packages/desktop/src/assets/file-icons/eslint.svg diff --git a/packages/app/src/assets/file-icons/excalidraw.svg b/packages/desktop/src/assets/file-icons/excalidraw.svg similarity index 100% rename from packages/app/src/assets/file-icons/excalidraw.svg rename to packages/desktop/src/assets/file-icons/excalidraw.svg diff --git a/packages/app/src/assets/file-icons/exe.svg b/packages/desktop/src/assets/file-icons/exe.svg similarity index 100% rename from packages/app/src/assets/file-icons/exe.svg rename to packages/desktop/src/assets/file-icons/exe.svg diff --git a/packages/app/src/assets/file-icons/fastlane.svg b/packages/desktop/src/assets/file-icons/fastlane.svg similarity index 100% rename from packages/app/src/assets/file-icons/fastlane.svg rename to packages/desktop/src/assets/file-icons/fastlane.svg diff --git a/packages/app/src/assets/file-icons/favicon.svg b/packages/desktop/src/assets/file-icons/favicon.svg similarity index 100% rename from packages/app/src/assets/file-icons/favicon.svg rename to packages/desktop/src/assets/file-icons/favicon.svg diff --git a/packages/app/src/assets/file-icons/figma.svg b/packages/desktop/src/assets/file-icons/figma.svg similarity index 100% rename from packages/app/src/assets/file-icons/figma.svg rename to packages/desktop/src/assets/file-icons/figma.svg diff --git a/packages/app/src/assets/file-icons/firebase.svg b/packages/desktop/src/assets/file-icons/firebase.svg similarity index 100% rename from packages/app/src/assets/file-icons/firebase.svg rename to packages/desktop/src/assets/file-icons/firebase.svg diff --git a/packages/app/src/assets/file-icons/flash.svg b/packages/desktop/src/assets/file-icons/flash.svg similarity index 100% rename from packages/app/src/assets/file-icons/flash.svg rename to packages/desktop/src/assets/file-icons/flash.svg diff --git a/packages/app/src/assets/file-icons/flow.svg b/packages/desktop/src/assets/file-icons/flow.svg similarity index 100% rename from packages/app/src/assets/file-icons/flow.svg rename to packages/desktop/src/assets/file-icons/flow.svg diff --git a/packages/app/src/assets/file-icons/folder-admin-open.svg b/packages/desktop/src/assets/file-icons/folder-admin-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-admin-open.svg rename to packages/desktop/src/assets/file-icons/folder-admin-open.svg diff --git a/packages/app/src/assets/file-icons/folder-admin.svg b/packages/desktop/src/assets/file-icons/folder-admin.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-admin.svg rename to packages/desktop/src/assets/file-icons/folder-admin.svg diff --git a/packages/app/src/assets/file-icons/folder-android-open.svg b/packages/desktop/src/assets/file-icons/folder-android-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-android-open.svg rename to packages/desktop/src/assets/file-icons/folder-android-open.svg diff --git a/packages/app/src/assets/file-icons/folder-android.svg b/packages/desktop/src/assets/file-icons/folder-android.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-android.svg rename to packages/desktop/src/assets/file-icons/folder-android.svg diff --git a/packages/app/src/assets/file-icons/folder-angular-open.svg b/packages/desktop/src/assets/file-icons/folder-angular-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-angular-open.svg rename to packages/desktop/src/assets/file-icons/folder-angular-open.svg diff --git a/packages/app/src/assets/file-icons/folder-angular.svg b/packages/desktop/src/assets/file-icons/folder-angular.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-angular.svg rename to packages/desktop/src/assets/file-icons/folder-angular.svg diff --git a/packages/app/src/assets/file-icons/folder-animation-open.svg b/packages/desktop/src/assets/file-icons/folder-animation-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-animation-open.svg rename to packages/desktop/src/assets/file-icons/folder-animation-open.svg diff --git a/packages/app/src/assets/file-icons/folder-animation.svg b/packages/desktop/src/assets/file-icons/folder-animation.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-animation.svg rename to packages/desktop/src/assets/file-icons/folder-animation.svg diff --git a/packages/app/src/assets/file-icons/folder-ansible-open.svg b/packages/desktop/src/assets/file-icons/folder-ansible-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-ansible-open.svg rename to packages/desktop/src/assets/file-icons/folder-ansible-open.svg diff --git a/packages/app/src/assets/file-icons/folder-ansible.svg b/packages/desktop/src/assets/file-icons/folder-ansible.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-ansible.svg rename to packages/desktop/src/assets/file-icons/folder-ansible.svg diff --git a/packages/app/src/assets/file-icons/folder-api-open.svg b/packages/desktop/src/assets/file-icons/folder-api-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-api-open.svg rename to packages/desktop/src/assets/file-icons/folder-api-open.svg diff --git a/packages/app/src/assets/file-icons/folder-api.svg b/packages/desktop/src/assets/file-icons/folder-api.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-api.svg rename to packages/desktop/src/assets/file-icons/folder-api.svg diff --git a/packages/app/src/assets/file-icons/folder-apollo-open.svg b/packages/desktop/src/assets/file-icons/folder-apollo-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-apollo-open.svg rename to packages/desktop/src/assets/file-icons/folder-apollo-open.svg diff --git a/packages/app/src/assets/file-icons/folder-apollo.svg b/packages/desktop/src/assets/file-icons/folder-apollo.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-apollo.svg rename to packages/desktop/src/assets/file-icons/folder-apollo.svg diff --git a/packages/app/src/assets/file-icons/folder-app-open.svg b/packages/desktop/src/assets/file-icons/folder-app-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-app-open.svg rename to packages/desktop/src/assets/file-icons/folder-app-open.svg diff --git a/packages/app/src/assets/file-icons/folder-app.svg b/packages/desktop/src/assets/file-icons/folder-app.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-app.svg rename to packages/desktop/src/assets/file-icons/folder-app.svg diff --git a/packages/app/src/assets/file-icons/folder-archive-open.svg b/packages/desktop/src/assets/file-icons/folder-archive-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-archive-open.svg rename to packages/desktop/src/assets/file-icons/folder-archive-open.svg diff --git a/packages/app/src/assets/file-icons/folder-archive.svg b/packages/desktop/src/assets/file-icons/folder-archive.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-archive.svg rename to packages/desktop/src/assets/file-icons/folder-archive.svg diff --git a/packages/app/src/assets/file-icons/folder-astro-open.svg b/packages/desktop/src/assets/file-icons/folder-astro-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-astro-open.svg rename to packages/desktop/src/assets/file-icons/folder-astro-open.svg diff --git a/packages/app/src/assets/file-icons/folder-astro.svg b/packages/desktop/src/assets/file-icons/folder-astro.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-astro.svg rename to packages/desktop/src/assets/file-icons/folder-astro.svg diff --git a/packages/app/src/assets/file-icons/folder-atom-open.svg b/packages/desktop/src/assets/file-icons/folder-atom-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-atom-open.svg rename to packages/desktop/src/assets/file-icons/folder-atom-open.svg diff --git a/packages/app/src/assets/file-icons/folder-atom.svg b/packages/desktop/src/assets/file-icons/folder-atom.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-atom.svg rename to packages/desktop/src/assets/file-icons/folder-atom.svg diff --git a/packages/app/src/assets/file-icons/folder-attachment-open.svg b/packages/desktop/src/assets/file-icons/folder-attachment-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-attachment-open.svg rename to packages/desktop/src/assets/file-icons/folder-attachment-open.svg diff --git a/packages/app/src/assets/file-icons/folder-attachment.svg b/packages/desktop/src/assets/file-icons/folder-attachment.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-attachment.svg rename to packages/desktop/src/assets/file-icons/folder-attachment.svg diff --git a/packages/app/src/assets/file-icons/folder-audio-open.svg b/packages/desktop/src/assets/file-icons/folder-audio-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-audio-open.svg rename to packages/desktop/src/assets/file-icons/folder-audio-open.svg diff --git a/packages/app/src/assets/file-icons/folder-audio.svg b/packages/desktop/src/assets/file-icons/folder-audio.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-audio.svg rename to packages/desktop/src/assets/file-icons/folder-audio.svg diff --git a/packages/app/src/assets/file-icons/folder-aurelia-open.svg b/packages/desktop/src/assets/file-icons/folder-aurelia-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-aurelia-open.svg rename to packages/desktop/src/assets/file-icons/folder-aurelia-open.svg diff --git a/packages/app/src/assets/file-icons/folder-aurelia.svg b/packages/desktop/src/assets/file-icons/folder-aurelia.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-aurelia.svg rename to packages/desktop/src/assets/file-icons/folder-aurelia.svg diff --git a/packages/app/src/assets/file-icons/folder-aws-open.svg b/packages/desktop/src/assets/file-icons/folder-aws-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-aws-open.svg rename to packages/desktop/src/assets/file-icons/folder-aws-open.svg diff --git a/packages/app/src/assets/file-icons/folder-aws.svg b/packages/desktop/src/assets/file-icons/folder-aws.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-aws.svg rename to packages/desktop/src/assets/file-icons/folder-aws.svg diff --git a/packages/app/src/assets/file-icons/folder-azure-pipelines-open.svg b/packages/desktop/src/assets/file-icons/folder-azure-pipelines-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-azure-pipelines-open.svg rename to packages/desktop/src/assets/file-icons/folder-azure-pipelines-open.svg diff --git a/packages/app/src/assets/file-icons/folder-azure-pipelines.svg b/packages/desktop/src/assets/file-icons/folder-azure-pipelines.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-azure-pipelines.svg rename to packages/desktop/src/assets/file-icons/folder-azure-pipelines.svg diff --git a/packages/app/src/assets/file-icons/folder-backup-open.svg b/packages/desktop/src/assets/file-icons/folder-backup-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-backup-open.svg rename to packages/desktop/src/assets/file-icons/folder-backup-open.svg diff --git a/packages/app/src/assets/file-icons/folder-backup.svg b/packages/desktop/src/assets/file-icons/folder-backup.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-backup.svg rename to packages/desktop/src/assets/file-icons/folder-backup.svg diff --git a/packages/app/src/assets/file-icons/folder-base-open.svg b/packages/desktop/src/assets/file-icons/folder-base-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-base-open.svg rename to packages/desktop/src/assets/file-icons/folder-base-open.svg diff --git a/packages/app/src/assets/file-icons/folder-base.svg b/packages/desktop/src/assets/file-icons/folder-base.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-base.svg rename to packages/desktop/src/assets/file-icons/folder-base.svg diff --git a/packages/app/src/assets/file-icons/folder-batch-open.svg b/packages/desktop/src/assets/file-icons/folder-batch-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-batch-open.svg rename to packages/desktop/src/assets/file-icons/folder-batch-open.svg diff --git a/packages/app/src/assets/file-icons/folder-batch.svg b/packages/desktop/src/assets/file-icons/folder-batch.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-batch.svg rename to packages/desktop/src/assets/file-icons/folder-batch.svg diff --git a/packages/app/src/assets/file-icons/folder-benchmark-open.svg b/packages/desktop/src/assets/file-icons/folder-benchmark-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-benchmark-open.svg rename to packages/desktop/src/assets/file-icons/folder-benchmark-open.svg diff --git a/packages/app/src/assets/file-icons/folder-benchmark.svg b/packages/desktop/src/assets/file-icons/folder-benchmark.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-benchmark.svg rename to packages/desktop/src/assets/file-icons/folder-benchmark.svg diff --git a/packages/app/src/assets/file-icons/folder-bibliography-open.svg b/packages/desktop/src/assets/file-icons/folder-bibliography-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-bibliography-open.svg rename to packages/desktop/src/assets/file-icons/folder-bibliography-open.svg diff --git a/packages/app/src/assets/file-icons/folder-bibliography.svg b/packages/desktop/src/assets/file-icons/folder-bibliography.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-bibliography.svg rename to packages/desktop/src/assets/file-icons/folder-bibliography.svg diff --git a/packages/app/src/assets/file-icons/folder-bicep-open.svg b/packages/desktop/src/assets/file-icons/folder-bicep-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-bicep-open.svg rename to packages/desktop/src/assets/file-icons/folder-bicep-open.svg diff --git a/packages/app/src/assets/file-icons/folder-bicep.svg b/packages/desktop/src/assets/file-icons/folder-bicep.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-bicep.svg rename to packages/desktop/src/assets/file-icons/folder-bicep.svg diff --git a/packages/app/src/assets/file-icons/folder-blender-open.svg b/packages/desktop/src/assets/file-icons/folder-blender-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-blender-open.svg rename to packages/desktop/src/assets/file-icons/folder-blender-open.svg diff --git a/packages/app/src/assets/file-icons/folder-blender.svg b/packages/desktop/src/assets/file-icons/folder-blender.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-blender.svg rename to packages/desktop/src/assets/file-icons/folder-blender.svg diff --git a/packages/app/src/assets/file-icons/folder-bloc-open.svg b/packages/desktop/src/assets/file-icons/folder-bloc-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-bloc-open.svg rename to packages/desktop/src/assets/file-icons/folder-bloc-open.svg diff --git a/packages/app/src/assets/file-icons/folder-bloc.svg b/packages/desktop/src/assets/file-icons/folder-bloc.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-bloc.svg rename to packages/desktop/src/assets/file-icons/folder-bloc.svg diff --git a/packages/app/src/assets/file-icons/folder-bower-open.svg b/packages/desktop/src/assets/file-icons/folder-bower-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-bower-open.svg rename to packages/desktop/src/assets/file-icons/folder-bower-open.svg diff --git a/packages/app/src/assets/file-icons/folder-bower.svg b/packages/desktop/src/assets/file-icons/folder-bower.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-bower.svg rename to packages/desktop/src/assets/file-icons/folder-bower.svg diff --git a/packages/app/src/assets/file-icons/folder-buildkite-open.svg b/packages/desktop/src/assets/file-icons/folder-buildkite-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-buildkite-open.svg rename to packages/desktop/src/assets/file-icons/folder-buildkite-open.svg diff --git a/packages/app/src/assets/file-icons/folder-buildkite.svg b/packages/desktop/src/assets/file-icons/folder-buildkite.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-buildkite.svg rename to packages/desktop/src/assets/file-icons/folder-buildkite.svg diff --git a/packages/app/src/assets/file-icons/folder-cart-open.svg b/packages/desktop/src/assets/file-icons/folder-cart-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-cart-open.svg rename to packages/desktop/src/assets/file-icons/folder-cart-open.svg diff --git a/packages/app/src/assets/file-icons/folder-cart.svg b/packages/desktop/src/assets/file-icons/folder-cart.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-cart.svg rename to packages/desktop/src/assets/file-icons/folder-cart.svg diff --git a/packages/app/src/assets/file-icons/folder-changesets-open.svg b/packages/desktop/src/assets/file-icons/folder-changesets-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-changesets-open.svg rename to packages/desktop/src/assets/file-icons/folder-changesets-open.svg diff --git a/packages/app/src/assets/file-icons/folder-changesets.svg b/packages/desktop/src/assets/file-icons/folder-changesets.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-changesets.svg rename to packages/desktop/src/assets/file-icons/folder-changesets.svg diff --git a/packages/app/src/assets/file-icons/folder-ci-open.svg b/packages/desktop/src/assets/file-icons/folder-ci-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-ci-open.svg rename to packages/desktop/src/assets/file-icons/folder-ci-open.svg diff --git a/packages/app/src/assets/file-icons/folder-ci.svg b/packages/desktop/src/assets/file-icons/folder-ci.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-ci.svg rename to packages/desktop/src/assets/file-icons/folder-ci.svg diff --git a/packages/app/src/assets/file-icons/folder-circleci-open.svg b/packages/desktop/src/assets/file-icons/folder-circleci-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-circleci-open.svg rename to packages/desktop/src/assets/file-icons/folder-circleci-open.svg diff --git a/packages/app/src/assets/file-icons/folder-circleci.svg b/packages/desktop/src/assets/file-icons/folder-circleci.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-circleci.svg rename to packages/desktop/src/assets/file-icons/folder-circleci.svg diff --git a/packages/app/src/assets/file-icons/folder-class-open.svg b/packages/desktop/src/assets/file-icons/folder-class-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-class-open.svg rename to packages/desktop/src/assets/file-icons/folder-class-open.svg diff --git a/packages/app/src/assets/file-icons/folder-class.svg b/packages/desktop/src/assets/file-icons/folder-class.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-class.svg rename to packages/desktop/src/assets/file-icons/folder-class.svg diff --git a/packages/app/src/assets/file-icons/folder-claude-open.svg b/packages/desktop/src/assets/file-icons/folder-claude-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-claude-open.svg rename to packages/desktop/src/assets/file-icons/folder-claude-open.svg diff --git a/packages/app/src/assets/file-icons/folder-claude.svg b/packages/desktop/src/assets/file-icons/folder-claude.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-claude.svg rename to packages/desktop/src/assets/file-icons/folder-claude.svg diff --git a/packages/app/src/assets/file-icons/folder-client-open.svg b/packages/desktop/src/assets/file-icons/folder-client-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-client-open.svg rename to packages/desktop/src/assets/file-icons/folder-client-open.svg diff --git a/packages/app/src/assets/file-icons/folder-client.svg b/packages/desktop/src/assets/file-icons/folder-client.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-client.svg rename to packages/desktop/src/assets/file-icons/folder-client.svg diff --git a/packages/app/src/assets/file-icons/folder-cline-open.svg b/packages/desktop/src/assets/file-icons/folder-cline-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-cline-open.svg rename to packages/desktop/src/assets/file-icons/folder-cline-open.svg diff --git a/packages/app/src/assets/file-icons/folder-cline.svg b/packages/desktop/src/assets/file-icons/folder-cline.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-cline.svg rename to packages/desktop/src/assets/file-icons/folder-cline.svg diff --git a/packages/app/src/assets/file-icons/folder-cloud-functions-open.svg b/packages/desktop/src/assets/file-icons/folder-cloud-functions-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-cloud-functions-open.svg rename to packages/desktop/src/assets/file-icons/folder-cloud-functions-open.svg diff --git a/packages/app/src/assets/file-icons/folder-cloud-functions.svg b/packages/desktop/src/assets/file-icons/folder-cloud-functions.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-cloud-functions.svg rename to packages/desktop/src/assets/file-icons/folder-cloud-functions.svg diff --git a/packages/app/src/assets/file-icons/folder-cloudflare-open.svg b/packages/desktop/src/assets/file-icons/folder-cloudflare-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-cloudflare-open.svg rename to packages/desktop/src/assets/file-icons/folder-cloudflare-open.svg diff --git a/packages/app/src/assets/file-icons/folder-cloudflare.svg b/packages/desktop/src/assets/file-icons/folder-cloudflare.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-cloudflare.svg rename to packages/desktop/src/assets/file-icons/folder-cloudflare.svg diff --git a/packages/app/src/assets/file-icons/folder-cluster-open.svg b/packages/desktop/src/assets/file-icons/folder-cluster-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-cluster-open.svg rename to packages/desktop/src/assets/file-icons/folder-cluster-open.svg diff --git a/packages/app/src/assets/file-icons/folder-cluster.svg b/packages/desktop/src/assets/file-icons/folder-cluster.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-cluster.svg rename to packages/desktop/src/assets/file-icons/folder-cluster.svg diff --git a/packages/app/src/assets/file-icons/folder-cobol-open.svg b/packages/desktop/src/assets/file-icons/folder-cobol-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-cobol-open.svg rename to packages/desktop/src/assets/file-icons/folder-cobol-open.svg diff --git a/packages/app/src/assets/file-icons/folder-cobol.svg b/packages/desktop/src/assets/file-icons/folder-cobol.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-cobol.svg rename to packages/desktop/src/assets/file-icons/folder-cobol.svg diff --git a/packages/app/src/assets/file-icons/folder-command-open.svg b/packages/desktop/src/assets/file-icons/folder-command-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-command-open.svg rename to packages/desktop/src/assets/file-icons/folder-command-open.svg diff --git a/packages/app/src/assets/file-icons/folder-command.svg b/packages/desktop/src/assets/file-icons/folder-command.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-command.svg rename to packages/desktop/src/assets/file-icons/folder-command.svg diff --git a/packages/app/src/assets/file-icons/folder-components-open.svg b/packages/desktop/src/assets/file-icons/folder-components-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-components-open.svg rename to packages/desktop/src/assets/file-icons/folder-components-open.svg diff --git a/packages/app/src/assets/file-icons/folder-components.svg b/packages/desktop/src/assets/file-icons/folder-components.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-components.svg rename to packages/desktop/src/assets/file-icons/folder-components.svg diff --git a/packages/app/src/assets/file-icons/folder-config-open.svg b/packages/desktop/src/assets/file-icons/folder-config-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-config-open.svg rename to packages/desktop/src/assets/file-icons/folder-config-open.svg diff --git a/packages/app/src/assets/file-icons/folder-config.svg b/packages/desktop/src/assets/file-icons/folder-config.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-config.svg rename to packages/desktop/src/assets/file-icons/folder-config.svg diff --git a/packages/app/src/assets/file-icons/folder-connection-open.svg b/packages/desktop/src/assets/file-icons/folder-connection-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-connection-open.svg rename to packages/desktop/src/assets/file-icons/folder-connection-open.svg diff --git a/packages/app/src/assets/file-icons/folder-connection.svg b/packages/desktop/src/assets/file-icons/folder-connection.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-connection.svg rename to packages/desktop/src/assets/file-icons/folder-connection.svg diff --git a/packages/app/src/assets/file-icons/folder-console-open.svg b/packages/desktop/src/assets/file-icons/folder-console-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-console-open.svg rename to packages/desktop/src/assets/file-icons/folder-console-open.svg diff --git a/packages/app/src/assets/file-icons/folder-console.svg b/packages/desktop/src/assets/file-icons/folder-console.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-console.svg rename to packages/desktop/src/assets/file-icons/folder-console.svg diff --git a/packages/app/src/assets/file-icons/folder-constant-open.svg b/packages/desktop/src/assets/file-icons/folder-constant-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-constant-open.svg rename to packages/desktop/src/assets/file-icons/folder-constant-open.svg diff --git a/packages/app/src/assets/file-icons/folder-constant.svg b/packages/desktop/src/assets/file-icons/folder-constant.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-constant.svg rename to packages/desktop/src/assets/file-icons/folder-constant.svg diff --git a/packages/app/src/assets/file-icons/folder-container-open.svg b/packages/desktop/src/assets/file-icons/folder-container-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-container-open.svg rename to packages/desktop/src/assets/file-icons/folder-container-open.svg diff --git a/packages/app/src/assets/file-icons/folder-container.svg b/packages/desktop/src/assets/file-icons/folder-container.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-container.svg rename to packages/desktop/src/assets/file-icons/folder-container.svg diff --git a/packages/app/src/assets/file-icons/folder-content-open.svg b/packages/desktop/src/assets/file-icons/folder-content-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-content-open.svg rename to packages/desktop/src/assets/file-icons/folder-content-open.svg diff --git a/packages/app/src/assets/file-icons/folder-content.svg b/packages/desktop/src/assets/file-icons/folder-content.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-content.svg rename to packages/desktop/src/assets/file-icons/folder-content.svg diff --git a/packages/app/src/assets/file-icons/folder-context-open.svg b/packages/desktop/src/assets/file-icons/folder-context-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-context-open.svg rename to packages/desktop/src/assets/file-icons/folder-context-open.svg diff --git a/packages/app/src/assets/file-icons/folder-context.svg b/packages/desktop/src/assets/file-icons/folder-context.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-context.svg rename to packages/desktop/src/assets/file-icons/folder-context.svg diff --git a/packages/app/src/assets/file-icons/folder-contract-open.svg b/packages/desktop/src/assets/file-icons/folder-contract-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-contract-open.svg rename to packages/desktop/src/assets/file-icons/folder-contract-open.svg diff --git a/packages/app/src/assets/file-icons/folder-contract.svg b/packages/desktop/src/assets/file-icons/folder-contract.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-contract.svg rename to packages/desktop/src/assets/file-icons/folder-contract.svg diff --git a/packages/app/src/assets/file-icons/folder-controller-open.svg b/packages/desktop/src/assets/file-icons/folder-controller-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-controller-open.svg rename to packages/desktop/src/assets/file-icons/folder-controller-open.svg diff --git a/packages/app/src/assets/file-icons/folder-controller.svg b/packages/desktop/src/assets/file-icons/folder-controller.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-controller.svg rename to packages/desktop/src/assets/file-icons/folder-controller.svg diff --git a/packages/app/src/assets/file-icons/folder-core-open.svg b/packages/desktop/src/assets/file-icons/folder-core-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-core-open.svg rename to packages/desktop/src/assets/file-icons/folder-core-open.svg diff --git a/packages/app/src/assets/file-icons/folder-core.svg b/packages/desktop/src/assets/file-icons/folder-core.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-core.svg rename to packages/desktop/src/assets/file-icons/folder-core.svg diff --git a/packages/app/src/assets/file-icons/folder-coverage-open.svg b/packages/desktop/src/assets/file-icons/folder-coverage-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-coverage-open.svg rename to packages/desktop/src/assets/file-icons/folder-coverage-open.svg diff --git a/packages/app/src/assets/file-icons/folder-coverage.svg b/packages/desktop/src/assets/file-icons/folder-coverage.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-coverage.svg rename to packages/desktop/src/assets/file-icons/folder-coverage.svg diff --git a/packages/app/src/assets/file-icons/folder-css-open.svg b/packages/desktop/src/assets/file-icons/folder-css-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-css-open.svg rename to packages/desktop/src/assets/file-icons/folder-css-open.svg diff --git a/packages/app/src/assets/file-icons/folder-css.svg b/packages/desktop/src/assets/file-icons/folder-css.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-css.svg rename to packages/desktop/src/assets/file-icons/folder-css.svg diff --git a/packages/app/src/assets/file-icons/folder-cursor-open.svg b/packages/desktop/src/assets/file-icons/folder-cursor-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-cursor-open.svg rename to packages/desktop/src/assets/file-icons/folder-cursor-open.svg diff --git a/packages/app/src/assets/file-icons/folder-cursor-open_light.svg b/packages/desktop/src/assets/file-icons/folder-cursor-open_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-cursor-open_light.svg rename to packages/desktop/src/assets/file-icons/folder-cursor-open_light.svg diff --git a/packages/app/src/assets/file-icons/folder-cursor.svg b/packages/desktop/src/assets/file-icons/folder-cursor.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-cursor.svg rename to packages/desktop/src/assets/file-icons/folder-cursor.svg diff --git a/packages/app/src/assets/file-icons/folder-cursor_light.svg b/packages/desktop/src/assets/file-icons/folder-cursor_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-cursor_light.svg rename to packages/desktop/src/assets/file-icons/folder-cursor_light.svg diff --git a/packages/app/src/assets/file-icons/folder-custom-open.svg b/packages/desktop/src/assets/file-icons/folder-custom-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-custom-open.svg rename to packages/desktop/src/assets/file-icons/folder-custom-open.svg diff --git a/packages/app/src/assets/file-icons/folder-custom.svg b/packages/desktop/src/assets/file-icons/folder-custom.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-custom.svg rename to packages/desktop/src/assets/file-icons/folder-custom.svg diff --git a/packages/app/src/assets/file-icons/folder-cypress-open.svg b/packages/desktop/src/assets/file-icons/folder-cypress-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-cypress-open.svg rename to packages/desktop/src/assets/file-icons/folder-cypress-open.svg diff --git a/packages/app/src/assets/file-icons/folder-cypress.svg b/packages/desktop/src/assets/file-icons/folder-cypress.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-cypress.svg rename to packages/desktop/src/assets/file-icons/folder-cypress.svg diff --git a/packages/app/src/assets/file-icons/folder-dart-open.svg b/packages/desktop/src/assets/file-icons/folder-dart-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-dart-open.svg rename to packages/desktop/src/assets/file-icons/folder-dart-open.svg diff --git a/packages/app/src/assets/file-icons/folder-dart.svg b/packages/desktop/src/assets/file-icons/folder-dart.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-dart.svg rename to packages/desktop/src/assets/file-icons/folder-dart.svg diff --git a/packages/app/src/assets/file-icons/folder-database-open.svg b/packages/desktop/src/assets/file-icons/folder-database-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-database-open.svg rename to packages/desktop/src/assets/file-icons/folder-database-open.svg diff --git a/packages/app/src/assets/file-icons/folder-database.svg b/packages/desktop/src/assets/file-icons/folder-database.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-database.svg rename to packages/desktop/src/assets/file-icons/folder-database.svg diff --git a/packages/app/src/assets/file-icons/folder-debug-open.svg b/packages/desktop/src/assets/file-icons/folder-debug-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-debug-open.svg rename to packages/desktop/src/assets/file-icons/folder-debug-open.svg diff --git a/packages/app/src/assets/file-icons/folder-debug.svg b/packages/desktop/src/assets/file-icons/folder-debug.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-debug.svg rename to packages/desktop/src/assets/file-icons/folder-debug.svg diff --git a/packages/app/src/assets/file-icons/folder-decorators-open.svg b/packages/desktop/src/assets/file-icons/folder-decorators-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-decorators-open.svg rename to packages/desktop/src/assets/file-icons/folder-decorators-open.svg diff --git a/packages/app/src/assets/file-icons/folder-decorators.svg b/packages/desktop/src/assets/file-icons/folder-decorators.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-decorators.svg rename to packages/desktop/src/assets/file-icons/folder-decorators.svg diff --git a/packages/app/src/assets/file-icons/folder-delta-open.svg b/packages/desktop/src/assets/file-icons/folder-delta-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-delta-open.svg rename to packages/desktop/src/assets/file-icons/folder-delta-open.svg diff --git a/packages/app/src/assets/file-icons/folder-delta.svg b/packages/desktop/src/assets/file-icons/folder-delta.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-delta.svg rename to packages/desktop/src/assets/file-icons/folder-delta.svg diff --git a/packages/app/src/assets/file-icons/folder-desktop-open.svg b/packages/desktop/src/assets/file-icons/folder-desktop-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-desktop-open.svg rename to packages/desktop/src/assets/file-icons/folder-desktop-open.svg diff --git a/packages/app/src/assets/file-icons/folder-desktop.svg b/packages/desktop/src/assets/file-icons/folder-desktop.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-desktop.svg rename to packages/desktop/src/assets/file-icons/folder-desktop.svg diff --git a/packages/app/src/assets/file-icons/folder-directive-open.svg b/packages/desktop/src/assets/file-icons/folder-directive-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-directive-open.svg rename to packages/desktop/src/assets/file-icons/folder-directive-open.svg diff --git a/packages/app/src/assets/file-icons/folder-directive.svg b/packages/desktop/src/assets/file-icons/folder-directive.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-directive.svg rename to packages/desktop/src/assets/file-icons/folder-directive.svg diff --git a/packages/app/src/assets/file-icons/folder-dist-open.svg b/packages/desktop/src/assets/file-icons/folder-dist-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-dist-open.svg rename to packages/desktop/src/assets/file-icons/folder-dist-open.svg diff --git a/packages/app/src/assets/file-icons/folder-dist.svg b/packages/desktop/src/assets/file-icons/folder-dist.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-dist.svg rename to packages/desktop/src/assets/file-icons/folder-dist.svg diff --git a/packages/app/src/assets/file-icons/folder-docker-open.svg b/packages/desktop/src/assets/file-icons/folder-docker-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-docker-open.svg rename to packages/desktop/src/assets/file-icons/folder-docker-open.svg diff --git a/packages/app/src/assets/file-icons/folder-docker.svg b/packages/desktop/src/assets/file-icons/folder-docker.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-docker.svg rename to packages/desktop/src/assets/file-icons/folder-docker.svg diff --git a/packages/app/src/assets/file-icons/folder-docs-open.svg b/packages/desktop/src/assets/file-icons/folder-docs-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-docs-open.svg rename to packages/desktop/src/assets/file-icons/folder-docs-open.svg diff --git a/packages/app/src/assets/file-icons/folder-docs.svg b/packages/desktop/src/assets/file-icons/folder-docs.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-docs.svg rename to packages/desktop/src/assets/file-icons/folder-docs.svg diff --git a/packages/app/src/assets/file-icons/folder-download-open.svg b/packages/desktop/src/assets/file-icons/folder-download-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-download-open.svg rename to packages/desktop/src/assets/file-icons/folder-download-open.svg diff --git a/packages/app/src/assets/file-icons/folder-download.svg b/packages/desktop/src/assets/file-icons/folder-download.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-download.svg rename to packages/desktop/src/assets/file-icons/folder-download.svg diff --git a/packages/app/src/assets/file-icons/folder-drizzle-open.svg b/packages/desktop/src/assets/file-icons/folder-drizzle-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-drizzle-open.svg rename to packages/desktop/src/assets/file-icons/folder-drizzle-open.svg diff --git a/packages/app/src/assets/file-icons/folder-drizzle.svg b/packages/desktop/src/assets/file-icons/folder-drizzle.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-drizzle.svg rename to packages/desktop/src/assets/file-icons/folder-drizzle.svg diff --git a/packages/app/src/assets/file-icons/folder-dump-open.svg b/packages/desktop/src/assets/file-icons/folder-dump-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-dump-open.svg rename to packages/desktop/src/assets/file-icons/folder-dump-open.svg diff --git a/packages/app/src/assets/file-icons/folder-dump.svg b/packages/desktop/src/assets/file-icons/folder-dump.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-dump.svg rename to packages/desktop/src/assets/file-icons/folder-dump.svg diff --git a/packages/app/src/assets/file-icons/folder-element-open.svg b/packages/desktop/src/assets/file-icons/folder-element-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-element-open.svg rename to packages/desktop/src/assets/file-icons/folder-element-open.svg diff --git a/packages/app/src/assets/file-icons/folder-element.svg b/packages/desktop/src/assets/file-icons/folder-element.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-element.svg rename to packages/desktop/src/assets/file-icons/folder-element.svg diff --git a/packages/app/src/assets/file-icons/folder-enum-open.svg b/packages/desktop/src/assets/file-icons/folder-enum-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-enum-open.svg rename to packages/desktop/src/assets/file-icons/folder-enum-open.svg diff --git a/packages/app/src/assets/file-icons/folder-enum.svg b/packages/desktop/src/assets/file-icons/folder-enum.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-enum.svg rename to packages/desktop/src/assets/file-icons/folder-enum.svg diff --git a/packages/app/src/assets/file-icons/folder-environment-open.svg b/packages/desktop/src/assets/file-icons/folder-environment-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-environment-open.svg rename to packages/desktop/src/assets/file-icons/folder-environment-open.svg diff --git a/packages/app/src/assets/file-icons/folder-environment.svg b/packages/desktop/src/assets/file-icons/folder-environment.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-environment.svg rename to packages/desktop/src/assets/file-icons/folder-environment.svg diff --git a/packages/app/src/assets/file-icons/folder-error-open.svg b/packages/desktop/src/assets/file-icons/folder-error-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-error-open.svg rename to packages/desktop/src/assets/file-icons/folder-error-open.svg diff --git a/packages/app/src/assets/file-icons/folder-error.svg b/packages/desktop/src/assets/file-icons/folder-error.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-error.svg rename to packages/desktop/src/assets/file-icons/folder-error.svg diff --git a/packages/app/src/assets/file-icons/folder-event-open.svg b/packages/desktop/src/assets/file-icons/folder-event-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-event-open.svg rename to packages/desktop/src/assets/file-icons/folder-event-open.svg diff --git a/packages/app/src/assets/file-icons/folder-event.svg b/packages/desktop/src/assets/file-icons/folder-event.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-event.svg rename to packages/desktop/src/assets/file-icons/folder-event.svg diff --git a/packages/app/src/assets/file-icons/folder-examples-open.svg b/packages/desktop/src/assets/file-icons/folder-examples-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-examples-open.svg rename to packages/desktop/src/assets/file-icons/folder-examples-open.svg diff --git a/packages/app/src/assets/file-icons/folder-examples.svg b/packages/desktop/src/assets/file-icons/folder-examples.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-examples.svg rename to packages/desktop/src/assets/file-icons/folder-examples.svg diff --git a/packages/app/src/assets/file-icons/folder-expo-open.svg b/packages/desktop/src/assets/file-icons/folder-expo-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-expo-open.svg rename to packages/desktop/src/assets/file-icons/folder-expo-open.svg diff --git a/packages/app/src/assets/file-icons/folder-expo.svg b/packages/desktop/src/assets/file-icons/folder-expo.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-expo.svg rename to packages/desktop/src/assets/file-icons/folder-expo.svg diff --git a/packages/app/src/assets/file-icons/folder-export-open.svg b/packages/desktop/src/assets/file-icons/folder-export-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-export-open.svg rename to packages/desktop/src/assets/file-icons/folder-export-open.svg diff --git a/packages/app/src/assets/file-icons/folder-export.svg b/packages/desktop/src/assets/file-icons/folder-export.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-export.svg rename to packages/desktop/src/assets/file-icons/folder-export.svg diff --git a/packages/app/src/assets/file-icons/folder-fastlane-open.svg b/packages/desktop/src/assets/file-icons/folder-fastlane-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-fastlane-open.svg rename to packages/desktop/src/assets/file-icons/folder-fastlane-open.svg diff --git a/packages/app/src/assets/file-icons/folder-fastlane.svg b/packages/desktop/src/assets/file-icons/folder-fastlane.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-fastlane.svg rename to packages/desktop/src/assets/file-icons/folder-fastlane.svg diff --git a/packages/app/src/assets/file-icons/folder-favicon-open.svg b/packages/desktop/src/assets/file-icons/folder-favicon-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-favicon-open.svg rename to packages/desktop/src/assets/file-icons/folder-favicon-open.svg diff --git a/packages/app/src/assets/file-icons/folder-favicon.svg b/packages/desktop/src/assets/file-icons/folder-favicon.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-favicon.svg rename to packages/desktop/src/assets/file-icons/folder-favicon.svg diff --git a/packages/app/src/assets/file-icons/folder-firebase-open.svg b/packages/desktop/src/assets/file-icons/folder-firebase-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-firebase-open.svg rename to packages/desktop/src/assets/file-icons/folder-firebase-open.svg diff --git a/packages/app/src/assets/file-icons/folder-firebase.svg b/packages/desktop/src/assets/file-icons/folder-firebase.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-firebase.svg rename to packages/desktop/src/assets/file-icons/folder-firebase.svg diff --git a/packages/app/src/assets/file-icons/folder-firestore-open.svg b/packages/desktop/src/assets/file-icons/folder-firestore-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-firestore-open.svg rename to packages/desktop/src/assets/file-icons/folder-firestore-open.svg diff --git a/packages/app/src/assets/file-icons/folder-firestore.svg b/packages/desktop/src/assets/file-icons/folder-firestore.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-firestore.svg rename to packages/desktop/src/assets/file-icons/folder-firestore.svg diff --git a/packages/app/src/assets/file-icons/folder-flow-open.svg b/packages/desktop/src/assets/file-icons/folder-flow-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-flow-open.svg rename to packages/desktop/src/assets/file-icons/folder-flow-open.svg diff --git a/packages/app/src/assets/file-icons/folder-flow.svg b/packages/desktop/src/assets/file-icons/folder-flow.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-flow.svg rename to packages/desktop/src/assets/file-icons/folder-flow.svg diff --git a/packages/app/src/assets/file-icons/folder-flutter-open.svg b/packages/desktop/src/assets/file-icons/folder-flutter-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-flutter-open.svg rename to packages/desktop/src/assets/file-icons/folder-flutter-open.svg diff --git a/packages/app/src/assets/file-icons/folder-flutter.svg b/packages/desktop/src/assets/file-icons/folder-flutter.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-flutter.svg rename to packages/desktop/src/assets/file-icons/folder-flutter.svg diff --git a/packages/app/src/assets/file-icons/folder-font-open.svg b/packages/desktop/src/assets/file-icons/folder-font-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-font-open.svg rename to packages/desktop/src/assets/file-icons/folder-font-open.svg diff --git a/packages/app/src/assets/file-icons/folder-font.svg b/packages/desktop/src/assets/file-icons/folder-font.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-font.svg rename to packages/desktop/src/assets/file-icons/folder-font.svg diff --git a/packages/app/src/assets/file-icons/folder-forgejo-open.svg b/packages/desktop/src/assets/file-icons/folder-forgejo-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-forgejo-open.svg rename to packages/desktop/src/assets/file-icons/folder-forgejo-open.svg diff --git a/packages/app/src/assets/file-icons/folder-forgejo.svg b/packages/desktop/src/assets/file-icons/folder-forgejo.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-forgejo.svg rename to packages/desktop/src/assets/file-icons/folder-forgejo.svg diff --git a/packages/app/src/assets/file-icons/folder-functions-open.svg b/packages/desktop/src/assets/file-icons/folder-functions-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-functions-open.svg rename to packages/desktop/src/assets/file-icons/folder-functions-open.svg diff --git a/packages/app/src/assets/file-icons/folder-functions.svg b/packages/desktop/src/assets/file-icons/folder-functions.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-functions.svg rename to packages/desktop/src/assets/file-icons/folder-functions.svg diff --git a/packages/app/src/assets/file-icons/folder-gamemaker-open.svg b/packages/desktop/src/assets/file-icons/folder-gamemaker-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-gamemaker-open.svg rename to packages/desktop/src/assets/file-icons/folder-gamemaker-open.svg diff --git a/packages/app/src/assets/file-icons/folder-gamemaker.svg b/packages/desktop/src/assets/file-icons/folder-gamemaker.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-gamemaker.svg rename to packages/desktop/src/assets/file-icons/folder-gamemaker.svg diff --git a/packages/app/src/assets/file-icons/folder-generator-open.svg b/packages/desktop/src/assets/file-icons/folder-generator-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-generator-open.svg rename to packages/desktop/src/assets/file-icons/folder-generator-open.svg diff --git a/packages/app/src/assets/file-icons/folder-generator.svg b/packages/desktop/src/assets/file-icons/folder-generator.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-generator.svg rename to packages/desktop/src/assets/file-icons/folder-generator.svg diff --git a/packages/app/src/assets/file-icons/folder-gh-workflows-open.svg b/packages/desktop/src/assets/file-icons/folder-gh-workflows-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-gh-workflows-open.svg rename to packages/desktop/src/assets/file-icons/folder-gh-workflows-open.svg diff --git a/packages/app/src/assets/file-icons/folder-gh-workflows.svg b/packages/desktop/src/assets/file-icons/folder-gh-workflows.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-gh-workflows.svg rename to packages/desktop/src/assets/file-icons/folder-gh-workflows.svg diff --git a/packages/app/src/assets/file-icons/folder-git-open.svg b/packages/desktop/src/assets/file-icons/folder-git-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-git-open.svg rename to packages/desktop/src/assets/file-icons/folder-git-open.svg diff --git a/packages/app/src/assets/file-icons/folder-git.svg b/packages/desktop/src/assets/file-icons/folder-git.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-git.svg rename to packages/desktop/src/assets/file-icons/folder-git.svg diff --git a/packages/app/src/assets/file-icons/folder-gitea-open.svg b/packages/desktop/src/assets/file-icons/folder-gitea-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-gitea-open.svg rename to packages/desktop/src/assets/file-icons/folder-gitea-open.svg diff --git a/packages/app/src/assets/file-icons/folder-gitea.svg b/packages/desktop/src/assets/file-icons/folder-gitea.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-gitea.svg rename to packages/desktop/src/assets/file-icons/folder-gitea.svg diff --git a/packages/app/src/assets/file-icons/folder-github-open.svg b/packages/desktop/src/assets/file-icons/folder-github-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-github-open.svg rename to packages/desktop/src/assets/file-icons/folder-github-open.svg diff --git a/packages/app/src/assets/file-icons/folder-github.svg b/packages/desktop/src/assets/file-icons/folder-github.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-github.svg rename to packages/desktop/src/assets/file-icons/folder-github.svg diff --git a/packages/app/src/assets/file-icons/folder-gitlab-open.svg b/packages/desktop/src/assets/file-icons/folder-gitlab-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-gitlab-open.svg rename to packages/desktop/src/assets/file-icons/folder-gitlab-open.svg diff --git a/packages/app/src/assets/file-icons/folder-gitlab.svg b/packages/desktop/src/assets/file-icons/folder-gitlab.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-gitlab.svg rename to packages/desktop/src/assets/file-icons/folder-gitlab.svg diff --git a/packages/app/src/assets/file-icons/folder-global-open.svg b/packages/desktop/src/assets/file-icons/folder-global-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-global-open.svg rename to packages/desktop/src/assets/file-icons/folder-global-open.svg diff --git a/packages/app/src/assets/file-icons/folder-global.svg b/packages/desktop/src/assets/file-icons/folder-global.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-global.svg rename to packages/desktop/src/assets/file-icons/folder-global.svg diff --git a/packages/app/src/assets/file-icons/folder-godot-open.svg b/packages/desktop/src/assets/file-icons/folder-godot-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-godot-open.svg rename to packages/desktop/src/assets/file-icons/folder-godot-open.svg diff --git a/packages/app/src/assets/file-icons/folder-godot.svg b/packages/desktop/src/assets/file-icons/folder-godot.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-godot.svg rename to packages/desktop/src/assets/file-icons/folder-godot.svg diff --git a/packages/app/src/assets/file-icons/folder-gradle-open.svg b/packages/desktop/src/assets/file-icons/folder-gradle-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-gradle-open.svg rename to packages/desktop/src/assets/file-icons/folder-gradle-open.svg diff --git a/packages/app/src/assets/file-icons/folder-gradle.svg b/packages/desktop/src/assets/file-icons/folder-gradle.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-gradle.svg rename to packages/desktop/src/assets/file-icons/folder-gradle.svg diff --git a/packages/app/src/assets/file-icons/folder-graphql-open.svg b/packages/desktop/src/assets/file-icons/folder-graphql-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-graphql-open.svg rename to packages/desktop/src/assets/file-icons/folder-graphql-open.svg diff --git a/packages/app/src/assets/file-icons/folder-graphql.svg b/packages/desktop/src/assets/file-icons/folder-graphql.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-graphql.svg rename to packages/desktop/src/assets/file-icons/folder-graphql.svg diff --git a/packages/app/src/assets/file-icons/folder-guard-open.svg b/packages/desktop/src/assets/file-icons/folder-guard-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-guard-open.svg rename to packages/desktop/src/assets/file-icons/folder-guard-open.svg diff --git a/packages/app/src/assets/file-icons/folder-guard.svg b/packages/desktop/src/assets/file-icons/folder-guard.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-guard.svg rename to packages/desktop/src/assets/file-icons/folder-guard.svg diff --git a/packages/app/src/assets/file-icons/folder-gulp-open.svg b/packages/desktop/src/assets/file-icons/folder-gulp-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-gulp-open.svg rename to packages/desktop/src/assets/file-icons/folder-gulp-open.svg diff --git a/packages/app/src/assets/file-icons/folder-gulp.svg b/packages/desktop/src/assets/file-icons/folder-gulp.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-gulp.svg rename to packages/desktop/src/assets/file-icons/folder-gulp.svg diff --git a/packages/app/src/assets/file-icons/folder-helm-open.svg b/packages/desktop/src/assets/file-icons/folder-helm-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-helm-open.svg rename to packages/desktop/src/assets/file-icons/folder-helm-open.svg diff --git a/packages/app/src/assets/file-icons/folder-helm.svg b/packages/desktop/src/assets/file-icons/folder-helm.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-helm.svg rename to packages/desktop/src/assets/file-icons/folder-helm.svg diff --git a/packages/app/src/assets/file-icons/folder-helper-open.svg b/packages/desktop/src/assets/file-icons/folder-helper-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-helper-open.svg rename to packages/desktop/src/assets/file-icons/folder-helper-open.svg diff --git a/packages/app/src/assets/file-icons/folder-helper.svg b/packages/desktop/src/assets/file-icons/folder-helper.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-helper.svg rename to packages/desktop/src/assets/file-icons/folder-helper.svg diff --git a/packages/app/src/assets/file-icons/folder-home-open.svg b/packages/desktop/src/assets/file-icons/folder-home-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-home-open.svg rename to packages/desktop/src/assets/file-icons/folder-home-open.svg diff --git a/packages/app/src/assets/file-icons/folder-home.svg b/packages/desktop/src/assets/file-icons/folder-home.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-home.svg rename to packages/desktop/src/assets/file-icons/folder-home.svg diff --git a/packages/app/src/assets/file-icons/folder-hook-open.svg b/packages/desktop/src/assets/file-icons/folder-hook-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-hook-open.svg rename to packages/desktop/src/assets/file-icons/folder-hook-open.svg diff --git a/packages/app/src/assets/file-icons/folder-hook.svg b/packages/desktop/src/assets/file-icons/folder-hook.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-hook.svg rename to packages/desktop/src/assets/file-icons/folder-hook.svg diff --git a/packages/app/src/assets/file-icons/folder-husky-open.svg b/packages/desktop/src/assets/file-icons/folder-husky-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-husky-open.svg rename to packages/desktop/src/assets/file-icons/folder-husky-open.svg diff --git a/packages/app/src/assets/file-icons/folder-husky.svg b/packages/desktop/src/assets/file-icons/folder-husky.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-husky.svg rename to packages/desktop/src/assets/file-icons/folder-husky.svg diff --git a/packages/app/src/assets/file-icons/folder-i18n-open.svg b/packages/desktop/src/assets/file-icons/folder-i18n-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-i18n-open.svg rename to packages/desktop/src/assets/file-icons/folder-i18n-open.svg diff --git a/packages/app/src/assets/file-icons/folder-i18n.svg b/packages/desktop/src/assets/file-icons/folder-i18n.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-i18n.svg rename to packages/desktop/src/assets/file-icons/folder-i18n.svg diff --git a/packages/app/src/assets/file-icons/folder-images-open.svg b/packages/desktop/src/assets/file-icons/folder-images-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-images-open.svg rename to packages/desktop/src/assets/file-icons/folder-images-open.svg diff --git a/packages/app/src/assets/file-icons/folder-images.svg b/packages/desktop/src/assets/file-icons/folder-images.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-images.svg rename to packages/desktop/src/assets/file-icons/folder-images.svg diff --git a/packages/app/src/assets/file-icons/folder-import-open.svg b/packages/desktop/src/assets/file-icons/folder-import-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-import-open.svg rename to packages/desktop/src/assets/file-icons/folder-import-open.svg diff --git a/packages/app/src/assets/file-icons/folder-import.svg b/packages/desktop/src/assets/file-icons/folder-import.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-import.svg rename to packages/desktop/src/assets/file-icons/folder-import.svg diff --git a/packages/app/src/assets/file-icons/folder-include-open.svg b/packages/desktop/src/assets/file-icons/folder-include-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-include-open.svg rename to packages/desktop/src/assets/file-icons/folder-include-open.svg diff --git a/packages/app/src/assets/file-icons/folder-include.svg b/packages/desktop/src/assets/file-icons/folder-include.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-include.svg rename to packages/desktop/src/assets/file-icons/folder-include.svg diff --git a/packages/app/src/assets/file-icons/folder-intellij-open.svg b/packages/desktop/src/assets/file-icons/folder-intellij-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-intellij-open.svg rename to packages/desktop/src/assets/file-icons/folder-intellij-open.svg diff --git a/packages/app/src/assets/file-icons/folder-intellij-open_light.svg b/packages/desktop/src/assets/file-icons/folder-intellij-open_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-intellij-open_light.svg rename to packages/desktop/src/assets/file-icons/folder-intellij-open_light.svg diff --git a/packages/app/src/assets/file-icons/folder-intellij.svg b/packages/desktop/src/assets/file-icons/folder-intellij.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-intellij.svg rename to packages/desktop/src/assets/file-icons/folder-intellij.svg diff --git a/packages/app/src/assets/file-icons/folder-intellij_light.svg b/packages/desktop/src/assets/file-icons/folder-intellij_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-intellij_light.svg rename to packages/desktop/src/assets/file-icons/folder-intellij_light.svg diff --git a/packages/app/src/assets/file-icons/folder-interceptor-open.svg b/packages/desktop/src/assets/file-icons/folder-interceptor-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-interceptor-open.svg rename to packages/desktop/src/assets/file-icons/folder-interceptor-open.svg diff --git a/packages/app/src/assets/file-icons/folder-interceptor.svg b/packages/desktop/src/assets/file-icons/folder-interceptor.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-interceptor.svg rename to packages/desktop/src/assets/file-icons/folder-interceptor.svg diff --git a/packages/app/src/assets/file-icons/folder-interface-open.svg b/packages/desktop/src/assets/file-icons/folder-interface-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-interface-open.svg rename to packages/desktop/src/assets/file-icons/folder-interface-open.svg diff --git a/packages/app/src/assets/file-icons/folder-interface.svg b/packages/desktop/src/assets/file-icons/folder-interface.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-interface.svg rename to packages/desktop/src/assets/file-icons/folder-interface.svg diff --git a/packages/app/src/assets/file-icons/folder-ios-open.svg b/packages/desktop/src/assets/file-icons/folder-ios-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-ios-open.svg rename to packages/desktop/src/assets/file-icons/folder-ios-open.svg diff --git a/packages/app/src/assets/file-icons/folder-ios.svg b/packages/desktop/src/assets/file-icons/folder-ios.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-ios.svg rename to packages/desktop/src/assets/file-icons/folder-ios.svg diff --git a/packages/app/src/assets/file-icons/folder-java-open.svg b/packages/desktop/src/assets/file-icons/folder-java-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-java-open.svg rename to packages/desktop/src/assets/file-icons/folder-java-open.svg diff --git a/packages/app/src/assets/file-icons/folder-java.svg b/packages/desktop/src/assets/file-icons/folder-java.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-java.svg rename to packages/desktop/src/assets/file-icons/folder-java.svg diff --git a/packages/app/src/assets/file-icons/folder-javascript-open.svg b/packages/desktop/src/assets/file-icons/folder-javascript-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-javascript-open.svg rename to packages/desktop/src/assets/file-icons/folder-javascript-open.svg diff --git a/packages/app/src/assets/file-icons/folder-javascript.svg b/packages/desktop/src/assets/file-icons/folder-javascript.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-javascript.svg rename to packages/desktop/src/assets/file-icons/folder-javascript.svg diff --git a/packages/app/src/assets/file-icons/folder-jinja-open.svg b/packages/desktop/src/assets/file-icons/folder-jinja-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-jinja-open.svg rename to packages/desktop/src/assets/file-icons/folder-jinja-open.svg diff --git a/packages/app/src/assets/file-icons/folder-jinja-open_light.svg b/packages/desktop/src/assets/file-icons/folder-jinja-open_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-jinja-open_light.svg rename to packages/desktop/src/assets/file-icons/folder-jinja-open_light.svg diff --git a/packages/app/src/assets/file-icons/folder-jinja.svg b/packages/desktop/src/assets/file-icons/folder-jinja.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-jinja.svg rename to packages/desktop/src/assets/file-icons/folder-jinja.svg diff --git a/packages/app/src/assets/file-icons/folder-jinja_light.svg b/packages/desktop/src/assets/file-icons/folder-jinja_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-jinja_light.svg rename to packages/desktop/src/assets/file-icons/folder-jinja_light.svg diff --git a/packages/app/src/assets/file-icons/folder-job-open.svg b/packages/desktop/src/assets/file-icons/folder-job-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-job-open.svg rename to packages/desktop/src/assets/file-icons/folder-job-open.svg diff --git a/packages/app/src/assets/file-icons/folder-job.svg b/packages/desktop/src/assets/file-icons/folder-job.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-job.svg rename to packages/desktop/src/assets/file-icons/folder-job.svg diff --git a/packages/app/src/assets/file-icons/folder-json-open.svg b/packages/desktop/src/assets/file-icons/folder-json-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-json-open.svg rename to packages/desktop/src/assets/file-icons/folder-json-open.svg diff --git a/packages/app/src/assets/file-icons/folder-json.svg b/packages/desktop/src/assets/file-icons/folder-json.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-json.svg rename to packages/desktop/src/assets/file-icons/folder-json.svg diff --git a/packages/app/src/assets/file-icons/folder-jupyter-open.svg b/packages/desktop/src/assets/file-icons/folder-jupyter-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-jupyter-open.svg rename to packages/desktop/src/assets/file-icons/folder-jupyter-open.svg diff --git a/packages/app/src/assets/file-icons/folder-jupyter.svg b/packages/desktop/src/assets/file-icons/folder-jupyter.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-jupyter.svg rename to packages/desktop/src/assets/file-icons/folder-jupyter.svg diff --git a/packages/app/src/assets/file-icons/folder-keys-open.svg b/packages/desktop/src/assets/file-icons/folder-keys-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-keys-open.svg rename to packages/desktop/src/assets/file-icons/folder-keys-open.svg diff --git a/packages/app/src/assets/file-icons/folder-keys.svg b/packages/desktop/src/assets/file-icons/folder-keys.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-keys.svg rename to packages/desktop/src/assets/file-icons/folder-keys.svg diff --git a/packages/app/src/assets/file-icons/folder-kubernetes-open.svg b/packages/desktop/src/assets/file-icons/folder-kubernetes-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-kubernetes-open.svg rename to packages/desktop/src/assets/file-icons/folder-kubernetes-open.svg diff --git a/packages/app/src/assets/file-icons/folder-kubernetes.svg b/packages/desktop/src/assets/file-icons/folder-kubernetes.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-kubernetes.svg rename to packages/desktop/src/assets/file-icons/folder-kubernetes.svg diff --git a/packages/app/src/assets/file-icons/folder-kusto-open.svg b/packages/desktop/src/assets/file-icons/folder-kusto-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-kusto-open.svg rename to packages/desktop/src/assets/file-icons/folder-kusto-open.svg diff --git a/packages/app/src/assets/file-icons/folder-kusto.svg b/packages/desktop/src/assets/file-icons/folder-kusto.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-kusto.svg rename to packages/desktop/src/assets/file-icons/folder-kusto.svg diff --git a/packages/app/src/assets/file-icons/folder-layout-open.svg b/packages/desktop/src/assets/file-icons/folder-layout-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-layout-open.svg rename to packages/desktop/src/assets/file-icons/folder-layout-open.svg diff --git a/packages/app/src/assets/file-icons/folder-layout.svg b/packages/desktop/src/assets/file-icons/folder-layout.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-layout.svg rename to packages/desktop/src/assets/file-icons/folder-layout.svg diff --git a/packages/app/src/assets/file-icons/folder-lefthook-open.svg b/packages/desktop/src/assets/file-icons/folder-lefthook-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-lefthook-open.svg rename to packages/desktop/src/assets/file-icons/folder-lefthook-open.svg diff --git a/packages/app/src/assets/file-icons/folder-lefthook.svg b/packages/desktop/src/assets/file-icons/folder-lefthook.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-lefthook.svg rename to packages/desktop/src/assets/file-icons/folder-lefthook.svg diff --git a/packages/app/src/assets/file-icons/folder-less-open.svg b/packages/desktop/src/assets/file-icons/folder-less-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-less-open.svg rename to packages/desktop/src/assets/file-icons/folder-less-open.svg diff --git a/packages/app/src/assets/file-icons/folder-less.svg b/packages/desktop/src/assets/file-icons/folder-less.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-less.svg rename to packages/desktop/src/assets/file-icons/folder-less.svg diff --git a/packages/app/src/assets/file-icons/folder-lib-open.svg b/packages/desktop/src/assets/file-icons/folder-lib-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-lib-open.svg rename to packages/desktop/src/assets/file-icons/folder-lib-open.svg diff --git a/packages/app/src/assets/file-icons/folder-lib.svg b/packages/desktop/src/assets/file-icons/folder-lib.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-lib.svg rename to packages/desktop/src/assets/file-icons/folder-lib.svg diff --git a/packages/app/src/assets/file-icons/folder-link-open.svg b/packages/desktop/src/assets/file-icons/folder-link-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-link-open.svg rename to packages/desktop/src/assets/file-icons/folder-link-open.svg diff --git a/packages/app/src/assets/file-icons/folder-link.svg b/packages/desktop/src/assets/file-icons/folder-link.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-link.svg rename to packages/desktop/src/assets/file-icons/folder-link.svg diff --git a/packages/app/src/assets/file-icons/folder-linux-open.svg b/packages/desktop/src/assets/file-icons/folder-linux-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-linux-open.svg rename to packages/desktop/src/assets/file-icons/folder-linux-open.svg diff --git a/packages/app/src/assets/file-icons/folder-linux.svg b/packages/desktop/src/assets/file-icons/folder-linux.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-linux.svg rename to packages/desktop/src/assets/file-icons/folder-linux.svg diff --git a/packages/app/src/assets/file-icons/folder-liquibase-open.svg b/packages/desktop/src/assets/file-icons/folder-liquibase-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-liquibase-open.svg rename to packages/desktop/src/assets/file-icons/folder-liquibase-open.svg diff --git a/packages/app/src/assets/file-icons/folder-liquibase.svg b/packages/desktop/src/assets/file-icons/folder-liquibase.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-liquibase.svg rename to packages/desktop/src/assets/file-icons/folder-liquibase.svg diff --git a/packages/app/src/assets/file-icons/folder-log-open.svg b/packages/desktop/src/assets/file-icons/folder-log-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-log-open.svg rename to packages/desktop/src/assets/file-icons/folder-log-open.svg diff --git a/packages/app/src/assets/file-icons/folder-log.svg b/packages/desktop/src/assets/file-icons/folder-log.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-log.svg rename to packages/desktop/src/assets/file-icons/folder-log.svg diff --git a/packages/app/src/assets/file-icons/folder-lottie-open.svg b/packages/desktop/src/assets/file-icons/folder-lottie-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-lottie-open.svg rename to packages/desktop/src/assets/file-icons/folder-lottie-open.svg diff --git a/packages/app/src/assets/file-icons/folder-lottie.svg b/packages/desktop/src/assets/file-icons/folder-lottie.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-lottie.svg rename to packages/desktop/src/assets/file-icons/folder-lottie.svg diff --git a/packages/app/src/assets/file-icons/folder-lua-open.svg b/packages/desktop/src/assets/file-icons/folder-lua-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-lua-open.svg rename to packages/desktop/src/assets/file-icons/folder-lua-open.svg diff --git a/packages/app/src/assets/file-icons/folder-lua.svg b/packages/desktop/src/assets/file-icons/folder-lua.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-lua.svg rename to packages/desktop/src/assets/file-icons/folder-lua.svg diff --git a/packages/app/src/assets/file-icons/folder-luau-open.svg b/packages/desktop/src/assets/file-icons/folder-luau-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-luau-open.svg rename to packages/desktop/src/assets/file-icons/folder-luau-open.svg diff --git a/packages/app/src/assets/file-icons/folder-luau.svg b/packages/desktop/src/assets/file-icons/folder-luau.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-luau.svg rename to packages/desktop/src/assets/file-icons/folder-luau.svg diff --git a/packages/app/src/assets/file-icons/folder-macos-open.svg b/packages/desktop/src/assets/file-icons/folder-macos-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-macos-open.svg rename to packages/desktop/src/assets/file-icons/folder-macos-open.svg diff --git a/packages/app/src/assets/file-icons/folder-macos.svg b/packages/desktop/src/assets/file-icons/folder-macos.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-macos.svg rename to packages/desktop/src/assets/file-icons/folder-macos.svg diff --git a/packages/app/src/assets/file-icons/folder-mail-open.svg b/packages/desktop/src/assets/file-icons/folder-mail-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-mail-open.svg rename to packages/desktop/src/assets/file-icons/folder-mail-open.svg diff --git a/packages/app/src/assets/file-icons/folder-mail.svg b/packages/desktop/src/assets/file-icons/folder-mail.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-mail.svg rename to packages/desktop/src/assets/file-icons/folder-mail.svg diff --git a/packages/app/src/assets/file-icons/folder-mappings-open.svg b/packages/desktop/src/assets/file-icons/folder-mappings-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-mappings-open.svg rename to packages/desktop/src/assets/file-icons/folder-mappings-open.svg diff --git a/packages/app/src/assets/file-icons/folder-mappings.svg b/packages/desktop/src/assets/file-icons/folder-mappings.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-mappings.svg rename to packages/desktop/src/assets/file-icons/folder-mappings.svg diff --git a/packages/app/src/assets/file-icons/folder-markdown-open.svg b/packages/desktop/src/assets/file-icons/folder-markdown-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-markdown-open.svg rename to packages/desktop/src/assets/file-icons/folder-markdown-open.svg diff --git a/packages/app/src/assets/file-icons/folder-markdown.svg b/packages/desktop/src/assets/file-icons/folder-markdown.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-markdown.svg rename to packages/desktop/src/assets/file-icons/folder-markdown.svg diff --git a/packages/app/src/assets/file-icons/folder-mercurial-open.svg b/packages/desktop/src/assets/file-icons/folder-mercurial-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-mercurial-open.svg rename to packages/desktop/src/assets/file-icons/folder-mercurial-open.svg diff --git a/packages/app/src/assets/file-icons/folder-mercurial.svg b/packages/desktop/src/assets/file-icons/folder-mercurial.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-mercurial.svg rename to packages/desktop/src/assets/file-icons/folder-mercurial.svg diff --git a/packages/app/src/assets/file-icons/folder-messages-open.svg b/packages/desktop/src/assets/file-icons/folder-messages-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-messages-open.svg rename to packages/desktop/src/assets/file-icons/folder-messages-open.svg diff --git a/packages/app/src/assets/file-icons/folder-messages.svg b/packages/desktop/src/assets/file-icons/folder-messages.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-messages.svg rename to packages/desktop/src/assets/file-icons/folder-messages.svg diff --git a/packages/app/src/assets/file-icons/folder-meta-open.svg b/packages/desktop/src/assets/file-icons/folder-meta-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-meta-open.svg rename to packages/desktop/src/assets/file-icons/folder-meta-open.svg diff --git a/packages/app/src/assets/file-icons/folder-meta.svg b/packages/desktop/src/assets/file-icons/folder-meta.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-meta.svg rename to packages/desktop/src/assets/file-icons/folder-meta.svg diff --git a/packages/app/src/assets/file-icons/folder-middleware-open.svg b/packages/desktop/src/assets/file-icons/folder-middleware-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-middleware-open.svg rename to packages/desktop/src/assets/file-icons/folder-middleware-open.svg diff --git a/packages/app/src/assets/file-icons/folder-middleware.svg b/packages/desktop/src/assets/file-icons/folder-middleware.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-middleware.svg rename to packages/desktop/src/assets/file-icons/folder-middleware.svg diff --git a/packages/app/src/assets/file-icons/folder-mjml-open.svg b/packages/desktop/src/assets/file-icons/folder-mjml-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-mjml-open.svg rename to packages/desktop/src/assets/file-icons/folder-mjml-open.svg diff --git a/packages/app/src/assets/file-icons/folder-mjml.svg b/packages/desktop/src/assets/file-icons/folder-mjml.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-mjml.svg rename to packages/desktop/src/assets/file-icons/folder-mjml.svg diff --git a/packages/app/src/assets/file-icons/folder-mobile-open.svg b/packages/desktop/src/assets/file-icons/folder-mobile-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-mobile-open.svg rename to packages/desktop/src/assets/file-icons/folder-mobile-open.svg diff --git a/packages/app/src/assets/file-icons/folder-mobile.svg b/packages/desktop/src/assets/file-icons/folder-mobile.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-mobile.svg rename to packages/desktop/src/assets/file-icons/folder-mobile.svg diff --git a/packages/app/src/assets/file-icons/folder-mock-open.svg b/packages/desktop/src/assets/file-icons/folder-mock-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-mock-open.svg rename to packages/desktop/src/assets/file-icons/folder-mock-open.svg diff --git a/packages/app/src/assets/file-icons/folder-mock.svg b/packages/desktop/src/assets/file-icons/folder-mock.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-mock.svg rename to packages/desktop/src/assets/file-icons/folder-mock.svg diff --git a/packages/app/src/assets/file-icons/folder-mojo-open.svg b/packages/desktop/src/assets/file-icons/folder-mojo-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-mojo-open.svg rename to packages/desktop/src/assets/file-icons/folder-mojo-open.svg diff --git a/packages/app/src/assets/file-icons/folder-mojo.svg b/packages/desktop/src/assets/file-icons/folder-mojo.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-mojo.svg rename to packages/desktop/src/assets/file-icons/folder-mojo.svg diff --git a/packages/app/src/assets/file-icons/folder-molecule-open.svg b/packages/desktop/src/assets/file-icons/folder-molecule-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-molecule-open.svg rename to packages/desktop/src/assets/file-icons/folder-molecule-open.svg diff --git a/packages/app/src/assets/file-icons/folder-molecule.svg b/packages/desktop/src/assets/file-icons/folder-molecule.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-molecule.svg rename to packages/desktop/src/assets/file-icons/folder-molecule.svg diff --git a/packages/app/src/assets/file-icons/folder-moon-open.svg b/packages/desktop/src/assets/file-icons/folder-moon-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-moon-open.svg rename to packages/desktop/src/assets/file-icons/folder-moon-open.svg diff --git a/packages/app/src/assets/file-icons/folder-moon.svg b/packages/desktop/src/assets/file-icons/folder-moon.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-moon.svg rename to packages/desktop/src/assets/file-icons/folder-moon.svg diff --git a/packages/app/src/assets/file-icons/folder-netlify-open.svg b/packages/desktop/src/assets/file-icons/folder-netlify-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-netlify-open.svg rename to packages/desktop/src/assets/file-icons/folder-netlify-open.svg diff --git a/packages/app/src/assets/file-icons/folder-netlify.svg b/packages/desktop/src/assets/file-icons/folder-netlify.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-netlify.svg rename to packages/desktop/src/assets/file-icons/folder-netlify.svg diff --git a/packages/app/src/assets/file-icons/folder-next-open.svg b/packages/desktop/src/assets/file-icons/folder-next-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-next-open.svg rename to packages/desktop/src/assets/file-icons/folder-next-open.svg diff --git a/packages/app/src/assets/file-icons/folder-next.svg b/packages/desktop/src/assets/file-icons/folder-next.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-next.svg rename to packages/desktop/src/assets/file-icons/folder-next.svg diff --git a/packages/app/src/assets/file-icons/folder-ngrx-store-open.svg b/packages/desktop/src/assets/file-icons/folder-ngrx-store-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-ngrx-store-open.svg rename to packages/desktop/src/assets/file-icons/folder-ngrx-store-open.svg diff --git a/packages/app/src/assets/file-icons/folder-ngrx-store.svg b/packages/desktop/src/assets/file-icons/folder-ngrx-store.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-ngrx-store.svg rename to packages/desktop/src/assets/file-icons/folder-ngrx-store.svg diff --git a/packages/app/src/assets/file-icons/folder-node-open.svg b/packages/desktop/src/assets/file-icons/folder-node-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-node-open.svg rename to packages/desktop/src/assets/file-icons/folder-node-open.svg diff --git a/packages/app/src/assets/file-icons/folder-node.svg b/packages/desktop/src/assets/file-icons/folder-node.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-node.svg rename to packages/desktop/src/assets/file-icons/folder-node.svg diff --git a/packages/app/src/assets/file-icons/folder-nuxt-open.svg b/packages/desktop/src/assets/file-icons/folder-nuxt-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-nuxt-open.svg rename to packages/desktop/src/assets/file-icons/folder-nuxt-open.svg diff --git a/packages/app/src/assets/file-icons/folder-nuxt.svg b/packages/desktop/src/assets/file-icons/folder-nuxt.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-nuxt.svg rename to packages/desktop/src/assets/file-icons/folder-nuxt.svg diff --git a/packages/app/src/assets/file-icons/folder-obsidian-open.svg b/packages/desktop/src/assets/file-icons/folder-obsidian-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-obsidian-open.svg rename to packages/desktop/src/assets/file-icons/folder-obsidian-open.svg diff --git a/packages/app/src/assets/file-icons/folder-obsidian.svg b/packages/desktop/src/assets/file-icons/folder-obsidian.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-obsidian.svg rename to packages/desktop/src/assets/file-icons/folder-obsidian.svg diff --git a/packages/app/src/assets/file-icons/folder-open.svg b/packages/desktop/src/assets/file-icons/folder-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-open.svg rename to packages/desktop/src/assets/file-icons/folder-open.svg diff --git a/packages/app/src/assets/file-icons/folder-organism-open.svg b/packages/desktop/src/assets/file-icons/folder-organism-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-organism-open.svg rename to packages/desktop/src/assets/file-icons/folder-organism-open.svg diff --git a/packages/app/src/assets/file-icons/folder-organism.svg b/packages/desktop/src/assets/file-icons/folder-organism.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-organism.svg rename to packages/desktop/src/assets/file-icons/folder-organism.svg diff --git a/packages/app/src/assets/file-icons/folder-other-open.svg b/packages/desktop/src/assets/file-icons/folder-other-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-other-open.svg rename to packages/desktop/src/assets/file-icons/folder-other-open.svg diff --git a/packages/app/src/assets/file-icons/folder-other.svg b/packages/desktop/src/assets/file-icons/folder-other.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-other.svg rename to packages/desktop/src/assets/file-icons/folder-other.svg diff --git a/packages/app/src/assets/file-icons/folder-packages-open.svg b/packages/desktop/src/assets/file-icons/folder-packages-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-packages-open.svg rename to packages/desktop/src/assets/file-icons/folder-packages-open.svg diff --git a/packages/app/src/assets/file-icons/folder-packages.svg b/packages/desktop/src/assets/file-icons/folder-packages.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-packages.svg rename to packages/desktop/src/assets/file-icons/folder-packages.svg diff --git a/packages/app/src/assets/file-icons/folder-pdf-open.svg b/packages/desktop/src/assets/file-icons/folder-pdf-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-pdf-open.svg rename to packages/desktop/src/assets/file-icons/folder-pdf-open.svg diff --git a/packages/app/src/assets/file-icons/folder-pdf.svg b/packages/desktop/src/assets/file-icons/folder-pdf.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-pdf.svg rename to packages/desktop/src/assets/file-icons/folder-pdf.svg diff --git a/packages/app/src/assets/file-icons/folder-pdm-open.svg b/packages/desktop/src/assets/file-icons/folder-pdm-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-pdm-open.svg rename to packages/desktop/src/assets/file-icons/folder-pdm-open.svg diff --git a/packages/app/src/assets/file-icons/folder-pdm.svg b/packages/desktop/src/assets/file-icons/folder-pdm.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-pdm.svg rename to packages/desktop/src/assets/file-icons/folder-pdm.svg diff --git a/packages/app/src/assets/file-icons/folder-php-open.svg b/packages/desktop/src/assets/file-icons/folder-php-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-php-open.svg rename to packages/desktop/src/assets/file-icons/folder-php-open.svg diff --git a/packages/app/src/assets/file-icons/folder-php.svg b/packages/desktop/src/assets/file-icons/folder-php.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-php.svg rename to packages/desktop/src/assets/file-icons/folder-php.svg diff --git a/packages/app/src/assets/file-icons/folder-phpmailer-open.svg b/packages/desktop/src/assets/file-icons/folder-phpmailer-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-phpmailer-open.svg rename to packages/desktop/src/assets/file-icons/folder-phpmailer-open.svg diff --git a/packages/app/src/assets/file-icons/folder-phpmailer.svg b/packages/desktop/src/assets/file-icons/folder-phpmailer.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-phpmailer.svg rename to packages/desktop/src/assets/file-icons/folder-phpmailer.svg diff --git a/packages/app/src/assets/file-icons/folder-pipe-open.svg b/packages/desktop/src/assets/file-icons/folder-pipe-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-pipe-open.svg rename to packages/desktop/src/assets/file-icons/folder-pipe-open.svg diff --git a/packages/app/src/assets/file-icons/folder-pipe.svg b/packages/desktop/src/assets/file-icons/folder-pipe.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-pipe.svg rename to packages/desktop/src/assets/file-icons/folder-pipe.svg diff --git a/packages/app/src/assets/file-icons/folder-plastic-open.svg b/packages/desktop/src/assets/file-icons/folder-plastic-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-plastic-open.svg rename to packages/desktop/src/assets/file-icons/folder-plastic-open.svg diff --git a/packages/app/src/assets/file-icons/folder-plastic.svg b/packages/desktop/src/assets/file-icons/folder-plastic.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-plastic.svg rename to packages/desktop/src/assets/file-icons/folder-plastic.svg diff --git a/packages/app/src/assets/file-icons/folder-plugin-open.svg b/packages/desktop/src/assets/file-icons/folder-plugin-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-plugin-open.svg rename to packages/desktop/src/assets/file-icons/folder-plugin-open.svg diff --git a/packages/app/src/assets/file-icons/folder-plugin.svg b/packages/desktop/src/assets/file-icons/folder-plugin.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-plugin.svg rename to packages/desktop/src/assets/file-icons/folder-plugin.svg diff --git a/packages/app/src/assets/file-icons/folder-policy-open.svg b/packages/desktop/src/assets/file-icons/folder-policy-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-policy-open.svg rename to packages/desktop/src/assets/file-icons/folder-policy-open.svg diff --git a/packages/app/src/assets/file-icons/folder-policy.svg b/packages/desktop/src/assets/file-icons/folder-policy.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-policy.svg rename to packages/desktop/src/assets/file-icons/folder-policy.svg diff --git a/packages/app/src/assets/file-icons/folder-powershell-open.svg b/packages/desktop/src/assets/file-icons/folder-powershell-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-powershell-open.svg rename to packages/desktop/src/assets/file-icons/folder-powershell-open.svg diff --git a/packages/app/src/assets/file-icons/folder-powershell.svg b/packages/desktop/src/assets/file-icons/folder-powershell.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-powershell.svg rename to packages/desktop/src/assets/file-icons/folder-powershell.svg diff --git a/packages/app/src/assets/file-icons/folder-prisma-open.svg b/packages/desktop/src/assets/file-icons/folder-prisma-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-prisma-open.svg rename to packages/desktop/src/assets/file-icons/folder-prisma-open.svg diff --git a/packages/app/src/assets/file-icons/folder-prisma.svg b/packages/desktop/src/assets/file-icons/folder-prisma.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-prisma.svg rename to packages/desktop/src/assets/file-icons/folder-prisma.svg diff --git a/packages/app/src/assets/file-icons/folder-private-open.svg b/packages/desktop/src/assets/file-icons/folder-private-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-private-open.svg rename to packages/desktop/src/assets/file-icons/folder-private-open.svg diff --git a/packages/app/src/assets/file-icons/folder-private.svg b/packages/desktop/src/assets/file-icons/folder-private.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-private.svg rename to packages/desktop/src/assets/file-icons/folder-private.svg diff --git a/packages/app/src/assets/file-icons/folder-project-open.svg b/packages/desktop/src/assets/file-icons/folder-project-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-project-open.svg rename to packages/desktop/src/assets/file-icons/folder-project-open.svg diff --git a/packages/app/src/assets/file-icons/folder-project.svg b/packages/desktop/src/assets/file-icons/folder-project.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-project.svg rename to packages/desktop/src/assets/file-icons/folder-project.svg diff --git a/packages/app/src/assets/file-icons/folder-prompts-open.svg b/packages/desktop/src/assets/file-icons/folder-prompts-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-prompts-open.svg rename to packages/desktop/src/assets/file-icons/folder-prompts-open.svg diff --git a/packages/app/src/assets/file-icons/folder-prompts.svg b/packages/desktop/src/assets/file-icons/folder-prompts.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-prompts.svg rename to packages/desktop/src/assets/file-icons/folder-prompts.svg diff --git a/packages/app/src/assets/file-icons/folder-proto-open.svg b/packages/desktop/src/assets/file-icons/folder-proto-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-proto-open.svg rename to packages/desktop/src/assets/file-icons/folder-proto-open.svg diff --git a/packages/app/src/assets/file-icons/folder-proto.svg b/packages/desktop/src/assets/file-icons/folder-proto.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-proto.svg rename to packages/desktop/src/assets/file-icons/folder-proto.svg diff --git a/packages/app/src/assets/file-icons/folder-public-open.svg b/packages/desktop/src/assets/file-icons/folder-public-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-public-open.svg rename to packages/desktop/src/assets/file-icons/folder-public-open.svg diff --git a/packages/app/src/assets/file-icons/folder-public.svg b/packages/desktop/src/assets/file-icons/folder-public.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-public.svg rename to packages/desktop/src/assets/file-icons/folder-public.svg diff --git a/packages/app/src/assets/file-icons/folder-python-open.svg b/packages/desktop/src/assets/file-icons/folder-python-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-python-open.svg rename to packages/desktop/src/assets/file-icons/folder-python-open.svg diff --git a/packages/app/src/assets/file-icons/folder-python.svg b/packages/desktop/src/assets/file-icons/folder-python.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-python.svg rename to packages/desktop/src/assets/file-icons/folder-python.svg diff --git a/packages/app/src/assets/file-icons/folder-pytorch-open.svg b/packages/desktop/src/assets/file-icons/folder-pytorch-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-pytorch-open.svg rename to packages/desktop/src/assets/file-icons/folder-pytorch-open.svg diff --git a/packages/app/src/assets/file-icons/folder-pytorch.svg b/packages/desktop/src/assets/file-icons/folder-pytorch.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-pytorch.svg rename to packages/desktop/src/assets/file-icons/folder-pytorch.svg diff --git a/packages/app/src/assets/file-icons/folder-quasar-open.svg b/packages/desktop/src/assets/file-icons/folder-quasar-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-quasar-open.svg rename to packages/desktop/src/assets/file-icons/folder-quasar-open.svg diff --git a/packages/app/src/assets/file-icons/folder-quasar.svg b/packages/desktop/src/assets/file-icons/folder-quasar.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-quasar.svg rename to packages/desktop/src/assets/file-icons/folder-quasar.svg diff --git a/packages/app/src/assets/file-icons/folder-queue-open.svg b/packages/desktop/src/assets/file-icons/folder-queue-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-queue-open.svg rename to packages/desktop/src/assets/file-icons/folder-queue-open.svg diff --git a/packages/app/src/assets/file-icons/folder-queue.svg b/packages/desktop/src/assets/file-icons/folder-queue.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-queue.svg rename to packages/desktop/src/assets/file-icons/folder-queue.svg diff --git a/packages/app/src/assets/file-icons/folder-react-components-open.svg b/packages/desktop/src/assets/file-icons/folder-react-components-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-react-components-open.svg rename to packages/desktop/src/assets/file-icons/folder-react-components-open.svg diff --git a/packages/app/src/assets/file-icons/folder-react-components.svg b/packages/desktop/src/assets/file-icons/folder-react-components.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-react-components.svg rename to packages/desktop/src/assets/file-icons/folder-react-components.svg diff --git a/packages/app/src/assets/file-icons/folder-redux-reducer-open.svg b/packages/desktop/src/assets/file-icons/folder-redux-reducer-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-redux-reducer-open.svg rename to packages/desktop/src/assets/file-icons/folder-redux-reducer-open.svg diff --git a/packages/app/src/assets/file-icons/folder-redux-reducer.svg b/packages/desktop/src/assets/file-icons/folder-redux-reducer.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-redux-reducer.svg rename to packages/desktop/src/assets/file-icons/folder-redux-reducer.svg diff --git a/packages/app/src/assets/file-icons/folder-repository-open.svg b/packages/desktop/src/assets/file-icons/folder-repository-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-repository-open.svg rename to packages/desktop/src/assets/file-icons/folder-repository-open.svg diff --git a/packages/app/src/assets/file-icons/folder-repository.svg b/packages/desktop/src/assets/file-icons/folder-repository.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-repository.svg rename to packages/desktop/src/assets/file-icons/folder-repository.svg diff --git a/packages/app/src/assets/file-icons/folder-resolver-open.svg b/packages/desktop/src/assets/file-icons/folder-resolver-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-resolver-open.svg rename to packages/desktop/src/assets/file-icons/folder-resolver-open.svg diff --git a/packages/app/src/assets/file-icons/folder-resolver.svg b/packages/desktop/src/assets/file-icons/folder-resolver.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-resolver.svg rename to packages/desktop/src/assets/file-icons/folder-resolver.svg diff --git a/packages/app/src/assets/file-icons/folder-resource-open.svg b/packages/desktop/src/assets/file-icons/folder-resource-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-resource-open.svg rename to packages/desktop/src/assets/file-icons/folder-resource-open.svg diff --git a/packages/app/src/assets/file-icons/folder-resource.svg b/packages/desktop/src/assets/file-icons/folder-resource.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-resource.svg rename to packages/desktop/src/assets/file-icons/folder-resource.svg diff --git a/packages/app/src/assets/file-icons/folder-review-open.svg b/packages/desktop/src/assets/file-icons/folder-review-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-review-open.svg rename to packages/desktop/src/assets/file-icons/folder-review-open.svg diff --git a/packages/app/src/assets/file-icons/folder-review.svg b/packages/desktop/src/assets/file-icons/folder-review.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-review.svg rename to packages/desktop/src/assets/file-icons/folder-review.svg diff --git a/packages/app/src/assets/file-icons/folder-robot-open.svg b/packages/desktop/src/assets/file-icons/folder-robot-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-robot-open.svg rename to packages/desktop/src/assets/file-icons/folder-robot-open.svg diff --git a/packages/app/src/assets/file-icons/folder-robot.svg b/packages/desktop/src/assets/file-icons/folder-robot.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-robot.svg rename to packages/desktop/src/assets/file-icons/folder-robot.svg diff --git a/packages/app/src/assets/file-icons/folder-routes-open.svg b/packages/desktop/src/assets/file-icons/folder-routes-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-routes-open.svg rename to packages/desktop/src/assets/file-icons/folder-routes-open.svg diff --git a/packages/app/src/assets/file-icons/folder-routes.svg b/packages/desktop/src/assets/file-icons/folder-routes.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-routes.svg rename to packages/desktop/src/assets/file-icons/folder-routes.svg diff --git a/packages/app/src/assets/file-icons/folder-rules-open.svg b/packages/desktop/src/assets/file-icons/folder-rules-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-rules-open.svg rename to packages/desktop/src/assets/file-icons/folder-rules-open.svg diff --git a/packages/app/src/assets/file-icons/folder-rules.svg b/packages/desktop/src/assets/file-icons/folder-rules.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-rules.svg rename to packages/desktop/src/assets/file-icons/folder-rules.svg diff --git a/packages/app/src/assets/file-icons/folder-rust-open.svg b/packages/desktop/src/assets/file-icons/folder-rust-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-rust-open.svg rename to packages/desktop/src/assets/file-icons/folder-rust-open.svg diff --git a/packages/app/src/assets/file-icons/folder-rust.svg b/packages/desktop/src/assets/file-icons/folder-rust.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-rust.svg rename to packages/desktop/src/assets/file-icons/folder-rust.svg diff --git a/packages/app/src/assets/file-icons/folder-sandbox-open.svg b/packages/desktop/src/assets/file-icons/folder-sandbox-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-sandbox-open.svg rename to packages/desktop/src/assets/file-icons/folder-sandbox-open.svg diff --git a/packages/app/src/assets/file-icons/folder-sandbox.svg b/packages/desktop/src/assets/file-icons/folder-sandbox.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-sandbox.svg rename to packages/desktop/src/assets/file-icons/folder-sandbox.svg diff --git a/packages/app/src/assets/file-icons/folder-sass-open.svg b/packages/desktop/src/assets/file-icons/folder-sass-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-sass-open.svg rename to packages/desktop/src/assets/file-icons/folder-sass-open.svg diff --git a/packages/app/src/assets/file-icons/folder-sass.svg b/packages/desktop/src/assets/file-icons/folder-sass.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-sass.svg rename to packages/desktop/src/assets/file-icons/folder-sass.svg diff --git a/packages/app/src/assets/file-icons/folder-scala-open.svg b/packages/desktop/src/assets/file-icons/folder-scala-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-scala-open.svg rename to packages/desktop/src/assets/file-icons/folder-scala-open.svg diff --git a/packages/app/src/assets/file-icons/folder-scala.svg b/packages/desktop/src/assets/file-icons/folder-scala.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-scala.svg rename to packages/desktop/src/assets/file-icons/folder-scala.svg diff --git a/packages/app/src/assets/file-icons/folder-scons-open.svg b/packages/desktop/src/assets/file-icons/folder-scons-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-scons-open.svg rename to packages/desktop/src/assets/file-icons/folder-scons-open.svg diff --git a/packages/app/src/assets/file-icons/folder-scons.svg b/packages/desktop/src/assets/file-icons/folder-scons.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-scons.svg rename to packages/desktop/src/assets/file-icons/folder-scons.svg diff --git a/packages/app/src/assets/file-icons/folder-scripts-open.svg b/packages/desktop/src/assets/file-icons/folder-scripts-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-scripts-open.svg rename to packages/desktop/src/assets/file-icons/folder-scripts-open.svg diff --git a/packages/app/src/assets/file-icons/folder-scripts.svg b/packages/desktop/src/assets/file-icons/folder-scripts.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-scripts.svg rename to packages/desktop/src/assets/file-icons/folder-scripts.svg diff --git a/packages/app/src/assets/file-icons/folder-secure-open.svg b/packages/desktop/src/assets/file-icons/folder-secure-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-secure-open.svg rename to packages/desktop/src/assets/file-icons/folder-secure-open.svg diff --git a/packages/app/src/assets/file-icons/folder-secure.svg b/packages/desktop/src/assets/file-icons/folder-secure.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-secure.svg rename to packages/desktop/src/assets/file-icons/folder-secure.svg diff --git a/packages/app/src/assets/file-icons/folder-seeders-open.svg b/packages/desktop/src/assets/file-icons/folder-seeders-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-seeders-open.svg rename to packages/desktop/src/assets/file-icons/folder-seeders-open.svg diff --git a/packages/app/src/assets/file-icons/folder-seeders.svg b/packages/desktop/src/assets/file-icons/folder-seeders.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-seeders.svg rename to packages/desktop/src/assets/file-icons/folder-seeders.svg diff --git a/packages/app/src/assets/file-icons/folder-server-open.svg b/packages/desktop/src/assets/file-icons/folder-server-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-server-open.svg rename to packages/desktop/src/assets/file-icons/folder-server-open.svg diff --git a/packages/app/src/assets/file-icons/folder-server.svg b/packages/desktop/src/assets/file-icons/folder-server.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-server.svg rename to packages/desktop/src/assets/file-icons/folder-server.svg diff --git a/packages/app/src/assets/file-icons/folder-serverless-open.svg b/packages/desktop/src/assets/file-icons/folder-serverless-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-serverless-open.svg rename to packages/desktop/src/assets/file-icons/folder-serverless-open.svg diff --git a/packages/app/src/assets/file-icons/folder-serverless.svg b/packages/desktop/src/assets/file-icons/folder-serverless.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-serverless.svg rename to packages/desktop/src/assets/file-icons/folder-serverless.svg diff --git a/packages/app/src/assets/file-icons/folder-shader-open.svg b/packages/desktop/src/assets/file-icons/folder-shader-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-shader-open.svg rename to packages/desktop/src/assets/file-icons/folder-shader-open.svg diff --git a/packages/app/src/assets/file-icons/folder-shader.svg b/packages/desktop/src/assets/file-icons/folder-shader.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-shader.svg rename to packages/desktop/src/assets/file-icons/folder-shader.svg diff --git a/packages/app/src/assets/file-icons/folder-shared-open.svg b/packages/desktop/src/assets/file-icons/folder-shared-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-shared-open.svg rename to packages/desktop/src/assets/file-icons/folder-shared-open.svg diff --git a/packages/app/src/assets/file-icons/folder-shared.svg b/packages/desktop/src/assets/file-icons/folder-shared.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-shared.svg rename to packages/desktop/src/assets/file-icons/folder-shared.svg diff --git a/packages/app/src/assets/file-icons/folder-snapcraft-open.svg b/packages/desktop/src/assets/file-icons/folder-snapcraft-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-snapcraft-open.svg rename to packages/desktop/src/assets/file-icons/folder-snapcraft-open.svg diff --git a/packages/app/src/assets/file-icons/folder-snapcraft.svg b/packages/desktop/src/assets/file-icons/folder-snapcraft.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-snapcraft.svg rename to packages/desktop/src/assets/file-icons/folder-snapcraft.svg diff --git a/packages/app/src/assets/file-icons/folder-snippet-open.svg b/packages/desktop/src/assets/file-icons/folder-snippet-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-snippet-open.svg rename to packages/desktop/src/assets/file-icons/folder-snippet-open.svg diff --git a/packages/app/src/assets/file-icons/folder-snippet.svg b/packages/desktop/src/assets/file-icons/folder-snippet.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-snippet.svg rename to packages/desktop/src/assets/file-icons/folder-snippet.svg diff --git a/packages/app/src/assets/file-icons/folder-src-open.svg b/packages/desktop/src/assets/file-icons/folder-src-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-src-open.svg rename to packages/desktop/src/assets/file-icons/folder-src-open.svg diff --git a/packages/app/src/assets/file-icons/folder-src-tauri-open.svg b/packages/desktop/src/assets/file-icons/folder-src-tauri-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-src-tauri-open.svg rename to packages/desktop/src/assets/file-icons/folder-src-tauri-open.svg diff --git a/packages/app/src/assets/file-icons/folder-src-tauri.svg b/packages/desktop/src/assets/file-icons/folder-src-tauri.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-src-tauri.svg rename to packages/desktop/src/assets/file-icons/folder-src-tauri.svg diff --git a/packages/app/src/assets/file-icons/folder-src.svg b/packages/desktop/src/assets/file-icons/folder-src.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-src.svg rename to packages/desktop/src/assets/file-icons/folder-src.svg diff --git a/packages/app/src/assets/file-icons/folder-stack-open.svg b/packages/desktop/src/assets/file-icons/folder-stack-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-stack-open.svg rename to packages/desktop/src/assets/file-icons/folder-stack-open.svg diff --git a/packages/app/src/assets/file-icons/folder-stack.svg b/packages/desktop/src/assets/file-icons/folder-stack.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-stack.svg rename to packages/desktop/src/assets/file-icons/folder-stack.svg diff --git a/packages/app/src/assets/file-icons/folder-stencil-open.svg b/packages/desktop/src/assets/file-icons/folder-stencil-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-stencil-open.svg rename to packages/desktop/src/assets/file-icons/folder-stencil-open.svg diff --git a/packages/app/src/assets/file-icons/folder-stencil.svg b/packages/desktop/src/assets/file-icons/folder-stencil.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-stencil.svg rename to packages/desktop/src/assets/file-icons/folder-stencil.svg diff --git a/packages/app/src/assets/file-icons/folder-store-open.svg b/packages/desktop/src/assets/file-icons/folder-store-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-store-open.svg rename to packages/desktop/src/assets/file-icons/folder-store-open.svg diff --git a/packages/app/src/assets/file-icons/folder-store.svg b/packages/desktop/src/assets/file-icons/folder-store.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-store.svg rename to packages/desktop/src/assets/file-icons/folder-store.svg diff --git a/packages/app/src/assets/file-icons/folder-storybook-open.svg b/packages/desktop/src/assets/file-icons/folder-storybook-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-storybook-open.svg rename to packages/desktop/src/assets/file-icons/folder-storybook-open.svg diff --git a/packages/app/src/assets/file-icons/folder-storybook.svg b/packages/desktop/src/assets/file-icons/folder-storybook.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-storybook.svg rename to packages/desktop/src/assets/file-icons/folder-storybook.svg diff --git a/packages/app/src/assets/file-icons/folder-stylus-open.svg b/packages/desktop/src/assets/file-icons/folder-stylus-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-stylus-open.svg rename to packages/desktop/src/assets/file-icons/folder-stylus-open.svg diff --git a/packages/app/src/assets/file-icons/folder-stylus.svg b/packages/desktop/src/assets/file-icons/folder-stylus.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-stylus.svg rename to packages/desktop/src/assets/file-icons/folder-stylus.svg diff --git a/packages/app/src/assets/file-icons/folder-sublime-open.svg b/packages/desktop/src/assets/file-icons/folder-sublime-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-sublime-open.svg rename to packages/desktop/src/assets/file-icons/folder-sublime-open.svg diff --git a/packages/app/src/assets/file-icons/folder-sublime.svg b/packages/desktop/src/assets/file-icons/folder-sublime.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-sublime.svg rename to packages/desktop/src/assets/file-icons/folder-sublime.svg diff --git a/packages/app/src/assets/file-icons/folder-supabase-open.svg b/packages/desktop/src/assets/file-icons/folder-supabase-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-supabase-open.svg rename to packages/desktop/src/assets/file-icons/folder-supabase-open.svg diff --git a/packages/app/src/assets/file-icons/folder-supabase.svg b/packages/desktop/src/assets/file-icons/folder-supabase.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-supabase.svg rename to packages/desktop/src/assets/file-icons/folder-supabase.svg diff --git a/packages/app/src/assets/file-icons/folder-svelte-open.svg b/packages/desktop/src/assets/file-icons/folder-svelte-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-svelte-open.svg rename to packages/desktop/src/assets/file-icons/folder-svelte-open.svg diff --git a/packages/app/src/assets/file-icons/folder-svelte.svg b/packages/desktop/src/assets/file-icons/folder-svelte.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-svelte.svg rename to packages/desktop/src/assets/file-icons/folder-svelte.svg diff --git a/packages/app/src/assets/file-icons/folder-svg-open.svg b/packages/desktop/src/assets/file-icons/folder-svg-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-svg-open.svg rename to packages/desktop/src/assets/file-icons/folder-svg-open.svg diff --git a/packages/app/src/assets/file-icons/folder-svg.svg b/packages/desktop/src/assets/file-icons/folder-svg.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-svg.svg rename to packages/desktop/src/assets/file-icons/folder-svg.svg diff --git a/packages/app/src/assets/file-icons/folder-syntax-open.svg b/packages/desktop/src/assets/file-icons/folder-syntax-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-syntax-open.svg rename to packages/desktop/src/assets/file-icons/folder-syntax-open.svg diff --git a/packages/app/src/assets/file-icons/folder-syntax.svg b/packages/desktop/src/assets/file-icons/folder-syntax.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-syntax.svg rename to packages/desktop/src/assets/file-icons/folder-syntax.svg diff --git a/packages/app/src/assets/file-icons/folder-target-open.svg b/packages/desktop/src/assets/file-icons/folder-target-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-target-open.svg rename to packages/desktop/src/assets/file-icons/folder-target-open.svg diff --git a/packages/app/src/assets/file-icons/folder-target.svg b/packages/desktop/src/assets/file-icons/folder-target.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-target.svg rename to packages/desktop/src/assets/file-icons/folder-target.svg diff --git a/packages/app/src/assets/file-icons/folder-taskfile-open.svg b/packages/desktop/src/assets/file-icons/folder-taskfile-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-taskfile-open.svg rename to packages/desktop/src/assets/file-icons/folder-taskfile-open.svg diff --git a/packages/app/src/assets/file-icons/folder-taskfile.svg b/packages/desktop/src/assets/file-icons/folder-taskfile.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-taskfile.svg rename to packages/desktop/src/assets/file-icons/folder-taskfile.svg diff --git a/packages/app/src/assets/file-icons/folder-tasks-open.svg b/packages/desktop/src/assets/file-icons/folder-tasks-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-tasks-open.svg rename to packages/desktop/src/assets/file-icons/folder-tasks-open.svg diff --git a/packages/app/src/assets/file-icons/folder-tasks.svg b/packages/desktop/src/assets/file-icons/folder-tasks.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-tasks.svg rename to packages/desktop/src/assets/file-icons/folder-tasks.svg diff --git a/packages/app/src/assets/file-icons/folder-television-open.svg b/packages/desktop/src/assets/file-icons/folder-television-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-television-open.svg rename to packages/desktop/src/assets/file-icons/folder-television-open.svg diff --git a/packages/app/src/assets/file-icons/folder-television.svg b/packages/desktop/src/assets/file-icons/folder-television.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-television.svg rename to packages/desktop/src/assets/file-icons/folder-television.svg diff --git a/packages/app/src/assets/file-icons/folder-temp-open.svg b/packages/desktop/src/assets/file-icons/folder-temp-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-temp-open.svg rename to packages/desktop/src/assets/file-icons/folder-temp-open.svg diff --git a/packages/app/src/assets/file-icons/folder-temp.svg b/packages/desktop/src/assets/file-icons/folder-temp.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-temp.svg rename to packages/desktop/src/assets/file-icons/folder-temp.svg diff --git a/packages/app/src/assets/file-icons/folder-template-open.svg b/packages/desktop/src/assets/file-icons/folder-template-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-template-open.svg rename to packages/desktop/src/assets/file-icons/folder-template-open.svg diff --git a/packages/app/src/assets/file-icons/folder-template.svg b/packages/desktop/src/assets/file-icons/folder-template.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-template.svg rename to packages/desktop/src/assets/file-icons/folder-template.svg diff --git a/packages/app/src/assets/file-icons/folder-terraform-open.svg b/packages/desktop/src/assets/file-icons/folder-terraform-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-terraform-open.svg rename to packages/desktop/src/assets/file-icons/folder-terraform-open.svg diff --git a/packages/app/src/assets/file-icons/folder-terraform.svg b/packages/desktop/src/assets/file-icons/folder-terraform.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-terraform.svg rename to packages/desktop/src/assets/file-icons/folder-terraform.svg diff --git a/packages/app/src/assets/file-icons/folder-test-open.svg b/packages/desktop/src/assets/file-icons/folder-test-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-test-open.svg rename to packages/desktop/src/assets/file-icons/folder-test-open.svg diff --git a/packages/app/src/assets/file-icons/folder-test.svg b/packages/desktop/src/assets/file-icons/folder-test.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-test.svg rename to packages/desktop/src/assets/file-icons/folder-test.svg diff --git a/packages/app/src/assets/file-icons/folder-theme-open.svg b/packages/desktop/src/assets/file-icons/folder-theme-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-theme-open.svg rename to packages/desktop/src/assets/file-icons/folder-theme-open.svg diff --git a/packages/app/src/assets/file-icons/folder-theme.svg b/packages/desktop/src/assets/file-icons/folder-theme.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-theme.svg rename to packages/desktop/src/assets/file-icons/folder-theme.svg diff --git a/packages/app/src/assets/file-icons/folder-tools-open.svg b/packages/desktop/src/assets/file-icons/folder-tools-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-tools-open.svg rename to packages/desktop/src/assets/file-icons/folder-tools-open.svg diff --git a/packages/app/src/assets/file-icons/folder-tools.svg b/packages/desktop/src/assets/file-icons/folder-tools.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-tools.svg rename to packages/desktop/src/assets/file-icons/folder-tools.svg diff --git a/packages/app/src/assets/file-icons/folder-trash-open.svg b/packages/desktop/src/assets/file-icons/folder-trash-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-trash-open.svg rename to packages/desktop/src/assets/file-icons/folder-trash-open.svg diff --git a/packages/app/src/assets/file-icons/folder-trash.svg b/packages/desktop/src/assets/file-icons/folder-trash.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-trash.svg rename to packages/desktop/src/assets/file-icons/folder-trash.svg diff --git a/packages/app/src/assets/file-icons/folder-trigger-open.svg b/packages/desktop/src/assets/file-icons/folder-trigger-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-trigger-open.svg rename to packages/desktop/src/assets/file-icons/folder-trigger-open.svg diff --git a/packages/app/src/assets/file-icons/folder-trigger.svg b/packages/desktop/src/assets/file-icons/folder-trigger.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-trigger.svg rename to packages/desktop/src/assets/file-icons/folder-trigger.svg diff --git a/packages/app/src/assets/file-icons/folder-turborepo-open.svg b/packages/desktop/src/assets/file-icons/folder-turborepo-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-turborepo-open.svg rename to packages/desktop/src/assets/file-icons/folder-turborepo-open.svg diff --git a/packages/app/src/assets/file-icons/folder-turborepo.svg b/packages/desktop/src/assets/file-icons/folder-turborepo.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-turborepo.svg rename to packages/desktop/src/assets/file-icons/folder-turborepo.svg diff --git a/packages/app/src/assets/file-icons/folder-typescript-open.svg b/packages/desktop/src/assets/file-icons/folder-typescript-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-typescript-open.svg rename to packages/desktop/src/assets/file-icons/folder-typescript-open.svg diff --git a/packages/app/src/assets/file-icons/folder-typescript.svg b/packages/desktop/src/assets/file-icons/folder-typescript.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-typescript.svg rename to packages/desktop/src/assets/file-icons/folder-typescript.svg diff --git a/packages/app/src/assets/file-icons/folder-ui-open.svg b/packages/desktop/src/assets/file-icons/folder-ui-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-ui-open.svg rename to packages/desktop/src/assets/file-icons/folder-ui-open.svg diff --git a/packages/app/src/assets/file-icons/folder-ui.svg b/packages/desktop/src/assets/file-icons/folder-ui.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-ui.svg rename to packages/desktop/src/assets/file-icons/folder-ui.svg diff --git a/packages/app/src/assets/file-icons/folder-unity-open.svg b/packages/desktop/src/assets/file-icons/folder-unity-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-unity-open.svg rename to packages/desktop/src/assets/file-icons/folder-unity-open.svg diff --git a/packages/app/src/assets/file-icons/folder-unity.svg b/packages/desktop/src/assets/file-icons/folder-unity.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-unity.svg rename to packages/desktop/src/assets/file-icons/folder-unity.svg diff --git a/packages/app/src/assets/file-icons/folder-update-open.svg b/packages/desktop/src/assets/file-icons/folder-update-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-update-open.svg rename to packages/desktop/src/assets/file-icons/folder-update-open.svg diff --git a/packages/app/src/assets/file-icons/folder-update.svg b/packages/desktop/src/assets/file-icons/folder-update.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-update.svg rename to packages/desktop/src/assets/file-icons/folder-update.svg diff --git a/packages/app/src/assets/file-icons/folder-upload-open.svg b/packages/desktop/src/assets/file-icons/folder-upload-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-upload-open.svg rename to packages/desktop/src/assets/file-icons/folder-upload-open.svg diff --git a/packages/app/src/assets/file-icons/folder-upload.svg b/packages/desktop/src/assets/file-icons/folder-upload.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-upload.svg rename to packages/desktop/src/assets/file-icons/folder-upload.svg diff --git a/packages/app/src/assets/file-icons/folder-utils-open.svg b/packages/desktop/src/assets/file-icons/folder-utils-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-utils-open.svg rename to packages/desktop/src/assets/file-icons/folder-utils-open.svg diff --git a/packages/app/src/assets/file-icons/folder-utils.svg b/packages/desktop/src/assets/file-icons/folder-utils.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-utils.svg rename to packages/desktop/src/assets/file-icons/folder-utils.svg diff --git a/packages/app/src/assets/file-icons/folder-vercel-open.svg b/packages/desktop/src/assets/file-icons/folder-vercel-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-vercel-open.svg rename to packages/desktop/src/assets/file-icons/folder-vercel-open.svg diff --git a/packages/app/src/assets/file-icons/folder-vercel.svg b/packages/desktop/src/assets/file-icons/folder-vercel.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-vercel.svg rename to packages/desktop/src/assets/file-icons/folder-vercel.svg diff --git a/packages/app/src/assets/file-icons/folder-verdaccio-open.svg b/packages/desktop/src/assets/file-icons/folder-verdaccio-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-verdaccio-open.svg rename to packages/desktop/src/assets/file-icons/folder-verdaccio-open.svg diff --git a/packages/app/src/assets/file-icons/folder-verdaccio.svg b/packages/desktop/src/assets/file-icons/folder-verdaccio.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-verdaccio.svg rename to packages/desktop/src/assets/file-icons/folder-verdaccio.svg diff --git a/packages/app/src/assets/file-icons/folder-video-open.svg b/packages/desktop/src/assets/file-icons/folder-video-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-video-open.svg rename to packages/desktop/src/assets/file-icons/folder-video-open.svg diff --git a/packages/app/src/assets/file-icons/folder-video.svg b/packages/desktop/src/assets/file-icons/folder-video.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-video.svg rename to packages/desktop/src/assets/file-icons/folder-video.svg diff --git a/packages/app/src/assets/file-icons/folder-views-open.svg b/packages/desktop/src/assets/file-icons/folder-views-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-views-open.svg rename to packages/desktop/src/assets/file-icons/folder-views-open.svg diff --git a/packages/app/src/assets/file-icons/folder-views.svg b/packages/desktop/src/assets/file-icons/folder-views.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-views.svg rename to packages/desktop/src/assets/file-icons/folder-views.svg diff --git a/packages/app/src/assets/file-icons/folder-vm-open.svg b/packages/desktop/src/assets/file-icons/folder-vm-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-vm-open.svg rename to packages/desktop/src/assets/file-icons/folder-vm-open.svg diff --git a/packages/app/src/assets/file-icons/folder-vm.svg b/packages/desktop/src/assets/file-icons/folder-vm.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-vm.svg rename to packages/desktop/src/assets/file-icons/folder-vm.svg diff --git a/packages/app/src/assets/file-icons/folder-vscode-open.svg b/packages/desktop/src/assets/file-icons/folder-vscode-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-vscode-open.svg rename to packages/desktop/src/assets/file-icons/folder-vscode-open.svg diff --git a/packages/app/src/assets/file-icons/folder-vscode.svg b/packages/desktop/src/assets/file-icons/folder-vscode.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-vscode.svg rename to packages/desktop/src/assets/file-icons/folder-vscode.svg diff --git a/packages/app/src/assets/file-icons/folder-vue-directives-open.svg b/packages/desktop/src/assets/file-icons/folder-vue-directives-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-vue-directives-open.svg rename to packages/desktop/src/assets/file-icons/folder-vue-directives-open.svg diff --git a/packages/app/src/assets/file-icons/folder-vue-directives.svg b/packages/desktop/src/assets/file-icons/folder-vue-directives.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-vue-directives.svg rename to packages/desktop/src/assets/file-icons/folder-vue-directives.svg diff --git a/packages/app/src/assets/file-icons/folder-vue-open.svg b/packages/desktop/src/assets/file-icons/folder-vue-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-vue-open.svg rename to packages/desktop/src/assets/file-icons/folder-vue-open.svg diff --git a/packages/app/src/assets/file-icons/folder-vue.svg b/packages/desktop/src/assets/file-icons/folder-vue.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-vue.svg rename to packages/desktop/src/assets/file-icons/folder-vue.svg diff --git a/packages/app/src/assets/file-icons/folder-vuepress-open.svg b/packages/desktop/src/assets/file-icons/folder-vuepress-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-vuepress-open.svg rename to packages/desktop/src/assets/file-icons/folder-vuepress-open.svg diff --git a/packages/app/src/assets/file-icons/folder-vuepress.svg b/packages/desktop/src/assets/file-icons/folder-vuepress.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-vuepress.svg rename to packages/desktop/src/assets/file-icons/folder-vuepress.svg diff --git a/packages/app/src/assets/file-icons/folder-vuex-store-open.svg b/packages/desktop/src/assets/file-icons/folder-vuex-store-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-vuex-store-open.svg rename to packages/desktop/src/assets/file-icons/folder-vuex-store-open.svg diff --git a/packages/app/src/assets/file-icons/folder-vuex-store.svg b/packages/desktop/src/assets/file-icons/folder-vuex-store.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-vuex-store.svg rename to packages/desktop/src/assets/file-icons/folder-vuex-store.svg diff --git a/packages/app/src/assets/file-icons/folder-wakatime-open.svg b/packages/desktop/src/assets/file-icons/folder-wakatime-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-wakatime-open.svg rename to packages/desktop/src/assets/file-icons/folder-wakatime-open.svg diff --git a/packages/app/src/assets/file-icons/folder-wakatime.svg b/packages/desktop/src/assets/file-icons/folder-wakatime.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-wakatime.svg rename to packages/desktop/src/assets/file-icons/folder-wakatime.svg diff --git a/packages/app/src/assets/file-icons/folder-webpack-open.svg b/packages/desktop/src/assets/file-icons/folder-webpack-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-webpack-open.svg rename to packages/desktop/src/assets/file-icons/folder-webpack-open.svg diff --git a/packages/app/src/assets/file-icons/folder-webpack.svg b/packages/desktop/src/assets/file-icons/folder-webpack.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-webpack.svg rename to packages/desktop/src/assets/file-icons/folder-webpack.svg diff --git a/packages/app/src/assets/file-icons/folder-windows-open.svg b/packages/desktop/src/assets/file-icons/folder-windows-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-windows-open.svg rename to packages/desktop/src/assets/file-icons/folder-windows-open.svg diff --git a/packages/app/src/assets/file-icons/folder-windows.svg b/packages/desktop/src/assets/file-icons/folder-windows.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-windows.svg rename to packages/desktop/src/assets/file-icons/folder-windows.svg diff --git a/packages/app/src/assets/file-icons/folder-wordpress-open.svg b/packages/desktop/src/assets/file-icons/folder-wordpress-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-wordpress-open.svg rename to packages/desktop/src/assets/file-icons/folder-wordpress-open.svg diff --git a/packages/app/src/assets/file-icons/folder-wordpress.svg b/packages/desktop/src/assets/file-icons/folder-wordpress.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-wordpress.svg rename to packages/desktop/src/assets/file-icons/folder-wordpress.svg diff --git a/packages/app/src/assets/file-icons/folder-yarn-open.svg b/packages/desktop/src/assets/file-icons/folder-yarn-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-yarn-open.svg rename to packages/desktop/src/assets/file-icons/folder-yarn-open.svg diff --git a/packages/app/src/assets/file-icons/folder-yarn.svg b/packages/desktop/src/assets/file-icons/folder-yarn.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-yarn.svg rename to packages/desktop/src/assets/file-icons/folder-yarn.svg diff --git a/packages/app/src/assets/file-icons/folder-zeabur-open.svg b/packages/desktop/src/assets/file-icons/folder-zeabur-open.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-zeabur-open.svg rename to packages/desktop/src/assets/file-icons/folder-zeabur-open.svg diff --git a/packages/app/src/assets/file-icons/folder-zeabur.svg b/packages/desktop/src/assets/file-icons/folder-zeabur.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder-zeabur.svg rename to packages/desktop/src/assets/file-icons/folder-zeabur.svg diff --git a/packages/app/src/assets/file-icons/folder.svg b/packages/desktop/src/assets/file-icons/folder.svg similarity index 100% rename from packages/app/src/assets/file-icons/folder.svg rename to packages/desktop/src/assets/file-icons/folder.svg diff --git a/packages/app/src/assets/file-icons/font.svg b/packages/desktop/src/assets/file-icons/font.svg similarity index 100% rename from packages/app/src/assets/file-icons/font.svg rename to packages/desktop/src/assets/file-icons/font.svg diff --git a/packages/app/src/assets/file-icons/forth.svg b/packages/desktop/src/assets/file-icons/forth.svg similarity index 100% rename from packages/app/src/assets/file-icons/forth.svg rename to packages/desktop/src/assets/file-icons/forth.svg diff --git a/packages/app/src/assets/file-icons/fortran.svg b/packages/desktop/src/assets/file-icons/fortran.svg similarity index 100% rename from packages/app/src/assets/file-icons/fortran.svg rename to packages/desktop/src/assets/file-icons/fortran.svg diff --git a/packages/app/src/assets/file-icons/foxpro.svg b/packages/desktop/src/assets/file-icons/foxpro.svg similarity index 100% rename from packages/app/src/assets/file-icons/foxpro.svg rename to packages/desktop/src/assets/file-icons/foxpro.svg diff --git a/packages/app/src/assets/file-icons/freemarker.svg b/packages/desktop/src/assets/file-icons/freemarker.svg similarity index 100% rename from packages/app/src/assets/file-icons/freemarker.svg rename to packages/desktop/src/assets/file-icons/freemarker.svg diff --git a/packages/app/src/assets/file-icons/fsharp.svg b/packages/desktop/src/assets/file-icons/fsharp.svg similarity index 100% rename from packages/app/src/assets/file-icons/fsharp.svg rename to packages/desktop/src/assets/file-icons/fsharp.svg diff --git a/packages/app/src/assets/file-icons/fusebox.svg b/packages/desktop/src/assets/file-icons/fusebox.svg similarity index 100% rename from packages/app/src/assets/file-icons/fusebox.svg rename to packages/desktop/src/assets/file-icons/fusebox.svg diff --git a/packages/app/src/assets/file-icons/gamemaker.svg b/packages/desktop/src/assets/file-icons/gamemaker.svg similarity index 100% rename from packages/app/src/assets/file-icons/gamemaker.svg rename to packages/desktop/src/assets/file-icons/gamemaker.svg diff --git a/packages/app/src/assets/file-icons/garden.svg b/packages/desktop/src/assets/file-icons/garden.svg similarity index 100% rename from packages/app/src/assets/file-icons/garden.svg rename to packages/desktop/src/assets/file-icons/garden.svg diff --git a/packages/app/src/assets/file-icons/gatsby.svg b/packages/desktop/src/assets/file-icons/gatsby.svg similarity index 100% rename from packages/app/src/assets/file-icons/gatsby.svg rename to packages/desktop/src/assets/file-icons/gatsby.svg diff --git a/packages/app/src/assets/file-icons/gcp.svg b/packages/desktop/src/assets/file-icons/gcp.svg similarity index 100% rename from packages/app/src/assets/file-icons/gcp.svg rename to packages/desktop/src/assets/file-icons/gcp.svg diff --git a/packages/app/src/assets/file-icons/gemfile.svg b/packages/desktop/src/assets/file-icons/gemfile.svg similarity index 100% rename from packages/app/src/assets/file-icons/gemfile.svg rename to packages/desktop/src/assets/file-icons/gemfile.svg diff --git a/packages/app/src/assets/file-icons/gemini-ai.svg b/packages/desktop/src/assets/file-icons/gemini-ai.svg similarity index 100% rename from packages/app/src/assets/file-icons/gemini-ai.svg rename to packages/desktop/src/assets/file-icons/gemini-ai.svg diff --git a/packages/app/src/assets/file-icons/gemini.svg b/packages/desktop/src/assets/file-icons/gemini.svg similarity index 100% rename from packages/app/src/assets/file-icons/gemini.svg rename to packages/desktop/src/assets/file-icons/gemini.svg diff --git a/packages/app/src/assets/file-icons/git.svg b/packages/desktop/src/assets/file-icons/git.svg similarity index 100% rename from packages/app/src/assets/file-icons/git.svg rename to packages/desktop/src/assets/file-icons/git.svg diff --git a/packages/app/src/assets/file-icons/github-actions-workflow.svg b/packages/desktop/src/assets/file-icons/github-actions-workflow.svg similarity index 100% rename from packages/app/src/assets/file-icons/github-actions-workflow.svg rename to packages/desktop/src/assets/file-icons/github-actions-workflow.svg diff --git a/packages/app/src/assets/file-icons/github-sponsors.svg b/packages/desktop/src/assets/file-icons/github-sponsors.svg similarity index 100% rename from packages/app/src/assets/file-icons/github-sponsors.svg rename to packages/desktop/src/assets/file-icons/github-sponsors.svg diff --git a/packages/app/src/assets/file-icons/gitlab.svg b/packages/desktop/src/assets/file-icons/gitlab.svg similarity index 100% rename from packages/app/src/assets/file-icons/gitlab.svg rename to packages/desktop/src/assets/file-icons/gitlab.svg diff --git a/packages/app/src/assets/file-icons/gitpod.svg b/packages/desktop/src/assets/file-icons/gitpod.svg similarity index 100% rename from packages/app/src/assets/file-icons/gitpod.svg rename to packages/desktop/src/assets/file-icons/gitpod.svg diff --git a/packages/app/src/assets/file-icons/gleam.svg b/packages/desktop/src/assets/file-icons/gleam.svg similarity index 100% rename from packages/app/src/assets/file-icons/gleam.svg rename to packages/desktop/src/assets/file-icons/gleam.svg diff --git a/packages/app/src/assets/file-icons/gnuplot.svg b/packages/desktop/src/assets/file-icons/gnuplot.svg similarity index 100% rename from packages/app/src/assets/file-icons/gnuplot.svg rename to packages/desktop/src/assets/file-icons/gnuplot.svg diff --git a/packages/app/src/assets/file-icons/go-mod.svg b/packages/desktop/src/assets/file-icons/go-mod.svg similarity index 100% rename from packages/app/src/assets/file-icons/go-mod.svg rename to packages/desktop/src/assets/file-icons/go-mod.svg diff --git a/packages/app/src/assets/file-icons/go.svg b/packages/desktop/src/assets/file-icons/go.svg similarity index 100% rename from packages/app/src/assets/file-icons/go.svg rename to packages/desktop/src/assets/file-icons/go.svg diff --git a/packages/app/src/assets/file-icons/go_gopher.svg b/packages/desktop/src/assets/file-icons/go_gopher.svg similarity index 100% rename from packages/app/src/assets/file-icons/go_gopher.svg rename to packages/desktop/src/assets/file-icons/go_gopher.svg diff --git a/packages/app/src/assets/file-icons/godot-assets.svg b/packages/desktop/src/assets/file-icons/godot-assets.svg similarity index 100% rename from packages/app/src/assets/file-icons/godot-assets.svg rename to packages/desktop/src/assets/file-icons/godot-assets.svg diff --git a/packages/app/src/assets/file-icons/godot.svg b/packages/desktop/src/assets/file-icons/godot.svg similarity index 100% rename from packages/app/src/assets/file-icons/godot.svg rename to packages/desktop/src/assets/file-icons/godot.svg diff --git a/packages/app/src/assets/file-icons/gradle.svg b/packages/desktop/src/assets/file-icons/gradle.svg similarity index 100% rename from packages/app/src/assets/file-icons/gradle.svg rename to packages/desktop/src/assets/file-icons/gradle.svg diff --git a/packages/app/src/assets/file-icons/grafana-alloy.svg b/packages/desktop/src/assets/file-icons/grafana-alloy.svg similarity index 100% rename from packages/app/src/assets/file-icons/grafana-alloy.svg rename to packages/desktop/src/assets/file-icons/grafana-alloy.svg diff --git a/packages/app/src/assets/file-icons/grain.svg b/packages/desktop/src/assets/file-icons/grain.svg similarity index 100% rename from packages/app/src/assets/file-icons/grain.svg rename to packages/desktop/src/assets/file-icons/grain.svg diff --git a/packages/app/src/assets/file-icons/graphcool.svg b/packages/desktop/src/assets/file-icons/graphcool.svg similarity index 100% rename from packages/app/src/assets/file-icons/graphcool.svg rename to packages/desktop/src/assets/file-icons/graphcool.svg diff --git a/packages/app/src/assets/file-icons/graphql.svg b/packages/desktop/src/assets/file-icons/graphql.svg similarity index 100% rename from packages/app/src/assets/file-icons/graphql.svg rename to packages/desktop/src/assets/file-icons/graphql.svg diff --git a/packages/app/src/assets/file-icons/gridsome.svg b/packages/desktop/src/assets/file-icons/gridsome.svg similarity index 100% rename from packages/app/src/assets/file-icons/gridsome.svg rename to packages/desktop/src/assets/file-icons/gridsome.svg diff --git a/packages/app/src/assets/file-icons/groovy.svg b/packages/desktop/src/assets/file-icons/groovy.svg similarity index 100% rename from packages/app/src/assets/file-icons/groovy.svg rename to packages/desktop/src/assets/file-icons/groovy.svg diff --git a/packages/app/src/assets/file-icons/grunt.svg b/packages/desktop/src/assets/file-icons/grunt.svg similarity index 100% rename from packages/app/src/assets/file-icons/grunt.svg rename to packages/desktop/src/assets/file-icons/grunt.svg diff --git a/packages/app/src/assets/file-icons/gulp.svg b/packages/desktop/src/assets/file-icons/gulp.svg similarity index 100% rename from packages/app/src/assets/file-icons/gulp.svg rename to packages/desktop/src/assets/file-icons/gulp.svg diff --git a/packages/app/src/assets/file-icons/h.svg b/packages/desktop/src/assets/file-icons/h.svg similarity index 100% rename from packages/app/src/assets/file-icons/h.svg rename to packages/desktop/src/assets/file-icons/h.svg diff --git a/packages/app/src/assets/file-icons/hack.svg b/packages/desktop/src/assets/file-icons/hack.svg similarity index 100% rename from packages/app/src/assets/file-icons/hack.svg rename to packages/desktop/src/assets/file-icons/hack.svg diff --git a/packages/app/src/assets/file-icons/hadolint.svg b/packages/desktop/src/assets/file-icons/hadolint.svg similarity index 100% rename from packages/app/src/assets/file-icons/hadolint.svg rename to packages/desktop/src/assets/file-icons/hadolint.svg diff --git a/packages/app/src/assets/file-icons/haml.svg b/packages/desktop/src/assets/file-icons/haml.svg similarity index 100% rename from packages/app/src/assets/file-icons/haml.svg rename to packages/desktop/src/assets/file-icons/haml.svg diff --git a/packages/app/src/assets/file-icons/handlebars.svg b/packages/desktop/src/assets/file-icons/handlebars.svg similarity index 100% rename from packages/app/src/assets/file-icons/handlebars.svg rename to packages/desktop/src/assets/file-icons/handlebars.svg diff --git a/packages/app/src/assets/file-icons/hardhat.svg b/packages/desktop/src/assets/file-icons/hardhat.svg similarity index 100% rename from packages/app/src/assets/file-icons/hardhat.svg rename to packages/desktop/src/assets/file-icons/hardhat.svg diff --git a/packages/app/src/assets/file-icons/harmonix.svg b/packages/desktop/src/assets/file-icons/harmonix.svg similarity index 100% rename from packages/app/src/assets/file-icons/harmonix.svg rename to packages/desktop/src/assets/file-icons/harmonix.svg diff --git a/packages/app/src/assets/file-icons/haskell.svg b/packages/desktop/src/assets/file-icons/haskell.svg similarity index 100% rename from packages/app/src/assets/file-icons/haskell.svg rename to packages/desktop/src/assets/file-icons/haskell.svg diff --git a/packages/app/src/assets/file-icons/haxe.svg b/packages/desktop/src/assets/file-icons/haxe.svg similarity index 100% rename from packages/app/src/assets/file-icons/haxe.svg rename to packages/desktop/src/assets/file-icons/haxe.svg diff --git a/packages/app/src/assets/file-icons/hcl.svg b/packages/desktop/src/assets/file-icons/hcl.svg similarity index 100% rename from packages/app/src/assets/file-icons/hcl.svg rename to packages/desktop/src/assets/file-icons/hcl.svg diff --git a/packages/app/src/assets/file-icons/hcl_light.svg b/packages/desktop/src/assets/file-icons/hcl_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/hcl_light.svg rename to packages/desktop/src/assets/file-icons/hcl_light.svg diff --git a/packages/app/src/assets/file-icons/helm.svg b/packages/desktop/src/assets/file-icons/helm.svg similarity index 100% rename from packages/app/src/assets/file-icons/helm.svg rename to packages/desktop/src/assets/file-icons/helm.svg diff --git a/packages/app/src/assets/file-icons/heroku.svg b/packages/desktop/src/assets/file-icons/heroku.svg similarity index 100% rename from packages/app/src/assets/file-icons/heroku.svg rename to packages/desktop/src/assets/file-icons/heroku.svg diff --git a/packages/app/src/assets/file-icons/hex.svg b/packages/desktop/src/assets/file-icons/hex.svg similarity index 100% rename from packages/app/src/assets/file-icons/hex.svg rename to packages/desktop/src/assets/file-icons/hex.svg diff --git a/packages/app/src/assets/file-icons/histoire.svg b/packages/desktop/src/assets/file-icons/histoire.svg similarity index 100% rename from packages/app/src/assets/file-icons/histoire.svg rename to packages/desktop/src/assets/file-icons/histoire.svg diff --git a/packages/app/src/assets/file-icons/hjson.svg b/packages/desktop/src/assets/file-icons/hjson.svg similarity index 100% rename from packages/app/src/assets/file-icons/hjson.svg rename to packages/desktop/src/assets/file-icons/hjson.svg diff --git a/packages/app/src/assets/file-icons/horusec.svg b/packages/desktop/src/assets/file-icons/horusec.svg similarity index 100% rename from packages/app/src/assets/file-icons/horusec.svg rename to packages/desktop/src/assets/file-icons/horusec.svg diff --git a/packages/app/src/assets/file-icons/hosts.svg b/packages/desktop/src/assets/file-icons/hosts.svg similarity index 100% rename from packages/app/src/assets/file-icons/hosts.svg rename to packages/desktop/src/assets/file-icons/hosts.svg diff --git a/packages/app/src/assets/file-icons/hosts_light.svg b/packages/desktop/src/assets/file-icons/hosts_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/hosts_light.svg rename to packages/desktop/src/assets/file-icons/hosts_light.svg diff --git a/packages/app/src/assets/file-icons/hpp.svg b/packages/desktop/src/assets/file-icons/hpp.svg similarity index 100% rename from packages/app/src/assets/file-icons/hpp.svg rename to packages/desktop/src/assets/file-icons/hpp.svg diff --git a/packages/app/src/assets/file-icons/html.svg b/packages/desktop/src/assets/file-icons/html.svg similarity index 100% rename from packages/app/src/assets/file-icons/html.svg rename to packages/desktop/src/assets/file-icons/html.svg diff --git a/packages/app/src/assets/file-icons/http.svg b/packages/desktop/src/assets/file-icons/http.svg similarity index 100% rename from packages/app/src/assets/file-icons/http.svg rename to packages/desktop/src/assets/file-icons/http.svg diff --git a/packages/app/src/assets/file-icons/huff.svg b/packages/desktop/src/assets/file-icons/huff.svg similarity index 100% rename from packages/app/src/assets/file-icons/huff.svg rename to packages/desktop/src/assets/file-icons/huff.svg diff --git a/packages/app/src/assets/file-icons/huff_light.svg b/packages/desktop/src/assets/file-icons/huff_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/huff_light.svg rename to packages/desktop/src/assets/file-icons/huff_light.svg diff --git a/packages/app/src/assets/file-icons/hurl.svg b/packages/desktop/src/assets/file-icons/hurl.svg similarity index 100% rename from packages/app/src/assets/file-icons/hurl.svg rename to packages/desktop/src/assets/file-icons/hurl.svg diff --git a/packages/app/src/assets/file-icons/husky.svg b/packages/desktop/src/assets/file-icons/husky.svg similarity index 100% rename from packages/app/src/assets/file-icons/husky.svg rename to packages/desktop/src/assets/file-icons/husky.svg diff --git a/packages/app/src/assets/file-icons/i18n.svg b/packages/desktop/src/assets/file-icons/i18n.svg similarity index 100% rename from packages/app/src/assets/file-icons/i18n.svg rename to packages/desktop/src/assets/file-icons/i18n.svg diff --git a/packages/app/src/assets/file-icons/idris.svg b/packages/desktop/src/assets/file-icons/idris.svg similarity index 100% rename from packages/app/src/assets/file-icons/idris.svg rename to packages/desktop/src/assets/file-icons/idris.svg diff --git a/packages/app/src/assets/file-icons/ifanr-cloud.svg b/packages/desktop/src/assets/file-icons/ifanr-cloud.svg similarity index 100% rename from packages/app/src/assets/file-icons/ifanr-cloud.svg rename to packages/desktop/src/assets/file-icons/ifanr-cloud.svg diff --git a/packages/app/src/assets/file-icons/image.svg b/packages/desktop/src/assets/file-icons/image.svg similarity index 100% rename from packages/app/src/assets/file-icons/image.svg rename to packages/desktop/src/assets/file-icons/image.svg diff --git a/packages/app/src/assets/file-icons/imba.svg b/packages/desktop/src/assets/file-icons/imba.svg similarity index 100% rename from packages/app/src/assets/file-icons/imba.svg rename to packages/desktop/src/assets/file-icons/imba.svg diff --git a/packages/app/src/assets/file-icons/installation.svg b/packages/desktop/src/assets/file-icons/installation.svg similarity index 100% rename from packages/app/src/assets/file-icons/installation.svg rename to packages/desktop/src/assets/file-icons/installation.svg diff --git a/packages/app/src/assets/file-icons/ionic.svg b/packages/desktop/src/assets/file-icons/ionic.svg similarity index 100% rename from packages/app/src/assets/file-icons/ionic.svg rename to packages/desktop/src/assets/file-icons/ionic.svg diff --git a/packages/app/src/assets/file-icons/istanbul.svg b/packages/desktop/src/assets/file-icons/istanbul.svg similarity index 100% rename from packages/app/src/assets/file-icons/istanbul.svg rename to packages/desktop/src/assets/file-icons/istanbul.svg diff --git a/packages/app/src/assets/file-icons/jar.svg b/packages/desktop/src/assets/file-icons/jar.svg similarity index 100% rename from packages/app/src/assets/file-icons/jar.svg rename to packages/desktop/src/assets/file-icons/jar.svg diff --git a/packages/app/src/assets/file-icons/java.svg b/packages/desktop/src/assets/file-icons/java.svg similarity index 100% rename from packages/app/src/assets/file-icons/java.svg rename to packages/desktop/src/assets/file-icons/java.svg diff --git a/packages/app/src/assets/file-icons/javaclass.svg b/packages/desktop/src/assets/file-icons/javaclass.svg similarity index 100% rename from packages/app/src/assets/file-icons/javaclass.svg rename to packages/desktop/src/assets/file-icons/javaclass.svg diff --git a/packages/app/src/assets/file-icons/javascript-map.svg b/packages/desktop/src/assets/file-icons/javascript-map.svg similarity index 100% rename from packages/app/src/assets/file-icons/javascript-map.svg rename to packages/desktop/src/assets/file-icons/javascript-map.svg diff --git a/packages/app/src/assets/file-icons/javascript.svg b/packages/desktop/src/assets/file-icons/javascript.svg similarity index 100% rename from packages/app/src/assets/file-icons/javascript.svg rename to packages/desktop/src/assets/file-icons/javascript.svg diff --git a/packages/app/src/assets/file-icons/jenkins.svg b/packages/desktop/src/assets/file-icons/jenkins.svg similarity index 100% rename from packages/app/src/assets/file-icons/jenkins.svg rename to packages/desktop/src/assets/file-icons/jenkins.svg diff --git a/packages/app/src/assets/file-icons/jest.svg b/packages/desktop/src/assets/file-icons/jest.svg similarity index 100% rename from packages/app/src/assets/file-icons/jest.svg rename to packages/desktop/src/assets/file-icons/jest.svg diff --git a/packages/app/src/assets/file-icons/jinja.svg b/packages/desktop/src/assets/file-icons/jinja.svg similarity index 100% rename from packages/app/src/assets/file-icons/jinja.svg rename to packages/desktop/src/assets/file-icons/jinja.svg diff --git a/packages/app/src/assets/file-icons/jinja_light.svg b/packages/desktop/src/assets/file-icons/jinja_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/jinja_light.svg rename to packages/desktop/src/assets/file-icons/jinja_light.svg diff --git a/packages/app/src/assets/file-icons/jsconfig.svg b/packages/desktop/src/assets/file-icons/jsconfig.svg similarity index 100% rename from packages/app/src/assets/file-icons/jsconfig.svg rename to packages/desktop/src/assets/file-icons/jsconfig.svg diff --git a/packages/app/src/assets/file-icons/json.svg b/packages/desktop/src/assets/file-icons/json.svg similarity index 100% rename from packages/app/src/assets/file-icons/json.svg rename to packages/desktop/src/assets/file-icons/json.svg diff --git a/packages/app/src/assets/file-icons/jsr.svg b/packages/desktop/src/assets/file-icons/jsr.svg similarity index 100% rename from packages/app/src/assets/file-icons/jsr.svg rename to packages/desktop/src/assets/file-icons/jsr.svg diff --git a/packages/app/src/assets/file-icons/jsr_light.svg b/packages/desktop/src/assets/file-icons/jsr_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/jsr_light.svg rename to packages/desktop/src/assets/file-icons/jsr_light.svg diff --git a/packages/app/src/assets/file-icons/julia.svg b/packages/desktop/src/assets/file-icons/julia.svg similarity index 100% rename from packages/app/src/assets/file-icons/julia.svg rename to packages/desktop/src/assets/file-icons/julia.svg diff --git a/packages/app/src/assets/file-icons/jupyter.svg b/packages/desktop/src/assets/file-icons/jupyter.svg similarity index 100% rename from packages/app/src/assets/file-icons/jupyter.svg rename to packages/desktop/src/assets/file-icons/jupyter.svg diff --git a/packages/app/src/assets/file-icons/just.svg b/packages/desktop/src/assets/file-icons/just.svg similarity index 100% rename from packages/app/src/assets/file-icons/just.svg rename to packages/desktop/src/assets/file-icons/just.svg diff --git a/packages/app/src/assets/file-icons/karma.svg b/packages/desktop/src/assets/file-icons/karma.svg similarity index 100% rename from packages/app/src/assets/file-icons/karma.svg rename to packages/desktop/src/assets/file-icons/karma.svg diff --git a/packages/app/src/assets/file-icons/kcl.svg b/packages/desktop/src/assets/file-icons/kcl.svg similarity index 100% rename from packages/app/src/assets/file-icons/kcl.svg rename to packages/desktop/src/assets/file-icons/kcl.svg diff --git a/packages/app/src/assets/file-icons/key.svg b/packages/desktop/src/assets/file-icons/key.svg similarity index 100% rename from packages/app/src/assets/file-icons/key.svg rename to packages/desktop/src/assets/file-icons/key.svg diff --git a/packages/app/src/assets/file-icons/keystatic.svg b/packages/desktop/src/assets/file-icons/keystatic.svg similarity index 100% rename from packages/app/src/assets/file-icons/keystatic.svg rename to packages/desktop/src/assets/file-icons/keystatic.svg diff --git a/packages/app/src/assets/file-icons/kivy.svg b/packages/desktop/src/assets/file-icons/kivy.svg similarity index 100% rename from packages/app/src/assets/file-icons/kivy.svg rename to packages/desktop/src/assets/file-icons/kivy.svg diff --git a/packages/app/src/assets/file-icons/kl.svg b/packages/desktop/src/assets/file-icons/kl.svg similarity index 100% rename from packages/app/src/assets/file-icons/kl.svg rename to packages/desktop/src/assets/file-icons/kl.svg diff --git a/packages/app/src/assets/file-icons/knip.svg b/packages/desktop/src/assets/file-icons/knip.svg similarity index 100% rename from packages/app/src/assets/file-icons/knip.svg rename to packages/desktop/src/assets/file-icons/knip.svg diff --git a/packages/app/src/assets/file-icons/kotlin.svg b/packages/desktop/src/assets/file-icons/kotlin.svg similarity index 100% rename from packages/app/src/assets/file-icons/kotlin.svg rename to packages/desktop/src/assets/file-icons/kotlin.svg diff --git a/packages/app/src/assets/file-icons/kubernetes.svg b/packages/desktop/src/assets/file-icons/kubernetes.svg similarity index 100% rename from packages/app/src/assets/file-icons/kubernetes.svg rename to packages/desktop/src/assets/file-icons/kubernetes.svg diff --git a/packages/app/src/assets/file-icons/kusto.svg b/packages/desktop/src/assets/file-icons/kusto.svg similarity index 100% rename from packages/app/src/assets/file-icons/kusto.svg rename to packages/desktop/src/assets/file-icons/kusto.svg diff --git a/packages/app/src/assets/file-icons/label.svg b/packages/desktop/src/assets/file-icons/label.svg similarity index 100% rename from packages/app/src/assets/file-icons/label.svg rename to packages/desktop/src/assets/file-icons/label.svg diff --git a/packages/app/src/assets/file-icons/laravel.svg b/packages/desktop/src/assets/file-icons/laravel.svg similarity index 100% rename from packages/app/src/assets/file-icons/laravel.svg rename to packages/desktop/src/assets/file-icons/laravel.svg diff --git a/packages/app/src/assets/file-icons/latexmk.svg b/packages/desktop/src/assets/file-icons/latexmk.svg similarity index 100% rename from packages/app/src/assets/file-icons/latexmk.svg rename to packages/desktop/src/assets/file-icons/latexmk.svg diff --git a/packages/app/src/assets/file-icons/lbx.svg b/packages/desktop/src/assets/file-icons/lbx.svg similarity index 100% rename from packages/app/src/assets/file-icons/lbx.svg rename to packages/desktop/src/assets/file-icons/lbx.svg diff --git a/packages/app/src/assets/file-icons/lefthook.svg b/packages/desktop/src/assets/file-icons/lefthook.svg similarity index 100% rename from packages/app/src/assets/file-icons/lefthook.svg rename to packages/desktop/src/assets/file-icons/lefthook.svg diff --git a/packages/app/src/assets/file-icons/lerna.svg b/packages/desktop/src/assets/file-icons/lerna.svg similarity index 100% rename from packages/app/src/assets/file-icons/lerna.svg rename to packages/desktop/src/assets/file-icons/lerna.svg diff --git a/packages/app/src/assets/file-icons/less.svg b/packages/desktop/src/assets/file-icons/less.svg similarity index 100% rename from packages/app/src/assets/file-icons/less.svg rename to packages/desktop/src/assets/file-icons/less.svg diff --git a/packages/app/src/assets/file-icons/liara.svg b/packages/desktop/src/assets/file-icons/liara.svg similarity index 100% rename from packages/app/src/assets/file-icons/liara.svg rename to packages/desktop/src/assets/file-icons/liara.svg diff --git a/packages/app/src/assets/file-icons/lib.svg b/packages/desktop/src/assets/file-icons/lib.svg similarity index 100% rename from packages/app/src/assets/file-icons/lib.svg rename to packages/desktop/src/assets/file-icons/lib.svg diff --git a/packages/app/src/assets/file-icons/lighthouse.svg b/packages/desktop/src/assets/file-icons/lighthouse.svg similarity index 100% rename from packages/app/src/assets/file-icons/lighthouse.svg rename to packages/desktop/src/assets/file-icons/lighthouse.svg diff --git a/packages/app/src/assets/file-icons/lilypond.svg b/packages/desktop/src/assets/file-icons/lilypond.svg similarity index 100% rename from packages/app/src/assets/file-icons/lilypond.svg rename to packages/desktop/src/assets/file-icons/lilypond.svg diff --git a/packages/app/src/assets/file-icons/lintstaged.svg b/packages/desktop/src/assets/file-icons/lintstaged.svg similarity index 100% rename from packages/app/src/assets/file-icons/lintstaged.svg rename to packages/desktop/src/assets/file-icons/lintstaged.svg diff --git a/packages/app/src/assets/file-icons/liquid.svg b/packages/desktop/src/assets/file-icons/liquid.svg similarity index 100% rename from packages/app/src/assets/file-icons/liquid.svg rename to packages/desktop/src/assets/file-icons/liquid.svg diff --git a/packages/app/src/assets/file-icons/lisp.svg b/packages/desktop/src/assets/file-icons/lisp.svg similarity index 100% rename from packages/app/src/assets/file-icons/lisp.svg rename to packages/desktop/src/assets/file-icons/lisp.svg diff --git a/packages/app/src/assets/file-icons/livescript.svg b/packages/desktop/src/assets/file-icons/livescript.svg similarity index 100% rename from packages/app/src/assets/file-icons/livescript.svg rename to packages/desktop/src/assets/file-icons/livescript.svg diff --git a/packages/app/src/assets/file-icons/lock.svg b/packages/desktop/src/assets/file-icons/lock.svg similarity index 100% rename from packages/app/src/assets/file-icons/lock.svg rename to packages/desktop/src/assets/file-icons/lock.svg diff --git a/packages/app/src/assets/file-icons/log.svg b/packages/desktop/src/assets/file-icons/log.svg similarity index 100% rename from packages/app/src/assets/file-icons/log.svg rename to packages/desktop/src/assets/file-icons/log.svg diff --git a/packages/app/src/assets/file-icons/lolcode.svg b/packages/desktop/src/assets/file-icons/lolcode.svg similarity index 100% rename from packages/app/src/assets/file-icons/lolcode.svg rename to packages/desktop/src/assets/file-icons/lolcode.svg diff --git a/packages/app/src/assets/file-icons/lottie.svg b/packages/desktop/src/assets/file-icons/lottie.svg similarity index 100% rename from packages/app/src/assets/file-icons/lottie.svg rename to packages/desktop/src/assets/file-icons/lottie.svg diff --git a/packages/app/src/assets/file-icons/lua.svg b/packages/desktop/src/assets/file-icons/lua.svg similarity index 100% rename from packages/app/src/assets/file-icons/lua.svg rename to packages/desktop/src/assets/file-icons/lua.svg diff --git a/packages/app/src/assets/file-icons/luau.svg b/packages/desktop/src/assets/file-icons/luau.svg similarity index 100% rename from packages/app/src/assets/file-icons/luau.svg rename to packages/desktop/src/assets/file-icons/luau.svg diff --git a/packages/app/src/assets/file-icons/lyric.svg b/packages/desktop/src/assets/file-icons/lyric.svg similarity index 100% rename from packages/app/src/assets/file-icons/lyric.svg rename to packages/desktop/src/assets/file-icons/lyric.svg diff --git a/packages/app/src/assets/file-icons/makefile.svg b/packages/desktop/src/assets/file-icons/makefile.svg similarity index 100% rename from packages/app/src/assets/file-icons/makefile.svg rename to packages/desktop/src/assets/file-icons/makefile.svg diff --git a/packages/app/src/assets/file-icons/markdoc-config.svg b/packages/desktop/src/assets/file-icons/markdoc-config.svg similarity index 100% rename from packages/app/src/assets/file-icons/markdoc-config.svg rename to packages/desktop/src/assets/file-icons/markdoc-config.svg diff --git a/packages/app/src/assets/file-icons/markdoc.svg b/packages/desktop/src/assets/file-icons/markdoc.svg similarity index 100% rename from packages/app/src/assets/file-icons/markdoc.svg rename to packages/desktop/src/assets/file-icons/markdoc.svg diff --git a/packages/app/src/assets/file-icons/markdown.svg b/packages/desktop/src/assets/file-icons/markdown.svg similarity index 100% rename from packages/app/src/assets/file-icons/markdown.svg rename to packages/desktop/src/assets/file-icons/markdown.svg diff --git a/packages/app/src/assets/file-icons/markdownlint.svg b/packages/desktop/src/assets/file-icons/markdownlint.svg similarity index 100% rename from packages/app/src/assets/file-icons/markdownlint.svg rename to packages/desktop/src/assets/file-icons/markdownlint.svg diff --git a/packages/app/src/assets/file-icons/markojs.svg b/packages/desktop/src/assets/file-icons/markojs.svg similarity index 100% rename from packages/app/src/assets/file-icons/markojs.svg rename to packages/desktop/src/assets/file-icons/markojs.svg diff --git a/packages/app/src/assets/file-icons/mathematica.svg b/packages/desktop/src/assets/file-icons/mathematica.svg similarity index 100% rename from packages/app/src/assets/file-icons/mathematica.svg rename to packages/desktop/src/assets/file-icons/mathematica.svg diff --git a/packages/app/src/assets/file-icons/matlab.svg b/packages/desktop/src/assets/file-icons/matlab.svg similarity index 100% rename from packages/app/src/assets/file-icons/matlab.svg rename to packages/desktop/src/assets/file-icons/matlab.svg diff --git a/packages/app/src/assets/file-icons/maven.svg b/packages/desktop/src/assets/file-icons/maven.svg similarity index 100% rename from packages/app/src/assets/file-icons/maven.svg rename to packages/desktop/src/assets/file-icons/maven.svg diff --git a/packages/app/src/assets/file-icons/mdsvex.svg b/packages/desktop/src/assets/file-icons/mdsvex.svg similarity index 100% rename from packages/app/src/assets/file-icons/mdsvex.svg rename to packages/desktop/src/assets/file-icons/mdsvex.svg diff --git a/packages/app/src/assets/file-icons/mdx.svg b/packages/desktop/src/assets/file-icons/mdx.svg similarity index 100% rename from packages/app/src/assets/file-icons/mdx.svg rename to packages/desktop/src/assets/file-icons/mdx.svg diff --git a/packages/app/src/assets/file-icons/mercurial.svg b/packages/desktop/src/assets/file-icons/mercurial.svg similarity index 100% rename from packages/app/src/assets/file-icons/mercurial.svg rename to packages/desktop/src/assets/file-icons/mercurial.svg diff --git a/packages/app/src/assets/file-icons/merlin.svg b/packages/desktop/src/assets/file-icons/merlin.svg similarity index 100% rename from packages/app/src/assets/file-icons/merlin.svg rename to packages/desktop/src/assets/file-icons/merlin.svg diff --git a/packages/app/src/assets/file-icons/mermaid.svg b/packages/desktop/src/assets/file-icons/mermaid.svg similarity index 100% rename from packages/app/src/assets/file-icons/mermaid.svg rename to packages/desktop/src/assets/file-icons/mermaid.svg diff --git a/packages/app/src/assets/file-icons/meson.svg b/packages/desktop/src/assets/file-icons/meson.svg similarity index 100% rename from packages/app/src/assets/file-icons/meson.svg rename to packages/desktop/src/assets/file-icons/meson.svg diff --git a/packages/app/src/assets/file-icons/minecraft-fabric.svg b/packages/desktop/src/assets/file-icons/minecraft-fabric.svg similarity index 100% rename from packages/app/src/assets/file-icons/minecraft-fabric.svg rename to packages/desktop/src/assets/file-icons/minecraft-fabric.svg diff --git a/packages/app/src/assets/file-icons/minecraft.svg b/packages/desktop/src/assets/file-icons/minecraft.svg similarity index 100% rename from packages/app/src/assets/file-icons/minecraft.svg rename to packages/desktop/src/assets/file-icons/minecraft.svg diff --git a/packages/app/src/assets/file-icons/mint.svg b/packages/desktop/src/assets/file-icons/mint.svg similarity index 100% rename from packages/app/src/assets/file-icons/mint.svg rename to packages/desktop/src/assets/file-icons/mint.svg diff --git a/packages/app/src/assets/file-icons/mjml.svg b/packages/desktop/src/assets/file-icons/mjml.svg similarity index 100% rename from packages/app/src/assets/file-icons/mjml.svg rename to packages/desktop/src/assets/file-icons/mjml.svg diff --git a/packages/app/src/assets/file-icons/mocha.svg b/packages/desktop/src/assets/file-icons/mocha.svg similarity index 100% rename from packages/app/src/assets/file-icons/mocha.svg rename to packages/desktop/src/assets/file-icons/mocha.svg diff --git a/packages/app/src/assets/file-icons/modernizr.svg b/packages/desktop/src/assets/file-icons/modernizr.svg similarity index 100% rename from packages/app/src/assets/file-icons/modernizr.svg rename to packages/desktop/src/assets/file-icons/modernizr.svg diff --git a/packages/app/src/assets/file-icons/mojo.svg b/packages/desktop/src/assets/file-icons/mojo.svg similarity index 100% rename from packages/app/src/assets/file-icons/mojo.svg rename to packages/desktop/src/assets/file-icons/mojo.svg diff --git a/packages/app/src/assets/file-icons/moon.svg b/packages/desktop/src/assets/file-icons/moon.svg similarity index 100% rename from packages/app/src/assets/file-icons/moon.svg rename to packages/desktop/src/assets/file-icons/moon.svg diff --git a/packages/app/src/assets/file-icons/moonscript.svg b/packages/desktop/src/assets/file-icons/moonscript.svg similarity index 100% rename from packages/app/src/assets/file-icons/moonscript.svg rename to packages/desktop/src/assets/file-icons/moonscript.svg diff --git a/packages/app/src/assets/file-icons/mxml.svg b/packages/desktop/src/assets/file-icons/mxml.svg similarity index 100% rename from packages/app/src/assets/file-icons/mxml.svg rename to packages/desktop/src/assets/file-icons/mxml.svg diff --git a/packages/app/src/assets/file-icons/nano-staged.svg b/packages/desktop/src/assets/file-icons/nano-staged.svg similarity index 100% rename from packages/app/src/assets/file-icons/nano-staged.svg rename to packages/desktop/src/assets/file-icons/nano-staged.svg diff --git a/packages/app/src/assets/file-icons/nano-staged_light.svg b/packages/desktop/src/assets/file-icons/nano-staged_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/nano-staged_light.svg rename to packages/desktop/src/assets/file-icons/nano-staged_light.svg diff --git a/packages/app/src/assets/file-icons/ndst.svg b/packages/desktop/src/assets/file-icons/ndst.svg similarity index 100% rename from packages/app/src/assets/file-icons/ndst.svg rename to packages/desktop/src/assets/file-icons/ndst.svg diff --git a/packages/app/src/assets/file-icons/nest.svg b/packages/desktop/src/assets/file-icons/nest.svg similarity index 100% rename from packages/app/src/assets/file-icons/nest.svg rename to packages/desktop/src/assets/file-icons/nest.svg diff --git a/packages/app/src/assets/file-icons/netlify.svg b/packages/desktop/src/assets/file-icons/netlify.svg similarity index 100% rename from packages/app/src/assets/file-icons/netlify.svg rename to packages/desktop/src/assets/file-icons/netlify.svg diff --git a/packages/app/src/assets/file-icons/netlify_light.svg b/packages/desktop/src/assets/file-icons/netlify_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/netlify_light.svg rename to packages/desktop/src/assets/file-icons/netlify_light.svg diff --git a/packages/app/src/assets/file-icons/next.svg b/packages/desktop/src/assets/file-icons/next.svg similarity index 100% rename from packages/app/src/assets/file-icons/next.svg rename to packages/desktop/src/assets/file-icons/next.svg diff --git a/packages/app/src/assets/file-icons/next_light.svg b/packages/desktop/src/assets/file-icons/next_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/next_light.svg rename to packages/desktop/src/assets/file-icons/next_light.svg diff --git a/packages/app/src/assets/file-icons/nginx.svg b/packages/desktop/src/assets/file-icons/nginx.svg similarity index 100% rename from packages/app/src/assets/file-icons/nginx.svg rename to packages/desktop/src/assets/file-icons/nginx.svg diff --git a/packages/app/src/assets/file-icons/ngrx-actions.svg b/packages/desktop/src/assets/file-icons/ngrx-actions.svg similarity index 100% rename from packages/app/src/assets/file-icons/ngrx-actions.svg rename to packages/desktop/src/assets/file-icons/ngrx-actions.svg diff --git a/packages/app/src/assets/file-icons/ngrx-effects.svg b/packages/desktop/src/assets/file-icons/ngrx-effects.svg similarity index 100% rename from packages/app/src/assets/file-icons/ngrx-effects.svg rename to packages/desktop/src/assets/file-icons/ngrx-effects.svg diff --git a/packages/app/src/assets/file-icons/ngrx-entity.svg b/packages/desktop/src/assets/file-icons/ngrx-entity.svg similarity index 100% rename from packages/app/src/assets/file-icons/ngrx-entity.svg rename to packages/desktop/src/assets/file-icons/ngrx-entity.svg diff --git a/packages/app/src/assets/file-icons/ngrx-reducer.svg b/packages/desktop/src/assets/file-icons/ngrx-reducer.svg similarity index 100% rename from packages/app/src/assets/file-icons/ngrx-reducer.svg rename to packages/desktop/src/assets/file-icons/ngrx-reducer.svg diff --git a/packages/app/src/assets/file-icons/ngrx-selectors.svg b/packages/desktop/src/assets/file-icons/ngrx-selectors.svg similarity index 100% rename from packages/app/src/assets/file-icons/ngrx-selectors.svg rename to packages/desktop/src/assets/file-icons/ngrx-selectors.svg diff --git a/packages/app/src/assets/file-icons/ngrx-state.svg b/packages/desktop/src/assets/file-icons/ngrx-state.svg similarity index 100% rename from packages/app/src/assets/file-icons/ngrx-state.svg rename to packages/desktop/src/assets/file-icons/ngrx-state.svg diff --git a/packages/app/src/assets/file-icons/nim.svg b/packages/desktop/src/assets/file-icons/nim.svg similarity index 100% rename from packages/app/src/assets/file-icons/nim.svg rename to packages/desktop/src/assets/file-icons/nim.svg diff --git a/packages/app/src/assets/file-icons/nix.svg b/packages/desktop/src/assets/file-icons/nix.svg similarity index 100% rename from packages/app/src/assets/file-icons/nix.svg rename to packages/desktop/src/assets/file-icons/nix.svg diff --git a/packages/app/src/assets/file-icons/nodejs.svg b/packages/desktop/src/assets/file-icons/nodejs.svg similarity index 100% rename from packages/app/src/assets/file-icons/nodejs.svg rename to packages/desktop/src/assets/file-icons/nodejs.svg diff --git a/packages/app/src/assets/file-icons/nodejs_alt.svg b/packages/desktop/src/assets/file-icons/nodejs_alt.svg similarity index 100% rename from packages/app/src/assets/file-icons/nodejs_alt.svg rename to packages/desktop/src/assets/file-icons/nodejs_alt.svg diff --git a/packages/app/src/assets/file-icons/nodemon.svg b/packages/desktop/src/assets/file-icons/nodemon.svg similarity index 100% rename from packages/app/src/assets/file-icons/nodemon.svg rename to packages/desktop/src/assets/file-icons/nodemon.svg diff --git a/packages/app/src/assets/file-icons/npm.svg b/packages/desktop/src/assets/file-icons/npm.svg similarity index 100% rename from packages/app/src/assets/file-icons/npm.svg rename to packages/desktop/src/assets/file-icons/npm.svg diff --git a/packages/app/src/assets/file-icons/nuget.svg b/packages/desktop/src/assets/file-icons/nuget.svg similarity index 100% rename from packages/app/src/assets/file-icons/nuget.svg rename to packages/desktop/src/assets/file-icons/nuget.svg diff --git a/packages/app/src/assets/file-icons/nunjucks.svg b/packages/desktop/src/assets/file-icons/nunjucks.svg similarity index 100% rename from packages/app/src/assets/file-icons/nunjucks.svg rename to packages/desktop/src/assets/file-icons/nunjucks.svg diff --git a/packages/app/src/assets/file-icons/nuxt.svg b/packages/desktop/src/assets/file-icons/nuxt.svg similarity index 100% rename from packages/app/src/assets/file-icons/nuxt.svg rename to packages/desktop/src/assets/file-icons/nuxt.svg diff --git a/packages/app/src/assets/file-icons/nx.svg b/packages/desktop/src/assets/file-icons/nx.svg similarity index 100% rename from packages/app/src/assets/file-icons/nx.svg rename to packages/desktop/src/assets/file-icons/nx.svg diff --git a/packages/app/src/assets/file-icons/objective-c.svg b/packages/desktop/src/assets/file-icons/objective-c.svg similarity index 100% rename from packages/app/src/assets/file-icons/objective-c.svg rename to packages/desktop/src/assets/file-icons/objective-c.svg diff --git a/packages/app/src/assets/file-icons/objective-cpp.svg b/packages/desktop/src/assets/file-icons/objective-cpp.svg similarity index 100% rename from packages/app/src/assets/file-icons/objective-cpp.svg rename to packages/desktop/src/assets/file-icons/objective-cpp.svg diff --git a/packages/app/src/assets/file-icons/ocaml.svg b/packages/desktop/src/assets/file-icons/ocaml.svg similarity index 100% rename from packages/app/src/assets/file-icons/ocaml.svg rename to packages/desktop/src/assets/file-icons/ocaml.svg diff --git a/packages/app/src/assets/file-icons/odin.svg b/packages/desktop/src/assets/file-icons/odin.svg similarity index 100% rename from packages/app/src/assets/file-icons/odin.svg rename to packages/desktop/src/assets/file-icons/odin.svg diff --git a/packages/app/src/assets/file-icons/opa.svg b/packages/desktop/src/assets/file-icons/opa.svg similarity index 100% rename from packages/app/src/assets/file-icons/opa.svg rename to packages/desktop/src/assets/file-icons/opa.svg diff --git a/packages/app/src/assets/file-icons/opam.svg b/packages/desktop/src/assets/file-icons/opam.svg similarity index 100% rename from packages/app/src/assets/file-icons/opam.svg rename to packages/desktop/src/assets/file-icons/opam.svg diff --git a/packages/app/src/assets/file-icons/openapi.svg b/packages/desktop/src/assets/file-icons/openapi.svg similarity index 100% rename from packages/app/src/assets/file-icons/openapi.svg rename to packages/desktop/src/assets/file-icons/openapi.svg diff --git a/packages/app/src/assets/file-icons/openapi_light.svg b/packages/desktop/src/assets/file-icons/openapi_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/openapi_light.svg rename to packages/desktop/src/assets/file-icons/openapi_light.svg diff --git a/packages/app/src/assets/file-icons/otne.svg b/packages/desktop/src/assets/file-icons/otne.svg similarity index 100% rename from packages/app/src/assets/file-icons/otne.svg rename to packages/desktop/src/assets/file-icons/otne.svg diff --git a/packages/app/src/assets/file-icons/oxlint.svg b/packages/desktop/src/assets/file-icons/oxlint.svg similarity index 100% rename from packages/app/src/assets/file-icons/oxlint.svg rename to packages/desktop/src/assets/file-icons/oxlint.svg diff --git a/packages/app/src/assets/file-icons/packship.svg b/packages/desktop/src/assets/file-icons/packship.svg similarity index 100% rename from packages/app/src/assets/file-icons/packship.svg rename to packages/desktop/src/assets/file-icons/packship.svg diff --git a/packages/app/src/assets/file-icons/palette.svg b/packages/desktop/src/assets/file-icons/palette.svg similarity index 100% rename from packages/app/src/assets/file-icons/palette.svg rename to packages/desktop/src/assets/file-icons/palette.svg diff --git a/packages/app/src/assets/file-icons/panda.svg b/packages/desktop/src/assets/file-icons/panda.svg similarity index 100% rename from packages/app/src/assets/file-icons/panda.svg rename to packages/desktop/src/assets/file-icons/panda.svg diff --git a/packages/app/src/assets/file-icons/parcel.svg b/packages/desktop/src/assets/file-icons/parcel.svg similarity index 100% rename from packages/app/src/assets/file-icons/parcel.svg rename to packages/desktop/src/assets/file-icons/parcel.svg diff --git a/packages/app/src/assets/file-icons/pascal.svg b/packages/desktop/src/assets/file-icons/pascal.svg similarity index 100% rename from packages/app/src/assets/file-icons/pascal.svg rename to packages/desktop/src/assets/file-icons/pascal.svg diff --git a/packages/app/src/assets/file-icons/pawn.svg b/packages/desktop/src/assets/file-icons/pawn.svg similarity index 100% rename from packages/app/src/assets/file-icons/pawn.svg rename to packages/desktop/src/assets/file-icons/pawn.svg diff --git a/packages/app/src/assets/file-icons/payload.svg b/packages/desktop/src/assets/file-icons/payload.svg similarity index 100% rename from packages/app/src/assets/file-icons/payload.svg rename to packages/desktop/src/assets/file-icons/payload.svg diff --git a/packages/app/src/assets/file-icons/payload_light.svg b/packages/desktop/src/assets/file-icons/payload_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/payload_light.svg rename to packages/desktop/src/assets/file-icons/payload_light.svg diff --git a/packages/app/src/assets/file-icons/pdf.svg b/packages/desktop/src/assets/file-icons/pdf.svg similarity index 100% rename from packages/app/src/assets/file-icons/pdf.svg rename to packages/desktop/src/assets/file-icons/pdf.svg diff --git a/packages/app/src/assets/file-icons/pdm.svg b/packages/desktop/src/assets/file-icons/pdm.svg similarity index 100% rename from packages/app/src/assets/file-icons/pdm.svg rename to packages/desktop/src/assets/file-icons/pdm.svg diff --git a/packages/app/src/assets/file-icons/percy.svg b/packages/desktop/src/assets/file-icons/percy.svg similarity index 100% rename from packages/app/src/assets/file-icons/percy.svg rename to packages/desktop/src/assets/file-icons/percy.svg diff --git a/packages/app/src/assets/file-icons/perl.svg b/packages/desktop/src/assets/file-icons/perl.svg similarity index 100% rename from packages/app/src/assets/file-icons/perl.svg rename to packages/desktop/src/assets/file-icons/perl.svg diff --git a/packages/app/src/assets/file-icons/php-cs-fixer.svg b/packages/desktop/src/assets/file-icons/php-cs-fixer.svg similarity index 100% rename from packages/app/src/assets/file-icons/php-cs-fixer.svg rename to packages/desktop/src/assets/file-icons/php-cs-fixer.svg diff --git a/packages/app/src/assets/file-icons/php.svg b/packages/desktop/src/assets/file-icons/php.svg similarity index 100% rename from packages/app/src/assets/file-icons/php.svg rename to packages/desktop/src/assets/file-icons/php.svg diff --git a/packages/app/src/assets/file-icons/php_elephant.svg b/packages/desktop/src/assets/file-icons/php_elephant.svg similarity index 100% rename from packages/app/src/assets/file-icons/php_elephant.svg rename to packages/desktop/src/assets/file-icons/php_elephant.svg diff --git a/packages/app/src/assets/file-icons/php_elephant_pink.svg b/packages/desktop/src/assets/file-icons/php_elephant_pink.svg similarity index 100% rename from packages/app/src/assets/file-icons/php_elephant_pink.svg rename to packages/desktop/src/assets/file-icons/php_elephant_pink.svg diff --git a/packages/app/src/assets/file-icons/phpstan.svg b/packages/desktop/src/assets/file-icons/phpstan.svg similarity index 100% rename from packages/app/src/assets/file-icons/phpstan.svg rename to packages/desktop/src/assets/file-icons/phpstan.svg diff --git a/packages/app/src/assets/file-icons/phpunit.svg b/packages/desktop/src/assets/file-icons/phpunit.svg similarity index 100% rename from packages/app/src/assets/file-icons/phpunit.svg rename to packages/desktop/src/assets/file-icons/phpunit.svg diff --git a/packages/app/src/assets/file-icons/pinejs.svg b/packages/desktop/src/assets/file-icons/pinejs.svg similarity index 100% rename from packages/app/src/assets/file-icons/pinejs.svg rename to packages/desktop/src/assets/file-icons/pinejs.svg diff --git a/packages/app/src/assets/file-icons/pipeline.svg b/packages/desktop/src/assets/file-icons/pipeline.svg similarity index 100% rename from packages/app/src/assets/file-icons/pipeline.svg rename to packages/desktop/src/assets/file-icons/pipeline.svg diff --git a/packages/app/src/assets/file-icons/pkl.svg b/packages/desktop/src/assets/file-icons/pkl.svg similarity index 100% rename from packages/app/src/assets/file-icons/pkl.svg rename to packages/desktop/src/assets/file-icons/pkl.svg diff --git a/packages/app/src/assets/file-icons/plastic.svg b/packages/desktop/src/assets/file-icons/plastic.svg similarity index 100% rename from packages/app/src/assets/file-icons/plastic.svg rename to packages/desktop/src/assets/file-icons/plastic.svg diff --git a/packages/app/src/assets/file-icons/playwright.svg b/packages/desktop/src/assets/file-icons/playwright.svg similarity index 100% rename from packages/app/src/assets/file-icons/playwright.svg rename to packages/desktop/src/assets/file-icons/playwright.svg diff --git a/packages/app/src/assets/file-icons/plop.svg b/packages/desktop/src/assets/file-icons/plop.svg similarity index 100% rename from packages/app/src/assets/file-icons/plop.svg rename to packages/desktop/src/assets/file-icons/plop.svg diff --git a/packages/app/src/assets/file-icons/pm2-ecosystem.svg b/packages/desktop/src/assets/file-icons/pm2-ecosystem.svg similarity index 100% rename from packages/app/src/assets/file-icons/pm2-ecosystem.svg rename to packages/desktop/src/assets/file-icons/pm2-ecosystem.svg diff --git a/packages/app/src/assets/file-icons/pnpm.svg b/packages/desktop/src/assets/file-icons/pnpm.svg similarity index 100% rename from packages/app/src/assets/file-icons/pnpm.svg rename to packages/desktop/src/assets/file-icons/pnpm.svg diff --git a/packages/app/src/assets/file-icons/pnpm_light.svg b/packages/desktop/src/assets/file-icons/pnpm_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/pnpm_light.svg rename to packages/desktop/src/assets/file-icons/pnpm_light.svg diff --git a/packages/app/src/assets/file-icons/poetry.svg b/packages/desktop/src/assets/file-icons/poetry.svg similarity index 100% rename from packages/app/src/assets/file-icons/poetry.svg rename to packages/desktop/src/assets/file-icons/poetry.svg diff --git a/packages/app/src/assets/file-icons/postcss.svg b/packages/desktop/src/assets/file-icons/postcss.svg similarity index 100% rename from packages/app/src/assets/file-icons/postcss.svg rename to packages/desktop/src/assets/file-icons/postcss.svg diff --git a/packages/app/src/assets/file-icons/posthtml.svg b/packages/desktop/src/assets/file-icons/posthtml.svg similarity index 100% rename from packages/app/src/assets/file-icons/posthtml.svg rename to packages/desktop/src/assets/file-icons/posthtml.svg diff --git a/packages/app/src/assets/file-icons/powerpoint.svg b/packages/desktop/src/assets/file-icons/powerpoint.svg similarity index 100% rename from packages/app/src/assets/file-icons/powerpoint.svg rename to packages/desktop/src/assets/file-icons/powerpoint.svg diff --git a/packages/app/src/assets/file-icons/powershell.svg b/packages/desktop/src/assets/file-icons/powershell.svg similarity index 100% rename from packages/app/src/assets/file-icons/powershell.svg rename to packages/desktop/src/assets/file-icons/powershell.svg diff --git a/packages/app/src/assets/file-icons/pre-commit.svg b/packages/desktop/src/assets/file-icons/pre-commit.svg similarity index 100% rename from packages/app/src/assets/file-icons/pre-commit.svg rename to packages/desktop/src/assets/file-icons/pre-commit.svg diff --git a/packages/app/src/assets/file-icons/prettier.svg b/packages/desktop/src/assets/file-icons/prettier.svg similarity index 100% rename from packages/app/src/assets/file-icons/prettier.svg rename to packages/desktop/src/assets/file-icons/prettier.svg diff --git a/packages/app/src/assets/file-icons/prisma.svg b/packages/desktop/src/assets/file-icons/prisma.svg similarity index 100% rename from packages/app/src/assets/file-icons/prisma.svg rename to packages/desktop/src/assets/file-icons/prisma.svg diff --git a/packages/app/src/assets/file-icons/processing.svg b/packages/desktop/src/assets/file-icons/processing.svg similarity index 100% rename from packages/app/src/assets/file-icons/processing.svg rename to packages/desktop/src/assets/file-icons/processing.svg diff --git a/packages/app/src/assets/file-icons/prolog.svg b/packages/desktop/src/assets/file-icons/prolog.svg similarity index 100% rename from packages/app/src/assets/file-icons/prolog.svg rename to packages/desktop/src/assets/file-icons/prolog.svg diff --git a/packages/app/src/assets/file-icons/prompt.svg b/packages/desktop/src/assets/file-icons/prompt.svg similarity index 100% rename from packages/app/src/assets/file-icons/prompt.svg rename to packages/desktop/src/assets/file-icons/prompt.svg diff --git a/packages/app/src/assets/file-icons/proto.svg b/packages/desktop/src/assets/file-icons/proto.svg similarity index 100% rename from packages/app/src/assets/file-icons/proto.svg rename to packages/desktop/src/assets/file-icons/proto.svg diff --git a/packages/app/src/assets/file-icons/protractor.svg b/packages/desktop/src/assets/file-icons/protractor.svg similarity index 100% rename from packages/app/src/assets/file-icons/protractor.svg rename to packages/desktop/src/assets/file-icons/protractor.svg diff --git a/packages/app/src/assets/file-icons/pug.svg b/packages/desktop/src/assets/file-icons/pug.svg similarity index 100% rename from packages/app/src/assets/file-icons/pug.svg rename to packages/desktop/src/assets/file-icons/pug.svg diff --git a/packages/app/src/assets/file-icons/puppet.svg b/packages/desktop/src/assets/file-icons/puppet.svg similarity index 100% rename from packages/app/src/assets/file-icons/puppet.svg rename to packages/desktop/src/assets/file-icons/puppet.svg diff --git a/packages/app/src/assets/file-icons/puppeteer.svg b/packages/desktop/src/assets/file-icons/puppeteer.svg similarity index 100% rename from packages/app/src/assets/file-icons/puppeteer.svg rename to packages/desktop/src/assets/file-icons/puppeteer.svg diff --git a/packages/app/src/assets/file-icons/purescript.svg b/packages/desktop/src/assets/file-icons/purescript.svg similarity index 100% rename from packages/app/src/assets/file-icons/purescript.svg rename to packages/desktop/src/assets/file-icons/purescript.svg diff --git a/packages/app/src/assets/file-icons/python-misc.svg b/packages/desktop/src/assets/file-icons/python-misc.svg similarity index 100% rename from packages/app/src/assets/file-icons/python-misc.svg rename to packages/desktop/src/assets/file-icons/python-misc.svg diff --git a/packages/app/src/assets/file-icons/python.svg b/packages/desktop/src/assets/file-icons/python.svg similarity index 100% rename from packages/app/src/assets/file-icons/python.svg rename to packages/desktop/src/assets/file-icons/python.svg diff --git a/packages/app/src/assets/file-icons/pytorch.svg b/packages/desktop/src/assets/file-icons/pytorch.svg similarity index 100% rename from packages/app/src/assets/file-icons/pytorch.svg rename to packages/desktop/src/assets/file-icons/pytorch.svg diff --git a/packages/app/src/assets/file-icons/qsharp.svg b/packages/desktop/src/assets/file-icons/qsharp.svg similarity index 100% rename from packages/app/src/assets/file-icons/qsharp.svg rename to packages/desktop/src/assets/file-icons/qsharp.svg diff --git a/packages/app/src/assets/file-icons/quarto.svg b/packages/desktop/src/assets/file-icons/quarto.svg similarity index 100% rename from packages/app/src/assets/file-icons/quarto.svg rename to packages/desktop/src/assets/file-icons/quarto.svg diff --git a/packages/app/src/assets/file-icons/quasar.svg b/packages/desktop/src/assets/file-icons/quasar.svg similarity index 100% rename from packages/app/src/assets/file-icons/quasar.svg rename to packages/desktop/src/assets/file-icons/quasar.svg diff --git a/packages/app/src/assets/file-icons/quokka.svg b/packages/desktop/src/assets/file-icons/quokka.svg similarity index 100% rename from packages/app/src/assets/file-icons/quokka.svg rename to packages/desktop/src/assets/file-icons/quokka.svg diff --git a/packages/app/src/assets/file-icons/qwik.svg b/packages/desktop/src/assets/file-icons/qwik.svg similarity index 100% rename from packages/app/src/assets/file-icons/qwik.svg rename to packages/desktop/src/assets/file-icons/qwik.svg diff --git a/packages/app/src/assets/file-icons/r.svg b/packages/desktop/src/assets/file-icons/r.svg similarity index 100% rename from packages/app/src/assets/file-icons/r.svg rename to packages/desktop/src/assets/file-icons/r.svg diff --git a/packages/app/src/assets/file-icons/racket.svg b/packages/desktop/src/assets/file-icons/racket.svg similarity index 100% rename from packages/app/src/assets/file-icons/racket.svg rename to packages/desktop/src/assets/file-icons/racket.svg diff --git a/packages/app/src/assets/file-icons/raml.svg b/packages/desktop/src/assets/file-icons/raml.svg similarity index 100% rename from packages/app/src/assets/file-icons/raml.svg rename to packages/desktop/src/assets/file-icons/raml.svg diff --git a/packages/app/src/assets/file-icons/razor.svg b/packages/desktop/src/assets/file-icons/razor.svg similarity index 100% rename from packages/app/src/assets/file-icons/razor.svg rename to packages/desktop/src/assets/file-icons/razor.svg diff --git a/packages/app/src/assets/file-icons/rbxmk.svg b/packages/desktop/src/assets/file-icons/rbxmk.svg similarity index 100% rename from packages/app/src/assets/file-icons/rbxmk.svg rename to packages/desktop/src/assets/file-icons/rbxmk.svg diff --git a/packages/app/src/assets/file-icons/rc.svg b/packages/desktop/src/assets/file-icons/rc.svg similarity index 100% rename from packages/app/src/assets/file-icons/rc.svg rename to packages/desktop/src/assets/file-icons/rc.svg diff --git a/packages/app/src/assets/file-icons/react.svg b/packages/desktop/src/assets/file-icons/react.svg similarity index 100% rename from packages/app/src/assets/file-icons/react.svg rename to packages/desktop/src/assets/file-icons/react.svg diff --git a/packages/app/src/assets/file-icons/react_ts.svg b/packages/desktop/src/assets/file-icons/react_ts.svg similarity index 100% rename from packages/app/src/assets/file-icons/react_ts.svg rename to packages/desktop/src/assets/file-icons/react_ts.svg diff --git a/packages/app/src/assets/file-icons/readme.svg b/packages/desktop/src/assets/file-icons/readme.svg similarity index 100% rename from packages/app/src/assets/file-icons/readme.svg rename to packages/desktop/src/assets/file-icons/readme.svg diff --git a/packages/app/src/assets/file-icons/reason.svg b/packages/desktop/src/assets/file-icons/reason.svg similarity index 100% rename from packages/app/src/assets/file-icons/reason.svg rename to packages/desktop/src/assets/file-icons/reason.svg diff --git a/packages/app/src/assets/file-icons/red.svg b/packages/desktop/src/assets/file-icons/red.svg similarity index 100% rename from packages/app/src/assets/file-icons/red.svg rename to packages/desktop/src/assets/file-icons/red.svg diff --git a/packages/app/src/assets/file-icons/redux-action.svg b/packages/desktop/src/assets/file-icons/redux-action.svg similarity index 100% rename from packages/app/src/assets/file-icons/redux-action.svg rename to packages/desktop/src/assets/file-icons/redux-action.svg diff --git a/packages/app/src/assets/file-icons/redux-reducer.svg b/packages/desktop/src/assets/file-icons/redux-reducer.svg similarity index 100% rename from packages/app/src/assets/file-icons/redux-reducer.svg rename to packages/desktop/src/assets/file-icons/redux-reducer.svg diff --git a/packages/app/src/assets/file-icons/redux-selector.svg b/packages/desktop/src/assets/file-icons/redux-selector.svg similarity index 100% rename from packages/app/src/assets/file-icons/redux-selector.svg rename to packages/desktop/src/assets/file-icons/redux-selector.svg diff --git a/packages/app/src/assets/file-icons/redux-store.svg b/packages/desktop/src/assets/file-icons/redux-store.svg similarity index 100% rename from packages/app/src/assets/file-icons/redux-store.svg rename to packages/desktop/src/assets/file-icons/redux-store.svg diff --git a/packages/app/src/assets/file-icons/regedit.svg b/packages/desktop/src/assets/file-icons/regedit.svg similarity index 100% rename from packages/app/src/assets/file-icons/regedit.svg rename to packages/desktop/src/assets/file-icons/regedit.svg diff --git a/packages/app/src/assets/file-icons/remark.svg b/packages/desktop/src/assets/file-icons/remark.svg similarity index 100% rename from packages/app/src/assets/file-icons/remark.svg rename to packages/desktop/src/assets/file-icons/remark.svg diff --git a/packages/app/src/assets/file-icons/remix.svg b/packages/desktop/src/assets/file-icons/remix.svg similarity index 100% rename from packages/app/src/assets/file-icons/remix.svg rename to packages/desktop/src/assets/file-icons/remix.svg diff --git a/packages/app/src/assets/file-icons/remix_light.svg b/packages/desktop/src/assets/file-icons/remix_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/remix_light.svg rename to packages/desktop/src/assets/file-icons/remix_light.svg diff --git a/packages/app/src/assets/file-icons/renovate.svg b/packages/desktop/src/assets/file-icons/renovate.svg similarity index 100% rename from packages/app/src/assets/file-icons/renovate.svg rename to packages/desktop/src/assets/file-icons/renovate.svg diff --git a/packages/app/src/assets/file-icons/replit.svg b/packages/desktop/src/assets/file-icons/replit.svg similarity index 100% rename from packages/app/src/assets/file-icons/replit.svg rename to packages/desktop/src/assets/file-icons/replit.svg diff --git a/packages/app/src/assets/file-icons/rescript-interface.svg b/packages/desktop/src/assets/file-icons/rescript-interface.svg similarity index 100% rename from packages/app/src/assets/file-icons/rescript-interface.svg rename to packages/desktop/src/assets/file-icons/rescript-interface.svg diff --git a/packages/app/src/assets/file-icons/rescript.svg b/packages/desktop/src/assets/file-icons/rescript.svg similarity index 100% rename from packages/app/src/assets/file-icons/rescript.svg rename to packages/desktop/src/assets/file-icons/rescript.svg diff --git a/packages/app/src/assets/file-icons/restql.svg b/packages/desktop/src/assets/file-icons/restql.svg similarity index 100% rename from packages/app/src/assets/file-icons/restql.svg rename to packages/desktop/src/assets/file-icons/restql.svg diff --git a/packages/app/src/assets/file-icons/riot.svg b/packages/desktop/src/assets/file-icons/riot.svg similarity index 100% rename from packages/app/src/assets/file-icons/riot.svg rename to packages/desktop/src/assets/file-icons/riot.svg diff --git a/packages/app/src/assets/file-icons/roadmap.svg b/packages/desktop/src/assets/file-icons/roadmap.svg similarity index 100% rename from packages/app/src/assets/file-icons/roadmap.svg rename to packages/desktop/src/assets/file-icons/roadmap.svg diff --git a/packages/app/src/assets/file-icons/roblox.svg b/packages/desktop/src/assets/file-icons/roblox.svg similarity index 100% rename from packages/app/src/assets/file-icons/roblox.svg rename to packages/desktop/src/assets/file-icons/roblox.svg diff --git a/packages/app/src/assets/file-icons/robot.svg b/packages/desktop/src/assets/file-icons/robot.svg similarity index 100% rename from packages/app/src/assets/file-icons/robot.svg rename to packages/desktop/src/assets/file-icons/robot.svg diff --git a/packages/app/src/assets/file-icons/robots.svg b/packages/desktop/src/assets/file-icons/robots.svg similarity index 100% rename from packages/app/src/assets/file-icons/robots.svg rename to packages/desktop/src/assets/file-icons/robots.svg diff --git a/packages/app/src/assets/file-icons/rocket.svg b/packages/desktop/src/assets/file-icons/rocket.svg similarity index 100% rename from packages/app/src/assets/file-icons/rocket.svg rename to packages/desktop/src/assets/file-icons/rocket.svg diff --git a/packages/app/src/assets/file-icons/rojo.svg b/packages/desktop/src/assets/file-icons/rojo.svg similarity index 100% rename from packages/app/src/assets/file-icons/rojo.svg rename to packages/desktop/src/assets/file-icons/rojo.svg diff --git a/packages/app/src/assets/file-icons/rollup.svg b/packages/desktop/src/assets/file-icons/rollup.svg similarity index 100% rename from packages/app/src/assets/file-icons/rollup.svg rename to packages/desktop/src/assets/file-icons/rollup.svg diff --git a/packages/app/src/assets/file-icons/rome.svg b/packages/desktop/src/assets/file-icons/rome.svg similarity index 100% rename from packages/app/src/assets/file-icons/rome.svg rename to packages/desktop/src/assets/file-icons/rome.svg diff --git a/packages/app/src/assets/file-icons/routing.svg b/packages/desktop/src/assets/file-icons/routing.svg similarity index 100% rename from packages/app/src/assets/file-icons/routing.svg rename to packages/desktop/src/assets/file-icons/routing.svg diff --git a/packages/app/src/assets/file-icons/rspec.svg b/packages/desktop/src/assets/file-icons/rspec.svg similarity index 100% rename from packages/app/src/assets/file-icons/rspec.svg rename to packages/desktop/src/assets/file-icons/rspec.svg diff --git a/packages/app/src/assets/file-icons/rubocop.svg b/packages/desktop/src/assets/file-icons/rubocop.svg similarity index 100% rename from packages/app/src/assets/file-icons/rubocop.svg rename to packages/desktop/src/assets/file-icons/rubocop.svg diff --git a/packages/app/src/assets/file-icons/rubocop_light.svg b/packages/desktop/src/assets/file-icons/rubocop_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/rubocop_light.svg rename to packages/desktop/src/assets/file-icons/rubocop_light.svg diff --git a/packages/app/src/assets/file-icons/ruby.svg b/packages/desktop/src/assets/file-icons/ruby.svg similarity index 100% rename from packages/app/src/assets/file-icons/ruby.svg rename to packages/desktop/src/assets/file-icons/ruby.svg diff --git a/packages/app/src/assets/file-icons/ruff.svg b/packages/desktop/src/assets/file-icons/ruff.svg similarity index 100% rename from packages/app/src/assets/file-icons/ruff.svg rename to packages/desktop/src/assets/file-icons/ruff.svg diff --git a/packages/app/src/assets/file-icons/rust.svg b/packages/desktop/src/assets/file-icons/rust.svg similarity index 100% rename from packages/app/src/assets/file-icons/rust.svg rename to packages/desktop/src/assets/file-icons/rust.svg diff --git a/packages/app/src/assets/file-icons/salesforce.svg b/packages/desktop/src/assets/file-icons/salesforce.svg similarity index 100% rename from packages/app/src/assets/file-icons/salesforce.svg rename to packages/desktop/src/assets/file-icons/salesforce.svg diff --git a/packages/app/src/assets/file-icons/san.svg b/packages/desktop/src/assets/file-icons/san.svg similarity index 100% rename from packages/app/src/assets/file-icons/san.svg rename to packages/desktop/src/assets/file-icons/san.svg diff --git a/packages/app/src/assets/file-icons/sas.svg b/packages/desktop/src/assets/file-icons/sas.svg similarity index 100% rename from packages/app/src/assets/file-icons/sas.svg rename to packages/desktop/src/assets/file-icons/sas.svg diff --git a/packages/app/src/assets/file-icons/sass.svg b/packages/desktop/src/assets/file-icons/sass.svg similarity index 100% rename from packages/app/src/assets/file-icons/sass.svg rename to packages/desktop/src/assets/file-icons/sass.svg diff --git a/packages/app/src/assets/file-icons/sbt.svg b/packages/desktop/src/assets/file-icons/sbt.svg similarity index 100% rename from packages/app/src/assets/file-icons/sbt.svg rename to packages/desktop/src/assets/file-icons/sbt.svg diff --git a/packages/app/src/assets/file-icons/scala.svg b/packages/desktop/src/assets/file-icons/scala.svg similarity index 100% rename from packages/app/src/assets/file-icons/scala.svg rename to packages/desktop/src/assets/file-icons/scala.svg diff --git a/packages/app/src/assets/file-icons/scheme.svg b/packages/desktop/src/assets/file-icons/scheme.svg similarity index 100% rename from packages/app/src/assets/file-icons/scheme.svg rename to packages/desktop/src/assets/file-icons/scheme.svg diff --git a/packages/app/src/assets/file-icons/scons.svg b/packages/desktop/src/assets/file-icons/scons.svg similarity index 100% rename from packages/app/src/assets/file-icons/scons.svg rename to packages/desktop/src/assets/file-icons/scons.svg diff --git a/packages/app/src/assets/file-icons/scons_light.svg b/packages/desktop/src/assets/file-icons/scons_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/scons_light.svg rename to packages/desktop/src/assets/file-icons/scons_light.svg diff --git a/packages/app/src/assets/file-icons/screwdriver.svg b/packages/desktop/src/assets/file-icons/screwdriver.svg similarity index 100% rename from packages/app/src/assets/file-icons/screwdriver.svg rename to packages/desktop/src/assets/file-icons/screwdriver.svg diff --git a/packages/app/src/assets/file-icons/search.svg b/packages/desktop/src/assets/file-icons/search.svg similarity index 100% rename from packages/app/src/assets/file-icons/search.svg rename to packages/desktop/src/assets/file-icons/search.svg diff --git a/packages/app/src/assets/file-icons/semantic-release.svg b/packages/desktop/src/assets/file-icons/semantic-release.svg similarity index 100% rename from packages/app/src/assets/file-icons/semantic-release.svg rename to packages/desktop/src/assets/file-icons/semantic-release.svg diff --git a/packages/app/src/assets/file-icons/semantic-release_light.svg b/packages/desktop/src/assets/file-icons/semantic-release_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/semantic-release_light.svg rename to packages/desktop/src/assets/file-icons/semantic-release_light.svg diff --git a/packages/app/src/assets/file-icons/semgrep.svg b/packages/desktop/src/assets/file-icons/semgrep.svg similarity index 100% rename from packages/app/src/assets/file-icons/semgrep.svg rename to packages/desktop/src/assets/file-icons/semgrep.svg diff --git a/packages/app/src/assets/file-icons/sentry.svg b/packages/desktop/src/assets/file-icons/sentry.svg similarity index 100% rename from packages/app/src/assets/file-icons/sentry.svg rename to packages/desktop/src/assets/file-icons/sentry.svg diff --git a/packages/app/src/assets/file-icons/sequelize.svg b/packages/desktop/src/assets/file-icons/sequelize.svg similarity index 100% rename from packages/app/src/assets/file-icons/sequelize.svg rename to packages/desktop/src/assets/file-icons/sequelize.svg diff --git a/packages/app/src/assets/file-icons/serverless.svg b/packages/desktop/src/assets/file-icons/serverless.svg similarity index 100% rename from packages/app/src/assets/file-icons/serverless.svg rename to packages/desktop/src/assets/file-icons/serverless.svg diff --git a/packages/app/src/assets/file-icons/settings.svg b/packages/desktop/src/assets/file-icons/settings.svg similarity index 100% rename from packages/app/src/assets/file-icons/settings.svg rename to packages/desktop/src/assets/file-icons/settings.svg diff --git a/packages/app/src/assets/file-icons/shader.svg b/packages/desktop/src/assets/file-icons/shader.svg similarity index 100% rename from packages/app/src/assets/file-icons/shader.svg rename to packages/desktop/src/assets/file-icons/shader.svg diff --git a/packages/app/src/assets/file-icons/silverstripe.svg b/packages/desktop/src/assets/file-icons/silverstripe.svg similarity index 100% rename from packages/app/src/assets/file-icons/silverstripe.svg rename to packages/desktop/src/assets/file-icons/silverstripe.svg diff --git a/packages/app/src/assets/file-icons/simulink.svg b/packages/desktop/src/assets/file-icons/simulink.svg similarity index 100% rename from packages/app/src/assets/file-icons/simulink.svg rename to packages/desktop/src/assets/file-icons/simulink.svg diff --git a/packages/app/src/assets/file-icons/siyuan.svg b/packages/desktop/src/assets/file-icons/siyuan.svg similarity index 100% rename from packages/app/src/assets/file-icons/siyuan.svg rename to packages/desktop/src/assets/file-icons/siyuan.svg diff --git a/packages/app/src/assets/file-icons/sketch.svg b/packages/desktop/src/assets/file-icons/sketch.svg similarity index 100% rename from packages/app/src/assets/file-icons/sketch.svg rename to packages/desktop/src/assets/file-icons/sketch.svg diff --git a/packages/app/src/assets/file-icons/slim.svg b/packages/desktop/src/assets/file-icons/slim.svg similarity index 100% rename from packages/app/src/assets/file-icons/slim.svg rename to packages/desktop/src/assets/file-icons/slim.svg diff --git a/packages/app/src/assets/file-icons/slint.svg b/packages/desktop/src/assets/file-icons/slint.svg similarity index 100% rename from packages/app/src/assets/file-icons/slint.svg rename to packages/desktop/src/assets/file-icons/slint.svg diff --git a/packages/app/src/assets/file-icons/slug.svg b/packages/desktop/src/assets/file-icons/slug.svg similarity index 100% rename from packages/app/src/assets/file-icons/slug.svg rename to packages/desktop/src/assets/file-icons/slug.svg diff --git a/packages/app/src/assets/file-icons/smarty.svg b/packages/desktop/src/assets/file-icons/smarty.svg similarity index 100% rename from packages/app/src/assets/file-icons/smarty.svg rename to packages/desktop/src/assets/file-icons/smarty.svg diff --git a/packages/app/src/assets/file-icons/sml.svg b/packages/desktop/src/assets/file-icons/sml.svg similarity index 100% rename from packages/app/src/assets/file-icons/sml.svg rename to packages/desktop/src/assets/file-icons/sml.svg diff --git a/packages/app/src/assets/file-icons/snakemake.svg b/packages/desktop/src/assets/file-icons/snakemake.svg similarity index 100% rename from packages/app/src/assets/file-icons/snakemake.svg rename to packages/desktop/src/assets/file-icons/snakemake.svg diff --git a/packages/app/src/assets/file-icons/snapcraft.svg b/packages/desktop/src/assets/file-icons/snapcraft.svg similarity index 100% rename from packages/app/src/assets/file-icons/snapcraft.svg rename to packages/desktop/src/assets/file-icons/snapcraft.svg diff --git a/packages/app/src/assets/file-icons/snowpack.svg b/packages/desktop/src/assets/file-icons/snowpack.svg similarity index 100% rename from packages/app/src/assets/file-icons/snowpack.svg rename to packages/desktop/src/assets/file-icons/snowpack.svg diff --git a/packages/app/src/assets/file-icons/snowpack_light.svg b/packages/desktop/src/assets/file-icons/snowpack_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/snowpack_light.svg rename to packages/desktop/src/assets/file-icons/snowpack_light.svg diff --git a/packages/app/src/assets/file-icons/snyk.svg b/packages/desktop/src/assets/file-icons/snyk.svg similarity index 100% rename from packages/app/src/assets/file-icons/snyk.svg rename to packages/desktop/src/assets/file-icons/snyk.svg diff --git a/packages/app/src/assets/file-icons/solidity.svg b/packages/desktop/src/assets/file-icons/solidity.svg similarity index 100% rename from packages/app/src/assets/file-icons/solidity.svg rename to packages/desktop/src/assets/file-icons/solidity.svg diff --git a/packages/app/src/assets/file-icons/sonarcloud.svg b/packages/desktop/src/assets/file-icons/sonarcloud.svg similarity index 100% rename from packages/app/src/assets/file-icons/sonarcloud.svg rename to packages/desktop/src/assets/file-icons/sonarcloud.svg diff --git a/packages/app/src/assets/file-icons/spwn.svg b/packages/desktop/src/assets/file-icons/spwn.svg similarity index 100% rename from packages/app/src/assets/file-icons/spwn.svg rename to packages/desktop/src/assets/file-icons/spwn.svg diff --git a/packages/app/src/assets/file-icons/stackblitz.svg b/packages/desktop/src/assets/file-icons/stackblitz.svg similarity index 100% rename from packages/app/src/assets/file-icons/stackblitz.svg rename to packages/desktop/src/assets/file-icons/stackblitz.svg diff --git a/packages/app/src/assets/file-icons/stan.svg b/packages/desktop/src/assets/file-icons/stan.svg similarity index 100% rename from packages/app/src/assets/file-icons/stan.svg rename to packages/desktop/src/assets/file-icons/stan.svg diff --git a/packages/app/src/assets/file-icons/steadybit.svg b/packages/desktop/src/assets/file-icons/steadybit.svg similarity index 100% rename from packages/app/src/assets/file-icons/steadybit.svg rename to packages/desktop/src/assets/file-icons/steadybit.svg diff --git a/packages/app/src/assets/file-icons/stencil.svg b/packages/desktop/src/assets/file-icons/stencil.svg similarity index 100% rename from packages/app/src/assets/file-icons/stencil.svg rename to packages/desktop/src/assets/file-icons/stencil.svg diff --git a/packages/app/src/assets/file-icons/stitches.svg b/packages/desktop/src/assets/file-icons/stitches.svg similarity index 100% rename from packages/app/src/assets/file-icons/stitches.svg rename to packages/desktop/src/assets/file-icons/stitches.svg diff --git a/packages/app/src/assets/file-icons/stitches_light.svg b/packages/desktop/src/assets/file-icons/stitches_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/stitches_light.svg rename to packages/desktop/src/assets/file-icons/stitches_light.svg diff --git a/packages/app/src/assets/file-icons/storybook.svg b/packages/desktop/src/assets/file-icons/storybook.svg similarity index 100% rename from packages/app/src/assets/file-icons/storybook.svg rename to packages/desktop/src/assets/file-icons/storybook.svg diff --git a/packages/app/src/assets/file-icons/stryker.svg b/packages/desktop/src/assets/file-icons/stryker.svg similarity index 100% rename from packages/app/src/assets/file-icons/stryker.svg rename to packages/desktop/src/assets/file-icons/stryker.svg diff --git a/packages/app/src/assets/file-icons/stylable.svg b/packages/desktop/src/assets/file-icons/stylable.svg similarity index 100% rename from packages/app/src/assets/file-icons/stylable.svg rename to packages/desktop/src/assets/file-icons/stylable.svg diff --git a/packages/app/src/assets/file-icons/stylelint.svg b/packages/desktop/src/assets/file-icons/stylelint.svg similarity index 100% rename from packages/app/src/assets/file-icons/stylelint.svg rename to packages/desktop/src/assets/file-icons/stylelint.svg diff --git a/packages/app/src/assets/file-icons/stylelint_light.svg b/packages/desktop/src/assets/file-icons/stylelint_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/stylelint_light.svg rename to packages/desktop/src/assets/file-icons/stylelint_light.svg diff --git a/packages/app/src/assets/file-icons/stylus.svg b/packages/desktop/src/assets/file-icons/stylus.svg similarity index 100% rename from packages/app/src/assets/file-icons/stylus.svg rename to packages/desktop/src/assets/file-icons/stylus.svg diff --git a/packages/app/src/assets/file-icons/sublime.svg b/packages/desktop/src/assets/file-icons/sublime.svg similarity index 100% rename from packages/app/src/assets/file-icons/sublime.svg rename to packages/desktop/src/assets/file-icons/sublime.svg diff --git a/packages/app/src/assets/file-icons/subtitles.svg b/packages/desktop/src/assets/file-icons/subtitles.svg similarity index 100% rename from packages/app/src/assets/file-icons/subtitles.svg rename to packages/desktop/src/assets/file-icons/subtitles.svg diff --git a/packages/app/src/assets/file-icons/supabase.svg b/packages/desktop/src/assets/file-icons/supabase.svg similarity index 100% rename from packages/app/src/assets/file-icons/supabase.svg rename to packages/desktop/src/assets/file-icons/supabase.svg diff --git a/packages/app/src/assets/file-icons/svelte.svg b/packages/desktop/src/assets/file-icons/svelte.svg similarity index 100% rename from packages/app/src/assets/file-icons/svelte.svg rename to packages/desktop/src/assets/file-icons/svelte.svg diff --git a/packages/app/src/assets/file-icons/svg.svg b/packages/desktop/src/assets/file-icons/svg.svg similarity index 100% rename from packages/app/src/assets/file-icons/svg.svg rename to packages/desktop/src/assets/file-icons/svg.svg diff --git a/packages/app/src/assets/file-icons/svgo.svg b/packages/desktop/src/assets/file-icons/svgo.svg similarity index 100% rename from packages/app/src/assets/file-icons/svgo.svg rename to packages/desktop/src/assets/file-icons/svgo.svg diff --git a/packages/app/src/assets/file-icons/svgr.svg b/packages/desktop/src/assets/file-icons/svgr.svg similarity index 100% rename from packages/app/src/assets/file-icons/svgr.svg rename to packages/desktop/src/assets/file-icons/svgr.svg diff --git a/packages/app/src/assets/file-icons/swagger.svg b/packages/desktop/src/assets/file-icons/swagger.svg similarity index 100% rename from packages/app/src/assets/file-icons/swagger.svg rename to packages/desktop/src/assets/file-icons/swagger.svg diff --git a/packages/app/src/assets/file-icons/sway.svg b/packages/desktop/src/assets/file-icons/sway.svg similarity index 100% rename from packages/app/src/assets/file-icons/sway.svg rename to packages/desktop/src/assets/file-icons/sway.svg diff --git a/packages/app/src/assets/file-icons/swc.svg b/packages/desktop/src/assets/file-icons/swc.svg similarity index 100% rename from packages/app/src/assets/file-icons/swc.svg rename to packages/desktop/src/assets/file-icons/swc.svg diff --git a/packages/app/src/assets/file-icons/swift.svg b/packages/desktop/src/assets/file-icons/swift.svg similarity index 100% rename from packages/app/src/assets/file-icons/swift.svg rename to packages/desktop/src/assets/file-icons/swift.svg diff --git a/packages/app/src/assets/file-icons/syncpack.svg b/packages/desktop/src/assets/file-icons/syncpack.svg similarity index 100% rename from packages/app/src/assets/file-icons/syncpack.svg rename to packages/desktop/src/assets/file-icons/syncpack.svg diff --git a/packages/app/src/assets/file-icons/systemd.svg b/packages/desktop/src/assets/file-icons/systemd.svg similarity index 100% rename from packages/app/src/assets/file-icons/systemd.svg rename to packages/desktop/src/assets/file-icons/systemd.svg diff --git a/packages/app/src/assets/file-icons/systemd_light.svg b/packages/desktop/src/assets/file-icons/systemd_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/systemd_light.svg rename to packages/desktop/src/assets/file-icons/systemd_light.svg diff --git a/packages/app/src/assets/file-icons/table.svg b/packages/desktop/src/assets/file-icons/table.svg similarity index 100% rename from packages/app/src/assets/file-icons/table.svg rename to packages/desktop/src/assets/file-icons/table.svg diff --git a/packages/app/src/assets/file-icons/tailwindcss.svg b/packages/desktop/src/assets/file-icons/tailwindcss.svg similarity index 100% rename from packages/app/src/assets/file-icons/tailwindcss.svg rename to packages/desktop/src/assets/file-icons/tailwindcss.svg diff --git a/packages/app/src/assets/file-icons/taskfile.svg b/packages/desktop/src/assets/file-icons/taskfile.svg similarity index 100% rename from packages/app/src/assets/file-icons/taskfile.svg rename to packages/desktop/src/assets/file-icons/taskfile.svg diff --git a/packages/app/src/assets/file-icons/tauri.svg b/packages/desktop/src/assets/file-icons/tauri.svg similarity index 100% rename from packages/app/src/assets/file-icons/tauri.svg rename to packages/desktop/src/assets/file-icons/tauri.svg diff --git a/packages/app/src/assets/file-icons/taze.svg b/packages/desktop/src/assets/file-icons/taze.svg similarity index 100% rename from packages/app/src/assets/file-icons/taze.svg rename to packages/desktop/src/assets/file-icons/taze.svg diff --git a/packages/app/src/assets/file-icons/tcl.svg b/packages/desktop/src/assets/file-icons/tcl.svg similarity index 100% rename from packages/app/src/assets/file-icons/tcl.svg rename to packages/desktop/src/assets/file-icons/tcl.svg diff --git a/packages/app/src/assets/file-icons/teal.svg b/packages/desktop/src/assets/file-icons/teal.svg similarity index 100% rename from packages/app/src/assets/file-icons/teal.svg rename to packages/desktop/src/assets/file-icons/teal.svg diff --git a/packages/app/src/assets/file-icons/templ.svg b/packages/desktop/src/assets/file-icons/templ.svg similarity index 100% rename from packages/app/src/assets/file-icons/templ.svg rename to packages/desktop/src/assets/file-icons/templ.svg diff --git a/packages/app/src/assets/file-icons/template.svg b/packages/desktop/src/assets/file-icons/template.svg similarity index 100% rename from packages/app/src/assets/file-icons/template.svg rename to packages/desktop/src/assets/file-icons/template.svg diff --git a/packages/app/src/assets/file-icons/terraform.svg b/packages/desktop/src/assets/file-icons/terraform.svg similarity index 100% rename from packages/app/src/assets/file-icons/terraform.svg rename to packages/desktop/src/assets/file-icons/terraform.svg diff --git a/packages/app/src/assets/file-icons/test-js.svg b/packages/desktop/src/assets/file-icons/test-js.svg similarity index 100% rename from packages/app/src/assets/file-icons/test-js.svg rename to packages/desktop/src/assets/file-icons/test-js.svg diff --git a/packages/app/src/assets/file-icons/test-jsx.svg b/packages/desktop/src/assets/file-icons/test-jsx.svg similarity index 100% rename from packages/app/src/assets/file-icons/test-jsx.svg rename to packages/desktop/src/assets/file-icons/test-jsx.svg diff --git a/packages/app/src/assets/file-icons/test-ts.svg b/packages/desktop/src/assets/file-icons/test-ts.svg similarity index 100% rename from packages/app/src/assets/file-icons/test-ts.svg rename to packages/desktop/src/assets/file-icons/test-ts.svg diff --git a/packages/app/src/assets/file-icons/tex.svg b/packages/desktop/src/assets/file-icons/tex.svg similarity index 100% rename from packages/app/src/assets/file-icons/tex.svg rename to packages/desktop/src/assets/file-icons/tex.svg diff --git a/packages/app/src/assets/file-icons/textlint.svg b/packages/desktop/src/assets/file-icons/textlint.svg similarity index 100% rename from packages/app/src/assets/file-icons/textlint.svg rename to packages/desktop/src/assets/file-icons/textlint.svg diff --git a/packages/app/src/assets/file-icons/tilt.svg b/packages/desktop/src/assets/file-icons/tilt.svg similarity index 100% rename from packages/app/src/assets/file-icons/tilt.svg rename to packages/desktop/src/assets/file-icons/tilt.svg diff --git a/packages/app/src/assets/file-icons/tldraw.svg b/packages/desktop/src/assets/file-icons/tldraw.svg similarity index 100% rename from packages/app/src/assets/file-icons/tldraw.svg rename to packages/desktop/src/assets/file-icons/tldraw.svg diff --git a/packages/app/src/assets/file-icons/tldraw_light.svg b/packages/desktop/src/assets/file-icons/tldraw_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/tldraw_light.svg rename to packages/desktop/src/assets/file-icons/tldraw_light.svg diff --git a/packages/app/src/assets/file-icons/tobi.svg b/packages/desktop/src/assets/file-icons/tobi.svg similarity index 100% rename from packages/app/src/assets/file-icons/tobi.svg rename to packages/desktop/src/assets/file-icons/tobi.svg diff --git a/packages/app/src/assets/file-icons/tobimake.svg b/packages/desktop/src/assets/file-icons/tobimake.svg similarity index 100% rename from packages/app/src/assets/file-icons/tobimake.svg rename to packages/desktop/src/assets/file-icons/tobimake.svg diff --git a/packages/app/src/assets/file-icons/todo.svg b/packages/desktop/src/assets/file-icons/todo.svg similarity index 100% rename from packages/app/src/assets/file-icons/todo.svg rename to packages/desktop/src/assets/file-icons/todo.svg diff --git a/packages/app/src/assets/file-icons/toml.svg b/packages/desktop/src/assets/file-icons/toml.svg similarity index 100% rename from packages/app/src/assets/file-icons/toml.svg rename to packages/desktop/src/assets/file-icons/toml.svg diff --git a/packages/app/src/assets/file-icons/toml_light.svg b/packages/desktop/src/assets/file-icons/toml_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/toml_light.svg rename to packages/desktop/src/assets/file-icons/toml_light.svg diff --git a/packages/app/src/assets/file-icons/travis.svg b/packages/desktop/src/assets/file-icons/travis.svg similarity index 100% rename from packages/app/src/assets/file-icons/travis.svg rename to packages/desktop/src/assets/file-icons/travis.svg diff --git a/packages/app/src/assets/file-icons/tree.svg b/packages/desktop/src/assets/file-icons/tree.svg similarity index 100% rename from packages/app/src/assets/file-icons/tree.svg rename to packages/desktop/src/assets/file-icons/tree.svg diff --git a/packages/app/src/assets/file-icons/trigger.svg b/packages/desktop/src/assets/file-icons/trigger.svg similarity index 100% rename from packages/app/src/assets/file-icons/trigger.svg rename to packages/desktop/src/assets/file-icons/trigger.svg diff --git a/packages/app/src/assets/file-icons/tsconfig.svg b/packages/desktop/src/assets/file-icons/tsconfig.svg similarity index 100% rename from packages/app/src/assets/file-icons/tsconfig.svg rename to packages/desktop/src/assets/file-icons/tsconfig.svg diff --git a/packages/app/src/assets/file-icons/tsdoc.svg b/packages/desktop/src/assets/file-icons/tsdoc.svg similarity index 100% rename from packages/app/src/assets/file-icons/tsdoc.svg rename to packages/desktop/src/assets/file-icons/tsdoc.svg diff --git a/packages/app/src/assets/file-icons/tsil.svg b/packages/desktop/src/assets/file-icons/tsil.svg similarity index 100% rename from packages/app/src/assets/file-icons/tsil.svg rename to packages/desktop/src/assets/file-icons/tsil.svg diff --git a/packages/app/src/assets/file-icons/tune.svg b/packages/desktop/src/assets/file-icons/tune.svg similarity index 100% rename from packages/app/src/assets/file-icons/tune.svg rename to packages/desktop/src/assets/file-icons/tune.svg diff --git a/packages/app/src/assets/file-icons/turborepo.svg b/packages/desktop/src/assets/file-icons/turborepo.svg similarity index 100% rename from packages/app/src/assets/file-icons/turborepo.svg rename to packages/desktop/src/assets/file-icons/turborepo.svg diff --git a/packages/app/src/assets/file-icons/turborepo_light.svg b/packages/desktop/src/assets/file-icons/turborepo_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/turborepo_light.svg rename to packages/desktop/src/assets/file-icons/turborepo_light.svg diff --git a/packages/app/src/assets/file-icons/twig.svg b/packages/desktop/src/assets/file-icons/twig.svg similarity index 100% rename from packages/app/src/assets/file-icons/twig.svg rename to packages/desktop/src/assets/file-icons/twig.svg diff --git a/packages/app/src/assets/file-icons/twine.svg b/packages/desktop/src/assets/file-icons/twine.svg similarity index 100% rename from packages/app/src/assets/file-icons/twine.svg rename to packages/desktop/src/assets/file-icons/twine.svg diff --git a/packages/app/src/assets/file-icons/typescript-def.svg b/packages/desktop/src/assets/file-icons/typescript-def.svg similarity index 100% rename from packages/app/src/assets/file-icons/typescript-def.svg rename to packages/desktop/src/assets/file-icons/typescript-def.svg diff --git a/packages/app/src/assets/file-icons/typescript.svg b/packages/desktop/src/assets/file-icons/typescript.svg similarity index 100% rename from packages/app/src/assets/file-icons/typescript.svg rename to packages/desktop/src/assets/file-icons/typescript.svg diff --git a/packages/app/src/assets/file-icons/typst.svg b/packages/desktop/src/assets/file-icons/typst.svg similarity index 100% rename from packages/app/src/assets/file-icons/typst.svg rename to packages/desktop/src/assets/file-icons/typst.svg diff --git a/packages/app/src/assets/file-icons/umi.svg b/packages/desktop/src/assets/file-icons/umi.svg similarity index 100% rename from packages/app/src/assets/file-icons/umi.svg rename to packages/desktop/src/assets/file-icons/umi.svg diff --git a/packages/app/src/assets/file-icons/uml.svg b/packages/desktop/src/assets/file-icons/uml.svg similarity index 100% rename from packages/app/src/assets/file-icons/uml.svg rename to packages/desktop/src/assets/file-icons/uml.svg diff --git a/packages/app/src/assets/file-icons/uml_light.svg b/packages/desktop/src/assets/file-icons/uml_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/uml_light.svg rename to packages/desktop/src/assets/file-icons/uml_light.svg diff --git a/packages/app/src/assets/file-icons/unity.svg b/packages/desktop/src/assets/file-icons/unity.svg similarity index 100% rename from packages/app/src/assets/file-icons/unity.svg rename to packages/desktop/src/assets/file-icons/unity.svg diff --git a/packages/app/src/assets/file-icons/unocss.svg b/packages/desktop/src/assets/file-icons/unocss.svg similarity index 100% rename from packages/app/src/assets/file-icons/unocss.svg rename to packages/desktop/src/assets/file-icons/unocss.svg diff --git a/packages/app/src/assets/file-icons/url.svg b/packages/desktop/src/assets/file-icons/url.svg similarity index 100% rename from packages/app/src/assets/file-icons/url.svg rename to packages/desktop/src/assets/file-icons/url.svg diff --git a/packages/app/src/assets/file-icons/uv.svg b/packages/desktop/src/assets/file-icons/uv.svg similarity index 100% rename from packages/app/src/assets/file-icons/uv.svg rename to packages/desktop/src/assets/file-icons/uv.svg diff --git a/packages/app/src/assets/file-icons/vagrant.svg b/packages/desktop/src/assets/file-icons/vagrant.svg similarity index 100% rename from packages/app/src/assets/file-icons/vagrant.svg rename to packages/desktop/src/assets/file-icons/vagrant.svg diff --git a/packages/app/src/assets/file-icons/vala.svg b/packages/desktop/src/assets/file-icons/vala.svg similarity index 100% rename from packages/app/src/assets/file-icons/vala.svg rename to packages/desktop/src/assets/file-icons/vala.svg diff --git a/packages/app/src/assets/file-icons/vanilla-extract.svg b/packages/desktop/src/assets/file-icons/vanilla-extract.svg similarity index 100% rename from packages/app/src/assets/file-icons/vanilla-extract.svg rename to packages/desktop/src/assets/file-icons/vanilla-extract.svg diff --git a/packages/app/src/assets/file-icons/varnish.svg b/packages/desktop/src/assets/file-icons/varnish.svg similarity index 100% rename from packages/app/src/assets/file-icons/varnish.svg rename to packages/desktop/src/assets/file-icons/varnish.svg diff --git a/packages/app/src/assets/file-icons/vedic.svg b/packages/desktop/src/assets/file-icons/vedic.svg similarity index 100% rename from packages/app/src/assets/file-icons/vedic.svg rename to packages/desktop/src/assets/file-icons/vedic.svg diff --git a/packages/app/src/assets/file-icons/velite.svg b/packages/desktop/src/assets/file-icons/velite.svg similarity index 100% rename from packages/app/src/assets/file-icons/velite.svg rename to packages/desktop/src/assets/file-icons/velite.svg diff --git a/packages/app/src/assets/file-icons/velocity.svg b/packages/desktop/src/assets/file-icons/velocity.svg similarity index 100% rename from packages/app/src/assets/file-icons/velocity.svg rename to packages/desktop/src/assets/file-icons/velocity.svg diff --git a/packages/app/src/assets/file-icons/vercel.svg b/packages/desktop/src/assets/file-icons/vercel.svg similarity index 100% rename from packages/app/src/assets/file-icons/vercel.svg rename to packages/desktop/src/assets/file-icons/vercel.svg diff --git a/packages/app/src/assets/file-icons/vercel_light.svg b/packages/desktop/src/assets/file-icons/vercel_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/vercel_light.svg rename to packages/desktop/src/assets/file-icons/vercel_light.svg diff --git a/packages/app/src/assets/file-icons/verdaccio.svg b/packages/desktop/src/assets/file-icons/verdaccio.svg similarity index 100% rename from packages/app/src/assets/file-icons/verdaccio.svg rename to packages/desktop/src/assets/file-icons/verdaccio.svg diff --git a/packages/app/src/assets/file-icons/verified.svg b/packages/desktop/src/assets/file-icons/verified.svg similarity index 100% rename from packages/app/src/assets/file-icons/verified.svg rename to packages/desktop/src/assets/file-icons/verified.svg diff --git a/packages/app/src/assets/file-icons/verilog.svg b/packages/desktop/src/assets/file-icons/verilog.svg similarity index 100% rename from packages/app/src/assets/file-icons/verilog.svg rename to packages/desktop/src/assets/file-icons/verilog.svg diff --git a/packages/app/src/assets/file-icons/vfl.svg b/packages/desktop/src/assets/file-icons/vfl.svg similarity index 100% rename from packages/app/src/assets/file-icons/vfl.svg rename to packages/desktop/src/assets/file-icons/vfl.svg diff --git a/packages/app/src/assets/file-icons/video.svg b/packages/desktop/src/assets/file-icons/video.svg similarity index 100% rename from packages/app/src/assets/file-icons/video.svg rename to packages/desktop/src/assets/file-icons/video.svg diff --git a/packages/app/src/assets/file-icons/vim.svg b/packages/desktop/src/assets/file-icons/vim.svg similarity index 100% rename from packages/app/src/assets/file-icons/vim.svg rename to packages/desktop/src/assets/file-icons/vim.svg diff --git a/packages/app/src/assets/file-icons/virtual.svg b/packages/desktop/src/assets/file-icons/virtual.svg similarity index 100% rename from packages/app/src/assets/file-icons/virtual.svg rename to packages/desktop/src/assets/file-icons/virtual.svg diff --git a/packages/app/src/assets/file-icons/visualstudio.svg b/packages/desktop/src/assets/file-icons/visualstudio.svg similarity index 100% rename from packages/app/src/assets/file-icons/visualstudio.svg rename to packages/desktop/src/assets/file-icons/visualstudio.svg diff --git a/packages/app/src/assets/file-icons/vite.svg b/packages/desktop/src/assets/file-icons/vite.svg similarity index 100% rename from packages/app/src/assets/file-icons/vite.svg rename to packages/desktop/src/assets/file-icons/vite.svg diff --git a/packages/app/src/assets/file-icons/vitest.svg b/packages/desktop/src/assets/file-icons/vitest.svg similarity index 100% rename from packages/app/src/assets/file-icons/vitest.svg rename to packages/desktop/src/assets/file-icons/vitest.svg diff --git a/packages/app/src/assets/file-icons/vlang.svg b/packages/desktop/src/assets/file-icons/vlang.svg similarity index 100% rename from packages/app/src/assets/file-icons/vlang.svg rename to packages/desktop/src/assets/file-icons/vlang.svg diff --git a/packages/app/src/assets/file-icons/vscode.svg b/packages/desktop/src/assets/file-icons/vscode.svg similarity index 100% rename from packages/app/src/assets/file-icons/vscode.svg rename to packages/desktop/src/assets/file-icons/vscode.svg diff --git a/packages/app/src/assets/file-icons/vue-config.svg b/packages/desktop/src/assets/file-icons/vue-config.svg similarity index 100% rename from packages/app/src/assets/file-icons/vue-config.svg rename to packages/desktop/src/assets/file-icons/vue-config.svg diff --git a/packages/app/src/assets/file-icons/vue.svg b/packages/desktop/src/assets/file-icons/vue.svg similarity index 100% rename from packages/app/src/assets/file-icons/vue.svg rename to packages/desktop/src/assets/file-icons/vue.svg diff --git a/packages/app/src/assets/file-icons/vuex-store.svg b/packages/desktop/src/assets/file-icons/vuex-store.svg similarity index 100% rename from packages/app/src/assets/file-icons/vuex-store.svg rename to packages/desktop/src/assets/file-icons/vuex-store.svg diff --git a/packages/app/src/assets/file-icons/wakatime.svg b/packages/desktop/src/assets/file-icons/wakatime.svg similarity index 100% rename from packages/app/src/assets/file-icons/wakatime.svg rename to packages/desktop/src/assets/file-icons/wakatime.svg diff --git a/packages/app/src/assets/file-icons/wakatime_light.svg b/packages/desktop/src/assets/file-icons/wakatime_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/wakatime_light.svg rename to packages/desktop/src/assets/file-icons/wakatime_light.svg diff --git a/packages/app/src/assets/file-icons/wallaby.svg b/packages/desktop/src/assets/file-icons/wallaby.svg similarity index 100% rename from packages/app/src/assets/file-icons/wallaby.svg rename to packages/desktop/src/assets/file-icons/wallaby.svg diff --git a/packages/app/src/assets/file-icons/wally.svg b/packages/desktop/src/assets/file-icons/wally.svg similarity index 100% rename from packages/app/src/assets/file-icons/wally.svg rename to packages/desktop/src/assets/file-icons/wally.svg diff --git a/packages/app/src/assets/file-icons/watchman.svg b/packages/desktop/src/assets/file-icons/watchman.svg similarity index 100% rename from packages/app/src/assets/file-icons/watchman.svg rename to packages/desktop/src/assets/file-icons/watchman.svg diff --git a/packages/app/src/assets/file-icons/webassembly.svg b/packages/desktop/src/assets/file-icons/webassembly.svg similarity index 100% rename from packages/app/src/assets/file-icons/webassembly.svg rename to packages/desktop/src/assets/file-icons/webassembly.svg diff --git a/packages/app/src/assets/file-icons/webhint.svg b/packages/desktop/src/assets/file-icons/webhint.svg similarity index 100% rename from packages/app/src/assets/file-icons/webhint.svg rename to packages/desktop/src/assets/file-icons/webhint.svg diff --git a/packages/app/src/assets/file-icons/webpack.svg b/packages/desktop/src/assets/file-icons/webpack.svg similarity index 100% rename from packages/app/src/assets/file-icons/webpack.svg rename to packages/desktop/src/assets/file-icons/webpack.svg diff --git a/packages/app/src/assets/file-icons/wepy.svg b/packages/desktop/src/assets/file-icons/wepy.svg similarity index 100% rename from packages/app/src/assets/file-icons/wepy.svg rename to packages/desktop/src/assets/file-icons/wepy.svg diff --git a/packages/app/src/assets/file-icons/werf.svg b/packages/desktop/src/assets/file-icons/werf.svg similarity index 100% rename from packages/app/src/assets/file-icons/werf.svg rename to packages/desktop/src/assets/file-icons/werf.svg diff --git a/packages/app/src/assets/file-icons/windicss.svg b/packages/desktop/src/assets/file-icons/windicss.svg similarity index 100% rename from packages/app/src/assets/file-icons/windicss.svg rename to packages/desktop/src/assets/file-icons/windicss.svg diff --git a/packages/app/src/assets/file-icons/wolframlanguage.svg b/packages/desktop/src/assets/file-icons/wolframlanguage.svg similarity index 100% rename from packages/app/src/assets/file-icons/wolframlanguage.svg rename to packages/desktop/src/assets/file-icons/wolframlanguage.svg diff --git a/packages/app/src/assets/file-icons/word.svg b/packages/desktop/src/assets/file-icons/word.svg similarity index 100% rename from packages/app/src/assets/file-icons/word.svg rename to packages/desktop/src/assets/file-icons/word.svg diff --git a/packages/app/src/assets/file-icons/wrangler.svg b/packages/desktop/src/assets/file-icons/wrangler.svg similarity index 100% rename from packages/app/src/assets/file-icons/wrangler.svg rename to packages/desktop/src/assets/file-icons/wrangler.svg diff --git a/packages/app/src/assets/file-icons/wxt.svg b/packages/desktop/src/assets/file-icons/wxt.svg similarity index 100% rename from packages/app/src/assets/file-icons/wxt.svg rename to packages/desktop/src/assets/file-icons/wxt.svg diff --git a/packages/app/src/assets/file-icons/xaml.svg b/packages/desktop/src/assets/file-icons/xaml.svg similarity index 100% rename from packages/app/src/assets/file-icons/xaml.svg rename to packages/desktop/src/assets/file-icons/xaml.svg diff --git a/packages/app/src/assets/file-icons/xmake.svg b/packages/desktop/src/assets/file-icons/xmake.svg similarity index 100% rename from packages/app/src/assets/file-icons/xmake.svg rename to packages/desktop/src/assets/file-icons/xmake.svg diff --git a/packages/app/src/assets/file-icons/xml.svg b/packages/desktop/src/assets/file-icons/xml.svg similarity index 100% rename from packages/app/src/assets/file-icons/xml.svg rename to packages/desktop/src/assets/file-icons/xml.svg diff --git a/packages/app/src/assets/file-icons/yaml.svg b/packages/desktop/src/assets/file-icons/yaml.svg similarity index 100% rename from packages/app/src/assets/file-icons/yaml.svg rename to packages/desktop/src/assets/file-icons/yaml.svg diff --git a/packages/app/src/assets/file-icons/yang.svg b/packages/desktop/src/assets/file-icons/yang.svg similarity index 100% rename from packages/app/src/assets/file-icons/yang.svg rename to packages/desktop/src/assets/file-icons/yang.svg diff --git a/packages/app/src/assets/file-icons/yarn.svg b/packages/desktop/src/assets/file-icons/yarn.svg similarity index 100% rename from packages/app/src/assets/file-icons/yarn.svg rename to packages/desktop/src/assets/file-icons/yarn.svg diff --git a/packages/app/src/assets/file-icons/zeabur.svg b/packages/desktop/src/assets/file-icons/zeabur.svg similarity index 100% rename from packages/app/src/assets/file-icons/zeabur.svg rename to packages/desktop/src/assets/file-icons/zeabur.svg diff --git a/packages/app/src/assets/file-icons/zeabur_light.svg b/packages/desktop/src/assets/file-icons/zeabur_light.svg similarity index 100% rename from packages/app/src/assets/file-icons/zeabur_light.svg rename to packages/desktop/src/assets/file-icons/zeabur_light.svg diff --git a/packages/app/src/assets/file-icons/zig.svg b/packages/desktop/src/assets/file-icons/zig.svg similarity index 100% rename from packages/app/src/assets/file-icons/zig.svg rename to packages/desktop/src/assets/file-icons/zig.svg diff --git a/packages/app/src/assets/file-icons/zip.svg b/packages/desktop/src/assets/file-icons/zip.svg similarity index 100% rename from packages/app/src/assets/file-icons/zip.svg rename to packages/desktop/src/assets/file-icons/zip.svg diff --git a/packages/app/src/components/code.tsx b/packages/desktop/src/components/code.tsx similarity index 100% rename from packages/app/src/components/code.tsx rename to packages/desktop/src/components/code.tsx diff --git a/packages/app/src/components/editor-pane.tsx b/packages/desktop/src/components/editor-pane.tsx similarity index 100% rename from packages/app/src/components/editor-pane.tsx rename to packages/desktop/src/components/editor-pane.tsx diff --git a/packages/app/src/components/file-tree.tsx b/packages/desktop/src/components/file-tree.tsx similarity index 100% rename from packages/app/src/components/file-tree.tsx rename to packages/desktop/src/components/file-tree.tsx diff --git a/packages/app/src/components/markdown.tsx b/packages/desktop/src/components/markdown.tsx similarity index 100% rename from packages/app/src/components/markdown.tsx rename to packages/desktop/src/components/markdown.tsx diff --git a/packages/app/src/components/prompt-form.tsx b/packages/desktop/src/components/prompt-form.tsx similarity index 100% rename from packages/app/src/components/prompt-form.tsx rename to packages/desktop/src/components/prompt-form.tsx diff --git a/packages/app/src/components/resizeable-pane.tsx b/packages/desktop/src/components/resizeable-pane.tsx similarity index 100% rename from packages/app/src/components/resizeable-pane.tsx rename to packages/desktop/src/components/resizeable-pane.tsx diff --git a/packages/app/src/components/select-dialog.tsx b/packages/desktop/src/components/select-dialog.tsx similarity index 100% rename from packages/app/src/components/select-dialog.tsx rename to packages/desktop/src/components/select-dialog.tsx diff --git a/packages/app/src/components/select.tsx b/packages/desktop/src/components/select.tsx similarity index 100% rename from packages/app/src/components/select.tsx rename to packages/desktop/src/components/select.tsx diff --git a/packages/app/src/components/session-list.tsx b/packages/desktop/src/components/session-list.tsx similarity index 100% rename from packages/app/src/components/session-list.tsx rename to packages/desktop/src/components/session-list.tsx diff --git a/packages/app/src/components/session-timeline.tsx b/packages/desktop/src/components/session-timeline.tsx similarity index 100% rename from packages/app/src/components/session-timeline.tsx rename to packages/desktop/src/components/session-timeline.tsx diff --git a/packages/app/src/components/sidebar-nav.tsx b/packages/desktop/src/components/sidebar-nav.tsx similarity index 100% rename from packages/app/src/components/sidebar-nav.tsx rename to packages/desktop/src/components/sidebar-nav.tsx diff --git a/packages/app/src/context/event.tsx b/packages/desktop/src/context/event.tsx similarity index 100% rename from packages/app/src/context/event.tsx rename to packages/desktop/src/context/event.tsx diff --git a/packages/app/src/context/index.ts b/packages/desktop/src/context/index.ts similarity index 100% rename from packages/app/src/context/index.ts rename to packages/desktop/src/context/index.ts diff --git a/packages/app/src/context/local.tsx b/packages/desktop/src/context/local.tsx similarity index 100% rename from packages/app/src/context/local.tsx rename to packages/desktop/src/context/local.tsx diff --git a/packages/app/src/context/marked.tsx b/packages/desktop/src/context/marked.tsx similarity index 100% rename from packages/app/src/context/marked.tsx rename to packages/desktop/src/context/marked.tsx diff --git a/packages/app/src/context/sdk.tsx b/packages/desktop/src/context/sdk.tsx similarity index 100% rename from packages/app/src/context/sdk.tsx rename to packages/desktop/src/context/sdk.tsx diff --git a/packages/app/src/context/shiki.tsx b/packages/desktop/src/context/shiki.tsx similarity index 100% rename from packages/app/src/context/shiki.tsx rename to packages/desktop/src/context/shiki.tsx diff --git a/packages/app/src/context/sync.tsx b/packages/desktop/src/context/sync.tsx similarity index 100% rename from packages/app/src/context/sync.tsx rename to packages/desktop/src/context/sync.tsx diff --git a/packages/app/src/context/theme.tsx b/packages/desktop/src/context/theme.tsx similarity index 100% rename from packages/app/src/context/theme.tsx rename to packages/desktop/src/context/theme.tsx diff --git a/packages/app/src/env.d.ts b/packages/desktop/src/env.d.ts similarity index 100% rename from packages/app/src/env.d.ts rename to packages/desktop/src/env.d.ts diff --git a/packages/app/src/index.css b/packages/desktop/src/index.css similarity index 100% rename from packages/app/src/index.css rename to packages/desktop/src/index.css diff --git a/packages/app/src/index.tsx b/packages/desktop/src/index.tsx similarity index 100% rename from packages/app/src/index.tsx rename to packages/desktop/src/index.tsx diff --git a/packages/app/src/pages/index.tsx b/packages/desktop/src/pages/index.tsx similarity index 100% rename from packages/app/src/pages/index.tsx rename to packages/desktop/src/pages/index.tsx diff --git a/packages/app/src/pages/layout.tsx b/packages/desktop/src/pages/layout.tsx similarity index 100% rename from packages/app/src/pages/layout.tsx rename to packages/desktop/src/pages/layout.tsx diff --git a/packages/app/src/sst-env.d.ts b/packages/desktop/src/sst-env.d.ts similarity index 100% rename from packages/app/src/sst-env.d.ts rename to packages/desktop/src/sst-env.d.ts diff --git a/packages/app/src/ui/button.tsx b/packages/desktop/src/ui/button.tsx similarity index 100% rename from packages/app/src/ui/button.tsx rename to packages/desktop/src/ui/button.tsx diff --git a/packages/app/src/ui/collapsible.tsx b/packages/desktop/src/ui/collapsible.tsx similarity index 100% rename from packages/app/src/ui/collapsible.tsx rename to packages/desktop/src/ui/collapsible.tsx diff --git a/packages/app/src/ui/file-icon.tsx b/packages/desktop/src/ui/file-icon.tsx similarity index 100% rename from packages/app/src/ui/file-icon.tsx rename to packages/desktop/src/ui/file-icon.tsx diff --git a/packages/app/src/ui/file-icons/sprite.svg b/packages/desktop/src/ui/file-icons/sprite.svg similarity index 100% rename from packages/app/src/ui/file-icons/sprite.svg rename to packages/desktop/src/ui/file-icons/sprite.svg diff --git a/packages/app/src/ui/file-icons/types.ts b/packages/desktop/src/ui/file-icons/types.ts similarity index 100% rename from packages/app/src/ui/file-icons/types.ts rename to packages/desktop/src/ui/file-icons/types.ts diff --git a/packages/app/src/ui/icon-button.tsx b/packages/desktop/src/ui/icon-button.tsx similarity index 100% rename from packages/app/src/ui/icon-button.tsx rename to packages/desktop/src/ui/icon-button.tsx diff --git a/packages/app/src/ui/icon.tsx b/packages/desktop/src/ui/icon.tsx similarity index 100% rename from packages/app/src/ui/icon.tsx rename to packages/desktop/src/ui/icon.tsx diff --git a/packages/app/src/ui/index.ts b/packages/desktop/src/ui/index.ts similarity index 100% rename from packages/app/src/ui/index.ts rename to packages/desktop/src/ui/index.ts diff --git a/packages/app/src/ui/link.tsx b/packages/desktop/src/ui/link.tsx similarity index 100% rename from packages/app/src/ui/link.tsx rename to packages/desktop/src/ui/link.tsx diff --git a/packages/app/src/ui/logo.tsx b/packages/desktop/src/ui/logo.tsx similarity index 100% rename from packages/app/src/ui/logo.tsx rename to packages/desktop/src/ui/logo.tsx diff --git a/packages/app/src/ui/tabs.tsx b/packages/desktop/src/ui/tabs.tsx similarity index 100% rename from packages/app/src/ui/tabs.tsx rename to packages/desktop/src/ui/tabs.tsx diff --git a/packages/app/src/ui/tooltip.tsx b/packages/desktop/src/ui/tooltip.tsx similarity index 100% rename from packages/app/src/ui/tooltip.tsx rename to packages/desktop/src/ui/tooltip.tsx diff --git a/packages/app/src/utils/binary.ts b/packages/desktop/src/utils/binary.ts similarity index 100% rename from packages/app/src/utils/binary.ts rename to packages/desktop/src/utils/binary.ts diff --git a/packages/app/src/utils/dom.ts b/packages/desktop/src/utils/dom.ts similarity index 100% rename from packages/app/src/utils/dom.ts rename to packages/desktop/src/utils/dom.ts diff --git a/packages/app/src/utils/index.ts b/packages/desktop/src/utils/index.ts similarity index 100% rename from packages/app/src/utils/index.ts rename to packages/desktop/src/utils/index.ts diff --git a/packages/app/src/utils/path.ts b/packages/desktop/src/utils/path.ts similarity index 100% rename from packages/app/src/utils/path.ts rename to packages/desktop/src/utils/path.ts diff --git a/packages/app/src/utils/speech.ts b/packages/desktop/src/utils/speech.ts similarity index 100% rename from packages/app/src/utils/speech.ts rename to packages/desktop/src/utils/speech.ts diff --git a/packages/app/sst-env.d.ts b/packages/desktop/sst-env.d.ts similarity index 100% rename from packages/app/sst-env.d.ts rename to packages/desktop/sst-env.d.ts diff --git a/packages/app/tsconfig.json b/packages/desktop/tsconfig.json similarity index 100% rename from packages/app/tsconfig.json rename to packages/desktop/tsconfig.json diff --git a/packages/app/vite.config.ts b/packages/desktop/vite.config.ts similarity index 100% rename from packages/app/vite.config.ts rename to packages/desktop/vite.config.ts From 8e80b8f2fa199b9565a967c3079ca0ea68e00b9b Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Fri, 3 Oct 2025 09:10:33 -0500 Subject: [PATCH 10/23] chore: logging errors --- packages/console/app/src/lib/github.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/console/app/src/lib/github.ts b/packages/console/app/src/lib/github.ts index 49b926463..587da34b5 100644 --- a/packages/console/app/src/lib/github.ts +++ b/packages/console/app/src/lib/github.ts @@ -23,6 +23,8 @@ export const github = query(async () => { }, contributors: contributorCount, } - } catch {} + } catch (e) { + console.error(e) + } return undefined }, "github") From b622e924b6949e9deef41463bcaeac901d0498f0 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Fri, 3 Oct 2025 09:19:54 -0500 Subject: [PATCH 11/23] chore: logging errors --- packages/console/app/src/lib/github.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/console/app/src/lib/github.ts b/packages/console/app/src/lib/github.ts index 587da34b5..15cbd6cb7 100644 --- a/packages/console/app/src/lib/github.ts +++ b/packages/console/app/src/lib/github.ts @@ -4,8 +4,18 @@ export const github = query(async () => { "use server" try { const [meta, releases, contributors] = await Promise.all([ - fetch("https://api.github.com/repos/sst/opencode").then((res) => res.json()), - fetch("https://api.github.com/repos/sst/opencode/releases").then((res) => res.json()), + fetch("https://api.github.com/repos/sst/opencode").then(async (res) => { + const text = await res.text() + console.log(text) + const json = JSON.parse(text) + return json + }), + fetch("https://api.github.com/repos/sst/opencode/releases").then(async (res) => { + const text = await res.text() + console.log(text) + const json = JSON.parse(text) + return json + }), fetch("https://api.github.com/repos/sst/opencode/contributors?per_page=1"), ]) const [release] = releases From 8ce7d58e6d7589d466982ef12aafa7cda50bb24d Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Fri, 3 Oct 2025 09:27:12 -0500 Subject: [PATCH 12/23] chore: user-agent header --- packages/console/app/src/lib/github.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/console/app/src/lib/github.ts b/packages/console/app/src/lib/github.ts index 15cbd6cb7..80d3f308f 100644 --- a/packages/console/app/src/lib/github.ts +++ b/packages/console/app/src/lib/github.ts @@ -2,21 +2,25 @@ import { query } from "@solidjs/router" export const github = query(async () => { "use server" + const headers = { + UserAgent: + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36", + } try { const [meta, releases, contributors] = await Promise.all([ - fetch("https://api.github.com/repos/sst/opencode").then(async (res) => { + fetch("https://api.github.com/repos/sst/opencode", { headers }).then(async (res) => { const text = await res.text() console.log(text) const json = JSON.parse(text) return json }), - fetch("https://api.github.com/repos/sst/opencode/releases").then(async (res) => { + fetch("https://api.github.com/repos/sst/opencode/releases", { headers }).then(async (res) => { const text = await res.text() console.log(text) const json = JSON.parse(text) return json }), - fetch("https://api.github.com/repos/sst/opencode/contributors?per_page=1"), + fetch("https://api.github.com/repos/sst/opencode/contributors?per_page=1", { headers }), ]) const [release] = releases const contributorCount = Number.parseInt( From 006cb5b36d738072953d375bd57f2a3b2bafa178 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Fri, 3 Oct 2025 09:30:51 -0500 Subject: [PATCH 13/23] fix: user-agent --- packages/console/app/src/lib/github.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/console/app/src/lib/github.ts b/packages/console/app/src/lib/github.ts index 80d3f308f..c06a6a507 100644 --- a/packages/console/app/src/lib/github.ts +++ b/packages/console/app/src/lib/github.ts @@ -3,7 +3,7 @@ import { query } from "@solidjs/router" export const github = query(async () => { "use server" const headers = { - UserAgent: + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36", } try { From 79764c8c4c79d0a6c19035ed3742dde116550a7e Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Fri, 3 Oct 2025 09:34:17 -0500 Subject: [PATCH 14/23] fix: github stats --- packages/console/app/src/lib/github.ts | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/packages/console/app/src/lib/github.ts b/packages/console/app/src/lib/github.ts index c06a6a507..5f742aef6 100644 --- a/packages/console/app/src/lib/github.ts +++ b/packages/console/app/src/lib/github.ts @@ -8,18 +8,8 @@ export const github = query(async () => { } try { const [meta, releases, contributors] = await Promise.all([ - fetch("https://api.github.com/repos/sst/opencode", { headers }).then(async (res) => { - const text = await res.text() - console.log(text) - const json = JSON.parse(text) - return json - }), - fetch("https://api.github.com/repos/sst/opencode/releases", { headers }).then(async (res) => { - const text = await res.text() - console.log(text) - const json = JSON.parse(text) - return json - }), + fetch("https://api.github.com/repos/sst/opencode", { headers }).then((res) => res.json()), + fetch("https://api.github.com/repos/sst/opencode/releases", { headers }).then((res) => res.json()), fetch("https://api.github.com/repos/sst/opencode/contributors?per_page=1", { headers }), ]) const [release] = releases From 4159db4549efd9d598543a8030ed1fe80e56b3a9 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 3 Oct 2025 12:54:52 -0400 Subject: [PATCH 15/23] wip: zen --- packages/console/app/src/entry-server.tsx | 2 +- .../console/app/src/routes/workspace/[id].tsx | 16 +-- packages/console/core/src/user.ts | 129 +++++++++++------- packages/console/function/src/auth.ts | 6 +- packages/console/function/tsconfig.json | 2 + 5 files changed, 92 insertions(+), 63 deletions(-) diff --git a/packages/console/app/src/entry-server.tsx b/packages/console/app/src/entry-server.tsx index e05133147..d5fca6aa5 100644 --- a/packages/console/app/src/entry-server.tsx +++ b/packages/console/app/src/entry-server.tsx @@ -9,7 +9,7 @@ export default createHandler( - + {assets} diff --git a/packages/console/app/src/routes/workspace/[id].tsx b/packages/console/app/src/routes/workspace/[id].tsx index ad1f47bd4..6266558c5 100644 --- a/packages/console/app/src/routes/workspace/[id].tsx +++ b/packages/console/app/src/routes/workspace/[id].tsx @@ -11,13 +11,17 @@ import { createAsync, query, useParams } from "@solidjs/router" import { Actor } from "@opencode/console-core/actor.js" import { withActor } from "~/context/auth.withActor" import { User } from "@opencode/console-core/user.js" +import { Resource } from "@opencode/console-resource" const getUser = query(async (workspaceID: string) => { "use server" return withActor(async () => { const actor = Actor.assert("user") const user = await User.fromID(actor.properties.userID) - return { isAdmin: user?.role === "admin" } + return { + isAdmin: user?.role === "admin", + isBeta: Resource.App.stage === "production" ? workspaceID === "wrk_01K46JDFR0E75SG2Q8K172KF3Y" : true, + } }, workspaceID) }, "user.get") @@ -41,7 +45,7 @@ export default function () { - + @@ -55,11 +59,3 @@ export default function () { ) } - -export function isBeta(workspaceID: string) { - return [ - "wrk_01K46JDFR0E75SG2Q8K172KF3Y", // production - "wrk_01K4NFRR5P7FSYWH88307B4DDS", // dev - "wrk_01K6G7HBZ7C046A4XK01CVD0NS", // frank - ].includes(workspaceID) -} diff --git a/packages/console/core/src/user.ts b/packages/console/core/src/user.ts index 23612de5e..590f4427a 100644 --- a/packages/console/core/src/user.ts +++ b/packages/console/core/src/user.ts @@ -1,15 +1,15 @@ import { z } from "zod" -import { and, eq, getTableColumns, isNull, sql } from "drizzle-orm" +import { and, eq, getTableColumns, inArray, isNull, or, sql } from "drizzle-orm" import { fn } from "./util/fn" import { Database } from "./drizzle" import { UserRole, UserTable } from "./schema/user.sql" import { Actor } from "./actor" import { Identifier } from "./identifier" import { render } from "@jsx-email/render" -import { InviteEmail } from "@opencode/console-mail/InviteEmail.jsx" import { AWS } from "./aws" import { Account } from "./account" import { AccountTable } from "./schema/account.sql" +import { Key } from "./key" export namespace User { const assertAdmin = async () => { @@ -74,71 +74,66 @@ export namespace User { const workspaceID = Actor.workspace() await Database.transaction(async (tx) => { const account = await Account.fromEmail(email) - const members = await tx.select().from(UserTable).where(eq(UserTable.workspaceID, Actor.workspace())) + const existing = await tx + .select() + .from(UserTable) + .where( + and( + eq(UserTable.workspaceID, Actor.workspace()), + account ? eq(UserTable.oldAccountID, account.id) : eq(UserTable.oldEmail, email), + ), + ) + .then((rows) => rows[0]) - await (async () => { - if (account) { - // case: account previously invited and removed - if (members.some((m) => m.oldAccountID === account.id)) { - await tx - .update(UserTable) - .set({ - timeDeleted: null, - oldAccountID: null, - accountID: account.id, - }) - .where(and(eq(UserTable.workspaceID, Actor.workspace()), eq(UserTable.accountID, account.id))) - return - } - // case: account previously not invited - await tx - .insert(UserTable) - .values({ - id: Identifier.create("user"), - name: "", - accountID: account.id, - workspaceID, - role, - }) - .catch((e: any) => { - if (e.message.match(/Duplicate entry '.*' for key 'user.user_account_id'/)) - throw new Error("A user with this email has already been invited.") - throw e - }) - return - } - // case: email previously invited and removed - if (members.some((m) => m.oldEmail === email)) { - await tx - .update(UserTable) - .set({ - timeDeleted: null, - oldEmail: null, - email, - }) - .where(and(eq(UserTable.workspaceID, Actor.workspace()), eq(UserTable.email, email))) - return - } - // case: email previously not invited + // case: previously invited and removed + if (existing) { + await tx + .update(UserTable) + .set({ + role, + timeDeleted: null, + ...(account + ? { + oldAccountID: null, + accountID: account.id, + } + : { + oldEmail: null, + email, + }), + }) + .where(and(eq(UserTable.workspaceID, existing.workspaceID), eq(UserTable.id, existing.id))) + } + // case: account previously not invited + else { await tx .insert(UserTable) .values({ id: Identifier.create("user"), name: "", - email, + ...(account + ? { + accountID: account.id, + } + : { + email, + }), workspaceID, role, }) .catch((e: any) => { + if (e.message.match(/Duplicate entry '.*' for key 'user.user_account_id'/)) + throw new Error("A user with this email has already been invited.") if (e.message.match(/Duplicate entry '.*' for key 'user.user_email'/)) throw new Error("A user with this email has already been invited.") throw e }) - })() + } }) // send email, ignore errors try { + const { InviteEmail } = await import("@opencode/console-mail/InviteEmail.jsx") await AWS.sendEmail({ to: email, subject: `You've been invited to join the ${workspaceID} workspace on OpenCode Zen`, @@ -156,6 +151,42 @@ export namespace User { }, ) + export const joinInvitedWorkspaces = fn(z.void(), async () => { + const account = Actor.assert("account") + const invitations = await Database.use(async (tx) => { + const invitations = await tx + .select({ + id: UserTable.id, + workspaceID: UserTable.workspaceID, + }) + .from(UserTable) + .where(eq(UserTable.email, account.properties.email)) + + await tx + .update(UserTable) + .set({ + accountID: account.properties.accountID, + email: null, + }) + .where(eq(UserTable.email, account.properties.email)) + return invitations + }) + + await Promise.all( + invitations.map((invite) => + Actor.provide( + "system", + { + workspaceID: invite.workspaceID, + }, + () => Key.create({ name: "Default API Key" }), + ), + ), + ) + + return invitations.length + }) + export const updateRole = fn( z.object({ id: z.string(), diff --git a/packages/console/function/src/auth.ts b/packages/console/function/src/auth.ts index 77199fef5..510f50ab0 100644 --- a/packages/console/function/src/auth.ts +++ b/packages/console/function/src/auth.ts @@ -10,7 +10,7 @@ import { Account } from "@opencode/console-core/account.js" import { Workspace } from "@opencode/console-core/workspace.js" import { Actor } from "@opencode/console-core/actor.js" import { Resource } from "@opencode/console-resource" -import { Database } from "@opencode/console-core/drizzle/index.js" +import { User } from "@opencode/console-core/user.js" type Env = { AuthStorage: KVNamespace @@ -123,8 +123,8 @@ export default { }) } await Actor.provide("account", { accountID, email }, async () => { - const workspaces = await Account.workspaces() - if (workspaces.length === 0) { + const workspaceCount = await User.joinInvitedWorkspaces() + if (workspaceCount === 0) { await Workspace.create() } }) diff --git a/packages/console/function/tsconfig.json b/packages/console/function/tsconfig.json index 0faf16aab..3218dd7e3 100644 --- a/packages/console/function/tsconfig.json +++ b/packages/console/function/tsconfig.json @@ -4,6 +4,8 @@ "compilerOptions": { "module": "ESNext", "moduleResolution": "bundler", + "jsx": "preserve", + "jsxImportSource": "react", "types": ["@cloudflare/workers-types", "node"] } } From 6378e6c06f3296ec8fdea13271c092e9830401ea Mon Sep 17 00:00:00 2001 From: Jay V Date: Fri, 3 Oct 2025 13:46:56 -0400 Subject: [PATCH 16/23] docs: rename opencode to OpenCode --- packages/web/src/content/docs/agents.mdx | 12 ++-- packages/web/src/content/docs/cli.mdx | 14 ++--- packages/web/src/content/docs/commands.mdx | 4 +- packages/web/src/content/docs/config.mdx | 18 +++--- packages/web/src/content/docs/enterprise.mdx | 8 +-- packages/web/src/content/docs/formatters.mdx | 12 ++-- packages/web/src/content/docs/ide.mdx | 14 ++--- packages/web/src/content/docs/index.mdx | 58 +++++++++---------- packages/web/src/content/docs/keybinds.mdx | 4 +- packages/web/src/content/docs/lsp.mdx | 6 +- packages/web/src/content/docs/models.mdx | 12 ++-- packages/web/src/content/docs/plugins.mdx | 4 +- packages/web/src/content/docs/providers.mdx | 34 +++++------ packages/web/src/content/docs/server.mdx | 2 +- packages/web/src/content/docs/share.mdx | 10 ++-- packages/web/src/content/docs/themes.mdx | 10 ++-- .../web/src/content/docs/troubleshooting.mdx | 4 +- packages/web/src/content/docs/tui.mdx | 12 ++-- packages/web/src/content/docs/zen.mdx | 28 ++++----- 19 files changed, 133 insertions(+), 133 deletions(-) diff --git a/packages/web/src/content/docs/agents.mdx b/packages/web/src/content/docs/agents.mdx index 3c7bb93af..82d3c8ccb 100644 --- a/packages/web/src/content/docs/agents.mdx +++ b/packages/web/src/content/docs/agents.mdx @@ -15,7 +15,7 @@ You can switch between agents during a session or invoke them with the `@` menti ## Types -There are two types of agents in opencode; primary agents and subagents. +There are two types of agents in OpenCode; primary agents and subagents. --- @@ -27,7 +27,7 @@ Primary agents are the main assistants you interact with directly. You can cycle You can use the **Tab** key to switch between primary agents during a session. ::: -opencode comes with two built-in primary agents, **Build** and **Plan**. We'll +OpenCode comes with two built-in primary agents, **Build** and **Plan**. We'll look at these below. --- @@ -36,13 +36,13 @@ look at these below. Subagents are specialized assistants that primary agents can invoke for specific tasks. You can also manually invoke them by **@ mentioning** them in your messages. -opencode comes with one built-in subagent, **General**. We'll look at this below. +OpenCode comes with one built-in subagent, **General**. We'll look at this below. --- ## Built-in -opencode comes with two built-in primary agents and one built-in subagent. +OpenCode comes with two built-in primary agents and one built-in subagent. --- @@ -245,7 +245,7 @@ Temperature values typically range from 0.0 to 1.0: } ``` -If no temperature is specified, opencode uses model-specific defaults; typically 0 for most models, 0.55 for Qwen models. +If no temperature is specified, OpenCode uses model-specific defaults; typically 0 for most models, 0.55 for Qwen models. --- @@ -279,7 +279,7 @@ Specify a custom system prompt file for this agent with the `prompt` config. The } ``` -This path is relative to where the config file is located. So this works for both the global opencode config and the project specific config. +This path is relative to where the config file is located. So this works for both the global OpenCode config and the project specific config. --- diff --git a/packages/web/src/content/docs/cli.mdx b/packages/web/src/content/docs/cli.mdx index 5d2ac4a7b..2fd3a0f5c 100644 --- a/packages/web/src/content/docs/cli.mdx +++ b/packages/web/src/content/docs/cli.mdx @@ -1,17 +1,17 @@ --- title: CLI -description: opencode CLI options and commands. +description: OpenCode CLI options and commands. --- import { Tabs, TabItem } from "@astrojs/starlight/components" -The opencode CLI by default starts the [TUI](/docs/tui) when run without any arguments. +The OpenCode CLI by default starts the [TUI](/docs/tui) when run without any arguments. ```bash opencode ``` -But it also accepts commands as documented on this page. This allows you to interact with opencode programmatically. +But it also accepts commands as documented on this page. This allows you to interact with OpenCode programmatically. ```bash opencode run "Explain how closures work in JavaScript" @@ -21,13 +21,13 @@ opencode run "Explain how closures work in JavaScript" ## Commands -The opencode CLI also has the following commands. +The OpenCode CLI also has the following commands. --- ### agent -Manage agents for opencode. +Manage agents for OpenCode. ```bash opencode agent [command] @@ -59,13 +59,13 @@ opencode auth [command] #### login -opencode is powered by the provider list at [Models.dev](https://models.dev), so you can use `opencode auth login` to configure API keys for any provider you'd like to use. This is stored in `~/.local/share/opencode/auth.json`. +OpenCode is powered by the provider list at [Models.dev](https://models.dev), so you can use `opencode auth login` to configure API keys for any provider you'd like to use. This is stored in `~/.local/share/opencode/auth.json`. ```bash opencode auth login ``` -When opencode starts up it loads the providers from the credentials file. And if there are any keys defined in your environments or a `.env` file in your project. +When OpenCode starts up it loads the providers from the credentials file. And if there are any keys defined in your environments or a `.env` file in your project. --- diff --git a/packages/web/src/content/docs/commands.mdx b/packages/web/src/content/docs/commands.mdx index 1e6aa951c..50f736b75 100644 --- a/packages/web/src/content/docs/commands.mdx +++ b/packages/web/src/content/docs/commands.mdx @@ -42,13 +42,13 @@ Use the command by typing `/` followed by the command name. ## Configure -You can add custom commands through the opencode config or by creating markdown files in the `command/` directory. +You can add custom commands through the OpenCode config or by creating markdown files in the `command/` directory. --- ### JSON -Use the `command` option in your opencode [config](/docs/config): +Use the `command` option in your OpenCode [config](/docs/config): ```json title="opencode.jsonc" {4-12} { diff --git a/packages/web/src/content/docs/config.mdx b/packages/web/src/content/docs/config.mdx index 907389e05..f00af8ecb 100644 --- a/packages/web/src/content/docs/config.mdx +++ b/packages/web/src/content/docs/config.mdx @@ -1,15 +1,15 @@ --- title: Config -description: Using the opencode JSON config. +description: Using the OpenCode JSON config. --- -You can configure opencode using a JSON config file. +You can configure OpenCode using a JSON config file. --- ## Format -opencode supports both **JSON** and **JSONC** (JSON with Comments) formats. +OpenCode supports both **JSON** and **JSONC** (JSON with Comments) formats. ```jsonc title="opencode.jsonc" { @@ -32,7 +32,7 @@ different order of precedence. ### Global -Place your global opencode config in `~/.config/opencode/opencode.json`. You'll want to use the global config for things like themes, providers, or keybinds. +Place your global OpenCode config in `~/.config/opencode/opencode.json`. You'll want to use the global config for things like themes, providers, or keybinds. --- @@ -44,7 +44,7 @@ You can also add a `opencode.json` in your project. It takes precedence over the Place project specific config in the root of your project. ::: -When opencode starts up, it looks for a config file in the current directory or traverse up to the nearest Git directory. +When OpenCode starts up, it looks for a config file in the current directory or traverse up to the nearest Git directory. This is also safe to be checked into Git and uses the same schema as the global one. @@ -71,7 +71,7 @@ Your editor should be able to validate and autocomplete based on the schema. ### Models -You can configure the providers and models you want to use in your opencode config through the `provider`, `model` and `small_model` options. +You can configure the providers and models you want to use in your OpenCode config through the `provider`, `model` and `small_model` options. ```json title="opencode.json" { @@ -82,7 +82,7 @@ You can configure the providers and models you want to use in your opencode conf } ``` -The `small_model` option configures a separate model for lightweight tasks like title generation. By default, opencode tries to use a cheaper model if one is available from your provider, otherwise it falls back to your main model. +The `small_model` option configures a separate model for lightweight tasks like title generation. By default, OpenCode tries to use a cheaper model if one is available from your provider, otherwise it falls back to your main model. You can also configure [local models](/docs/models#local). [Learn more](/docs/models). @@ -90,7 +90,7 @@ You can also configure [local models](/docs/models#local). [Learn more](/docs/mo ### Themes -You can configure the theme you want to use in your opencode config through the `theme` option. +You can configure the theme you want to use in your OpenCode config through the `theme` option. ```json title="opencode.json" { @@ -193,7 +193,7 @@ You can customize your keybinds through the `keybinds` option. ### Autoupdate -opencode will automatically download any new updates when it starts up. You can disable this with the `autoupdate` option. +OpenCode will automatically download any new updates when it starts up. You can disable this with the `autoupdate` option. ```json title="opencode.json" { diff --git a/packages/web/src/content/docs/enterprise.mdx b/packages/web/src/content/docs/enterprise.mdx index 4faff39cd..c8a67ec34 100644 --- a/packages/web/src/content/docs/enterprise.mdx +++ b/packages/web/src/content/docs/enterprise.mdx @@ -1,13 +1,13 @@ --- title: Enterprise -description: Using opencode in your organization. +description: Using OpenCode in your organization. --- import config from "../../../config.mjs" export const email = `mailto:${config.email}` -opencode does not store any of your code or context data. This makes it easy for -you to use opencode at your organization. +OpenCode does not store any of your code or context data. This makes it easy for +you to use OpenCode at your organization. To get started, we recommend: @@ -18,7 +18,7 @@ To get started, we recommend: ## Trial -Since opencode is open source and does not store any of your code or context data, your developers can simply [get started](/docs/) and carry out a trial. +Since OpenCode is open source and does not store any of your code or context data, your developers can simply [get started](/docs/) and carry out a trial. --- diff --git a/packages/web/src/content/docs/formatters.mdx b/packages/web/src/content/docs/formatters.mdx index 5c00c3ca7..8853ca334 100644 --- a/packages/web/src/content/docs/formatters.mdx +++ b/packages/web/src/content/docs/formatters.mdx @@ -1,15 +1,15 @@ --- title: Formatters -description: opencode uses language specific formatters. +description: OpenCode uses language specific formatters. --- -opencode automatically formats files after they are written or edited using language-specific formatters. This ensures that the code that is generated follows the code styles of your project. +OpenCode automatically formats files after they are written or edited using language-specific formatters. This ensures that the code that is generated follows the code styles of your project. --- ## Built-in -opencode comes with several built-in formatters for popular languages and frameworks. Below is a list of the formatters, supported file extensions, and commands or config options it needs. +OpenCode comes with several built-in formatters for popular languages and frameworks. Below is a list of the formatters, supported file extensions, and commands or config options it needs. | Formatter | Extensions | Requirements | | -------------- | -------------------------------------------------------------------------------------------------------- | --------------------------------------- | @@ -25,13 +25,13 @@ opencode comes with several built-in formatters for popular languages and framew | standardrb | .rb, .rake, .gemspec, .ru | `standardrb` command available | | htmlbeautifier | .erb, .html.erb | `htmlbeautifier` command available | -So if your project has `prettier` in your `package.json`, opencode will automatically use it. +So if your project has `prettier` in your `package.json`, OpenCode will automatically use it. --- ## How it works -When opencode writes or edits a file, it: +When OpenCode writes or edits a file, it: 1. Checks the file extension against all enabled formatters. 2. Runs the appropriate formatter command on the file. @@ -43,7 +43,7 @@ This process happens in the background, ensuring your code styles are maintained ## Configure -You can customize formatters through the `formatter` section in your opencode config. +You can customize formatters through the `formatter` section in your OpenCode config. ```json title="opencode.json" { diff --git a/packages/web/src/content/docs/ide.mdx b/packages/web/src/content/docs/ide.mdx index 47c030598..0f708d9e7 100644 --- a/packages/web/src/content/docs/ide.mdx +++ b/packages/web/src/content/docs/ide.mdx @@ -1,24 +1,24 @@ --- title: IDE -description: The opencode extension for VS Code, Cursor, and other IDEs +description: The OpenCode extension for VS Code, Cursor, and other IDEs --- -opencode integrates with VS Code, Cursor, or any IDE that supports a terminal. Just run `opencode` in the terminal to get started. +OpenCode integrates with VS Code, Cursor, or any IDE that supports a terminal. Just run `opencode` in the terminal to get started. --- ## Usage -- **Quick Launch**: Use `Cmd+Esc` (Mac) or `Ctrl+Esc` (Windows/Linux) to open opencode in a split terminal view, or focus an existing terminal session if one is already running. -- **New Session**: Use `Cmd+Shift+Esc` (Mac) or `Ctrl+Shift+Esc` (Windows/Linux) to start a new opencode terminal session, even if one is already open. You can also click the opencode button in the UI. -- **Context Awareness**: Automatically share your current selection or tab with opencode. +- **Quick Launch**: Use `Cmd+Esc` (Mac) or `Ctrl+Esc` (Windows/Linux) to open OpenCode in a split terminal view, or focus an existing terminal session if one is already running. +- **New Session**: Use `Cmd+Shift+Esc` (Mac) or `Ctrl+Shift+Esc` (Windows/Linux) to start a new OpenCode terminal session, even if one is already open. You can also click the OpenCode button in the UI. +- **Context Awareness**: Automatically share your current selection or tab with OpenCode. - **File Reference Shortcuts**: Use `Cmd+Option+K` (Mac) or `Alt+Ctrl+K` (Linux/Windows) to insert file references. For example, `@File#L37-42`. --- ## Installation -To install opencode on VS Code and popular forks like Cursor, Windsurf, VSCodium: +To install OpenCode on VS Code and popular forks like Cursor, Windsurf, VSCodium: 1. Open VS Code 2. Open the integrated terminal @@ -30,7 +30,7 @@ If on the other hand you want to use your own IDE when you run `/editor` or `/ex ### Manual Install -Search for **opencode** in the Extension Marketplace and click **Install**. +Search for **OpenCode** in the Extension Marketplace and click **Install**. --- diff --git a/packages/web/src/content/docs/index.mdx b/packages/web/src/content/docs/index.mdx index 9cc1bf8ed..05447716e 100644 --- a/packages/web/src/content/docs/index.mdx +++ b/packages/web/src/content/docs/index.mdx @@ -1,15 +1,15 @@ --- title: Intro -description: Get started with opencode. +description: Get started with OpenCode. --- import { Tabs, TabItem } from "@astrojs/starlight/components" import config from "../../../config.mjs" export const console = config.console -[**opencode**](/) is an AI coding agent built for the terminal. +[**OpenCode**](/) is an AI coding agent built for the terminal. -![opencode TUI with the opencode theme](../../assets/lander/screenshot.png) +![OpenCode TUI with the opencode theme](../../assets/lander/screenshot.png) Let's get started. @@ -17,7 +17,7 @@ Let's get started. #### Prerequisites -To use opencode, you'll need: +To use OpenCode, you'll need: 1. A modern terminal emulator like: - [WezTerm](https://wezterm.org), cross-platform @@ -31,7 +31,7 @@ To use opencode, you'll need: ## Install -The easiest way to install opencode is through the install script. +The easiest way to install OpenCode is through the install script. ```bash curl -fsSL https://opencode.ai/install | bash @@ -103,7 +103,7 @@ You can also install it with the following commands: npm install -g opencode-ai ``` -Support for installing opencode on Windows using Bun is currently in progress. +Support for installing OpenCode on Windows using Bun is currently in progress. You can also grab the binary from the [Releases](https://github.com/sst/opencode/releases). @@ -111,10 +111,10 @@ You can also grab the binary from the [Releases](https://github.com/sst/opencode ## Configure -With opencode you can use any LLM provider by configuring their API keys. +With OpenCode you can use any LLM provider by configuring their API keys. -If you are new to using LLM providers, we recommend using [opencode zen](/docs/zen). -It's a curated list of models that have been tested and verified by the opencode +If you are new to using LLM providers, we recommend using [OpenCode Zen](/docs/zen). +It's a curated list of models that have been tested and verified by the OpenCode team. 1. Run `opencode auth login`, select opencode, and head to [opencode.ai/auth](https://opencode.ai/auth). @@ -149,33 +149,33 @@ you want to work on. cd /path/to/project ``` -And run opencode. +And run OpenCode. ```bash opencode ``` -Next, initialize opencode for the project by running the following command. +Next, initialize OpenCode for the project by running the following command. ```bash frame="none" /init ``` -This will get opencode to analyze your project and create an `AGENTS.md` file in +This will get OpenCode to analyze your project and create an `AGENTS.md` file in the project root. :::tip You should commit your project's `AGENTS.md` file to Git. ::: -This helps opencode understand the project structure and the coding patterns +This helps OpenCode understand the project structure and the coding patterns used. --- ## Usage -You are now ready to use opencode to work on your project. Feel free to ask it +You are now ready to use OpenCode to work on your project. Feel free to ask it anything! If you are new to using an AI coding agent, here are some examples that might @@ -185,7 +185,7 @@ help. ### Ask questions -You can ask opencode to explain the codebase to you. +You can ask OpenCode to explain the codebase to you. :::tip Use the `@` key to fuzzy search for files in the project. @@ -201,11 +201,11 @@ This is helpful if there's a part of the codebase that you didn't work on. ### Add features -You can ask opencode to add new features to your project. Though we first recommend asking it to create a plan. +You can ask OpenCode to add new features to your project. Though we first recommend asking it to create a plan. 1. **Create a plan** - opencode has a _Plan mode_ that disables its ability to make changes and + OpenCode has a _Plan mode_ that disables its ability to make changes and instead suggest _how_ it'll implement the feature. Switch to it using the **Tab** key. You'll see an indicator for this in the lower right corner. @@ -222,11 +222,11 @@ You can ask opencode to add new features to your project. Though we first recomm From this screen, the user can undelete a note or permanently delete it. ``` - You want to give opencode enough details to understand what you want. It helps + You want to give OpenCode enough details to understand what you want. It helps to talk to it like you are talking to a junior developer on your team. :::tip - Give opencode plenty of context and examples to help it understand what you + Give OpenCode plenty of context and examples to help it understand what you want. ::: @@ -243,7 +243,7 @@ You can ask opencode to add new features to your project. Though we first recomm Drag and drop images into the terminal to add them to the prompt. ::: - opencode can scan any images you give it and add them to the prompt. You can + OpenCode can scan any images you give it and add them to the prompt. You can do this by dragging and dropping an image into the terminal. 3. **Build the feature** @@ -265,7 +265,7 @@ You can ask opencode to add new features to your project. Though we first recomm ### Make changes -For more straightforward changes, you can ask opencode to directly build it +For more straightforward changes, you can ask OpenCode to directly build it without having to review the plan first. ```txt frame="none" "@packages/functions/src/settings.ts" "@packages/functions/src/notes.ts" @@ -274,14 +274,14 @@ handled in the /notes route in @packages/functions/src/notes.ts and implement the same logic in @packages/functions/src/settings.ts ``` -You want to make sure you provide a good amount of detail so opencode makes the right +You want to make sure you provide a good amount of detail so OpenCode makes the right changes. --- ### Undo changes -Let's say you ask opencode to make some changes. +Let's say you ask OpenCode to make some changes. ```txt frame="none" "@packages/functions/src/api/index.ts" Can you refactor the function in @packages/functions/src/api/index.ts? @@ -294,14 +294,14 @@ using the `/undo` command. /undo ``` -opencode will now revert the changes you made and show your original message +OpenCode will now revert the changes you made and show your original message again. ```txt frame="none" "@packages/functions/src/api/index.ts" Can you refactor the function in @packages/functions/src/api/index.ts? ``` -From here you can tweak the prompt and ask opencode to try again. +From here you can tweak the prompt and ask OpenCode to try again. :::tip You can run `/undo` multiple times to undo multiple changes. @@ -317,7 +317,7 @@ Or you **can redo** the changes using the `/redo` command. ## Share -The conversations that you have with opencode can be [shared with your +The conversations that you have with OpenCode can be [shared with your team](/docs/share). ```bash frame="none" @@ -330,12 +330,12 @@ This will create a link to the current conversation and copy it to your clipboar Conversations are not shared by default. ::: -Here's an [example conversation](https://opencode.ai/s/4XP1fce5) with opencode. +Here's an [example conversation](https://opencode.ai/s/4XP1fce5) with OpenCode. --- ## Customize -And that's it! You are now a pro at using opencode. +And that's it! You are now a pro at using OpenCode. -To make it your own, we recommend [picking a theme](/docs/themes), [customizing the keybinds](/docs/keybinds), [configuring code formatters](/docs/formatters), [creating custom commands](/docs/commands), or playing around with the [opencode config](/docs/config). +To make it your own, we recommend [picking a theme](/docs/themes), [customizing the keybinds](/docs/keybinds), [configuring code formatters](/docs/formatters), [creating custom commands](/docs/commands), or playing around with the [OpenCode config](/docs/config). diff --git a/packages/web/src/content/docs/keybinds.mdx b/packages/web/src/content/docs/keybinds.mdx index 6fd6148e1..dc47166b4 100644 --- a/packages/web/src/content/docs/keybinds.mdx +++ b/packages/web/src/content/docs/keybinds.mdx @@ -3,7 +3,7 @@ title: Keybinds description: Customize your keybinds. --- -opencode has a list of keybinds that you can customize through the opencode config. +OpenCode has a list of keybinds that you can customize through the OpenCode config. ```json title="opencode.json" { @@ -53,7 +53,7 @@ opencode has a list of keybinds that you can customize through the opencode conf ## Leader key -opencode uses a `leader` key for most keybinds. This avoids conflicts in your terminal. +OpenCode uses a `leader` key for most keybinds. This avoids conflicts in your terminal. By default, `ctrl+x` is the leader key and most actions require you to first press the leader key and then the shortcut. For example, to start a new session you first press `ctrl+x` and then press `n`. diff --git a/packages/web/src/content/docs/lsp.mdx b/packages/web/src/content/docs/lsp.mdx index 95ef436c1..c95445511 100644 --- a/packages/web/src/content/docs/lsp.mdx +++ b/packages/web/src/content/docs/lsp.mdx @@ -1,15 +1,15 @@ --- title: LSP Servers -description: opencode integrates with your LSP servers. +description: OpenCode integrates with your LSP servers. --- -opencode integrates with your Language Server Protocol (LSP) to help the LLM interact with your codebase. It uses diagnostics to provide feedback to the LLM. +OpenCode integrates with your Language Server Protocol (LSP) to help the LLM interact with your codebase. It uses diagnostics to provide feedback to the LLM. --- ## Built-in -opencode comes with several built-in LSP servers for popular languages: +OpenCode comes with several built-in LSP servers for popular languages: | LSP Server | Extensions | Requirements | | ---------- | ---------------------------------------------------- | ----------------------------------- | diff --git a/packages/web/src/content/docs/models.mdx b/packages/web/src/content/docs/models.mdx index b3fc4c28f..f3963f2ac 100644 --- a/packages/web/src/content/docs/models.mdx +++ b/packages/web/src/content/docs/models.mdx @@ -3,13 +3,13 @@ title: Models description: Configuring an LLM provider and model. --- -opencode uses the [AI SDK](https://ai-sdk.dev/) and [Models.dev](https://models.dev) to support for **75+ LLM providers** and it supports running local models. +OpenCode uses the [AI SDK](https://ai-sdk.dev/) and [Models.dev](https://models.dev) to support for **75+ LLM providers** and it supports running local models. --- ## Providers -Most popular providers are preloaded by default. If you've added the credentials for a provider through `opencode auth login`, they'll be available when you start opencode. +Most popular providers are preloaded by default. If you've added the credentials for a provider through `opencode auth login`, they'll be available when you start OpenCode. Learn more about [providers](/docs/providers). @@ -35,7 +35,7 @@ Consider using one of the models we recommend. However, there are a only a few of them that are good at both generating code and tool calling. -Here are the ones we recommend with opencode: +Here are the ones we recommend with OpenCode: - Claude Sonnet 4 - Claude Opus 4 @@ -49,7 +49,7 @@ Here are the ones we recommend with opencode: ## Set a default To set one of these as the default model, you can set the `model` key in your -opencode config. +OpenCode config. ```json title="opencode.json" {3} { @@ -139,11 +139,11 @@ You can also define custom models that extend built-in ones and can optionally u ## Loading models -When opencode starts up, it checks for models in the following priority order: +When OpenCode starts up, it checks for models in the following priority order: 1. The `--model` or `-m` command line flag. The format is the same as in the config file: `provider_id/model_id`. -2. The model list in the opencode config. +2. The model list in the OpenCode config. ```json title="opencode.json" { diff --git a/packages/web/src/content/docs/plugins.mdx b/packages/web/src/content/docs/plugins.mdx index 47f53fddf..bfcf1ed87 100644 --- a/packages/web/src/content/docs/plugins.mdx +++ b/packages/web/src/content/docs/plugins.mdx @@ -1,9 +1,9 @@ --- title: Plugins -description: Write your own plugins to extend opencode. +description: Write your own plugins to extend OpenCode. --- -Plugins allow you to extend opencode by hooking into various events and customizing behavior. You can create plugins to add new features, integrate with external services, or modify opencode's default behavior. +Plugins allow you to extend OpenCode by hooking into various events and customizing behavior. You can create plugins to add new features, integrate with external services, or modify OpenCode's default behavior. --- diff --git a/packages/web/src/content/docs/providers.mdx b/packages/web/src/content/docs/providers.mdx index 10e0de2d3..30e93d0ce 100644 --- a/packages/web/src/content/docs/providers.mdx +++ b/packages/web/src/content/docs/providers.mdx @@ -1,17 +1,17 @@ --- title: Providers -description: Using any LLM provider in opencode. +description: Using any LLM provider in OpenCode. --- import config from "../../../config.mjs" export const console = config.console -opencode uses the [AI SDK](https://ai-sdk.dev/) and [Models.dev](https://models.dev) to support for **75+ LLM providers** and it supports running local models. +OpenCode uses the [AI SDK](https://ai-sdk.dev/) and [Models.dev](https://models.dev) to support for **75+ LLM providers** and it supports running local models. To add a provider you need to: 1. Add the API keys for the provider using `opencode auth login`. -2. Configure the provider in your opencode config. +2. Configure the provider in your OpenCode config. --- @@ -24,7 +24,7 @@ in `~/.local/share/opencode/auth.json`. ### Config -You can customize the providers through the `provider` section in your opencode +You can customize the providers through the `provider` section in your OpenCode config. --- @@ -48,13 +48,13 @@ You can customize the base URL for any provider by setting the `baseURL` option. --- -## opencode zen +## OpenCode Zen -opencode zen is a list of models provided by the opencode team that have been -tested and verified to work well with opencode. [Learn more](/docs/zen). +OpenCode Zen is a list of models provided by the OpenCode team that have been +tested and verified to work well with OpenCode. [Learn more](/docs/zen). :::tip -If you are new, we recommend starting with opencode zen. +If you are new, we recommend starting with OpenCode Zen. ::: 1. Run `opencode auth login`, select opencode, and head to [opencode.ai/auth](https://opencode.ai/auth). @@ -78,7 +78,7 @@ If you are new, we recommend starting with opencode zen. 4. Run `/models` in the TUI to see the list of models we recommend. -It works like any other provider in opencode. And is completely optional to use +It works like any other provider in OpenCode. And is completely optional to use it. --- @@ -96,7 +96,7 @@ Don't see a provider here? Submit a PR. ### Amazon Bedrock -To use Amazon Bedrock with opencode: +To use Amazon Bedrock with OpenCode: 1. Head over to the **Model catalog** in the Amazon Bedrock console and request access to the models you want. @@ -564,13 +564,13 @@ In this example: --- -### opencode zen +### OpenCode Zen -opencode zen is a list of tested and verified models provided by the opencode team. [Learn more](/docs/zen). +OpenCode Zen is a list of tested and verified models provided by the OpenCode team. [Learn more](/docs/zen). -1. Sign in to **opencode zen** and click **Create API Key**. +1. Sign in to **OpenCode Zen** and click **Create API Key**. -2. Run `opencode auth login` and select **opencode zen**. +2. Run `opencode auth login` and select **OpenCode Zen**. ```bash $ opencode auth login @@ -578,12 +578,12 @@ opencode zen is a list of tested and verified models provided by the opencode te ┌ Add credential │ ◆ Select provider - │ ● opencode zen + │ ● OpenCode Zen │ ... └ ``` -3. Enter your opencode API key. +3. Enter your OpenCode API key. ```bash $ opencode auth login @@ -591,7 +591,7 @@ opencode zen is a list of tested and verified models provided by the opencode te ┌ Add credential │ ◇ Select provider - │ opencode zen + │ OpenCode Zen │ ◇ Enter your API key │ _ diff --git a/packages/web/src/content/docs/server.mdx b/packages/web/src/content/docs/server.mdx index 2eea2ba74..e1d026221 100644 --- a/packages/web/src/content/docs/server.mdx +++ b/packages/web/src/content/docs/server.mdx @@ -46,7 +46,7 @@ opencode TUI running, `opencode serve` will start a new server. When you start the TUI it randomly assigns a port and hostname. You can instead pass in the `--hostname` and `--port` [flags](/docs/cli). Then use this to connect to its server. -The [`/tui`](#tui) endpoint can be used to drive the TUI through the server. For example, you can prefill or run a prompt. This setup is used by the opencode [IDE](/docs/ide) plugins. +The [`/tui`](#tui) endpoint can be used to drive the TUI through the server. For example, you can prefill or run a prompt. This setup is used by the OpenCode [IDE](/docs/ide) plugins. --- diff --git a/packages/web/src/content/docs/share.mdx b/packages/web/src/content/docs/share.mdx index efb54c2d5..ec59dc824 100644 --- a/packages/web/src/content/docs/share.mdx +++ b/packages/web/src/content/docs/share.mdx @@ -1,9 +1,9 @@ --- title: Share -description: Share your opencode conversations. +description: Share your OpenCode conversations. --- -opencode's share feature allows you to create public links to your opencode conversations, so you can collaborate with teammates or get help from others. +OpenCode's share feature allows you to create public links to your OpenCode conversations, so you can collaborate with teammates or get help from others. :::note Shared conversations are publicly accessible to anyone with the link. @@ -13,7 +13,7 @@ Shared conversations are publicly accessible to anyone with the link. ## How it works -When you share a conversation, opencode: +When you share a conversation, OpenCode: 1. Creates a unique public URL for your session 2. Syncs your conversation history to our servers @@ -23,13 +23,13 @@ When you share a conversation, opencode: ## Sharing -opencode supports three sharing modes that control how conversations are shared: +OpenCode supports three sharing modes that control how conversations are shared: --- ### Manual (default) -By default, opencode uses manual sharing mode. Sessions are not shared automatically, but you can manually share them using the `/share` command: +By default, OpenCode uses manual sharing mode. Sessions are not shared automatically, but you can manually share them using the `/share` command: ``` /share diff --git a/packages/web/src/content/docs/themes.mdx b/packages/web/src/content/docs/themes.mdx index 0a2a62517..096976bf3 100644 --- a/packages/web/src/content/docs/themes.mdx +++ b/packages/web/src/content/docs/themes.mdx @@ -3,9 +3,9 @@ title: Themes description: Select a built-in theme or define your own. --- -With opencode you can select from one of several built-in themes, use a theme that adapts to your terminal theme, or define your own custom theme. +With OpenCode you can select from one of several built-in themes, use a theme that adapts to your terminal theme, or define your own custom theme. -By default, opencode uses our own `opencode` theme. +By default, OpenCode uses our own `opencode` theme. --- @@ -23,7 +23,7 @@ Without truecolor support, themes may appear with reduced color accuracy or fall ## Built-in themes -opencode comes with several built-in themes. +OpenCode comes with several built-in themes. | Name | Description | | ------------ | ---------------------------------------------------------------------------- | @@ -52,7 +52,7 @@ The `system` theme is designed to automatically adapt to your terminal's color s The system theme is for users who: -- Want opencode to match their terminal's appearance +- Want OpenCode to match their terminal's appearance - Use custom terminal color schemes - Prefer a consistent look across all terminal applications @@ -73,7 +73,7 @@ You can select a theme by bringing up the theme select with the `/theme` command ## Custom themes -opencode supports a flexible JSON-based theme system that allows users to create and customize themes easily. +OpenCode supports a flexible JSON-based theme system that allows users to create and customize themes easily. --- diff --git a/packages/web/src/content/docs/troubleshooting.mdx b/packages/web/src/content/docs/troubleshooting.mdx index 57fbfe088..98615823a 100644 --- a/packages/web/src/content/docs/troubleshooting.mdx +++ b/packages/web/src/content/docs/troubleshooting.mdx @@ -3,7 +3,7 @@ title: Troubleshooting description: Common issues and how to resolve them. --- -To debug any issues with opencode, you can check the logs or the session data +To debug any issues with OpenCode, you can check the logs or the session data that it stores locally. --- @@ -40,7 +40,7 @@ This directory contains: ## Getting help -If you're experiencing issues with opencode: +If you're experiencing issues with OpenCode: 1. **Report issues on GitHub** diff --git a/packages/web/src/content/docs/tui.mdx b/packages/web/src/content/docs/tui.mdx index edd0013de..4dd7608be 100644 --- a/packages/web/src/content/docs/tui.mdx +++ b/packages/web/src/content/docs/tui.mdx @@ -1,13 +1,13 @@ --- title: TUI -description: Using the opencode terminal user interface. +description: Using the OpenCode terminal user interface. --- import { Tabs, TabItem } from "@astrojs/starlight/components" -opencode provides an interactive terminal interface or TUI for working on your projects with an LLM. +OpenCode provides an interactive terminal interface or TUI for working on your projects with an LLM. -Running opencode starts the TUI for the current directory. +Running OpenCode starts the TUI for the current directory. ```bash opencode @@ -57,7 +57,7 @@ The output of the command is added to the conversation as a tool result. ## Commands -When using the opencode TUI, you can type `/` followed by a command name to quickly execute actions. For example: +When using the OpenCode TUI, you can type `/` followed by a command name to quickly execute actions. For example: ```bash frame="none" /help @@ -107,7 +107,7 @@ Open external editor for composing messages. Uses the editor set in your `EDITOR ### exit -Exit opencode. _Aliases_: `/quit`, `/q` +Exit OpenCode. _Aliases_: `/quit`, `/q` ```bash frame="none" /exit @@ -330,7 +330,7 @@ Some editors need command-line arguments to run in blocking mode. The `--wait` f ## Configure -You can customize TUI behavior through your opencode config file. +You can customize TUI behavior through your OpenCode config file. ```json title="opencode.json" { diff --git a/packages/web/src/content/docs/zen.mdx b/packages/web/src/content/docs/zen.mdx index 0b7d12642..0ccfbedd2 100644 --- a/packages/web/src/content/docs/zen.mdx +++ b/packages/web/src/content/docs/zen.mdx @@ -1,21 +1,21 @@ --- title: Zen -description: Curated list of models provided by opencode. +description: Curated list of models provided by OpenCode. --- import config from "../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -opencode zen is a list of tested and verified models provided by the opencode team. +OpenCode Zen is a list of tested and verified models provided by the OpenCode team. :::note -opencode zen is currently in beta. +OpenCode Zen is currently in beta. ::: -Zen works like any other provider in opencode. You login to opencode zen and get +Zen works like any other provider in OpenCode. You login to OpenCode Zen and get your API key. It's **completely optional** and you don't need to use it to use -opencode. +OpenCode. --- @@ -26,7 +26,7 @@ these models work well as coding agents. Additionally, most providers are configured very differently; so you get very different performance and quality. :::tip -We tested a select group of models and providers that work well with opencode. +We tested a select group of models and providers that work well with OpenCode. ::: So if you are using a model through something like OpenRouter, you can never be @@ -41,15 +41,15 @@ To fix this, we did a couple of things: 3. Finally, we benchmarked the combination of the model/provider and came up with a list that we feel good recommending. -opencode zen is an AI gateway that gives you access to these models. +OpenCode Zen is an AI gateway that gives you access to these models. --- ## How it works -opencode zen works like any other provider in opencode. +OpenCode Zen works like any other provider in OpenCode. -1. You sign in to **opencode zen**, add your billing +1. You sign in to **OpenCode Zen**, add your billing details, and copy your API key. 2. You run `opencode auth login`, select opencode, and paste your API key. 3. Run `/models` in the TUI to see the list of models we recommend. @@ -95,13 +95,13 @@ We support a pay-as-you-go model. Below are the prices **per 1M tokens**. | GPT 5 Codex | $1.25 | $10.00 | $0.125 | - | :::note -Credit card fees are passed along at cost; we don’t charge anything beyond that. +Credit card fees are passed along at cost; we don't charge anything beyond that. ::: The free models: -- Grok Code Fast 1 is currently free on opencode for a limited time. The xAI team is using this time to collect feedback and improve Grok Code. -- Code Supernova is a stealth model that's free on opencode for a limited time. The team is using this time to collect feedback and improve the model. +- Grok Code Fast 1 is currently free on OpenCode for a limited time. The xAI team is using this time to collect feedback and improve Grok Code. +- Code Supernova is a stealth model that's free on OpenCode for a limited time. The team is using this time to collect feedback and improve the model. :::tip Subscription plans and a free tier are coming soon. @@ -125,9 +125,9 @@ All our models are hosted in the US. Our providers follow a zero-retention polic ## Goals -We created opencode zen to: +We created OpenCode Zen to: 1. **Benchmark** the best models/providers for coding agents. 2. Have access to the **highest quality** options and not downgrade performance or route to cheaper providers. 3. Pass along any **price drops** by selling at cost; so the only markup is to cover our processing fees. -4. Have **no lock-in** by allowing you to use it with any other coding agent. And always let you use any other provider with opencode as well. +4. Have **no lock-in** by allowing you to use it with any other coding agent. And always let you use any other provider with OpenCode as well. From 96718720595026aee814be05e8a29d6d07f30714 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 3 Oct 2025 16:32:53 -0400 Subject: [PATCH 17/23] wip: zen --- .../core/migrations/0024_early_black_crow.sql | 2 + .../core/migrations/meta/0024_snapshot.json | 724 ++++++++++++++++++ .../core/migrations/meta/_journal.json | 7 + packages/console/core/src/schema/user.sql.ts | 2 - packages/console/core/src/user.ts | 108 +-- 5 files changed, 769 insertions(+), 74 deletions(-) create mode 100644 packages/console/core/migrations/0024_early_black_crow.sql create mode 100644 packages/console/core/migrations/meta/0024_snapshot.json diff --git a/packages/console/core/migrations/0024_early_black_crow.sql b/packages/console/core/migrations/0024_early_black_crow.sql new file mode 100644 index 000000000..903c32bda --- /dev/null +++ b/packages/console/core/migrations/0024_early_black_crow.sql @@ -0,0 +1,2 @@ +ALTER TABLE `user` DROP COLUMN `old_account_id`;--> statement-breakpoint +ALTER TABLE `user` DROP COLUMN `old_email`; \ No newline at end of file diff --git a/packages/console/core/migrations/meta/0024_snapshot.json b/packages/console/core/migrations/meta/0024_snapshot.json new file mode 100644 index 000000000..4f50945d6 --- /dev/null +++ b/packages/console/core/migrations/meta/0024_snapshot.json @@ -0,0 +1,724 @@ +{ + "version": "5", + "dialect": "mysql", + "id": "6d546f3e-17b2-4195-bb10-7e6d91774bd7", + "prevId": "6857f409-1b5d-4752-9d65-a82ee70e6ad2", + "tables": { + "account": { + "name": "account", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "email": { + "name": "email", + "columns": [ + "email" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "billing": { + "name": "billing", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "customer_id": { + "name": "customer_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "payment_method_id": { + "name": "payment_method_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "payment_method_last4": { + "name": "payment_method_last4", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "balance": { + "name": "balance", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "monthly_limit": { + "name": "monthly_limit", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "monthly_usage": { + "name": "monthly_usage", + "type": "bigint", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_monthly_usage_updated": { + "name": "time_monthly_usage_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "reload": { + "name": "reload", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "reload_error": { + "name": "reload_error", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_reload_error": { + "name": "time_reload_error", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_reload_locked_till": { + "name": "time_reload_locked_till", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "global_customer_id": { + "name": "global_customer_id", + "columns": [ + "customer_id" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "billing_workspace_id_id_pk": { + "name": "billing_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "payment": { + "name": "payment", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "customer_id": { + "name": "customer_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "invoice_id": { + "name": "invoice_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "payment_id": { + "name": "payment_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "amount": { + "name": "amount", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_refunded": { + "name": "time_refunded", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "payment_workspace_id_id_pk": { + "name": "payment_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "usage": { + "name": "usage", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "model": { + "name": "model", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "input_tokens": { + "name": "input_tokens", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "output_tokens": { + "name": "output_tokens", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "reasoning_tokens": { + "name": "reasoning_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cache_read_tokens": { + "name": "cache_read_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cache_write_5m_tokens": { + "name": "cache_write_5m_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cache_write_1h_tokens": { + "name": "cache_write_1h_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cost": { + "name": "cost", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "usage_workspace_id_id_pk": { + "name": "usage_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "key": { + "name": "key", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "actor": { + "name": "actor", + "type": "json", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "old_name": { + "name": "old_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "key": { + "name": "key", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_used": { + "name": "time_used", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "global_key": { + "name": "global_key", + "columns": [ + "key" + ], + "isUnique": true + }, + "name": { + "name": "name", + "columns": [ + "workspace_id", + "name" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "key_workspace_id_id_pk": { + "name": "key_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "user": { + "name": "user", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "account_id": { + "name": "account_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_seen": { + "name": "time_seen", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "color": { + "name": "color", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "enum('admin','member')", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "user_account_id": { + "name": "user_account_id", + "columns": [ + "workspace_id", + "account_id" + ], + "isUnique": true + }, + "user_email": { + "name": "user_email", + "columns": [ + "workspace_id", + "email" + ], + "isUnique": true + }, + "global_account_id": { + "name": "global_account_id", + "columns": [ + "account_id" + ], + "isUnique": false + }, + "global_email": { + "name": "global_email", + "columns": [ + "email" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "user_workspace_id_id_pk": { + "name": "user_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "workspace": { + "name": "workspace", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "slug": { + "name": "slug", + "columns": [ + "slug" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "workspace_id": { + "name": "workspace_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + } + }, + "views": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "tables": {}, + "indexes": {} + } +} \ No newline at end of file diff --git a/packages/console/core/migrations/meta/_journal.json b/packages/console/core/migrations/meta/_journal.json index eec9455b9..a325f80eb 100644 --- a/packages/console/core/migrations/meta/_journal.json +++ b/packages/console/core/migrations/meta/_journal.json @@ -169,6 +169,13 @@ "when": 1759444220653, "tag": "0023_optimal_paibok", "breakpoints": true + }, + { + "idx": 24, + "version": "5", + "when": 1759522925614, + "tag": "0024_early_black_crow", + "breakpoints": true } ] } \ No newline at end of file diff --git a/packages/console/core/src/schema/user.sql.ts b/packages/console/core/src/schema/user.sql.ts index cce0cb986..121199f72 100644 --- a/packages/console/core/src/schema/user.sql.ts +++ b/packages/console/core/src/schema/user.sql.ts @@ -10,9 +10,7 @@ export const UserTable = mysqlTable( ...workspaceColumns, ...timestamps, accountID: ulid("account_id"), - oldAccountID: ulid("old_account_id"), email: varchar("email", { length: 255 }), - oldEmail: varchar("old_email", { length: 255 }), name: varchar("name", { length: 255 }).notNull(), timeSeen: utc("time_seen"), color: int("color"), diff --git a/packages/console/core/src/user.ts b/packages/console/core/src/user.ts index 590f4427a..58f02b8df 100644 --- a/packages/console/core/src/user.ts +++ b/packages/console/core/src/user.ts @@ -10,6 +10,7 @@ import { AWS } from "./aws" import { Account } from "./account" import { AccountTable } from "./schema/account.sql" import { Key } from "./key" +import { KeyTable } from "./schema/key.sql" export namespace User { const assertAdmin = async () => { @@ -70,66 +71,41 @@ export namespace User { }), async ({ email, role }) => { await assertAdmin() - const workspaceID = Actor.workspace() - await Database.transaction(async (tx) => { - const account = await Account.fromEmail(email) - const existing = await tx - .select() - .from(UserTable) - .where( - and( - eq(UserTable.workspaceID, Actor.workspace()), - account ? eq(UserTable.oldAccountID, account.id) : eq(UserTable.oldEmail, email), - ), - ) - .then((rows) => rows[0]) - // case: previously invited and removed - if (existing) { - await tx - .update(UserTable) - .set({ + // create user + const account = await Account.fromEmail(email) + await Database.use((tx) => + tx + .insert(UserTable) + .values({ + id: Identifier.create("user"), + name: "", + ...(account + ? { + accountID: account.id, + } + : { + email, + }), + workspaceID, + role, + }) + .onDuplicateKeyUpdate({ + set: { role, timeDeleted: null, - ...(account - ? { - oldAccountID: null, - accountID: account.id, - } - : { - oldEmail: null, - email, - }), - }) - .where(and(eq(UserTable.workspaceID, existing.workspaceID), eq(UserTable.id, existing.id))) - } - // case: account previously not invited - else { - await tx - .insert(UserTable) - .values({ - id: Identifier.create("user"), - name: "", - ...(account - ? { - accountID: account.id, - } - : { - email, - }), - workspaceID, - role, - }) - .catch((e: any) => { - if (e.message.match(/Duplicate entry '.*' for key 'user.user_account_id'/)) - throw new Error("A user with this email has already been invited.") - if (e.message.match(/Duplicate entry '.*' for key 'user.user_email'/)) - throw new Error("A user with this email has already been invited.") - throw e - }) - } - }) + }, + }), + ) + + // create api key + //if (account) { + // const existing = await Database.use(tx => { + // const key = tx.select().from(KeyTable).where(and(eq(KeyTable.workspaceID, workspaceID), eq(KeyTable, account.id))).then((rows) => rows[0]) + // return key + // }) + //} // send email, ignore errors try { @@ -208,25 +184,13 @@ export namespace User { await assertAdmin() assertNotSelf(id) - return await Database.transaction(async (tx) => { - const user = await fromID(id) - if (!user) throw new Error("User not found") - - await tx + return await Database.use((tx) => + tx .update(UserTable) .set({ - ...(user.email - ? { - oldEmail: user.email, - email: null, - } - : { - oldAccountID: user.accountID, - accountID: null, - }), timeDeleted: sql`now()`, }) - .where(and(eq(UserTable.id, id), eq(UserTable.workspaceID, Actor.workspace()))) - }) + .where(and(eq(UserTable.id, id), eq(UserTable.workspaceID, Actor.workspace()))), + ) }) } From 085f4adbc31f9d8de0e7e251cf9707672d17a7c7 Mon Sep 17 00:00:00 2001 From: Rovshan Muradov <63051606+RovshanMuradov@users.noreply.github.com> Date: Sat, 4 Oct 2025 01:06:20 +0400 Subject: [PATCH 18/23] docs: Update models.mdx (#2916) --- packages/web/src/content/docs/models.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/web/src/content/docs/models.mdx b/packages/web/src/content/docs/models.mdx index f3963f2ac..e7de73bb2 100644 --- a/packages/web/src/content/docs/models.mdx +++ b/packages/web/src/content/docs/models.mdx @@ -37,8 +37,8 @@ However, there are a only a few of them that are good at both generating code an Here are the ones we recommend with OpenCode: -- Claude Sonnet 4 -- Claude Opus 4 +- Claude Sonnet 4.5 +- Claude Opus 4.1 - Kimi K2 - Qwen3 Coder - GPT 4.1 @@ -86,7 +86,7 @@ You can globally configure a model's options through the config. }, "anthropic": { "models": { - "claude-sonnet-4-20250514": { + "claude-sonnet-4-5-20250929": { "options": { "thinking": { "type": "enabled", From 477586835a3c2441169f0cd45da4cedd0771a34b Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Fri, 3 Oct 2025 19:05:32 -0400 Subject: [PATCH 19/23] ci: try regional hostname again --- infra/stage.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/infra/stage.ts b/infra/stage.ts index 7ec91e9ac..729422905 100644 --- a/infra/stage.ts +++ b/infra/stage.ts @@ -6,8 +6,8 @@ export const domain = (() => { export const zoneID = "430ba34c138cfb5360826c4909f99be8" -// new cloudflare.RegionalHostname("RegionalHostname", { -// hostname: domain, -// regionKey: "us", -// zoneId: zoneID, -// }) +new cloudflare.RegionalHostname("RegionalHostname", { + hostname: domain, + regionKey: "us", + zoneId: zoneID, +}) From a11a608760f7d2b7155e2f11574b648d4cb51c00 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 3 Oct 2025 23:48:29 -0400 Subject: [PATCH 20/23] wip: zen --- .../core/migrations/0025_legal_joseph.sql | 1 + .../core/migrations/0026_numerous_prodigy.sql | 1 + .../core/migrations/meta/0025_snapshot.json | 731 ++++++++++++++++++ .../core/migrations/meta/0026_snapshot.json | 723 +++++++++++++++++ .../core/migrations/meta/_journal.json | 14 + packages/console/core/src/key.ts | 32 +- packages/console/core/src/schema/key.sql.ts | 9 +- packages/console/core/src/user.ts | 3 +- packages/console/core/src/workspace.ts | 6 +- 9 files changed, 1488 insertions(+), 32 deletions(-) create mode 100644 packages/console/core/migrations/0025_legal_joseph.sql create mode 100644 packages/console/core/migrations/0026_numerous_prodigy.sql create mode 100644 packages/console/core/migrations/meta/0025_snapshot.json create mode 100644 packages/console/core/migrations/meta/0026_snapshot.json diff --git a/packages/console/core/migrations/0025_legal_joseph.sql b/packages/console/core/migrations/0025_legal_joseph.sql new file mode 100644 index 000000000..dcf4773de --- /dev/null +++ b/packages/console/core/migrations/0025_legal_joseph.sql @@ -0,0 +1 @@ +ALTER TABLE `key` ADD `user_id` varchar(30); \ No newline at end of file diff --git a/packages/console/core/migrations/0026_numerous_prodigy.sql b/packages/console/core/migrations/0026_numerous_prodigy.sql new file mode 100644 index 000000000..d90e747c1 --- /dev/null +++ b/packages/console/core/migrations/0026_numerous_prodigy.sql @@ -0,0 +1 @@ +ALTER TABLE `key` DROP INDEX `name`; \ No newline at end of file diff --git a/packages/console/core/migrations/meta/0025_snapshot.json b/packages/console/core/migrations/meta/0025_snapshot.json new file mode 100644 index 000000000..4b0cef0c0 --- /dev/null +++ b/packages/console/core/migrations/meta/0025_snapshot.json @@ -0,0 +1,731 @@ +{ + "version": "5", + "dialect": "mysql", + "id": "ce444765-0606-4880-970a-2176bc2a78ac", + "prevId": "6d546f3e-17b2-4195-bb10-7e6d91774bd7", + "tables": { + "account": { + "name": "account", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "email": { + "name": "email", + "columns": [ + "email" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "billing": { + "name": "billing", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "customer_id": { + "name": "customer_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "payment_method_id": { + "name": "payment_method_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "payment_method_last4": { + "name": "payment_method_last4", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "balance": { + "name": "balance", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "monthly_limit": { + "name": "monthly_limit", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "monthly_usage": { + "name": "monthly_usage", + "type": "bigint", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_monthly_usage_updated": { + "name": "time_monthly_usage_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "reload": { + "name": "reload", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "reload_error": { + "name": "reload_error", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_reload_error": { + "name": "time_reload_error", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_reload_locked_till": { + "name": "time_reload_locked_till", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "global_customer_id": { + "name": "global_customer_id", + "columns": [ + "customer_id" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "billing_workspace_id_id_pk": { + "name": "billing_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "payment": { + "name": "payment", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "customer_id": { + "name": "customer_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "invoice_id": { + "name": "invoice_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "payment_id": { + "name": "payment_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "amount": { + "name": "amount", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_refunded": { + "name": "time_refunded", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "payment_workspace_id_id_pk": { + "name": "payment_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "usage": { + "name": "usage", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "model": { + "name": "model", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "input_tokens": { + "name": "input_tokens", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "output_tokens": { + "name": "output_tokens", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "reasoning_tokens": { + "name": "reasoning_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cache_read_tokens": { + "name": "cache_read_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cache_write_5m_tokens": { + "name": "cache_write_5m_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cache_write_1h_tokens": { + "name": "cache_write_1h_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cost": { + "name": "cost", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "usage_workspace_id_id_pk": { + "name": "usage_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "key": { + "name": "key", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "actor": { + "name": "actor", + "type": "json", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "old_name": { + "name": "old_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "key": { + "name": "key", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_used": { + "name": "time_used", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "global_key": { + "name": "global_key", + "columns": [ + "key" + ], + "isUnique": true + }, + "name": { + "name": "name", + "columns": [ + "workspace_id", + "name" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "key_workspace_id_id_pk": { + "name": "key_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "user": { + "name": "user", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "account_id": { + "name": "account_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_seen": { + "name": "time_seen", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "color": { + "name": "color", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "enum('admin','member')", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "user_account_id": { + "name": "user_account_id", + "columns": [ + "workspace_id", + "account_id" + ], + "isUnique": true + }, + "user_email": { + "name": "user_email", + "columns": [ + "workspace_id", + "email" + ], + "isUnique": true + }, + "global_account_id": { + "name": "global_account_id", + "columns": [ + "account_id" + ], + "isUnique": false + }, + "global_email": { + "name": "global_email", + "columns": [ + "email" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "user_workspace_id_id_pk": { + "name": "user_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "workspace": { + "name": "workspace", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "slug": { + "name": "slug", + "columns": [ + "slug" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "workspace_id": { + "name": "workspace_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + } + }, + "views": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "tables": {}, + "indexes": {} + } +} \ No newline at end of file diff --git a/packages/console/core/migrations/meta/0026_snapshot.json b/packages/console/core/migrations/meta/0026_snapshot.json new file mode 100644 index 000000000..543ab44c3 --- /dev/null +++ b/packages/console/core/migrations/meta/0026_snapshot.json @@ -0,0 +1,723 @@ +{ + "version": "5", + "dialect": "mysql", + "id": "9e1313c7-ca78-4d2c-b13b-625d9d6fcaa3", + "prevId": "ce444765-0606-4880-970a-2176bc2a78ac", + "tables": { + "account": { + "name": "account", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "email": { + "name": "email", + "columns": [ + "email" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "billing": { + "name": "billing", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "customer_id": { + "name": "customer_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "payment_method_id": { + "name": "payment_method_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "payment_method_last4": { + "name": "payment_method_last4", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "balance": { + "name": "balance", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "monthly_limit": { + "name": "monthly_limit", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "monthly_usage": { + "name": "monthly_usage", + "type": "bigint", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_monthly_usage_updated": { + "name": "time_monthly_usage_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "reload": { + "name": "reload", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "reload_error": { + "name": "reload_error", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_reload_error": { + "name": "time_reload_error", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_reload_locked_till": { + "name": "time_reload_locked_till", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "global_customer_id": { + "name": "global_customer_id", + "columns": [ + "customer_id" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "billing_workspace_id_id_pk": { + "name": "billing_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "payment": { + "name": "payment", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "customer_id": { + "name": "customer_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "invoice_id": { + "name": "invoice_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "payment_id": { + "name": "payment_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "amount": { + "name": "amount", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_refunded": { + "name": "time_refunded", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "payment_workspace_id_id_pk": { + "name": "payment_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "usage": { + "name": "usage", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "model": { + "name": "model", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "input_tokens": { + "name": "input_tokens", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "output_tokens": { + "name": "output_tokens", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "reasoning_tokens": { + "name": "reasoning_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cache_read_tokens": { + "name": "cache_read_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cache_write_5m_tokens": { + "name": "cache_write_5m_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cache_write_1h_tokens": { + "name": "cache_write_1h_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cost": { + "name": "cost", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "usage_workspace_id_id_pk": { + "name": "usage_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "key": { + "name": "key", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "actor": { + "name": "actor", + "type": "json", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "old_name": { + "name": "old_name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "key": { + "name": "key", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_used": { + "name": "time_used", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "global_key": { + "name": "global_key", + "columns": [ + "key" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "key_workspace_id_id_pk": { + "name": "key_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "user": { + "name": "user", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "account_id": { + "name": "account_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_seen": { + "name": "time_seen", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "color": { + "name": "color", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "enum('admin','member')", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "user_account_id": { + "name": "user_account_id", + "columns": [ + "workspace_id", + "account_id" + ], + "isUnique": true + }, + "user_email": { + "name": "user_email", + "columns": [ + "workspace_id", + "email" + ], + "isUnique": true + }, + "global_account_id": { + "name": "global_account_id", + "columns": [ + "account_id" + ], + "isUnique": false + }, + "global_email": { + "name": "global_email", + "columns": [ + "email" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "user_workspace_id_id_pk": { + "name": "user_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "workspace": { + "name": "workspace", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "slug": { + "name": "slug", + "columns": [ + "slug" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "workspace_id": { + "name": "workspace_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + } + }, + "views": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "tables": {}, + "indexes": {} + } +} \ No newline at end of file diff --git a/packages/console/core/migrations/meta/_journal.json b/packages/console/core/migrations/meta/_journal.json index a325f80eb..1adcc06ea 100644 --- a/packages/console/core/migrations/meta/_journal.json +++ b/packages/console/core/migrations/meta/_journal.json @@ -176,6 +176,20 @@ "when": 1759522925614, "tag": "0024_early_black_crow", "breakpoints": true + }, + { + "idx": 25, + "version": "5", + "when": 1759525451885, + "tag": "0025_legal_joseph", + "breakpoints": true + }, + { + "idx": 26, + "version": "5", + "when": 1759546980316, + "tag": "0026_numerous_prodigy", + "breakpoints": true } ] } \ No newline at end of file diff --git a/packages/console/core/src/key.ts b/packages/console/core/src/key.ts index 28643a521..fa9b56f28 100644 --- a/packages/console/core/src/key.ts +++ b/packages/console/core/src/key.ts @@ -19,7 +19,6 @@ export namespace Key { } export const create = fn(z.object({ name: z.string().min(1).max(255) }), async (input) => { - const workspaceID = Actor.workspace() const { name } = input // Generate secret key: sk- + 64 random characters (upper, lower, numbers) @@ -31,45 +30,32 @@ export namespace Key { secretKey += chars[array[i] % chars.length] } const keyID = Identifier.create("key") + const user = Actor.assert("user") await Database.use((tx) => tx.insert(KeyTable).values({ id: keyID, - workspaceID, - actor: Actor.use(), + workspaceID: Actor.workspace(), + actor: user, + userID: user.properties.userID, name, key: secretKey, timeUsed: null, }), - ).catch((e: any) => { - if (e.message.match(/Duplicate entry '.*' for key 'key.name'/)) - throw new Error("A key with this name already exists. Please choose a different name.") - throw e - }) + ) return keyID }) export const remove = fn(z.object({ id: z.string() }), async (input) => { const workspace = Actor.workspace() - await Database.transaction(async (tx) => { - const row = await tx - .select({ - name: KeyTable.name, - }) - .from(KeyTable) - .where(and(eq(KeyTable.id, input.id), eq(KeyTable.workspaceID, workspace))) - .then((rows) => rows[0]) - if (!row) return - - await tx + await Database.transaction((tx) => + tx .update(KeyTable) .set({ timeDeleted: sql`now()`, - oldName: row.name, - name: input.id, // Use the key ID as the name }) - .where(and(eq(KeyTable.id, input.id), eq(KeyTable.workspaceID, workspace))) - }) + .where(and(eq(KeyTable.id, input.id), eq(KeyTable.workspaceID, workspace))), + ) }) } diff --git a/packages/console/core/src/schema/key.sql.ts b/packages/console/core/src/schema/key.sql.ts index 98b99c788..892c74686 100644 --- a/packages/console/core/src/schema/key.sql.ts +++ b/packages/console/core/src/schema/key.sql.ts @@ -1,5 +1,5 @@ import { mysqlTable, varchar, uniqueIndex, json } from "drizzle-orm/mysql-core" -import { timestamps, utc, workspaceColumns } from "../drizzle/types" +import { timestamps, ulid, utc, workspaceColumns } from "../drizzle/types" import { workspaceIndexes } from "./workspace.sql" import { Actor } from "../actor" @@ -12,11 +12,8 @@ export const KeyTable = mysqlTable( name: varchar("name", { length: 255 }).notNull(), oldName: varchar("old_name", { length: 255 }), key: varchar("key", { length: 255 }).notNull(), + userID: ulid("user_id"), timeUsed: utc("time_used"), }, - (table) => [ - ...workspaceIndexes(table), - uniqueIndex("global_key").on(table.key), - uniqueIndex("name").on(table.workspaceID, table.name), - ], + (table) => [...workspaceIndexes(table), uniqueIndex("global_key").on(table.key)], ) diff --git a/packages/console/core/src/user.ts b/packages/console/core/src/user.ts index 58f02b8df..f6a78ad48 100644 --- a/packages/console/core/src/user.ts +++ b/packages/console/core/src/user.ts @@ -151,9 +151,10 @@ export namespace User { await Promise.all( invitations.map((invite) => Actor.provide( - "system", + "user", { workspaceID: invite.workspaceID, + userID: invite.id, }, () => Key.create({ name: "Default API Key" }), ), diff --git a/packages/console/core/src/workspace.ts b/packages/console/core/src/workspace.ts index 6119f51df..70cd21dba 100644 --- a/packages/console/core/src/workspace.ts +++ b/packages/console/core/src/workspace.ts @@ -12,13 +12,14 @@ export namespace Workspace { export const create = fn(z.void(), async () => { const account = Actor.assert("account") const workspaceID = Identifier.create("workspace") + const userID = Identifier.create("user") await Database.transaction(async (tx) => { await tx.insert(WorkspaceTable).values({ id: workspaceID, }) await tx.insert(UserTable).values({ workspaceID, - id: Identifier.create("user"), + id: userID, accountID: account.properties.accountID, name: "", role: "admin", @@ -30,9 +31,10 @@ export namespace Workspace { }) }) await Actor.provide( - "system", + "user", { workspaceID, + userID, }, () => Key.create({ name: "Default API Key" }), ) From 395c41b7488a04d46a9080e3c8dfdcbcacf3e828 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Fri, 3 Oct 2025 23:07:58 -0500 Subject: [PATCH 21/23] add command to debug config (#2962) --- packages/opencode/src/cli/cmd/debug/config.ts | 14 ++++++++++++++ packages/opencode/src/cli/cmd/debug/index.ts | 2 ++ 2 files changed, 16 insertions(+) create mode 100644 packages/opencode/src/cli/cmd/debug/config.ts diff --git a/packages/opencode/src/cli/cmd/debug/config.ts b/packages/opencode/src/cli/cmd/debug/config.ts new file mode 100644 index 000000000..c7ce8d0e7 --- /dev/null +++ b/packages/opencode/src/cli/cmd/debug/config.ts @@ -0,0 +1,14 @@ +import { Config } from "../../../config/config" +import { bootstrap } from "../../bootstrap" +import { cmd } from "../cmd" + +export const ConfigCommand = cmd({ + command: "config", + builder: (yargs) => yargs, + async handler() { + await bootstrap(process.cwd(), async () => { + const config = await Config.get() + console.log(JSON.stringify(config, null, 2)) + }) + }, +}) diff --git a/packages/opencode/src/cli/cmd/debug/index.ts b/packages/opencode/src/cli/cmd/debug/index.ts index 71d337e32..172987875 100644 --- a/packages/opencode/src/cli/cmd/debug/index.ts +++ b/packages/opencode/src/cli/cmd/debug/index.ts @@ -1,6 +1,7 @@ import { Global } from "../../../global" import { bootstrap } from "../../bootstrap" import { cmd } from "../cmd" +import { ConfigCommand } from "./config" import { FileCommand } from "./file" import { LSPCommand } from "./lsp" import { RipgrepCommand } from "./ripgrep" @@ -11,6 +12,7 @@ export const DebugCommand = cmd({ command: "debug", builder: (yargs) => yargs + .command(ConfigCommand) .command(LSPCommand) .command(RipgrepCommand) .command(FileCommand) From e7b6ffb31484c7bcc809aebbdcaf7d2ce49a13d5 Mon Sep 17 00:00:00 2001 From: Yuku Kotani Date: Sat, 4 Oct 2025 14:10:38 +0900 Subject: [PATCH 22/23] feat: Vertex AI support; add google-vertex and google-vertex-anthropic providers (#2347) --- bun.lock | 43 ++++++++++++++++++--- packages/opencode/package.json | 1 + packages/opencode/src/cli/cmd/auth.ts | 8 ++++ packages/opencode/src/provider/provider.ts | 45 +++++++++++++++++++++- 4 files changed, 91 insertions(+), 6 deletions(-) diff --git a/bun.lock b/bun.lock index 068a37caa..4587b5b80 100644 --- a/bun.lock +++ b/bun.lock @@ -183,6 +183,7 @@ }, "devDependencies": { "@ai-sdk/amazon-bedrock": "2.2.10", + "@ai-sdk/google-vertex": "3.0.16", "@octokit/webhooks-types": "7.6.1", "@standard-schema/spec": "1.0.0", "@tsconfig/bun": "1.0.7", @@ -282,6 +283,10 @@ "@ai-sdk/gateway": ["@ai-sdk/gateway@1.0.4", "", { "dependencies": { "@ai-sdk/provider": "2.0.0", "@ai-sdk/provider-utils": "3.0.1" }, "peerDependencies": { "zod": "^3.25.76 || ^4" } }, "sha512-1roLdgMbFU3Nr4MC97/te7w6OqxsWBkDUkpbCcvxF3jz/ku91WVaJldn/PKU8feMKNyI5W9wnqhbjb1BqbExOQ=="], + "@ai-sdk/google": ["@ai-sdk/google@2.0.11", "", { "dependencies": { "@ai-sdk/provider": "2.0.0", "@ai-sdk/provider-utils": "3.0.7" }, "peerDependencies": { "zod": "^3.25.76 || ^4" } }, "sha512-dnVIgSz1DZD/0gVau6ifYN3HZFN15HZwC9VjevTFfvrfSfbEvpXj5x/k/zk/0XuQrlQ5g8JiwJtxc9bx24x2xw=="], + + "@ai-sdk/google-vertex": ["@ai-sdk/google-vertex@3.0.16", "", { "dependencies": { "@ai-sdk/anthropic": "2.0.9", "@ai-sdk/google": "2.0.11", "@ai-sdk/provider": "2.0.0", "@ai-sdk/provider-utils": "3.0.7", "google-auth-library": "^9.15.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4" } }, "sha512-tStlnOCRGRqKKJSCOtXhijX4r9kYVK2v+Vs7miJnfvr3sZfO8nRS0xnNhfgu17xuNi5LMMufeCYURTz4lKxzUQ=="], + "@ai-sdk/openai": ["@ai-sdk/openai@2.0.2", "", { "dependencies": { "@ai-sdk/provider": "2.0.0", "@ai-sdk/provider-utils": "3.0.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4" } }, "sha512-D4zYz2uR90aooKQvX1XnS00Z7PkbrcY+snUvPfm5bCabTG7bzLrVtD56nJ5bSaZG8lmuOMfXpyiEEArYLyWPpw=="], "@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@1.0.1", "", { "dependencies": { "@ai-sdk/provider": "2.0.0", "@ai-sdk/provider-utils": "3.0.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4" } }, "sha512-luHVcU+yKzwv3ekKgbP3v+elUVxb2Rt+8c6w9qi7g2NYG2/pEL21oIrnaEnc6UtTZLLZX9EFBcpq2N1FQKDIMw=="], @@ -1332,6 +1337,8 @@ "before-after-hook": ["before-after-hook@4.0.0", "", {}, "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ=="], + "bignumber.js": ["bignumber.js@9.3.1", "", {}, "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ=="], + "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], "bindings": ["bindings@1.5.0", "", { "dependencies": { "file-uri-to-path": "1.0.0" } }, "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ=="], @@ -1362,6 +1369,8 @@ "buffer-crc32": ["buffer-crc32@1.0.0", "", {}, "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w=="], + "buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="], + "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], "bun-types": ["bun-types@1.2.21", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-sa2Tj77Ijc/NTLS0/Odjq/qngmEPZfbfnOERi0KRUYhT9R8M4VBioWVmMWE5GrYbKMc+5lVybXygLdibHaqVqw=="], @@ -1582,6 +1591,8 @@ "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="], + "ecdsa-sig-formatter": ["ecdsa-sig-formatter@1.0.11", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ=="], + "editorconfig": ["editorconfig@1.0.4", "", { "dependencies": { "@one-ini/wasm": "0.1.1", "commander": "^10.0.0", "minimatch": "9.0.1", "semver": "^7.5.3" }, "bin": { "editorconfig": "bin/editorconfig" } }, "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q=="], "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], @@ -1734,6 +1745,10 @@ "fuzzysort": ["fuzzysort@3.1.0", "", {}, "sha512-sR9BNCjBg6LNgwvxlBd0sBABvQitkLzoVY9MYYROQVX/FvfJ4Mai9LsGhDgd8qYdds0bY77VzYd5iuB+v5rwQQ=="], + "gaxios": ["gaxios@6.7.1", "", { "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "is-stream": "^2.0.0", "node-fetch": "^2.6.9", "uuid": "^9.0.1" } }, "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ=="], + + "gcp-metadata": ["gcp-metadata@6.1.1", "", { "dependencies": { "gaxios": "^6.1.1", "google-logging-utils": "^0.0.2", "json-bigint": "^1.0.0" } }, "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A=="], + "gel": ["gel@2.1.1", "", { "dependencies": { "@petamoriken/float16": "^3.8.7", "debug": "^4.3.4", "env-paths": "^3.0.0", "semver": "^7.6.2", "shell-quote": "^1.8.1", "which": "^4.0.0" }, "bin": { "gel": "dist/cli.mjs" } }, "sha512-Newg9X7mRYskoBjSw70l1YnJ/ZGbq64VPyR821H5WVkTGpHG2O0mQILxCeUhxdYERLFY9B4tUyKLyf3uMTjtKw=="], "generate-function": ["generate-function@2.3.1", "", { "dependencies": { "is-property": "^1.0.2" } }, "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ=="], @@ -1772,12 +1787,18 @@ "globby": ["globby@11.0.4", "", { "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.1.1", "ignore": "^5.1.4", "merge2": "^1.3.0", "slash": "^3.0.0" } }, "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg=="], + "google-auth-library": ["google-auth-library@9.15.1", "", { "dependencies": { "base64-js": "^1.3.0", "ecdsa-sig-formatter": "^1.0.11", "gaxios": "^6.1.1", "gcp-metadata": "^6.1.0", "gtoken": "^7.0.0", "jws": "^4.0.0" } }, "sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng=="], + + "google-logging-utils": ["google-logging-utils@0.0.2", "", {}, "sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ=="], + "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], "gray-matter": ["gray-matter@4.0.3", "", { "dependencies": { "js-yaml": "^3.13.1", "kind-of": "^6.0.2", "section-matter": "^1.0.0", "strip-bom-string": "^1.0.0" } }, "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q=="], + "gtoken": ["gtoken@7.1.0", "", { "dependencies": { "gaxios": "^6.0.0", "jws": "^4.0.0" } }, "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw=="], + "gzip-size": ["gzip-size@7.0.0", "", { "dependencies": { "duplexer": "^0.1.2" } }, "sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA=="], "h3": ["h3@1.15.3", "", { "dependencies": { "cookie-es": "^1.2.2", "crossws": "^0.3.4", "defu": "^6.1.4", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.0", "radix3": "^1.1.2", "ufo": "^1.6.1", "uncrypto": "^0.1.3" } }, "sha512-z6GknHqyX0h9aQaTx22VZDf6QyZn+0Nh+Ym8O/u0SGSkyF5cuTJYKlc8MkzW3Nzf9LE1ivcpmYC3FUGpywhuUQ=="], @@ -1950,7 +1971,7 @@ "is-regex": ["is-regex@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g=="], - "is-stream": ["is-stream@3.0.0", "", {}, "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA=="], + "is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], "is-typed-array": ["is-typed-array@1.1.15", "", { "dependencies": { "which-typed-array": "^1.1.16" } }, "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ=="], @@ -1986,6 +2007,8 @@ "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], + "json-bigint": ["json-bigint@1.0.0", "", { "dependencies": { "bignumber.js": "^9.0.0" } }, "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ=="], + "json-schema": ["json-schema@0.4.0", "", {}, "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="], "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], @@ -1996,6 +2019,10 @@ "jsonfile": ["jsonfile@6.2.0", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg=="], + "jwa": ["jwa@2.0.1", "", { "dependencies": { "buffer-equal-constant-time": "^1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg=="], + + "jws": ["jws@4.0.0", "", { "dependencies": { "jwa": "^2.0.0", "safe-buffer": "^5.0.1" } }, "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg=="], + "kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="], "kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="], @@ -3014,6 +3041,12 @@ "@ai-sdk/gateway/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@3.0.1", "", { "dependencies": { "@ai-sdk/provider": "2.0.0", "@standard-schema/spec": "^1.0.0", "eventsource-parser": "^3.0.3", "zod-to-json-schema": "^3.24.1" }, "peerDependencies": { "zod": "^3.25.76 || ^4" } }, "sha512-/iP1sKc6UdJgGH98OCly7sWJKv+J9G47PnTjIj40IJMUQKwDrUMyf7zOOfRtPwSuNifYhSoJQ4s1WltI65gJ/g=="], + "@ai-sdk/google/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@3.0.7", "", { "dependencies": { "@ai-sdk/provider": "2.0.0", "@standard-schema/spec": "^1.0.0", "eventsource-parser": "^3.0.5" }, "peerDependencies": { "zod": "^3.25.76 || ^4" } }, "sha512-o3BS5/t8KnBL3ubP8k3w77AByOypLm+pkIL/DCw0qKkhDbvhCy+L3hRTGPikpdb8WHcylAeKsjgwOxhj4cqTUA=="], + + "@ai-sdk/google-vertex/@ai-sdk/anthropic": ["@ai-sdk/anthropic@2.0.9", "", { "dependencies": { "@ai-sdk/provider": "2.0.0", "@ai-sdk/provider-utils": "3.0.7" }, "peerDependencies": { "zod": "^3.25.76 || ^4" } }, "sha512-1kQgL2A3PeqfEcHHmqy4NxRc8rbgLS71bHBuvDFfDz3VAAyndkilPMCLNDSP2mJVGAej2EMWJ1sShRAxzn70jA=="], + + "@ai-sdk/google-vertex/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@3.0.7", "", { "dependencies": { "@ai-sdk/provider": "2.0.0", "@standard-schema/spec": "^1.0.0", "eventsource-parser": "^3.0.5" }, "peerDependencies": { "zod": "^3.25.76 || ^4" } }, "sha512-o3BS5/t8KnBL3ubP8k3w77AByOypLm+pkIL/DCw0qKkhDbvhCy+L3hRTGPikpdb8WHcylAeKsjgwOxhj4cqTUA=="], + "@astrojs/cloudflare/@cloudflare/workers-types": ["@cloudflare/workers-types@4.20251001.0", "", {}, "sha512-MXseDjmqL1hIdQCqwHDMG8SE60W4FdwqLsofZjo/KtLH9zFcoQfZkCYyQrdfEJINiSoNJjrup7WR6KsqiFUSsg=="], "@astrojs/markdown-remark/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.6.1", "", {}, "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A=="], @@ -3162,8 +3195,6 @@ "archiver-utils/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="], - "archiver-utils/is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], - "astro/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.6.1", "", {}, "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A=="], "astro/diff": ["diff@5.2.0", "", {}, "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A=="], @@ -3182,8 +3213,6 @@ "boxen/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], - "compress-commons/is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], - "condense-newlines/kind-of": ["kind-of@3.2.2", "", { "dependencies": { "is-buffer": "^1.1.5" } }, "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ=="], "cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], @@ -3202,6 +3231,8 @@ "estree-util-to-js/source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], + "execa/is-stream": ["is-stream@3.0.0", "", {}, "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA=="], + "express/cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], "express/send": ["send@1.2.0", "", { "dependencies": { "debug": "^4.3.5", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", "http-errors": "^2.0.0", "mime-types": "^3.0.1", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.1" } }, "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw=="], @@ -3212,6 +3243,8 @@ "fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], + "gaxios/uuid": ["uuid@9.0.1", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="], + "giget/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], "giget/tar": ["tar@6.2.1", "", { "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" } }, "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A=="], diff --git a/packages/opencode/package.json b/packages/opencode/package.json index a8041a000..47a52b24b 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -18,6 +18,7 @@ }, "devDependencies": { "@ai-sdk/amazon-bedrock": "2.2.10", + "@ai-sdk/google-vertex": "3.0.16", "@octokit/webhooks-types": "7.6.1", "@standard-schema/spec": "1.0.0", "@tsconfig/bun": "1.0.7", diff --git a/packages/opencode/src/cli/cmd/auth.ts b/packages/opencode/src/cli/cmd/auth.ts index 965983b93..e0980e137 100644 --- a/packages/opencode/src/cli/cmd/auth.ts +++ b/packages/opencode/src/cli/cmd/auth.ts @@ -247,6 +247,14 @@ export const AuthLoginCommand = cmd({ return } + if (provider === "google-vertex") { + prompts.log.info( + "Google Cloud Vertex AI uses Application Default Credentials. Set GOOGLE_APPLICATION_CREDENTIALS or run 'gcloud auth application-default login'. Optionally set GOOGLE_CLOUD_PROJECT and GOOGLE_CLOUD_LOCATION (or VERTEX_LOCATION)", + ) + prompts.outro("Done") + return + } + if (provider === "opencode") { prompts.log.info("Create an api key at https://opencode.ai/auth") } diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 188639830..c18bc4898 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -153,6 +153,40 @@ export namespace Provider { }, } }, + "google-vertex": async () => { + const project = process.env["GOOGLE_CLOUD_PROJECT"] ?? process.env["GCP_PROJECT"] ?? process.env["GCLOUD_PROJECT"] + const location = process.env["GOOGLE_CLOUD_LOCATION"] ?? process.env["VERTEX_LOCATION"] ?? "us-east5" + const autoload = Boolean(project) + if (!autoload) return { autoload: false } + return { + autoload: true, + options: { + project, + location, + }, + async getModel(sdk: any, modelID: string) { + const id = String(modelID).trim() + return sdk.languageModel(id) + }, + } + }, + "google-vertex-anthropic": async () => { + const project = process.env["GOOGLE_CLOUD_PROJECT"] ?? process.env["GCP_PROJECT"] ?? process.env["GCLOUD_PROJECT"] + const location = process.env["GOOGLE_CLOUD_LOCATION"] ?? process.env["VERTEX_LOCATION"] ?? "us-east5" + const autoload = Boolean(project) + if (!autoload) return { autoload: false } + return { + autoload: true, + options: { + project, + location, + }, + async getModel(sdk: any, modelID: string) { + const id = String(modelID).trim() + return sdk.languageModel(id) + }, + } + }, } const state = Instance.state(async () => { @@ -344,7 +378,16 @@ export namespace Provider { const key = Bun.hash.xxHash32(JSON.stringify({ pkg, options })) const existing = s.sdk.get(key) if (existing) return existing - const mod = await import(await BunProc.install(pkg, "latest")) + const installedPath = await BunProc.install(pkg, "latest") + // The `google-vertex-anthropic` provider points to the `@ai-sdk/google-vertex` package. + // Ref: https://github.com/sst/models.dev/blob/0a87de42ab177bebad0620a889e2eb2b4a5dd4ab/providers/google-vertex-anthropic/provider.toml + // However, the actual export is at the subpath `@ai-sdk/google-vertex/anthropic`. + // Ref: https://ai-sdk.dev/providers/ai-sdk-providers/google-vertex#google-vertex-anthropic-provider-usage + // In addition, Bun's dynamic import logic does not support subpath imports, + // so we patch the import path to load directly from `dist`. + const modPath = + provider.id === "google-vertex-anthropic" ? `${installedPath}/dist/anthropic/index.mjs` : installedPath + const mod = await import(modPath) if (options["timeout"] !== undefined) { // Only override fetch if user explicitly sets timeout options["fetch"] = async (input: any, init?: any) => { From 82509e86041a5d1a00da47c20d4e28fb07a84e99 Mon Sep 17 00:00:00 2001 From: Frank Date: Sat, 4 Oct 2025 01:12:22 -0400 Subject: [PATCH 23/23] wip: zen --- .../app/src/routes/workspace/key-section.tsx | 6 +- .../console/core/migrations/0027_hot_wong.sql | 3 + .../core/migrations/meta/0027_snapshot.json | 709 ++++++++++++++++++ .../core/migrations/meta/_journal.json | 7 + packages/console/core/src/key.ts | 54 +- packages/console/core/src/schema/key.sql.ts | 7 +- packages/console/core/src/user.ts | 30 +- packages/console/core/src/workspace.ts | 5 +- 8 files changed, 778 insertions(+), 43 deletions(-) create mode 100644 packages/console/core/migrations/0027_hot_wong.sql create mode 100644 packages/console/core/migrations/meta/0027_snapshot.json diff --git a/packages/console/app/src/routes/workspace/key-section.tsx b/packages/console/app/src/routes/workspace/key-section.tsx index a2bd380ea..d49a9c0bd 100644 --- a/packages/console/app/src/routes/workspace/key-section.tsx +++ b/packages/console/app/src/routes/workspace/key-section.tsx @@ -6,6 +6,7 @@ import { withActor } from "~/context/auth.withActor" import { createStore } from "solid-js/store" import { formatDateUTC, formatDateForTable } from "./common" import styles from "./key-section.module.css" +import { Actor } from "@opencode/console-core/actor.js" const removeKey = action(async (form: FormData) => { "use server" @@ -25,7 +26,10 @@ const createKey = action(async (form: FormData) => { return json( await withActor( () => - Key.create({ name }) + Key.create({ + userID: Actor.assert("user").properties.userID, + name, + }) .then((data) => ({ error: undefined, data })) .catch((e) => ({ error: e.message as string })), workspaceID, diff --git a/packages/console/core/migrations/0027_hot_wong.sql b/packages/console/core/migrations/0027_hot_wong.sql new file mode 100644 index 000000000..ff97d344f --- /dev/null +++ b/packages/console/core/migrations/0027_hot_wong.sql @@ -0,0 +1,3 @@ +ALTER TABLE `key` MODIFY COLUMN `user_id` varchar(30) NOT NULL;--> statement-breakpoint +ALTER TABLE `key` DROP COLUMN `actor`;--> statement-breakpoint +ALTER TABLE `key` DROP COLUMN `old_name`; \ No newline at end of file diff --git a/packages/console/core/migrations/meta/0027_snapshot.json b/packages/console/core/migrations/meta/0027_snapshot.json new file mode 100644 index 000000000..9b6910223 --- /dev/null +++ b/packages/console/core/migrations/meta/0027_snapshot.json @@ -0,0 +1,709 @@ +{ + "version": "5", + "dialect": "mysql", + "id": "05e873f6-1556-4bcb-8e19-14971e37610a", + "prevId": "9e1313c7-ca78-4d2c-b13b-625d9d6fcaa3", + "tables": { + "account": { + "name": "account", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "email": { + "name": "email", + "columns": [ + "email" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "billing": { + "name": "billing", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "customer_id": { + "name": "customer_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "payment_method_id": { + "name": "payment_method_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "payment_method_last4": { + "name": "payment_method_last4", + "type": "varchar(4)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "balance": { + "name": "balance", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "monthly_limit": { + "name": "monthly_limit", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "monthly_usage": { + "name": "monthly_usage", + "type": "bigint", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_monthly_usage_updated": { + "name": "time_monthly_usage_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "reload": { + "name": "reload", + "type": "boolean", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "reload_error": { + "name": "reload_error", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_reload_error": { + "name": "time_reload_error", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_reload_locked_till": { + "name": "time_reload_locked_till", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "global_customer_id": { + "name": "global_customer_id", + "columns": [ + "customer_id" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "billing_workspace_id_id_pk": { + "name": "billing_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "payment": { + "name": "payment", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "customer_id": { + "name": "customer_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "invoice_id": { + "name": "invoice_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "payment_id": { + "name": "payment_id", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "amount": { + "name": "amount", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_refunded": { + "name": "time_refunded", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "payment_workspace_id_id_pk": { + "name": "payment_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "usage": { + "name": "usage", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "model": { + "name": "model", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider": { + "name": "provider", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "input_tokens": { + "name": "input_tokens", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "output_tokens": { + "name": "output_tokens", + "type": "int", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "reasoning_tokens": { + "name": "reasoning_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cache_read_tokens": { + "name": "cache_read_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cache_write_5m_tokens": { + "name": "cache_write_5m_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cache_write_1h_tokens": { + "name": "cache_write_1h_tokens", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "cost": { + "name": "cost", + "type": "bigint", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": { + "usage_workspace_id_id_pk": { + "name": "usage_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "key": { + "name": "key", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "key": { + "name": "key", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_used": { + "name": "time_used", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "global_key": { + "name": "global_key", + "columns": [ + "key" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "key_workspace_id_id_pk": { + "name": "key_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "user": { + "name": "user", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "workspace_id": { + "name": "workspace_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "account_id": { + "name": "account_id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "time_seen": { + "name": "time_seen", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "color": { + "name": "color", + "type": "int", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "role": { + "name": "role", + "type": "enum('admin','member')", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "user_account_id": { + "name": "user_account_id", + "columns": [ + "workspace_id", + "account_id" + ], + "isUnique": true + }, + "user_email": { + "name": "user_email", + "columns": [ + "workspace_id", + "email" + ], + "isUnique": true + }, + "global_account_id": { + "name": "global_account_id", + "columns": [ + "account_id" + ], + "isUnique": false + }, + "global_email": { + "name": "global_email", + "columns": [ + "email" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "user_workspace_id_id_pk": { + "name": "user_workspace_id_id_pk", + "columns": [ + "workspace_id", + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + }, + "workspace": { + "name": "workspace", + "columns": { + "id": { + "name": "id", + "type": "varchar(30)", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "slug": { + "name": "slug", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "varchar(255)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "time_created": { + "name": "time_created", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(now())" + }, + "time_updated": { + "name": "time_updated", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)" + }, + "time_deleted": { + "name": "time_deleted", + "type": "timestamp(3)", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "slug": { + "name": "slug", + "columns": [ + "slug" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": { + "workspace_id": { + "name": "workspace_id", + "columns": [ + "id" + ] + } + }, + "uniqueConstraints": {}, + "checkConstraint": {} + } + }, + "views": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "tables": {}, + "indexes": {} + } +} \ No newline at end of file diff --git a/packages/console/core/migrations/meta/_journal.json b/packages/console/core/migrations/meta/_journal.json index 1adcc06ea..58370d4e4 100644 --- a/packages/console/core/migrations/meta/_journal.json +++ b/packages/console/core/migrations/meta/_journal.json @@ -190,6 +190,13 @@ "when": 1759546980316, "tag": "0026_numerous_prodigy", "breakpoints": true + }, + { + "idx": 27, + "version": "5", + "when": 1759553466608, + "tag": "0027_hot_wong", + "breakpoints": true } ] } \ No newline at end of file diff --git a/packages/console/core/src/key.ts b/packages/console/core/src/key.ts index fa9b56f28..938c1ae8f 100644 --- a/packages/console/core/src/key.ts +++ b/packages/console/core/src/key.ts @@ -18,34 +18,38 @@ export namespace Key { return keys } - export const create = fn(z.object({ name: z.string().min(1).max(255) }), async (input) => { - const { name } = input + export const create = fn( + z.object({ + userID: z.string(), + name: z.string().min(1).max(255), + }), + async (input) => { + const { name } = input - // Generate secret key: sk- + 64 random characters (upper, lower, numbers) - const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" - let secretKey = "sk-" - const array = new Uint32Array(64) - crypto.getRandomValues(array) - for (let i = 0, l = array.length; i < l; i++) { - secretKey += chars[array[i] % chars.length] - } - const keyID = Identifier.create("key") - const user = Actor.assert("user") + // Generate secret key: sk- + 64 random characters (upper, lower, numbers) + const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" + let secretKey = "sk-" + const array = new Uint32Array(64) + crypto.getRandomValues(array) + for (let i = 0, l = array.length; i < l; i++) { + secretKey += chars[array[i] % chars.length] + } + const keyID = Identifier.create("key") - await Database.use((tx) => - tx.insert(KeyTable).values({ - id: keyID, - workspaceID: Actor.workspace(), - actor: user, - userID: user.properties.userID, - name, - key: secretKey, - timeUsed: null, - }), - ) + await Database.use((tx) => + tx.insert(KeyTable).values({ + id: keyID, + workspaceID: Actor.workspace(), + userID: input.userID, + name, + key: secretKey, + timeUsed: null, + }), + ) - return keyID - }) + return keyID + }, + ) export const remove = fn(z.object({ id: z.string() }), async (input) => { const workspace = Actor.workspace() diff --git a/packages/console/core/src/schema/key.sql.ts b/packages/console/core/src/schema/key.sql.ts index 892c74686..107bbd202 100644 --- a/packages/console/core/src/schema/key.sql.ts +++ b/packages/console/core/src/schema/key.sql.ts @@ -1,18 +1,15 @@ -import { mysqlTable, varchar, uniqueIndex, json } from "drizzle-orm/mysql-core" +import { mysqlTable, varchar, uniqueIndex } from "drizzle-orm/mysql-core" import { timestamps, ulid, utc, workspaceColumns } from "../drizzle/types" import { workspaceIndexes } from "./workspace.sql" -import { Actor } from "../actor" export const KeyTable = mysqlTable( "key", { ...workspaceColumns, ...timestamps, - actor: json("actor").$type(), name: varchar("name", { length: 255 }).notNull(), - oldName: varchar("old_name", { length: 255 }), key: varchar("key", { length: 255 }).notNull(), - userID: ulid("user_id"), + userID: ulid("user_id").notNull(), timeUsed: utc("time_used"), }, (table) => [...workspaceIndexes(table), uniqueIndex("global_key").on(table.key)], diff --git a/packages/console/core/src/user.ts b/packages/console/core/src/user.ts index f6a78ad48..c9567a2cb 100644 --- a/packages/console/core/src/user.ts +++ b/packages/console/core/src/user.ts @@ -100,12 +100,25 @@ export namespace User { ) // create api key - //if (account) { - // const existing = await Database.use(tx => { - // const key = tx.select().from(KeyTable).where(and(eq(KeyTable.workspaceID, workspaceID), eq(KeyTable, account.id))).then((rows) => rows[0]) - // return key - // }) - //} + if (account) { + await Database.use(async (tx) => { + const user = await tx + .select() + .from(UserTable) + .where(and(eq(UserTable.workspaceID, workspaceID), eq(UserTable.accountID, account.id))) + .then((rows) => rows[0]) + + const key = await tx + .select() + .from(KeyTable) + .where(and(eq(KeyTable.workspaceID, workspaceID), eq(KeyTable.userID, user.id))) + .then((rows) => rows[0]) + + if (key) return + + await Key.create({ userID: user.id, name: "Default API Key" }) + }) + } // send email, ignore errors try { @@ -151,12 +164,11 @@ export namespace User { await Promise.all( invitations.map((invite) => Actor.provide( - "user", + "system", { workspaceID: invite.workspaceID, - userID: invite.id, }, - () => Key.create({ name: "Default API Key" }), + () => Key.create({ userID: invite.id, name: "Default API Key" }), ), ), ) diff --git a/packages/console/core/src/workspace.ts b/packages/console/core/src/workspace.ts index 70cd21dba..87a08adb3 100644 --- a/packages/console/core/src/workspace.ts +++ b/packages/console/core/src/workspace.ts @@ -31,12 +31,11 @@ export namespace Workspace { }) }) await Actor.provide( - "user", + "system", { workspaceID, - userID, }, - () => Key.create({ name: "Default API Key" }), + () => Key.create({ userID, name: "Default API Key" }), ) return workspaceID })