Commit graph

18 commits

Author SHA1 Message Date
Carsten Abele
89b1c12d58 feat: auto-stop on silence, fix transcription hangs
- Auto-stop recording after 20 seconds of continuous silence
  (RMS-based silence detection in AudioCapture)
- Add WebSocket ping every 10s to keep connection alive
- Auto-reconnect if no events received for 30s (stale connection)
- Add diagnostic logging for all event types to help debug issues

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 13:02:21 +02:00
Carsten Abele
8b56202e90 Revert "feat: add usage cost display in menu bar dropdown"
This reverts commit 3c2cf277bb.
2026-04-07 21:41:14 +02:00
Carsten Abele
3c2cf277bb feat: add usage cost display in menu bar dropdown
Shows session and cumulative audio duration and cost ($0.006/min)
from the transcription.done event's usage.prompt_audio_seconds field.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 21:38:49 +02:00
Carsten Abele
b57bec4273 fix: WebSocket connection, global shortcut, and accessibility
- Add model query param to WebSocket URL (was causing handshake failure)
- Suppress "connection lost" error on intentional disconnect
- Fix shortcut recording with NSEvent local monitor
- Add proper keycode-to-string mapping for shortcut display
- Move app lifecycle to NSApplicationDelegate for reliable window management
- Prompt for Accessibility permission on first launch
- Add build-app.sh for proper .app bundle creation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 20:20:12 +02:00
Carsten Abele
602f97253c feat: wire all components into app entry with menu bar, shortcut, and windows 2026-04-07 19:44:07 +02:00
Carsten Abele
1c9b44ab6b feat: add MenuBarView with start/stop, settings, and error display 2026-04-07 19:43:28 +02:00
Carsten Abele
dbe3294201 feat: add SettingsView with API key, shortcut, mode, and latency 2026-04-07 19:43:14 +02:00
Carsten Abele
b26995b15b feat: add floating transcription panel with auto-scroll and copy 2026-04-07 19:42:57 +02:00
Carsten Abele
285b833ba9 feat: add TranscriptionManager orchestrating audio, WS, and output 2026-04-07 19:42:41 +02:00
Carsten Abele
99b091abc8 chore: add .gitignore, remove .build from tracking 2026-04-07 19:41:13 +02:00
Carsten Abele
69f2bbe52e feat: add configurable global keyboard shortcut 2026-04-07 19:40:19 +02:00
Carsten Abele
d6a6d24054 feat: add CursorInjector with CGEvent keystroke simulation 2026-04-07 19:40:17 +02:00
Carsten Abele
295cd5a500 feat: add TranscriptionLogger for append-only session log 2026-04-07 19:40:14 +02:00
Carsten Abele
9ec7b94345 feat: add AppSettings with API key, shortcut, output mode, delay 2026-04-07 19:39:48 +02:00
Carsten Abele
186b6a0a7e feat: add AudioCapture with AVAudioEngine mic tap and PCM conversion 2026-04-07 19:39:16 +02:00
Carsten Abele
590b0366d3 feat: add Voxtral WebSocket client with connect/send/receive 2026-04-07 19:38:56 +02:00
Carsten Abele
e5395017c2 feat: add Voxtral WebSocket message types and parser 2026-04-07 19:38:38 +02:00
Carsten Abele
4b1cae1b5f chore: scaffold MyVoxtral macOS menu bar app 2026-04-07 19:15:49 +02:00