refactor: replace model tooltip with inline description for opencode/pi

This commit is contained in:
Mohamed Boudra
2026-04-06 09:53:42 +07:00
parent 6eb26f8c6c
commit 339023548d
@@ -23,7 +23,6 @@ import type { AgentProviderDefinition } from "@server/server/agent/provider-mani
const IS_WEB = Platform.OS === "web"; const IS_WEB = Platform.OS === "web";
import { Combobox, ComboboxItem, SearchInput } from "@/components/ui/combobox"; import { Combobox, ComboboxItem, SearchInput } from "@/components/ui/combobox";
import { Tooltip, TooltipTrigger, TooltipContent } from "@/components/ui/tooltip";
import { getProviderIcon } from "@/components/provider-icons"; import { getProviderIcon } from "@/components/provider-icons";
import type { FavoriteModelRow } from "@/hooks/use-form-preferences"; import type { FavoriteModelRow } from "@/hooks/use-form-preferences";
import { import {
@@ -34,6 +33,9 @@ import {
type SelectorModelRow, type SelectorModelRow,
} from "./combined-model-selector.utils"; } from "./combined-model-selector.utils";
// TODO: this should be configured per provider in the provider manifest
const PROVIDERS_WITH_MODEL_DESCRIPTIONS = new Set(["opencode", "pi"]);
type SelectorView = type SelectorView =
| { kind: "all" } | { kind: "all" }
| { kind: "provider"; providerId: string; providerLabel: string }; | { kind: "provider"; providerId: string; providerLabel: string };
@@ -159,7 +161,6 @@ function ModelRow({
}) { }) {
const { theme } = useUnistyles(); const { theme } = useUnistyles();
const ProviderIcon = getProviderIcon(row.provider); const ProviderIcon = getProviderIcon(row.provider);
const isWeb = Platform.OS === "web";
const handleToggleFavorite = useCallback( const handleToggleFavorite = useCallback(
(event: GestureResponderEvent) => { (event: GestureResponderEvent) => {
@@ -169,9 +170,13 @@ function ModelRow({
[onToggleFavorite, row.modelId, row.provider], [onToggleFavorite, row.modelId, row.provider],
); );
const item = ( const showDescription =
row.description && PROVIDERS_WITH_MODEL_DESCRIPTIONS.has(row.provider);
return (
<ComboboxItem <ComboboxItem
label={row.modelLabel} label={row.modelLabel}
description={showDescription ? row.description : undefined}
selected={isSelected} selected={isSelected}
disabled={disabled} disabled={disabled}
elevated={elevated} elevated={elevated}
@@ -209,21 +214,6 @@ function ModelRow({
} }
/> />
); );
if (!isWeb || !row.description) {
return item;
}
return (
<Tooltip delayDuration={0} enabledOnDesktop enabledOnMobile={false}>
<TooltipTrigger asChild triggerRefProp="ref">
<View>{item}</View>
</TooltipTrigger>
<TooltipContent side="right" align="center" offset={4}>
<Text style={styles.tooltipText}>{row.description}</Text>
</TooltipContent>
</Tooltip>
);
} }
function FavoritesSection({ function FavoritesSection({
@@ -796,10 +786,6 @@ const styles = StyleSheet.create((theme) => ({
favoriteButtonPressed: { favoriteButtonPressed: {
backgroundColor: theme.colors.surface1, backgroundColor: theme.colors.surface1,
}, },
tooltipText: {
color: theme.colors.foreground,
fontSize: theme.fontSize.xs,
},
sheetLoadingState: { sheetLoadingState: {
minHeight: 160, minHeight: 160,
justifyContent: "center", justifyContent: "center",