Add thinking level persistence and fix UI issues

- Save and restore thinking level when continuing sessions
- Fix thinking level confirmation message spacing and styling
- Fix thinking text wrapping to preserve ANSI formatting across lines
This commit is contained in:
Mario Zechner 2025-11-11 23:18:40 +01:00
parent 159075cad7
commit 7beb354337
4 changed files with 37 additions and 7 deletions

View file

@ -41,9 +41,9 @@ export class AssistantMessageComponent extends Container {
this.contentContainer.addChild(new Markdown(content.text.trim(), undefined, undefined, undefined, 1, 0));
} else if (content.type === "thinking" && content.thinking.trim()) {
// Thinking traces in dark gray italic
// Apply styling to entire block so wrapping preserves it
// Use Markdown component because it preserves ANSI codes across wrapped lines
const thinkingText = chalk.gray.italic(content.thinking);
this.contentContainer.addChild(new Text(thinkingText, 1, 0));
this.contentContainer.addChild(new Markdown(thinkingText, undefined, undefined, undefined, 1, 0));
this.contentContainer.addChild(new Spacer(1));
}
}

View file

@ -98,6 +98,7 @@ export class TuiRenderer {
// Setup UI layout
this.ui.addChild(new Spacer(1));
this.ui.addChild(header);
this.ui.addChild(new Spacer(1));
this.ui.addChild(this.chatContainer);
this.ui.addChild(this.statusContainer);
this.ui.addChild(new Spacer(1));
@ -377,11 +378,10 @@ export class TuiRenderer {
// Apply the selected thinking level
this.agent.setThinkingLevel(level);
// Show confirmation message with padding and blue color
this.chatContainer.addChild(new Text("", 0, 0)); // Blank line before
const confirmText = new Text(chalk.blue(`Thinking level set to: ${level}`), 0, 0);
// Show confirmation message with proper spacing
this.chatContainer.addChild(new Spacer(1));
const confirmText = new Text(chalk.dim(`Thinking level: ${level}`), 1, 0);
this.chatContainer.addChild(confirmText);
this.chatContainer.addChild(new Text("", 0, 0)); // Blank line after
// Hide selector and show editor again
this.hideThinkingSelector();