gitextract_qhrvhh5a/ ├── .cargo/ │ └── config.toml ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── config.yml │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ ├── build-test.yml │ ├── build.yml │ ├── code-quality.yml │ ├── main-build.yml │ ├── nix-check.yml │ ├── playwright.yml │ ├── pr-test-build.yml │ ├── release.yml │ └── test.yml ├── .gitignore ├── .nix/ │ ├── bun-lock-hash │ └── bun.nix ├── .prettierignore ├── .prettierrc ├── .vscode/ │ └── extensions.json ├── AGENTS.md ├── BUILD.md ├── CHANGELOG.md ├── CLAUDE.md ├── CONTRIBUTING.md ├── CONTRIBUTING_TRANSLATIONS.md ├── CRUSH.md ├── LICENSE ├── README.md ├── eslint.config.js ├── flake.nix ├── index.html ├── nix/ │ ├── hm-module.nix │ └── module.nix ├── package.json ├── playwright.config.ts ├── scripts/ │ ├── check-nix-deps.ts │ └── check-translations.ts ├── src/ │ ├── App.css │ ├── App.tsx │ ├── bindings.ts │ ├── components/ │ │ ├── AccessibilityPermissions.tsx │ │ ├── Sidebar.tsx │ │ ├── footer/ │ │ │ ├── Footer.tsx │ │ │ └── index.ts │ │ ├── icons/ │ │ │ ├── CancelIcon.tsx │ │ │ ├── HandyHand.tsx │ │ │ ├── HandyTextLogo.tsx │ │ │ ├── MicrophoneIcon.tsx │ │ │ ├── ResetIcon.tsx │ │ │ ├── TranscriptionIcon.tsx │ │ │ └── index.ts │ │ ├── model-selector/ │ │ │ ├── DownloadProgressDisplay.tsx │ │ │ ├── ModelDropdown.tsx │ │ │ ├── ModelSelector.tsx │ │ │ ├── ModelStatusButton.tsx │ │ │ └── index.ts │ │ ├── onboarding/ │ │ │ ├── AccessibilityOnboarding.tsx │ │ │ ├── ModelCard.tsx │ │ │ ├── Onboarding.tsx │ │ │ └── index.ts │ │ ├── settings/ │ │ │ ├── AccelerationSelector.tsx │ │ │ ├── AlwaysOnMicrophone.tsx │ │ │ ├── AppDataDirectory.tsx │ │ │ ├── AppLanguageSelector.tsx │ │ │ ├── AppendTrailingSpace.tsx │ │ │ ├── AudioFeedback.tsx │ │ │ ├── AutoSubmit.tsx │ │ │ ├── AutostartToggle.tsx │ │ │ ├── ClamshellMicrophoneSelector.tsx │ │ │ ├── ClipboardHandling.tsx │ │ │ ├── CustomWords.tsx │ │ │ ├── ExperimentalToggle.tsx │ │ │ ├── GlobalShortcutInput.tsx │ │ │ ├── HandyKeysShortcutInput.tsx │ │ │ ├── HistoryLimit.tsx │ │ │ ├── LanguageSelector.tsx │ │ │ ├── LazyStreamClose.tsx │ │ │ ├── MicrophoneSelector.tsx │ │ │ ├── ModelUnloadTimeout.tsx │ │ │ ├── MuteWhileRecording.tsx │ │ │ ├── OutputDeviceSelector.tsx │ │ │ ├── PasteMethod.tsx │ │ │ ├── PostProcessingSettingsApi/ │ │ │ │ ├── ApiKeyField.tsx │ │ │ │ ├── BaseUrlField.tsx │ │ │ │ ├── ModelSelect.tsx │ │ │ │ ├── ProviderSelect.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── types.ts │ │ │ │ └── usePostProcessProviderState.ts │ │ │ ├── PostProcessingSettingsPrompts.tsx │ │ │ ├── PostProcessingToggle.tsx │ │ │ ├── PushToTalk.tsx │ │ │ ├── RecordingRetentionPeriod.tsx │ │ │ ├── ShortcutInput.tsx │ │ │ ├── ShowOverlay.tsx │ │ │ ├── ShowTrayIcon.tsx │ │ │ ├── SoundPicker.tsx │ │ │ ├── StartHidden.tsx │ │ │ ├── TranslateToEnglish.tsx │ │ │ ├── TypingTool.tsx │ │ │ ├── UpdateChecksToggle.tsx │ │ │ ├── VolumeSlider.tsx │ │ │ ├── about/ │ │ │ │ └── AboutSettings.tsx │ │ │ ├── advanced/ │ │ │ │ └── AdvancedSettings.tsx │ │ │ ├── debug/ │ │ │ │ ├── DebugPaths.tsx │ │ │ │ ├── DebugSettings.tsx │ │ │ │ ├── KeyboardImplementationSelector.tsx │ │ │ │ ├── LogDirectory.tsx │ │ │ │ ├── LogLevelSelector.tsx │ │ │ │ ├── PasteDelay.tsx │ │ │ │ ├── RecordingBuffer.tsx │ │ │ │ ├── WordCorrectionThreshold.tsx │ │ │ │ └── index.ts │ │ │ ├── general/ │ │ │ │ ├── GeneralSettings.tsx │ │ │ │ └── ModelSettingsCard.tsx │ │ │ ├── history/ │ │ │ │ └── HistorySettings.tsx │ │ │ ├── index.ts │ │ │ ├── models/ │ │ │ │ ├── ModelsSettings.tsx │ │ │ │ └── index.ts │ │ │ └── post-processing/ │ │ │ └── PostProcessingSettings.tsx │ │ ├── shared/ │ │ │ ├── ProgressBar.tsx │ │ │ └── index.ts │ │ ├── ui/ │ │ │ ├── Alert.tsx │ │ │ ├── AudioPlayer.tsx │ │ │ ├── Badge.tsx │ │ │ ├── Button.tsx │ │ │ ├── Dropdown.tsx │ │ │ ├── Input.tsx │ │ │ ├── PathDisplay.tsx │ │ │ ├── ResetButton.tsx │ │ │ ├── Select.tsx │ │ │ ├── SettingContainer.tsx │ │ │ ├── SettingsGroup.tsx │ │ │ ├── Slider.tsx │ │ │ ├── TextDisplay.tsx │ │ │ ├── Textarea.tsx │ │ │ ├── ToggleSwitch.tsx │ │ │ ├── Tooltip.tsx │ │ │ └── index.ts │ │ └── update-checker/ │ │ ├── UpdateChecker.tsx │ │ └── index.ts │ ├── hooks/ │ │ ├── useOsType.ts │ │ └── useSettings.ts │ ├── i18n/ │ │ ├── index.ts │ │ ├── languages.ts │ │ └── locales/ │ │ ├── ar/ │ │ │ └── translation.json │ │ ├── cs/ │ │ │ └── translation.json │ │ ├── de/ │ │ │ └── translation.json │ │ ├── en/ │ │ │ └── translation.json │ │ ├── es/ │ │ │ └── translation.json │ │ ├── fr/ │ │ │ └── translation.json │ │ ├── it/ │ │ │ └── translation.json │ │ ├── ja/ │ │ │ └── translation.json │ │ ├── ko/ │ │ │ └── translation.json │ │ ├── pl/ │ │ │ └── translation.json │ │ ├── pt/ │ │ │ └── translation.json │ │ ├── ru/ │ │ │ └── translation.json │ │ ├── tr/ │ │ │ └── translation.json │ │ ├── uk/ │ │ │ └── translation.json │ │ ├── vi/ │ │ │ └── translation.json │ │ ├── zh/ │ │ │ └── translation.json │ │ └── zh-TW/ │ │ └── translation.json │ ├── lib/ │ │ ├── constants/ │ │ │ └── languages.ts │ │ ├── types/ │ │ │ └── events.ts │ │ └── utils/ │ │ ├── format.ts │ │ ├── keyboard.ts │ │ ├── modelTranslation.ts │ │ └── rtl.ts │ ├── main.tsx │ ├── overlay/ │ │ ├── RecordingOverlay.css │ │ ├── RecordingOverlay.tsx │ │ ├── index.html │ │ └── main.tsx │ ├── stores/ │ │ ├── modelStore.ts │ │ └── settingsStore.ts │ ├── utils/ │ │ └── dateFormat.ts │ └── vite-env.d.ts ├── src-tauri/ │ ├── .gitignore │ ├── Cargo.toml │ ├── Entitlements.plist │ ├── Info.plist │ ├── build.rs │ ├── capabilities/ │ │ ├── default.json │ │ └── desktop.json │ ├── gen/ │ │ └── apple/ │ │ └── PrivacyInfo.xcprivacy │ ├── icons/ │ │ └── icon.icns │ ├── nsis/ │ │ └── installer.nsi │ ├── resources/ │ │ ├── default_settings.json │ │ └── models/ │ │ ├── gigaam_vocab.txt │ │ └── silero_vad_v4.onnx │ ├── rustfmt.toml │ ├── src/ │ │ ├── actions.rs │ │ ├── apple_intelligence.rs │ │ ├── audio_feedback.rs │ │ ├── audio_toolkit/ │ │ │ ├── audio/ │ │ │ │ ├── device.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── recorder.rs │ │ │ │ ├── resampler.rs │ │ │ │ ├── utils.rs │ │ │ │ └── visualizer.rs │ │ │ ├── bin/ │ │ │ │ └── cli.rs │ │ │ ├── constants.rs │ │ │ ├── mod.rs │ │ │ ├── text.rs │ │ │ ├── utils.rs │ │ │ └── vad/ │ │ │ ├── mod.rs │ │ │ ├── silero.rs │ │ │ └── smoothed.rs │ │ ├── cli.rs │ │ ├── clipboard.rs │ │ ├── commands/ │ │ │ ├── audio.rs │ │ │ ├── history.rs │ │ │ ├── mod.rs │ │ │ ├── models.rs │ │ │ └── transcription.rs │ │ ├── helpers/ │ │ │ ├── clamshell.rs │ │ │ └── mod.rs │ │ ├── input.rs │ │ ├── lib.rs │ │ ├── llm_client.rs │ │ ├── main.rs │ │ ├── managers/ │ │ │ ├── audio.rs │ │ │ ├── history.rs │ │ │ ├── mod.rs │ │ │ ├── model.rs │ │ │ ├── transcription.rs │ │ │ └── transcription_mock.rs │ │ ├── overlay.rs │ │ ├── portable.rs │ │ ├── settings.rs │ │ ├── shortcut/ │ │ │ ├── handler.rs │ │ │ ├── handy_keys.rs │ │ │ ├── mod.rs │ │ │ └── tauri_impl.rs │ │ ├── signal_handle.rs │ │ ├── transcription_coordinator.rs │ │ ├── tray.rs │ │ ├── tray_i18n.rs │ │ └── utils.rs │ ├── swift/ │ │ ├── apple_intelligence.swift │ │ ├── apple_intelligence_bridge.h │ │ └── apple_intelligence_stub.swift │ └── tauri.conf.json ├── tailwind.config.js ├── tests/ │ └── app.spec.ts ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts