feat(studio): store-side source filter, provenance pills, one-click recommended sources (v0.29.0)
The Store is now the centre of capability discovery — provider configuration moves out of Settings into the Store itself. Three changes work together: 1. Source filter chips next to the existing status chips: All sources / Native / MCP / n8n. Applied client-side after the hub returns results so toggling is instant. The result count and the "Clear filters" reset both account for the source filter too. 2. Per-card provenance pill (`_ProvenancePill`): shows whether each entry is native, mcp · <provider>, or n8n · <provider> so the operator can triage the source at a glance — same role the "verified" badge plays in commercial app stores. 3. `_RecommendedSourcesStrip` replaces the older `_FederationNudge`. Renders curated public MCP servers (DeepWiki, Semgrep) as one-click cards with an inline `[+ Add]` button — no Settings detour, no form. Both servers are HTTPS Streamable-HTTP, no API key, no subprocess. Useful AI was considered but its 340+ tools would drown the index — kept out of the curated list. The strip auto-hides the moment any federated entry exists. Removed the now-orphaned storeFederationNudge* ARB keys. Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
parent
b5a4c74c4b
commit
581ebbeaf7
8 changed files with 603 additions and 79 deletions
|
|
@ -890,23 +890,101 @@ abstract class AppLocalizations {
|
|||
/// **'Could not load README.'**
|
||||
String get storeDocsErrorGeneric;
|
||||
|
||||
/// No description provided for @storeFederationNudgeTitle.
|
||||
/// No description provided for @storeSourceLabel.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Want more capabilities?'**
|
||||
String get storeFederationNudgeTitle;
|
||||
/// **'Source'**
|
||||
String get storeSourceLabel;
|
||||
|
||||
/// No description provided for @storeFederationNudgeBody.
|
||||
/// No description provided for @storeSourceAll.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Configure an MCP server or n8n endpoint in Settings → MCP Clients / N8N Endpoints. Discovered tools and workflows surface here as `mcp.<server>.<tool>` and `n8n.<endpoint>.<workflow>` capabilities — every Anthropic / community MCP server adds a handful at once.'**
|
||||
String get storeFederationNudgeBody;
|
||||
/// **'All sources'**
|
||||
String get storeSourceAll;
|
||||
|
||||
/// No description provided for @storeFederationNudgeButton.
|
||||
/// No description provided for @storeSourceNative.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Open Settings'**
|
||||
String get storeFederationNudgeButton;
|
||||
/// **'Native'**
|
||||
String get storeSourceNative;
|
||||
|
||||
/// No description provided for @storeSourceMcp.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'MCP'**
|
||||
String get storeSourceMcp;
|
||||
|
||||
/// No description provided for @storeSourceN8n.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'n8n'**
|
||||
String get storeSourceN8n;
|
||||
|
||||
/// No description provided for @storeProvenanceNative.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'native'**
|
||||
String get storeProvenanceNative;
|
||||
|
||||
/// No description provided for @storeProvenanceMcp.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'mcp · {provider}'**
|
||||
String storeProvenanceMcp(String provider);
|
||||
|
||||
/// No description provided for @storeProvenanceN8n.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'n8n · {provider}'**
|
||||
String storeProvenanceN8n(String provider);
|
||||
|
||||
/// No description provided for @storeRecommendedTitle.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Add a public source — one click'**
|
||||
String get storeRecommendedTitle;
|
||||
|
||||
/// No description provided for @storeRecommendedBody.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Curated MCP servers reachable over HTTPS. No subprocess, no API key, no Node. Federated capabilities appear in the store immediately.'**
|
||||
String get storeRecommendedBody;
|
||||
|
||||
/// No description provided for @storeRecommendedAddTooltip.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Add and discover'**
|
||||
String get storeRecommendedAddTooltip;
|
||||
|
||||
/// No description provided for @storeRecommendedAdding.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Adding…'**
|
||||
String get storeRecommendedAdding;
|
||||
|
||||
/// No description provided for @storeRecommendedDeepWikiTagline.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'GitHub repo documentation search (AI-powered)'**
|
||||
String get storeRecommendedDeepWikiTagline;
|
||||
|
||||
/// No description provided for @storeRecommendedSemgrepTagline.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Security scanning for code vulnerabilities'**
|
||||
String get storeRecommendedSemgrepTagline;
|
||||
|
||||
/// No description provided for @storeProviderAddedToast.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Added {name} — {n} federated {n, plural, =1{capability} other{capabilities}}.'**
|
||||
String storeProviderAddedToast(String name, int n);
|
||||
|
||||
/// No description provided for @storeProviderAddFailed.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Could not add {name}: {error}'**
|
||||
String storeProviderAddFailed(String name, String error);
|
||||
|
||||
/// No description provided for @auditTitle.
|
||||
///
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue