blitztext-app-linux/linux/CHANGELOG.md
mARTin-B78 83d4143e83 Add Blitztext for Linux v1.0.0 — native dictation tool
The upstream app is macOS-only (Swift/SwiftUI, CoreML/WhisperKit) and can't
run on Linux or in a container. This adds a native host tool under linux/ that
reproduces the workflow: focus any text field, press a hotkey, speak, and the
optionally-rewritten text is typed into that field.

- Engine: pynput global hotkeys → mic record → local faster-whisper →
  optional OpenAI-compatible rewrite → xdotool typing into the focused window
- Frontends: system tray (AppIndicator, default), tkinter control panel,
  and headless modes
- Config-driven workflows in ~/.config/blitztext/config.toml with per-workflow
  prompt/model/temperature overrides
- Packaging: install.sh, requirements.txt, systemd user unit
- Targets X11; local transcription runs CPU int8 on this arm64 host

See linux/CHANGELOG.md and linux/README.md for details.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 22:44:28 +02:00

2.8 KiB

Changelog

All notable changes to Blitztext for Linux (the native dictation tool in linux/) are documented here. The format follows Keep a Changelog, and this project adheres to Semantic Versioning.

The version is defined in blitztext/__init__.py.

Unreleased

1.0.0 - 2026-06-03

First release of the Linux port. The upstream project is a macOS-only menu-bar app (Swift/SwiftUI, CoreML/WhisperKit) that cannot run on Linux or in a container; this is a native host tool that reproduces the workflow — focus any text field, press a hotkey, speak, and the (optionally rewritten) text is typed into that field.

Added

  • Native dictation engine (daemon.py): global hotkeys via pynput, each hotkey toggles record → transcribe → optional rewrite → deliver.
  • Local transcription via faster-whisper (transcribe.py); device="auto" tries CUDA and falls back to CPU int8 (CPU-only on this arm64 host).
  • Microphone recording (recorder.py) through pw-record / parecord / arecord — 16 kHz mono WAV, no Python audio bindings required.
  • Optional LLM rewrite (rewrite.py) against any OpenAI-compatible endpoint (OpenAI, or a local vLLM / llama-swap), configurable per workflow.
  • Typing into the focused window via xdotool (paste.py): type directly or paste through the clipboard; re-activates the target window first.
  • Configurable workflows (config.py) in ~/.config/blitztext/config.toml, with five defaults (Transcribe, Nicer email, Improve text, Calm down, Add emojis), per-workflow prompt/model/temperature overrides, and a TOML writer.
  • Control-panel window (gui.py, tkinter): workflow rows with monogram avatars, hotkey badges, per-row Record buttons, a live status dot, and a Settings window that edits config and can Save & Restart.
  • System-tray mode (tray.py, AppIndicator): macOS-menu-bar-style status icon with a menu to trigger each workflow, Show panel, Settings…, and Quit; shares one daemon/model/hotkey set with the window. Falls back to the window with an install hint when PyGObject is absent.
  • CLI (__main__.py): tray (default), gui, run, transcribe, config-path, and --version.
  • Packaging: install.sh (venv with --system-site-packages), requirements.txt, and a blitztext.service systemd user unit.

Notes

  • Targets an X11 session (uses xdotool); Wayland would need ydotool/wtype.
  • System tray requires a one-time sudo apt install python3-gi (the GTK / AppIndicator typelibs and GNOME ubuntu-appindicators extension are already present on the target host).