Roo Code 3.31 Release Notes (2025-11-08)
Roo Code 3.31 focuses on a smoother task and to-do experience, clearer diagnostics, safer routing for custom endpoints, and more resilient long-running generations.
Integrated task header and to-do list
The task header and to-do list now work together so you can see progress at a glance without juggling extra UI:
- Integrated to-dos directly into the task header so active work is always visible. (From #9096)
- Show only relevant to-do changes in chat instead of noisy full-list updates, making progress easier to track. (From #9096)
- Simplified header layout to reduce distractions while keeping key controls in reach. (From #9096)
QOL Improvements
- Less caffeinated welcome animation (#9104): Smooths the Roo hover animation so it is less distracting during long sessions while keeping the interface responsive.
- Auto-approval is now handled by Task (#9157): Centralizes approval logic for commands, tools, MCP, and subtasks, reducing blocked prompts and making safeguards clearer.
- Consistent rounded buttons across the UI (#9150): New Button component with variants/sizes delivers a cleaner, more predictable interface.
- Batched settings updates (#9165): Applies multiple setting changes in one go, making saves faster and reducing UI flicker across Settings, Auto Approve, Command Execution, and MCP toggles.
- README badges render reliably (#9200): Switched to badgen.net so badges are consistently visible; Installs and Rating are clear at a glance.
Bug Fixes
- Respect custom OpenRouter-compatible URLs everywhere (#8951): Ensures all OpenRouter-related operations (model lists, pricing, image generation, CSP checks) consistently use your configured custom base URL for better privacy, compliance, and predictable billing (thanks sstraus!).
- Prevent crashes from null streaming chunks (#9105): Handles provider responses with null choices arrays correctly, improving stability for long-running generations across MiniMax M2 Stable and other OpenAI-compatible endpoints.
- Stop unwanted context condensing on settings save (#9108): Saving settings no longer triggers early context condensing when your provider/model is unchanged, so active tasks retain history until thresholds are truly reached.
- Cloud/headless: prevent command_output from blocking (#9152): Non‑blocking behavior avoids stalled tasks and intermittent timeouts.
- Model switch re‑applies selected profile (#9181): Ensures task configuration stays in sync when switching providers/models.
- API Profiles apply immediately when provider/model unchanged (#9210): Updates headers, baseUrl, service tier, and reasoning budgets without requiring a model change.
- Auto‑approval honors MCP server state (#9199): Restores expected tool auto‑approval behavior (thanks bozoweed!).
- Issue Fixer reliability via REST + ProjectsV2 (#9207): Resolves sync errors and restores dependable triage.
- OpenAI (native) encrypted reasoning handling (#9231): Includes encrypted reasoning only when a reasoning effort is set and enforces medium‑only verbosity for gpt‑5‑chat‑latest to prevent invalid parameter errors (thanks politsin!).
- Roo Anthropic input token normalization (#9224): Prevents double‑counting cached tokens so usage metrics, cost estimates, and context calculations are accurate across providers.
Misc Improvements
- Roo Code Cloud error logging (#9098): Captures richer context for failed requests (status codes, response bodies, and request details), making it easier to understand and resolve provider and configuration issues.
- IPC: send messages to the current task (#9149): Programmatically post text and images into an active task for automations and richer context.
- Context management terminology (#9206): Rename “sliding window” to “context management” and unify handling under a single entry point for clearer behavior and documentation alignment.
Provider Updates
- Stateless conversation continuity via OpenAI Responses API (#9203): Preserves context locally with encrypted reasoning items while requests remain stateless, improving privacy and reliability and simplifying behavior (no previous_response_id).