feat(ux): add /verbose toggle for thinking trace display (#598)#605
feat(ux): add /verbose toggle for thinking trace display (#598)#605merchloubna70-dot wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces a "verbose thinking" mode to the TUI, allowing users to toggle between compact summaries and full chain-of-thought reasoning via a new /verbose command. The changes include command registration, multi-language localization updates, and modifications to the transcript rendering logic. Additionally, the onboarding language selection logic was refactored to replace experimental let_chains with a matches! guard. Review feedback suggests simplifying the verbose toggle's confirmation message for better readability and optimizing the onboarding logic to avoid redundant collection searches.
| CommandResult::message(format!( | ||
| "Verbose thinking display: {state}. Now showing {} chain-of-thought.", | ||
| if app.verbose_thinking { "full" } else { "compact" } | ||
| )) |
There was a problem hiding this comment.
The verbose thinking status message is slightly redundant. The state is already clear from the 'on'/'off' toggle. Consider simplifying the message to improve readability.
| CommandResult::message(format!( | |
| "Verbose thinking display: {state}. Now showing {} chain-of-thought.", | |
| if app.verbose_thinking { "full" } else { "compact" } | |
| )) | |
| CommandResult::message(format!("Verbose thinking display: {state}.")) |
| let tag = onboarding::language::LANGUAGE_OPTIONS | ||
| .iter() | ||
| .find(|(hotkey, _, _, _)| *hotkey == c) | ||
| .map(|(_, tag, _, _)| tag) | ||
| .expect("digit matched in guard"); |
There was a problem hiding this comment.
The expect call here is safe because of the matches! guard in the if condition, but it is cleaner to use if let or filter_map to avoid the repetition of the find logic.
| let tag = onboarding::language::LANGUAGE_OPTIONS | |
| .iter() | |
| .find(|(hotkey, _, _, _)| *hotkey == c) | |
| .map(|(_, tag, _, _)| tag) | |
| .expect("digit matched in guard"); | |
| let tag = onboarding::language::LANGUAGE_OPTIONS | |
| .iter() | |
| .find(|(hotkey, _, _, _)| *hotkey == c) | |
| .map(|(_, tag, _, _)| tag) | |
| .unwrap(); |
|
Thanks for the The linked issue #598 stays open: this still needs a current-main design for persistence, mode interaction, tests, and a clean UX path without unrelated onboarding refactor noise. A fresh focused PR would be welcome. |
Closes #598. Adds
/verboseslash command to toggle between compact (summary only) and full (complete chain-of-thought) reasoning display. Defaults to compact.\n\nImplemented usingdeepseek exec --model deepseek-v4-flash. 🐋