From e59bad9d70a5b9b2506241b352b5e49b686884ac Mon Sep 17 00:00:00 2001 From: James Perkins Date: Tue, 24 Feb 2026 07:26:39 -0500 Subject: [PATCH 1/3] Restore filtering on logs Restores filtering on the logs. --- .../logs-filters/components/paths-filter.tsx | 11 ++++++++--- .../(app)/[workspaceSlug]/logs/hooks/use-filters.ts | 7 ++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/web/apps/dashboard/app/(app)/[workspaceSlug]/logs/components/controls/components/logs-filters/components/paths-filter.tsx b/web/apps/dashboard/app/(app)/[workspaceSlug]/logs/components/controls/components/logs-filters/components/paths-filter.tsx index 9d2e0b7429..1e28bf2176 100644 --- a/web/apps/dashboard/app/(app)/[workspaceSlug]/logs/components/controls/components/logs-filters/components/paths-filter.tsx +++ b/web/apps/dashboard/app/(app)/[workspaceSlug]/logs/components/controls/components/logs-filters/components/paths-filter.tsx @@ -1,10 +1,15 @@ import { useFilters } from "@/app/(app)/[workspaceSlug]/logs/hooks/use-filters"; import { FilterOperatorInput } from "@/components/logs/filter-operator-input"; +import { logsFilterFieldConfig } from "@/lib/schemas/logs.filter.schema"; export const PathsFilter = () => { const { filters, updateFilters } = useFilters(); - const options = [{ id: "contains" as const, label: "contains" }]; + const pathOperators = logsFilterFieldConfig.paths.operators; + const options = pathOperators.map((op) => ({ + id: op, + label: op, + })); const activePathFilter = filters.find((f) => f.field === "paths"); @@ -14,14 +19,14 @@ export const PathsFilter = () => { options={options} defaultOption={activePathFilter?.operator} defaultText={activePathFilter?.value as string} - onApply={(_, text) => { + onApply={(id, text) => { const activeFiltersWithoutPaths = filters.filter((f) => f.field !== "paths"); updateFilters([ ...activeFiltersWithoutPaths, { field: "paths", id: crypto.randomUUID(), - operator: "contains", + operator: id, value: text, }, ]); diff --git a/web/apps/dashboard/app/(app)/[workspaceSlug]/logs/hooks/use-filters.ts b/web/apps/dashboard/app/(app)/[workspaceSlug]/logs/hooks/use-filters.ts index 7f8d722706..8135103b2c 100644 --- a/web/apps/dashboard/app/(app)/[workspaceSlug]/logs/hooks/use-filters.ts +++ b/web/apps/dashboard/app/(app)/[workspaceSlug]/logs/hooks/use-filters.ts @@ -13,7 +13,12 @@ import { import { parseAsInteger, useQueryStates } from "nuqs"; import { useCallback, useMemo } from "react"; -const parseAsFilterValArray = parseAsFilterValueArray(["is", "contains"]); +const parseAsFilterValArray = parseAsFilterValueArray([ + "is", + "contains", + "startsWith", + "endsWith", +]); export const queryParamsPayload = { requestId: parseAsFilterValArray, host: parseAsFilterValArray, From 7fe8860b1a5d9d63633d94796c4c996260c1a9c2 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Tue, 24 Feb 2026 12:33:53 +0000 Subject: [PATCH 2/3] [autofix.ci] apply automated fixes --- pkg/cluster/bridge.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/cluster/bridge.go b/pkg/cluster/bridge.go index eadcbd29df..f0978f91e2 100644 --- a/pkg/cluster/bridge.go +++ b/pkg/cluster/bridge.go @@ -107,8 +107,8 @@ func (c *gossipCluster) promoteToBridge() { c.mu.Lock() if c.closing.Load() { c.mu.Unlock() - wanList.Leave(5 * time.Second) //nolint:errcheck - wanList.Shutdown() //nolint:errcheck + wanList.Leave(5 * time.Second) //nolint:errcheck + wanList.Shutdown() //nolint:errcheck return } From 5475a0c19cdd8f2bcda59501945e47a38ab8f66d Mon Sep 17 00:00:00 2001 From: James Perkins Date: Tue, 24 Feb 2026 07:56:37 -0500 Subject: [PATCH 3/3] fmt --- pkg/cluster/bridge.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/cluster/bridge.go b/pkg/cluster/bridge.go index eadcbd29df..f0978f91e2 100644 --- a/pkg/cluster/bridge.go +++ b/pkg/cluster/bridge.go @@ -107,8 +107,8 @@ func (c *gossipCluster) promoteToBridge() { c.mu.Lock() if c.closing.Load() { c.mu.Unlock() - wanList.Leave(5 * time.Second) //nolint:errcheck - wanList.Shutdown() //nolint:errcheck + wanList.Leave(5 * time.Second) //nolint:errcheck + wanList.Shutdown() //nolint:errcheck return }