Skip to content

feat: animated waveform menu bar icon#11

Merged
pasrom merged 3 commits intomainfrom
feat/badge-menu-bar-icon
Mar 14, 2026
Merged

feat: animated waveform menu bar icon#11
pasrom merged 3 commits intomainfrom
feat/badge-menu-bar-icon

Conversation

@pasrom
Copy link
Copy Markdown
Owner

@pasrom pasrom commented Mar 14, 2026

Summary

  • Add MenuBarIcon compositor that draws an animated waveform as the menu bar icon (replaces per-state SF Symbol swapping)
  • Four distinct animations reflecting the pipeline stage:
    • Recording: bars bounce like live audio
    • Transcribing: bars morph into horizontal text lines (audio → text)
    • Diarizing: bars split into two speaker groups
    • Protocol generation: text lines appear sequentially
  • Refactor MeetingTranscriberApp to use BadgeKind enum + MenuBarIcon.image(badge:animationFrame:) instead of currentStateIcon
  • Add animation GIFs to README for documentation

Test plan

  • All 434 tests pass (swift test)
  • Build succeeds (swift build -c release)
  • Manual: launch app, verify static waveform icon in menu bar
  • Manual: start recording, verify bouncing animation
  • Manual: stop recording, verify transcribing morph animation
  • Manual: verify diarizing split animation during speaker recognition
  • Manual: verify protocol lines animation during generation
  • Manual: verify icon returns to static waveform after completion

pasrom added 3 commits March 14, 2026 14:33
BadgeKind enum maps app states to visual modes. MenuBarIcon draws a
monochrome 18x18pt waveform as template image with four animations:
- recording: bars bounce like live audio
- transcribing: bars morph into horizontal text lines (audio → text)
- diarizing: bars split into two speaker groups
- processing: text lines appear sequentially (protocol being written)

Shared layout constants and helper functions keep the drawing code DRY.
Replace currentStateIcon (swapped entire SF Symbol per state) with
currentBadge (BadgeKind) + MenuBarIcon.image(badge:animationFrame:).
The waveform icon stays constant; animations indicate the current
pipeline stage. Timer drives animation at 0.4s intervals, guarded
to only update state when badge is animated.
@pasrom pasrom merged commit b345b08 into main Mar 14, 2026
1 check passed
@pasrom pasrom deleted the feat/badge-menu-bar-icon branch March 14, 2026 14:05
@pasrom pasrom added the enhancement New feature or request label Mar 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant