langgenius / langgenius/dify

Installed plugins still appear in remaining Marketplace selector results

Open
#42,222 0 comments 1 reaction 0 assignees View on GitHub
Dominant language
TypeScript
Stars
156k
Forks
24.6k
Avg merge
22h 9m
Merged PRs (30d)
610

Description

### Self Checks

- [x] I have read the Contributing Guide and Language Policy.
- [x] I have searched for existing issues and pull requests, including closed ones.
- [x] I confirm that I am using English to submit this report.

### Dify version

main

### Cloud or Self Hosted

Both

### Problem

PR #42199 fixed the shared Workflow/Agent tool picker so Marketplace search results exclude plugins that are already installed.

Three sibling selector surfaces on current `main` still combine an installed-provider list with unfiltered Marketplace results:

1. **Data Sources** — installed providers are rendered from `dataSources`, while Marketplace pages were flattened without excluding their `plugin_id`s.
2. **Triggers / Start Blocks** — installed trigger providers are already collected in `providerMap`, but regular Marketplace search results did not use that map for filtering.
3. **Agent Strategies** — installed strategy providers come from `useStrategyProviders()`, while Marketplace agent plugins were passed through unchanged (the variable was even named `notInstalledPlugins`).

An already-installed plugin can therefore appear both as an installed provider and again as a Marketplace install result in the same selector.

### Expected behavior

Selector Marketplace results should exclude plugin IDs already present in that selector's installed-provider state, matching the behavior established in #42199.

### Proposed bounded scope

- reuse each selector's existing installed-provider state;
- filter only the Marketplace result list;
- keep available Marketplace plugins visible;
- add focused regressions for Data Source, Trigger, and Agent Strategy selectors;
- leave provider loading, installation, strategy selection/version switching, featured behavior, and Marketplace APIs unchanged.

Implementation: #42223.

Contributor guide

Open the contributing guide

Research direction

Start with the Data Sources, Triggers/Start Blocks, and Agent Strategies selector entry points, using the filtering behavior established by PR #42199 as the reference. Trace each selector's installed-provider state and Marketplace result handling, then add focused regressions for all three surfaces. Done means installed plugin IDs are absent from Marketplace results while available plugins remain visible.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
frontend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
72/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.