- Add gpt-5.2-codex OpenAI model support
- Add create-pull-request skill
- Fix the selection of remotely configured providers
- Fix act_mode_respond to prevent consecutive calls
- Fix invalid tool call IDs when switching between model formats
Co-authored-by: Arafatkatze <arafat.da.khan@gmail.com>
* fix: normalize tool call IDs for OpenAI messages
Transform tool call IDs to meet OpenAI length/prefix limits and apply the same logic to both `tool_calls[].id` and `tool_call_id` so they always match, preventing invalid parameter errors. Also enforce 53-char `fc_` IDs for the Responses API and add a helper to detect that format.
Ensure that whatever ID is produced for the tool_calls[].id in the assistant message matches what's produced for tool_call_id in the tool result message.
* add changeset
* refactor: move isOpenAIResponseToolId and fix tool ID truncation
- Move isOpenAIResponseToolId helper function from openai-response-format.ts
to openai-format.ts where it's actually used, making it private
- Fix transformToolCallId to use MAX_TOOL_CALL_ID_LENGTH constant for
calculating slice offset, ensuring IDs stay under the 40-char limit
- Add clarifying comment explaining the truncation logic
* fix: correct function call ID prefix check in OpenAI response format
Fix startsWith check to use "fc_" instead of "fc" to properly detect
* Fix tool call length
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
---------
Co-authored-by: Robin Newhouse <robin@cline.bot>
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
* Reduce the amount of sent banner requests
* Revert not fetching if no token is provided
* Remove redundant null
* Make a single call
* Make another request if forceRefresh is true
* Add a separate catch
* Allow switching between remote configured providers and only display valid providers
* Add changeset
* Return the provider set by the remote config
* Address comments
* Address comment
* Validate when updating settings
* Refactor
* Revert
* Use a more descriptive name
* Fix types
* Check we have remote configured providers, not only that the array is there
- Remove SystemPromptSection.MCP from Gemini-3 component order
- Disable feedback section in XS variant component overrides
- Update variant validator to allow disabled overrides without requiring them in componentOrder/tools list
The validator now correctly handles overrides with `enabled: false`, treating them as valid configuration even when the component/tool isn't included in the active lists.
- Add telemetry to track usage of skills feature
- Add version headers to Cline backend requests
- Phase in Responses API usage instead of defaulting for every supported model
- Fix workflow slash command search to be case-insensitive
- Fix model display in ModelPickerModal when using LiteLLM
- Fix LiteLLM model fetching with default base URL
- Fix crash when OpenAI-compatible APIs send usage chunks with empty or null choices arrays at end of streaming
- Fix model ID for Kat Coder Pro Free model
Co-authored-by: Arafatkatze <arafat.da.khan@gmail.com>
* feat(ui): add new row components and unify ChatRow styling with tailwinds and lucid icons
- Add new ClineCompactIcon component for consistent branding
- Replace VSCode codicons with lucide-react icons for better consistency
- Browser session: SquareMousePointerIcon
- File operations: FilePlus2Icon, PencilIcon, SquareMinusIcon
- Terminal: TerminalIcon
- Loading states: LoaderCircleIcon
- Error states: CircleXIcon
- Extract ChatRow styles to separate CSS file for better maintainability
- Improve code block styling with theme-aware backgrounds and borders
- Update icon sizing and stroke weights for visual consistency
This change modernizes the UI by standardizing icon usage across components and improves code organization by separating styles into dedicated CSS files.
* feat(ui): integrate CompletionOutputRow and reasoning display in ChatRow
Updates the ChatRow component to support specialized rendering for task completion and model reasoning.
- Integrates `CompletionOutputRow` and `PlanCompletionOutputRow` for structured completion states.
- Adds `ThinkingRow` integration and props for handling `reasoningContent`.
- Updates `ChatRowProps` to include mode and request status tracking.
- Refines Storybook mocks to demonstrate reasoning steps and detailed completion results.
* feat(webview): group low-stakes tool executions in chat view
- Update `ChatView` to apply `groupLowStakesTools` to the message list, consolidating passive tool usage.
- Overhaul `MessageRenderer` to support rendering grouped tool messages with specific display info (icons, labels) for actions like `readFile`, `listFiles`, and `searchFiles`.
- Add logic to format search regex patterns for better readability.
- Implement utility checks for calculating costs and pending states within tool groups.
- This change reduces UI clutter by visually collapsing repetitive information-gathering steps.
* refactor(ui): update checkpoint control UI and restore menu
- Replace `VSCodeButton` with local `Button` component and use Lucide `BookmarkIcon`
- Migrate styled text components to utility classes for consistent styling
- Redesign the checkpoint restore popover to prioritize "Restore Files & Task"
- Add `showMoreOptions` state to manage menu visibility and interaction logic
* refactor(chat): rename CSS file for CompletionOutputRow
Renames `ChatRow.css` to `CompletionOutputRow.css` to align with the component naming convention. This change includes updating the import in `CompletionOutputRow.tsx` to reference the correctly named stylesheet.
* clean up PlanCompletionOutputRow
* clean up
* clean up
* update e2e
* update displayName
* fix blinking cursor position
* use classnames
* Completion notch
* clean up header class
* Move Command Output component to CommandOutputRow
* Fix shimmering animation
* update TypewriterText story title
* clean up notch style
* Seperate ToolGroupRenderer into individual component. Clean up styles and message utils.
* fix truncation display
* update styles for open file links
* apply feedback - fix CompletionOutputRow & ThinkingRow
* Display old Ask block for tools
* combine title and action buttons into CompletionOutputRow & PlanCompletionOutputRow
* remove animation from Cline icon
* update styles and animation
* adjust spacing
* Fix shimmering animation
* clean up
* clean up and simplify component styles
* clean up import names
* fix markdown block and use tailwind styles
* clean up spacing
* hide scrollbar
* remove expand handler
* cline logo position
* fix(chat): align logo to top in request progress indicator
Changed ClineLogoWhite component alignment from `self-end` to `self-start`
in the chat row's request progress view. This ensures the logo aligns to
the top rather than the bottom when displaying in-progress requests,
improving visual consistency with the adjacent message content.
* fix DiffEditRow title truncation
* Keep Cline logo for output text
* fix(chat): add invisible spacer for non-rendered rows
Replace `null` returns with an `aria-hidden` 1px spacer to keep chat row layout stable, and simplify summary header styling by moving inline styles into a className.
* update activity indicators and button styling for tool group
- Replace codicon with icon component for activity indicators
- Scale down Cline logo and remove border divider for cleaner layout
- Add disabled state styling to ThinkingRow button (cursor-text, full opacity)
- Fix TooltipTrigger by using asChild prop instead of disabled
- Adjust CheckmarkControl bottom margin for better alignment
These changes improve visual consistency and fix accessibility issues with tooltip triggers and button states.
<budget:token_budget>200000</budget:token_budget>
* revert: show cline logo during stream only
* remove streaming thinking title
* spacing
* apply feedback: remove border for thinking, fix overflow typewriter text
* fix(ui): align thinking text and reasoning content positions
- Add ml-1 margin to both thinking text and ThinkingRow for consistent left alignment
- Remove default button padding from ThinkingRow with p-0
* fix(ui): simplify ToolGroupRenderer and remove OptionsButtons top padding
- Remove collapse/expand functionality from ToolGroupRenderer (always expanded)
- Remove chevron icon and left-align summary text with file list
- Standardize font size to 13px for summary, icons, and file names
- Remove font-editor to use default font family
- Remove "Thinking:" prefix from tooltips
- Add padding and spacing for better visual hierarchy
- Remove top padding from OptionsButtons
* fix(ui): restore CodeAccordian padding and overflow
* fix(ui): reduce spacing between header and content text
* fix(ui): restore task completion buttons to original style
- Restore SuccessButton component
- Move buttons outside the green card
- Use SuccessButton for both View Changes and Explain Changes
- Full-width stacked buttons with proper spacing
* fix(ui): polish Task Completed and Plan Created card styling
- Remove hover border color change
- Fix last paragraph bottom margin
- Add proper top padding for header and content
- Add horizontal padding to header row
- Remove unnecessary conditional padding
* fix(ui): style tweaks for copy button and checkpoint label
- Make Task Completed copy button green to match header
- Reduce Checkpoint label font size to 9px
* fix(ui): prevent TypewriterText from jumping on completion
---------
Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com>
Add optimizeDeps configuration with force flag to ensure Vite
re-optimizes dependencies on every build. This resolves potential
issues with stale or inconsistent dependency resolution in the
webview build process.
* refactor: simplify API configuration management and state handling
Refactored `StateManager` and `ApiConfiguration` handling to use a more maintainable, data-driven approach. Replaced manual key mapping in `setApiConfiguration` with automated categorization based on static definitions.
- Updated `buildApiHandler` and `createHandlerForProvider` to accept `Partial<ApiConfiguration>`, improving flexibility.
- Introduced `categorizeApiConfigurationKeys` and other helpers to separate settings from secrets automatically.
- Centralized secret key definitions in `state-keys.ts` to reduce boilerplate and potential for errors when adding new providers.
- Cleaned up redundant imports and type definitions across the core API and storage modules.
* apply feedback
* clean up
* refactor: consolidate API configuration types and state key definitions
- Rename `ApiHandlerSecrets` to `Secrets` for consistency across codebase
- Merge `ApiHandlerOptions` with `ApiHandlerSettings` to reduce duplication
- Extract `GlobalStateAndSettingKeys` as a computed constant from state field definitions
- Consolidate remote configuration fields into `REMOTE_CONFIG_EXTRA_FIELDS` group
- Remove redundant type definitions and improve type safety in state management
This refactoring simplifies the type system by eliminating duplicate interfaces
and ensures consistent naming conventions throughout the storage and API layers.
* Clean up
* rename type with default
* type safe
* add unit test
* Apply suggestions from code review
Co-authored-by: Tomás Barreiro <52393857+BarreiroT@users.noreply.github.com>
* apply feedback
---------
Co-authored-by: Tomás Barreiro <52393857+BarreiroT@users.noreply.github.com>
* add requirements
* add requirements checklist
* feat: add logic (only) for enterprise to control local MCP config via remote config
* when allowlist is empty, allow all local servers; when a server is on allowlist, load regardless of whether from github
* fix comment, use Object.keys(remoteConfig).length to check if remote config is on or not
---------
Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com>
* Fixed bugs within cline cli and removed extra console.log
* Removed old models from using Responses API
* Revertred last commit'
* Added changeset
---------
Co-authored-by: celestial-vault <58194240+celestial-vault@users.noreply.github.com>
* [NOOP] Update BannerService to integrate with the webview.
Update the BannerService to convert the banners to the BannerCardData format for the webview.
Add a field for the banners in the `ExtensionState`.
In the WelcomeSection, get the banners from the extension state and show them in the webview.
NOOP- this is a currently a no-op because the controller is not yet populating the `banners` field in the extension state. I will submit that in a second PR because we need the handlers for the dismissal logic before we can start displaying the banners.
# Conflicts:
# src/shared/ExtensionMessage.ts
* Update tests
* Validate the banner action type before sending it to the webview
* Handle dimiss for API banners
When an API banner is dismissed, use the `dismissBanner` protobus handler.
Add warning comments saying not to use the old banner version system. This not scalable as it requires a different protobus handlers for each type of banner. You can get the same effect by using the banner ID and appending a version number to the ID.
* Send the banners from the extension to the webview
The controllers populates the banners in the extension state.
Add a check for buttons with empty titles because they don't render properly and this is an error in the banner configuration if it happens.
* Add handler to Link action button in the webview.
* Fix handler for ShowApiSettings in the webview
* Made change to not allow old models to use Responses API
* Added changeset
* Removing oca from nextGenModelProvier so that we remove native tool calls for now
* Adding back oca as a nextGenModelProvider
* Prevent loop when getting user organization
* Do not restore user info if the org he is switching to is already active
* Add changeset
* Fix reference array
* Add field to settings and handle side effects
* Avoid fetching and applying remote config if it's disabled
* Refactor and apply configured org settings when the user opted out of another one he owns
* Refactor
Fix check
* Add toggle to the account view
* Add changeset
* Fix can disable remote config
* clean canDisableRemoteConfig
* fix: guard against null/empty choices in streaming responses
Some OpenAI-compatible APIs (DeepSeek, Groq, OpenWebUI, etc.) send
usage chunks at the end of streaming with empty or null choices arrays.
This was causing crashes with 'Cannot read properties of undefined'.
Added optional chaining on chunk.choices across all 24 affected
provider files to safely handle these usage-only chunks.
Fixes#8384
* chore: add changeset
Update Claude 3.5 Haiku model to support image processing as per
Anthropic API release notes.
Fixes#2009
Co-authored-by: Yuri Chukhlib <yurii.chukhlib@viber.com>
When the @ mention context menu shows "No results found" and the user
presses Escape, the menu was not closing because setShowContextMenu(false)
was not being called.
Fixes#5532
Co-authored-by: Yuri Chukhlib <yurii.chukhlib@viber.com>
Some LLM providers (notably Claude Sonnet 4.5 via VS Code LM API) insert
spurious spaces before file extensions (e.g., "file .ts" instead of "file.ts").
This fix adds heuristic normalization to remove spaces immediately before
file extensions while preserving legitimate spaces in filenames.
Fixes#7827
Co-authored-by: Yuri Chukhlib <yurii.chukhlib@viber.com>
Users can now find workflows regardless of letter casing (e.g., searching "/testhook" finds "Testhook").
Fixes#7834
Co-authored-by: Yuri Chukhlib <yurii.chukhlib@viber.com>
- Enable configuring an OTEL collector at runtime
- Removing Minimax-2.1 from free model list as the free trial has ended
- Improved image display in MCP responses
- Auto-sync remote MCP servers from remote config to local settings
Co-authored-by: Arafatkatze <arafat.da.khan@gmail.com>
* feat(mcp): improve image display in MCP responses
- Truncate data URIs to show prefix + first 20 chars with [IMAGE] label
- Apply truncation in all display modes (rich, plain, markdown)
- Click data URI images to open in VS Code editor (like mermaid diagrams)
- Expand images to 100% width of response container
- Persist collapsed/expanded state per-response without syncing all instances
* fix(settings): remove Collapse MCP Responses setting from UI
The setting is now implicit - collapsing any MCP response saves the
preference for future responses. Removes confusing sync behavior
between the Settings toggle and individual response toggles.
* feat: add remote config sync with extension mcp marketplace for new remote servers
* refactor: extract getMcpSettingsFilePath into disk.ts to be reused
* refactor: rename helper method to avoid ambiguity
* address formatting suggestion by ellipsis-dev for the code itself that was moved
* refactor: add flag pattern to prevent race condition from triggering unnecessary watcher events
* fix: do not re-throw error
---------
Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com>
* Replace process.env usage with a BUILD_CONSTANTS variable
* Update import
* revert doc update
* Enable configuring an OTEL collector at runtime
* Refactor
* Refactor
* Add changeset
* Do not build IS_STANDALONE
* Add comment
* Update the `.env.example` file
* Remove `true` from the selected options and revert env.example
* Use `true` for runtime variables
- Add Skills system for reusable, on-demand agent instructions
- Add new websearch tooling in Cline provider
- Add zai-glm-4.7 to Cerebras model list
- Add model refresh and improve reasoning support for Vercel AI Gateway
- Revert #8341 due to regressions in diff view/document truncation (see #8423, #8429)
- Fixed extension crash when using context menu selector
Co-authored-by: Arafatkatze <arafat.da.khan@gmail.com>