合并远程主分支客户端收口

This commit is contained in:
2026-08-13 17:13:36 +08:00
240 changed files with 4900 additions and 20399 deletions

View File

@@ -20,6 +20,7 @@ import {
ChevronDown,
} from 'lucide-react';
import { Button } from '@/components/ui/button';
import { DisclosureContent } from '@/components/ui/disclosure';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
@@ -838,10 +839,9 @@ function ProviderCard({
className="flex items-center justify-between w-full text-sm font-medium text-foreground/80 hover:text-foreground transition-colors"
>
<span>{t('aiProviders.sections.fallback')}</span>
<ChevronDown className={cn("h-4 w-4 transition-transform", showFallback && "rotate-180")} />
<ChevronDown className={cn("h-4 w-4 transition-transform duration-200 ease-out", showFallback && "rotate-180")} />
</button>
{showFallback && (
<div className="space-y-3 pt-2">
<DisclosureContent open={showFallback} className="mt-2" innerClassName="space-y-3 pt-2">
<div className="space-y-1.5">
<Label className={currentLabelClasses}>{t('aiProviders.dialog.fallbackModelIds')}</Label>
<textarea
@@ -879,8 +879,7 @@ function ProviderCard({
</div>
)}
</div>
</div>
)}
</DisclosureContent>
</div>
<div className="space-y-3">
<div className="flex items-center justify-between gap-3">
@@ -1326,7 +1325,7 @@ function AddProviderDialog({
};
return (
<div data-testid="add-provider-dialog" className="fixed inset-0 z-50 bg-foreground/15 flex items-center justify-center p-4">
<div data-testid="add-provider-dialog" className="fixed inset-0 z-[100] bg-foreground/15 flex items-center justify-center p-4">
<Card className="w-full max-w-2xl max-h-[90vh] flex flex-col rounded-3xl border-0 shadow-2xl bg-surface-modal overflow-hidden">
<CardHeader className="relative pb-2 shrink-0">
<CardTitle className="text-2xl font-semibold">{t('aiProviders.dialog.title')}</CardTitle>
@@ -1617,10 +1616,9 @@ function AddProviderDialog({
className="flex items-center justify-between w-full text-sm font-medium text-foreground/80 hover:text-foreground transition-colors"
>
<span>{t('aiProviders.dialog.advancedConfig')}</span>
<ChevronDown className={cn("h-4 w-4 transition-transform", showAdvancedConfig && "rotate-180")} />
<ChevronDown className={cn("h-4 w-4 transition-transform duration-200 ease-out", showAdvancedConfig && "rotate-180")} />
</button>
{showAdvancedConfig && (
<div className="space-y-2.5 pt-1">
<DisclosureContent open={showAdvancedConfig} className="mt-1" innerClassName="space-y-2.5 pt-1">
<Label htmlFor="userAgent" className={labelClasses}>{t('aiProviders.dialog.userAgent')}</Label>
<Input
id="userAgent"
@@ -1629,8 +1627,7 @@ function AddProviderDialog({
onChange={(e) => setUserAgent(e.target.value)}
className={inputClasses}
/>
</div>
)}
</DisclosureContent>
</div>
)}
{/* Device OAuth Trigger — only shown when in OAuth mode */}