@@ -16,55 +16,23 @@ import {
1616 Slider ,
1717 Switch ,
1818 Text ,
19- TextField ,
2019} from "@radix-ui/themes" ;
2120import { useTRPC } from "@renderer/trpc" ;
2221import { getCloudUrlFromRegion } from "@shared/constants/oauth" ;
2322import { ANALYTICS_EVENTS } from "@shared/types/analytics" ;
24- import { useSettingsStore as useTerminalSettingsStore } from "@stores/settingsStore" ;
2523import type { ThemePreference } from "@stores/themeStore" ;
2624import { useThemeStore } from "@stores/themeStore" ;
2725import { useMutation , useQuery } from "@tanstack/react-query" ;
2826import { track } from "@utils/analytics" ;
2927import { playCompletionSound } from "@utils/sounds" ;
30- import { useCallback , useEffect , useRef , useState } from "react" ;
28+ import { useCallback , useEffect } from "react" ;
3129import { toast } from "sonner" ;
3230
33- const CUSTOM_TERMINAL_FONT_VALUE = "custom" ;
34- const CUSTOM_TERMINAL_FONT_COMMIT_DELAY_MS = 400 ;
35- const TERMINAL_FONT_PRESETS = [
36- {
37- label : "System monospace" ,
38- value : "monospace" ,
39- } ,
40- {
41- label : "MesloLGL Nerd Font Mono" ,
42- value : '"MesloLGL Nerd Font Mono", monospace' ,
43- } ,
44- {
45- label : "JetBrains Mono" ,
46- value : '"JetBrains Mono", monospace' ,
47- } ,
48- ] ;
49-
5031export function GeneralSettings ( ) {
5132 const trpcReact = useTRPC ( ) ;
5233 // Appearance state
5334 const theme = useThemeStore ( ( state ) => state . theme ) ;
5435 const setTheme = useThemeStore ( ( state ) => state . setTheme ) ;
55- const terminalFontFamily = useTerminalSettingsStore (
56- ( state ) => state . terminalFontFamily ,
57- ) ;
58- const terminalFontFamilyLoaded = useTerminalSettingsStore (
59- ( state ) => state . terminalFontFamilyLoaded ,
60- ) ;
61- const loadTerminalFontFamily = useTerminalSettingsStore (
62- ( state ) => state . loadTerminalFontFamily ,
63- ) ;
64- const setTerminalFontFamily = useTerminalSettingsStore (
65- ( state ) => state . setTerminalFontFamily ,
66- ) ;
67-
6836 // Power state
6937 const { preventSleepWhileRunning, setPreventSleepWhileRunning } =
7038 useSettingsStore ( ) ;
@@ -150,35 +118,6 @@ export function GeneralSettings() {
150118 [ desktopNotifications , setDesktopNotifications ] ,
151119 ) ;
152120
153- const [ customTerminalFont , setCustomTerminalFont ] = useState < string > ( "" ) ;
154- const customFontSaveTimeoutRef = useRef < ReturnType < typeof setTimeout > | null > (
155- null ,
156- ) ;
157-
158- useEffect ( ( ) => {
159- if ( ! terminalFontFamilyLoaded ) {
160- loadTerminalFontFamily ( ) ;
161- }
162- } , [ terminalFontFamilyLoaded , loadTerminalFontFamily ] ) ;
163-
164- useEffect ( ( ) => {
165- return ( ) => {
166- if ( customFontSaveTimeoutRef . current ) {
167- clearTimeout ( customFontSaveTimeoutRef . current ) ;
168- customFontSaveTimeoutRef . current = null ;
169- }
170- } ;
171- } , [ ] ) ;
172-
173- useEffect ( ( ) => {
174- const matchesPreset = TERMINAL_FONT_PRESETS . some (
175- ( preset ) => preset . value === terminalFontFamily ,
176- ) ;
177- if ( ! matchesPreset ) {
178- setCustomTerminalFont ( terminalFontFamily ) ;
179- }
180- } , [ terminalFontFamily ] ) ;
181-
182121 // Appearance handlers
183122 const handleThemeChange = useCallback (
184123 ( value : ThemePreference ) => {
@@ -192,91 +131,6 @@ export function GeneralSettings() {
192131 [ theme , setTheme ] ,
193132 ) ;
194133
195- const clearCustomFontSaveTimeout = useCallback ( ( ) => {
196- if ( customFontSaveTimeoutRef . current ) {
197- clearTimeout ( customFontSaveTimeoutRef . current ) ;
198- customFontSaveTimeoutRef . current = null ;
199- }
200- } , [ ] ) ;
201-
202- const commitCustomTerminalFont = useCallback (
203- ( value : string ) => {
204- const normalizedValue = value . trim ( ) ;
205- if ( ! normalizedValue ) {
206- return ;
207- }
208-
209- const previousValue = terminalFontFamily . trim ( ) || "monospace" ;
210- if ( normalizedValue === previousValue ) {
211- return ;
212- }
213-
214- track ( ANALYTICS_EVENTS . SETTING_CHANGED , {
215- setting_name : "terminal_font_family" ,
216- new_value : normalizedValue ,
217- old_value : previousValue ,
218- } ) ;
219-
220- setTerminalFontFamily ( normalizedValue ) ;
221- } ,
222- [ setTerminalFontFamily , terminalFontFamily ] ,
223- ) ;
224-
225- const handleTerminalFontChange = useCallback (
226- ( value : string ) => {
227- clearCustomFontSaveTimeout ( ) ;
228-
229- if ( value === CUSTOM_TERMINAL_FONT_VALUE ) {
230- if ( ! customTerminalFont . trim ( ) ) {
231- setTerminalFontFamily ( "" ) ;
232- return ;
233- }
234-
235- commitCustomTerminalFont ( customTerminalFont ) ;
236- return ;
237- }
238-
239- if ( value === terminalFontFamily ) {
240- return ;
241- }
242-
243- track ( ANALYTICS_EVENTS . SETTING_CHANGED , {
244- setting_name : "terminal_font_family" ,
245- new_value : value ,
246- old_value : terminalFontFamily ,
247- } ) ;
248-
249- setTerminalFontFamily ( value ) ;
250- } ,
251- [
252- clearCustomFontSaveTimeout ,
253- commitCustomTerminalFont ,
254- customTerminalFont ,
255- setTerminalFontFamily ,
256- terminalFontFamily ,
257- ] ,
258- ) ;
259-
260- const handleCustomTerminalFontChange = useCallback (
261- ( value : string ) => {
262- setCustomTerminalFont ( value ) ;
263- clearCustomFontSaveTimeout ( ) ;
264- customFontSaveTimeoutRef . current = setTimeout ( ( ) => {
265- commitCustomTerminalFont ( value ) ;
266- } , CUSTOM_TERMINAL_FONT_COMMIT_DELAY_MS ) ;
267- } ,
268- [ clearCustomFontSaveTimeout , commitCustomTerminalFont ] ,
269- ) ;
270-
271- const handleCustomTerminalFontBlur = useCallback ( ( ) => {
272- clearCustomFontSaveTimeout ( ) ;
273- commitCustomTerminalFont ( customTerminalFont ) ;
274- } , [
275- clearCustomFontSaveTimeout ,
276- commitCustomTerminalFont ,
277- customTerminalFont ,
278- ] ) ;
279-
280134 // Chat handlers
281135 const handleCompletionSoundChange = useCallback (
282136 ( value : CompletionSound ) => {
@@ -354,12 +208,6 @@ export function GeneralSettings() {
354208 [ hedgehogMode , setHedgehogMode ] ,
355209 ) ;
356210
357- const terminalFontSelection = TERMINAL_FONT_PRESETS . some (
358- ( preset ) => preset . value === terminalFontFamily ,
359- )
360- ? terminalFontFamily
361- : CUSTOM_TERMINAL_FONT_VALUE ;
362-
363211 return (
364212 < Flex direction = "column" >
365213 { /* Appearance */ }
@@ -385,49 +233,6 @@ export function GeneralSettings() {
385233 </ Select . Root >
386234 </ SettingRow >
387235
388- < SettingRow
389- label = "Terminal font"
390- description = "Uses locally installed fonts. Nerd fonts are recommended for prompt glyphs"
391- noBorder = { terminalFontSelection !== CUSTOM_TERMINAL_FONT_VALUE }
392- >
393- < Select . Root
394- value = { terminalFontSelection }
395- onValueChange = { handleTerminalFontChange }
396- size = "1"
397- >
398- < Select . Trigger style = { { minWidth : "140px" } } />
399- < Select . Content >
400- { TERMINAL_FONT_PRESETS . map ( ( preset ) => (
401- < Select . Item key = { preset . value } value = { preset . value } >
402- { preset . label }
403- </ Select . Item >
404- ) ) }
405- < Select . Item value = { CUSTOM_TERMINAL_FONT_VALUE } >
406- Custom font family
407- </ Select . Item >
408- </ Select . Content >
409- </ Select . Root >
410- </ SettingRow >
411-
412- { terminalFontSelection === CUSTOM_TERMINAL_FONT_VALUE && (
413- < SettingRow label = "Custom font family" noBorder >
414- < Flex direction = "column" gap = "1" style = { { minWidth : "200px" } } >
415- < TextField . Root
416- size = "1"
417- placeholder = "Enter font family"
418- value = { customTerminalFont }
419- onChange = { ( event ) =>
420- handleCustomTerminalFontChange ( event . target . value )
421- }
422- onBlur = { handleCustomTerminalFontBlur }
423- />
424- < Text size = "1" color = "gray" >
425- Example: MesloLGL Nerd Font Mono
426- </ Text >
427- </ Flex >
428- </ SettingRow >
429- ) }
430-
431236 { /* Notifications */ }
432237 < Text
433238 size = "2"
0 commit comments