Skip to content

mumblr 0.2.0

Choose a tag to compare

@github-actions github-actions released this 06 Sep 19:14

mumblr

Think out loud, get a prompt: speech to markdown in the folder you start it from, with edits by voice through your local Claude Code.

Portable: download mumblr-<version>-win-Portable.zip, unzip anywhere, put the folder on your PATH,
then run mumblr . in the repo you are working in.

Installer: mumblr-<version>-win-Setup.exe installs per user and puts mumblr on your PATH,
so mumblr . works from any folder. Open a new terminal afterwards - a PATH change does not
reach one that is already running. In-app updates need a release feed the app can read; see the
repository if the version button reports that it could not reach one.

Changed in 0.2.0

  • The Prompt button. The tagline promised a prompt and the tool delivered a transcript. The
    second shipped button shapes the dictation into a prompt for a coding agent - the ask first,
    then context, then constraints, then an Open questions section with every gap and
    contradiction as a question. It keeps your words and your language and adds nothing you did
    not say.
  • The raw dictation is always one click away. Everything speech-to-text produces is also
    appended to dictated-<timestamp>.raw.md, which carries the read-only attribute between
    appends so a command's Edit cannot land on it. The Raw button next to Revert puts it back
    into the buffer, whatever the commands did since - snapshotted first, so Revert undoes that
    too.
  • The shipped Grammar command is English, like the prompt sent with every command. Neither
    names a language any more: the rule is that the result is in the language the file is in, and a
    technical term stays in the language you used it in. German dictation comes back German. An
    existing config.json that still holds the shipped text of an earlier version is updated on
    the next start; a prompt you edited yourself is left alone.
  • One click turns the global hotkeys off. The hotkeys work while another window has focus by
    design, so a chord that collides with a game, a screen share or another tool could start a
    recording in the background. The hotkeys button in the status bar unregisters every chord
    and removes the keyboard hook; the buttons keep working, and the state survives a restart.
  • A running recording is visible from the taskbar. The title reads "● Recording - mumblr" and
    the taskbar button flashes whenever the window is not in front, until you come back or stop.
    Tab into the IDE, get absorbed, and the recording no longer runs on unnoticed by the minute.
  • Pick the transcription language in the window. A LANG picker next to the STT mode offers
    auto and the codes from stt.languages (de and en to start with) and applies to the next
    recording and to spoken commands. The status bar shows the pick whenever it is not auto.
  • A hand-edited null anywhere in config.json now means the default instead of a crash on
    start, and the config is written atomically, so two mumblr windows sharing it cannot read a
    half-written file.

Fixed in 0.1.6

  • claude -p runs with the customization layer off (--safe-mode). Until now your own hooks
    fired over the dictation file: a PostToolUse hook that formats or lints edited files would
    reformat a paragraph of spoken German, and an output style would rewrite the summary the log
    shows. The prompt could only ask for that to be ignored; the flag enforces it.
  • A command that changed nothing says so. claude can succeed and still do nothing - ask a
    question, decide there is nothing to change - and the log reported that as "done".
  • The prompt sent with each command was rewritten. It no longer forbids what the tool cannot do
    anyway, and it now says the things nothing else enforces: the command came through
    speech-to-text and may be garbled, there is nobody to ask, and the summary should say what
    changed rather than repeat the request.

Fixed in 0.1.5

  • The installer puts mumblr on your PATH. It did not, and neither did unzipping the
    portable build, so the one command the whole app exists for - mumblr . in a repo folder -
    answered "The term 'mumblr' is not recognized". Uninstalling removes the entry again. Open a new
    terminal after installing.
  • The status line is no longer squeezed out by the hotkey hint next to it, and both carry a
    tooltip with their full text. The window can no longer be resized until the toolbar's right-hand
    controls leave the screen.

Fixed in 0.1.4

  • A key press on the command key while another command was running derailed it. The release
    ended whatever command happened to be active - not the one it started - marking it failed,
    unlocking the editor and resuming dictation underneath a claude call that was still writing to
    the file. A second one could start a second transcription backend on top of the first.
  • A hold shorter than the pause it triggers is no longer swallowed. Stopping the realtime
    backend takes up to five seconds; a quick press and release fell entirely inside that window and
    left the session stuck with the microphone running.
  • Copy is refused while claude is editing the file. It flushed the buffer straight over the
    edit in progress.
  • The prebuilt command button is called Grammar, not "Grammatik". The window is English; the
    command it sends is still German, because the text it edits is. A config.json written by an
    earlier version keeps the old label - rename it there, or delete the entry and let it be
    recreated.
  • The update button says it will restart, and refuses to while a command is running.
  • The command log keeps the effort next to the model, and the batch backend can report an error
    state at all.
  • Closing the window during a recording no longer leaves a websocket open, and running the tests
    no longer creates a folder in your home directory.

Fixed in 0.1.3

  • Dictations are no longer written into the app's own install folder. Started from the start
    menu shortcut, mumblr wrote into the Velopack current directory, which the next update
    replaces wholesale - the file and its WAV would have been deleted by the first update that
    landed. A target inside the application directory now falls back to Documents\mumblr.
  • A rejected transcription survives everything that happens afterwards. Copying, reverting or
    reloading the config mid-recording used to erase the error message, and the stop line then
    reported a clean stop over an empty buffer.
  • A failing command warns instead of reporting in informational grey, and the "Recording resumed."
    message no longer overwrites it.
  • The command log names the model that actually answered, read out of the CLI's own envelope,
    rather than the one the config asked for.
  • The character count follows what you type, not only what mumblr writes.
  • A prebuilt button and the hold key can no longer both start a command in the moment channel 1 is
    being paused - that could run two claude -p processes on one file.
  • A typo in keytermsEncoding falls back to the encoding that works instead of the one that made
    every request fail.

Fixed in 0.1.2

  • Release assets carry their version in the filename.
  • The update check no longer claims to be the latest build when it never managed to ask.

Fixed in 0.1.1

  • Dictation works again. 0.1.0 packed the keyterm list into a single value, which ElevenLabs
    read as one oversized keyterm and refused - every fresh install failed on its very first
    recording. Keyterms now go out as repeated parameters, and a term the API would reject is
    dropped instead of killing the request.
  • A rejected request is no longer invisible: the stop message stopped overwriting the error that
    explained it.
  • The status bar now shows the microphone, the STT backend's actual state, a key-present
    indicator, the character count and the running version.
  • Prebuilt command buttons: the edits you dictate word for word every day are a click, with no
    microphone and no transcription round trip.
  • A blank model or effort in the config can no longer downgrade a command; it falls back to Opus
    at high effort.

What is in this build

  • mumblr . creates dictated-<timestamp>.md in the folder you pass, with the WAV next to it
  • Channel 1: dictation through ElevenLabs Scribe v2, realtime (default) or batch, no_verbatim on,
    auto language detection, user maintained keyterms and dictionary replacements
  • Channel 2: hold the command key, speak an edit ("delete the last sentence", "clean this up"),
    and a local claude -p applies it to the file - with a command log, a snapshot and a revert hotkey
  • Explicit microphone choice with a level meter; mumblr never follows the Windows default device
  • Global hotkeys that work while your IDE has focus

Before the first run

Set your ElevenLabs key as an environment variable - mumblr never reads it from a config file:

setx ELEVENLABS_API_KEY "your-key"

claude must be on your PATH for channel 2.