@@ -367,27 +367,66 @@ class Application {
367367 const ZOOM_INCREMENT = 0.5 ;
368368 const ZOOM_MAX = 5 ;
369369 const ZOOM_MIN = - 3 ;
370+ const SAVE_DEBOUNCE_DELAY = 500 ; // 500ms delay for save operations
371+
372+ // Debounced save zoom level to preferences
373+ let saveTimeoutId : NodeJS . Timeout | null = null ;
374+ const debouncedSaveZoomLevel = ( zoomLevel : number ) => {
375+ if ( saveTimeoutId ) {
376+ clearTimeout ( saveTimeoutId ) ;
377+ }
378+
379+ saveTimeoutId = setTimeout ( ( ) => {
380+ void defaultPreferencesInstance . savePreferences ( { zoomLevel } ) ;
381+ saveTimeoutId = null ;
382+ } , SAVE_DEBOUNCE_DELAY ) ;
383+ } ;
384+
385+ const restoreZoomLevel = ( ) => {
386+ try {
387+ const preferences = defaultPreferencesInstance . getPreferences ( ) ;
388+ const savedZoomLevel = preferences . zoomLevel ?? ZOOM_DEFAULT ;
389+
390+ // Clamp zoom level to allowed range
391+ const zoomLevel = Math . min (
392+ Math . max ( savedZoomLevel , ZOOM_MIN ) ,
393+ ZOOM_MAX
394+ ) ;
395+
396+ webFrame . setZoomLevel ( zoomLevel ) ;
397+ } catch {
398+ // noop
399+ }
400+ } ;
370401
371402 const zoomReset = ( ) => {
372- return webFrame . setZoomLevel ( ZOOM_DEFAULT ) ;
403+ webFrame . setZoomLevel ( ZOOM_DEFAULT ) ;
404+ debouncedSaveZoomLevel ( ZOOM_DEFAULT ) ;
373405 } ;
406+
374407 const zoomIn = ( ) => {
375408 const currentZoomLevel = webFrame . getZoomLevel ( ) ;
376409 const newZoomLevel = Math . min (
377410 currentZoomLevel + ZOOM_INCREMENT ,
378411 ZOOM_MAX
379412 ) ;
380- return webFrame . setZoomLevel ( newZoomLevel ) ;
413+ webFrame . setZoomLevel ( newZoomLevel ) ;
414+ debouncedSaveZoomLevel ( newZoomLevel ) ;
381415 } ;
416+
382417 const zoomOut = ( ) => {
383418 const currentZoomLevel = webFrame . getZoomLevel ( ) ;
384419 const newZoomLevel = Math . max (
385420 currentZoomLevel - ZOOM_INCREMENT ,
386421 ZOOM_MIN
387422 ) ;
388- return webFrame . setZoomLevel ( newZoomLevel ) ;
423+ webFrame . setZoomLevel ( newZoomLevel ) ;
424+ debouncedSaveZoomLevel ( newZoomLevel ) ;
389425 } ;
390426
427+ // Restore zoom level on startup
428+ restoreZoomLevel ( ) ;
429+
391430 ipcRenderer ?. on ( 'window:zoom-reset' , zoomReset ) ;
392431 ipcRenderer ?. on ( 'window:zoom-in' , zoomIn ) ;
393432 ipcRenderer ?. on ( 'window:zoom-out' , zoomOut ) ;
0 commit comments