zai-org / zai-org/feedback

[Bug] Reasoning effort menu shows "Low" twice — "minimal" and "low" share the same display label

Open Beginner friendly
#704 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

priority: P2
Dominant language
No language data
Stars
22
Forks
1
PR merge metrics
No merged PRs in 30d

Description

Pre-submission checklist

  • Searched existing issues (none found for "minimal" / "duplicate Low")
  • Read CONTRIBUTING.md

Category

UI / UX

Agent framework

ZCode Agent

Severity

Minor

Reproducibility

Always

Description

When a model's reasoning effort levels include both minimal and low, the effort dropdown in the chat toolbar renders two entries both labeled "Low". The two entries are distinct values internally (the upper one is minimal, the lower one is low, and each is sent correctly as reasoning_effort), but the user cannot tell them apart in the UI.

Cause: the label mapping table in the UI maps both keys to the same i18n string:

low:     `chat.toolbar.thoughtLevel.value.low`,
minimal: `chat.toolbar.thoughtLevel.value.low`

so minimal has no label of its own and falls back to "Low".

Steps to reproduce

  1. Use any model whose effort levels include both minimal and low (e.g. levels minimal / low / medium / high).
  2. Open the reasoning effort dropdown in the chat toolbar.
  3. Observe two "Low" entries followed by "Medium" and "High".

Expected behavior

Each level has a distinct label, e.g. Minimal / Low / Medium / High (or at least the raw value shown for levels without a dedicated translation).

Actual behavior

Two entries both read "Low". Selecting the upper one sends reasoning_effort:"minimal", the lower one sends "low", but this is invisible to the user.

ZCode version

v3.12.3

Device / OS / Browser

MacBook (Apple Silicon) / macOS 27.0.0 (darwin arm64) / ZCode desktop app

Screenshots / Recordings / Logs

(Screenshot of the dropdown showing Low / Low / Medium / High can be provided on request.)

Suggested fix

Add a dedicated i18n key for minimal (e.g. chat.toolbar.thoughtLevel.value.minimal → "Minimal") instead of aliasing it to low. As a fallback, show the raw level value when no translation exists.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the chat toolbar's reasoning-effort label mapping and inspect how the i18n keys are resolved for minimal and low. Add a distinct minimal label or the stated raw-value fallback, then verify that the dropdown shows separate Minimal and Low entries while preserving their respective reasoning_effort values.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
desktop-dev, frontend, internationalization
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
75/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.