Skip to content

fix(appstore): uninstall . no longer removes every installed app - #488

Merged
TeoSlayer merged 1 commit into
mainfrom
fix/uninstall-dot-app-id
Oct 1, 2026
Merged

TeoSlayer merged 1 commit into
mainfrom
fix/uninstall-dot-app-id

Conversation

@TeoSlayer

Copy link
Copy Markdown
Collaborator

The bug

pilotctl appstore uninstall . --yes resolved . to the install root itself. resolveUnder only checks containment, and the root contains itself, so the whole root was removed. Since #473 it also stopped every app's leftover processes. Found during review of #473; the removal itself predates it.

The fix

App ids are single directory names. uninstall, caps and the two next-steps loaders now resolve through resolveAppDir, which rejects ., .. and anything containing a path separator before the containment check. install keeps resolveUnder, because its argument may be a bundle directory.

Test

TestCLIAppStoreUninstallRejectsRootAndNestedIDs runs uninstall <id> --yes for ., .., victim/.. and a/b against a root with two apps and checks both survive. Without the fix it fails: uninstall "." --yes succeeded and both app directories are gone.

go test ./cmd/pilotctl/ passes.

Also

Two comments added in #473 cited the managed-fleet reconcile, which #485 removed; reworded. The catalogue README now names v1.14.1 as the release that knows renamed_to / hidden.

🤖 Generated with Claude Code

`pilotctl appstore uninstall . --yes` resolved "." to the install root
itself: resolveUnder only checks containment, and the root contains
itself. The whole root was removed, and since #473 every app's leftover
processes were stopped too.

App ids are single directory names, so uninstall, caps and the
next-steps loaders now go through resolveAppDir, which rejects ".",
".." and anything with a path separator before the containment check.
install keeps resolveUnder: its argument may be a bundle directory.

Also drop two references to the removed managed-fleet reconcile from the
rename comments added in #473, and name the release in the catalogue
README.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@TeoSlayer
TeoSlayer merged commit ee99dd0 into main Oct 1, 2026
16 checks passed
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.

1 participant