Skip to content

Fix Cursor popup compatibility and add LM Studio onboarding#11226

Open
bcharleson wants to merge 5 commits intocontinuedev:mainfrom
bcharleson:fix/cursor-antigravity-compat
Open

Fix Cursor popup compatibility and add LM Studio onboarding#11226
bcharleson wants to merge 5 commits intocontinuedev:mainfrom
bcharleson:fix/cursor-antigravity-compat

Conversation

@bcharleson
Copy link

@bcharleson bcharleson commented Mar 9, 2026

Summary

  • prevent duplicate Continue activation failures in Cursor by skipping duplicate host activation and tolerating duplicate command registration
  • make shared selector popups and provider/model dropdowns render opaquely so they do not inherit Cursor's translucent surfaces
  • extend local onboarding so LM Studio can be configured alongside Ollama, including detected local model selection and onboarding coverage

Test plan

  • run npm run tsc:check in core
  • run npm run build in gui
  • run npm run package in extensions/vscode
  • run npm run vitest -- onboarding.vitest.ts in core/config
  • install continue-1.3.33.vsix in Cursor and verify opaque popups plus LM Studio onboarding
  • install the VSIX in Antigravity and verify extension activation, popup rendering, and local model onboarding

Made with Cursor


Summary by cubic

Fixes Cursor activation conflicts and translucent popups. Adds LM Studio onboarding with auto-detected local models and provider selection alongside Ollama.

  • Bug Fixes

    • Skip duplicate extension-host activation in Cursor and tolerate duplicate command registration to prevent activation failures.
    • Render shared selector popups and model/provider dropdowns opaquely to avoid inheriting Cursor’s translucent surfaces.
    • Fallback to DevTools when continue.viewLogs isn’t registered.
    • Add minimal tailwind.config.cjs for CI formatting, sync VS Code extension lockfile to 1.3.33, and ignore local-artifacts/.
  • New Features

    • LM Studio local onboarding: detect available models, auto-assign roles (chat/autocomplete/embed), and write config.
    • Support listing LM Studio models in core and passing detected titles through the onboarding flow.
    • UI toggle to pick local provider (Ollama or LM Studio) and show detected LM Studio models and connection status.
    • Added vitest for onboarding model selection and config generation.

Written for commit 47ae277. Summary will update on new commits.

Prevent duplicate activation issues in Cursor, make selector popups render opaquely, and extend local onboarding so LM Studio can be configured alongside Ollama.

Made-with: Cursor
Keep local VSIX references and notes out of the repo so Cursor and Antigravity testing assets stay local-only.

Made-with: Cursor
@bcharleson bcharleson requested a review from a team as a code owner March 9, 2026 12:10
@bcharleson bcharleson requested review from Patrick-Erichsen and removed request for a team March 9, 2026 12:10
@dosubot dosubot bot added the size:XL This PR changes 500-999 lines, ignoring generated files. label Mar 9, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Mar 9, 2026

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

Record the dependency lockfile updates from the local build and packaging workflow used to validate the Cursor and LM Studio compatibility changes.

Made-with: Cursor
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.

2 issues found across 16 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="gui/src/components/OnboardingCard/components/OnboardingLocalTab.tsx">

<violation number="1" location="gui/src/components/OnboardingCard/components/OnboardingLocalTab.tsx:98">
P2: Provider switching can use stale `availableLocalModels`, enabling Connect and submitting onboarding with models from the previous provider.</violation>
</file>

<file name="extensions/vscode/src/activation/activate.ts">

<violation number="1" location="extensions/vscode/src/activation/activate.ts:14">
P1: Duplicate-host detection uses a self-contributed command ID, which can be present during normal startup and cause activation to be skipped.</violation>
</file>

Since this is your first cubic review, here's how it works:

  • cubic automatically reviews your code and comments on bugs and improvements
  • Teach cubic by replying to its comments. cubic learns from your replies and gets better over time
  • Add one-off context when rerunning by tagging @cubic-dev-ai with guidance or docs links (including llms.txt)
  • Ask questions if you need clarification on any suggestion

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


async function isDuplicateHostActivation(): Promise<boolean> {
const registeredCommands = await vscode.commands.getCommands(true);
return registeredCommands.includes("continue.focusContinueInput");
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Mar 9, 2026

Choose a reason for hiding this comment

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

P1: Duplicate-host detection uses a self-contributed command ID, which can be present during normal startup and cause activation to be skipped.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At extensions/vscode/src/activation/activate.ts, line 14:

<comment>Duplicate-host detection uses a self-contributed command ID, which can be present during normal startup and cause activation to be skipped.</comment>

<file context>
@@ -9,7 +9,19 @@ import { GlobalContext } from "core/util/GlobalContext";
 
+async function isDuplicateHostActivation(): Promise<boolean> {
+  const registeredCommands = await vscode.commands.getCommands(true);
+  return registeredCommands.includes("continue.focusContinueInput");
+}
+
</file context>
Fix with Cubic

]);

useEffect(() => {
setHasLoadedChatModel(false);
Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot Mar 9, 2026

Choose a reason for hiding this comment

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

P2: Provider switching can use stale availableLocalModels, enabling Connect and submitting onboarding with models from the previous provider.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At gui/src/components/OnboardingCard/components/OnboardingLocalTab.tsx, line 98:

<comment>Provider switching can use stale `availableLocalModels`, enabling Connect and submitting onboarding with models from the previous provider.</comment>

<file context>
@@ -31,67 +31,90 @@ export function OnboardingLocalTab({ isDialog }: OnboardingLocalTabProps) {
+  ]);
+
+  useEffect(() => {
+    setHasLoadedChatModel(false);
+  }, [localProvider]);
 
</file context>
Suggested change
setHasLoadedChatModel(false);
setHasLoadedChatModel(false);
setAvailableLocalModels([]);
setIsProviderConnected(false);
Fix with Cubic

Resolve the package-lock merge conflicts and bring the feature branch back in sync with upstream main.

Made-with: Cursor
@bcharleson
Copy link
Author

I have read the CLA Document and I hereby sign the CLA

@bcharleson
Copy link
Author

recheck

Make the repo-root Tailwind config safe for CI formatting and resync the VS Code extension lockfile so npm ci and downstream VS Code checks pass.

Made-with: Cursor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL This PR changes 500-999 lines, ignoring generated files.

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

1 participant