Skip to content

fix(mobile): keep providers listed when their health probe lags - #74

Merged
ScriptedAlchemy merged 3 commits into
mainfrom
fix/mobile-model-mentions
Nov 6, 2026
Merged

ScriptedAlchemy merged 3 commits into
mainfrom
fix/mobile-model-mentions

Conversation

@ScriptedAlchemy

Copy link
Copy Markdown
Owner

On iOS, Claude disappeared from both the model picker and @opus autocomplete while Claude subagents were running fine in the same thread; only Cursor's identically named models came back. Mobile erased a provider's whole group whenever its snapshot said not-installed or signed-out — states a pending or failed account probe reports — and mentions additionally required status ready, so a warning probe hid the provider there too. Web keeps an enabled provider visible with its reason, and the server still delegates through a warning.

Keep enabled providers in the mobile picker and mark their models unavailable instead of erasing the group (Antigravity keeps its setup gate, since its catalog only exists once set up). Rows already render unavailable models as dimmed and block committing them, and default resolution already skips them. Let mobile and web mentions name models from warning-status providers, matching the server's delegation constraints. Also forward the model short name in mobile mention search, like web already does.

Proof is at the filtering layer that was wrong: new cases in modelOptions.test.ts (signed-out and not-checked-yet providers stay listed with unavailable models, and are skipped as defaults), use-composer-command-menu.test.ts, and composerModelMentions.test.ts (warning providers are suggested) fail before this change and pass after; vp run check:changed is green. No before/after capture: reproducing the report needs a provider snapshot stuck in a pending/failed probe state, which is what the new tests feed the real builders.

Done with Muse Code (muse-wonder-full-1.0).

On iOS, Claude disappeared from both the model picker and @Opus autocomplete while Claude subagents were running fine in the same thread. Mobile removed a provider's whole group whenever the snapshot said not-installed or signed-out (states a pending or failed account probe reports), and model mentions additionally required status ready, so a warning probe hid the provider there too. Web keeps an enabled provider visible with its reason.

Keep enabled providers in the mobile picker and mark their models unavailable instead of erasing the group (Antigravity keeps its setup gate, since its catalog only exists once set up). Let mobile and web mentions name models from warning-status providers, matching what the server still delegates through. Also forward the model short name in mobile mention search, like web already does.

Done with Muse Code (muse-wonder-full-1.0).
@changeset-bot

changeset-bot Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 1030f63

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@ScriptedAlchemy

Copy link
Copy Markdown
Owner Author

Verified on iOS (iPhone 17 simulator, dev client + Metro from this branch, isolated seeded backend):

  • Model picker lists Claude with Opus/Sonnet/Fable/Haiku 5.5; selecting Opus 5.5 sticks in the composer.
  • @opus in the composer suggests "Claude Opus 5.5, Claude" and inserts model:claudeAgent/claude-opus-5-5.
  • A second Claude instance pointed at a nonexistent binary (dev settings only, probe fails as not-installed) now stays listed in the picker with its models shown as Unavailable/disabled instead of the whole group vanishing — the state the original report hit.

@ScriptedAlchemy

Copy link
Copy Markdown
Owner Author

CI note: the "Client and package tests" failure is apps/mobile/src/components/FilePreviewModal.test.tsx:118 only. The identical assertion fails on main itself in run 42178636711 (commit ede6b4b, before this PR), and the test passes locally on this branch (3/3). This PR does not touch that component or its imports (6 files: mobile model options/mentions + web mentions). Treating it as pre-existing and unrelated; "Checks and build" passes here.

providerEnv deletes every T3_-prefixed variable, which removes T3_MOBILE_TEST_PLATFORM before tests read it. The mobile Vite config still transformed components for Android, so FilePreviewModal tests took iOS branches against Android-rendered code and failed the Client and package tests job on this PR and on main. Keep the flag, like the other test-only opt-ins.

Done with Muse Code (muse-wonder-full-1.0).
@ScriptedAlchemy
ScriptedAlchemy merged commit e8f9e52 into main Nov 6, 2026
16 checks passed
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.

1 participant