diff --git a/chatv2.js b/chatv2.js
index 896b937..c33ab1a 100644
--- a/chatv2.js
+++ b/chatv2.js
@@ -96,52 +96,53 @@ function updateBackendModelDisplay() {
}
async function fetchBackendModels() {
- try {
- // ✅ FIX: Ensure valid backend before fetching
- if (!currentBackendModel || currentBackendModel === ':') {
- currentBackendModel = 'plato';
+ const selector = document.getElementById('backendModelSelector');
+ let allModels = [];
+
+ for (const [backendKey, backendConfig] of Object.entries(BACKENDS)) {
+ try {
+ const apiUrl = IS_PRODUCTION ? backendConfig.prod : backendConfig.dev;
+ console.log(`Fetching models from ${backendKey}: ${apiUrl}`);
+
+ const response = await fetch(`${apiUrl}/models`, {
+ signal: AbortSignal.timeout(5000) // 5 second timeout
+ });
+
+ if (response.ok) {
+ const data = await response.json();
+ if (data.data && Array.isArray(data.data)) {
+ const models = data.data.map(model => ({
+ backend: backendKey,
+ model: model.id
+ }));
+ allModels = [...allModels, ...models];
+ }
+ } else {
+ console.error(`Failed to fetch models from ${backendKey}: ${response.status} ${response.statusText}`);
+ }
+ } catch (error) {
+ console.error(`Error fetching models from ${backendKey}:`, error);
}
+ }
- const apiUrl = getApiUrl();
- console.log(`Fetching models from: ${apiUrl}`);
-
- const response = await fetch(`${apiUrl}/models`);
- const selector = document.getElementById('backendModelSelector');
-
- if (response.ok) {
- const data = await response.json();
-
- const { backendKey } = splitBackendModel(currentBackendModel);
- const effectiveBackendKey = backendKey || 'plato';
-
- availableBackendModels = data.data.map(model => ({
- backend: effectiveBackendKey,
- model: model.id
- }));
+ availableBackendModels = allModels;
+ if (selector) {
+ if (availableBackendModels.length === 0) {
+ selector.innerHTML = '';
+ } else {
populateBackendModelSelector();
- // ✅ FIX: Only auto-select if no model is set
+ // Auto-select if no valid model is set
const hasModel = currentBackendModel && currentBackendModel.includes(':') && currentBackendModel.split(':')[1];
- if (!hasModel && availableBackendModels.length > 0 && selector) {
+ if (!hasModel && availableBackendModels.length > 0) {
currentBackendModel = `${availableBackendModels[0].backend}:${availableBackendModels[0].model}`;
selector.value = currentBackendModel;
}
-
- updateBackendModelDisplay();
- } else {
- console.error('Failed to fetch models:', response.statusText);
- if (selector) {
- selector.innerHTML = '';
- }
- }
- } catch (error) {
- console.error('Error fetching models:', error);
- const selector = document.getElementById('backendModelSelector');
- if (selector) {
- selector.innerHTML = '';
}
}
+
+ updateBackendModelDisplay();
}
function populateBackendModelSelector() {
@@ -157,7 +158,11 @@ function populateBackendModelSelector() {
``
).join('');
- if (currentBackendModel) {
+ if (currentBackendModel && selector.querySelector(`option[value="${currentBackendModel}"]`)) {
+ selector.value = currentBackendModel;
+ } else if (availableBackendModels.length > 0) {
+ // If current selection is invalid, reset to first available
+ currentBackendModel = `${availableBackendModels[0].backend}:${availableBackendModels[0].model}`;
selector.value = currentBackendModel;
}
}
diff --git a/nginx.conf b/nginx.conf
index d471da9..05302ff 100644
--- a/nginx.conf
+++ b/nginx.conf
@@ -39,7 +39,7 @@ server {
# Proxy API requests to plato.lan (192.168.1.74)
location /api/plato/ {
- proxy_pass http://192.168.1.74:1234/v1/;
+ proxy_pass http://192.168.1.74:8080/v1/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -66,7 +66,7 @@ server {
# Default /api/ points to plato for backwards compatibility
location /api/ {
- proxy_pass http://192.168.1.74:1234/v1/;
+ proxy_pass http://192.168.1.74:8080/v1/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;