Skip to content

Conversation

@JonasJesus42
Copy link
Contributor

@JonasJesus42 JonasJesus42 commented Jan 2, 2026

What is this contribution about?

Describe your changes and why they're needed.

Screenshots/Demonstration

Add screenshots or a Loom video if your changes affect the UI.

Review Checklist

  • PR title is clear and descriptive
  • Changes are tested and working
  • Documentation is updated (if needed)
  • No breaking changes

Summary by cubic

Add support for new MCP metadata fields and server-side tag/category filters in the store. Improves card/detail display and filter UX for faster discovery.

  • New Features

    • Read _meta.mcp.mesh fields: friendly_name, short_description, mesh_description, tags, categories.
    • Use friendly_name for display names; show short_description on cards and detail; mesh_description in Overview.
    • Display tags and categories in the app sidebar.
    • Fetch available filters via COLLECTION_REGISTRY_APP_FILTERS; apply selected tags/categories via LIST API.
    • New filter UI with dropdowns, search, counts, quick category chips, and clear-all.
  • Bug Fixes

    • Send filters to the API and include them in query keys to refetch correctly.
    • Handle FilterItem {value, count} shape.
    • Remove local tag/category filtering; keep client-side search only.

Written for commit 0e33369. Summary will update on new commits.

- Add friendly_name, short_description, mesh_description, tags, and categories to type definitions
- Prioritize friendly_name for display names across all views (cards and detail page)
- Use short_description in cards and below app name in detail page
- Use mesh_description for Overview section with fallback to server.description
- Display tags and categories in sidebar Technical Details section (after Version)
- Update extractCardDisplayData and extractItemData to handle new fields with proper priority fallbacks
- Add findFiltersToolName utility to find COLLECTION_REGISTRY_APP_FILTERS tool
- Create StoreFilters component with clickable tag/category chips
- Fetch available filters from registry (optional - not all registries support it)
- Filter items locally by selected tags and categories
- Add clear filters button when filters are active
- Update RegistryFiltersResponse to use FilterItem[] instead of string[]
- Update StoreFilters component to access .value from filter items
- Display filter count in parentheses next to filter value
- Update StoreDiscoveryUI props to use FilterItem type
- Replace inline filter list with compact dropdown popovers
- Add search functionality inside filter dropdowns
- Sort filters by count (most popular first)
- Show only top 6 categories as quick access chips
- Display selected filters as removable chips below
- Add badge count on dropdown buttons when filters selected
- Much cleaner UI that scales with many filters
- Lift filter state to StoreDiscovery component
- Include tags and categories in LIST API call params
- Include filters in query key so data refetches when filters change
- Remove local tag/category filtering (only search remains client-side)
- Add loading state while filtering
- Add empty state for no matching filters
@github-actions
Copy link
Contributor

github-actions bot commented Jan 2, 2026

🧪 Benchmark

Should we run the MCP Gateway benchmark for this PR?

React with 👍 to run the benchmark.

Reaction Action
👍 Run quick benchmark (10 & 128 tools)

Benchmark will run on the next push after you react.

@github-actions
Copy link
Contributor

github-actions bot commented Jan 2, 2026

Release Options

Should a new version be published when this PR is merged?

React with an emoji to vote on the release type:

Reaction Type Next Version
👍 Prerelease 1.0.16-alpha.1
🎉 Patch 1.0.16
❤️ Minor 1.1.0
🚀 Major 2.0.0

Current version: 1.0.15

Deployment

  • Deploy to production (triggers ArgoCD sync after Docker image is published)

Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 9 files

Prompt for AI agents (all issues)

Check if these issues are valid — if so, understand the root cause of each and fix them.


<file name="apps/mesh/src/web/components/store/store-discovery.tsx">

<violation number="1" location="apps/mesh/src/web/components/store/store-discovery.tsx:74">
P2: `isLoading` from `useSuspenseInfiniteQuery` is always `false` after the component renders (suspense handles the loading state). Use `isFetching` instead to detect when data is being refetched due to filter changes.

The fix also excludes `isFetchingNextPage` to avoid showing the filtering indicator during pagination.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

JonasJesus42 and others added 5 commits January 2, 2026 15:21
- isLoading from useSuspenseInfiniteQuery is always false after render
- Use isFetching to detect when data is being refetched due to filter changes
- Exclude isFetchingNextPage to avoid showing filter indicator during pagination
- Apply biome formatting
- Use useSuspenseQuery for filters instead of useQuery
- Split into StoreDiscoveryContent (with filters) and StoreDiscoveryWithoutFilters
- Both filters and list now load together, preventing layout shift
- Filters appear at the same time as the content
- Add placeholderData: keepPreviousData to list queries
- Cards remain visible while fetching new filtered results
- No more full page reload when changing filters
- Filtering indicator still shows loading state
- Use useInfiniteQuery with keepPreviousData for list with filters
- Keep useSuspenseInfiniteQuery for list without filters (initial load)
- Add isInitialLoading prop to handle initial loading state
- Show subtle 'Updating results...' indicator above cards while filtering
- Cards remain visible during filter changes - no more full page reload
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.

3 participants