The mic button now pulses in real time with mic input so the user has obvious feedback that audio is being picked up.
VoiceState carries a normalized 0..1 amplitude, fed from the existing onAmplitudeChanged subscription (already used for silence detection). A 0.02 change threshold keeps rebuild traffic sane.
VoiceMicButton drops its constant-rate AnimationController and replaces it with AnimatedScale + animated glow driven by the live amplitude. 0.1 floor keeps the button breathing on silence; 120ms ease-out smooths between the 200ms amplitude samples.
All three call sites (chat, briefing, top app bar) pass amplitude through.
Test plan
Enter voice mode on chat — mic button grows and the red halo expands with your voice.
Go silent — button settles to a soft breathing pulse instead of locking rigid.
Exit voice mode — button returns to idle with no lingering transform.
## Summary
The mic button now pulses in real time with mic input so the user has obvious feedback that audio is being picked up.
- `VoiceState` carries a normalized 0..1 amplitude, fed from the existing `onAmplitudeChanged` subscription (already used for silence detection). A 0.02 change threshold keeps rebuild traffic sane.
- `VoiceMicButton` drops its constant-rate `AnimationController` and replaces it with `AnimatedScale` + animated glow driven by the live amplitude. 0.1 floor keeps the button breathing on silence; 120ms ease-out smooths between the 200ms amplitude samples.
- All three call sites (chat, briefing, top app bar) pass amplitude through.
## Test plan
- [ ] Enter voice mode on chat — mic button grows and the red halo expands with your voice.
- [ ] Go silent — button settles to a soft breathing pulse instead of locking rigid.
- [ ] Exit voice mode — button returns to idle with no lingering transform.
This repo is archived. You cannot comment on pull requests.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
The mic button now pulses in real time with mic input so the user has obvious feedback that audio is being picked up.
VoiceStatecarries a normalized 0..1 amplitude, fed from the existingonAmplitudeChangedsubscription (already used for silence detection). A 0.02 change threshold keeps rebuild traffic sane.VoiceMicButtondrops its constant-rateAnimationControllerand replaces it withAnimatedScale+ animated glow driven by the live amplitude. 0.1 floor keeps the button breathing on silence; 120ms ease-out smooths between the 200ms amplitude samples.Test plan