diff --git a/ui/src/ui/app-gateway.ts b/ui/src/ui/app-gateway.ts index d4c8339c9..66b409cf7 100644 --- a/ui/src/ui/app-gateway.ts +++ b/ui/src/ui/app-gateway.ts @@ -84,6 +84,16 @@ function normalizeSessionKeyForDefaults( function applySessionDefaults(host: GatewayHost, defaults?: SessionDefaultsSnapshot) { if (!defaults?.mainSessionKey) return; + + // If session was explicitly set from URL, don't override with defaults + // This ensures direct links to specific sessions work correctly + const hostWithFlag = host as GatewayHost & { sessionFromUrl?: boolean }; + if (hostWithFlag.sessionFromUrl) { + // Clear the flag after first connection so future reconnects can apply defaults if needed + hostWithFlag.sessionFromUrl = false; + return; + } + const resolvedSessionKey = normalizeSessionKeyForDefaults(host.sessionKey, defaults); const resolvedSettingsSessionKey = normalizeSessionKeyForDefaults( host.settings.sessionKey, diff --git a/ui/src/ui/app-settings.ts b/ui/src/ui/app-settings.ts index 63391635d..6b170d624 100644 --- a/ui/src/ui/app-settings.ts +++ b/ui/src/ui/app-settings.ts @@ -88,6 +88,8 @@ export function applySettingsFromUrl(host: SettingsHost) { const session = sessionRaw.trim(); if (session) { host.sessionKey = session; + // Mark that this session was explicitly set from URL to prevent override by defaults + (host as { sessionFromUrl?: boolean }).sessionFromUrl = true; applySettings(host, { ...host.settings, sessionKey: session,