← 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
M app/EXO/EXO/ExoProcessController.swift
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 →