Skip to content

docs(arch): document menu-bar state animations + overlay precedence#293

Merged
pasrom merged 1 commit into
mainfrom
docs/menu-bar-overlays
May 19, 2026
Merged

docs(arch): document menu-bar state animations + overlay precedence#293
pasrom merged 1 commit into
mainfrom
docs/menu-bar-overlays

Conversation

@pasrom
Copy link
Copy Markdown
Owner

@pasrom pasrom commented May 19, 2026

Summary

  • Expands docs/architecture-macos.md with a self-contained walkthrough of every visual state the menu-bar icon can be in — animated primary states (idle / recording / transcribing / diarizing / protocol), permission problem badge, record-only mode badge, and the per-channel asymmetric-silence indicator added in feat(app): per-channel signal indicator #286.
  • Each entry names the BadgeKind.compute(...) input it maps from and the MenuBarIcon.image(...) overlay path that renders it, so the rendering layer is discoverable without grepping.
  • Documents the polling chain that drives the new per-channel tint (10 Hz tick → WatchLoop.activeRecorder.{mic,app}LevelDBFSChannelHealthMonitor state machine) and the hysteresis behaviour that keeps the debounce timer running through natural speech-pause dead-zone dips.
  • Adds an explicit precedence ordering for cases where multiple overlays apply simultaneously: permission > channel-silent > record-only > primary animation.

No code change.

Test plan

  • docs/architecture-macos.md renders cleanly (table, image tags, headings).
  • Section ordering follows the existing flow (Menu Bar Icon section before Audio Pipeline divider).
  • Spot-check the GIF references resolve in GitHub's Markdown preview once pushed.

Expands the architecture doc with a self-contained walkthrough of every
visual state the menu-bar icon can be in, so the rendering layer is
discoverable without grepping for `MenuBarIcon.image(...)`. Covers:

- Animated primary states (idle, recording, transcribing, diarizing,
  protocol) — each tied to the `BadgeKind.compute(...)` input it maps
  to and the `PipelineJob.state` / `WatchLoop.state` that drives it.
- Permission problem badge — red exclamation overlay anchored on the
  primary state, composited by `drawExclamationBadge`.
- Record-only mode badge — persistent red dot for
  `AppSettings.recordOnly == true`.
- Per-channel asymmetric-silence indicator (new in PR #286) — red top
  / bottom half tint driven by `AppState.{mic,app}SilentActive`,
  configurable in Settings → Audio → Per-Channel Indicator. Includes
  the polling-chain summary (10 Hz tick reads
  `WatchLoop.activeRecorder.{mic,app}LevelDBFS` through the
  `ChannelHealthMonitor` state machine) and the hysteresis behaviour
  that prevents natural speech-pause dead-zone dips from resetting
  the debounce timer.
- Explicit precedence ordering when multiple overlays apply
  simultaneously (permission > channel-silent > record-only > primary
  animation).

No code change.
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label May 19, 2026
@pasrom pasrom merged commit 89fd630 into main May 19, 2026
9 checks passed
@pasrom pasrom deleted the docs/menu-bar-overlays branch May 19, 2026 12:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant