[FEATURE] Interactive selection of installed plugins for removal
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 3.8k
- Forks
- 362
- Avg merge
- 1d 17h
- Merged PRs (30d)
- 132
Description
Is your feature request related to a problem? Please describe.
Managing plugins currently requires browsing a static table, copying or typing a package identifier, and running a separate command. Removal is particularly awkward when installed identities include a host, repository, and package subpath. Users should be able to select installed plugins by their recognizable names without reconstructing those identifiers.
#2749 already proposes interactive package selection for installation/search. This request covers the complementary removal workflow so adding and removing plugins can share a consistent interaction.
Describe the solution you'd like
Provide an opt-in interactive removal picker, for example apm uninstall --interactive and apm uninstall --interactive --global (exact command shape subject to maintainer preference).
- List installed plugins in the selected project or user scope, showing their name, source, and scope.
- Support filtering and selecting one or more plugins.
- Resolve selections directly to their installed dependency identities, including marketplace packages, rather than asking users to type aliases or full paths.
- Show the removal plan and ask for confirmation before applying it through the existing uninstall implementation. Cancellation must leave the installation unchanged.
- Keep scripted/non-interactive commands available; do not hang waiting for input in CI or without a suitable terminal.
Align the picker with the installation UX proposed in #2749. Reuse existing dependency ownership and removal rules rather than adding a separate cleanup mechanism.
Describe alternatives you've considered
Use apm deps list, then copy the installed dependency into apm uninstall. This works as a command-line workflow, but long identifiers and truncated terminal tables make it inconvenient. A shell wrapper with an external picker would duplicate scope and identity handling outside APM.
Additional context
Requested after exercising marketplace registration, global installation, updates, and removal with APM 0.30.0. The goal is a small, consistent interactive workflow for adding and removing plugins, not a full-screen package-management application.
Related installation proposal: #2749.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the existing uninstall implementation and the interactive installation proposal in #2749; compare how apm deps list exposes installed identities and scope. Define the picker flow around filtering, multi-selection, confirmation, and cancellation while preserving scripted behavior. Done means selected plugins resolve through existing removal rules without changing the installation on cancellation or waiting for input in unsuitable terminals.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- cli, tooling
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100