ScuttleBot
ui: enable LLM backend rename via edit form The name field was disabled on edit. Now enabled — if the name changes, the UI deletes the old backend and creates a new one (the API treats name as immutable on PUT, so rename requires delete+create).
Commit
3456dc42b864a492008cc1158d396f74ab17f719d09fc35c0bc49814fc953c06
Parent
c6d6570f58c48fb…
1 file changed
+6
-2
+6
-2
| --- internal/api/ui/index.html | ||
| +++ internal/api/ui/index.html | ||
| @@ -2253,11 +2253,11 @@ | ||
| 2253 | 2253 | |
| 2254 | 2254 | _editingBackend = name; |
| 2255 | 2255 | document.getElementById('ai-form-title').textContent = 'edit backend — ' + esc(name); |
| 2256 | 2256 | document.getElementById('bf-submit-btn').textContent = 'save changes'; |
| 2257 | 2257 | document.getElementById('bf-name').value = name; |
| 2258 | - document.getElementById('bf-name').disabled = true; // name is immutable | |
| 2258 | + document.getElementById('bf-name').disabled = false; // allow rename | |
| 2259 | 2259 | document.getElementById('bf-backend').value = b.backend || ''; |
| 2260 | 2260 | document.getElementById('bf-apikey').value = ''; // never pre-fill secrets |
| 2261 | 2261 | document.getElementById('bf-baseurl').value = b.base_url || ''; |
| 2262 | 2262 | const curated = KNOWN_MODELS[b.backend] || []; |
| 2263 | 2263 | populateModelSelect(curated, b.model || ''); |
| @@ -2430,11 +2430,15 @@ | ||
| 2430 | 2430 | }; |
| 2431 | 2431 | |
| 2432 | 2432 | const btn = document.getElementById('bf-submit-btn'); |
| 2433 | 2433 | btn.disabled = true; |
| 2434 | 2434 | try { |
| 2435 | - if (_editingBackend) { | |
| 2435 | + if (_editingBackend && name !== _editingBackend) { | |
| 2436 | + // Rename: delete old, create new. | |
| 2437 | + await api('DELETE', `/v1/llm/backends/${encodeURIComponent(_editingBackend)}`); | |
| 2438 | + await api('POST', '/v1/llm/backends', payload); | |
| 2439 | + } else if (_editingBackend) { | |
| 2436 | 2440 | await api('PUT', `/v1/llm/backends/${encodeURIComponent(_editingBackend)}`, payload); |
| 2437 | 2441 | } else { |
| 2438 | 2442 | await api('POST', '/v1/llm/backends', payload); |
| 2439 | 2443 | } |
| 2440 | 2444 | closeBackendForm(); |
| 2441 | 2445 |
| --- internal/api/ui/index.html | |
| +++ internal/api/ui/index.html | |
| @@ -2253,11 +2253,11 @@ | |
| 2253 | |
| 2254 | _editingBackend = name; |
| 2255 | document.getElementById('ai-form-title').textContent = 'edit backend — ' + esc(name); |
| 2256 | document.getElementById('bf-submit-btn').textContent = 'save changes'; |
| 2257 | document.getElementById('bf-name').value = name; |
| 2258 | document.getElementById('bf-name').disabled = true; // name is immutable |
| 2259 | document.getElementById('bf-backend').value = b.backend || ''; |
| 2260 | document.getElementById('bf-apikey').value = ''; // never pre-fill secrets |
| 2261 | document.getElementById('bf-baseurl').value = b.base_url || ''; |
| 2262 | const curated = KNOWN_MODELS[b.backend] || []; |
| 2263 | populateModelSelect(curated, b.model || ''); |
| @@ -2430,11 +2430,15 @@ | |
| 2430 | }; |
| 2431 | |
| 2432 | const btn = document.getElementById('bf-submit-btn'); |
| 2433 | btn.disabled = true; |
| 2434 | try { |
| 2435 | if (_editingBackend) { |
| 2436 | await api('PUT', `/v1/llm/backends/${encodeURIComponent(_editingBackend)}`, payload); |
| 2437 | } else { |
| 2438 | await api('POST', '/v1/llm/backends', payload); |
| 2439 | } |
| 2440 | closeBackendForm(); |
| 2441 |
| --- internal/api/ui/index.html | |
| +++ internal/api/ui/index.html | |
| @@ -2253,11 +2253,11 @@ | |
| 2253 | |
| 2254 | _editingBackend = name; |
| 2255 | document.getElementById('ai-form-title').textContent = 'edit backend — ' + esc(name); |
| 2256 | document.getElementById('bf-submit-btn').textContent = 'save changes'; |
| 2257 | document.getElementById('bf-name').value = name; |
| 2258 | document.getElementById('bf-name').disabled = false; // allow rename |
| 2259 | document.getElementById('bf-backend').value = b.backend || ''; |
| 2260 | document.getElementById('bf-apikey').value = ''; // never pre-fill secrets |
| 2261 | document.getElementById('bf-baseurl').value = b.base_url || ''; |
| 2262 | const curated = KNOWN_MODELS[b.backend] || []; |
| 2263 | populateModelSelect(curated, b.model || ''); |
| @@ -2430,11 +2430,15 @@ | |
| 2430 | }; |
| 2431 | |
| 2432 | const btn = document.getElementById('bf-submit-btn'); |
| 2433 | btn.disabled = true; |
| 2434 | try { |
| 2435 | if (_editingBackend && name !== _editingBackend) { |
| 2436 | // Rename: delete old, create new. |
| 2437 | await api('DELETE', `/v1/llm/backends/${encodeURIComponent(_editingBackend)}`); |
| 2438 | await api('POST', '/v1/llm/backends', payload); |
| 2439 | } else if (_editingBackend) { |
| 2440 | await api('PUT', `/v1/llm/backends/${encodeURIComponent(_editingBackend)}`, payload); |
| 2441 | } else { |
| 2442 | await api('POST', '/v1/llm/backends', payload); |
| 2443 | } |
| 2444 | closeBackendForm(); |
| 2445 |