You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tray icon appeared as a black square in the menu bar
Or icon was completely invisible
Or icon showed with a dark background instead of transparency
Root Causes (Three Hidden Traps)
JPEG disguised as PNG: AI-generated icons from Antigravity/Gemini output JPEG image data with .png extension - the files claim to be PNG but contain JPEG data with baked-in dark backgrounds
Checkered background illusion: Image viewers show checkered patterns for "transparency" but the actual dark background was baked into the image data
Palette-based PNG format: PNG files using PaletteAlpha format fail to decode correctly in Tauri - requires TrueColorAlpha format
Inverted alpha channel: Initial ImageMagick brightness-to-alpha conversion was inverted - dark pixels became opaque while white lines became transparent (alpha mean 2.3/255, nearly invisible)
Rust png crate limitation: The png crate cannot automatically convert palette-based PNG to RGBA format
Generated: 2026-01-04 by 10 parallel research agents
Executive Summary
Voice Tray v2 is a Tauri 2.0 macOS menu bar app that provides centralized text-to-speech for Claude Code. It was spun off from Nat-s-Agents on 2026-01-04 (1.7GB → 11MB) after graduating from the incubation system.
Timeline
Date
Event
Jan 2, 2026
v1 complete (HTTP only) in ψ/incubate/voice-tray/
Jan 2, 2026
v2 started (MQTT backend)
Jan 3, 2026
Dynamic lips icon + overnight bug fixes
Jan 4, 2026
Spun off to own repo (laris-co/voice-tray-v2)
Architecture
Claude Code Hooks
↓
voice-tray-notify.sh (HTTP) or voice-tray-mqtt-notify.sh (MQTT)
↓
Voice Tray v2 (Tauri app, port 37779)
↓
macOS `say -v [voice] -r [rate]`
↓
Timeline UI + Audio Output
Tech Stack
Component
Technology
Framework
Tauri 2.0 (Rust + WebView)
HTTP Server
Axum 0.7
MQTT Client
rumqttc 0.24
Async Runtime
Tokio
Frontend
Vanilla HTML/CSS/JS
Voice
macOS say command
Icons
PNG32 via ImageMagick
Features
Dual Input: HTTP POST /speak + MQTT voice/speak topic