@@ -39,6 +39,10 @@ import { activeWorkspaceIdAtom } from "../atoms/workspaces";
3939import { useSessionNotifications } from "../features/notifications" ;
4040import { supervisorCyclesAtom , supervisorsAtom } from "../features/supervisor/atoms" ;
4141import { terminalMetaAtomFamily } from "../features/terminal-panel/atoms" ;
42+ import {
43+ resolveTerminalCopyOnSelectSetting ,
44+ terminalPreferencesAtom ,
45+ } from "../features/terminal-panel/preferences" ;
4246import {
4347 editorRefreshTokenAtomFamily ,
4448 fileTreeStaleAtomFamily ,
@@ -173,6 +177,7 @@ export function AppProviders({ children }: AppProvidersProps) {
173177 // Supervisor state atoms
174178 const setSupervisors = useSetAtom ( supervisorsAtom ) ;
175179 const setSupervisorCycles = useSetAtom ( supervisorCyclesAtom ) ;
180+ const setTerminalPreferences = useSetAtom ( terminalPreferencesAtom ) ;
176181
177182 // Get Jotai store for writing to atomFamily atoms
178183 const store = useStore ( ) ;
@@ -197,6 +202,31 @@ export function AppProviders({ children }: AppProvidersProps) {
197202 dispatchRef . current = dispatch ;
198203 } , [ dispatch ] ) ;
199204
205+ useEffect ( ( ) => {
206+ if ( connectionStatus !== "connected" ) {
207+ return ;
208+ }
209+
210+ let cancelled = false ;
211+
212+ const hydrateTerminalPreferences = async ( ) => {
213+ const result = await dispatch < Record < string , unknown > > ( "settings.get" , { } ) ;
214+ if ( cancelled || ! result . ok || ! result . data ) {
215+ return ;
216+ }
217+
218+ setTerminalPreferences ( {
219+ copyOnSelect : resolveTerminalCopyOnSelectSetting ( result . data ) ,
220+ } ) ;
221+ } ;
222+
223+ void hydrateTerminalPreferences ( ) ;
224+
225+ return ( ) => {
226+ cancelled = true ;
227+ } ;
228+ } , [ connectionStatus , dispatch , setTerminalPreferences ] ) ;
229+
200230 useEffect ( ( ) => {
201231 activeWorkspaceIdRef . current = activeWorkspaceId ;
202232 } , [ activeWorkspaceId ] ) ;
0 commit comments