Commit graph

1198 commits

Author SHA1 Message Date
Roomote Bot
e0196320b5
feat: Add configurable timeout for command execution (#5668)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
2025-07-14 14:12:12 -04:00
Roomote Bot
f71275ef55
fix: resolve vector dimension mismatch error when switching embedding models (#5616) (#5617)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
2025-07-14 14:10:09 -04:00
chris-garrett
a163053430
fix: [5424] return the cwd in the exec tool's response so that the model is not lost after subsequent calls (#5667) 2025-07-13 22:36:25 -04:00
Daniel
5bffebde58
feat: add enable/disable toggle for code indexing (#5599) 2025-07-12 12:55:50 -04:00
Matt Rubens
cdacdfd54b
Add a command denylist (#5614)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-07-12 12:36:04 -04:00
Hannes Rudolph
39b83070c3
feat: Enable dynamic tool selection in architect mode for context discovery (#5607)
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-07-11 22:47:45 -04:00
Murilo Pires
9aa2e6ea54
Fix/issue 2897 mermaid syntax warning (#5530) 2025-07-11 17:46:38 -04:00
Daniel
0ecae9d4f1
fix: exclude cache tokens from context window calculation (#5603)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-07-11 16:54:51 -04:00
Noritaka Kobayashi
ab55854702
chore: fix typos in comment & document (#5569) 2025-07-10 11:33:26 -04:00
Daniel
12ae900660
fix: handle null/empty custom modes files to prevent 'Cannot read properties of null' error (#5526)
* fix: handle null/empty custom modes files to prevent 'Cannot read properties of null' error

- Fix SimpleInstaller to ensure existingData is always an object after yaml.parse
- Fix CustomModesManager.parseYamlSafely to return empty object instead of null
- Ensure customModes array is always initialized in both install and remove operations
- Add tests for empty/null file handling scenarios
- Update existing tests to match correct behavior

* fix: handle null/undefined settings in updateModesInFile and loadModesFromFile

- Ensure settings object exists before accessing customModes property
- Initialize customModes as empty array if undefined
- Prevent 'Cannot read properties of null' error during mode import
- Add proper validation in loadModesFromFile before schema check
2025-07-09 15:49:32 -05:00
Matt Rubens
7fe1c0f47a
feat: prepare v3.23.0 release (#5497) 2025-07-09 00:05:23 -04:00
Ruakij
a2815e2026
Fix #3652: Allow insertContentTool to create new files with content (#4382)
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-07-08 23:14:28 -04:00
Hannes Rudolph
0028c56711
fix: strengthen codebase_search enforcement throughout conversations (#5486) 2025-07-08 23:12:53 -04:00
Daniel
09e348e21c
Move codebase indexing out of experimental (#5481) 2025-07-08 23:07:36 -04:00
Will Li
917b2cc882
Simplify edit panel (#5488)
fix
2025-07-08 20:11:04 -04:00
Daniel
c551e17327
refactor: remove legacy codebaseIndexOpenAiCompatibleModelDimension property (#5459) 2025-07-08 14:43:03 -04:00
Matt Rubens
0606c56bf1
Make the default architect prompt create a todo list (#5472) 2025-07-08 13:59:48 -04:00
Matt Rubens
32ce45d8bc
Add a hint about using todos for complicated tasks (#5473) 2025-07-08 13:45:38 -04:00
Will Li
a9a87c2e0f
Make the prompts editable now (#5359) 2025-07-08 10:42:16 -04:00
Matt Rubens
08a0c897ef
Remove warning about writing not being allowed (#5461) 2025-07-07 23:55:29 -04:00
Hannes Rudolph
d4abe73875
fix: add embedder validation to prevent misleading status indicators (#4398) (#5404)
* fix: add embedder validation to prevent misleading status indicators (#4398)

* fix: address PR feedback and fix critical issues

- Fixed settings-save flow to save before validation
- Fixed Error constructor usage in scanner.ts
- Fixed segment identification in file-watcher.ts
- Added missing translation keys for embedder validation errors

* fix: add missing Ollama translation keys

- Added missing ollama.title, description, and settings keys
- Fixed translation check failure in CI/CD pipeline
- Synchronized all 17 non-English locale files

* feat: add proactive embedder validation on provider switch

- Validate embedder connection when switching providers
- Prevent misleading 'Indexed' status when embedder is unavailable
- Show immediate error feedback for invalid configurations
- Add comprehensive test coverage for validation flow

This ensures users get immediate feedback when configuring embedders,
preventing confusion when providers like Ollama are not accessible.

* fix: improve error handling and validation in code indexing process

* refactor: extract common embedder validation and error handling logic

- Created shared/validation-helpers.ts with centralized error handling utilities
- Refactored OpenAI, OpenAI-Compatible, and Ollama embedders to use shared helpers
- Eliminated duplicate error handling code across embedders
- Improved maintainability and consistency of error handling
- Fixed test compatibility in manager.spec.ts
- All 2721 tests passing

* refactor: simplify validation helpers by removing unnecessary wrapper functions

- Removed getErrorMessageForConnectionError and inlined logic into handleValidationError
- Removed isRateLimitError, logRateLimitRetry, and logEmbeddingError wrapper functions
- Updated openai.ts and openai-compatible.ts to inline rate limit checking and logging
- Reduced code complexity while maintaining all functionality
- All 311 tests continue to pass

* fix: add missing invalidResponse i18n key and fix French translation

- Added missing 'invalidResponse' key to all locale files
- Fixed French translation: changed 'and accessible' to 'et accessible'
- Ensures proper error messages are displayed when embedder returns invalid responses

* fix: restore removed score settings in webviewMessageHandler

- Restored codebaseIndexSearchMaxResults and codebaseIndexSearchMinScore settings that were unintentionally removed
- Keep embedder validation related changes

* fix: revert unintended changes to file-watcher and scanner

- Reverted point ID generation back to using line numbers instead of segmentHash
- Restored { cause: deleteError } parameter in scanner error handling
- These changes were unrelated to the embedder validation feature

---------

Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-07-07 18:46:35 -04:00
axb
7645aad435
add todo tool (#5182)
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-07-07 14:07:39 -04:00
Murilo Pires
6ec017ca65
fix: correct export/import of OpenAI Compatible codebase indexing set… (#5383) 2025-07-07 11:53:33 -04:00
Roomote
25be23354a
Add description field to create_mode instructions (#5433)
* Add description field to create_mode instructions

- Include description field in optional but recommended fields list
- Add description field to YAML example with clear guidance
- Description field already exists in ModeConfig schema but was missing from instructions
- Provides short, human-readable description of what the mode does (1-2 sentences)

* Update description field guidance to 5 words instead of 1-2 sentences

- Changed description field guidance from '1-2 sentences' to '5 words'
- Updated YAML example to show concise 5-word description
- Addresses feedback from @mrubens in PR comment #3041823916
2025-07-06 11:00:29 -04:00
Roomote
8f216c3f88
Fix new_task tool streaming issue (#5432) 2025-07-06 09:17:18 -04:00
Daniel
5b1ca51ec0
feat: optimize file listing when maxWorkspaceFiles is 0 (#5421)
- Add early return in listFiles() when limit is 0 to avoid unnecessary file scanning
- Update getEnvironmentDetails() to show appropriate message when workspace files context is disabled
- Add test coverage for maxWorkspaceFiles=0 scenario
- Clean up test files to remove unnecessary mocking complexity

This optimization improves performance when users set maxWorkspaceFiles to 0, completely bypassing file system operations.
2025-07-05 11:28:16 -04:00
Daniel
49af895c1f
fix: restore search score threshold slider (#5410)
fix: restore search score threshold slider and fix value persistence (#5041)

- Add codebaseIndexSearchMinScore to WebviewMessage type definition
- Include codebaseIndexSearchMinScore in saveCodeIndexSettingsAtomic handler
- Initialize codebaseIndexSearchMinScore in ExtensionStateContext
- Fix logical OR operators to use nullish coalescing for proper 0 value handling
- Ensure search threshold values persist correctly when saving settings

This restores the deleted feature from PR #5041 and fixes the issue where
the search score threshold value was being reset upon saving.
2025-07-05 08:04:55 -04:00
Murilo Pires
4a78f51fe5
Feat/issue 5149 configurable max search results (#5402)
* feat: add configurable max search results for codebase indexing (#5149)

- Add codebaseIndexSearchMaxResults to configuration schema with validation (10-1000)
- Update Qdrant client to accept maxResults parameter in search method
- Add UI slider in Experimental Settings to configure max search results
- Rename constants to DEFAULT_MAX_SEARCH_RESULTS and DEFAULT_SEARCH_MIN_SCORE for clarity
- Add translations for new setting across all 17 supported languages
- Add comprehensive test coverage for config manager, Qdrant client, and UI components

fix: settings persistence for codebase index configuration

- Add new updateCodebaseIndexConfig message type to properly merge config updates
- Update SettingsView to send entire codebaseIndexConfig object instead of just enabled flag
- Add backend handler to merge configuration updates instead of overwriting
- Add tests for the new message handler functionality

This ensures the max search results setting persists correctly when saved.

* fix: correct property name in updateCodebaseIndexConfig message

The frontend was sending 'config' but the backend expects 'codebaseIndexConfig'.
This mismatch was preventing the max search results setting from persisting.

* feat: refactor codebase index constants and update search result defaults

* feat(chat): add advanced settings for maximum search results configuration

* refactor: remove updateCodebaseIndexConfig and integrate max search results into saveCodeIndexSettingsAtomic

- Removed updateCodebaseIndexConfig message type and handler as per PR feedback
- Added codebaseIndexSearchMaxResults to codeIndexSettings type in WebviewMessage.ts
- Updated saveCodeIndexSettingsAtomic to save codebaseIndexSearchMaxResults
- Fixed SettingsView.tsx to use codebaseIndexEnabled message instead of updateCodebaseIndexConfig

* Delete webview-ui/src/components/settings/__tests__/ExperimentalSettings.spec.tsx

* refactor: remove updateCodebaseIndexConfig tests to streamline codebase indexing logic

* revert this

---------

Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
2025-07-04 20:55:15 -04:00
lhish
8e7d9e092d
fix(tools): Resolve intermittent hangs and lack of clear error feedback in apply_diff tool (#5391)
* fix(tools): Resolve intermittent hangs and lack of clear error feedback in apply_diff tool (#5390)

* fix: show user-friendly error message for XML parsing failures

- Keep detailed XML structure instructions only for LLM via pushToolResult
- Show simple error message to user via cline.say
- Aligns with established error handling pattern in codebase

* feat: add telemetry for XML parsing errors

- Track XML parsing errors using captureDiffApplicationError
- Include consecutive mistake count for better error analysis
- Helps monitor and debug XML parsing issues in production

---------

Co-authored-by: Example User <user@example.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-07-04 10:02:28 -04:00
Hannes Rudolph
ede228e152
fix: prevent chatbox focus loss during automated file editing (#4574) (#5349)
* fix: prevent chatbox focus loss during automated file editing (#4574)

- Add preserveFocus: true to DiffViewProvider openDiffEditor method
- Implement comprehensive focus preservation during cursor positioning and scrolling
- Make scrollToFirstDiff async with focus restoration capabilities
- Update all tool files to use async scrollToFirstDiff
- Add comprehensive unit and E2E tests for focus preservation

Fixes #4574

* refactor: extract focus restoration logic and improve consistency

- Created restoreEditorFocus() helper method to eliminate code duplication
- Changed preserveFocus from false to true for consistent behavior
- Added error handling with silent logging for focus restoration failures
- Added null checks for undefined activeTextEditor cases

* Delete apps/vscode-e2e/src/suite/tools/focus-preservation.test.ts

It doesn't seem to be testing anything

* refactor: remove focus restoration logic to simplify diff editor interactions

* refactor: remove unnecessary await from scrollToFirstDiff calls

---------

Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-07-03 20:43:06 -04:00
Daniel
e508eaf3df
Fix code index secret persistence and improve settings UX (#5158)
* Fix code index secret persistence with async VSCode storage

- Add async secret methods to CodeIndexConfigManager
- Implement direct VSCode secret storage access bypassing ContextProxy cache
- Update loadConfiguration to use async secret loading
- Modify webview message handler to use new async secret storage
- Add public secret methods to CodeIndexManager
- Enhance debugging throughout secret flow

This fixes the issue where API keys were saved but not loaded immediately
into services due to ContextProxy cache synchronization issues.

* Fix code index secret persistence and test failures

- Add async secret handling to CodeIndexConfigManager with new methods:
  - getSecretAsync(), storeSecretAsync() for individual secrets
  - loadSecretsAsync(), storeSecretsAsync() for batch operations
- Update doesConfigChangeRequireRestart() to check OpenAI Compatible modelDimension changes
- Fix all failing tests by using setupSecretMocks() helper consistently
- Update manager.spec.ts to properly mock _recreateServices to avoid real service creation

This ensures API keys and other secrets are properly loaded from VSCode's async secret storage
and that configuration changes requiring service restart are correctly detected.

* feat: improve code index settings secret handling in UI

- Show placeholder dots (••••••••••••••••) in password fields when secrets are already set
- Only send modified secret fields to prevent overwriting existing secrets with empty values
- Track which fields have been modified by the user
- Add requestCodeIndexSecretStatus message handler to check if secrets exist
- Fix console.log to handle empty string keys without errors
- Ensure changing one setting doesn't clear other unmodified secrets

* refactor: disconnect code index from unified settings system

- Rename handleExternalSettingsChange to handleSettingsChange for clarity
- Remove handleSettingsChange call from ClineProvider (not related to code index)
- Remove codebaseIndexConfig from general settings save in SettingsView
- Delete unused codebaseIndexConfig message handler
- Remove codebaseIndexConfig from WebviewMessage type definition
- Code index settings are now fully independent with their own dedicated UI

* feat: separate code index enable/disable from indexing settings

- Move 'Enable codebase indexing' toggle to global settings in Experimental section
- Keep indexing-specific settings (API keys, URLs, models) in dedicated Code Index Settings component
- Add codebaseIndexEnabled handler to webview message handler
- Update translations with new settings title and disabled message
- Ensure code index service properly responds to enable/disable changes
- Maintain backward compatibility with existing codebaseIndexConfig structure

* refactor: remove ContextProxy.getVSCodeContext() and pass ExtensionContext directly

- Updated CodeIndexConfigManager to accept vscode.ExtensionContext in constructor
- Modified CodeIndexManager to pass context directly to CodeIndexConfigManager
- Updated webviewMessageHandler to use provider.context.secrets directly
- Removed getVSCodeContext() method from ContextProxy
- Updated all related tests to reflect these changes
- Fixed CodeIndexSettings webview tests after UI changes

* refactor: streamline secret handling by removing async methods and utilizing ContextProxy directly

* feat: translations and popover component

* refactor: simplify test mocks and improve checkbox handling in CodeIndexSettings tests

* refactor: remove debug logging from CodeIndexConfigManager, CodeIndexManager, CodeIndexServiceFactory, and QdrantVectorStore

* fix: merge missing translation keys from main after rebase

- Add advancedConfigLabel, searchMinScoreLabel, searchMinScoreDescription, searchMinScoreResetTooltip keys
- Update startIndexingButton and clearIndexDataButton labels to match main
- Preserve all CodeIndexPopover translations added in this PR

* Revert "fix: merge missing translation keys from main after rebase"

This reverts commit beb1de4924ac1475731fcd06d994ddb96eb1e5fd.

* fix: add missing translation keys from main branch after rebase

- Added codeIndex.advancedConfigLabel
- Added codeIndex.searchMinScoreLabel
- Added codeIndex.searchMinScoreDescription
- Added codeIndex.searchMinScoreResetTooltip

These keys exist on main but were missing from non-English locales after rebase.

* fix: remove clickIndicatorMessage, fix toggle message type, and clean up translation key inconsistencies

* refactor: streamline settings management in CodeIndexPopover and improve secret handling

* refactor: remove debug logging from configuration checks in CodeIndexConfigManager and webviewMessageHandler

* fix: translations

* refactor: remove CodeIndexSettings component and associated tests
2025-07-03 18:33:20 -04:00
Hannes Rudolph
329690cf54
feat: Delete .roo/rules-{mode} folder when custom mode is deleted (#5210) (#5317)
* feat: Add folder deletion when custom mode is deleted (#5210)

* fix: address PR feedback - fix Korean translation typo and add missing German translation

* fix: use os.homedir() instead of vscode.env.userHome

* fix: use dynamic home directory in webview tests for cross-platform compatibility

* fix: normalize path separators in tests for Windows compatibility

* feat: implement DeleteModeDialog component for mode deletion confirmation

* fix: use ref to store current modeToDelete value for consistent state handling

* feat: add error handling for rules folder deletion and localize error messages

* Update src/i18n/locales/ja/common.json

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* Update src/i18n/locales/zh-CN/common.json

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>

* fix: remove redundant rulesFolderExists from deleteCustomModeCheck response

* fix: update webviewMessageHandler tests to match fs import style

---------

Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-07-03 13:00:07 -04:00
WuWen
19cd001f8d
fix access_mcp_resource fails to handle images correctly (#5254) 2025-07-02 23:50:15 -04:00
Matt Rubens
cb44e6dda4
v3.22.6 (#5357) 2025-07-02 17:15:40 -04:00
Matt Rubens
1be6fce1a6
Check for protected files in single apply diff (#5348) 2025-07-02 13:52:13 -04:00
Matt Rubens
3993406ebd
Add .vscode/ to the list of write-protected files/directories (#5347) 2025-07-02 13:17:20 -04:00
Hannes Rudolph
70726bcd21
feat: Import export modes (#5074)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
2025-07-01 17:13:44 -04:00
SannidhyaSah
ff1e8ac2ee
fix: remove context size from environment details (#5165) (#5312)
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
2025-07-01 15:14:50 -04:00
Will Li
781beeb30f
Auto approve follow up questions (#5296) 2025-07-01 14:43:16 -04:00
Murilo Pires
933f28fe32
fix: Exclude cache files from rules compilation (#5283)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-07-01 10:33:32 -04:00
roomote
951f2d0fad
Fix #5294: Prevent Architect mode from providing time estimates (#5295)
* Fixes #5294: Add instruction to Architect mode to avoid time estimates

- Updated Architect mode custom instructions to explicitly prohibit providing time estimates
- Added clear guidance to focus on actionable plans without speculating about implementation timeframes
- Updated test snapshot to reflect the new instruction
- All tests passing

* More tweaks to prompt

---------

Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-07-01 09:42:46 -04:00
Hannes Rudolph
18c3f5dc33
feat: change default mode to architect for new installations (#5289)
* feat: change default mode to architect for new installations

- Reordered modes array to put architect mode first
- Updated test to reflect architect as the default mode
- Maintains backward compatibility for existing users

* test: update snapshots and fix tests for architect default mode

- Update all snapshot tests to reflect architect as the default mode
- Fix mode destructuring in validateToolUse tests
- All tests now pass with the new default mode configuration

* docs: add comment explaining mode ordering for default selection

Addresses PR review feedback to clarify that the first mode in the array
serves as the default for new installations

* fix: Update integration test to use lowercase mode name

The test was using 'Ask' (capitalized) but modes are now lowercase 'ask'.
This was causing the test to timeout as the mode validation failed.
2025-06-30 17:46:56 -04:00
Murilo Pires
b9626a7eff
fix: cap API retry exponential backoff at 10 minutes (#5171)
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-06-30 10:56:34 -04:00
roomote
fb711a097c
Fixes #4903: Consistent cancellation error messages for thinking vs streaming phases (#4904)
Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
2025-06-30 10:48:57 -04:00
takakoutso
562a007438
feat: Add automatic configuration import on extension startup (#4848)
Co-authored-by: Roo Code <chris@roocode.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-06-30 10:45:51 -04:00
Murilo Pires
64279166c4
fix: resolve URL loading timeout issues in @ mentions (#5160)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-06-30 10:40:53 -04:00
PaperBoardOfficial
8c493b393f
fixed profile context condensation threshold (#5230) 2025-06-30 10:37:18 -04:00
roomote
cd60bb3a7e
Fixes #5206: Update apply_diff tool documentation to accurately reflect multi-file capabilities (#5232)
* Fixes #5206

* Fix failing test: Update snapshot after documentation changes

- Updated system-prompt.spec.ts snapshot to match new tool descriptions
- Changes reflect updated multi-file diff strategy documentation
- Addresses test failure mentioned in PR #5232 comment by @mrubens
2025-06-30 09:01:44 -04:00
Matt Rubens
f763a5119b
Revert "Stop double-capturing cloud telemetry" (#5220) 2025-06-28 16:03:56 -04:00
Matt Rubens
8bb7ef083f
Stop double-capturing cloud telemetry (#5211) 2025-06-28 00:49:01 -04:00