Dragging OpenSAK.app to the Trash removes the application bundle but leaves
~/Library/Application Support/opensak/ (databases, config) behind — which is
the correct default per our "opt-in data removal only" principle (see
Roadmap item 1), but most users never clean these up manually if they
genuinely want to.
This was blocked by #825 (settings_store.py branching on os.name == "posix",
which is true on both Linux and macOS, so OpenSAK was actually writing to
~/.config/opensak and ~/.local/share/opensak on Mac instead of the
documented ~/Library/Application Support/opensak/). Now that #825 is fixed,
this can proceed against the correct, verified path.
Goal
A small, separate, optional uninstall helper — downloadable from opensak.com,
not bundled inside the app — that:
- Removes the app bundle itself (
/Applications/OpenSAK.app), or confirms
the user already trashed it.
- Explicitly asks (default: No) whether Application Support data
(databases, settings) should also be removed.
- Only touches the documented path — no guessing, no wildcard deletion.
Suggested form
A minimal signed shell script (.command file) is the lowest-effort option;
a tiny "OpenSAK Uninstaller.app" is friendlier for non-terminal users but
needs its own (lightweight) signing/notarization pass. Recommend starting
with the .command script — cheap to ship, can be upgraded to a proper .app
later without changing the underlying logic.
Acceptance criteria
Out of scope
- Auto-upgrade (Sparkle) — tracked separately, not a dependency of this issue.
- Any change to the DMG install flow itself.
Related
Dragging OpenSAK.app to the Trash removes the application bundle but leaves
~/Library/Application Support/opensak/(databases, config) behind — which isthe correct default per our "opt-in data removal only" principle (see
Roadmap item 1), but most users never clean these up manually if they
genuinely want to.
This was blocked by #825 (settings_store.py branching on
os.name== "posix",which is true on both Linux and macOS, so OpenSAK was actually writing to
~/.config/opensakand~/.local/share/opensakon Mac instead of thedocumented
~/Library/Application Support/opensak/). Now that #825 is fixed,this can proceed against the correct, verified path.
Goal
A small, separate, optional uninstall helper — downloadable from opensak.com,
not bundled inside the app — that:
/Applications/OpenSAK.app), or confirmsthe user already trashed it.
(databases, settings) should also be removed.
Suggested form
A minimal signed shell script (
.commandfile) is the lowest-effort option;a tiny "OpenSAK Uninstaller.app" is friendlier for non-terminal users but
needs its own (lightweight) signing/notarization pass. Recommend starting
with the
.commandscript — cheap to ship, can be upgraded to a proper .applater without changing the underlying logic.
Acceptance criteria
lands in
~/Library/Application Support/opensak/(per macOS: fix data-path bug in settings_store.py (writes to wrong directory) #825's ownverification step, if not already closed by then).
"keep data."
Support location (equivalent of Linux AppImage: in-app uninstall #837's home-directory safety guard —
reuse that pattern/tests if the logic translates).
Out of scope
Related