Commit graph

99 commits

Author SHA1 Message Date
Viren Mohindra
ef24cfefda
feat: add models settings page with filtering and management (#478)
* feat: add models settings page with filtering and management

- add dedicated models settings page in sidebar
- reuse ModelCard component from onboarding for consistent UI
- add filter buttons for all/multi-language/translation models
- add model deletion with native confirmation dialog (tauri-plugin-dialog)
- consolidate model event listeners into useModels hook (Zustand store)
- remove duplicate event listeners from ModelSelector, LanguageSelector, TranslateToEnglish
- gate AccessibilityPermissions to macOS only
- add is_recommended field to model registry for featured models
- remove unused get_recommended_first_model command
- add translations for all 9 supported languages

* feat: add language filter to models settings page

adds a searchable language dropdown filter to the models page that lets users filter models by language support. when a non-english language is selected, models that don't support multiple languages (like parakeet) are hidden.

- add searchable language dropdown (right-aligned in filter row)
- filter models using supports_language_selection capability
- add allLanguages translation key to all 10 locales

* feat: add translation consistency checker script

- add scripts/check-translations.cjs to validate all language files
- script dynamically discovers languages from directory structure
- checks that all languages have same keys as english reference
- detects missing and extra keys in each language
- add check:translations npm script
- integrate into github actions lint workflow
- validates translations on every pull request

* fix: update imports and add missing translations after rebase

- replace useModels hook with useModelStore in components
- add permission error keys to all languages
- add model settings keys to cs and tr (new languages from main)

* fix: translate english placeholders in cs and tr locale files

* refactor: simplify model dropdown and migrate store to immer

- model dropdown now only shows downloaded models (no download/delete)
- convert store to immer with record types for immutability
- remove unused translation keys (welcome, downloadPrompt, etc.)
- add missing moonshine-base model fields
- sync translations after rebase

* fix: add download cancellation support and ui improvements

- add full download cancellation with Arc<AtomicBool> flags in rust backend
- add progress event throttling (100ms) to prevent ui freeze
- add cancel button to model card in settings page
- add model-deleted event listener to refresh dropdown after deletion
- remove pink background from recommended models in settings (keep badge only)
- add cancel/cancelDownload translation keys to all 14 languages

* fix: remove duplicate language/translate settings from general and advanced

settings are now only in ModelSettingsCard, not duplicated in their old locations

* fix: prevent model dropdown from being clipped by window edge

* add languages explicitly, clean up some ui

* fix: clear bottom progress bar when download is cancelled

The ModelSelector component maintains its own local state for download
progress. When a download was cancelled, the Rust backend would update
its state but never emitted an event to notify the frontend. This caused
the bottom progress bar to remain stuck showing "Downloading X%".

Added model-download-cancelled event emission in Rust and corresponding
listener in ModelSelector to clear progress state on cancellation.

* fix: align model card content to top to prevent floating elements

Changed ModelCard flex alignment from items-center to items-start so
the accuracy/speed bars stay at the top when the card expands (e.g.,
during download with progress bar visible).

* fix: prevent model deletion from interrupting active extractions

Added extracting_models HashSet to track models currently being
extracted. The update_download_status() function now skips cleanup
of .extracting directories for models that are actively extracting,
preventing a race condition where deleting one model would interrupt
another model's extraction process.

* refactor: migrate ModelCard buttons to Button component

Added two new Button variants for common patterns:
- primary-soft: soft/tinted primary buttons (used for download)
- danger-ghost: subtle destructive actions (used for delete/cancel)

Migrated all hardcoded buttons in ModelCard to use the shared Button
component for consistency and maintainability.

* feat: separate downloaded and available models into sections

Split the models list into "Your Models" and "Available to Download"
sections for clearer visual distinction between downloaded and
downloadable models.

Also adds missing translation keys to all locales:
- modelSelector.capabilities.singleLanguage
- modelSelector.capabilities.languageOnly
- settings.models.yourModels
- settings.models.availableModels

* fix: add missing translations after rebase onto main

add post-processing hotkey translations to all 15 locales and
backfill 29 missing keys for korean locale added in main.

* fix: add label to model delete button for clearer destructive state

* check translations as typescript

* format

* better text for dropdown

* wip ui tweaks

* rounded + ui tweaks

* fix download not 0% immediately, ui tweaks

* tweak name

* block for model downloading in onboarding

* small fixes

---------

Co-authored-by: CJ Pais <cj@cjpais.com>
2026-02-08 12:18:22 +08:00
Soumya Ranjan Patnaik
9e538b1ca7
feat(overlay): add layer-shell for wayland support (#680) 2026-02-05 19:21:16 +08:00
CJ Pais
e2028a4b82 release v0.7.1 2026-02-01 20:58:44 +08:00
CJ Pais
f38b52e123 v0.7.0 2026-01-20 08:31:38 +08:00
CJ Pais
b733ccc458
init attempt at new kb (#580)
* init attempt at new kb

* 0.1.1 handy-keys

* format

* cleanup

* support for capslock/shiftlock?

* move kb to experimental

* use hook

* fix macos bug

* attempt mouse buttons as well
2026-01-20 08:23:35 +08:00
Prasad Chalasani
c84e863423
feat: add automatic filler word removal from transcriptions (#589)
* feat: add automatic filler word removal from transcriptions

Add filter_transcription_output() that removes filler words (uh, um, hmm,
etc.) and hallucination patterns ([AUDIO], (pause), <tag>...</tag>) from
transcriptions. Inspired by VoiceInk's approach.

- Add regex-based filter in audio_toolkit/text.rs
- Integrate into transcription pipeline after custom word correction
- Add comprehensive tests for filler word removal
- Add regex crate dependency

* feat: collapse repeated 1-2 letter stutters in transcriptions

Add collapse_stutters() to reduce model hallucination artifacts like
"wh wh wh wh wh why" -> "wh why" or "I I I I think" -> "I think".

Collapses any 1-2 letter word that repeats 3+ times consecutively
to a single instance (case-insensitive matching).

* remove bracket/xml stuff

* format

---------

Co-authored-by: CJ Pais <cj@cjpais.com>
2026-01-18 10:52:39 +08:00
CJ Pais
56b0f44e45
fixes for 0.6.11: linking, ui (#579)
* static linking?

* move to 0.2.1

* transcribe-rs 0.2.2

* Update Cargo.lock

* remove settings which dont apply to models
2026-01-14 12:44:59 +08:00
CJ Pais
738c5a82d8 release v0.6.11 2026-01-14 09:54:55 +08:00
Vlad Gerasimov
1b580d54e8
feat: add Moonshine Base speech recognition model (#556)
* feat: add Moonshine Base speech recognition model

Add support for the Moonshine Base ASR model, which offers:
- 5x faster transcription than Whisper
- Better accent recognition
- ~240MB model size (encoder + decoder + tokenizer)

Changes:
- Update transcribe-rs to v0.2 with moonshine feature
- Add EngineType::Moonshine variant
- Add Moonshine Base model definition (400MB, 80% accuracy, 90% speed)
- Add model loading and transcription logic
- Add i18n translation for Moonshine Base

Note: Model files must be hosted at blob.handy.computer/moonshine-base.tar.gz
Expected structure: encoder_model.onnx, decoder_model_merged.onnx, tokenizer.json

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Update moonshine parameters.

* add translations

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: CJ Pais <cj@cjpais.com>
2026-01-10 11:22:49 +08:00
CJ Pais
c606bf631b release v0.6.10 2026-01-04 07:52:38 +08:00
Dmitry Gordin
5c5e428e06
fix: replace async-openai library with post request (#480)
* fix: replace async-openai library with post request to support custom providers

* move models call to llm_client too

* tweak post processing ui and add groq and cerebras

---------

Co-authored-by: CJ Pais <cj@cjpais.com>
2025-12-27 11:21:27 +07:00
CJ Pais
d06d318a66 Release v0.6.9 2025-12-23 17:44:01 +07:00
CJ Pais
add9544d86 release v0.6.8 2025-12-12 22:15:00 +07:00
CJ Pais
8ac98b33bb release v0.6.7 2025-12-12 16:54:44 +07:00
CJ Pais
700eb71abb Release v0.6.6 2025-12-11 17:29:35 +07:00
CJ Pais
d2a11ed53b
Refactor History SQLite (#412)
* yolo rewrite history with claude - needs review

* Update history.rs

* format
2025-12-09 21:17:34 +07:00
CJ Pais
933c1b14c2 release v0.6.5 2025-12-08 09:23:56 +07:00
CJ Pais
45e7d01e8a release v0.6.4 2025-11-29 16:45:33 +07:00
CJ Pais
6d6d7fb279 release v0.6.3 2025-11-28 10:18:18 +07:00
CJ Pais
9521ab9332
WIP: Add tauri-specta for generating TS bindings (#322)
* initial specta commands

* refactor to use the bindings in the ui

* merge fixes

* remove unused commands

* add clamshell to lib

* Remove Invoke from everything.

* fix settings not being loaded properly

* fix settings being overwritten due to deserialization failure + remove
provider kind

* fix model loading text bug
2025-11-27 17:07:22 +07:00
Danny Smith
5085485e67
Show recording overlay in macOS fullscreen apps, and when switching between spaces (#361)
* Gitignore `*.local.*`

Allows for local files like `CLAUDE.local.md` and `settings.local.json`

* Support macOS spaces and fullscreen apps
2025-11-20 10:28:15 +07:00
figwood
ec3b06d5b2
feat: add conversion between Simplified and Traditional Chinese. (#356)
* feat: add conversion between Simplified and Traditional Chinese. If the selected language is Simplified or Traditional Chinese, it will convert the text to the selected variant(Simplified or Traditional) after been recognized, depends on opencc, if it is not installed, the conversion will skip.

* Adopting ferrous-opencc makes cross-platform packaging easier.
2025-11-19 20:31:44 +07:00
CJ Pais
0c5989d824 Release v0.6.2 2025-11-19 11:03:33 +07:00
johnpyp
9c4b1e1f5c
feat: SIGUSR2 handling for toggles (#354)
* feat: SIGUSR2 handling for toggles

* run format

---------

Co-authored-by: CJ Pais <cj@cjpais.com>
2025-11-19 09:45:46 +07:00
CJ Pais
c359e3ff17 Release v0.6.1 2025-11-17 13:02:35 +07:00
CJ Pais
18536aa81e
Add file based debug logging (#347)
* add basic logging to handy

* 100kb of logs

* add open button to the ui for logs

* use log everywhere

* some minor cleanup

* finish debug logging
2025-11-17 12:55:24 +07:00
Maicon Moreira
25f4a564fd
Fix unstable mute implementation on Windows/Linux (#341)
* Fix unstable mute implementation on Windows/Linux

* add some delay before the mute so the audio feedback plays

---------

Co-authored-by: CJ Pais <cj@cjpais.com>
2025-11-17 09:40:47 +07:00
CJ Pais
3f9d93aa9b release v0.6.0 2025-11-05 18:31:34 -08:00
Luis Eduardo
f7380fa69a
feat: LLM based post-processing (#222)
* Add LLM post-processing feature with settings management and UI integration

* Refactor LLM post-processing settings and prompt selection logic

* Rename CLAUDE.md to more standard AGENTS.md

* Replace Open Router with OpenAI Compatible endpoints for post-processing

* Fix post processing settings api styles

* refactor or something

* simplify

* cleanup a bit?

* remove useless code

* minor improvements

* fix laggy textarea

* Store post-processing results in db

* fix text color

* new default prompt

---------

Co-authored-by: CJ Pais <cj@cjpais.com>
2025-11-05 18:29:03 -08:00
CJ Pais
907a6f0f77 release 0.5.5 2025-11-03 11:17:18 -08:00
CJ Pais
7b99da122a
Revert "feat: SIGUSR2 handling for toggles (#281)" (#296)
This reverts commit 8768ebad84.
2025-11-03 09:02:08 -08:00
johnpyp
8768ebad84
feat: SIGUSR2 handling for toggles (#281) 2025-11-03 09:01:27 -08:00
Maicon Moreira
7c04ee85a7
feat: add “mute while recording” setting (#257)
* feat: mute while recording

* refactor: move MuteWhileRecording from AdvancedSettings to DebugSettings
2025-10-28 17:49:33 -07:00
CJ Pais
ae406aebe2 fix build 2025-10-27 11:52:23 -07:00
CJ Pais
95d85033b2 Update Cargo.lock 2025-10-27 11:04:13 -07:00
CJ Pais
0aa86a8cbd Release v0.5.4 2025-10-17 16:58:58 -07:00
CJ Pais
db00ff240f
Add Setting to Copy to Clipboard (#220)
* update transcribe-rs

* add copy to clipboard feat
2025-10-17 16:25:35 -07:00
CJ Pais
c291b8470f Release v0.5.3 2025-10-13 14:46:23 -07:00
CJ Pais
11ce9a7a53
Fix Whisper Crashing on Linux + CI Fixes (#212)
* bump to latest transcribe-rs

* direct dep?

* disable avx for whisper?

* verbose?

* rust verbose?

* debug symbols

* support debug builds properly

* split release for appimage

* fix artifact name
2025-10-13 14:43:48 -07:00
CJ Pais
ee6c60642f release v0.5.2 2025-10-09 19:31:12 -07:00
segudev
03289f84d7
fix: restore translate-to-english functionality (#173)
* fix: restore translate-to-english functionality

The translate option broke when migrating from whisper-rs to transcribe-rs.
This fix patches transcribe-rs to add translate parameter support and passes
the translate_to_english setting to the Whisper engine.

Additionally fixed AccessibilityPermissions API calls to match updated library.

Translation only works with Whisper multilingual models (not .en models).
Parakeet models don't support translation as they are transcription-only.

Fixes #152

* bump transcribe rs

---------

Co-authored-by: CJ Pais <cj@cjpais.com>
2025-10-08 11:57:47 -07:00
Alexander Tesfamichael
13910fd15c
chore: drop libsamplerate helper feature (#144) 2025-09-28 11:01:30 -07:00
CJ Pais
3bf4ac819e 0.5.1 2025-09-28 07:44:37 -07:00
CJ Pais
7732d20a80 fix wayland clipbard failure? 2025-09-19 12:39:08 -07:00
CJ Pais
ea375d942b Release v0.5.0 2025-09-09 18:59:50 -07:00
CJ Pais
45a473dc9f
Parakeet V3 (#111)
* wip: model manager support for parakeet

* working parakeet??git status

* Update LanguageSelector.tsx

* Use the published version of the crate.

* move word correction into audio toolkit
2025-09-09 18:33:57 -07:00
CJ Pais
beaf27ed25 move to my fork for vad-rs/ort for rc10 2025-09-09 15:25:19 -07:00
CJ Pais
7be3fac4b1 Release v0.4.2 2025-09-06 14:08:31 -07:00
CJ Pais
76785d5b47 release 0.4.1 2025-09-05 22:19:25 -07:00
CJ Pais
40cd7ae71b release v0.4.0 2025-09-05 16:29:16 -07:00