feat(shell): zoom shortcuts on Windows and Linux (#1109)

Cmd/Ctrl and +/−/0 (numpad included) now zoom the app on every platform.
Windows/Linux run without a menu (`setMenu(null)`), so the shortcuts are a
renderer key binding in `WorkspaceKeyboardShortcutsService` calling a new
synchronous, preload-local bridge method `adjustZoomLevel`, which steps the
frame-bound temporary level through `webFrame.setZoomLevel` — never a
main-process `webContents.setZoomLevel`, whose per-URL entry the app's
`file://` path routing resets. Step and limits live in
`libs/shared/interfaces` (`stepZoomLevel`: 0.5 per press like Electron's
zoomIn/zoomOut roles, clamped to levels −4…6). On macOS the renderer sees the
key before the application menu, and `preventDefault()` keeps the menu role
from stepping a second time (Electron only performs the menu key equivalent
in its unhandled-keyboard-event hook).

Persistence is unchanged: the main process still reads the live level back
on close, quit and reload. The zoom E2E now drives the real shortcuts (in,
out, numpad, reset). Help dialog entries added and translated for all
locales; contract updated in docs/architecture/workspace-shell.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
4grayandClaude Fable 5.1 committed 2026-09-18 22:09:31 +02:00
1 parent ab239b5043
commit 67327bfd29
38 files changed
+705 -31

No files matched your search

+2
View File
@@ -1741,6 +1741,8 @@
"OPEN_RECENTLY_VIEWED": "فتح العناصر المشاهدة مؤخرًا",
"SUBMIT_SHELL_SEARCH": "إرسال بحث مساحة العمل",
"TOGGLE_WINDOW_FULLSCREEN": "تبديل ملء الشاشة لنافذة التطبيق",
"ZOOM_IN_OUT": "تكبير التطبيق أو تصغيره",
"RESET_ZOOM": "إعادة ضبط تكبير التطبيق",
"TOGGLE_SIDEBAR": "تبديل الشريط الجانبي",
"M3U_CHANNEL_NUMBER": "اختيار قناة M3U حسب الرقم",
"PLAY_PAUSE": "تشغيل أو إيقاف تشغيل Embedded MPV مؤقتًا",
+2
View File
@@ -1741,6 +1741,8 @@
"OPEN_RECENTLY_VIEWED": "حل المتشافين مؤخراً",
"SUBMIT_SHELL_SEARCH": "رسل بحث مساحة العمل",
"TOGGLE_WINDOW_FULLSCREEN": "بدل ملء الشاشة ديال نافذة التطبيق",
"ZOOM_IN_OUT": "كبر ولا صغر التطبيق",
"RESET_ZOOM": "رجع تكبير التطبيق للأصل",
"TOGGLE_SIDEBAR": "بدل عرض الشريط الجانبي",
"M3U_CHANNEL_NUMBER": "اختار قناة M3U بالرقم",
"PLAY_PAUSE": "شغل ولا وقف مؤقتاً تشغيل MPV المدمج",
+2
View File
@@ -1741,6 +1741,8 @@
"OPEN_RECENTLY_VIEWED": "Адкрыць нядаўна прагледжанае",
"SUBMIT_SHELL_SEARCH": "Выканаць пошук у працоўнай вобласці",
"TOGGLE_WINDOW_FULLSCREEN": "Пераключыць поўнаэкранны рэжым акна праграмы",
"ZOOM_IN_OUT": "Павялічыць або паменшыць маштаб праграмы",
"RESET_ZOOM": "Скінуць маштаб праграмы",
"TOGGLE_SIDEBAR": "Пераключыць бакавую панэль",
"M3U_CHANNEL_NUMBER": "Выбраць M3U-канал па нумары",
"PLAY_PAUSE": "Прайграць або прыпыніць Embedded MPV",
+2
View File
@@ -1741,6 +1741,8 @@
"OPEN_RECENTLY_VIEWED": "Kürzlich angesehene Elemente öffnen",
"SUBMIT_SHELL_SEARCH": "Arbeitsbereichssuche absenden",
"TOGGLE_WINDOW_FULLSCREEN": "Vollbild für das App-Fenster umschalten",
"ZOOM_IN_OUT": "App vergrößern oder verkleinern",
"RESET_ZOOM": "App-Zoom zurücksetzen",
"TOGGLE_SIDEBAR": "Seitenleiste umschalten",
"M3U_CHANNEL_NUMBER": "M3U-Kanal per Nummer auswählen",
"PLAY_PAUSE": "Eingebettete MPV-Wiedergabe starten oder pausieren",
+2
View File
@@ -1741,6 +1741,8 @@
"OPEN_RECENTLY_VIEWED": "Άνοιγμα πρόσφατων προβολών",
"SUBMIT_SHELL_SEARCH": "Υποβολή αναζήτησης χώρου εργασίας",
"TOGGLE_WINDOW_FULLSCREEN": "Εναλλαγή πλήρους οθόνης παραθύρου εφαρμογής",
"ZOOM_IN_OUT": "Μεγέθυνση ή σμίκρυνση της εφαρμογής",
"RESET_ZOOM": "Επαναφορά ζουμ εφαρμογής",
"TOGGLE_SIDEBAR": "Εναλλαγή πλαϊνής μπάρας",
"M3U_CHANNEL_NUMBER": "Επιλογή καναλιού M3U με αριθμό",
"PLAY_PAUSE": "Αναπαραγωγή ή παύση ενσωματωμένου MPV",
+2
View File
@@ -1741,6 +1741,8 @@
"OPEN_RECENTLY_VIEWED": "Open recently viewed",
"SUBMIT_SHELL_SEARCH": "Submit workspace search",
"TOGGLE_WINDOW_FULLSCREEN": "Toggle app window fullscreen",
"ZOOM_IN_OUT": "Zoom the app in or out",
"RESET_ZOOM": "Reset app zoom",
"TOGGLE_SIDEBAR": "Toggle sidebar",
"M3U_CHANNEL_NUMBER": "Select M3U channel by number",
"PLAY_PAUSE": "Play or pause embedded MPV playback",
+2
View File
@@ -1741,6 +1741,8 @@
"OPEN_RECENTLY_VIEWED": "Abrir vistos recientemente",
"SUBMIT_SHELL_SEARCH": "Enviar búsqueda del espacio de trabajo",
"TOGGLE_WINDOW_FULLSCREEN": "Alternar pantalla completa de la ventana de la aplicación",
"ZOOM_IN_OUT": "Acercar o alejar la aplicación",
"RESET_ZOOM": "Restablecer el zoom de la aplicación",
"TOGGLE_SIDEBAR": "Mostrar u ocultar barra lateral",
"M3U_CHANNEL_NUMBER": "Seleccionar canal M3U por número",
"PLAY_PAUSE": "Reproducir o pausar MPV integrado",
+2
View File
@@ -1741,6 +1741,8 @@
"OPEN_RECENTLY_VIEWED": "Ouvrir les éléments récemment consultés",
"SUBMIT_SHELL_SEARCH": "Lancer la recherche dans l’espace de travail",
"TOGGLE_WINDOW_FULLSCREEN": "Activer ou quitter le plein écran de la fenêtre",
"ZOOM_IN_OUT": "Zoom avant ou arrière sur l'application",
"RESET_ZOOM": "Réinitialiser le zoom de l'application",
"TOGGLE_SIDEBAR": "Afficher ou masquer la barre latérale",
"M3U_CHANNEL_NUMBER": "Sélectionner une chaîne M3U par numéro",
"PLAY_PAUSE": "Lire ou mettre en pause la lecture MPV intégrée",
+2
View File
@@ -1741,6 +1741,8 @@
"OPEN_RECENTLY_VIEWED": "Legutóbbi megtekintések megnyitása",
"SUBMIT_SHELL_SEARCH": "Munkaterületi keresés indítása",
"TOGGLE_WINDOW_FULLSCREEN": "Az alkalmazásablak teljes képernyős módjának be- vagy kikapcsolása",
"ZOOM_IN_OUT": "Az alkalmazás nagyítása vagy kicsinyítése",
"RESET_ZOOM": "Az alkalmazás nagyításának visszaállítása",
"TOGGLE_SIDEBAR": "Oldalsáv megjelenítése vagy elrejtése",
"M3U_CHANNEL_NUMBER": "M3U-csatorna kiválasztása a számának beírásával",
"PLAY_PAUSE": "A beágyazott MPV lejátszásának indítása vagy szüneteltetése",
+2
View File
@@ -1741,6 +1741,8 @@
"OPEN_RECENTLY_VIEWED": "Apri visti di recente",
"SUBMIT_SHELL_SEARCH": "Invia ricerca nell’area di lavoro",
"TOGGLE_WINDOW_FULLSCREEN": "Attiva/disattiva schermo intero della finestra",
"ZOOM_IN_OUT": "Ingrandisci o riduci l'applicazione",
"RESET_ZOOM": "Reimposta lo zoom dell'applicazione",
"TOGGLE_SIDEBAR": "Mostra/nascondi barra laterale",
"M3U_CHANNEL_NUMBER": "Seleziona canale M3U per numero",
"PLAY_PAUSE": "Riproduci o metti in pausa MPV integrato",
+2
View File
@@ -1741,6 +1741,8 @@
"OPEN_RECENTLY_VIEWED": "最近視聴した項目を開く",
"SUBMIT_SHELL_SEARCH": "ワークスペース検索を実行",
"TOGGLE_WINDOW_FULLSCREEN": "アプリウィンドウの全画面表示を切り替え",
"ZOOM_IN_OUT": "アプリを拡大または縮小",
"RESET_ZOOM": "アプリのズームをリセット",
"TOGGLE_SIDEBAR": "サイドバーを切り替え",
"M3U_CHANNEL_NUMBER": "番号で M3U チャンネルを選択",
"PLAY_PAUSE": "Embedded MPV の再生/一時停止",
+2
View File
@@ -1741,6 +1741,8 @@
"OPEN_RECENTLY_VIEWED": "최근 시청 항목 열기",
"SUBMIT_SHELL_SEARCH": "워크스페이스 검색 실행",
"TOGGLE_WINDOW_FULLSCREEN": "앱 창 전체 화면 전환",
"ZOOM_IN_OUT": "앱 확대 또는 축소",
"RESET_ZOOM": "앱 확대/축소 초기화",
"TOGGLE_SIDEBAR": "사이드바 전환",
"M3U_CHANNEL_NUMBER": "번호로 M3U 채널 선택",
"PLAY_PAUSE": "Embedded MPV 재생 또는 일시정지",
+2
View File
@@ -1741,6 +1741,8 @@
"OPEN_RECENTLY_VIEWED": "Recent bekeken openen",
"SUBMIT_SHELL_SEARCH": "Werkruimtezoekopdracht uitvoeren",
"TOGGLE_WINDOW_FULLSCREEN": "Volledig scherm voor het app-venster in- of uitschakelen",
"ZOOM_IN_OUT": "App in- of uitzoomen",
"RESET_ZOOM": "App-zoom herstellen",
"TOGGLE_SIDEBAR": "Zijbalk in- of uitschakelen",
"M3U_CHANNEL_NUMBER": "M3U-kanaal selecteren op nummer",
"PLAY_PAUSE": "Ingebedde MPV-weergave afspelen of pauzeren",
+2
View File
@@ -1741,6 +1741,8 @@
"OPEN_RECENTLY_VIEWED": "Otwórz ostatnio oglądane",
"SUBMIT_SHELL_SEARCH": "Uruchom wyszukiwanie w obszarze roboczym",
"TOGGLE_WINDOW_FULLSCREEN": "Przełącz pełny ekran okna aplikacji",
"ZOOM_IN_OUT": "Powiększ lub pomniejsz aplikację",
"RESET_ZOOM": "Zresetuj powiększenie aplikacji",
"TOGGLE_SIDEBAR": "Przełącz pasek boczny",
"M3U_CHANNEL_NUMBER": "Wybierz kanał M3U według numeru",
"PLAY_PAUSE": "Odtwórz lub wstrzymaj osadzony MPV",
+2
View File
@@ -1741,6 +1741,8 @@
"OPEN_RECENTLY_VIEWED": "Abrir assistidos recentemente",
"SUBMIT_SHELL_SEARCH": "Enviar pesquisa da área de trabalho",
"TOGGLE_WINDOW_FULLSCREEN": "Alternar tela cheia da janela do aplicativo",
"ZOOM_IN_OUT": "Aumentar ou diminuir o zoom do aplicativo",
"RESET_ZOOM": "Redefinir o zoom do aplicativo",
"TOGGLE_SIDEBAR": "Alternar barra lateral",
"M3U_CHANNEL_NUMBER": "Selecionar canal M3U por número",
"PLAY_PAUSE": "Reproduzir ou pausar reprodução do Embedded MPV",
+2
View File
@@ -1741,6 +1741,8 @@
"OPEN_RECENTLY_VIEWED": "Открыть недавно просмотренное",
"SUBMIT_SHELL_SEARCH": "Отправить поиск в рабочей области",
"TOGGLE_WINDOW_FULLSCREEN": "Переключить полноэкранный режим окна приложения",
"ZOOM_IN_OUT": "Увеличить или уменьшить масштаб приложения",
"RESET_ZOOM": "Сбросить масштаб приложения",
"TOGGLE_SIDEBAR": "Показать или скрыть боковую панель",
"M3U_CHANNEL_NUMBER": "Выбрать канал M3U по номеру",
"PLAY_PAUSE": "Запустить или приостановить воспроизведение во встроенном MPV",
+2
View File
@@ -1741,6 +1741,8 @@
"OPEN_RECENTLY_VIEWED": "Son görüntülenenleri aç",
"SUBMIT_SHELL_SEARCH": "Çalışma alanı aramasını gönder",
"TOGGLE_WINDOW_FULLSCREEN": "Uygulama penceresi tam ekranını aç/kapat",
"ZOOM_IN_OUT": "Uygulamayı yakınlaştır veya uzaklaştır",
"RESET_ZOOM": "Uygulama yakınlaştırmasını sıfırla",
"TOGGLE_SIDEBAR": "Kenar çubuğunu aç/kapat",
"M3U_CHANNEL_NUMBER": "M3U kanalını numarayla seç",
"PLAY_PAUSE": "Gömülü MPV oynatmasını oynat veya duraklat",
+2
View File
@@ -1741,6 +1741,8 @@
"OPEN_RECENTLY_VIEWED": "打开最近观看",
"SUBMIT_SHELL_SEARCH": "提交工作区搜索",
"TOGGLE_WINDOW_FULLSCREEN": "切换应用窗口全屏",
"ZOOM_IN_OUT": "放大或缩小应用",
"RESET_ZOOM": "重置应用缩放",
"TOGGLE_SIDEBAR": "切换侧边栏",
"M3U_CHANNEL_NUMBER": "按数字选择 M3U 频道",
"PLAY_PAUSE": "播放或暂停嵌入式 MPV 播放",
+2
View File
@@ -1741,6 +1741,8 @@
"OPEN_RECENTLY_VIEWED": "開啟最近觀看",
"SUBMIT_SHELL_SEARCH": "提交工作區搜尋",
"TOGGLE_WINDOW_FULLSCREEN": "切換應用程式視窗全螢幕",
"ZOOM_IN_OUT": "放大或縮小應用程式",
"RESET_ZOOM": "重設應用程式縮放",
"TOGGLE_SIDEBAR": "切換側邊欄",
"M3U_CHANNEL_NUMBER": "按數字選擇 M3U 頻道",
"PLAY_PAUSE": "播放或暫停嵌入式 MPV 播放",