-
Notifications
You must be signed in to change notification settings - Fork 3
Changelog
π Language: English | FranΓ§ais
This page mirrors the GitHub release notes with additional context and cross-links into the wiki for features introduced in each version.
For the raw release artifacts (.deb, .rpm, .plasmoid, tarballs), always use the Releases page. For upcoming versions, see the Roadmap v1.4+ section at the bottom.
Released 2026-05-12. Hotfix release: long files transcribe correctly on every machine (CPU and GPU), dictee-transcribe no longer mixes up your tabs, and several silent failures now show clear messages.
π Release page Β· 11 assets.
- Long-file transcription works for everyone. Before v1.3.4, only CUDA users could transcribe files longer than 5 min β CPU users hit a model bug with no recovery. Now any file longer than 3 minutes is automatically split into chunks and reassembled, on every machine. Tested up to 54 min keynotes.
-
Live dictation: a clear limit per ASR backend, no more silent crashes. Some backends can't safely handle very long recordings (Canary runs out of GPU memory around 3 min, Parakeet hits a model bug at 5:20 min). If you record beyond the safe limit (Canary 2:30, Parakeet 4:30),
dicteenow stops cleanly with a clear notification and saves your audio to/tmp/dictee-long-<timestamp>.wavso you can open it indictee-transcribeinstead. Whisper and Vosk stream natively and stay uncapped. -
dictee-transcribe: tabs stay independent. Previously, starting a transcription in one tab could overwrite the editor, audio player, speaker labels or timeline markers of another tab you were reviewing. Each transcription now stays in its own tab, even while you browse the others. -
Translation skips now visible. When a translation can't run (no target language picked, source language matches the target),
dictee-transcribeshows a red status message in your language (fr / de / es / it / pt / uk) β previously it just silently did nothing. - Diarization works with multilingual files even when Canary is your live-dictation backend. Before, diarizing a file whose language was different from your dictation language produced gibberish silently. Diarization now uses Parakeet (multilingual auto-detect) for these files. Costs ~5β10 s extra to load the model, much better than wrong text.
-
Recovery after a stopped daemon. If
dictee-transcribestops the speech daemon to free GPU memory and then runs into an issue, push-to-talk dictation now resumes automatically instead of staying broken until you restart the service manually. - Recovery after a stuck push-to-talk state. If a previous transcription was killed (out of memory, crash, signal), pressing F9 again now resets properly instead of silently blocking all further dictation.
-
Default cheatsheet shortcut is
Shift+F9out of the box. New users immediately get the voice-commands cheatsheet hotkey β previously it shipped as "Disabled" and required a manual choice in the setup wizard. - "No GPU detected" warning no longer leaks into your text when running the CUDA build on a machine without an NVIDIA driver (VM, headless server). The transcription, translation and post-processing stay clean.
- Whisper transcriptions of files longer than ~25 min no longer time out before the daemon finishes (the internal timeout was tuned for Parakeet, which is ~10Γ faster). The change is invisible for Parakeet / Canary users.
-
dictee-cudaanddictee-plasmoidnow install together on Debian/Ubuntu. Previouslydpkgrefused both at the same time because they both claimed the same plasmoid file. The widget file now ships only with the cpu/cuda variants βdictee-plasmoidkeeps the auto-discovery directory for system-wide installs (same structure as the rpm, which always worked). - Arch CUDA install no longer downloads 1.5 GB of NVIDIA libraries on a CPU-only machine. The other formats (deb / rpm / tarball) already skipped this since v1.3.2; Arch was the last one to catch up.
-
Five missing system packages declared (
ffmpeg,python3-gi,pkexec,libkf6config-bin,wireplumber). The app uses them but the package descriptions didn't list them β fresh installs on some distros were missing pieces (audio file conversion, GNOME tray, privilege prompts, KDE shortcuts, mic volume control). - A new internal audit script blocks the build before release if a system package is missing from the metadata β same class of regression caught at build time from now on.
- No configuration migration needed. v1.3.4 reads your v1.3.3 settings and models as-is.
-
No setting to change for long files.
dictee-transcribepicks the chunked pipeline automatically.
Released 2026-05-07. Patch release fixing silent breakage on fresh installs across distros β particularly Arch where .install hooks were missing usermod and python-evdev was an optdepends. Also closes #5 (NVIDIA false positive on AMD) and #6 (PP-translate toggle persistence + LibreTranslate language combo).
π Release page Β· 9 assets.
-
Arch
.installhooks now addinput/dockergroups at install time (postinst .deb / %post .rpm already did). Without this, fresh Arch installs silently broke PTT and LibreTranslate even after a successful wizard run. -
python-evdevpromoted to hard depends on Arch (wasoptdependsβ pacman never installed it β dictee-ptt fell back to broken raw mode that leaked the PTT key to focused apps). -
build-rpm.shno longer ships a staledictee.plasmoidβ plasmoid generation now factored intodict_prepare_pkg_dir(build-common.sh). Every builder regenerates from source on every run; no more skew between deb / rpm / tarball. -
udev rule shipped in mode
0660directly β was0620(write-only group) which breakspython-evdevO_RDWRopen. Drop-in81-dictee-uinput.rulesadded on Arch where the AURdotoolpackage's0620rule kept being restored on its upgrades. -
Postprocess venv (
text2num) created in tarball install too β was missing. - install.sh prompts to install Docker on Arch when LibreTranslate is selected.
-
docker inspectwrapped insg dockerso the LT indicator stays accurate when plasmashell's group set hasn't refreshed yet (typical right after first install). -
LibreTranslate language combo populated even when
DICTEE_LIBRETRANSLATE_LANGSis unset β falls back to querying the running container's/languagesAPI atlocalhost:5000.
-
NVIDIA detection strict β uses
nvidia-smi --query-gpudirectly (withFileNotFoundErrorcaught), no longer fooled by/sys/class/drm/card*/device/mem_info_vram_totalreturning AMD VRAM > 0. Closes #5. - Toggle "Enable PP for translation" persists across Apply / reload β was reading the wrong variable at startup. Closes #6 (part 1).
-
_docker_use_sgauto-detected at startup, not only after Setup Docker click.
-
dotoolwrapped insg inputwhen invoked from a stale-group parent shell (plasmoid Dictate button, tray click, manual CLI).dictee-ptt.servicealready had the wrapper; standalone invocations didn't.
-
dictee-debugorphan package on Arch βoptions=('!debug')in PKGBUILDs prevents the empty sibling. -
restart_daemonsdead-code warning duringcargo buildβ function cfg aligned with caller cfg.
-
Plasmoid widget on KDE: the running widget instance keeps the old QML in memory after a package upgrade. Run
kquitapp6 plasmashell && kstart plasmashell(or log out / back in) for the LT-status fix to take effect on already-pinned widgets. -
Group runtime: any session opened before the install will keep its old supplementary groups until next login. dictee handles this internally (sg wrappers), but the change won't show up in
groupsruntime until logout/login.
Released 2026-05-05. Patch release fixing 8 user-facing bugs accumulated since v1.3.1, all surfaced during a single VM-test session on Fedora and Ubuntu.
π Release page Β· 9 assets (same shape as v1.3.1).
-
uninstall.shnow prompts before deleting personal configs (new--keep-configsflag for symmetry with--keep-models). Also actually removes~/.config/dictee.confβ the file used to slip through--purgebecause only the directory~/.config/dictee/was deleted, leaving the.conforphaned. Result: the next install correctly skipped the wizard becauseDICTEE_SETUP_DONE=truesurvived. -
install.shauto-restartsdictee-ptton reinstall whendictee.confis preserved, so the PTT key works immediately. Robust tocurl | sudo bash(auto-detectsSUDO_USER). -
dictee-resetnow restartsdictee-ptt. The "Reset" button in the plasmoid / tray is finally a true reset, not just an ASR daemon kick.
-
Dictation button focus regression fixed (revert of the auto-pin introduced in v1.3.0). The auto-pin assumed
animation-speech-ctlwould steal back the window activation β verified in source that it does not (set_accept_focus(False)+KeyboardMode.NONE). Text typed bydotoolnow lands in the previously focused editor again.
- The
Mod+<PTT key>modes are now handled directly bydictee-ptt(same path asAlt+<PTT key>for translate). No more dependency onkglobalaccelorgsettingsβ works on KDE and GNOME identically. - Default shortcut changed from the unsafe
Same key + Ctrl + Alt(collided withCtrl+Alt+FnTTY switching on Linux) toDisabledβ users opt in explicitly. - New option:
Super + same key(replaces the unsafeCtrl+Alt+key). - First-run banner is now i18n in 7 languages (was hardcoded French) and shows the actual configured shortcut (was hardcoded
Ctrl+Alt+H).
-
dictee-setupspawn from the tray menu / first-run dialog is now detached from the systemd transient scope (systemd-run --user --scope --collect) so it survives the tray'ssys.exit()on GNOME (app-gnome-*.scopewithKillMode=control-groupwas killing the child immediately).
-
CUDA postinst skips ~1.5 GB pip download on CPU-only machines. The
dictee-cudapackage now detects whether an NVIDIA GPU is present (/proc/driver/nvidia/or/dev/nvidia0). If not, it prints a short note and the runtime fallback (introduced in v1.3.1) takes over. Install on a CPU-only machine is now near-instant. -
python3-evdevis now a hard dependency (Depends:/Requires:). On Fedora it was aRecommends, installed after the package's%postran β so when the post-install script restarteddictee-ptt, evdev wasn't yet available and the daemon fell back to raw/dev/inputmode where the PTT key leaked to focused applications. Withevdevenforced as a hard dep, the service starts inevdev (grab + uinput)mode out of the box.
# Debian / Ubuntu
sudo apt install ./dictee-{cpu,cuda}_1.3.2_amd64.deb
# Fedora / openSUSE
sudo dnf install ./dictee-{cpu,cuda}-1.3.2-1.x86_64.rpm
# Arch (AUR)
yay -S dictee # or dictee-cudaIn-place upgrade. No config migration.
(superseded by v1.3.2 β kept for history)
Released 2026-05-04. Patch release fixing four user-visible bugs from v1.3.0, all hit on the first day on real-world setups (fresh Fedora VM, headless boxes without a working NVIDIA driver, two transcriptions kicked off in quick succession).
π Release page Β· 9 assets (same shape as v1.3.0).
-
CUDA β CPU fallback at runtime. The CUDA
.deb/.rpmnow probes/proc/driver/nvidia/gpus/at startup and silently falls back to CPU on any host without a usable NVIDIA driver β virtio VMs, headless containers, machines where the driver was removed. Before, the daemon crashed in a restart loop withcudaSetDevice failed: driver insufficient. NewDICTEE_FORCE_CPU=1environment variable forces CPU even when a GPU is present. -
uinputauto-load on Fedora / RHEL / openSUSE. Adds/etc/modules-load.d/dictee-uinput.confand runsmodprobe uinputin the post-install hook sodictee-pttanddotoolcan open/dev/uinput. Without this, the F8 push-to-talk shortcut was dead on a fresh Fedora install β the kernel module is not auto-loaded by default like on Arch / Ubuntu. -
Setup wizard "ASR service" check is now strict. The final wizard page polls
systemctl is-activefor up to 6 s and checks the daemon's Unix socket exists; it can no longer report "Everything is ready!" while the service is stuck inactivating (auto-restart). -
LLM analysis tab inherits the right
#Ncounter. When you click LLM analysis from a diarized tab after starting a second plain transcription, the result tab now reads#1 LLM: SynthΓ¨se(matching the source), not#2. - Transcribe button + diarize toggle + auto-translate stay disabled for the entire run, including the brief phase 1 β phase 2 transition of two-phase diarization, so a second job can no longer be kicked off mid-flight.
# Debian / Ubuntu
sudo apt install ./dictee-{cpu,cuda}_1.3.1_amd64.deb
# Fedora / openSUSE
sudo dnf install ./dictee-{cpu,cuda}-1.3.1-1.x86_64.rpm
# Arch (AUR)
yay -S dictee # or dictee-cudaThe upgrade is in-place; no config migration. If you previously installed v1.3.0 and hit the dead-F8 issue on Fedora, the v1.3.1 post-install loads uinput immediately β no reboot required.
Released 2026-05-03. Cumulative since v1.2.0 β 629 commits, 9 months of development.
π Release page Β· 9 assets (CPU + CUDA .deb / .rpm, plasmoid .deb / .rpm / .plasmoid, universal .tar.gz, source tarball).
Highlights (full notes on the release page):
- Canary-1B v2 ASR backend (NVIDIA AED, 7 languages, 12 native translation pairs β EN)
- Pipeline chunked for long-file diarization (no more 10-15 min cap on 8 GB VRAM)
- LLM analysis pipeline on diarized transcripts: 6 built-in profiles Γ 14 provider presets (Ollama / OpenAI / Claude / Gemini / Mistral / DeepSeek / Perplexity / Groq / Cerebras / OpenRouter / etc.)
-
dictee-transcribeβ new dedicated window for file transcription (audio player synced with timeline, multi-tab exports, LLM/Translate per-tab) - 5 translation backends (Canary, LibreTranslate, Ollama, Google, Bing) + refonte of the per-file Translate pad
- 6 i18n languages complete (FR / DE / ES / IT / PT / UK)
- Portable CUDA libs via pip venv at postinst (no system NVIDIA repo required)
The v1.3 cycle went through 5 betas + 3 release candidates between 2026-04-15 and 2026-05-02. Each is preserved on GitHub for traceability:
- v1.3.0-rc3 (2026-05-02) β LLM diarization analysis + chunked long-files + UI polish
- v1.3.0-rc2
- v1.3.0-rc1 (2026-04-20)
- v1.3.0-beta1 β beta5 (2026-04-15 β 2026-04-19)
Released 2026-04-20. First release candidate. Contains 3 last-minute fixes found during the VM test round.
π Release page Β· 8 assets (CPU + CUDA .deb/.rpm + plasmoid + tarballs).
Released 2026-04-20. First release candidate. Contains 3 last-minute fixes found during the VM test round.
π Release page Β· 8 assets (CPU + CUDA .deb/.rpm + plasmoid + tarballs).
Fixes on top of beta5:
-
72ec24fβ Theme-aware banner on fresh KDE Fedora session (kreadconfig6 ColorSchemereturns empty β fall back to Qt palette) -
44649bbβ Wizard translation sync + 130 target languages in dropdown + combo widths aligned -
130ab95β Plasmoid popup: language combo compact, dropdown popup wide enough for 5-char codes (pt-BR,zh-CN), popup closes on window deactivate
Released 2026-04-19. Pre-RC candidate.
Features (beta3 β beta5):
-
f9cff13β Plasmoid cross-process toggles: LLM / Short / Meeting switches synchronized across tray, plasmoid, anddictee.conf -
d11c9b3β Batch diarize binary compiled + long-file warning indictee-transcribewhen>10 min + diarization + CUDA -
b179143β French hour formatting ("14 h 30") + surrounded equal signs ("deux Γ©gale deux"β"2 = 2") -
3ccadf4,50366afβ Rules tab UI fixes (combo widths, scrollbar, split "Ajouter une rΓ¨gle" row)
CUDA build improvements:
-
bbca0f9β Bundle CUDA libs via pip venv instead of OS packages β no more system-widecuda-cudart-12dependency -
d60ba9fβ Bundlelibonnxruntime_providers_cuda.soinside the package
Earlier beta series (beta1 β beta4, 2026-04-15 β 2026-04-17):
Short-text keepcaps exceptions (7 languages):
- New dialog for per-language acronym preservation (SDK, API, GPT-4β¦)
- Extended match mode toggle (beyond short_text)
- ~50 default exceptions per language
Multi-user safe:
- UID suffix on
/dev/shmstate files β no more cross-user conflicts -
keepcaps.confnow in~/.config/dictee/(user-specific)
LibreTranslate improvements:
- Purge unused models button in setup
- Volume size refreshed asynchronously
- Docker container management from wizard
Post-processing:
- Continuation + translate whitespace preservation
- Version number dictation (
"un point trois point zΓ©ro"β"1.3.0") - Decimal commas for French (
"un virgule cinq"β"1,5")
Test coverage:
- 682 post-processing tests (was ~400 in v1.2)
- 148 pipeline tests (new)
- CI job with isolated
XDG_CONFIG_HOME
Packaging:
- 8 β 10 release assets (added RPM variants for Fedora/openSUSE)
- Arch PKGBUILD updated for v1.3
- Installer supports
/releases?per_page=1to fetch prereleases
Released 2025-12. Major backend overhaul.
Features:
- 4 ASR backends unified (Parakeet, Canary, Whisper, Vosk)
- Canary-1B v2 with built-in translation (25 European languages β EN, 48 pairs)
- Post-processing pipeline formalized into 12 steps
-
Quick backend switching via
dictee-switch-backend - First-run wizard (was optional before)
-
dictee-test-rulesCLI tool - Sidebar UI with dual pipeline diagrams
Breaking changes:
-
onnx-asrPython dependency removed β Canary now runs via native Rust ONNX wrapper (same code path as Parakeet) - Old
dictee.confformat migrated automatically on first run
Released 2025-09. Translation backends added.
Features:
- LibreTranslate integration
- Ollama integration
- Google + Bing via
translate-shell - Target language selector in plasmoid
-
DICTEE_LANG_TARGETenvironment variable
Released 2025-05. Initial public release.
Features:
- Parakeet-TDT 0.6B v3 ASR
- KDE Plasma 6 plasmoid
- PyQt6 tray icon
- Setup wizard
- Basic post-processing (rules, dictionary)
- Keyboard shortcuts (KDE + GNOME)
-
.debpackaging only
Tentative scope for v1.4 (ordered by value/complexity ratio):
-
Whisper translate β multi-target translation via
task="translate"(EN only, offline alternative to Canary's 4 language pair limit) - Hotword boosting β bias ASR decoding toward custom names / terms without retraining (shallow fusion on TDT logits, Parakeet only)
- Moonshine CPU backend β ultra-fast English-only ASR for low-power setups
- CLI speech-to-text β pipe audio, get text (headless use, server dictation)
- VAD (Voice Activity Detection) β hands-free dictation without push-to-talk
- Streaming transcription with live text display β merge Vosk streaming mode with plasmoid live text field
-
Built-in overlay β replace external
animation-speechwith in-process fullscreen overlay - AppImage / Flatpak packaging β portable install without system packages
- COSMIC applet + GNOME Shell extension β feature parity with KDE plasmoid on other desktops
- Passthrough mode (video calls) β pw-loopback mix mic + app audio β diarization of the meeting
- Silence threshold per source β adaptive RMS threshold based on source type (mic / monitor / app)
Tracked in the project memory and in GitHub Projects. Contributions welcome on any of these.
- Release page β download the latest artifacts
- FAQ β why these design decisions?
- Developer-Guide#contributing β how to contribute
π¬π§ Home Β· π«π· Accueil
Getting started / Premiers pas
- Installation Β· π¬π§ Β· π«π·
- Setup-Wizard Β· π¬π§ Β· π«π·
- Configuration Β· π¬π§ Β· π«π·
- Plasmoid-Widget Β· π¬π§ Β· π«π·
- Tray-Icon Β· π¬π§ Β· π«π·
- Keyboard-Shortcuts Β· π¬π§ Β· π«π·
- Voice-Commands Β· π¬π§ Β· π«π·
- GPU-Setup Β· π¬π§ Β· π«π·
- Diarization Β· π¬π§ Β· π«π·
- LLM-Diarization Β· π¬π§ Β· π«π·
Speech recognition / ASR
- ASR-Backends Β· π¬π§ Β· π«π·
- Parakeet-TDT-Deep-Dive Β· π¬π§ Β· π«π·
- Canary-1B-Deep-Dive Β· π¬π§ Β· π«π·
Translation / Traduction
Post-processing / Post-traitement
- Overview Β· π¬π§ Β· π«π·
- Rules-and-Dictionary Β· π¬π§ Β· π«π·
- LLM-Correction Β· π¬π§ Β· π«π·
- Numbers-Dates-Continuation Β· π¬π§ Β· π«π·
CLI
Reference / RΓ©fΓ©rence
- Troubleshooting Β· π¬π§ Β· π«π·
- FAQ Β· π¬π§ Β· π«π·
- Developer-Guide Β· π¬π§ Β· π«π·
- Changelog Β· π¬π§ Β· π«π·
π Repo Β· π¦ Releases Β· π Issues