From b590e1b7210796740ce8ceb05a861bb0e56f0edf Mon Sep 17 00:00:00 2001 From: Ryan Wang Date: Mon, 14 Sep 2026 17:56:57 +0800 Subject: [PATCH 1/2] feat: show required-feature hints in model selector instead of filtering --- ui/src/formkit/AiModelSelectOption.vue | 16 ++++++++ ui/src/formkit/AiModelSelector.test.ts | 52 +++++++++++++++++++++++- ui/src/formkit/AiModelSelector.vue | 18 +++++++- ui/src/formkit/ai-model-selector.test.ts | 14 +++++++ ui/src/formkit/ai-model-selector.ts | 8 ++++ 5 files changed, 105 insertions(+), 3 deletions(-) diff --git a/ui/src/formkit/AiModelSelectOption.vue b/ui/src/formkit/AiModelSelectOption.vue index 36378c47..954594bb 100644 --- a/ui/src/formkit/AiModelSelectOption.vue +++ b/ui/src/formkit/AiModelSelectOption.vue @@ -2,9 +2,11 @@ import type { ModelOption } from '@/api/generated' import { capabilityUnavailableDetailsLabel } from '@/utils/capabilities' import { SelectItem, SelectItemIndicator, SelectItemText } from 'reka-ui' +import { computed } from 'vue' import MingcuteCheckLine from '~icons/mingcute/check-line' import { isModelOptionSelectable, + missingRequiredFeatureLabels, modelDetailLabels, modelOptionDisplayName, modelOptionUnavailableReasonLabel, @@ -15,11 +17,19 @@ import { const props = defineProps<{ model: ModelOption selected: boolean + requiredFeatures?: string[] }>() const emit = defineEmits<{ select: [model: ModelOption] }>() + +const missingFeatureLabels = computed(() => { + if (!isModelOptionSelectable(props.model)) { + return [] + } + return missingRequiredFeatureLabels(props.model, props.requiredFeatures) +})