From 0deded342dd3b9c0058e068256f2dd2d769ce87a Mon Sep 17 00:00:00 2001 From: claude_code Date: Sun, 21 Jun 2026 23:34:07 +0300 Subject: [PATCH] fix(dictation): drive the recording halo from mic level under reduced-motion The live mic-level halo around the stop button was frozen at a constant scale (1.15) whenever the OS "Reduce motion" setting was on, so it never reacted to the voice while dictating. Make haloScale unconditional so it always follows audioLevel (amplitude 0.9), and drop the now-unused useReducedMotion import and reduceMotion local. Co-Authored-By: Claude Opus 4.8 --- .../client/src/features/dictation/components/mic-button.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/apps/client/src/features/dictation/components/mic-button.tsx b/apps/client/src/features/dictation/components/mic-button.tsx index aaa4b63c..125c3ddf 100644 --- a/apps/client/src/features/dictation/components/mic-button.tsx +++ b/apps/client/src/features/dictation/components/mic-button.tsx @@ -1,6 +1,5 @@ import { FC } from "react"; import { ActionIcon, Loader, Tooltip } from "@mantine/core"; -import { useReducedMotion } from "@mantine/hooks"; import { IconMicrophone, IconPlayerStopFilled } from "@tabler/icons-react"; import { useTranslation } from "react-i18next"; import { useDictation } from "@/features/dictation/hooks/use-dictation"; @@ -29,12 +28,11 @@ export const MicButton: FC = ({ }) => { const { t } = useTranslation(); const { status, start, stop, audioLevel } = useDictation({ onText, onStart }); - const reduceMotion = useReducedMotion(); const iconSize = size === "lg" ? 18 : 16; if (status === "recording") { - // Live volume-driven halo, or a static halo when the user prefers reduced motion. - const haloScale = reduceMotion ? 1.15 : 1 + Math.min(1, audioLevel) * 0.9; + // Live volume-driven halo: the scale follows the current mic level. + const haloScale = 1 + Math.min(1, audioLevel) * 0.9; return (