From fe4e2851f7cf91a3f2681b81b8c28555ac9dedf0 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 3 Jul 2026 22:28:35 -0300 Subject: [PATCH 1/2] fix: refresh recognition.lang before dictation start After a runtime locale change (setLocale from Settings), the cached recognition object retains its boot-time lang, causing dictation to run in the wrong language. Set lang immediately before .start() at the plain dictation path in _startMicCapture, matching the pattern already used in _ensureSpeechRecognition(). Closes #5483 --- static/boot.js | 1 + 1 file changed, 1 insertion(+) diff --git a/static/boot.js b/static/boot.js index 529b12d6..d1f71deb 100644 --- a/static/boot.js +++ b/static/boot.js @@ -930,6 +930,7 @@ function _micToastKeyForRecognitionError(error){ } if(recognition && !_forceMediaRecorder && !_rawAudioMode){ _activeCaptureMode='speech'; + recognition.lang=(typeof _locale!=='undefined'&&_locale._speech)||'en-US'; recognition.start(); _setRecording(true); return; From 8b6ababf8c337767a7be948b9762f5c245ff067b Mon Sep 17 00:00:00 2001 From: nesquena-hermes Date: Sat, 4 Jul 2026 02:42:56 +0000 Subject: [PATCH 2/2] docs(changelog): #5496 refresh dictation recognition.lang after locale change (#5483) --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a3acb033..c15d5f96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ ### Fixed +- **Dictation now uses your current language after you change it in Settings.** After switching the interface language at runtime, plain dictation (the mic button) kept using the language it booted with, so speech was transcribed in the wrong language until a reload. Dictation now refreshes the speech-recognition language right before it starts listening — matching what voice mode already did. Thanks @webtecnica. (#5496, #5483) - **After an in-place upgrade, an old tab now tells you to refresh instead of silently breaking.** When the server was upgraded under a still-open tab, that tab kept running the pre-upgrade front-end against the newer server — leaving the new-session button dead and session switching broken, with no indication why (only opening a fresh tab helped). The tab now compares its own bundle version against the server's on boot (and while visible), and shows a "hard refresh" recovery banner when they differ, so you can restore full functionality with one click. The banner only appears on a genuine version mismatch (never when the server can't report its version), and coexists with the existing update banner. Thanks @rodboev. (#5480, #5428) - **A fullscreen Mermaid diagram now fits the screen instead of overflowing it.** Opening a Mermaid diagram in the fullscreen lightbox could render it larger than the viewport, clipping the edges so you had to pan around to read it. The lightbox now fits the diagram to a ~90%-of-viewport envelope on open, so the whole thing is visible at once (zoom and pan still work from there). Inline diagram sizing is unchanged — this only affects the fullscreen view, and it coexists with the inline readable-sizing fix from the previous release. Thanks @rodboev. (#5452, #5413) - **The sidebar skips its redundant rebuild on idle polls without ever going stale.** The session list re-applied `/api/sessions` and rebuilt the whole sidebar DOM on every 30-second poll even when nothing had changed; it now compares a signature of the full applied rows (plus the hidden nesting rows, projects, filters, density, selection, and counts) and skips the rebuild only when everything the sidebar renders is byte-identical. The signature covers every rendered field — streaming/pending state, attention dots, source/read-only/worktree/lineage/model/profile metadata — so a real change never gets skipped, and recovering from a loading skeleton or a "couldn't load conversations" banner always forces a real repaint. Part of the response to "WebUI feels laggy." Thanks @ai-ag2026. (#5467, #5455)