From 9202a74071ba424ad6cfc1cfded518ee7db002dc Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 22 Oct 2026 01:46:37 +0200 Subject: [PATCH] fix: hold home's ai composer space with a matching placeholder (#11936) * fix: hold home's ai composer space with a matching placeholder while it loads Co-Authored-By: Claude Opus 5.5 * fix: skip remembering the composer height when a draft holds it open Co-Authored-By: Claude Opus 5.5 --------- Co-authored-by: Claude Opus 5.5 --- .../src/lib/components/home/HomeAIChat.svelte | 16 ++- .../home/HomeComposerSkeleton.svelte | 102 ++++++++++++++++++ .../sessions/HomeSessionStarter.svelte | 64 +++++++---- 3 files changed, 161 insertions(+), 21 deletions(-) create mode 100644 frontend/src/lib/components/home/HomeComposerSkeleton.svelte diff --git a/frontend/src/lib/components/home/HomeAIChat.svelte b/frontend/src/lib/components/home/HomeAIChat.svelte index e8bad505d9..0aad0adb1a 100644 --- a/frontend/src/lib/components/home/HomeAIChat.svelte +++ b/frontend/src/lib/components/home/HomeAIChat.svelte @@ -24,6 +24,10 @@ import { useReducedMotion } from '$lib/svelte5Utils.svelte' import { BROWSER } from 'esm-env' import HomeConnectDrawer from './HomeConnectDrawer.svelte' + import HomeComposerSkeleton, { + composerHeight, + rememberComposerHeight + } from './HomeComposerSkeleton.svelte' import { prefersSessionHandoff } from '../copilot/chat/global/gate' import PageHeaderContent from '$lib/components/PageHeaderContent.svelte' import DropdownV2 from '$lib/components/DropdownV2.svelte' @@ -132,13 +136,23 @@ fork shares its parent's, and remounting for it only flashes the block. --> {#if HomeSessionStarter && sessionState.hydrated && (rulesReady || shownForRoot === $currentWorkspaceRootId)} {#key $currentWorkspaceRootId} - (shownForRoot = $currentWorkspaceRootId)} /> + (shownForRoot = $currentWorkspaceRootId)} + {placeholder} + onSettled={(height) => rememberComposerHeight($workspaceStore ?? undefined, height)} + /> {/key} + {:else} + {@render placeholder()} {/if} {/if} +{#snippet placeholder()} + +{/snippet} + + {#if open} +
+
+ + + + + {STARTER_PLACEHOLDER} + +
+
+
+ {@render bar('w-24')} + {@render bar('w-20')} +
+ {@render bar('w-12')} + {@render sendButton()} +
+
+ {#if suggestions} +
+ {#each ['w-20', 'w-24', 'w-24'] as width, i (i)} + + {@render bar(width)} + + {/each} +
+ {/if} + {:else} +
+ + + + + {STARTER_PLACEHOLDER} + +
+ {@render bar('w-12')} + {@render sendButton()} +
+
+ {/if} + diff --git a/frontend/src/lib/components/sessions/HomeSessionStarter.svelte b/frontend/src/lib/components/sessions/HomeSessionStarter.svelte index 92dcc4dc72..9ab68c3742 100644 --- a/frontend/src/lib/components/sessions/HomeSessionStarter.svelte +++ b/frontend/src/lib/components/sessions/HomeSessionStarter.svelte @@ -1,5 +1,5 @@