diff --git a/packages/coding-agent/CHANGELOG.md b/packages/coding-agent/CHANGELOG.md index 2c6d4bdf..5366ead3 100644 --- a/packages/coding-agent/CHANGELOG.md +++ b/packages/coding-agent/CHANGELOG.md @@ -8,6 +8,7 @@ ### Fixed +- Fixed `switchSession()` appending spurious `thinking_level_change` entry to session log on resume. `setThinkingLevel()` is now idempotent. ([#1118](https://github.com/badlogic/pi-mono/issues/1118)) - Fixed clipboard image paste on WSL2/WSLg writing invalid PNG files when clipboard provides `image/bmp` format. BMP images are now converted to PNG before saving. ([#1112](https://github.com/badlogic/pi-mono/pull/1112) by [@lightningRalf](https://github.com/lightningRalf)) ## [0.50.7] - 2026-01-31 diff --git a/packages/coding-agent/src/core/agent-session.ts b/packages/coding-agent/src/core/agent-session.ts index 21caa860..f85ce35c 100644 --- a/packages/coding-agent/src/core/agent-session.ts +++ b/packages/coding-agent/src/core/agent-session.ts @@ -1236,14 +1236,21 @@ export class AgentSession { /** * Set thinking level. * Clamps to model capabilities based on available thinking levels. - * Saves to session and settings. + * Saves to session and settings only if the level actually changes. */ setThinkingLevel(level: ThinkingLevel): void { const availableLevels = this.getAvailableThinkingLevels(); const effectiveLevel = availableLevels.includes(level) ? level : this._clampThinkingLevel(level, availableLevels); + + // Only persist if actually changing + const isChanging = effectiveLevel !== this.agent.state.thinkingLevel; + this.agent.setThinkingLevel(effectiveLevel); - this.sessionManager.appendThinkingLevelChange(effectiveLevel); - this.settingsManager.setDefaultThinkingLevel(effectiveLevel); + + if (isChanging) { + this.sessionManager.appendThinkingLevelChange(effectiveLevel); + this.settingsManager.setDefaultThinkingLevel(effectiveLevel); + } } /**