@@ -15,9 +15,28 @@ type Settings struct {
1515 HideStale bool `json:"hide_stale"`
1616}
1717
18+ // getSettingsDir returns the configuration directory for settings.
19+ func getSettingsDir () (string , error ) {
20+ configDir , err := os .UserConfigDir ()
21+ if err != nil {
22+ return "" , err
23+ }
24+ return filepath .Join (configDir , "ready-to-review" ), nil
25+ }
26+
1827// loadSettings loads settings from disk or returns defaults.
1928func (app * App ) loadSettings () {
20- settingsPath := filepath .Join (app .cacheDir , "settings.json" )
29+ settingsDir , err := getSettingsDir ()
30+ if err != nil {
31+ log .Printf ("Failed to get settings directory: %v" , err )
32+ // Use defaults
33+ app .enableAudioCues = true
34+ app .enableReminders = true
35+ app .hideStaleIncoming = true
36+ return
37+ }
38+
39+ settingsPath := filepath .Join (settingsDir , "settings.json" )
2140
2241 data , err := os .ReadFile (settingsPath )
2342 if err != nil {
@@ -50,6 +69,12 @@ func (app *App) loadSettings() {
5069
5170// saveSettings saves current settings to disk.
5271func (app * App ) saveSettings () {
72+ settingsDir , err := getSettingsDir ()
73+ if err != nil {
74+ log .Printf ("Failed to get settings directory: %v" , err )
75+ return
76+ }
77+
5378 app .mu .RLock ()
5479 settings := Settings {
5580 EnableAudioCues : app .enableAudioCues ,
@@ -58,7 +83,13 @@ func (app *App) saveSettings() {
5883 }
5984 app .mu .RUnlock ()
6085
61- settingsPath := filepath .Join (app .cacheDir , "settings.json" )
86+ // Ensure directory exists
87+ if err := os .MkdirAll (settingsDir , 0o700 ); err != nil {
88+ log .Printf ("Failed to create settings directory: %v" , err )
89+ return
90+ }
91+
92+ settingsPath := filepath .Join (settingsDir , "settings.json" )
6293
6394 data , err := json .MarshalIndent (settings , "" , " " )
6495 if err != nil {
0 commit comments