koala73 / koala73/worldmonitor
Pro activation power step re-sells MCP setup to users who already connected a client
- Dominant language
- TypeScript
- Stars
- 86.6k
- Forks
- 13.1k
- Avg merge
- 8h 4m
- Merged PRs (30d)
- 825
Description
Found during review of #5607 (PR: `fix/pro-activation-mcp-deeplink-5607`). Pre-existing behavior, sharpened by that change.
The activation wizard decides whether the power step is already satisfied with:
```ts
// src/components/ProActivationInterstitial.ts — hasUsedPowerFeature()
return loadWidgets().length > 0;
```
Only locally-stored custom widgets count. Server-side MCP client rows (`convex/mcpProTokens.ts`, surfaced by `listMcpClients()` in `src/services/mcp-clients.ts`) are never consulted.
So a Pro subscriber who has already connected Claude Desktop or Cursor still sees the power step presented as unfinished work. #5607 changed that step's pointer copy from "Get your API & MCP keys" to the more directly imperative "Set up MCP", which makes the mismatch more noticeable — the card now asserts a specific task the user may have completed weeks ago.
Options:
- Fold connected MCP clients into the signal: add a bounded `listMcpClients()` probe to `readActivationContextStrict` (which already awaits a network read) and OR a non-empty, non-revoked client list into `config.hasUsedPowerFeature`, keeping the widget check as the synchronous fallback in `readActivationContext`.
- If the extra round trip isn't worth it, soften the label to non-imperative phrasing so it doesn't assert an unfinished task.
Needs a product call on whether the round trip is acceptable, hence not fixed in #5607.
Contributor guide
Research direction
Start with hasUsedPowerFeature() in src/components/ProActivationInterstitial.ts and trace readActivationContextStrict/readActivationContext. Inspect listMcpClients() in src/services/mcp-clients.ts and convex/mcpProTokens.ts, then resolve whether the network read is acceptable or the label should be softened. Done means previously connected, non-revoked MCP clients no longer see an incorrectly unfinished power step, or the wording no longer asserts that task.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- backend, frontend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100