From d6ccc5ed178231a454a3eac88cc484fb7ca27752 Mon Sep 17 00:00:00 2001 From: Patrick Buckley Date: Sun, 12 Jul 2026 17:13:34 -0700 Subject: [PATCH] fix(console): show 'per-user' for idle pool MCP servers, not 'connecting' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit oauth_user/oauth_obo servers hold no cluster-level session — they connect per-user on demand — so the admin status pill rendered 'connecting'/'idle', which reads as broken, when zero warm users is the normal resting state. Render 'per-user' for pool-backed servers instead. --- turnstone/console/static/admin.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/turnstone/console/static/admin.js b/turnstone/console/static/admin.js index e5d5100b..590c7a9e 100644 --- a/turnstone/console/static/admin.js +++ b/turnstone/console/static/admin.js @@ -4738,6 +4738,10 @@ function _renderMcpServers(items) { let dotClass = "mcp-status-dot disabled"; let rowClass = "mcp-row-disabled"; let statusText = "disabled"; + // Pool-backed (oauth_user/oauth_obo) servers hold NO cluster-level session — + // they connect per-user on demand — so "connecting"/"idle" reads as broken + // when the resting state (zero warm users) is normal. + const isPool = s.auth_type === "oauth_user" || s.auth_type === "oauth_obo"; if (!s.enabled) { statusText = "disabled"; } else if (anyConnected) { @@ -4748,6 +4752,10 @@ function _renderMcpServers(items) { dotClass = "mcp-status-dot error"; rowClass = "mcp-row-error"; statusText = "error"; + } else if (isPool) { + dotClass = "mcp-status-dot disabled"; + rowClass = "mcp-row-disabled"; + statusText = "per-user"; } else if (s.enabled && s.source !== "config" && nodeIds.length === 0) { dotClass = "mcp-status-dot connecting"; rowClass = "mcp-row-disabled";