Skip to content

desktop: model tooltip always shows "No reasoning" #54229

Closed as duplicate
Closed as duplicate

Description

@moisessouzaadm-boop

Summary

Every model in the Desktop model selector tooltip shows "No reasoning", including models that demonstrably support reasoning (variants with reasoning effort, compatibility.reasoningField). The V2 Model.Info API no longer carries a reasoning boolean, but the frontend still reads the V1 shape and the normalization layer hardcodes it to false.

Environment

  • opencode version: 2.0.26
  • OS: Linux 7.0.0-38-generic (linux x64, Linux Mint / Ubuntu 24.04 base)
  • Terminal: xterm-256color
  • Shell: /bin/bash
  • Install/channel: latest (release .deb + curl CLI)
  • Active plugins: ./plugins/nvidia-nim-sync, ./plugins/openrouter-free-sync, opencode-goal-plugin, opencode-mem, opencode-wakatime

Reproduction

  1. Open OpenCode Desktop (v2).
  2. Open the model selector (/models equivalent) and hover any reasoning-capable model (e.g. any model with reasoning variants, or one with compatibility.reasoningField: reasoning_content).
  3. Read the "Reasoning" row of the tooltip.

Expected Behavior

Tooltip shows "Allows reasoning" (model.tooltip.reasoning.allowed) for reasoning-capable models.

Actual Behavior

Tooltip always shows "No reasoning" (model.tooltip.reasoning.none) for every model.

Additional Context

Root cause, verified against dev + installed 2.0.26 bundle:

  • packages/app/src/context/global-sync/utils.ts (normalizeProviderList) maps server models with hardcoded capabilities: { temperature: false, reasoning: false, ... }. The V2 Model.Info schema (capabilities: { tools, input[], output[] }, plus variants[] and compatibility.reasoningField) has no reasoning boolean to map, so the information is dropped for 100% of models.
  • packages/app/src/components/model-tooltip.tsx then reads model.capabilities.reasoning (V1 shape, never present in V2) with fallback to top-level model.reasoning (also absent in V2) — always falsy.
  • Verified via API: 0 of 477 catalog models expose capabilities.reasoning; 32 expose compatibility.reasoningField, yet all display "No reasoning".

Locally confirmed fix (for reference, not a PR): derive the flag from model.variants.length > 0 || !!model.compatibility?.reasoningField in the normalization step. Reproducible consistently. Related V1→V2 migration note: the old reasoning: true model field is intentionally ignored in V2, leaving no supported path to mark reasoning support.

Activity

  1. opencode-agent commented on Oct 10, 2026

    @opencode-agent
    Contributor

    Thanks for the detailed report and root-cause analysis! I think this is a duplicate of #50257, which reports the same "No reasoning" tooltip for every v2 model in the desktop model picker, with the same cause: v2 model info has no reasoning flag, and the desktop mapper sets it to false. A fix that carries the catalog's reasoning flag through to the app is open in #50283.

    Possible duplicates and related issues, ordered from most to least likely:

    The bot will close this issue as a duplicate in 1 day unless you reply explaining how your problem is different. Your suggestion to derive the flag from variants / compatibility.reasoningField would be a useful addition on #50257 or #50283.

  2. opencode-agent commented on Oct 11, 2026

    @opencode-agent
    Contributor

    Closing this as a duplicate of #50257, since there's been no reply showing how this one is different. That issue tracks the same "No reasoning" tooltip shown for every v2 model in the desktop model picker, and the fix is open in #50283. Please follow #50257 for updates. Your idea of deriving the flag from variants / compatibility.reasoningField would be welcome as a comment there. If your problem turns out to be different, reply here and we can reopen. Thanks again for the detailed report!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions