* fix: update OpenRouter model ID and filter logic for devstral-2512
- Update the model ID for devstral-2512 to include the ':free' suffix
- Modify the filter logic in providerUtils to handle devstral-2512 models
and ensure they are not excluded when using the Cline provider
- Also ensure the default OpenRouter model is preserved in the filter
* Mistral change
* Mistral change
* Mistral change
* accessibility: screen reader support for slash and context menus
* remove unnecessary selection announcement
* changeset run
* chore: clear announcement to avoid interfering with dom queries
* chore: resolve conflict
Close the modal automatically when users click "Try Devstral" or
"Try GPT-5.2" buttons to improve UX flow. Also update Devstral
button text to clarify it's free.
- OpenAI GPT-5.2
- Devstral-2 `devstral-2512` (formerly stealth model "Microwave")
- Improvements to chat modal model picker
- Amazon Nova 2 Lite
- DeepSeek 3.2 to native tool calling allow list
- Responses API support for Codex models in OpenAI provider (requires native tool calling)
- Xmas Special Santa Cline
- Welcome screen UI enhancements
- Initial checkpoint commit now non-blocking for improved responsiveness in large repositories
- Gemini Vertex models erroring when thinking parameters are not supported
- Restrictive file permissions for secrets.json
- Ollama streaming requests not aborting when task is cancelled
- OpenAI provider to centralize temperature configuration and include missing GPT-5 model settings
- OpenAI native handler to use metadata for model capabilities
- Vertex provider to use metadata for model capabilities
Co-authored-by: Arafatkatze <arafat.da.khan@gmail.com>
* feat: add inline model picker modal
* fix: add together to SETTINGS_ONLY_PROVIDERS, remove sapaicore
* Fix bedrock thinking support and add together to dynamic providers
---------
Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com>
* feat: add experimental parallel tool calling support
Add a new experimental setting that allows models to call multiple tools
in a single response. This is automatically enabled for GPT-5 models.
- Add enableParallelToolCalling setting (off by default)
- Conditionally enforce didAlreadyUseTool flag based on setting
- Move checkpoint from per-tool to per-response
- Add UI toggle in Feature Settings section
* feat: enable parallel tool calling for GPT-5 in prompts and API (#8028)
* feat: enable parallel tool calling for GPT-5 in prompts and API
Update system prompts for GPT-5 and next-gen variants to instruct
models they may use multiple tools in a single response for independent
operations.
Fix OpenAI API to send parallel_tool_calls: true for GPT-5 models,
which was previously hardcoded to false for all models.
Related: #8020
Changes:
- Updated 5 prompt variant files to allow parallel tool use
- Added enableParallelToolCalls param to getOpenAIToolParams()
- Updated openai-native.ts to enable for GPT-5 model family
* Update system test snapshots for parallel tool calling
* Revert changes to MCP prompts
---------
Co-authored-by: Robin Newhouse <robin@cline.bot>
* feat: hide whats new modal header image for now
* feature: change set
* feat: xmas special santa cline
* fix: minor change to actual svg
* Fix colors
---------
Co-authored-by: Arafatkatze <arafat.da.khan@gmail.com>
* feat(banners): add dismiss functionality to banner carousel
- Add onDismiss callback to BannerData interface
- Implement dismiss button (X icon) in BannerCarousel component
- Add onDismiss handlers for info, model, and CLI banners
- Update banner version in state when user dismisses a banner
- Fix carousel index bounds handling when banners are removed
- Refactor carousel handlers with useCallback for better performance
* Fix imports
* feat(banners): show dismiss X only on last card in carousel
* feat(cli): Add hooks_enabled support to CLI settings
- Add hooks_enabled field to Settings proto message (field 134)
- Add hooks_enabled parsing to CLI settings parser
- Enables users to toggle hooks via -s hooks_enabled=true/false flag
Fixes missing CLI support for hooks that was available in the VSCode extension
* feat(hooks): Enable hooks in the CLI
* Add include back in after resolving merge conflict
* feat(hooks): Changes as per human code review feedback.
---------
Co-authored-by: NightTrek <Daniels@dual4t.com>
* implementing prompt injection for web_search and associated web fetch handler
* remove printing of the ms took
* ui showing query user is searching for
* updating the fields we pass in api request
* updating text for search tool
When API requests fail and auto-retry is enabled, multiple error_retry
messages were shown (e.g., "Attempt 1 of 3", "Attempt 2 of 3", etc.).
This change consolidates them to only show the latest retry message,
reducing visual clutter during retry sequences.
* v3.39.0 Release Notes
* v3.39.0 Release Notes
* feat: enhance Announcement component with new microwave model and account login functionality
- Updated Announcement component to include a new free microwave model button
- Adjusted active tab logic in OpenRouterModelPicker to default to "free" if a free model is selected
* Add demo link
---------
Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com>
- Remove "Configure notification settings" link and move the toggle directly into the auto-approve menu
- Remove notification setting from General Settings since it now lives in auto-approve menu
- Remove hover:opacity-80 from icon button variant to prevent dimming on hover
- Make docs link font size inherit and separator line thinner
* Remove popups from auto approve settings
* feat(ui): add documentation link to auto-approve modal
Add a "Docs" link in the auto-approve modal that directs users to
the auto-approve documentation page on docs.cline.bot.
* Remove popups from auto approve settings
* Remove popups from auto approve settings
* Remove popups from auto approve settings
---------
Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com>
Relocate OptionsButtons component to be a sibling of WithCopyButton
rather than a child. This fixes the component hierarchy for followup
and completion_result message types, ensuring proper rendering and
interaction behavior. Also adds QuoteButton support to completion_result.
Replace delayed scroll-to-settings approach with direct section targeting.
Settings sections can now be opened directly via navigateToSettings(section)
parameter, eliminating the need for setTimeout-based scrolling workarounds.
* fix(ui): memoize highlighted text
Optimize UserMessage and TaskHeader components by using useMemo to cache highlighted text results. This prevents unnecessary recalculations of text highlighting on every render, improving performance when text or editedText props haven't changed.
Changes:
- Add useMemo hook to UserMessage component for highlightText result
- Replace inline highlightText calls with memoized values
- Reduces redundant text processing during re-renders
* add changeset
* fix(ui): Add bottom padding for last message item
- Add conditional className to message wrapper div
- Apply `pb-2.5` bottom margin only when message is last in group
* add changeset
* Allow slash commands anywhere in message input
Previously, slash commands could only be typed at the beginning of a
message. This change allows users to type slash commands anywhere in
the message, similar to how @ mentions work.
Changes:
- Update shouldShowSlashCommandsMenu() to show suggestions when slash
is preceded by whitespace (not just at start)
- Update insertSlashCommand() to find the slash nearest to cursor
- Update extension-side parseSlashCommands() to find commands anywhere
in tag content using a safer regex that avoids matching URLs/paths
- Update highlight layer to highlight slash commands anywhere
- Only the FIRST slash command per message is processed/highlighted
to maintain consistency with backend behavior
- Fix backspace deletion to work for slash commands anywhere in text
* Add changeset
* Add sticky user message header for better navigation
When users scroll down through a long conversation, a sticky header now appears showing their most recent message that has scrolled out of view. Clicking the header scrolls back to that message.
Key changes:
- New StickyUserMessage component that appears when user messages scroll past viewport
- Track scrolled-past user messages via scroll position detection in useScrollBehavior
- Add data-message-ts attributes to enable message element lookup
- Adjust TaskHeader padding for consistent alignment with sticky header
- Minor styling tweaks to UserMessage and FocusChain for visual consistency
* Fix type error: accept null for lastUserMessage prop
* Replace color-mix() with brightness filter for better compatibility
Use hover:brightness-110 instead of color-mix() for the sticky message
hover effect, as color-mix() may not be supported in all VS Code webview
contexts.
* Address Copilot review feedback for sticky user message
- Remove unused slide-down animation CSS
- Extract magic number 32 to STICKY_HEADER_HEIGHT constant
- Use cn() utility for conditional className in MessagesArea
- Add keyboard accessibility (role, tabIndex, onKeyDown) to StickyUserMessage
* Address additional Copilot review feedback
- Fix virtualized element detection: only consider missing elements as scrolled past
if we've already found visible elements after them (fixes incorrect sticky header
appearing when scrolling to top of long conversations)
- Rename truncatedText to messageText for accuracy (truncation happens via CSS)
The cost badge was using opacity:0 to hide itself when there's no cost,
but still rendered "$0.0000" which took up horizontal space. This caused
the "API Request..." label to wrap to a second line unnecessarily.
Now the badge renders empty content when hidden, taking up no width
while still maintaining its height contribution to the row layout.