Files
James MaesandClaude Opus 4.7 fba113e792 align with VisionPOC: visible main window + LogStream + live status
Wholesale UX upgrade modeled on VisionPOC's pattern so debugging
'why didn't it hear me' actually has visible answers.

NEW: LogStream (ring buffer + stdout + /tmp/voicepoc.log mirror)
- Sources/VoicePOC/Logging/LogStream.swift
- Sources/VoicePOC/Logging/LogStreamView.swift
- Direct port of VisionPOC's pattern. Per-source filter (APP / AUDIO /
  WAKE / STT / VAD / LLM / TTS / HUD / STATE / PERF), per-level filter,
  auto-scroll, pause, clear. Polled at 100ms; only re-renders on
  version bump.

NEW: Visible main window — JarvisMainWindowController
- Sources/VoicePOC/HUD/JarvisMainWindowController.swift
- Two-pane: HUD orb on the left, live diagnostic status panel on right
- Status panel: state badge, RMS meter, VAD probability meter,
  last user transcript, streaming JARVIS reply with chunk count
- Sources/VoicePOC/HUD/JarvisStatusView.swift

NEW: LogStreamWindowController + menu integration
- View → Log Stream  (⌘L)
- Conversation → Toggle Conversation
- App is now .regular activation policy (Dock icon, real window)
  instead of LSUIElement so the user has a real visible UI

ConversationCoordinator instrumentation:
- Per-buffer RMS pushed to HUD state via onRMS observer
- Per-frame VAD probability pushed via onVAD observer
- Final transcript pushed via onTranscript
- Streaming LLM tokens pushed via onLLMProgress (partial text + count)
- Final LLM response pushed via onLLMResponse
- Every state transition and subsystem event also logged to LogStream
  with a clear source tag

AppDelegate:
- Bootstraps LogStream file mirror on launch
- Builds & shows main window before async init
- Wires all coordinator observers to mutate hudState on @MainActor
- 4 Hz state mirror keeps HUD mode in sync with coordinator
- Top menu: App / Conversation / View / Window

JarvisHUDState gains: micRMS, vadProbability, streamingTokenCount
for the meters and progress display.

Old terminal/stdin keyboard reading removed — the app has a proper
visible window now.

20 tests still pass. .app builds clean. tail -f /tmp/voicepoc.log
works from any terminal.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:02:56 -05:00
..