From ab9a8f8379ed30e073bd783b15ec6e6ca68b92f9 Mon Sep 17 00:00:00 2001 From: "flamingo[bot]" <277372822+flamingo[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2026 05:15:57 +0000 Subject: [PATCH 1/2] fix(OPENFRAM-001-2): 4 review findings across 2 files --- src/app/(app)/knowledge-base/components/knowledge-base-body.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/(app)/knowledge-base/components/knowledge-base-body.tsx b/src/app/(app)/knowledge-base/components/knowledge-base-body.tsx index 8d99b486..4c8ab08b 100644 --- a/src/app/(app)/knowledge-base/components/knowledge-base-body.tsx +++ b/src/app/(app)/knowledge-base/components/knowledge-base-body.tsx @@ -79,7 +79,7 @@ function buildActions( onNewFolder: () => void, emphasizeAddArticle = false, ): PageActionButton[] { - const newArticleHref = parentId ? `/knowledge-base/new?folderId=${parentId}` : '/knowledge-base/new'; + const newArticleHref = parentId ? routes.knowledgeBase.new(parentId) : routes.knowledgeBase.new(); const actions: PageActionButton[] = [ { label: 'New Folder', From 692f769f509ad8cf53a18699201b5ae5add61ceb Mon Sep 17 00:00:00 2001 From: "flamingo[bot]" <277372822+flamingo[bot]@users.noreply.github.com> Date: Mon, 14 Sep 2026 05:15:58 +0000 Subject: [PATCH 2/2] fix(OPENFRAM-001-2): 4 review findings across 2 files --- .../(app)/logs-page/components/logs-table.tsx | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/src/app/(app)/logs-page/components/logs-table.tsx b/src/app/(app)/logs-page/components/logs-table.tsx index 79fc3636..8306a119 100644 --- a/src/app/(app)/logs-page/components/logs-table.tsx +++ b/src/app/(app)/logs-page/components/logs-table.tsx @@ -211,6 +211,33 @@ interface LogsTableContentProps { onMobileFilterClose: () => void; } +/** + * Builds the internal `/log-details` navigation URL for a log row. + * + * NOTE: kept as a local, explicit query-string builder rather than routed + * through a centralized registry entry, because no `logs`/`logDetails` entry + * currently exists in the routes registry to reuse without inventing its + * shape. Centralizing this path-building here (a single named helper) at + * least removes the inline duplication risk at the call site; migrating to + * a shared `routes.ts` entry should be a follow-up once that entry exists. + */ +function buildLogDetailsPath(params: { + id: string; + ingestDay: string; + toolType: string; + eventType: string; + timestamp?: string | null; +}): string { + const searchParams = new URLSearchParams({ + id: params.id, + ingestDay: params.ingestDay, + toolType: params.toolType, + eventType: params.eventType, + timestamp: params.timestamp || '', + }); + return `/log-details?${searchParams.toString()}`; +} + // ---------------------------------------------------------------- // Inner content — uses Relay hooks, must be inside Suspense // ---------------------------------------------------------------- @@ -343,7 +370,7 @@ function LogsTableContent({ ? ('grey' as const) : log.severity === 'CRITICAL' ? ('critical' as const) - : ('success' as const), + : ('grey' as const), }, source: { name: toToolLabel(log.toolType), @@ -363,7 +390,13 @@ function LogsTableContent({ const getLogDetailsUrl = useCallback((log: UiLogEntry): string => { const original = log.originalLogEntry; const id = log.id || log.logId; - return `/log-details?id=${id}&ingestDay=${original.ingestDay}&toolType=${original.toolType}&eventType=${original.eventType}×tamp=${encodeURIComponent(original.timestamp || '')}`; + return buildLogDetailsPath({ + id, + ingestDay: original.ingestDay, + toolType: original.toolType, + eventType: original.eventType, + timestamp: original.timestamp, + }); }, []); const columns = useMemo[]>(