From 026aea2c8a1953c401ba41fab53dba99ab0f21d6 Mon Sep 17 00:00:00 2001 From: TerrifiedBug Date: Thu, 5 Mar 2026 23:15:32 +0000 Subject: [PATCH 1/5] fix: show save button in VRL snippet form Hide the snippet list when the creation form is open so the Cancel/Create buttons aren't clipped by the container overflow. --- src/components/flow/vrl-snippet-drawer.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/flow/vrl-snippet-drawer.tsx b/src/components/flow/vrl-snippet-drawer.tsx index b81fe4e..4229183 100644 --- a/src/components/flow/vrl-snippet-drawer.tsx +++ b/src/components/flow/vrl-snippet-drawer.tsx @@ -190,7 +190,7 @@ export function VrlSnippetDrawer({ onInsert }: VrlSnippetDrawerProps) { )} - + {!showForm &&
{grouped.size === 0 && (

@@ -256,7 +256,7 @@ export function VrlSnippetDrawer({ onInsert }: VrlSnippetDrawerProps) {

))} -
+
} ); } From 3e08201b3a2202ad78dd51842f046ea0b4e92834 Mon Sep 17 00:00:00 2001 From: TerrifiedBug Date: Thu, 5 Mar 2026 23:17:47 +0000 Subject: [PATCH 2/5] feat: embed dev-SHA version in agent Docker image Use dev- version string in Docker agent builds to match the binary release format, enabling proper version detection in the fleet UI. The image still uses a single rolling 'dev' tag. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4455da0..b208893 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -123,7 +123,7 @@ jobs: if [[ "$GITHUB_REF" == refs/tags/v* ]]; then echo "value=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT" else - echo "value=dev" >> "$GITHUB_OUTPUT" + echo "value=dev-${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT" fi - uses: docker/setup-buildx-action@v3 From fe79158ae1d0ce9f25ca1ddb845be982de6af6ac Mon Sep 17 00:00:00 2001 From: TerrifiedBug Date: Thu, 5 Mar 2026 23:21:13 +0000 Subject: [PATCH 3/5] fix: clamp reduction percentage to zero minimum When sinks retry failed events, eventsOut can exceed eventsIn, producing negative reduction values like -201%. Clamp to 0%. --- src/app/(dashboard)/pipelines/page.tsx | 2 +- src/server/routers/dashboard.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/(dashboard)/pipelines/page.tsx b/src/app/(dashboard)/pipelines/page.tsx index d67e18c..8de1170 100644 --- a/src/app/(dashboard)/pipelines/page.tsx +++ b/src/app/(dashboard)/pipelines/page.tsx @@ -71,7 +71,7 @@ function getReductionPercent(totals: { eventsIn: bigint; eventsOut: bigint }): n const evIn = Number(totals.eventsIn); const evOut = Number(totals.eventsOut); if (evIn === 0) return null; - return (1 - evOut / evIn) * 100; + return Math.max(0, (1 - evOut / evIn) * 100); } function reductionColor(pct: number): string { diff --git a/src/server/routers/dashboard.ts b/src/server/routers/dashboard.ts index 35e0258..8fc05e0 100644 --- a/src/server/routers/dashboard.ts +++ b/src/server/routers/dashboard.ts @@ -42,7 +42,7 @@ export const dashboardRouter = router({ const totalEventsIn = Number(reductionMetrics._sum.eventsIn ?? 0); const totalEventsOut = Number(reductionMetrics._sum.eventsOut ?? 0); const reductionPercent = totalEventsIn > 0 - ? (1 - totalEventsOut / totalEventsIn) * 100 + ? Math.max(0, (1 - totalEventsOut / totalEventsIn) * 100) : null; return { From 2e3c78dd51c5060d91a7f69ae9b85050e620610b Mon Sep 17 00:00:00 2001 From: TerrifiedBug Date: Thu, 5 Mar 2026 23:24:54 +0000 Subject: [PATCH 4/5] fix: navigate to list page when switching environment on detail view When changing environment while viewing a pipeline editor or fleet detail page, redirect to the parent list page to avoid showing stale data from a different environment. --- src/components/environment-selector.tsx | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/components/environment-selector.tsx b/src/components/environment-selector.tsx index e6bc904..4ec0b2c 100644 --- a/src/components/environment-selector.tsx +++ b/src/components/environment-selector.tsx @@ -1,7 +1,8 @@ "use client"; -import { useEffect, useMemo } from "react"; +import { useEffect, useMemo, useCallback } from "react"; import Link from "next/link"; +import { usePathname, useRouter } from "next/navigation"; import { useQuery } from "@tanstack/react-query"; import { useTRPC } from "@/trpc/client"; import { useEnvironmentStore } from "@/stores/environment-store"; @@ -23,6 +24,18 @@ export function EnvironmentSelector() { const { selectedEnvironmentId, setSelectedEnvironmentId, setIsSystemEnvironment } = useEnvironmentStore(); const selectedTeamId = useTeamStore((s) => s.selectedTeamId); + const pathname = usePathname(); + const router = useRouter(); + + // Navigate back to list pages when switching environments from a detail page + const handleEnvironmentChange = useCallback((id: string) => { + setSelectedEnvironmentId(id); + const detailRoutes = ["/pipelines/", "/fleet/"]; + if (detailRoutes.some((route) => pathname.startsWith(route) && pathname !== route)) { + const parentRoute = detailRoutes.find((route) => pathname.startsWith(route)); + if (parentRoute) router.push(parentRoute.replace(/\/$/, "")); + } + }, [setSelectedEnvironmentId, pathname, router]); const envsQuery = useQuery( trpc.environment.list.queryOptions( @@ -79,7 +92,7 @@ export function EnvironmentSelector() { return (