diff --git a/.roo/rules-release-notes-writer/1_main_workflow.xml b/.roo/rules-release-notes-writer/1_main_workflow.xml
index 6b179e9e..8afc0286 100644
--- a/.roo/rules-release-notes-writer/1_main_workflow.xml
+++ b/.roo/rules-release-notes-writer/1_main_workflow.xml
@@ -289,7 +289,7 @@ fi
- Resolve hero image from discovered candidates, falling back to social-share when none exist
+ Resolve hero image from discovered candidates (no placeholder if none exist)
- - Skip hero image download entirely when no candidates were discovered; default to /img/social-share.jpg
+ - Skip hero image download entirely when no candidates were discovered
- When candidates exist, attempt to download the first one and persist it as /img/v$VERSION/v$VERSION.png
- - If download fails or the file is empty, fall back to /img/social-share.jpg
+ - If download fails or the file is empty, do not set a frontmatter image
- Prefer PNG when multiple candidates are present (candidates list should already be filtered/ordered)
@@ -521,17 +521,17 @@ Which features should I highlight with expanded sections in the release notes?
.roo/tmp/release-notes/frontmatter_image_v[version].txt
- If the source file exists and starts with "/img/", set frontmatter "image" to that value
- - Otherwise set "image" to /img/social-share.jpg
+ - Otherwise, OMIT the frontmatter "image" field entirely (no placeholder)
.roo/tmp/release-notes/frontmatter_image_v[version].txtImmediately after the intro summary sentence below the H1 title
- - If the persisted path starts with "/img/" and is not "/img/social-share.jpg", insert an HTML image tag under the intro paragraph
+ - If the persisted path starts with "/img/", insert an HTML image tag under the intro paragraph
- Use the exact path value from the source file for src
- Follow .roorules Image Tag Format and use width="600"
- - If the persisted path is "/img/social-share.jpg", skip inline insertion
+ - If there is no persisted path file OR it does not start with "/img/", skip inline insertion
@@ -713,7 +713,8 @@ gh pr list --repo RooCodeInc/Roo-Code --state merged --base main --limit 1000 \
Use the simplified PR extraction command for consistent results
- Always acknowledge PR author AND issue reporter
+ Acknowledge PR author AND issue reporter, unless the username is on the release-notes “thank you” exclusion list.
+ If all candidate acknowledgements are excluded, omit the thanks parenthetical entirely.
Focus on user benefits, not technical implementation
diff --git a/.roo/rules-release-notes-writer/2_content_standards.xml b/.roo/rules-release-notes-writer/2_content_standards.xml
index e9cf1a92..e19b0972 100644
--- a/.roo/rules-release-notes-writer/2_content_standards.xml
+++ b/.roo/rules-release-notes-writer/2_content_standards.xml
@@ -70,16 +70,11 @@ keywords:
New functionality changing user experienceOwn ## heading with expanded description
-## [Feature Name]
-
-We've [improvement description] (thanks [contributors]!) ([#PR](link)):
-
-- **[Benefit 1]**: [How this helps users]
-- **[Benefit 2]**: [Another benefit]
-
-[Concluding sentence about impact]
-
-> **📚 Documentation**: See [Feature Guide](/path/to/feature) for detailed usage instructions.
+ ## [Feature Name]
+
+ We've [improvement description]. [One cohesive paragraph: what changed, where users see it, and why it matters.] (thanks [contributors]!) ([#PR](link))
+
+ > **📚 Documentation**: See [Feature Guide](/path/to/feature) for detailed usage instructions.
@@ -113,16 +108,11 @@ We've [improvement description] (thanks [contributors]!) ([#PR](link)):
Major features with details
-## Feature Name
-
-Description of what the feature does (thanks contributor!) ([#PR](link)):
-
-- **Key Point 1**: Explanation of this aspect.
-- **Key Point 2**: Another explanation.
-
-Concluding sentence about the benefit.
-
-> **📚 Documentation**: See [Feature Guide](/path/to/feature) for detailed usage.
+ ## Feature Name
+
+ Description of what the feature does as a single cohesive paragraph (what changed, where users see it, and why it matters). (thanks contributor!) ([#PR](link))
+
+ > **📚 Documentation**: See [Feature Guide](/path/to/feature) for detailed usage.
@@ -141,8 +131,8 @@ Concluding sentence about the benefit.
(thanks author, reporter!)
- Omit @ from GitHub usernames
- - Place inside parentheses before PR link
- - Include both PR author and issue reporter
+ - Place inside parentheses, and place PR link(s) at the end of the sentence/paragraph
+ - Include both PR author and issue reporter unless excluded by the release-notes “thank you” exclusion list
- List PR author first
- If PR author equals issue reporter, use a single username once
- Do not thank these names: outlined in the special instructions section `Release Notes "thank you" exclusions`
@@ -152,7 +142,7 @@ Concluding sentence about the benefit.
([#PR_NUMBER](https://github.com/RooCodeInc/Roo-Code/pull/PR_NUMBER))
- In intro paragraph or bullet points
+ At the end of the expanded-section paragraph (after any thanks parenthetical)At end of each bullet point
diff --git a/docs/update-notes/index.md b/docs/update-notes/index.md
index 391f5128..06cb5397 100644
--- a/docs/update-notes/index.md
+++ b/docs/update-notes/index.md
@@ -21,6 +21,14 @@ If you want to live on the edge and try things out before it's released, we have
---
+### Version 3.40
+
+* [3.40](/update-notes/v3.40) (Combined)
+* [3.40.1](/update-notes/v3.40.1) (2026-01-14)
+* [3.40.0](/update-notes/v3.40.0) (2026-01-13)
+
+---
+
### Version 3.39
* [3.39](/update-notes/v3.39) (Combined)
diff --git a/docs/update-notes/v3.40.0.mdx b/docs/update-notes/v3.40.0.mdx
new file mode 100644
index 00000000..ad7bf4ae
--- /dev/null
+++ b/docs/update-notes/v3.40.0.mdx
@@ -0,0 +1,37 @@
+---
+description: This release adds settings search, improves the stop button and error display, and fixes tool-calling compatibility issues.
+keywords:
+ - roo code 3.40.0
+ - new features
+ - bug fixes
+image: /img/v3.40.0/v3.40.0.png
+---
+
+# Roo Code 3.40.0 Release Notes (2026-01-13)
+
+This release adds settings search, improves the stop button and error display, and fixes tool-calling compatibility issues.
+
+
+
+## Settings search
+
+You can now quickly find and jump to the setting you need with a dedicated search inside Roo Code settings. Instead of hunting through sections, you can search by keyword and jump straight to the right setting, with a cleaner results layout that’s easier to scan. ([#10619](https://github.com/RooCodeInc/Roo-Code/pull/10619), [#10633](https://github.com/RooCodeInc/Roo-Code/pull/10633))
+
+## Stop button improvements
+
+Stopping a streaming response is now clearer and more consistent with a standard stop button, with better visibility while editing messages. The stop action stays visible in more situations and replaces the old, oversized cancel UI, so interrupting long responses feels more familiar and less visually disruptive. ([#10639](https://github.com/RooCodeInc/Roo-Code/pull/10639), [#10696](https://github.com/RooCodeInc/Roo-Code/pull/10696))
+
+## Tool-calling compatibility fixes
+
+This release improves compatibility across providers (especially Gemini and OpenAI-compatible backends) by addressing request/response validation edge cases (thanks Idlebrand!). Roo now avoids sending tool-calling parameters that some backends reject and handles cases where tool output is empty, reducing validation failures that could previously break tool-using chats mid-run. ([#10671](https://github.com/RooCodeInc/Roo-Code/pull/10671), [#10672](https://github.com/RooCodeInc/Roo-Code/pull/10672))
+
+## QOL Improvements
+
+* Errors in chat are easier to interpret, with improved styling/visibility and more complete details when something goes wrong. ([#10692](https://github.com/RooCodeInc/Roo-Code/pull/10692))
+* The stop button stays visible and more consistent while editing messages, making it easier to interrupt long responses when needed. ([#10696](https://github.com/RooCodeInc/Roo-Code/pull/10696))
+* Roo uses a standard stop button while streaming, making task cancellation more familiar and less visually disruptive. ([#10639](https://github.com/RooCodeInc/Roo-Code/pull/10639))
+
+## Bug Fixes
+
+* Fixes an issue where some LiteLLM routes could fail during native tool use because an unsupported tool-calling parameter was always being sent. ([#10671](https://github.com/RooCodeInc/Roo-Code/pull/10671))
+* Fixes an issue where Gemini-based providers could reject tool results when the tool output was empty, causing request validation errors mid-run. ([#10672](https://github.com/RooCodeInc/Roo-Code/pull/10672))
diff --git a/docs/update-notes/v3.40.1.mdx b/docs/update-notes/v3.40.1.mdx
new file mode 100644
index 00000000..a055e63b
--- /dev/null
+++ b/docs/update-notes/v3.40.1.mdx
@@ -0,0 +1,14 @@
+---
+description: This release fixes a mode-switching error when using Gemini.
+keywords:
+ - roo code 3.40.1
+ - bug fixes
+---
+
+# Roo Code 3.40.1 Release Notes (2026-01-14)
+
+This release fixes a mode-switching error when using Gemini.
+
+## Bug Fixes
+
+* Fixes an issue where switching modes (e.g., from Code to Architect) while using Gemini would cause API errors due to tool permission conflicts in the conversation history. ([#10708](https://github.com/RooCodeInc/Roo-Code/pull/10708))
diff --git a/docs/update-notes/v3.40.mdx b/docs/update-notes/v3.40.mdx
new file mode 100644
index 00000000..811c358b
--- /dev/null
+++ b/docs/update-notes/v3.40.mdx
@@ -0,0 +1,38 @@
+---
+description: This release adds settings search, improves the stop button and error display, fixes tool-calling compatibility issues, and resolves a mode-switching error with Gemini.
+keywords:
+ - roo code 3.40
+ - new features
+ - bug fixes
+image: /img/v3.40.0/v3.40.0.png
+---
+
+# Roo Code 3.40 Release Notes (2026-01-14)
+
+This release adds settings search, improves the stop button and error display, fixes tool-calling compatibility issues, and resolves a mode-switching error with Gemini.
+
+
+
+## Settings search
+
+You can now quickly find and jump to the setting you need with a dedicated search inside Roo Code settings. Instead of hunting through sections, you can search by keyword and jump straight to the right setting, with a cleaner results layout that’s easier to scan. ([#10619](https://github.com/RooCodeInc/Roo-Code/pull/10619), [#10633](https://github.com/RooCodeInc/Roo-Code/pull/10633))
+
+## Stop button improvements
+
+Stopping a streaming response is now clearer and more consistent with a standard stop button, with better visibility while editing messages. The stop action stays visible in more situations and replaces the old, oversized cancel UI, so interrupting long responses feels more familiar and less visually disruptive. ([#10639](https://github.com/RooCodeInc/Roo-Code/pull/10639), [#10696](https://github.com/RooCodeInc/Roo-Code/pull/10696))
+
+## Tool-calling compatibility fixes
+
+This release improves compatibility across providers (especially Gemini and OpenAI-compatible backends) by addressing request/response validation edge cases (thanks Idlebrand!). Roo now avoids sending tool-calling parameters that some backends reject and handles cases where tool output is empty, reducing validation failures that could previously break tool-using chats mid-run. ([#10671](https://github.com/RooCodeInc/Roo-Code/pull/10671), [#10672](https://github.com/RooCodeInc/Roo-Code/pull/10672))
+
+## QOL Improvements
+
+* Errors in chat are easier to interpret, with improved styling/visibility and more complete details when something goes wrong. ([#10692](https://github.com/RooCodeInc/Roo-Code/pull/10692))
+* The stop button stays visible and more consistent while editing messages, making it easier to interrupt long responses when needed. ([#10696](https://github.com/RooCodeInc/Roo-Code/pull/10696))
+* Roo uses a standard stop button while streaming, making task cancellation more familiar and less visually disruptive. ([#10639](https://github.com/RooCodeInc/Roo-Code/pull/10639))
+
+## Bug Fixes
+
+* Fixes an issue where switching modes (e.g., from Code to Architect) while using Gemini would cause API errors due to tool permission conflicts in the conversation history. ([#10708](https://github.com/RooCodeInc/Roo-Code/pull/10708))
+* Fixes an issue where some LiteLLM routes could fail during native tool use because an unsupported tool-calling parameter was always being sent. ([#10671](https://github.com/RooCodeInc/Roo-Code/pull/10671))
+* Fixes an issue where Gemini-based providers could reject tool results when the tool output was empty, causing request validation errors mid-run. ([#10672](https://github.com/RooCodeInc/Roo-Code/pull/10672))
diff --git a/sidebars.ts b/sidebars.ts
index ad7c26f1..488d3149 100644
--- a/sidebars.ts
+++ b/sidebars.ts
@@ -172,6 +172,15 @@ const sidebars: SidebarsConfig = {
label: 'Extension Release Notes',
items: [
'update-notes/index',
+ {
+ type: 'category',
+ label: '3.40',
+ items: [
+ { type: 'doc', id: 'update-notes/v3.40', label: '3.40 Combined' },
+ { type: 'doc', id: 'update-notes/v3.40.1', label: '3.40.1' },
+ { type: 'doc', id: 'update-notes/v3.40.0', label: '3.40.0' },
+ ],
+ },
{
type: 'category',
label: '3.39',
diff --git a/static/img/v3.40.0/v3.40.0.png b/static/img/v3.40.0/v3.40.0.png
new file mode 100644
index 00000000..32f2e717
Binary files /dev/null and b/static/img/v3.40.0/v3.40.0.png differ