Merge branch 'develop'
Some checks failed
Stable Release / stable (push) Failing after 33s

This commit is contained in:
Augustin
2026-04-23 22:06:22 +02:00

View File

@@ -331,6 +331,11 @@ function getFieldLabel(key, t) {
return key.replace(/_/g, ' ').replace(/\b\w/g, c => c.toUpperCase())
}
const PROVIDER_MODELS = {
minimax: ['MiniMax-M2.7', 'MiniMax-M1', 'abab6.5s-chat', 'abab6.5-chat', 'abab5.5-chat'],
zai: ['glm', 'glm-4', 'glm-4-plus', 'glm-4-flash', 'glm-3-turbo'],
}
function PanelProviders({ providers, editProvider, providerForm, setProviderForm, setEditProvider, openProviderEdit, handleSaveProvider, api, loadData, t }) {
const [validating, setValidating] = useState(null)
const [validationStatus, setValidationStatus] = useState(null)
@@ -352,17 +357,29 @@ function PanelProviders({ providers, editProvider, providerForm, setProviderForm
setValidating(null)
}
const handleSelectModel = (providerName, model) => {
setProviderForm(prev => ({
...prev,
[providerName]: { ...(prev[providerName] || {}), model },
}))
setEditProvider(providerName)
}
const displayed = providers.filter(p => p.name === 'minimax' || p.name === 'zai')
return (
<div className="config-providers-list">
<div className="provider-setup-hint">{t('config.setupDescription')}</div>
{providers.map((p, i) => {
{displayed.map((p, i) => {
const isEditing = editProvider === p.name
const isValidationTarget = validationStatus?.provider === p.name
const models = PROVIDER_MODELS[p.name] || []
const selectedModel = providerForm[p.name]?.model || p.model
return (
<div key={i} className="config-card provider-card-v2">
<div className="provider-card-top">
<div className="provider-card-identity">
<span className="provider-card-name">{p.name}</span>
<span className="provider-card-name">{p.name.toUpperCase()}</span>
{p.active && <span className="badge ok" style={{ marginLeft: 6 }}>active</span>}
{isValidationTarget && validationStatus?.valid && <span className="badge ok">{t('config.keyValid')}</span>}
{isValidationTarget && !validationStatus?.valid && <span className="badge error">{validationStatus?.error}</span>}
@@ -376,7 +393,7 @@ function PanelProviders({ providers, editProvider, providerForm, setProviderForm
<input
className="config-form-input"
type="password"
placeholder={t('config.tokenPlaceholder')}
placeholder={p.apiKey ? '••••••••' : t('config.tokenPlaceholder')}
value={isEditing ? (providerForm[p.name]?.api_key || '') : ''}
onChange={e => {
if (!isEditing) openProviderEdit(p)
@@ -391,19 +408,31 @@ function PanelProviders({ providers, editProvider, providerForm, setProviderForm
<button
className="sm primary"
disabled={validating === p.name || !providerForm[p.name]?.api_key}
onClick={() => handleValidate(p.name, providerForm[p.name]?.api_key, providerForm[p.name]?.model, providerForm[p.name]?.base_url)}
onClick={() => handleValidate(p.name, providerForm[p.name]?.api_key, selectedModel, providerForm[p.name]?.base_url)}
>
{validating === p.name ? t('config.validating') : t('config.validateKey')}
</button>
{isValidationTarget && validationStatus?.valid && (
{isEditing && (
<button className="sm" onClick={() => handleSaveProvider(p.name)}>{t('config.save')}</button>
)}
</div>
</div>
<div className="provider-card-meta" style={{ marginTop: 8 }}>
{p.active && <span className="badge ok" style={{ marginRight: 6 }}>active</span>}
{p.model && p.model !== p.name && <span className="mono">{p.model}</span>}
{models.length > 0 && (
<div style={{ marginTop: 10 }}>
<span className="config-form-label">Modèle</span>
<div className="chip-row" style={{ marginTop: 4 }}>
{models.map(m => (
<div
key={m}
className={`chip ${selectedModel === m ? 'active' : ''}`}
onClick={() => handleSelectModel(p.name, m)}
>
{m}
</div>
))}
</div>
</div>
)}
</div>
</div>
)