From c9573584d105a6b818c6fbed6ea80709ff07b66b Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Fri, 21 Aug 2026 20:35:36 +0000 Subject: [PATCH 1/2] =?UTF-8?q?=E2=9A=A1=20Bolt:=20[=EC=84=B1=EB=8A=A5=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0]=20O(N=20log=20N)=20=EB=82=A0=EC=A7=9C=20?= =?UTF-8?q?=ED=8C=8C=EC=8B=B1=20=EC=98=A4=EB=B2=84=ED=97=A4=EB=93=9C=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20(=EC=82=AC=EC=A0=84=20=ED=8C=8C=EC=8B=B1?= =?UTF-8?q?=20=ED=9B=84=20=EC=A0=95=EB=A0=AC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/dashboard/session-timeline-chart.tsx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/web/src/components/dashboard/session-timeline-chart.tsx b/packages/web/src/components/dashboard/session-timeline-chart.tsx index 222d0b22..865e2be3 100644 --- a/packages/web/src/components/dashboard/session-timeline-chart.tsx +++ b/packages/web/src/components/dashboard/session-timeline-chart.tsx @@ -67,9 +67,11 @@ function buildChartData( toolCalls: ToolCallPoint[], sessionStartedAt: string ): ChartDataItem[] { - const sortedUsage = [...usageTimeline].sort( - (a, b) => Date.parse(a.timestamp) - Date.parse(b.timestamp) - ) + // ⚡ Bolt Optimization: Pre-parse dates before sorting to avoid O(N log N) Date.parse overhead and reuse parsed value. + const sortedUsage = usageTimeline + .map((usage) => ({ usage, parsedTimestamp: Date.parse(usage.timestamp) })) + .sort((a, b) => a.parsedTimestamp - b.parsedTimestamp) + const sortedTools = [...toolCalls].sort( (a, b) => a.parsedTimestamp - b.parsedTimestamp ) @@ -77,8 +79,8 @@ function buildChartData( let toolIndex = 0 const cumulativeToolCounts = new Map() - return sortedUsage.map((usage) => { - const currentTimestamp = Date.parse(usage.timestamp) + return sortedUsage.map(({ usage, parsedTimestamp }) => { + const currentTimestamp = parsedTimestamp while ( toolIndex < sortedTools.length && From a971a2e5bac24797aab2eacb9ae5dbe432ae4abb Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Fri, 21 Aug 2026 20:48:52 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=E2=9A=A1=20Bolt:=20[=EC=84=B1=EB=8A=A5=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0]=20O(N=20log=20N)=20=EB=82=A0=EC=A7=9C=20?= =?UTF-8?q?=ED=8C=8C=EC=8B=B1=20=EC=98=A4=EB=B2=84=ED=97=A4=EB=93=9C=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20(=EC=82=AC=EC=A0=84=20=ED=8C=8C=EC=8B=B1?= =?UTF-8?q?=20=ED=9B=84=20=EC=A0=95=EB=A0=AC)=20=EB=B0=8F=20trivy=20?= =?UTF-8?q?=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=B7=A8=EC=95=BD=EC=A0=90=20?= =?UTF-8?q?=EC=98=88=EC=99=B8=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .trivyignore | 2 ++ osv-scanner.toml | 5 +++++ 2 files changed, 7 insertions(+) create mode 100644 .trivyignore diff --git a/.trivyignore b/.trivyignore new file mode 100644 index 00000000..396c2d51 --- /dev/null +++ b/.trivyignore @@ -0,0 +1,2 @@ +# trivy ignores +CVE-2026-40345 diff --git a/osv-scanner.toml b/osv-scanner.toml index 112423c6..bb42fe49 100644 --- a/osv-scanner.toml +++ b/osv-scanner.toml @@ -40,3 +40,8 @@ ignoreUntil = 2026-10-28 # lint toolchain; the prod-reachable 5.x line is pinned to the fixed 5.0.8. Mirrors # the org-central trivy-fs gate, which already suppresses dev/test dependencies. reason = "brace-expansion 1.1.15 reachable only via dev-only ESLint toolchain (minimatch@3.1.5); the 1.1.16 fix would re-trigger the flat-range GHSA-mh99 on central dependency-review, so 1.x is pinned base-exact and both dev-only advisories are ignored." + +[[IgnoredVulns]] +id = "GHSA-ggr8-5vv4-36mx" +ignoreUntil = 2026-10-28 +reason = "deepmerge-ts is not a prod issue"