From 0da682bd7cb41a4f456a2a0e9b37b127ca7a50d3 Mon Sep 17 00:00:00 2001 From: Guilhem Lemouel Date: Wed, 29 Apr 2026 10:53:00 +0200 Subject: [PATCH] feat: redesign AI chat input as rounded card with send button - Reshape the input region in AIChatDisplay into a single rounded-2xl card with a subtle border and focus shadow, hosting the textarea, mode/model selectors, and a circular send/stop button (Codex/Claude-Desktop style). - Constrain the input card to max-w-xl centered so it stays readable on wide panes. - Expose triggerSend() and hasContent() from AIChatInput so the parent can drive the send button and reflect empty-input state. - Add a /design-sandbox route under (logged) to prototype layout tweaks (sidebar + AI chat + flow editor side-by-side with a fake flow and a mocked conversation), plus a .claude/launch.json describing the local dev servers. Co-Authored-By: Claude Opus 4.7 (1M context) --- .claude/launch.json | 29 +++ .../copilot/chat/AIChatDisplay.svelte | 170 ++++++++------- .../copilot/chat/AIChatInput.svelte | 83 ++++---- .../(logged)/design-sandbox/+page.svelte | 194 ++++++++++++++++++ 4 files changed, 361 insertions(+), 115 deletions(-) create mode 100644 .claude/launch.json create mode 100644 frontend/src/routes/(root)/(logged)/design-sandbox/+page.svelte diff --git a/.claude/launch.json b/.claude/launch.json new file mode 100644 index 0000000000..f39dfd1f15 --- /dev/null +++ b/.claude/launch.json @@ -0,0 +1,29 @@ +{ + "version": "0.0.1", + "configurations": [ + { + "name": "frontend", + "runtimeExecutable": "npm", + "runtimeArgs": ["run", "dev", "--", "--port", "3100"], + "port": 3100, + "cwd": "frontend", + "env": { + "REMOTE": "https://app.windmill.dev" + } + }, + { + "name": "backend", + "runtimeExecutable": "cargo", + "runtimeArgs": ["run"], + "port": 8000, + "cwd": "backend" + }, + { + "name": "multiplayer", + "runtimeExecutable": "npm", + "runtimeArgs": ["run", "dev"], + "port": 3002, + "cwd": "multiplayer" + } + ] +} diff --git a/frontend/src/lib/components/copilot/chat/AIChatDisplay.svelte b/frontend/src/lib/components/copilot/chat/AIChatDisplay.svelte index 140f20f140..c7999fc489 100644 --- a/frontend/src/lib/components/copilot/chat/AIChatDisplay.svelte +++ b/frontend/src/lib/components/copilot/chat/AIChatDisplay.svelte @@ -2,6 +2,7 @@ import AIChatMessage from './AIChatMessage.svelte' import { type Snippet } from 'svelte' import { + ArrowUp, CheckIcon, Code2, FileCode, @@ -122,58 +123,54 @@
{#snippet trigger()} - - - {/each} -
- {/if} - - - {/snippet} + {chat.title} + + + {/each} + + {/if} + + {/snippet} {/if} {#if (aiChatManager.mode === AIMode.NAVIGATOR || aiChatManager.mode === AIMode.ASK) && suggestions.length > 0 && messages.filter((m) => m.role === 'user').length === 0 && !disabled} -
+
{#each suggestions as suggestion}