blitztext-app-linux/linux/blitztext
mARTin-B78 0d1311ba18 stability: fix GTK thread safety, wakeword hang, freeze diagnostic (v2.0.0)
- daemon: GLib.timeout_add (thinking animation) was called from a background
  thread — NOT thread-safe in PyGObject/GTK3 and the prime suspect for the
  session-level freezes. Fixed via idle_add so timeout_add runs on main thread.
- daemon: add SIGQUIT handler — kill -QUIT <pid> dumps all thread stacks to
  the log so the freeze location can be identified without rebooting.
- daemon: VAD hard-timeout safety net — if LevelMeter fails to open the mic
  (device busy because wakeword pw-record holds it), dictation now auto-stops
  after 30s instead of hanging forever. Wakeword sessions also capped at 60s.
- overlay: coalesce set_level() calls the same way set_text() is coalesced,
  so mic level spikes from 3 simultaneous pw-record streams can't flood the
  GTK main loop either.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 15:29:45 +02:00
..
__init__.py bump version to 1.9.9 2026-06-09 15:10:22 +02:00
__main__.py Add STT + LLM engine presets, rename entry to blitztext.py, macOS app icon 2026-06-04 20:21:03 +02:00
audio.py overlay: drive waveform + silence countdown via pw-record (fix PipeWire); app reports as "Blitztext" not __main__.py; Release 1.7.1 2026-06-08 08:39:37 +02:00
autostart.py gtksettings: align Input tab labels to uniform 175px width; autostart: add 12s delay 2026-06-08 20:00:33 +02:00
benchmark.py Benchmark: add Device column (CPU/GPU/remote); case-sensitive accuracy 2026-06-05 14:12:16 +02:00
blitztext.py Stop notification storms: transient notifications, single instance, no empty-result alerts 2026-06-06 10:42:13 +02:00
caret.py stability + settings: fix AT-SPI session freeze, markdown Manual, bigger emojis (v1.9.6) 2026-06-09 14:20:05 +02:00
config.py presets: per-preset LLM engine selector + fix streaming freeze (v1.9.7) 2026-06-09 14:39:59 +02:00
daemon.py stability: fix GTK thread safety, wakeword hang, freeze diagnostic (v2.0.0) 2026-06-09 15:29:45 +02:00
gtksettings.py presets: per-preset LLM engine selector + fix streaming freeze (v1.9.7) 2026-06-09 14:39:59 +02:00
gtkui.py settings: lazy-build tabs (instant open); move connection dots beside the field; single-instance Settings dialog; Release 1.9.1 2026-06-08 19:30:08 +02:00
inputmode.py Add modifier-key input scheme (whisper-key style) 2026-06-04 20:26:59 +02:00
llm.py llm: catch all exceptions, validate response, show transcription preview (v1.9.9) 2026-06-09 15:02:45 +02:00
logbuffer.py Add Log tab + in-memory log buffer 2026-06-05 09:42:48 +02:00
notify.py Stop notification storms: transient notifications, single instance, no empty-result alerts 2026-06-06 10:42:13 +02:00
overlay.py stability: fix GTK thread safety, wakeword hang, freeze diagnostic (v2.0.0) 2026-06-09 15:29:45 +02:00
paste.py Add Wayland, Tests, CI, and OpenWakeword integration 2026-06-05 17:16:05 +02:00
quality.py dictation: spoken newlines + LLM thinking animation (v1.9.8) 2026-06-09 14:43:15 +02:00
recorder.py Rewrite README; fix fd leak, StopIteration crash, add pip Dependabot 2026-06-05 16:01:31 +02:00
routing.py routing: send-by-voice keyword (types + presses Enter); wakeword benchmark via TTS; Release 1.8.0 2026-06-08 13:17:33 +02:00
sound.py Add custom WAV audio cues for recording start/stop 2026-06-06 09:40:09 +02:00
streaming.py Add realtime streaming and Linux app docs 2026-06-05 15:06:17 +02:00
stt.py Add realtime streaming and Linux app docs 2026-06-05 15:06:17 +02:00
transcribe.py Benchmark: add Device column (CPU/GPU/remote); case-sensitive accuracy 2026-06-05 14:12:16 +02:00
tray.py wakeword: reversible tray pause toggle; document quiet-session fixes 2026-06-06 22:17:50 +02:00
wakeword_bench.py routing: send-by-voice keyword (types + presses Enter); wakeword benchmark via TTS; Release 1.8.0 2026-06-08 13:17:33 +02:00
wakeword.py wakeword: reversible tray pause toggle; document quiet-session fixes 2026-06-06 22:17:50 +02:00