Commit Graph
3 Commits
Author SHA1 Message Date
fkwpandClaude Opus 5.5 2aa7ff6ccc Draw the microphone level without re-rendering
- The level state carries a Behavior, so the state changes only when its kind
  does.
- The meter renders its bars once and an effect draws the level into them.
- The render-counting test now counts every commit, and asserts none while the
  level moves.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-24 11:00:53 +02:00
fkwpandClaude Opus 5.5 c4f0852e2b Keep only comments that give a reason the code can't
- Cut placement, surrounding context, design measurements and decision history
  from comments this branch added, across code, styles, tests and stories.
- Correct one that claimed most Firefox builds can't route audio.
- Drop a comment left duplicated in the footer story.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-23 20:42:22 +02:00
fkwpandClaude Opus 5 c9bfe9df04 Add a microphone level meter
- Draws the level as lit bars, and each failure state as its own message with a
  next action rather than as a meter that has stopped.
- A bar and the space beside it keep one size wherever the meter is drawn; what
  the width decides is how many bars there are. Bars spread to fill would be a
  different shape in every place, and would close into one block where the space
  ran short.
- Announces the level on a fixed scale, so it does not rest on hue or on how
  many bars happened to fit.
- The hook is a bridge and nothing more: the capture belongs to the state layer.
- The capture is held by a component of its own, so a level that does change
  redraws the meter rather than whatever is rendered beside it. A level arrives
  many times a second; held by the menu it would reconcile every device row on
  the way to the bars. A test counts those renders, because nothing else would
  notice the hook moving back.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 14:56:47 +02:00