Compare commits

...

1 Commits

Author SHA1 Message Date
Augustin
9987a586e2 fix(config): replace hardcoded model list with free text input
All checks were successful
Beta Release / beta (push) Successful in 41s
Removed PROVIDER_MODELS hardcoded map. Model is now a simple text
input pre-filled with the current model value.

💘 Generated with Crush

Assisted-by: GLM-5.1 via Crush <crush@charm.land>
2026-04-23 22:08:41 +02:00

View File

@@ -331,11 +331,6 @@ function getFieldLabel(key, t) {
return key.replace(/_/g, ' ').replace(/\b\w/g, c => c.toUpperCase()) 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 }) { function PanelProviders({ providers, editProvider, providerForm, setProviderForm, setEditProvider, openProviderEdit, handleSaveProvider, api, loadData, t }) {
const [validating, setValidating] = useState(null) const [validating, setValidating] = useState(null)
const [validationStatus, setValidationStatus] = useState(null) const [validationStatus, setValidationStatus] = useState(null)
@@ -357,14 +352,6 @@ function PanelProviders({ providers, editProvider, providerForm, setProviderForm
setValidating(null) 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') const displayed = providers.filter(p => p.name === 'minimax' || p.name === 'zai')
return ( return (
@@ -372,8 +359,7 @@ function PanelProviders({ providers, editProvider, providerForm, setProviderForm
{displayed.map((p, i) => { {displayed.map((p, i) => {
const isEditing = editProvider === p.name const isEditing = editProvider === p.name
const isValidationTarget = validationStatus?.provider === p.name const isValidationTarget = validationStatus?.provider === p.name
const models = PROVIDER_MODELS[p.name] || [] const currentModel = providerForm[p.name]?.model || p.model
const selectedModel = providerForm[p.name]?.model || p.model
return ( return (
<div key={i} className="config-card provider-card-v2"> <div key={i} className="config-card provider-card-v2">
@@ -408,7 +394,7 @@ function PanelProviders({ providers, editProvider, providerForm, setProviderForm
<button <button
className="sm primary" className="sm primary"
disabled={validating === p.name || !providerForm[p.name]?.api_key} disabled={validating === p.name || !providerForm[p.name]?.api_key}
onClick={() => handleValidate(p.name, providerForm[p.name]?.api_key, selectedModel, providerForm[p.name]?.base_url)} onClick={() => handleValidate(p.name, providerForm[p.name]?.api_key, currentModel, providerForm[p.name]?.base_url)}
> >
{validating === p.name ? t('config.validating') : t('config.validateKey')} {validating === p.name ? t('config.validating') : t('config.validateKey')}
</button> </button>
@@ -417,22 +403,21 @@ function PanelProviders({ providers, editProvider, providerForm, setProviderForm
)} )}
</div> </div>
</div> </div>
{models.length > 0 && ( <div className="provider-card-meta" style={{ marginTop: 8 }}>
<div style={{ marginTop: 10 }}> <span className="config-form-label">{t('config.model')}</span>
<span className="config-form-label">Modèle</span> <input
<div className="chip-row" style={{ marginTop: 4 }}> className="config-form-input"
{models.map(m => ( value={currentModel || ''}
<div onChange={e => {
key={m} setProviderForm(prev => ({
className={`chip ${selectedModel === m ? 'active' : ''}`} ...prev,
onClick={() => handleSelectModel(p.name, m)} [p.name]: { ...(prev[p.name] || {}), model: e.target.value },
> }))
{m} setEditProvider(p.name)
</div> }}
))} placeholder="model-name"
</div> />
</div> </div>
)}
</div> </div>
</div> </div>
) )