From fd60f815c047f4361dc8da42e2fa13161059d41c Mon Sep 17 00:00:00 2001 From: H-Chris233 Date: Mon, 4 May 2026 20:51:40 +0800 Subject: [PATCH] Accept /audio base URLs when validating ASR transcription endpoint Some OpenAI-compatible deployments expose ASR under a base URL that already ends with /audio. ASR validation now treats that as a valid prefix and appends only /transcriptions to avoid generating /audio/audio/transcriptions. Constraint: Keep ASR validation URL normalization conservative and backwards-compatible Rejected: Full URL path rewrite heuristics | risk of breaking custom reverse-proxy layouts Confidence: high Scope-risk: narrow Tested: cargo test -q --- openless-all/app/src-tauri/src/commands.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/openless-all/app/src-tauri/src/commands.rs b/openless-all/app/src-tauri/src/commands.rs index fd2ce834..57b19613 100644 --- a/openless-all/app/src-tauri/src/commands.rs +++ b/openless-all/app/src-tauri/src/commands.rs @@ -300,6 +300,9 @@ fn asr_transcriptions_url(base_url: &str) -> Result { if trimmed.ends_with("/audio/transcriptions") { return Ok(trimmed.to_string()); } + if trimmed.ends_with("/audio") { + return Ok(format!("{trimmed}/transcriptions")); + } Ok(format!("{trimmed}/audio/transcriptions")) } @@ -734,6 +737,10 @@ mod tests { asr_transcriptions_url("https://api.openai.com/v1").unwrap(), "https://api.openai.com/v1/audio/transcriptions" ); + assert_eq!( + asr_transcriptions_url("https://api.openai.com/v1/audio").unwrap(), + "https://api.openai.com/v1/audio/transcriptions" + ); assert_eq!( asr_transcriptions_url("https://api.openai.com/v1/audio/transcriptions").unwrap(), "https://api.openai.com/v1/audio/transcriptions"