From 9917fb1199304d3872e66aca6938e53de8be362d Mon Sep 17 00:00:00 2001 From: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com> Date: Sat, 31 Oct 2026 13:03:17 -0700 Subject: [PATCH] fix(web): keep the model picker in place when its label changes --- apps/web/src/components/chat/ComposerControlsBar.tsx | 2 ++ apps/web/src/components/chat/ProviderModelPicker.tsx | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/web/src/components/chat/ComposerControlsBar.tsx b/apps/web/src/components/chat/ComposerControlsBar.tsx index 8523c25927fa..0002beeaf9fe 100644 --- a/apps/web/src/components/chat/ComposerControlsBar.tsx +++ b/apps/web/src/components/chat/ComposerControlsBar.tsx @@ -193,6 +193,8 @@ export function ComposerControlsBar(props: { environmentId={environmentId} compact={false} isComposerOwned + // The trigger grows away from this edge when its model or effort label changes. + popupAlign={composerControlsCollapsed ? "start" : "end"} disabled={providerCatalogPending || isSendBusy} multipleModelsEnabled={multipleModelsEnabled} multipleModelSelections={multipleModelSelections} diff --git a/apps/web/src/components/chat/ProviderModelPicker.tsx b/apps/web/src/components/chat/ProviderModelPicker.tsx index cfc74a515e3a..1680e8d426b0 100644 --- a/apps/web/src/components/chat/ProviderModelPicker.tsx +++ b/apps/web/src/components/chat/ProviderModelPicker.tsx @@ -90,6 +90,7 @@ export const ProviderModelPicker = memo(function ProviderModelPicker(props: { disabled?: boolean; terminalOpen?: boolean; open?: boolean; + popupAlign?: "start" | "end"; triggerClassName?: string; triggerLabel?: string; triggerAriaLabel?: string; @@ -392,7 +393,8 @@ export const ProviderModelPicker = memo(function ProviderModelPicker(props: { }; }} initialFocus={searchInputRef} - align="start" + align={props.popupAlign ?? "start"} + collisionAvoidance={docked ? { align: "shift", fallbackAxisSide: "none" } : undefined} className="before:hidden" padding="none" touchBackdrop