Developer Portal

  • Changed

    Full Changelog: https://github.com/giantswarm/backstage/compare/v0.138.2...v0.138.3

  • Fixed

    • (auth-backend-module-gs) Distinguish broker invalid_client from subject_invalid in #1792 by @teemow

    Full Changelog: https://github.com/giantswarm/backstage/compare/v0.138.1...v0.138.2

  • Changed

    Full Changelog: https://github.com/giantswarm/backstage/compare/v0.138.0...v0.138.1

  • Changed

    • AI chat: optimize the muster system prompt. systemPromptMuster.md now front-loads the muster Kubernetes tool contract (management_cluster: <mc>-mcp-kubernetes, podName, resourceType, tailLines), steers workflow discovery to a ranked filter_tools(query="<topic>") for the muster 0.9.0+ discovery tier, and prefers a matching workflow_* over raw x_kubernetes_* tools. Cuts tool-call trial-and-error and tokens on common Kubernetes questions (#1776, #1784). See ./docs/releases/v0.138.0-changelog.md for more information.
  • Fixed

    • CI: cap the release image build to linux/amd64. The devctl-generated config built a multi-arch (amd64+arm64) image, but the arm64 cross-build of the backend’s native modules (isolated-vm, better-sqlite3, keytar) runs under QEMU emulation and silently exceeds the orb’s 20m no-output timeout, which blocked the tag pipeline (and therefore the chart catalog push) on v0.137.1. Every prior release was single-arch amd64 and the management clusters are amd64, so arm64 is unused. See ./docs/releases/v0.137.2-changelog.md for more information.
  • Changed

    • CI: prepare for the devctl-generated CircleCI config. The repo-specific jobs (the Node buildjob that feeds the image build, and the second control-plane-catalog chart push) move to .circleci/custom.yml; the .ats/main.yaml smoke-test config and a renovate-custom.json5 (preserving the repo’s Renovate reviewers, package groups, and schedule) are added so the upcoming generated config.yml/workflows.yml and regenerated renovate.json5 keep the existing behavior. See ./docs/releases/v0.137.1-changelog.md for more information.
  • Changed

    • Auth: make the muster cluster-token broker the single per-cluster access path. Broker-backed installations (those with gs.installations.<name>.clusterTokenAudience) no longer fall back to the per-cluster OAuth popup or the cookie-based /refresh; the connector mints their tokens silently and, when the main Dex session is missing, triggers exactly one main SSO re-login and retries. Per-cluster failures now surface as a typed error with a coarse reason instead of failing silently. The gs auth backend module registers only the main gs.authProvider, so a stray oidc-<mc> provider block can no longer stall startup on an unreachable Dex’s metadata discovery.
    • Clusters: render the clusters list incrementally and non-blocking. Each kubernetes proxy request is now bounded by an AbortController timeout, healthy clusters appear as soon as they resolve instead of waiting on a hung installation, and persistently failing clusters back off with a capped exponential retryDelay.

    Added

    • A persistent cluster-access status element in the sidebar (badge + popover) listing each accessed cluster with its state (healthy / degraded / session-expired) and a human-readable reason, with a “Sign in again” action when the main session expired. See ./docs/releases/v0.137.0-changelog.md for more information.
  • Added

    • Auth: mint per-management-cluster tokens silently through the muster token broker instead of per-cluster OAuth popups. A new authenticated POST /api/auth/cluster-token/:installation backend route exchanges the user’s main Dex ID token for a short-lived cluster token (RFC 8693), cached per user and installation; the kubernetes auth connectors try this silent path before the cookie-based refresh, keeping the legacy popup as fallback for unmigrated clusters. Configured via gs.clusterTokenBroker; installations marked with gs.installations.<name>.clusterTokenAudience disappear from the provider settings page, collapsing it to the single main login.
    • AI chat / muster: forward the main Dex ID token as the MCP bearer token when an MCP server’s authProvider has no dedicated auth.providers entry, enabling single sign-on for muster. Deployments activate this by removing the mcp-muster provider from auth.providers, which also removes the separate PKCE login from the user settings page. See ./docs/releases/v0.136.0-changelog.md for more information.
  • Fixed

    • Muster: fix the Workflows page failing with “tool not found” against real muster servers. The muster aggregator only exposes its meta-tools over MCP, so the workflow proxy now invokes the core workflow tools through the call_tool meta-tool and unwraps its result envelope. See ./docs/releases/v0.135.3-changelog.md for more information.
  • Fixed

    • AI chat: fix chat requests hanging forever when an MCP server is slow or its responses are dropped by the transport. MCP servers now load in parallel with a per-server timeout (15s default, configurable via aiChat.mcp[].timeoutMs); hanging servers degrade gracefully instead of blocking the chat. Also patch @ai-sdk/mcp to treat SSE events without an explicit event: field as message events per the SSE specification, fixing silently dropped responses from MCP servers behind agentgateway. See ./docs/releases/v0.135.2-changelog.md for more information.