- Add terminalOutputLineLimit, terminalOutputCharacterLimit to GlobalSettings schema
- Add terminalCompressProgressBar to GlobalSettings schema
- Keep terminalOutputPreviewSize for backward compatibility with OutputInterceptor
- Add new terminal settings to ExtensionState type
- Add terminalOutputLineLimit/CharacterLimit to ClineProvider getState destructuring
- Replace hardcoded English text with i18n translation keys
- Add apiKeyNote.title and apiKeyNote.description to settings.json
- Note explains that API keys are shared with provider configuration
The webviewMessageHandler was passing section as 'tab' property but
App.tsx expects it in 'values.section'. This fixes the navigation from
CodeIndexPopover 'Configure in Settings' link to the indexing tab.
- Use settingDefaults fallback for checkbox checked state
- Use settingDefaults fallback for conditional rendering
- Use settingDefaults fallback for Select value
This ensures that when a setting is reset to undefined (meaning 'use default'),
the UI displays the actual default value instead of showing undefined/empty state.
- Add ResetToDefault component with ↺ icon that shows when a setting
differs from its default value
- Tooltip shows the default value (e.g., 'Reset to default (true)')
- Component only renders when current value !== default
- Add translation keys for boolean/empty/resetToDefault formatting
- Integrate with BrowserSettings as proof of concept:
- browserToolEnabled checkbox
- browserViewportSize dropdown
- screenshotQuality slider
- Add comprehensive tests for visibility, functionality, and styling
EMBEDDING_MODEL_PROFILES was being stored in globalState on every
ClineProvider initialization, but this is unnecessary - it's static
reference data that should be passed directly to the webview.
Changes:
- Remove line that stored EMBEDDING_MODEL_PROFILES in globalState
- The webview still receives the data via the ?? fallback in getState()
- Add migration v3 to clean up existing codebaseIndexModels keys
- Add tests for migration v3
IMPORTANT: Every setting with a default value is now in settingDefaults.
This enables clearDefaultSettings() to properly clear ALL default values
from storage on every startup, ensuring defaults are never persisted.
Added settings:
- Auto-approval: autoApprovalEnabled, alwaysAllowReadOnly, alwaysAllowWrite,
alwaysAllowBrowser, alwaysAllowMcp, alwaysAllowModeSwitch, alwaysAllowSubtasks,
alwaysAllowExecute, requestDelaySeconds, followupAutoApproveTimeoutMs, etc.
- Terminal: terminalShellIntegrationDisabled, terminalCommandDelay,
terminalPowershellCounter, terminalZsh*, terminalCompressProgressBar
- Other: diagnosticsEnabled, historyPreviewCollapsed, hasOpenedModeSelector,
enableMcpServerCreation, rateLimitSeconds
Removed settings:
- diffEnabled, fuzzyMatchThreshold (removed from schema)
Updated test expectations to match new comprehensive defaults list.
This implements 'Option 2' - every-startup clearing of default values.
- Add clearDefaultSettings() function that checks all settings in
settingDefaults and clears any that exactly match the default
- Add runStartupSettingsMaintenance() as the main entry point that
runs both migrations (once) and default clearing (every startup)
- Update ContextProxy to use runStartupSettingsMaintenance
- Add comprehensive tests for the new functionality
This ensures users always benefit from default value improvements.
Note: Users cannot 'lock in' a value that matches the default.
- Change codebaseIndexEnabled default from true to false in IndexingSettings.tsx
- Remove condensingApiConfigId from settingDefaults (setting removed from schema)
- Add settingDefaults registry in packages/types/src/defaults.ts
- Add settings migration framework with versioned migrations
- Flatten codebaseIndexConfig to top-level keys for consistency
- Create new IndexingSettings UI component in Settings view
- Update SettingsView to pass undefined instead of coerced defaults
- Update ExtensionStateContext types to support optional settings
- Add comprehensive tests for defaults and migrations
* feat(condense): add smart code folding with tree-sitter signatures
At context condensation time, use tree-sitter to generate folded code
signatures (function definitions, class declarations) for files read
during the conversation. Each file is included as its own <system-reminder>
block in the condensed summary, preserving structural awareness without
consuming excessive tokens.
- Add getFilesReadByRoo() method to FileContextTracker
- Create generateFoldedFileContext() using tree-sitter parsing
- Update summarizeConversation() to accept array of file sections
- Each file gets its own content block in the summary message
- Add comprehensive test coverage (12 tests)
* fix: skip tree-sitter error strings in folded file context
- Add isTreeSitterErrorString helper to detect error messages
- Skip files that return error strings instead of embedding them
- Add test for error string handling
* refactor: move generateFoldedFileContext() inside summarizeConversation()
- Update summarizeConversation() to accept filesReadByRoo, cwd, rooIgnoreController instead of pre-generated sections
- Move folded file context generation inside summarizeConversation() (lines 319-339)
- Update ContextManagementOptions type and manageContext() to pass new parameters
- Remove generateFoldedFileContext from Task.ts imports - folding now handled internally
- Update all tests to use new parameter signature
- Reduces Task.ts complexity by moving folding logic to summarization module
* fix: prioritize most recently read files in folded context
Files are now sorted by roo_read_date descending before folded context
generation, so if the character budget runs out, the most relevant
(recently read) files are included and older files are skipped.
* refactor: improve code quality in condense module
- Convert summarizeConversation to use options object instead of 11 positional params
- Extract duplicated getFilesReadByRoo error handling into helper method
- Remove unnecessary re-export of generateFoldedFileContext
- Update all test files to use new options object pattern
* fix: address roomote feedback - batch error logging and early budget exit
---------
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
fix: prevent false validation error for local Ollama models
The validation logic was checking against an empty router models object
that was initialized but never populated for Ollama. This caused false
validation errors even when models existed locally.
Now only validates against router models if they actually contain data,
preventing the false error when using local Ollama models.
Fixes ROO-581
Co-authored-by: Roo Code <roomote@roocode.com>
- Modified VsCodeLmHandler.internalCountTokens() to create temporary cancellation tokens when needed
- Token counting now works both during and outside of active requests
- Added 4 new tests to verify the fix and prevent regression
- Resolves issue where VS Code LM API users experienced context overflow errors
* Taskheader
* Subtask messages
* View subtask
* subtasks in history items
* i18n
* Table
* Lighter visuals
* bug
* fix: Align tests with implementation behavior
* refactor: extract CircularProgress component from TaskHeader
- Created reusable CircularProgress component for displaying percentage as a ring
- Moved inline SVG calculation from TaskHeader.tsx to dedicated component
- Added comprehensive tests for CircularProgress component (14 tests)
- Component supports customizable size, strokeWidth, and className
- Includes proper accessibility attributes (progressbar role, aria-valuenow)
* chore: update StandardTooltip default delay to 600ms
As mentioned in the PR description, increased the tooltip delay to 600ms
for less intrusive tooltips. The delay is still configurable via the
delay prop for components that need a different value.
---------
Co-authored-by: Roo Code <roomote@roocode.com>