-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Description
App Version
v3.21.3
API Provider
Anthropic
Model Used
Claude 4 Sonnet
π Steps to Reproduce
Description
Currently, the marketplace automatically fetches data from remote APIs, which can cause issues for users behind VPNs or firewalls (especially those blocked by Cloudflare). This results in:
- Infinite API retry loops for VPN users
- Unnecessary network requests when MCP features are disabled
- Poor user experience with constant loading states
Proposed Solution
Replace automatic API fetching with a manual refresh button in the marketplace UI.
Current Behavior
- Marketplace automatically fetches remote data on load
- 5-minute cache with automatic retry when expired
- No user control over when API calls are made
Proposed Behavior
- Show local installed items by default (no API calls)
- Add a prominent "π Refresh Marketplace" button
- Only fetch remote data when user explicitly clicks refresh
- Maintain 5-minute cache for successful requests
Benefits
- Better UX for VPN users - No more infinite loading/retry loops
- Reduced network usage - API calls only when needed
- Faster initial load - Show local items immediately
- User control - Users decide when to fetch remote data
- Respects MCP settings - No API calls when MCP is disabled
Implementation Suggestions
UI Changes
// Add refresh button to MarketplaceView header
<div className="flex gap-2 items-center">
<Button onClick={handleRefreshMarketplace}>
π {t("marketplace:refresh")}
</Button>
<Button onClick={onDone}>
{t("marketplace:done")}
</Button>
</div>Backend Changes
// Modify getCurrentItems to prioritize local items
async getCurrentItems(): Promise<MarketplaceItem[]> {
// Return local installed items by default
return this.getLocalInstalledItems()
}
// Keep existing getMarketplaceItems for manual refresh
async getMarketplaceItems(): Promise<{items: MarketplaceItem[]}> {
// Existing remote API logic
}User Stories
As a VPN user, I want to avoid automatic API calls that get blocked by Cloudflare, so I can use the marketplace without infinite loading states.
As a developer, I want to see my locally installed modes/MCPs immediately, without waiting for remote API calls.
As a user with MCP disabled, I don't want the extension making unnecessary API calls to marketplace endpoints.
Alternative Solutions Considered
- Better error handling - Still results in failed API calls
- Longer cache duration - Delays the problem but doesn't solve it
- Request deduplication - Reduces calls but doesn't eliminate them
Related Issues
This addresses the core issue where marketplace API calls:
- Block UI for VPN users
- Consume bandwidth unnecessarily
- Ignore MCP disabled state
- Provide poor offline experience
Priority
Medium-High - Affects user experience for VPN users and those with limited connectivity.
π₯ Outcome Summary
Environment:
- VSCode Extension: Roo Code
- Affected Users: VPN users, users with MCP disabled, users with limited connectivity
- Current Workaround: Disable MCP entirely to avoid API calls
π Relevant Logs or Errors (Optional)
Metadata
Metadata
Assignees
Labels
Type
Projects
Status