Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
1eef36a
feat(voice): add OpenAI text-to-speech
johnmatthewtennant Aug 26, 2026
81a92f4
fix(voice): smooth OpenAI speech startup
johnmatthewtennant Aug 26, 2026
93423f0
fix(voice): defer secure credential access
johnmatthewtennant Aug 26, 2026
f94baba
fix(voice): replace stale OpenAI playback
johnmatthewtennant Aug 26, 2026
2077401
fix(voice): keep OpenAI speech portable
johnmatthewtennant Aug 26, 2026
d161a57
fix(voice): harden OpenAI speech lifecycle
johnmatthewtennant Aug 26, 2026
63f1930
fix(voice): follow Goose OpenAI configuration
johnmatthewtennant Aug 26, 2026
625f2bf
fix(voice): keep OpenAI setup and playback synchronized
johnmatthewtennant Aug 26, 2026
094ae31
fix(voice): load OpenAI status without event listener
johnmatthewtennant Aug 26, 2026
743fb2f
fix(voice): keep transcription status in STT layer
johnmatthewtennant Aug 26, 2026
975ea19
fix(voice): gate macOS speech playback internals
johnmatthewtennant Aug 26, 2026
c1d0129
fix(voice): keep OpenAI status cross-platform
johnmatthewtennant Aug 26, 2026
7b75921
feat(voice): add a dedicated OpenAI TTS key
johnmatthewtennant Aug 28, 2026
df18ff5
refactor(voice): isolate OpenAI voice credentials
johnmatthewtennant Aug 28, 2026
afd2c3e
fix(voice): harden OpenAI speech playback
johnmatthewtennant Aug 28, 2026
3bbd028
refactor(voice): name OpenAI TTS readiness explicitly
johnmatthewtennant Aug 28, 2026
f8efa10
fix(voice): harden OpenAI TTS configuration
johnmatthewtennant Aug 28, 2026
74b62f8
fix(voice): guard macOS keyring constant
johnmatthewtennant Aug 28, 2026
8230c7a
refactor(voice): isolate OpenAI credentials
johnmatthewtennant Aug 29, 2026
4ec7e4e
fix(voice): scope TTS helpers to macOS
johnmatthewtennant Aug 29, 2026
f585fee
refactor(voice): share OpenAI credential entry
johnmatthewtennant Aug 29, 2026
be6b2ef
fix(voice): preserve canonical credential results
johnmatthewtennant Aug 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 28 additions & 2 deletions src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ hex = "0.4"
ignore = "0.4.25"
fern = "0.7"
infer = "0.19.0"
keyring = { version = "3.6.3", default-features = false, features = ["apple-native"] }
libc = "0.2"
log = "0.4.29"
mime_guess = "2"
Expand Down
2 changes: 2 additions & 0 deletions src-tauri/src/commands/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,10 @@ pub mod model_setup;
mod native_input_mute;
pub mod native_voice;
pub mod notifications;
pub mod openai_audio;
#[cfg(feature = "block-voice-dictation")]
pub mod openai_realtime;
mod openai_voice_credentials;
pub mod path_resolver;
#[cfg(target_os = "macos")]
mod pocket_audio_player;
Expand Down
2 changes: 2 additions & 0 deletions src-tauri/src/commands/native_voice.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2178,6 +2178,8 @@ pub fn handle_voice_owner_window_destroyed(app: &AppHandle, window_label: &str)
}
app.state::<super::siri_voice::SiriVoiceState>()
.stop_for_window_destroyed(window_label);
app.state::<super::openai_audio::OpenAiVoiceState>()
.stop_for_window_destroyed(window_label);
}

fn software_microphone_mute(native_microphone_mute_control: bool, muted: bool) -> bool {
Expand Down
Loading