diff --git a/web/src/locales/en.ts b/web/src/locales/en.ts
index f8e06586f1..70706a8f2c 100644
--- a/web/src/locales/en.ts
+++ b/web/src/locales/en.ts
@@ -2372,11 +2372,9 @@ Example: Virtual Hosted Style`,
'Please select at least one model before verification.',
addCustomModel: 'Add custom model',
addCustomModelTitle: 'Add custom model',
- batchAddModels: 'Add all visible models',
- batchRemoveModels: 'Remove all visible models',
+ batchAddModels: 'Add all models',
+ batchRemoveModels: 'Remove all models',
batchVerifyModels: 'Batch verify',
- selectAllFiltered: 'Select all',
- batchVerifySelected: 'Verify {{count}} model(s)',
editCustomModelTitle: 'Edit model',
modelMaxTokens: 'Max tokens',
modelFeatures: 'Model features',
diff --git a/web/src/locales/zh.ts b/web/src/locales/zh.ts
index 9fc2bef14d..29287a69b4 100644
--- a/web/src/locales/zh.ts
+++ b/web/src/locales/zh.ts
@@ -2007,11 +2007,9 @@ NER:使用 spaCy NER 和基于规则的关键词提取来抽取 Entities 和 R
selectModelBeforeVerify: '请至少选择一个模型后再验证。',
addCustomModel: '添加自定义模型',
addCustomModelTitle: '添加自定义模型',
- batchAddModels: '批量添加当前模型',
- batchRemoveModels: '批量移除当前模型',
+ batchAddModels: '批量添加模型',
+ batchRemoveModels: '批量移除模型',
batchVerifyModels: '批量验证',
- selectAllFiltered: '全选',
- batchVerifySelected: '验证 {{count}} 个模型',
editCustomModelTitle: '编辑模型',
modelMaxTokens: '最大 Token 数',
modelTypes: {
diff --git a/web/src/pages/user-setting/setting-model/instance-card/models-section/components/model-row.tsx b/web/src/pages/user-setting/setting-model/instance-card/models-section/components/model-row.tsx
index 560bd11176..65617b887a 100644
--- a/web/src/pages/user-setting/setting-model/instance-card/models-section/components/model-row.tsx
+++ b/web/src/pages/user-setting/setting-model/instance-card/models-section/components/model-row.tsx
@@ -14,7 +14,6 @@
* limitations under the License.
*/
-import { Checkbox } from '@/components/ui/checkbox';
import { Minus, Plus } from 'lucide-react';
import { ModelRowProps } from '../interface';
import { ModelTypeBadges } from './model-type-badges';
@@ -26,8 +25,6 @@ export function ModelRow({
isAdded,
verifyStatus,
hideActions,
- isSelected,
- onToggleSelect,
onVerify,
onAdd,
onRemove,
@@ -42,13 +39,6 @@ export function ModelRow({
>
- {onToggleSelect && (
-
- )}
{model.name}
diff --git a/web/src/pages/user-setting/setting-model/instance-card/models-section/index.tsx b/web/src/pages/user-setting/setting-model/instance-card/models-section/index.tsx
index e1e59d2b11..7d208e5aa6 100644
--- a/web/src/pages/user-setting/setting-model/instance-card/models-section/index.tsx
+++ b/web/src/pages/user-setting/setting-model/instance-card/models-section/index.tsx
@@ -15,20 +15,12 @@
*/
import { Button } from '@/components/ui/button';
-import { Checkbox } from '@/components/ui/checkbox';
import { SearchInput } from '@/components/ui/input';
import { useCommonTranslation, useTranslate } from '@/hooks/common-hooks';
import { useFetchInstanceModels } from '@/hooks/use-llm-request';
import { IProviderModelItem } from '@/interfaces/request/llm';
-import {
- ListMinus,
- ListPlus,
- Loader2,
- Plus,
- Search,
- ShieldCheck,
-} from 'lucide-react';
-import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
+import { Loader2, Plus, Search, ShieldCheck } from 'lucide-react';
+import { useCallback, useEffect, useRef, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { AddCustomModelDialog } from '../add-custom-model-dialog';
import { mapModelKey } from '../available-models';
@@ -178,50 +170,9 @@ export function ModelsSection(props: ModelsSectionProps) {
verifyTransform,
});
- // 6a. Model selection for batch verify.
- const [selectedModels, setSelectedModels] = useState>(new Set());
-
- const toggleModel = useCallback((name: string) => {
- setSelectedModels((prev) => {
- const next = new Set(prev);
- if (next.has(name)) {
- next.delete(name);
- } else {
- next.add(name);
- }
- return next;
- });
- }, []);
-
- const toggleAllFiltered = useCallback(() => {
- setSelectedModels((prev) => {
- const allSelected = filteredModels.every((m) => prev.has(m.name));
- const next = new Set(prev);
- if (allSelected) {
- filteredModels.forEach((m) => next.delete(m.name));
- } else {
- filteredModels.forEach((m) => next.add(m.name));
- }
- return next;
- });
- }, [filteredModels]);
-
- const filteredSelectedCount = useMemo(
- () => filteredModels.filter((m) => selectedModels.has(m.name)).length,
- [filteredModels, selectedModels],
- );
-
- const selectAllChecked: boolean | 'indeterminate' =
- filteredSelectedCount === 0
- ? false
- : filteredSelectedCount === filteredModels.length
- ? true
- : 'indeterminate';
-
const handleBatchVerifyClick = useCallback(() => {
- const selected = filteredModels.filter((m) => selectedModels.has(m.name));
- handleBatchVerify(selected);
- }, [filteredModels, selectedModels, handleBatchVerify]);
+ handleBatchVerify(filteredModels);
+ }, [filteredModels, handleBatchVerify]);
// 7. Add / remove / batch toggle / custom add.
const {
@@ -327,33 +278,6 @@ export function ModelsSection(props: ModelsSectionProps) {
placeholder={t('setting.search')}
rootClassName="flex-1"
/>
- {!hideActions && (
-
- )}
-
-
- {tSetting('selectAllFiltered')}
-
+ {!hideActions && (
+
+ )}
@@ -418,8 +347,6 @@ export function ModelsSection(props: ModelsSectionProps) {
isAdded={addedSet.has(model.name)}
verifyStatus={verify[model.name] ?? 'idle'}
hideActions={hideActions}
- isSelected={selectedModels.has(model.name)}
- onToggleSelect={() => toggleModel(model.name)}
onVerify={() => handleVerify(model)}
onAdd={() => handleAddModel(model)}
onRemove={() => handleRemoveModel(model)}
diff --git a/web/src/pages/user-setting/setting-model/instance-card/models-section/interface.ts b/web/src/pages/user-setting/setting-model/instance-card/models-section/interface.ts
index 3177237c7d..d7327e7941 100644
--- a/web/src/pages/user-setting/setting-model/instance-card/models-section/interface.ts
+++ b/web/src/pages/user-setting/setting-model/instance-card/models-section/interface.ts
@@ -138,10 +138,6 @@ export interface ModelRowProps {
onRemove: () => void;
onEdit: () => void;
editLabel: string;
- /** Whether this row is currently selected for batch operations. */
- isSelected?: boolean;
- /** Toggle this row's selection state. */
- onToggleSelect?: () => void;
}
export interface TagFilterButtonProps {