diff options
| author | Brendan Allan <[email protected]> | 2026-04-21 19:12:32 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-04-21 19:12:32 +0800 |
| commit | 8cc2c81d57f7c3ca8942d0e2461bc676bd25e8cc (patch) | |
| tree | 9ebf9fe7bfa1188fde222e390a8e265b2faebeca /packages | |
| parent | 8d2d12d9c643662e7692722d21528b8612cc8139 (diff) | |
| download | opencode-8cc2c81d57f7c3ca8942d0e2461bc676bd25e8cc.tar.gz opencode-8cc2c81d57f7c3ca8942d0e2461bc676bd25e8cc.zip | |
fix(app): prevent prompt input animations from rerunning on every render (#23676)
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/app/src/components/prompt-input.tsx | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/packages/app/src/components/prompt-input.tsx b/packages/app/src/components/prompt-input.tsx index 1131baa49..06c91c292 100644 --- a/packages/app/src/components/prompt-input.tsx +++ b/packages/app/src/components/prompt-input.tsx @@ -54,7 +54,7 @@ import { PromptImageAttachments } from "./prompt-input/image-attachments" import { PromptDragOverlay } from "./prompt-input/drag-overlay" import { promptPlaceholder } from "./prompt-input/placeholder" import { ImagePreview } from "@opencode-ai/ui/image-preview" -import { useQueries, useQuery } from "@tanstack/solid-query" +import { useQueries } from "@tanstack/solid-query" import { loadAgentsQuery, loadProvidersQuery } from "@/context/global-sync/bootstrap" interface PromptInputProps { @@ -1257,7 +1257,9 @@ export const PromptInput: Component<PromptInputProps> = (props) => { })) const agentsLoading = () => agentsQuery.isLoading + const agentsShouldFadeIn = createMemo((prev) => prev ?? agentsLoading()) const providersLoading = () => agentsLoading() || providersQuery.isLoading || globalProvidersQuery.isLoading + const providersShouldFadeIn = createMemo((prev) => prev ?? providersLoading()) const [promptReady] = createResource( () => prompt.ready().promise, @@ -1460,7 +1462,10 @@ export const PromptInput: Component<PromptInputProps> = (props) => { </div> <div class="flex items-center gap-1.5 min-w-0 flex-1 h-7"> <Show when={!agentsLoading()}> - <div data-component="prompt-agent-control" style={{ animation: "fade-in 0.3s" }}> + <div + data-component="prompt-agent-control" + style={agentsShouldFadeIn() ? { animation: "fade-in 0.3s" } : undefined} + > <TooltipKeybind placement="top" gutter={4} @@ -1486,7 +1491,10 @@ export const PromptInput: Component<PromptInputProps> = (props) => { </Show> <Show when={!providersLoading()}> <Show when={store.mode !== "shell"}> - <div data-component="prompt-model-control" style={{ animation: "fade-in 0.3s" }}> + <div + data-component="prompt-model-control" + style={providersShouldFadeIn() ? { animation: "fade-in 0.3s" } : undefined} + > <Show when={providers.paid().length > 0} fallback={ @@ -1557,7 +1565,10 @@ export const PromptInput: Component<PromptInputProps> = (props) => { </TooltipKeybind> </Show> </div> - <div data-component="prompt-variant-control" style={{ animation: "fade-in 0.3s" }}> + <div + data-component="prompt-variant-control" + style={providersShouldFadeIn() ? { animation: "fade-in 0.3s" } : undefined} + > <TooltipKeybind placement="top" gutter={4} |
