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
|
|
@ -489,14 +489,69 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||
String get storeDocsErrorGeneric => 'Could not load README.';
|
||||
|
||||
@override
|
||||
String get storeFederationNudgeTitle => 'Want more capabilities?';
|
||||
String get storeSourceLabel => 'Source';
|
||||
|
||||
@override
|
||||
String get storeFederationNudgeBody =>
|
||||
'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 storeSourceAll => 'All sources';
|
||||
|
||||
@override
|
||||
String get storeFederationNudgeButton => 'Open Settings';
|
||||
String get storeSourceNative => 'Native';
|
||||
|
||||
@override
|
||||
String get storeSourceMcp => 'MCP';
|
||||
|
||||
@override
|
||||
String get storeSourceN8n => 'n8n';
|
||||
|
||||
@override
|
||||
String get storeProvenanceNative => 'native';
|
||||
|
||||
@override
|
||||
String storeProvenanceMcp(String provider) {
|
||||
return 'mcp · $provider';
|
||||
}
|
||||
|
||||
@override
|
||||
String storeProvenanceN8n(String provider) {
|
||||
return 'n8n · $provider';
|
||||
}
|
||||
|
||||
@override
|
||||
String get storeRecommendedTitle => 'Add a public source — one click';
|
||||
|
||||
@override
|
||||
String get storeRecommendedBody =>
|
||||
'Curated MCP servers reachable over HTTPS. No subprocess, no API key, no Node. Federated capabilities appear in the store immediately.';
|
||||
|
||||
@override
|
||||
String get storeRecommendedAddTooltip => 'Add and discover';
|
||||
|
||||
@override
|
||||
String get storeRecommendedAdding => 'Adding…';
|
||||
|
||||
@override
|
||||
String get storeRecommendedDeepWikiTagline =>
|
||||
'GitHub repo documentation search (AI-powered)';
|
||||
|
||||
@override
|
||||
String get storeRecommendedSemgrepTagline =>
|
||||
'Security scanning for code vulnerabilities';
|
||||
|
||||
@override
|
||||
String storeProviderAddedToast(String name, int n) {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
n,
|
||||
locale: localeName,
|
||||
other: 'capabilities',
|
||||
one: 'capability',
|
||||
);
|
||||
return 'Added $name — $n federated $_temp0.';
|
||||
}
|
||||
|
||||
@override
|
||||
String storeProviderAddFailed(String name, String error) {
|
||||
return 'Could not add $name: $error';
|
||||
}
|
||||
|
||||
@override
|
||||
String get auditTitle => 'Audit';
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue