Skip to content

Conversation

@samiamjidkhan
Copy link
Collaborator

Motivation

#1075

Changes

  • Added in-app "Uninstall" option under Advanced menu that cleanly removes all system components
  • Added NetworkSetupHelper.uninstall() to remove LaunchDaemon, scripts, logs, and restore network settings
  • Added LaunchAtLoginHelper.disable() to unregister from login items
  • Created standalone uninstall-exo.sh script for users who already deleted the app
  • Added uninstall documentation to README
image image

Why It Works

The in-app uninstaller runs a privileged shell script (via AppleScript) to launchctl bootout the daemon, remove files, and restore the "Automatic" network location. The standalone script provides the same cleanup for users who already deleted the app.

Test Plan

Manual Testing

Hardware: MacBook Pro

  • Built and ran app, verified LaunchDaemon and network location were created
  • Used in-app Uninstall, verified all components removed and network restored to Automatic
  • Rebuilt app, quit normally, ran sudo ./uninstall-exo.sh, verified same cleanup

Automated Testing

N/A

@Evanev7 Evanev7 linked an issue Jan 3, 2026 that may be closed by this pull request
Copy link
Contributor

@AlexCheema AlexCheema left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Will test it in the next app build.

@AlexCheema
Copy link
Contributor

Please fix conflicts @samiamjidkhan

@AlexCheema
Copy link
Contributor

Please run nix fmt @samiamjidkhan

@Evanev7
Copy link
Member

Evanev7 commented Jan 9, 2026

done

@Evanev7 Evanev7 enabled auto-merge (squash) January 9, 2026 14:45
@Evanev7 Evanev7 merged commit d85b5d3 into main Jan 9, 2026
4 checks passed
@Evanev7 Evanev7 deleted the feat/1075 branch January 9, 2026 14:49
garethdaine pushed a commit to garethdaine/exo that referenced this pull request Jan 18, 2026
## Motivation

exo-explore#1075

## Changes

- Added in-app "Uninstall" option under Advanced menu that cleanly
removes all system components
- Added NetworkSetupHelper.uninstall() to remove LaunchDaemon, scripts,
logs, and restore network settings
- Added LaunchAtLoginHelper.disable() to unregister from login items
- Created standalone uninstall-exo.sh script for users who already
deleted the app
- Added uninstall documentation to README

<img width="386" height="577" alt="image"
src="https://github.com/user-attachments/assets/6bbcd18a-992a-409d-8791-ed5e13bbcfe0"
/>
<img width="372" height="432" alt="image"
src="https://github.com/user-attachments/assets/ee76b45d-c111-4807-ab28-3f2f20e01140"
/>


## Why It Works

The in-app uninstaller runs a privileged shell script (via AppleScript)
to launchctl bootout the daemon, remove files, and restore the
"Automatic" network location. The standalone script provides the same
cleanup for users who already deleted the app.

## Test Plan

### Manual Testing
Hardware: MacBook Pro
- Built and ran app, verified LaunchDaemon and network location were
created
- Used in-app Uninstall, verified all components removed and network
restored to Automatic
- Rebuilt app, quit normally, ran sudo ./uninstall-exo.sh, verified same
cleanup

### Automated Testing
N/A

---------

Co-authored-by: Evan <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

MacOS app uninstaller

4 participants