From 461acef756c563d8949b4bd15dd45d47d87d6bb0 Mon Sep 17 00:00:00 2001 From: Alf Eaton Date: Tue, 27 Jan 2026 12:06:56 +0000 Subject: [PATCH] [workbench] Add voice input to the prompt form (#30086) GitOrigin-RevId: cecb613f8d204a68287e93deb6c62d071a039a8d --- services/web/config/settings.defaults.js | 2 +- services/web/frontend/extracted-translations.json | 2 ++ services/web/locales/en.json | 2 ++ services/web/test/acceptance/src/HttpPermissionsPolicyTests.mjs | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/services/web/config/settings.defaults.js b/services/web/config/settings.defaults.js index dc9e376295..12fb83fe3b 100644 --- a/services/web/config/settings.defaults.js +++ b/services/web/config/settings.defaults.js @@ -92,7 +92,6 @@ const httpPermissionsPolicy = { 'idle-detection', 'local-fonts', 'magnetometer', - 'microphone', 'midi', 'otp-credentials', 'payment', @@ -107,6 +106,7 @@ const httpPermissionsPolicy = { allowed: { autoplay: 'self "https://videos.ctfassets.net"', fullscreen: 'self', + 'on-device-speech-recognition': 'self', }, } diff --git a/services/web/frontend/extracted-translations.json b/services/web/frontend/extracted-translations.json index 0d1a8da838..0ea5acf19c 100644 --- a/services/web/frontend/extracted-translations.json +++ b/services/web/frontend/extracted-translations.json @@ -1711,6 +1711,8 @@ "sort_by_x": "", "sort_projects": "", "source": "", + "speak": "", + "speech_input_not_available": "", "spell_check": "", "spellcheck": "", "spellcheck_language": "", diff --git a/services/web/locales/en.json b/services/web/locales/en.json index 84080839e0..3d6fbf66d5 100644 --- a/services/web/locales/en.json +++ b/services/web/locales/en.json @@ -2194,6 +2194,8 @@ "sort_by_x": "Sort by __x__", "sort_projects": "Sort projects", "source": "Source", + "speak": "Speak", + "speech_input_not_available": "Speech input is not yet available in this browser", "spell_check": "Spell check", "spellcheck": "Spellcheck", "spellcheck_language": "Spellcheck language", diff --git a/services/web/test/acceptance/src/HttpPermissionsPolicyTests.mjs b/services/web/test/acceptance/src/HttpPermissionsPolicyTests.mjs index 77c628e2ea..affbbeda98 100644 --- a/services/web/test/acceptance/src/HttpPermissionsPolicyTests.mjs +++ b/services/web/test/acceptance/src/HttpPermissionsPolicyTests.mjs @@ -9,7 +9,7 @@ describe('HttpPermissionsPolicy', function () { const response = await fetch(BASE_URL) expect(response.headers.get('permissions-policy')).to.equal( - 'accelerometer=(), attribution-reporting=(), browsing-topics=(), camera=(), display-capture=(), encrypted-media=(), gamepad=(), geolocation=(), gyroscope=(), hid=(), identity-credentials-get=(), idle-detection=(), local-fonts=(), magnetometer=(), microphone=(), midi=(), otp-credentials=(), payment=(), picture-in-picture=(), screen-wake-lock=(), serial=(), storage-access=(), usb=(), window-management=(), xr-spatial-tracking=(), autoplay=(self "https://videos.ctfassets.net"), fullscreen=(self)' + 'accelerometer=(), attribution-reporting=(), browsing-topics=(), camera=(), display-capture=(), encrypted-media=(), gamepad=(), geolocation=(), gyroscope=(), hid=(), identity-credentials-get=(), idle-detection=(), local-fonts=(), magnetometer=(), midi=(), otp-credentials=(), payment=(), picture-in-picture=(), screen-wake-lock=(), serial=(), storage-access=(), usb=(), window-management=(), xr-spatial-tracking=(), autoplay=(self "https://videos.ctfassets.net"), fullscreen=(self), on-device-speech-recognition=(self)' ) })