dictabit
What's new

Changelog

Every shipped release of Dictabit, newest first. The in-app auto-updater pulls from the same source.

  1. v0.4.3 — Hotkey reliability + clearer transcription

    • Fixed: the push-to-talk hotkey sometimes only worked while the Dictabit window was in front. The hotkey needs macOS Input Monitoring permission to hear your keys while you're working in other apps — but Dictabit was checking the wrong permission, so it could look "ready" while only firing on top of its own window. Dictabit now checks Input Monitoring directly, asks for it up front, and — if it's missing — the in-app banner takes you straight to the exact System Settings pane to grant it. Once granted, it sticks across future updates.
    • Improved: clearer transcription, fewer misheard words. Recordings are now leveled to a consistent loudness before transcription, so quiet or uneven speech is brought up to an audible level instead of being left too soft for the model to hear. Previously a stray click or the keyboard "thunk" at release could leave your actual speech quiet.
    • Fixed: starting dictation no longer moves your cursor. The floating recording indicator was briefly stealing keyboard focus, which could pull the text cursor out of whatever field you were typing in. It no longer takes focus.

    v0.4.2 — Hotkey toggle fix + better bug reports

    • Toggle-mode hotkey no longer starts and instantly stops. On some Macs a quick flicker of the modifier key (Fn or Ctrl+Shift) right after you tapped to start could be misread as a second tap, flipping the recording straight back off after a fraction of a second. A single tap now reliably starts a recording and keeps it running until you tap again.
    • The hotkey recovers itself if macOS disables it. macOS can temporarily switch off the keyboard listener (for example when a password field grabs the keyboard) — previously that left the push-to-talk hotkey dead until you restarted the app. Dictabit now re-arms the listener automatically, so the hotkey keeps working.
    • Bug reports capture more of what went wrong. "Send feedback" now also records transcription failures, cleanup failures, paste failures, and model-download failures — so a report is actually diagnosable instead of nearly empty. As always, no transcript text or audio is ever included — only error/status info.

    v0.4.1 — Parakeet by default, iPhone-mic fix, clearer setup

    • No more getting stuck on your iPhone's mic. When an iPhone or iPad was nearby, macOS Continuity could offer the phone as a microphone and Dictabit would grab it — then keep trying to record through it even after the phone was gone. Auto mic selection now skips Continuity (iPhone/iPad) devices and always prefers a real mic on your Mac.
    • Local mode now defaults to Parakeet — the faster, recommended on-device engine — instead of Whisper. (Existing installs keep whatever you've selected; this only changes the default for new setups.)
    • Clearer first-run setup. You no longer need a Groq API key to get going — the welcome screen now makes it obvious you can run fully offline, and the "skip the key" option actually sets you up with the free local model instead of quietly leaving you on the cloud provider.

    v0.4.0 — Fix push-to-talk cutoff + in-app feedback

    • Push-to-talk no longer stops listening on its own mid-hold. On some Macs — especially under heavy CPU load, like while the local transcriber was running — the macOS keyboard listener could be disabled by the system and misread as you releasing the hotkey, cutting the recording off early. The listener is now hardened against this (and made passive so the system can't disable it under load), so a recording stays live until you actually let go.
    • New: in-app feedback. A Send feedback card in the About tab — report a bug, share an idea, praise, or ask a question, with an optional note. Reports automatically attach a short diagnostic trail (recent recording events, app/macOS version, mic info) so issues are easier to track down. No transcript text or audio is ever included — metadata only.

    v0.3.9 — Fix: "Unlimited" history cap now sticks

    • Setting the history cap to Unlimited no longer reverts to 200 on restart. The Unlimited setting couldn't be saved (the config format has no way to store "no limit"), so every relaunch silently fell back to the 200-entry default. Unlimited — and every other cap — now persists correctly across restarts.
    • After updating, open the History settings and pick your cap once more; from then on it stays put.

    v0.3.8 — Memory fix: shared HTTP client

    • Fixes a slow memory climb over long-running sessions. Dictabit built a brand-new HTTP client on every transcription, cleanup, and webhook call. Each one allocated its own connection pool + TLS state that macOS never fully reclaimed, so a multi-day session with thousands of dictations could balloon the app's memory footprint into the gigabytes. The HTTP client is now built once and reused for the whole process — memory stays flat no matter how long the app runs. As a bonus, reused connections shave a little latency off each dictation.
    • No change to transcription behavior, timeouts, or the journal flow.

    v0.3.7 — History auto-backup + restore

    • Lowering the history cap no longer silently deletes entries. Previously, dropping the cap from Unlimited → 200 truncated everything beyond entry 200 with no warning and no backup. Now: a confirm dialog tells you exactly how many entries will be dropped, and a snapshot of history.json is saved to ~/Library/Application Support/Dictabit/history-backups/ before the truncation. Same protection for Clear.
    • Restore from backup. New "Show backups (N)" disclosure on the History panel — lists every snapshot (timestamp, entry count, reason) with a one-click Restore button. Restoring takes its own snapshot first so it's reversible.
    • Backups dir auto-rotates: keeps the most recent 5, deletes older ones.
  2. v0.4.2 — Hotkey toggle fix + better bug reports

    • Toggle-mode hotkey no longer starts and instantly stops. On some Macs a quick flicker of the modifier key (Fn or Ctrl+Shift) right after you tapped to start could be misread as a second tap, flipping the recording straight back off after a fraction of a second. A single tap now reliably starts a recording and keeps it running until you tap again.
    • The hotkey recovers itself if macOS disables it. macOS can temporarily switch off the keyboard listener (for example when a password field grabs the keyboard) — previously that left the push-to-talk hotkey dead until you restarted the app. Dictabit now re-arms the listener automatically, so the hotkey keeps working.
    • Bug reports capture more of what went wrong. "Send feedback" now also records transcription failures, cleanup failures, paste failures, and model-download failures — so a report is actually diagnosable instead of nearly empty. As always, no transcript text or audio is ever included — only error/status info.

    v0.4.1 — Parakeet by default, iPhone-mic fix, clearer setup

    • No more getting stuck on your iPhone's mic. When an iPhone or iPad was nearby, macOS Continuity could offer the phone as a microphone and Dictabit would grab it — then keep trying to record through it even after the phone was gone. Auto mic selection now skips Continuity (iPhone/iPad) devices and always prefers a real mic on your Mac.
    • Local mode now defaults to Parakeet — the faster, recommended on-device engine — instead of Whisper. (Existing installs keep whatever you've selected; this only changes the default for new setups.)
    • Clearer first-run setup. You no longer need a Groq API key to get going — the welcome screen now makes it obvious you can run fully offline, and the "skip the key" option actually sets you up with the free local model instead of quietly leaving you on the cloud provider.

    v0.4.0 — Fix push-to-talk cutoff + in-app feedback

    • Push-to-talk no longer stops listening on its own mid-hold. On some Macs — especially under heavy CPU load, like while the local transcriber was running — the macOS keyboard listener could be disabled by the system and misread as you releasing the hotkey, cutting the recording off early. The listener is now hardened against this (and made passive so the system can't disable it under load), so a recording stays live until you actually let go.
    • New: in-app feedback. A Send feedback card in the About tab — report a bug, share an idea, praise, or ask a question, with an optional note. Reports automatically attach a short diagnostic trail (recent recording events, app/macOS version, mic info) so issues are easier to track down. No transcript text or audio is ever included — metadata only.

    v0.3.9 — Fix: "Unlimited" history cap now sticks

    • Setting the history cap to Unlimited no longer reverts to 200 on restart. The Unlimited setting couldn't be saved (the config format has no way to store "no limit"), so every relaunch silently fell back to the 200-entry default. Unlimited — and every other cap — now persists correctly across restarts.
    • After updating, open the History settings and pick your cap once more; from then on it stays put.

    v0.3.8 — Memory fix: shared HTTP client

    • Fixes a slow memory climb over long-running sessions. Dictabit built a brand-new HTTP client on every transcription, cleanup, and webhook call. Each one allocated its own connection pool + TLS state that macOS never fully reclaimed, so a multi-day session with thousands of dictations could balloon the app's memory footprint into the gigabytes. The HTTP client is now built once and reused for the whole process — memory stays flat no matter how long the app runs. As a bonus, reused connections shave a little latency off each dictation.
    • No change to transcription behavior, timeouts, or the journal flow.

    v0.3.7 — History auto-backup + restore

    • Lowering the history cap no longer silently deletes entries. Previously, dropping the cap from Unlimited → 200 truncated everything beyond entry 200 with no warning and no backup. Now: a confirm dialog tells you exactly how many entries will be dropped, and a snapshot of history.json is saved to ~/Library/Application Support/Dictabit/history-backups/ before the truncation. Same protection for Clear.
    • Restore from backup. New "Show backups (N)" disclosure on the History panel — lists every snapshot (timestamp, entry count, reason) with a one-click Restore button. Restoring takes its own snapshot first so it's reversible.
    • Backups dir auto-rotates: keeps the most recent 5, deletes older ones.
  3. v0.4.1 — Parakeet by default, iPhone-mic fix, clearer setup

    • No more getting stuck on your iPhone's mic. When an iPhone or iPad was nearby, macOS Continuity could offer the phone as a microphone and Dictabit would grab it — then keep trying to record through it even after the phone was gone. Auto mic selection now skips Continuity (iPhone/iPad) devices and always prefers a real mic on your Mac.
    • Local mode now defaults to Parakeet — the faster, recommended on-device engine — instead of Whisper. (Existing installs keep whatever you've selected; this only changes the default for new setups.)
    • Clearer first-run setup. You no longer need a Groq API key to get going — the welcome screen now makes it obvious you can run fully offline, and the "skip the key" option actually sets you up with the free local model instead of quietly leaving you on the cloud provider.

    v0.4.0 — Fix push-to-talk cutoff + in-app feedback

    • Push-to-talk no longer stops listening on its own mid-hold. On some Macs — especially under heavy CPU load, like while the local transcriber was running — the macOS keyboard listener could be disabled by the system and misread as you releasing the hotkey, cutting the recording off early. The listener is now hardened against this (and made passive so the system can't disable it under load), so a recording stays live until you actually let go.
    • New: in-app feedback. A Send feedback card in the About tab — report a bug, share an idea, praise, or ask a question, with an optional note. Reports automatically attach a short diagnostic trail (recent recording events, app/macOS version, mic info) so issues are easier to track down. No transcript text or audio is ever included — metadata only.

    v0.3.9 — Fix: "Unlimited" history cap now sticks

    • Setting the history cap to Unlimited no longer reverts to 200 on restart. The Unlimited setting couldn't be saved (the config format has no way to store "no limit"), so every relaunch silently fell back to the 200-entry default. Unlimited — and every other cap — now persists correctly across restarts.
    • After updating, open the History settings and pick your cap once more; from then on it stays put.

    v0.3.8 — Memory fix: shared HTTP client

    • Fixes a slow memory climb over long-running sessions. Dictabit built a brand-new HTTP client on every transcription, cleanup, and webhook call. Each one allocated its own connection pool + TLS state that macOS never fully reclaimed, so a multi-day session with thousands of dictations could balloon the app's memory footprint into the gigabytes. The HTTP client is now built once and reused for the whole process — memory stays flat no matter how long the app runs. As a bonus, reused connections shave a little latency off each dictation.
    • No change to transcription behavior, timeouts, or the journal flow.

    v0.3.7 — History auto-backup + restore

    • Lowering the history cap no longer silently deletes entries. Previously, dropping the cap from Unlimited → 200 truncated everything beyond entry 200 with no warning and no backup. Now: a confirm dialog tells you exactly how many entries will be dropped, and a snapshot of history.json is saved to ~/Library/Application Support/Dictabit/history-backups/ before the truncation. Same protection for Clear.
    • Restore from backup. New "Show backups (N)" disclosure on the History panel — lists every snapshot (timestamp, entry count, reason) with a one-click Restore button. Restoring takes its own snapshot first so it's reversible.
    • Backups dir auto-rotates: keeps the most recent 5, deletes older ones.
  4. v0.4.0 — Fix push-to-talk cutoff + in-app feedback

    • Push-to-talk no longer stops listening on its own mid-hold. On some Macs — especially under heavy CPU load, like while the local transcriber was running — the macOS keyboard listener could be disabled by the system and misread as you releasing the hotkey, cutting the recording off early. The listener is now hardened against this (and made passive so the system can't disable it under load), so a recording stays live until you actually let go.
    • New: in-app feedback. A Send feedback card in the About tab — report a bug, share an idea, praise, or ask a question, with an optional note. Reports automatically attach a short diagnostic trail (recent recording events, app/macOS version, mic info) so issues are easier to track down. No transcript text or audio is ever included — metadata only.

    v0.3.9 — Fix: "Unlimited" history cap now sticks

    • Setting the history cap to Unlimited no longer reverts to 200 on restart. The Unlimited setting couldn't be saved (the config format has no way to store "no limit"), so every relaunch silently fell back to the 200-entry default. Unlimited — and every other cap — now persists correctly across restarts.
    • After updating, open the History settings and pick your cap once more; from then on it stays put.

    v0.3.8 — Memory fix: shared HTTP client

    • Fixes a slow memory climb over long-running sessions. Dictabit built a brand-new HTTP client on every transcription, cleanup, and webhook call. Each one allocated its own connection pool + TLS state that macOS never fully reclaimed, so a multi-day session with thousands of dictations could balloon the app's memory footprint into the gigabytes. The HTTP client is now built once and reused for the whole process — memory stays flat no matter how long the app runs. As a bonus, reused connections shave a little latency off each dictation.
    • No change to transcription behavior, timeouts, or the journal flow.

    v0.3.7 — History auto-backup + restore

    • Lowering the history cap no longer silently deletes entries. Previously, dropping the cap from Unlimited → 200 truncated everything beyond entry 200 with no warning and no backup. Now: a confirm dialog tells you exactly how many entries will be dropped, and a snapshot of history.json is saved to ~/Library/Application Support/Dictabit/history-backups/ before the truncation. Same protection for Clear.
    • Restore from backup. New "Show backups (N)" disclosure on the History panel — lists every snapshot (timestamp, entry count, reason) with a one-click Restore button. Restoring takes its own snapshot first so it's reversible.
    • Backups dir auto-rotates: keeps the most recent 5, deletes older ones.
  5. v0.3.9 — Fix: "Unlimited" history cap now sticks

    • Setting the history cap to Unlimited no longer reverts to 200 on restart. The Unlimited setting couldn't be saved (the config format has no way to store "no limit"), so every relaunch silently fell back to the 200-entry default. Unlimited — and every other cap — now persists correctly across restarts.
    • After updating, open the History settings and pick your cap once more; from then on it stays put.

    v0.3.8 — Memory fix: shared HTTP client

    • Fixes a slow memory climb over long-running sessions. Dictabit built a brand-new HTTP client on every transcription, cleanup, and webhook call. Each one allocated its own connection pool + TLS state that macOS never fully reclaimed, so a multi-day session with thousands of dictations could balloon the app's memory footprint into the gigabytes. The HTTP client is now built once and reused for the whole process — memory stays flat no matter how long the app runs. As a bonus, reused connections shave a little latency off each dictation.
    • No change to transcription behavior, timeouts, or the journal flow.

    v0.3.7 — History auto-backup + restore

    • Lowering the history cap no longer silently deletes entries. Previously, dropping the cap from Unlimited → 200 truncated everything beyond entry 200 with no warning and no backup. Now: a confirm dialog tells you exactly how many entries will be dropped, and a snapshot of history.json is saved to ~/Library/Application Support/Dictabit/history-backups/ before the truncation. Same protection for Clear.
    • Restore from backup. New "Show backups (N)" disclosure on the History panel — lists every snapshot (timestamp, entry count, reason) with a one-click Restore button. Restoring takes its own snapshot first so it's reversible.
    • Backups dir auto-rotates: keeps the most recent 5, deletes older ones.
  6. v0.3.8 — Memory fix: shared HTTP client

    • Fixes a slow memory climb over long-running sessions. Dictabit built a brand-new HTTP client on every transcription, cleanup, and webhook call. Each one allocated its own connection pool + TLS state that macOS never fully reclaimed, so a multi-day session with thousands of dictations could balloon the app's memory footprint into the gigabytes. The HTTP client is now built once and reused for the whole process — memory stays flat no matter how long the app runs. As a bonus, reused connections shave a little latency off each dictation.
    • No change to transcription behavior, timeouts, or the journal flow.

    v0.3.7 — History auto-backup + restore

    • Lowering the history cap no longer silently deletes entries. Previously, dropping the cap from Unlimited → 200 truncated everything beyond entry 200 with no warning and no backup. Now: a confirm dialog tells you exactly how many entries will be dropped, and a snapshot of history.json is saved to ~/Library/Application Support/Dictabit/history-backups/ before the truncation. Same protection for Clear.
    • Restore from backup. New "Show backups (N)" disclosure on the History panel — lists every snapshot (timestamp, entry count, reason) with a one-click Restore button. Restoring takes its own snapshot first so it's reversible.
    • Backups dir auto-rotates: keeps the most recent 5, deletes older ones.
  7. v0.3.7 — History auto-backup + restore

    • Lowering the history cap no longer silently deletes entries. Previously, dropping the cap from Unlimited → 200 truncated everything beyond entry 200 with no warning and no backup. Now: a confirm dialog tells you exactly how many entries will be dropped, and a snapshot of history.json is saved to ~/Library/Application Support/Dictabit/history-backups/ before the truncation. Same protection for Clear.
    • Restore from backup. New "Show backups (N)" disclosure on the History panel — lists every snapshot (timestamp, entry count, reason) with a one-click Restore button. Restoring takes its own snapshot first so it's reversible.
    • Backups dir auto-rotates: keeps the most recent 5, deletes older ones.
  8. v0.3.6 — Journal editor, swear counter, polish

    • Rich journal editor. Journal entries now use a real TipTap-based markdown editor — formatting renders inline as you type (no raw **asterisks** visible), with a toolbar for bold / italic / code / headings / lists / quotes. "Show markdown source" disclosure for power users who want to see the raw text.
    • Dual-key journal decrypt. Dev and release builds previously couldn't read each other's encrypted entries — different keys, by design. Dev mode now tries the local dev key first, falls back to the Keychain key, so switching between bun run tauri dev and a release install no longer makes entries unreadable. Release behaviour unchanged (Keychain-only).
    • Visible delete on unreadable rows. Encrypted entries that can't be opened with any available key now render with a rose tint, "⚠ Unreadable entry" label, and an always-visible Delete button (instead of the hover-only "del" used for normal entries). Easier cleanup when keys have rotated.
    • Swear-word counter (opt-in). New General-tab toggle: when on, the Home tab shows a small lifetime curse meter (🤬 12 today · 1,247 all-time swear words). Always-tracked silently — toggle only controls whether you see it. English + Tagalog wordlist with multi-word phrase support for putang ina variants. One-shot backfill at startup populates the count from existing history; manual Recount button on the row.
    • Stuck "Initializing hotkey…" banner fixed. Backend polling loop now re-emits every 500 ms while the signals are still resolving, so the frontend can't miss the warm-up transition due to listener-registration timing. Banner clears within ~500 ms of the kernel dispatching the first event.
    • Weekday in daily-chart tooltip. Hovering a bar in the Home daily chart now shows Mon · 05/26 · 12 dict · 348 words instead of just the date.
  9. v0.3.5 — AI Actions

    • NEW: AI Actions. Top of the Words tab. Six built-in one-click text transforms (Summarize · As bullet list · As JSON · More formal · Tighten · Translate to English) plus the ability to add your own with a custom prompt. Click Run on any action — Dictabit takes your last transcript, sends it to Claude with that action's prompt, and pastes the result at the cursor. Needs an Anthropic key in the Providers tab. Tagged Pro in the UI; the gating layer ships with the Pro tier — for now everyone gets the feature.
    • "What's new" in About → Updates now opens `dictabit.com/changelog` instead of GitHub. The new page renders every shipped release's notes server-side from R2, so it stays current automatically — no per-release marketing-site rebuild.
    • Internal: publish-release.sh maintains a versions.json index on R2 (the data source the changelog page reads). CLAUDE.md added a sibling-repo pointer for the marketing site at ~/projects/dictabit-site/.
  10. v0.3.4 — Journal: discoverability + saner feedback

    • Journal hotkey lives in the Journal tab now (it was buried in the Voice tab — even the author didn't know where to find it). Empty-state callout in the tab explains what the feature does when no hotkey is bound yet. The Voice-tab copy still works; both stay in sync.
    • First-capture toast tells you what just happened. Pressing the journal hotkey before creating a journal silently auto-created one named "Journal" with a generic "Saved" message. Now the first time says "Created journal 'Journal' — entry saved", so you can see what happened.
    • Raw transcripts get a label. If long-form formatting was skipped (no Anthropic key, or the API call failed), the toast now appends "· raw (add an Anthropic key to format)" or "· raw (formatting failed)" — so a worse-looking entry no longer arrives without explanation.
  11. v0.3.3 — fix "What's new" / "Full notes" links

    • Dead "What's new" + "Full notes" links in the About → Updates section now actually open the GitHub releases page in your browser. The buttons in v0.3.2 called a Tauri command that hadn't been compiled into the binary yet (the fix landed on main after v0.3.2 was tagged + published).
  12. v0.3.2 — Profiles tab + R2 download host

    • Per-app profiles. New Profiles tab in the sidebar with tri-state overrides (force ON / force OFF / inherit) for the five categories Dictabit already detects: Terminal, Code, Browser, Chat, Default. Override any subset of: translate-to-English, press-Enter-after-paste, LLM cleanup, strip-fillers, voice macros, copy-only. Each dictation merges the active app's category overrides on top of the global settings, so e.g. cleanup can be off everywhere except Chat, or Enter can fire automatically in Terminal only. Unset cells inherit globals.
    • Downloads moved to Cloudflare R2 at dl.dictabit.com — invisible to users, but means future updates pull from Cloudflare's edge (free egress, no GitHub-auth gate). The in-app auto-updater handles the swap transparently; v0.3.1 clients still receive this update through the old endpoint, which now points at the same R2 binaries.