mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-06-30 00:22:10 -04:00
fix(cookbook): preserve same-host ssh profile selection (#3373)
* fix(cookbook): preserve same-host ssh profile selection * fix(cookbook): resolve same-host ssh profiles in running tab and port lookups
This commit is contained in:
+15
-12
@@ -14,6 +14,7 @@ import { bindMenuDismiss, dismissOrRemove } from './escMenuStack.js';
|
||||
let _envState;
|
||||
let _sshCmd;
|
||||
let _getPort;
|
||||
let _serverByVal;
|
||||
let _sshPrefix;
|
||||
let _getPlatform;
|
||||
let _isWindows;
|
||||
@@ -97,14 +98,14 @@ function _selectedServeTarget(panel) {
|
||||
const select = document.getElementById('hwfit-server-select') || document.getElementById('hwfit-dl-server');
|
||||
const servers = Array.isArray(_envState.servers) ? _envState.servers : [];
|
||||
let host = _envState.remoteHost || '';
|
||||
let server = host ? servers.find(s => s.host === host) : null;
|
||||
let server = host ? (_serverByVal?.(_envState.remoteServerKey || host) || servers.find(s => s.host === host)) : null;
|
||||
if (select && select.value != null) {
|
||||
if (select.value === 'local') {
|
||||
host = '';
|
||||
server = servers.find(s => !s.host || s.host === 'local') || null;
|
||||
} else {
|
||||
const idx = /^\d+$/.test(String(select.value)) ? parseInt(select.value, 10) : -1;
|
||||
server = servers.find(s => s.host === select.value) || (idx >= 0 ? servers[idx] : null) || null;
|
||||
server = _serverByVal?.(select.value) || (idx >= 0 ? servers[idx] : null) || null;
|
||||
host = server?.host || '';
|
||||
}
|
||||
}
|
||||
@@ -114,7 +115,7 @@ function _selectedServeTarget(panel) {
|
||||
: (server?.name || 'local server');
|
||||
return {
|
||||
host,
|
||||
port: host ? (_getPort(host) || server?.port || '') : '',
|
||||
port: host ? (server?.port || _getPort(host) || '') : '',
|
||||
venv,
|
||||
label,
|
||||
};
|
||||
@@ -536,7 +537,7 @@ function _rerenderCachedModels() {
|
||||
// The venv set per-server in Settings (server.envPath). Used as the venv
|
||||
// field default when the global active env path isn't carrying it, so a
|
||||
// configured server venv shows up without re-typing it.
|
||||
const _selSrv = (_es.servers || []).find(s => s.host === (_es.remoteHost || '')) || {};
|
||||
const _selSrv = _serverByVal?.(_es.remoteServerKey || _es.remoteHost || '') || {};
|
||||
const _srvVenv = _selSrv.envPath || '';
|
||||
// Serve state schema: { _byRepo: { <repo>: {...} }, _lastUsed: {...} }.
|
||||
// Loading priority: this-repo's saved settings → last-used (from any
|
||||
@@ -894,10 +895,11 @@ function _rerenderCachedModels() {
|
||||
if (!wrap) return;
|
||||
try {
|
||||
const host = (_es.remoteHost || '').trim();
|
||||
const selected = _serverByVal?.(_es.remoteServerKey || host);
|
||||
const params = new URLSearchParams({ model: repo });
|
||||
if (host) {
|
||||
params.set('host', host);
|
||||
const _sp = (_es.servers || []).find(s => s.host === host)?.port;
|
||||
const _sp = selected?.port;
|
||||
if (_sp) params.set('ssh_port', _sp);
|
||||
}
|
||||
// SERVE mode: this is a specific GGUF file already on disk, so its quant
|
||||
@@ -960,10 +962,11 @@ function _rerenderCachedModels() {
|
||||
if (!el || !document.body.contains(el)) return false; // panel closed → stop
|
||||
try {
|
||||
const host = (_es.remoteHost || '').trim();
|
||||
const selected = _serverByVal?.(_es.remoteServerKey || host);
|
||||
const params = new URLSearchParams();
|
||||
if (host) {
|
||||
params.set('host', host);
|
||||
const _sp = (_es.servers || []).find(s => s.host === host)?.port;
|
||||
const _sp = selected?.port;
|
||||
if (_sp) params.set('ssh_port', _sp);
|
||||
}
|
||||
const res = await fetch('/api/cookbook/gpus' + (params.toString() ? '?' + params : ''));
|
||||
@@ -1787,7 +1790,7 @@ function _rerenderCachedModels() {
|
||||
const _probeParams = new URLSearchParams();
|
||||
if (_probeHost) {
|
||||
_probeParams.set('host', _probeHost);
|
||||
const _sp = (_envState.servers || []).find(s => s.host === _probeHost)?.port;
|
||||
const _sp = (_serverByVal?.(_envState.remoteServerKey || _probeHost) || {}).port;
|
||||
if (_sp) _probeParams.set('ssh_port', _sp);
|
||||
}
|
||||
const _probeRes = await fetch('/api/cookbook/gpus' + (_probeParams.toString() ? '?' + _probeParams : ''), { credentials: 'same-origin' });
|
||||
@@ -1879,8 +1882,7 @@ function _rerenderCachedModels() {
|
||||
if (_ssEl && _ssEl.value != null) {
|
||||
if (_ssEl.value === 'local') serveHost = '';
|
||||
else {
|
||||
// Values are host strings now; resolve by host (numeric fallback).
|
||||
const _srv = _envState.servers.find(s => s.host === _ssEl.value) || _envState.servers[parseInt(_ssEl.value)];
|
||||
const _srv = _serverByVal?.(_ssEl.value) || _envState.servers[parseInt(_ssEl.value)];
|
||||
if (_srv) {
|
||||
serveHost = _srv.host;
|
||||
_srvEnv = _srv.env || '';
|
||||
@@ -1939,7 +1941,7 @@ function _resolveCacheHost() {
|
||||
if (cacheSrv) {
|
||||
const val = cacheSrv.value;
|
||||
if (val === 'local') host = '';
|
||||
else { const s = _envState.servers.find(x => x.host === val) || _envState.servers[parseInt(val)]; if (s) host = s.host; }
|
||||
else { const s = _serverByVal?.(val) || _envState.servers[parseInt(val)]; if (s) host = s.host; }
|
||||
}
|
||||
return host;
|
||||
}
|
||||
@@ -2135,11 +2137,11 @@ export async function _fetchCachedModels() {
|
||||
host = '';
|
||||
selectedServer = _envState.servers.find(s => !s.host || s.host === 'local') || _envState.servers[0];
|
||||
} else {
|
||||
const s = _envState.servers.find(x => x.host === val) || _envState.servers[parseInt(val)];
|
||||
const s = _serverByVal?.(val) || _envState.servers[parseInt(val)];
|
||||
if (s) { host = s.host; selectedServer = s; }
|
||||
}
|
||||
} else {
|
||||
selectedServer = _envState.servers.find(s => s.host === host) || _envState.servers[0];
|
||||
selectedServer = _serverByVal?.(_envState.remoteServerKey || host) || _envState.servers[0];
|
||||
}
|
||||
// Read extra model dirs from the SELECTED server's modelDirs (canonical source)
|
||||
const modelDirs = [];
|
||||
@@ -2266,6 +2268,7 @@ export function initServe(shared) {
|
||||
_envState = shared._envState;
|
||||
_sshCmd = shared._sshCmd;
|
||||
_getPort = shared._getPort;
|
||||
_serverByVal = shared._serverByVal;
|
||||
_sshPrefix = shared._sshPrefix;
|
||||
_getPlatform = shared._getPlatform;
|
||||
_isWindows = shared._isWindows;
|
||||
|
||||
Reference in New Issue
Block a user