From d34ad1d07f3126f9dce06b0379bee13fb6b3dec8 Mon Sep 17 00:00:00 2001 From: Abrar74774 Date: Sat, 15 Nov 2025 23:34:26 +0300 Subject: [PATCH 1/2] docs: remove underlines between bandges in README.md --- README.md | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 08648c0a..dcc6865f 100644 --- a/README.md +++ b/README.md @@ -9,18 +9,10 @@

- - GitHub Release - - - MIT License - - - Build Status - - - Umami Demo - + GitHub Release + MIT License + Build Status + Umami Demo

--- @@ -119,18 +111,10 @@ docker compose up --force-recreate -d ## 🛟 Support

- - GitHub - - - Twitter - - - LinkedIn - - - Discord - + GitHub + Twitter + LinkedIn + Discord

[release-shield]: https://img.shields.io/github/release/umami-software/umami.svg From f5b5f159ecd24a440125212444e96d05e7860719 Mon Sep 17 00:00:00 2001 From: Arthur Sepiol Date: Fri, 28 Nov 2025 02:17:16 +0300 Subject: [PATCH 2/2] fix: skip realtime chart animation when data unchanged --- src/components/metrics/RealtimeChart.tsx | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/components/metrics/RealtimeChart.tsx b/src/components/metrics/RealtimeChart.tsx index a71c03c3..ea4046d4 100644 --- a/src/components/metrics/RealtimeChart.tsx +++ b/src/components/metrics/RealtimeChart.tsx @@ -16,6 +16,7 @@ export function RealtimeChart({ data, unit, ...props }: RealtimeChartProps) { const endDate = startOfMinute(new Date()); const startDate = subMinutes(endDate, REALTIME_RANGE); const prevEndDate = useRef(endDate); + const prevData = useRef(null); const chartData = useMemo(() => { if (!data) { @@ -28,14 +29,22 @@ export function RealtimeChart({ data, unit, ...props }: RealtimeChartProps) { }; }, [data, startDate, endDate, unit]); - // Don't animate the bars shifting over because it looks weird const animationDuration = useMemo(() => { + // Don't animate the bars shifting over because it looks weird if (isBefore(prevEndDate.current, endDate)) { prevEndDate.current = endDate; return 0; } + + // Don't animate when data hasn't changed + const serialized = JSON.stringify(chartData); + if (prevData.current === serialized) { + return 0; + } + prevData.current = serialized; + return DEFAULT_ANIMATION_DURATION; - }, [endDate]); + }, [endDate, chartData]); return (