🔧 Kargo v1.10.4 brings a focused set of bug fixes, performance improvements, and a meaningful new enhancement to controller observability.
🐛 Bug Fixes
-
Login failures for users with diacritics in their name (#6189): Users whose OIDC
familyNamecontained accented characters (e.g. umlauts, diacritics) could be silently
logged out. JWTs use base64URL encoding, not standard base64 — certain byte sequences
were failing to decode. The UI now correctly uses base64URL for JWT parsing. -
ForeignFieldErroron Warehouse watch events in the UI (#6209): The UI was applying a
redundant transformation to Warehouse subscription data in watch stream handlers, causing a
ForeignFieldErroron deserialization. Removing the duplicate step resolves the error. -
Freight clone missing artifacts in the assembly UI (#6246): When cloning an existing piece of
Freight to assemble a new one, artifacts that had aged out of the Warehouse's
discoveredArtifactsrolling window were not shown as selectable options. The assembly UI now
ensures any artifacts from the source Freight that are absent from discovered results are
included, so users can always select the original versions. -
Freight timeline scroll on right caret click (#6269): The freight timeline now reliably
scrolls when the right caret is clicked.
⚡ Performance Improvements
-
Management controller RBAC efficiency (#6194, #6210): The project and service account
management controllers were performing unnecessary RBAC writes on every reconciliation.
Two improvements address this: switching from aCreate → AlreadyExists → Updatepattern
to server-side apply (eliminating a high volume of 409 errors in clusters with many
projects), and skipping RBAC re-ensures when nothing has changed. Together these
significantly reduce API server load. -
UI reduces backend payload with warehouse filtering (#6161): The UI now passes active
warehouse filters to the backend when querying Freight and Stages, so the server-side filter
applies to the initial data fetch rather than filtering client-side. Live watchers are also
scoped to the active warehouse filter, reducing unnecessary data over watch streams.
✨ Enhancements
-
Controller heartbeats and liveness in the UI (#6184): Kargo controllers now emit
periodic heartbeats via KubernetesLeaseobjects (renewed every 10 seconds and deleted
on graceful shutdown). A newGET /v1beta1/system/controller-heartbeatsendpoint exposes
the liveness state of all controllers. The UI uses this when loading the pipeline DAG: if a
Stage's assigned controller has a stale or missing heartbeat, the Stage's synthesized phase
is shown asFailedwith a tooltip explaining that its controller is not responding. -
Pagination shown on single-page stage list (#6198): Pagination controls now appear
consistently in the stage list view, even when all stages fit on a single page.
💙 Special Thanks
A warm welcome to first-time contributor @anaplan-kh, who tracked down and fixed the JWT
base64URL issue that was silently logging out users with diacritics in their name!
Full Changelog: v1.10.3...v1.10.4