From 35785d3a0e6db090af9ec7dac8da9f5f81945b0c Mon Sep 17 00:00:00 2001 From: Patrick Buckley Date: Sun, 15 Mar 2026 21:53:07 -0700 Subject: [PATCH] fix: address round 2 Copilot feedback - Pass table_name to op.drop_index in migration 019 downgrade for dialect portability - Fix dedup comment accuracy (first occurrence wins, not highest version) - Re-render registry cards on install failure to reset stuck "Installing..." button state --- turnstone/console/server.py | 4 ++-- turnstone/console/static/admin.js | 2 ++ .../core/storage/migrations/versions/019_mcp_registry.py | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/turnstone/console/server.py b/turnstone/console/server.py index f6368ae8..2fdb7ca1 100644 --- a/turnstone/console/server.py +++ b/turnstone/console/server.py @@ -3190,8 +3190,8 @@ async def admin_registry_search(request: Request) -> JSONResponse: except MCPRegistryError as exc: return JSONResponse({"error": f"Registry error: {exc}"}, status_code=502) - # Deduplicate: keep only isLatest entries, then by name (highest version) - # Skip servers with no install source (no remotes and no packages) + # Deduplicate: keep only isLatest entries, first occurrence per name wins. + # Skip servers with no install source (no remotes and no packages). seen: dict[str, RegistryServer] = {} for srv in result.servers: if srv.meta and not srv.meta.is_latest: diff --git a/turnstone/console/static/admin.js b/turnstone/console/static/admin.js index 15c8fdc8..97053e3d 100644 --- a/turnstone/console/static/admin.js +++ b/turnstone/console/static/admin.js @@ -3826,6 +3826,8 @@ function _doRegistryInstall( errEl.style.display = ""; } else { showToast("Install failed: " + e.message); + // Re-render to reset card button states + _renderRegistryResults(); } }) .finally(function () { diff --git a/turnstone/core/storage/migrations/versions/019_mcp_registry.py b/turnstone/core/storage/migrations/versions/019_mcp_registry.py index 446ed02a..513f1515 100644 --- a/turnstone/core/storage/migrations/versions/019_mcp_registry.py +++ b/turnstone/core/storage/migrations/versions/019_mcp_registry.py @@ -31,7 +31,7 @@ def upgrade() -> None: def downgrade() -> None: - op.drop_index("idx_mcp_servers_registry_name") + op.drop_index("idx_mcp_servers_registry_name", table_name="mcp_servers") op.drop_column("mcp_servers", "registry_meta") op.drop_column("mcp_servers", "registry_version") op.drop_column("mcp_servers", "registry_name")