authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-09-09 16:53:53-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-09-09 16:53:53-07:00
logb7b3ef1e6fcb5c22a9790d2578fe8af7ce396835
tree21f16a9d3feb76ea1a549bb5d495676682e58c07
parent8d8189e67dc091ffb91df451c9a957bbd68a5364
signature Signed by PGP key B5690EEEBB952194

fix(ui): use available space for composer model names (#11002)


5 files changed, 23 insertions(+), 24 deletions(-)

apps/mobile/src/components/ComposerToolbar.tsx+1-1
......@@ -32,7 +32,7 @@ export function ComposerInlineControl(props: {
3232 readonly icon?: ComponentProps<typeof SymbolView>["name"];
3333 readonly iconNode?: ReactNode;
3434 readonly label: string;
35 readonly maxWidth?: number;
35 readonly maxWidth?: ViewStyle["maxWidth"];
3636 readonly onPress?: () => void;
3737 readonly selected?: boolean;
3838 readonly static?: boolean;
apps/mobile/src/features/threads/NewTaskDraftScreen.tsx+18-17
......@@ -30,7 +30,6 @@ import {
3030 ComposerActionButton,
3131 ComposerInlineControl,
3232 ComposerToolbarRow,
33 ComposerToolbarScroller,
3433} from "../../components/ComposerToolbar";
3534import { AndroidScreenHeader } from "../../components/AndroidScreenHeader";
3635import { ComposerAttachmentButton } from "../../components/ComposerAttachmentButton";
......@@ -1345,21 +1344,23 @@ export function NewTaskDraftScreen(props: {
13451344 onPickMedia={handlePickMedia}
13461345 onPickFiles={handlePickFiles}
13471346 />
1348 <ComposerToolbarScroller align="end" contentPaddingRight={0} fadeSurface="sheet">
1349 <ComposerInlineControl
1350 accessibilityLabel="Model and reasoning settings"
1351 disabled={isComposerInteractionLocked}
1352 emphasized
1353 iconNode={
1354 <ProviderIcon
1355 provider={flow.selectedModelOption?.providerDriver}
1356 size={16}
1357 />
1358 }
1359 label={flow.selectedModelOption?.label ?? "Choose model"}
1360 maxWidth={152}
1361 onPress={settingsSheetPresentation.open}
1362 />
1347 <View className="min-w-0 flex-1 flex-row items-center justify-end gap-2">
1348 <View className="min-w-0 shrink">
1349 <ComposerInlineControl
1350 accessibilityLabel="Model and reasoning settings"
1351 disabled={isComposerInteractionLocked}
1352 emphasized
1353 iconNode={
1354 <ProviderIcon
1355 provider={flow.selectedModelOption?.providerDriver}
1356 size={16}
1357 />
1358 }
1359 label={flow.selectedModelOption?.label ?? "Choose model"}
1360 maxWidth="100%"
1361 onPress={settingsSheetPresentation.open}
1362 />
1363 </View>
13631364 {flow.planModeEnabled ? (
13641365 <ComposerInlineControl
13651366 accessibilityHint={`Switches to ${flow.interactionMode === "plan" ? "Build" : "Plan"} mode`}
......@@ -1380,7 +1381,7 @@ export function NewTaskDraftScreen(props: {
13801381 showChevron={false}
13811382 />
13821383 ) : null}
1383 </ComposerToolbarScroller>
1384 </View>
13841385 </>
13851386 )}
13861387 <ComposerDictationPrimaryAction
apps/mobile/src/features/threads/ThreadComposer.tsx+2-2
......@@ -780,7 +780,7 @@ export const ThreadComposer = memo(function ThreadComposer(props: ThreadComposer
780780 onPickMedia={props.onPickDraftMedia}
781781 onPickFiles={props.onPickDraftFiles}
782782 />
783 <View className="min-w-0 shrink" style={{ maxWidth: 152 }}>
783 <View className="min-w-0 shrink">
784784 <ComposerInlineControl
785785 accessibilityLabel="Model and reasoning settings"
786786 emphasized
......@@ -788,7 +788,7 @@ export const ThreadComposer = memo(function ThreadComposer(props: ThreadComposer
788788 <ProviderIcon provider={currentModelOption?.providerDriver} size={16} />
789789 }
790790 label={currentModelOption?.label ?? currentModelSelection.model}
791 maxWidth={152}
791 maxWidth="100%"
792792 onPress={openSettings}
793793 />
794794 </View>
apps/web/src/components/chat/ChatComposer.tsx-1
......@@ -4146,7 +4146,6 @@ export const ChatComposer = memo(function ChatComposer(props: ChatComposerProps)
41464146 ) : null}
41474147 <ProviderModelPicker
41484148 isComposerOwned
4149 compact={composerControlsCompact}
41504149 disabled={providerCatalogPending}
41514150 activeInstanceId={
41524151 providerCatalogPending
apps/web/src/components/chat/ProviderModelPicker.tsx+2-3
......@@ -42,7 +42,6 @@ export const ProviderModelPicker = memo(function ProviderModelPicker(props: {
4242 activeProviderIconClassName?: string;
4343 instanceIndicatorBackground?: string;
4444 size?: ComposerControlSize;
45 compact?: boolean;
4645 isComposerOwned?: boolean;
4746 disabled?: boolean;
4847 terminalOpen?: boolean;
......@@ -171,8 +170,8 @@ export const ProviderModelPicker = memo(function ProviderModelPicker(props: {
171170 size={size}
172171 data-chat-provider-model-picker="true"
173172 className={cn(
174 "min-w-0 justify-between whitespace-nowrap",
175 props.compact ? "max-w-42 shrink-0" : "max-w-48 shrink sm:max-w-56",
173 "min-w-0 shrink justify-between whitespace-nowrap",
174 !props.isComposerOwned && "max-w-48 sm:max-w-56",
176175 props.triggerClassName,
177176 )}
178177 disabled={props.disabled}