diff --git a/apps/array/src/renderer/components/CursorGlow.tsx b/apps/array/src/renderer/components/CursorGlow.tsx index 9a125343d..59051f920 100644 --- a/apps/array/src/renderer/components/CursorGlow.tsx +++ b/apps/array/src/renderer/components/CursorGlow.tsx @@ -1,8 +1,10 @@ +import { useSettingsStore } from "@features/settings/stores/settingsStore"; import { useThemeStore } from "@stores/themeStore"; import { useEffect, useState } from "react"; export function CursorGlow() { const isDarkMode = useThemeStore((state) => state.isDarkMode); + const cursorGlow = useSettingsStore((state) => state.cursorGlow); const [mousePos, setMousePos] = useState<{ x: number; y: number } | null>( null, ); @@ -16,8 +18,7 @@ export function CursorGlow() { return () => window.removeEventListener("mousemove", handleMouseMove); }, []); - // Only show in dark mode - if (!isDarkMode || !mousePos) return null; + if (!isDarkMode || !cursorGlow || !mousePos) return null; return (
{ + track(ANALYTICS_EVENTS.SETTING_CHANGED, { + setting_name: "cursor_glow", + new_value: checked, + old_value: cursorGlow, + }); + setCursorGlow(checked); + }, + [cursorGlow, setCursorGlow], + ); const handleTerminalLayoutChange = useCallback( (value: "split" | "tabbed") => { @@ -237,9 +255,14 @@ export function SettingsView() { - - Dark mode - + + + Dark mode + + + Use dark theme for the interface + + + {isDarkMode && ( + + + + Cursor glow + + + Show a glow effect that follows your cursor + + + + + )} + Terminal layout diff --git a/apps/array/src/renderer/features/settings/stores/settingsStore.ts b/apps/array/src/renderer/features/settings/stores/settingsStore.ts index 05b5a07af..7051ae7ba 100644 --- a/apps/array/src/renderer/features/settings/stores/settingsStore.ts +++ b/apps/array/src/renderer/features/settings/stores/settingsStore.ts @@ -15,6 +15,7 @@ interface SettingsStore { createPR: boolean; defaultModel: string; desktopNotifications: boolean; + cursorGlow: boolean; setAutoRunTasks: (autoRun: boolean) => void; setDefaultRunMode: (mode: DefaultRunMode) => void; @@ -24,6 +25,7 @@ interface SettingsStore { setCreatePR: (createPR: boolean) => void; setDefaultModel: (model: string) => void; setDesktopNotifications: (enabled: boolean) => void; + setCursorGlow: (enabled: boolean) => void; } export const useSettingsStore = create()( @@ -37,6 +39,7 @@ export const useSettingsStore = create()( createPR: true, defaultModel: DEFAULT_MODEL, desktopNotifications: true, + cursorGlow: false, setAutoRunTasks: (autoRun) => set({ autoRunTasks: autoRun }), setDefaultRunMode: (mode) => set({ defaultRunMode: mode }), @@ -48,6 +51,7 @@ export const useSettingsStore = create()( setDefaultModel: (model) => set({ defaultModel: model }), setDesktopNotifications: (enabled) => set({ desktopNotifications: enabled }), + setCursorGlow: (enabled) => set({ cursorGlow: enabled }), }), { name: "settings-storage",