From 609fc7667b23054dab64ee88a196c94534725770 Mon Sep 17 00:00:00 2001 From: Vlad Gerasimov Date: Mon, 28 Jul 2025 18:53:25 +0400 Subject: [PATCH 1/8] fix(tray): mark tray icons as template for macOS --- src-tauri/src/lib.rs | 2 +- src-tauri/src/utils.rs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 6897a89..191b562 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -92,7 +92,7 @@ pub fn run() { .icon(Image::from_path(app.path().resolve( "resources/tray_idle.png", tauri::path::BaseDirectory::Resource, - )?)?) + )?)?.as_template(true)) .menu(&menu) .show_menu_on_left_click(true) .on_menu_event(|app, event| match event.id.as_ref() { diff --git a/src-tauri/src/utils.rs b/src-tauri/src/utils.rs index be67035..013c736 100644 --- a/src-tauri/src/utils.rs +++ b/src-tauri/src/utils.rs @@ -91,7 +91,8 @@ pub fn change_tray_icon(app: &AppHandle, icon: TrayIconState) { .resolve(icon_path, tauri::path::BaseDirectory::Resource) .expect("failed to resolve"), ) - .expect("failed to set icon"), + .expect("failed to set icon") + .as_template(true), )); } From 1c61d3b6b1afb5129375a18c84792b96a16246cc Mon Sep 17 00:00:00 2001 From: Vlad Gerasimov Date: Mon, 28 Jul 2025 18:59:11 +0400 Subject: [PATCH 2/8] fix(tray): set icon as template after build --- src-tauri/src/lib.rs | 3 ++- src-tauri/src/utils.rs | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 191b562..e963f17 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -92,7 +92,7 @@ pub fn run() { .icon(Image::from_path(app.path().resolve( "resources/tray_idle.png", tauri::path::BaseDirectory::Resource, - )?)?.as_template(true)) + )?)?) .menu(&menu) .show_menu_on_left_click(true) .on_menu_event(|app, event| match event.id.as_ref() { @@ -128,6 +128,7 @@ pub fn run() { _ => {} }) .build(app)?; + let _ = tray.set_icon_as_template(true); app.manage(tray); // Get the autostart manager diff --git a/src-tauri/src/utils.rs b/src-tauri/src/utils.rs index 013c736..54bf605 100644 --- a/src-tauri/src/utils.rs +++ b/src-tauri/src/utils.rs @@ -91,9 +91,9 @@ pub fn change_tray_icon(app: &AppHandle, icon: TrayIconState) { .resolve(icon_path, tauri::path::BaseDirectory::Resource) .expect("failed to resolve"), ) - .expect("failed to set icon") - .as_template(true), + .expect("failed to set icon"), )); + let _ = tray.set_icon_as_template(true); } /// Plays an audio resource from the resources directory. From 18786b6f9bc562e974091c4208edb38f4eeeb656 Mon Sep 17 00:00:00 2001 From: CJ Pais Date: Mon, 28 Jul 2025 08:44:55 -0700 Subject: [PATCH 3/8] minor tweak to call --- src-tauri/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index e963f17..f35ed52 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -95,6 +95,7 @@ pub fn run() { )?)?) .menu(&menu) .show_menu_on_left_click(true) + .icon_as_template(true) .on_menu_event(|app, event| match event.id.as_ref() { "settings" => { if let Some(settings_window) = app.get_webview_window("main") { @@ -128,7 +129,6 @@ pub fn run() { _ => {} }) .build(app)?; - let _ = tray.set_icon_as_template(true); app.manage(tray); // Get the autostart manager From 085543d6f34e8d3b87b1ba45c20ace973444391a Mon Sep 17 00:00:00 2001 From: CJ Pais Date: Mon, 28 Jul 2025 08:54:32 -0700 Subject: [PATCH 4/8] make sure to focus window when clicking 'check for updates' --- src-tauri/src/lib.rs | 45 +++++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index f35ed52..414062f 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -26,6 +26,28 @@ struct ShortcutToggleStates { type ManagedToggleState = Mutex; +fn show_main_window(app: &AppHandle) { + if let Some(main_window) = app.get_webview_window("main") { + // First, ensure the window is visible + if let Err(e) = main_window.show() { + eprintln!("Failed to show window: {}", e); + } + // Then, bring it to the front and give it focus + if let Err(e) = main_window.set_focus() { + eprintln!("Failed to focus window: {}", e); + } + // Optional: On macOS, ensure the app becomes active if it was an accessory + #[cfg(target_os = "macos")] + { + if let Err(e) = app.set_activation_policy(tauri::ActivationPolicy::Regular) { + eprintln!("Failed to set activation policy to Regular: {}", e); + } + } + } else { + eprintln!("Main window not found"); + } +} + #[tauri::command] fn trigger_update_check(app: AppHandle) -> Result<(), String> { app.emit("check-for-updates", ()) @@ -98,29 +120,10 @@ pub fn run() { .icon_as_template(true) .on_menu_event(|app, event| match event.id.as_ref() { "settings" => { - if let Some(settings_window) = app.get_webview_window("main") { - // First, ensure the window is visible - if let Err(e) = settings_window.show() { - eprintln!("Failed to show window: {}", e); - } - // Then, bring it to the front and give it focus - if let Err(e) = settings_window.set_focus() { - eprintln!("Failed to focus window: {}", e); - } - // Optional: On macOS, ensure the app becomes active if it was an accessory - #[cfg(target_os = "macos")] - { - if let Err(e) = - app.set_activation_policy(tauri::ActivationPolicy::Regular) - { - eprintln!("Failed to set activation policy to Regular: {}", e); - } - } - } else { - eprintln!("Main window not found"); - } + show_main_window(app); } "check_updates" => { + show_main_window(app); let _ = app.emit("check-for-updates", ()); } "quit" => { From b767eca6fba957a96ceacbb5b83ad145fed3d923 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20=C5=A0korpil?= Date: Mon, 28 Jul 2025 19:52:37 +0200 Subject: [PATCH 5/8] Add language select to settings --- src-tauri/resources/default_settings.json | 3 +- src-tauri/src/lib.rs | 1 + src-tauri/src/managers/transcription.rs | 3 +- src-tauri/src/settings.rs | 8 + src-tauri/src/shortcut.rs | 8 + src/components/settings/LanguageSelector.tsx | 217 +++++++++++++++++++ src/components/settings/Settings.tsx | 2 + src/hooks/useSettings.ts | 6 + src/lib/types.ts | 1 + 9 files changed, 247 insertions(+), 2 deletions(-) create mode 100644 src/components/settings/LanguageSelector.tsx diff --git a/src-tauri/resources/default_settings.json b/src-tauri/resources/default_settings.json index a41e7c5..c7ec6b4 100644 --- a/src-tauri/resources/default_settings.json +++ b/src-tauri/resources/default_settings.json @@ -7,5 +7,6 @@ "default_binding": "Platform-specific: ctrl+space (Windows/Linux), alt+space (macOS)" } }, - "push_to_talk": true + "push_to_talk": true, + "selected_language": "auto" } diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 414062f..11e4d7e 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -180,6 +180,7 @@ pub fn run() { shortcut::change_ptt_setting, shortcut::change_audio_feedback_setting, shortcut::change_translate_to_english_setting, + shortcut::change_selected_language_setting, trigger_update_check, commands::models::get_available_models, commands::models::get_model_info, diff --git a/src-tauri/src/managers/transcription.rs b/src-tauri/src/managers/transcription.rs index 5212f7e..bfd3e79 100644 --- a/src-tauri/src/managers/transcription.rs +++ b/src-tauri/src/managers/transcription.rs @@ -178,7 +178,8 @@ impl TranscriptionManager { // Initialize parameters let mut params = FullParams::new(SamplingStrategy::default()); - params.set_language(Some("auto")); + let language = Some(settings.selected_language.as_str()); + params.set_language(language); params.set_print_special(false); params.set_print_progress(false); params.set_print_realtime(false); diff --git a/src-tauri/src/settings.rs b/src-tauri/src/settings.rs index 7b441ee..f46ff59 100644 --- a/src-tauri/src/settings.rs +++ b/src-tauri/src/settings.rs @@ -28,6 +28,8 @@ pub struct AppSettings { pub selected_output_device: Option, #[serde(default = "default_translate_to_english")] pub translate_to_english: bool, + #[serde(default = "default_selected_language")] + pub selected_language: String, } fn default_model() -> String { @@ -47,6 +49,11 @@ fn default_translate_to_english() -> bool { false } +fn default_selected_language() -> String { + // Default to auto-detection for backward compatibility + "auto".to_string() +} + pub const SETTINGS_STORE_PATH: &str = "settings_store.json"; pub fn get_default_settings() -> AppSettings { @@ -91,6 +98,7 @@ pub fn get_default_settings() -> AppSettings { selected_microphone: None, selected_output_device: None, translate_to_english: false, + selected_language: "auto".to_string(), } } diff --git a/src-tauri/src/shortcut.rs b/src-tauri/src/shortcut.rs index 516a32e..82d54b6 100644 --- a/src-tauri/src/shortcut.rs +++ b/src-tauri/src/shortcut.rs @@ -119,6 +119,14 @@ pub fn change_translate_to_english_setting(app: AppHandle, enabled: bool) -> Res Ok(()) } +#[tauri::command] +pub fn change_selected_language_setting(app: AppHandle, language: String) -> Result<(), String> { + let mut settings = settings::get_settings(&app); + settings.selected_language = language; + settings::write_settings(&app, settings); + Ok(()) +} + fn _register_shortcut(app: &AppHandle, binding: ShortcutBinding) -> Result<(), String> { // Parse shortcut and return error if it fails let shortcut = match binding.current_binding.parse::() { diff --git a/src/components/settings/LanguageSelector.tsx b/src/components/settings/LanguageSelector.tsx new file mode 100644 index 0000000..5619322 --- /dev/null +++ b/src/components/settings/LanguageSelector.tsx @@ -0,0 +1,217 @@ +import React, { useState, useRef, useEffect } from "react"; +import { SettingContainer } from "../ui/SettingContainer"; +import ResetIcon from "../icons/ResetIcon"; +import { useSettings } from "../../hooks/useSettings"; + +interface LanguageSelectorProps { + descriptionMode?: "inline" | "tooltip"; + grouped?: boolean; +} + +const LANGUAGES = [ + { code: "auto", name: "Auto-detect" }, + { code: "ar", name: "Arabic" }, + { code: "bg", name: "Bulgarian" }, + { code: "zh", name: "Chinese" }, + { code: "hr", name: "Croatian" }, + { code: "cs", name: "Czech" }, + { code: "da", name: "Danish" }, + { code: "nl", name: "Dutch" }, + { code: "en", name: "English" }, + { code: "et", name: "Estonian" }, + { code: "fi", name: "Finnish" }, + { code: "fr", name: "French" }, + { code: "de", name: "German" }, + { code: "el", name: "Greek" }, + { code: "he", name: "Hebrew" }, + { code: "hi", name: "Hindi" }, + { code: "hu", name: "Hungarian" }, + { code: "is", name: "Icelandic" }, + { code: "id", name: "Indonesian" }, + { code: "it", name: "Italian" }, + { code: "ja", name: "Japanese" }, + { code: "ko", name: "Korean" }, + { code: "lv", name: "Latvian" }, + { code: "lt", name: "Lithuanian" }, + { code: "no", name: "Norwegian" }, + { code: "fa", name: "Persian" }, + { code: "pl", name: "Polish" }, + { code: "pt", name: "Portuguese" }, + { code: "ro", name: "Romanian" }, + { code: "ru", name: "Russian" }, + { code: "sr", name: "Serbian" }, + { code: "sk", name: "Slovak" }, + { code: "sl", name: "Slovenian" }, + { code: "es", name: "Spanish" }, + { code: "sv", name: "Swedish" }, + { code: "th", name: "Thai" }, + { code: "tr", name: "Turkish" }, + { code: "uk", name: "Ukrainian" }, + { code: "vi", name: "Vietnamese" }, +]; + +export const LanguageSelector: React.FC = ({ + descriptionMode = "tooltip", + grouped = false, +}) => { + const { getSetting, updateSetting, resetSetting, isUpdating } = useSettings(); + const [isOpen, setIsOpen] = useState(false); + const [searchQuery, setSearchQuery] = useState(""); + const dropdownRef = useRef(null); + const searchInputRef = useRef(null); + + const selectedLanguage = getSetting("selected_language") || "auto"; + + useEffect(() => { + const handleClickOutside = (event: MouseEvent) => { + if ( + dropdownRef.current && + !dropdownRef.current.contains(event.target as Node) + ) { + setIsOpen(false); + setSearchQuery(""); + } + }; + + document.addEventListener("mousedown", handleClickOutside); + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + }, []); + + useEffect(() => { + if (isOpen && searchInputRef.current) { + searchInputRef.current.focus(); + } + }, [isOpen]); + + const filteredLanguages = LANGUAGES.filter(language => + language.name.toLowerCase().includes(searchQuery.toLowerCase()) + ); + + const selectedLanguageName = LANGUAGES.find(lang => lang.code === selectedLanguage)?.name || "Auto-detect"; + + const handleLanguageSelect = async (languageCode: string) => { + await updateSetting("selected_language", languageCode); + setIsOpen(false); + setSearchQuery(""); + }; + + const handleReset = async () => { + await resetSetting("selected_language"); + }; + + const handleToggle = () => { + if (isUpdating("selected_language")) return; + setIsOpen(!isOpen); + }; + + const handleSearchChange = (event: React.ChangeEvent) => { + setSearchQuery(event.target.value); + }; + + const handleKeyDown = (event: React.KeyboardEvent) => { + if (event.key === "Enter" && filteredLanguages.length > 0) { + // Select first filtered language on Enter + handleLanguageSelect(filteredLanguages[0].code); + } else if (event.key === "Escape") { + setIsOpen(false); + setSearchQuery(""); + } + }; + + return ( + +
+
+ + + {isOpen && !isUpdating("selected_language") && ( +
+ {/* Search input */} +
+ +
+ +
+ {filteredLanguages.length === 0 ? ( +
+ No languages found +
+ ) : ( + filteredLanguages.map((language) => ( + + )) + )} +
+
+ )} +
+ +
+ {isUpdating("selected_language") && ( +
+
+
+ )} +
+ ); +}; \ No newline at end of file diff --git a/src/components/settings/Settings.tsx b/src/components/settings/Settings.tsx index 9d31e16..b1a7283 100644 --- a/src/components/settings/Settings.tsx +++ b/src/components/settings/Settings.tsx @@ -6,6 +6,7 @@ import { AudioFeedback } from "./AudioFeedback"; import { OutputDeviceSelector } from "./OutputDeviceSelector"; import { HandyShortcut } from "./HandyShortcut"; import { TranslateToEnglish } from "./TranslateToEnglish"; +import { LanguageSelector } from "./LanguageSelector"; import { SettingsGroup } from "../ui/SettingsGroup"; export const Settings: React.FC = () => { @@ -20,6 +21,7 @@ export const Settings: React.FC = () => { + diff --git a/src/hooks/useSettings.ts b/src/hooks/useSettings.ts index e1170ae..7931b33 100644 --- a/src/hooks/useSettings.ts +++ b/src/hooks/useSettings.ts @@ -194,6 +194,11 @@ export const useSettings = (): UseSettingsReturn => { enabled: value, }); break; + case "selected_language": + await invoke("change_selected_language_setting", { + language: value, + }); + break; case "bindings": // Handle bindings separately - they use their own invoke methods break; @@ -237,6 +242,7 @@ export const useSettings = (): UseSettingsReturn => { selected_microphone: "Default", selected_output_device: "Default", translate_to_english: false, + selected_language: "auto", }; const defaultValue = defaults[key]; diff --git a/src/lib/types.ts b/src/lib/types.ts index e8314c1..ff90867 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -28,6 +28,7 @@ export const SettingsSchema = z.object({ selected_microphone: z.string().nullable().optional(), selected_output_device: z.string().nullable().optional(), translate_to_english: z.boolean(), + selected_language: z.string(), }); export const BindingResponseSchema = z.object({ From d52018aa79229cd9634edaa26144120fc17b321a Mon Sep 17 00:00:00 2001 From: CJ Pais Date: Mon, 28 Jul 2025 12:26:26 -0700 Subject: [PATCH 6/8] minor tweaks --- src-tauri/tauri.conf.json | 4 +- src/components/settings/LanguageSelector.tsx | 79 ++++++++++---------- src/components/settings/Settings.tsx | 2 +- 3 files changed, 43 insertions(+), 42 deletions(-) diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 41a7d64..0b78de7 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -14,9 +14,9 @@ { "title": "Handy", "width": 540, - "height": 630, + "height": 670, "minWidth": 540, - "minHeight": 630, + "minHeight": 670, "resizable": true, "maximizable": false } diff --git a/src/components/settings/LanguageSelector.tsx b/src/components/settings/LanguageSelector.tsx index 5619322..c29db8c 100644 --- a/src/components/settings/LanguageSelector.tsx +++ b/src/components/settings/LanguageSelector.tsx @@ -9,45 +9,45 @@ interface LanguageSelectorProps { } const LANGUAGES = [ - { code: "auto", name: "Auto-detect" }, - { code: "ar", name: "Arabic" }, - { code: "bg", name: "Bulgarian" }, - { code: "zh", name: "Chinese" }, - { code: "hr", name: "Croatian" }, - { code: "cs", name: "Czech" }, - { code: "da", name: "Danish" }, - { code: "nl", name: "Dutch" }, + { code: "auto", name: "Auto" }, { code: "en", name: "English" }, - { code: "et", name: "Estonian" }, - { code: "fi", name: "Finnish" }, - { code: "fr", name: "French" }, - { code: "de", name: "German" }, - { code: "el", name: "Greek" }, - { code: "he", name: "Hebrew" }, + { code: "zh", name: "Chinese" }, { code: "hi", name: "Hindi" }, + { code: "es", name: "Spanish" }, + { code: "fr", name: "French" }, + { code: "ar", name: "Arabic" }, + { code: "pt", name: "Portuguese" }, + { code: "ru", name: "Russian" }, + { code: "ja", name: "Japanese" }, + { code: "de", name: "German" }, + { code: "ko", name: "Korean" }, + { code: "it", name: "Italian" }, + { code: "tr", name: "Turkish" }, + { code: "vi", name: "Vietnamese" }, + { code: "pl", name: "Polish" }, + { code: "nl", name: "Dutch" }, + { code: "uk", name: "Ukrainian" }, + { code: "fa", name: "Persian" }, + { code: "th", name: "Thai" }, + { code: "ro", name: "Romanian" }, + { code: "el", name: "Greek" }, + { code: "cs", name: "Czech" }, + { code: "sv", name: "Swedish" }, { code: "hu", name: "Hungarian" }, + { code: "he", name: "Hebrew" }, + { code: "da", name: "Danish" }, + { code: "fi", name: "Finnish" }, + { code: "no", name: "Norwegian" }, + { code: "sk", name: "Slovak" }, + { code: "bg", name: "Bulgarian" }, + { code: "hr", name: "Croatian" }, + { code: "lt", name: "Lithuanian" }, + { code: "sl", name: "Slovenian" }, + { code: "lv", name: "Latvian" }, + { code: "et", name: "Estonian" }, + { code: "sr", name: "Serbian" }, { code: "is", name: "Icelandic" }, { code: "id", name: "Indonesian" }, - { code: "it", name: "Italian" }, - { code: "ja", name: "Japanese" }, - { code: "ko", name: "Korean" }, - { code: "lv", name: "Latvian" }, - { code: "lt", name: "Lithuanian" }, - { code: "no", name: "Norwegian" }, - { code: "fa", name: "Persian" }, - { code: "pl", name: "Polish" }, - { code: "pt", name: "Portuguese" }, - { code: "ro", name: "Romanian" }, - { code: "ru", name: "Russian" }, - { code: "sr", name: "Serbian" }, - { code: "sk", name: "Slovak" }, - { code: "sl", name: "Slovenian" }, - { code: "es", name: "Spanish" }, - { code: "sv", name: "Swedish" }, - { code: "th", name: "Thai" }, - { code: "tr", name: "Turkish" }, - { code: "uk", name: "Ukrainian" }, - { code: "vi", name: "Vietnamese" }, ]; export const LanguageSelector: React.FC = ({ @@ -85,11 +85,12 @@ export const LanguageSelector: React.FC = ({ } }, [isOpen]); - const filteredLanguages = LANGUAGES.filter(language => - language.name.toLowerCase().includes(searchQuery.toLowerCase()) + const filteredLanguages = LANGUAGES.filter((language) => + language.name.toLowerCase().includes(searchQuery.toLowerCase()), ); - const selectedLanguageName = LANGUAGES.find(lang => lang.code === selectedLanguage)?.name || "Auto-detect"; + const selectedLanguageName = + LANGUAGES.find((lang) => lang.code === selectedLanguage)?.name || "Auto"; const handleLanguageSelect = async (languageCode: string) => { await updateSetting("selected_language", languageCode); @@ -123,7 +124,7 @@ export const LanguageSelector: React.FC = ({ return ( @@ -214,4 +215,4 @@ export const LanguageSelector: React.FC = ({ )} ); -}; \ No newline at end of file +}; diff --git a/src/components/settings/Settings.tsx b/src/components/settings/Settings.tsx index b1a7283..b2a33fa 100644 --- a/src/components/settings/Settings.tsx +++ b/src/components/settings/Settings.tsx @@ -15,13 +15,13 @@ export const Settings: React.FC = () => { + - From 9b3ac57ed6b5984d12210cf0ea1b4c104a44afe7 Mon Sep 17 00:00:00 2001 From: CJ Pais Date: Mon, 28 Jul 2025 12:31:43 -0700 Subject: [PATCH 7/8] Release v0.3.2 --- package.json | 2 +- src-tauri/Cargo.lock | 2 +- src-tauri/Cargo.toml | 2 +- src-tauri/tauri.conf.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 0740615..2c43f39 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "handy-app", "private": true, - "version": "0.3.1", + "version": "0.3.2", "type": "module", "scripts": { "dev": "vite", diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 8c86030..2ca528c 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -2003,7 +2003,7 @@ dependencies = [ [[package]] name = "handy" -version = "0.3.1" +version = "0.3.2" dependencies = [ "anyhow", "cpal", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 5e5ac04..79304c9 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "handy" -version = "0.3.1" +version = "0.3.2" description = "Handy" authors = ["cjpais"] edition = "2021" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 0b78de7..6fc07f4 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Handy", - "version": "0.3.1", + "version": "0.3.2", "identifier": "com.pais.handy", "build": { "beforeDevCommand": "bun run dev", From 125d9b1c584d7ad9b771686d5ae3d2a2778e20ab Mon Sep 17 00:00:00 2001 From: CJ Pais Date: Mon, 28 Jul 2025 12:43:15 -0700 Subject: [PATCH 8/8] better default size --- src-tauri/tauri.conf.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 6fc07f4..5a0f2eb 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -14,9 +14,9 @@ { "title": "Handy", "width": 540, - "height": 670, + "height": 680, "minWidth": 540, - "minHeight": 670, + "minHeight": 680, "resizable": true, "maximizable": false }