openclaw - ✅(Solved) Fix [Bug]: Thinking Selection in OpenClaw Control [2 pull requests, 2 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#84069Fetched 2026-05-20 03:44:29
View on GitHub
Comments
2
Participants
2
Timeline
12
Reactions
1
Timeline (top)
labeled ×7commented ×2cross-referenced ×2referenced ×1
<img width="1588" height="324" alt="Image" src="https://github.com/user-attachments/assets/240710fe-4bc6-4d94-9615-f33a37ef0b72" />

The Thinking Selection provides off as an option two times, as you can see in the image.

I seems that one "off" option has no value set, while the other "off" has the value set as off. This is based of looking into the dev tools (screenshot appended)

<img width="913" height="528" alt="Image" src="https://github.com/user-attachments/assets/1f0c3186-2a6e-4876-a6da-84c138eb34c0" />

Root Cause

<img width="1588" height="324" alt="Image" src="https://github.com/user-attachments/assets/240710fe-4bc6-4d94-9615-f33a37ef0b72" />

The Thinking Selection provides off as an option two times, as you can see in the image.

I seems that one "off" option has no value set, while the other "off" has the value set as off. This is based of looking into the dev tools (screenshot appended)

<img width="913" height="528" alt="Image" src="https://github.com/user-attachments/assets/1f0c3186-2a6e-4876-a6da-84c138eb34c0" />

Fix Action

Fixed

PR fix notes

PR #84085: fix(ui): de-duplicate Off option in chat thinking-level picker [AI-assisted]

Description (problem / solution / changelog)

🤖 AI-assisted (built with Codex via Hermes orchestration). Test level: lightly tested (new co-located unit tests for the affected helper). Prompt summary available on request.

Summary

  • Problem: The chat thinking-level dropdown shows two indistinguishable "Off" rows for models whose level list includes an explicit off entry, and stays interactive even when no real thinking options exist.
  • Why it matters: Users can't tell the two "Off" rows apart and may pick the "wrong" one; for non-thinking models the picker invites a meaningless choice.
  • What changed: buildThinkingOptions now skips any entry whose normalized value is off (the inherited <option value=""> already represents that choice), and renderChatThinkingSelect disables the select when no real options remain so it stays visible but inert.
  • What did NOT change (scope boundary): No changes to thinking-labels.ts, thinking.ts, gateway-side level resolution, or the sessions view picker. The inherited-default label logic is untouched.

Change Type (select all)

  • Bug fix

Scope (select all touched areas)

  • UI

Linked Issue/PR

  • Closes #84069
  • This PR fixes a bug or regression

Root Cause

  • Root cause: The renderer always emits an <option value=""> whose label is defaultLabel ("Off" when the effective level is off), then concatenates every entry from buildThinkingOptions. When the model's level list itself contains off, the picker ends up with two "Off" rows: one empty-value, one value="off". Separately, models with no thinking levels still rendered an interactive picker because disabled did not consider an empty options list.
  • Missing detection / guardrail: No unit test asserted that the inherited default row and the dynamic option list are disjoint, and there was no test covering the empty-options case.
  • Contributing context (if known): buildThinkingOptions was added to dedupe by lowercase key but it didn't filter the inherited-default sentinel, since the inherited row is emitted by the renderer rather than by buildThinkingOptions.

Regression Test Plan

  • Coverage level that should have caught this:
    • Unit test
  • Target test or file: ui/src/ui/chat/session-controls.test.ts (new)
  • Scenario the test should lock in: buildThinkingOptions strips any off/none/OFF entry from the levels list and from the current override, while preserving other levels and non-off overrides.
  • Why this is the smallest reliable guardrail: The duplicate-Off bug lives entirely in the option-building helper; locking down its output is sufficient and avoids a heavy lit/DOM test.
  • Existing test that already covers this (if any): N/A
  • If no new test is added, why not: N/A

User-visible / Behavior Changes

  • Chat thinking-level picker no longer shows two "Off" rows for models that expose an off level.
  • For models with no real thinking levels, the picker is rendered but disabled (no selectable choices beyond the inherited "Off").

Security Impact (required)

  • New permissions/capabilities? No
  • Pure UI-side option filtering and a disabled-state tweak; no auth, network, or persistence changes.

Changed files

  • ui/src/ui/chat/session-controls.test.ts (added, +49/-0)
  • ui/src/ui/chat/session-controls.ts (modified, +14/-3)

PR #84087: fix(chat): remove duplicate Off option in thinking level dropdown (#84069)

Description (problem / solution / changelog)

Summary

Fixes #84069 - Thinking Selection dropdown shows two identical "Off" options.

Problem

When using the thinking level dropdown with an inherited default (value=""), the backend thinking levels list also includes an "off" option. This results in two identical "Off" entries in the select menu.

Solution

In buildThinkingOptions(), skip adding "off" from thinking levels when currentOverride is empty (inherited default), since the default option already represents that state.

Changes

  • ui/src/ui/chat/session-controls.ts: Skip "off" from thinking levels when using inherited default
  • ui/src/ui/views/chat.test.ts: Updated tests to reflect correct (non-duplicate) behavior

Testing

All 38 chat UI tests pass.

Real behavior proof

Behavior or issue addressed: Thinking level dropdown in chat session controls renders duplicate "Off" entries when using inherited default (currentOverride="").

Real environment tested: Local development setup with pnpm dev, running openclaw web UI.

Exact steps or command run after this patch:

  1. Open chat session with thinking level dropdown
  2. Observe the dropdown options when currentOverride is empty (inherited default)
  3. Before fix: Two "Off" entries visible
  4. After fix: One "Off" entry visible

Evidence after fix: Screenshot of the fixed UI showing the thinking level dropdown with correct non-duplicate options.

Observed result after fix: The thinking level dropdown now shows a single "Off" option instead of duplicating it. The fix in session-controls.ts line 297 adds a condition to skip adding "off" from backend thinking levels when using the inherited default.

What was not tested: Non-default thinking level selections, other session control scenarios.

Changed files

  • ui/src/ui/chat/session-controls.ts (modified, +6/-0)
  • ui/src/ui/views/chat.test.ts (modified, +1/-3)

Code Example

I can't add any files here. I will add a video showing me selecting model with thinking. Opening the thinking option and select something in it. Then choosing the non thinking model and opening the thinking options again, to select between "off" and "off".
RAW_BUFFERClick to expand / collapse

Bug type

Behavior bug (incorrect output/state without crash)

Beta release blocker

No

Summary

<img width="1588" height="324" alt="Image" src="https://github.com/user-attachments/assets/240710fe-4bc6-4d94-9615-f33a37ef0b72" />

The Thinking Selection provides off as an option two times, as you can see in the image.

I seems that one "off" option has no value set, while the other "off" has the value set as off. This is based of looking into the dev tools (screenshot appended)

<img width="913" height="528" alt="Image" src="https://github.com/user-attachments/assets/1f0c3186-2a6e-4876-a6da-84c138eb34c0" />

Steps to reproduce

  1. Start openclaw
  2. add a ollama model via config
  3. go into the dashboard
  4. go in a chat
  5. click on select thinking which should contain the word "off"

    It's right to the model selection.

Expected behavior

  • When there are multiple thinking options, I expect only one "off" option.
  • When there is no thinking option, I expect the thinking option, to be grayed out and unselectable by the user!

Actual behavior

  • When there are multiple thinking options, there is one "off" following all thinking options including the actuall "off" option.
  • When there is no thinking option, you are able to select the thinking options and the user is able to choose between "off" and the real "off".

This may throw the user really off!

OpenClaw version

2026.5.18

Operating system

Ubuntu 24.04.4 LTS

Install method

npm with ollama

Model

qwen3:0.6b / mistral:v0.3

Provider / routing chain

openclaw -> local network -> ollama

Additional provider/model setup details

  • The thinking model used to test was: qwen3:0.6b
  • The non thinking model used to test was: mistral:v0.3

Logs, screenshots, and evidence

I can't add any files here. I will add a video showing me selecting model with thinking. Opening the thinking option and select something in it. Then choosing the non thinking model and opening the thinking options again, to select between "off" and "off".

Impact and severity

  • Affected users
  • Severity annoying ( but could cause issues with the backend )
  • Frequency always
  • Consequence annoyed and or confused Users

Additional information

There is no version that I know of, that doesn't have this issue!

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

  • When there are multiple thinking options, I expect only one "off" option.
  • When there is no thinking option, I expect the thinking option, to be grayed out and unselectable by the user!

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - ✅(Solved) Fix [Bug]: Thinking Selection in OpenClaw Control [2 pull requests, 2 comments, 2 participants]