From 66abd53e516b5788f230d6a1b14b983ed28ce02d Mon Sep 17 00:00:00 2001 From: Hare Date: Wed, 15 Jul 2026 22:43:56 +0900 Subject: [PATCH] feat: refine workspace console ui --- web/workspace/deno.json | 2 +- .../alerts}/WorkspaceAlerts.svelte | 0 .../alerts}/store.ts | 0 .../api}/http.test.ts | 4 +- .../{workspace-api => workspace/api}/http.ts | 0 .../console}/ConsoleLineItem.svelte | 12 +- .../console}/ConsoleTimeline.svelte | 31 +- .../console}/RichMarkdown.svelte | 2 +- .../console}/chat-submit.test.ts | 0 .../console}/chat-submit.ts | 0 .../console}/composer-command.test.ts | 0 .../console}/composer-command.ts | 0 .../console}/composer-completion.test.ts | 0 .../console}/composer-completion.ts | 0 .../console}/markdown.test.ts | 0 .../console}/markdown.ts | 0 .../console}/model.test.ts | 0 .../console}/model.ts | 2 +- .../console}/textarea-fit.ts | 0 .../console}/worker-console.ui.test.ts | 70 +++- .../pages}/RepositoryTicketKanban.svelte | 2 +- .../settings}/DecodalSourceEditor.svelte | 0 .../settings}/DiagnosticsList.svelte | 0 .../settings}/model.test.ts | 0 .../settings}/model.ts | 0 .../settings}/profile-api.ts | 2 +- .../settings}/profile-routes.ts | 0 .../settings}/profile-types.ts | 0 .../sidebar}/ObjectivesNavSection.svelte | 2 +- .../sidebar}/RepositoriesNavSection.svelte | 0 .../sidebar}/RuntimesNavSection.svelte | 0 .../sidebar}/WorkersNavSection.svelte | 4 +- .../sidebar}/WorkspaceSidebar.svelte | 2 +- .../sidebar}/repository-nav.test.ts | 0 .../sidebar}/repository-nav.ts | 2 +- .../sidebar}/types.ts | 0 .../sidebar}/worker-launch.test.ts | 0 .../sidebar}/worker-launch.ts | 0 .../sidebar}/workers.test.ts | 0 .../sidebar}/workers.ts | 0 web/workspace/src/routes/+layout.svelte | 4 +- web/workspace/src/routes/+layout.ts | 4 +- .../src/routes/w/[workspaceId]/+page.ts | 4 +- .../w/[workspaceId]/objectives/+page.svelte | 2 +- .../w/[workspaceId]/objectives/+page.ts | 4 +- .../objectives/[objectiveId]/+page.svelte | 2 +- .../objectives/[objectiveId]/+page.ts | 4 +- .../repositories/[repositoryId]/+page.svelte | 4 +- .../repositories/[repositoryId]/+page.ts | 4 +- .../w/[workspaceId]/runtimes/+page.svelte | 2 +- .../routes/w/[workspaceId]/runtimes/+page.ts | 4 +- .../[runtimeId]/workdirs/+page.svelte | 6 +- .../runtimes/[runtimeId]/workdirs/+page.ts | 4 +- .../workers/[workerId]/console/+page.svelte | 367 ++++++++++++------ .../w/[workspaceId]/settings/+layout.svelte | 4 +- .../w/[workspaceId]/settings/+page.svelte | 4 +- .../settings/profiles/+page.svelte | 12 +- .../trees/[sourceTreeId]/+page.svelte | 12 +- .../settings/runtime-connections/+page.svelte | 6 +- .../settings/workspace/+page.svelte | 8 +- .../w/[workspaceId]/workers/+page.svelte | 10 +- .../routes/w/[workspaceId]/workers/+page.ts | 4 +- .../w/[workspaceId]/workers/new/+page.svelte | 6 +- 63 files changed, 406 insertions(+), 212 deletions(-) rename web/workspace/src/lib/{workspace-alerts => workspace/alerts}/WorkspaceAlerts.svelte (100%) rename web/workspace/src/lib/{workspace-alerts => workspace/alerts}/store.ts (100%) rename web/workspace/src/lib/{workspace-api => workspace/api}/http.test.ts (91%) rename web/workspace/src/lib/{workspace-api => workspace/api}/http.ts (100%) rename web/workspace/src/lib/{workspace-console => workspace/console}/ConsoleLineItem.svelte (90%) rename web/workspace/src/lib/{workspace-console => workspace/console}/ConsoleTimeline.svelte (86%) rename web/workspace/src/lib/{workspace-console => workspace/console}/RichMarkdown.svelte (96%) rename web/workspace/src/lib/{workspace-console => workspace/console}/chat-submit.test.ts (100%) rename web/workspace/src/lib/{workspace-console => workspace/console}/chat-submit.ts (100%) rename web/workspace/src/lib/{workspace-console => workspace/console}/composer-command.test.ts (100%) rename web/workspace/src/lib/{workspace-console => workspace/console}/composer-command.ts (100%) rename web/workspace/src/lib/{workspace-console => workspace/console}/composer-completion.test.ts (100%) rename web/workspace/src/lib/{workspace-console => workspace/console}/composer-completion.ts (100%) rename web/workspace/src/lib/{workspace-console => workspace/console}/markdown.test.ts (100%) rename web/workspace/src/lib/{workspace-console => workspace/console}/markdown.ts (100%) rename web/workspace/src/lib/{workspace-console => workspace/console}/model.test.ts (100%) rename web/workspace/src/lib/{workspace-console => workspace/console}/model.ts (99%) rename web/workspace/src/lib/{workspace-console => workspace/console}/textarea-fit.ts (100%) rename web/workspace/src/lib/{workspace-console => workspace/console}/worker-console.ui.test.ts (73%) rename web/workspace/src/lib/{workspace-pages => workspace/pages}/RepositoryTicketKanban.svelte (99%) rename web/workspace/src/lib/{workspace-settings => workspace/settings}/DecodalSourceEditor.svelte (100%) rename web/workspace/src/lib/{workspace-settings => workspace/settings}/DiagnosticsList.svelte (100%) rename web/workspace/src/lib/{workspace-settings => workspace/settings}/model.test.ts (100%) rename web/workspace/src/lib/{workspace-settings => workspace/settings}/model.ts (100%) rename web/workspace/src/lib/{workspace-settings => workspace/settings}/profile-api.ts (99%) rename web/workspace/src/lib/{workspace-settings => workspace/settings}/profile-routes.ts (100%) rename web/workspace/src/lib/{workspace-settings => workspace/settings}/profile-types.ts (100%) rename web/workspace/src/lib/{workspace-sidebar => workspace/sidebar}/ObjectivesNavSection.svelte (91%) rename web/workspace/src/lib/{workspace-sidebar => workspace/sidebar}/RepositoriesNavSection.svelte (100%) rename web/workspace/src/lib/{workspace-sidebar => workspace/sidebar}/RuntimesNavSection.svelte (100%) rename web/workspace/src/lib/{workspace-sidebar => workspace/sidebar}/WorkersNavSection.svelte (96%) rename web/workspace/src/lib/{workspace-sidebar => workspace/sidebar}/WorkspaceSidebar.svelte (98%) rename web/workspace/src/lib/{workspace-sidebar => workspace/sidebar}/repository-nav.test.ts (100%) rename web/workspace/src/lib/{workspace-sidebar => workspace/sidebar}/repository-nav.ts (94%) rename web/workspace/src/lib/{workspace-sidebar => workspace/sidebar}/types.ts (100%) rename web/workspace/src/lib/{workspace-sidebar => workspace/sidebar}/worker-launch.test.ts (100%) rename web/workspace/src/lib/{workspace-sidebar => workspace/sidebar}/worker-launch.ts (100%) rename web/workspace/src/lib/{workspace-sidebar => workspace/sidebar}/workers.test.ts (100%) rename web/workspace/src/lib/{workspace-sidebar => workspace/sidebar}/workers.ts (100%) diff --git a/web/workspace/deno.json b/web/workspace/deno.json index 4142ec5f..6a62f1d7 100644 --- a/web/workspace/deno.json +++ b/web/workspace/deno.json @@ -6,7 +6,7 @@ "dev": "deno run -A npm:vite@7.2.7 dev", "dev:backend": "cd ../.. && cargo run -p yoi-workspace-server -- serve --workspace . --db .yoi/workspace.db --listen 127.0.0.1:8787", "check": "deno run -A npm:@sveltejs/kit@2.49.4 sync && deno run -A npm:svelte-check@4.3.4 --tsconfig ./tsconfig.json", - "test": "deno test --allow-read=src --allow-env=VSCODE_TEXTMATE_DEBUG src/lib/workspace-api/http.test.ts src/lib/workspace-console/chat-submit.test.ts src/lib/workspace-console/composer-command.test.ts src/lib/workspace-console/composer-completion.test.ts src/lib/workspace-console/markdown.test.ts src/lib/workspace-console/model.test.ts src/lib/workspace-console/worker-console.ui.test.ts src/lib/workspace-settings/model.test.ts src/lib/workspace-sidebar/workers.test.ts src/lib/workspace-sidebar/worker-launch.test.ts src/lib/workspace-sidebar/repository-nav.test.ts", + "test": "deno test --allow-read=src --allow-env=VSCODE_TEXTMATE_DEBUG src/lib/workspace/api/http.test.ts src/lib/workspace/console/chat-submit.test.ts src/lib/workspace/console/composer-command.test.ts src/lib/workspace/console/composer-completion.test.ts src/lib/workspace/console/markdown.test.ts src/lib/workspace/console/model.test.ts src/lib/workspace/console/worker-console.ui.test.ts src/lib/workspace/settings/model.test.ts src/lib/workspace/sidebar/workers.test.ts src/lib/workspace/sidebar/worker-launch.test.ts src/lib/workspace/sidebar/repository-nav.test.ts", "build": "deno run -A npm:vite@7.2.7 build", "preview": "deno run -A npm:vite@7.2.7 preview" }, diff --git a/web/workspace/src/lib/workspace-alerts/WorkspaceAlerts.svelte b/web/workspace/src/lib/workspace/alerts/WorkspaceAlerts.svelte similarity index 100% rename from web/workspace/src/lib/workspace-alerts/WorkspaceAlerts.svelte rename to web/workspace/src/lib/workspace/alerts/WorkspaceAlerts.svelte diff --git a/web/workspace/src/lib/workspace-alerts/store.ts b/web/workspace/src/lib/workspace/alerts/store.ts similarity index 100% rename from web/workspace/src/lib/workspace-alerts/store.ts rename to web/workspace/src/lib/workspace/alerts/store.ts diff --git a/web/workspace/src/lib/workspace-api/http.test.ts b/web/workspace/src/lib/workspace/api/http.test.ts similarity index 91% rename from web/workspace/src/lib/workspace-api/http.test.ts rename to web/workspace/src/lib/workspace/api/http.test.ts index d18f7d43..77a5a2c5 100644 --- a/web/workspace/src/lib/workspace-api/http.test.ts +++ b/web/workspace/src/lib/workspace/api/http.test.ts @@ -29,7 +29,7 @@ Deno.test("workspace route helpers scope browser routes and API by immutable wor }); Deno.test("unscoped layout bootstraps then redirects instead of loading unscoped workspace data", async () => { - const layout = await Deno.readTextFile(new URL("../../routes/+layout.ts", import.meta.url)); + const layout = await Deno.readTextFile(new URL("./../../../routes/+layout.ts", import.meta.url)); assert( layout.includes('loadJson(fetch, "/api/workspace")'), "unscoped layout may use only the workspace-id bootstrap endpoint", @@ -44,7 +44,7 @@ Deno.test("unscoped layout bootstraps then redirects instead of loading unscoped ); const unscopedSettings = await Deno.readTextFile( - new URL("../../routes/settings/+page.svelte", import.meta.url), + new URL("./../../../routes/settings/+page.svelte", import.meta.url), ); assert( unscopedSettings.includes("Redirecting to scoped settings") && diff --git a/web/workspace/src/lib/workspace-api/http.ts b/web/workspace/src/lib/workspace/api/http.ts similarity index 100% rename from web/workspace/src/lib/workspace-api/http.ts rename to web/workspace/src/lib/workspace/api/http.ts diff --git a/web/workspace/src/lib/workspace-console/ConsoleLineItem.svelte b/web/workspace/src/lib/workspace/console/ConsoleLineItem.svelte similarity index 90% rename from web/workspace/src/lib/workspace-console/ConsoleLineItem.svelte rename to web/workspace/src/lib/workspace/console/ConsoleLineItem.svelte index c44987d0..b4190090 100644 --- a/web/workspace/src/lib/workspace-console/ConsoleLineItem.svelte +++ b/web/workspace/src/lib/workspace/console/ConsoleLineItem.svelte @@ -1,6 +1,6 @@