[object Object]

← back to Exo

Dont save to app directory (#1435)

64179c6fc12c3a3dae3b76dde899272af2d15090 · 2026-02-10 18:41:36 +0000 · rltakashige

## Motivation

App keeps losing Local Network permissions.

## Changes

Don't save stuff to the app directory anymore. Instead, save to .exo.

## Why It Works

<!-- Explain why your approach solves the problem -->

## Test Plan

### Manual Testing
Before:
<img width="1512" height="106" alt="image"
src="https://github.com/user-attachments/assets/544ef57e-b626-484d-941f-2472969aa208"
/>

After:
<img width="433" height="53" alt="Screenshot 2026-02-10 at 17 43 06"
src="https://github.com/user-attachments/assets/3de2856b-cdf6-4b35-aa8f-50440686344f"
/>


### Automated Testing
<!-- Describe changes to automated tests, or how existing tests cover
this change -->
<!-- - -->

Files touched

Diff

commit 64179c6fc12c3a3dae3b76dde899272af2d15090
Author: rltakashige <rl.takashige@gmail.com>
Date:   Tue Feb 10 18:41:36 2026 +0000

    Dont save to app directory (#1435)
    
    ## Motivation
    
    App keeps losing Local Network permissions.
    
    ## Changes
    
    Don't save stuff to the app directory anymore. Instead, save to .exo.
    
    ## Why It Works
    
    <!-- Explain why your approach solves the problem -->
    
    ## Test Plan
    
    ### Manual Testing
    Before:
    <img width="1512" height="106" alt="image"
    src="https://github.com/user-attachments/assets/544ef57e-b626-484d-941f-2472969aa208"
    />
    
    After:
    <img width="433" height="53" alt="Screenshot 2026-02-10 at 17 43 06"
    src="https://github.com/user-attachments/assets/3de2856b-cdf6-4b35-aa8f-50440686344f"
    />
    
    
    ### Automated Testing
    <!-- Describe changes to automated tests, or how existing tests cover
    this change -->
    <!-- - -->
---
 app/EXO/EXO/ExoProcessController.swift | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/app/EXO/EXO/ExoProcessController.swift b/app/EXO/EXO/ExoProcessController.swift
index 2dec3868..704b9d4f 100644
--- a/app/EXO/EXO/ExoProcessController.swift
+++ b/app/EXO/EXO/ExoProcessController.swift
@@ -28,6 +28,10 @@ final class ExoProcessController: ObservableObject {
         }
     }
 
+    static let exoDirectoryURL: URL = {
+        URL(fileURLWithPath: NSHomeDirectory()).appendingPathComponent(".exo")
+    }()
+
     @Published private(set) var status: Status = .stopped
     @Published private(set) var lastError: String?
     @Published private(set) var launchCountdownSeconds: Int?
@@ -78,7 +82,11 @@ final class ExoProcessController: ObservableObject {
 
             let child = Process()
             child.executableURL = executableURL
-            child.currentDirectoryURL = runtimeURL
+            let exoHomeURL = Self.exoDirectoryURL
+            try? FileManager.default.createDirectory(
+                at: exoHomeURL, withIntermediateDirectories: true
+            )
+            child.currentDirectoryURL = exoHomeURL
             child.environment = makeEnvironment(for: runtimeURL)
 
             child.standardOutput = FileHandle.nullDevice

← 305a3c8b event_log: move event log from unbounded in-memory list to d  ·  back to Exo  ·  gossipsub: stop silent message dropping and warn (#1434) 1f242e8e →