Curated catalog apps could be installed, stopped, and force-reinstalled, but never removed — the only path off a device was manual docker + DB surgery. Custom apps already had delete; this adds the equivalent for curated apps. POST /api/system/services/uninstall stops and removes the app's container (optionally its image, same best-effort semantics as custom app delete) and flips the record back to not-installed so the card returns to the available catalog. Host bind-mount data is deliberately left on disk, so a later reinstall picks the app back up where it left off — unlike force-reinstall, which clears volumes. Guards: custom apps are rejected (use delete), dependency services are rejected, and uninstalling a not-installed app is a 409. UI: installed curated cards get an Uninstall action in the card menu, with a confirm modal that explains data is preserved and offers the same remove-image checkbox as custom app delete. |
||
|---|---|---|
| .. | ||
| app | ||
| components | ||
| context | ||
| css | ||
| hooks | ||
| layouts | ||
| lib | ||
| pages | ||
| providers | ||
| tsconfig.json | ||