The user's ~/Library/Application Support/deepseek/settings.toml had
default_mode = "yolo", which caused test_mode_yolo_sets_all_flags,
test_trust_on_enables_flag, and
footer_status_line_spans_show_mode_and_model_idle_and_active to fail
because they implicitly depended on the host's global mode setting.
Pin each test to Agent mode explicitly so they pass regardless of the
developer's personal settings.
`resolve_cli_auto_route` was hard-coding `reasoning_effort: None` when
`--model` is not `auto`, which silently dropped the value the user had
set in `~/.deepseek/config.toml` on every non-auto-route exec/one-shot
call.
For vllm + Qwen3 users with `reasoning_effort = "off"`, thinking was
therefore never disabled. The model emitted a long reasoning trace for
every prompt and SSE idle timeouts (`did not receive response headers
after 45s`) fired on any non-trivial prompt. After this fix, the same
prompts return in ~1.5s.
Route the configured value through `ReasoningEffort::from_setting`, the
same parser the TUI uses elsewhere for this field. Auto-route behaviour
(`--model auto`) is unchanged.
Verified by capturing the outgoing request body with `nc` before and
after; chat_template_kwargs.enable_thinking=false now appears in the
body on vllm exec runs.
Co-authored-by: hexin <he.xin@h3c.com>
- Split tool plans into parallel chunks separated by serial barriers
- Preserve sequential handling for approvals and interactive tools
- Add coverage for mixed execution batches
- theme_picker: drop .max() floors that could produce dimensions larger
than the available area on small terminals; return early on a zero
area instead of underflowing the centering arithmetic.
- theme_picker: reject the '0' digit shortcut (previously
`saturating_sub('1')` quietly remapped it to row 0).
- theme_picker: cache the System UiTheme at construction so the per-row
swatch loop and chrome lookup don't re-invoke `UiTheme::detect()`
(which reads `COLORFGBG`) on every keystroke.
- color_compat: backend now carries the resolved `UiTheme` alongside
`ThemeId`, and `adapt_{fg,bg}_for_theme` read from that instead of
re-resolving from `theme_id.ui_theme()`. Fixes the case where
`theme = "tokyo-night"` + `background_color = "#000000"` was being
silently overwritten back to tokyo-night's surface_bg by the remap.
Added a test pinning the override.
- ui: the `ConfigUpdated` handler now only appends the confirmation
`System` cell when `persist == true`, so live-preview navigation in
the picker stops spamming "theme = ... (session only)" rows into the
transcript per arrow keystroke.
- ui: `AppAction::OpenThemePicker` reads the active name from
`app.theme_id` instead of reloading `settings.toml` from disk.
- settings: collapse the double `ThemeId::from_name` pass in load()
into a single map+unwrap_or.
Added tests for digit '0' rejection and tiny/zero-sized render paths.
Wires the previously-dormant `theme` setting (#657 follow-up) into the
live Settings struct so the choice survives restart. `/theme` opens an
interactive picker with live preview; `/theme <name>` switches and
persists non-interactively.
Most render sites use bare `palette::TEXT_BODY` / `DEEPSEEK_INK` /
`BORDER_COLOR` constants rather than reading `app.ui_theme`, so simply
adding new UiTheme variants only repaints ~20% of surfaces. The fix is
a third stage in ColorCompatBackend (alongside the existing dark<->light
and truecolor<->256 stages) that rewrites every well-known dark-palette
constant to the corresponding UiTheme slot for the active preset. The
remap is a no-op for System / Whale / WhaleLight, so legacy dark/light
flows stay byte-identical.
Settings: theme = system | dark | light | catppuccin-mocha |
tokyo-night | dracula | gruvbox-dark. Unknown values normalise to
system. background_color still overlays on top.
Tests: new coverage in theme_picker and palette; pinned make_app() in
footer tests to ThemeId::System after App::new (matching the existing
default_model pin) since App::new now honors settings.theme.
- Kitty: OSC 99 with ST terminator (no audible beep)
- Ghostty: OSC 777 ; notify ; title ; message format
- Auto-detect from $TERM_PROGRAM (exact match) and $TERM (substring fallback)
- tmux DCS passthrough for both protocols via wrap_for_multiplexer helper
- Preserves existing LC_TERMINAL fallback for Cmux
- 10 new tests: escape format, tmux passthrough, auto-detection
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>