* fix: make search_files path parameter optional and clarify tool descriptions
- Made path parameter optional in search_files tool (defaults to workspace root)
- Updated search_files description with clearer examples
- Improved codebase_search description to clarify when to use path parameter
- Updated test snapshots to reflect the changes
This addresses confusion where LLMs were unnecessarily specifying paths when searching from project root
* revert: remove search_files changes, keep only codebase_search improvements
- Reverted all changes to src/core/prompts/tools/search-files.ts
- Reverted all changes to src/core/tools/searchFilesTool.ts
- Updated test snapshots to reflect the reverted search_files tool
- Kept the codebase_search tool description improvements as intended
* Update codebase-search.ts
Simplify codebase_search tool documentation
- Condensed description to eliminate repetitive explanations about user wording
- Reduced from 2 examples to 1 comprehensive example showing optional path usage
- Streamlined parameter descriptions to remove redundancy
- Maintained all critical requirements (English queries, semantic search, path optionality)
- Reduced documentation size by ~40% while preserving clarity
* fix: add workspace directory context to codebase_search path parameter
- Added ToolArgs import and parameter to getCodebaseSearchDescription function
- Updated path parameter description to include '(relative to the current workspace directory ${args.cwd})'
- Updated index.ts to pass args to getCodebaseSearchDescription
- Maintains consistency with other tool descriptions like list_files and search_files
---------
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Hannes Rudolph <hrudolph@gmail.com>
* fix: add explicit max_output_tokens for GPT-5 Responses API
- Added max_output_tokens parameter to GPT-5 request body using model.maxTokens
- This prevents GPT-5 from defaulting to very large token limits (e.g., 120k)
- Updated tests to expect max_output_tokens in GPT-5 request bodies
- Fixed test for handling unhandled stream events by properly mocking SDK fallback
* fix: add missing translations for reasoningEffort.minimal in Indonesian and Dutch locales
* fix: correct GPT-5 response ID persistence and usage
- Renamed metadata field from 'previous_response_id' to 'response_id' for clarity
- Fixed logic to correctly use the response_id from the previous message as previous_response_id for the next request
- This resolves the 'Previous response with id not found' errors that occurred after multiple turns in the same session
* feat: add robust error handling for GPT-5 previous_response_id failures
- Automatically retry without previous_response_id when it's not found (400 error)
- Clear stored lastResponseId to prevent reusing stale IDs
- Handle errors in both SDK and SSE fallback paths
- Log warnings when retrying to help with debugging
* fix: handle GPT-5 response ID race condition with nano model
- Add promise-based synchronization for response ID persistence
- Wait for pending response ID from previous request before using it
- Resolve promise when response ID is received or cleared
- Add 100ms timeout to avoid blocking too long on ID resolution
- Properly clean up resolver on errors to prevent memory leaks
This fixes the race condition where fast nano model responses could cause
the next request to be initiated before the response ID was fully persisted.
* fix: address PR review comments for GPT-5 implementation
- Extract usage normalization helper to reduce duplication
- Suppress conversation continuity for first message (but respect explicit metadata)
- Deduplicate response ID resolver logic
- Remove dead enableGpt5ReasoningSummary option references
- DRY up GPT-5 event/usage handling with normalizeGpt5Usage helper
- Centralize default GPT-5 reasoning effort using model info
- Fix Indonesian locale minimal string misplacement
- Add clarifying comments for Developer prefix usage
- Add TODO for future verbosity UI capability gating
- Fix failing test in reasoning.spec.ts
* fix(openai-native): address Roomote inline feedback\n\n- Delegate standard GPT-5 SSE event types to shared processor to reduce duplication\n- Add JSDoc for response ID accessors\n- Standardize key error messages for GPT-5 Responses API fallback\n- Extract persistGpt5Metadata() in Task to simplify metadata writes\n- Add malformed JSON SSE parsing test\n
* fix(openai-native,gpt5): correct usage cost calc (use calculateApiCostOpenAI incl. cache); enforce 'skip once' continuity via suppressPreviousResponseId; dedupe responseId resolver on SSE 400; feat: gate reasoning.summary by enableGpt5ReasoningSummary; centralize default reasoning effort; types/ui: add ModelInfo.supportsVerbosity and gate Verbosity UI by capability; refactor: avoid duplicate usage emission in SSE done/completed
* fix(gpt5): default enableGpt5ReasoningSummary=true to preserve tests and expected behavior
* fix(gpt5): canonicalize GPT-5 metadata key to previous_response_id and align enableGpt5ReasoningSummary default docs
* fix(openai-native): remove review artifact comments and guard GPT-5 in completePrompt
* Revert "fix: prevent unnecessary MCP server refresh on settings save (#6772) (#6779)"
This reverts commit 8d05bc179b.
* fix(mcp): Revert changes causing startup issues and temporarily disable notifications
- Reverted PR #6779 which prevented unnecessary MCP server refreshes but caused startup failures
- Temporarily disabled MCP notification popups as a stopgap solution
- Added TODO comments explaining the temporary nature of disabled notifications
- This allows MCP servers to function properly while a more robust solution is developed
* test(mcp): restore mcpEnabled toggle coverage to verify delegation to McpHub
* refactor(mcp): remove info notifications during refresh; rely on UI indicator
* feat: add GPT-5 model support
- Added GPT-5 models (gpt-5-2025-08-07, gpt-5-mini-2025-08-07, gpt-5-nano-2025-08-07)
- Added nectarine-alpha-new-reasoning-effort-2025-07-25 experimental model
- Set gpt-5-2025-08-07 as default OpenAI Native model
- Implemented GPT-5 specific handling with streaming and reasoning effort support
* fix: remove hardcoded temperature from GPT-5 handler
- Updated handleGPT5Message to use configurable temperature
- Now uses this.options.modelTemperature ?? OPENAI_NATIVE_DEFAULT_TEMPERATURE
- Maintains consistency with other model handlers
* feat: add reasoning effort support for all OpenAI models
* fix: update test to expect new default model gpt-5-2025-08-07
* feat: increase GPT-5 models context window to 400,000
- Updated context window from 256,000 to 400,000 for gpt-5-2025-08-07
- Updated context window from 256,000 to 400,000 for gpt-5-mini-2025-08-07
- Updated context window from 256,000 to 400,000 for gpt-5-nano-2025-08-07
- Updated context window from 256,000 to 400,000 for nectarine-alpha-new-reasoning-effort-2025-07-25
As requested by @daniel-lxs in PR #6819
* revert: remove GPT-5 models, keep only nectarine experimental model
- Removed gpt-5-2025-08-07, gpt-5-mini-2025-08-07, gpt-5-nano-2025-08-07
- Kept nectarine-alpha-new-reasoning-effort-2025-07-25 experimental model
- Reverted default model back to gpt-4o
- Updated tests and changeset accordingly
* feat: add GPT-5 models with updated context windows
- Added gpt-5-2025-08-07, gpt-5-mini-2025-08-07, gpt-5-nano-2025-08-07 models
- All GPT-5 models configured with 400,000 context window
- Updated nectarine model context window to 256,000
- All models configured with reasoning effort support
- Set gpt-5-2025-08-07 as default OpenAI Native model
- Added GPT-5 model handling in openai-native.ts
- Updated tests to reflect new default model
* fix: restore reasoning effort support for o1 series models
- Added supportsReasoningEffort: true to o1, o1-preview, and o1-mini models
- This restores the ability to use reasoning effort parameters with these models
- The existing code in openai-native.ts already handles reasoning effort correctly
* Revert "fix: restore reasoning effort support for o1 series models"
This reverts commit 7251237ae8.
* fix: restore reasoning effort support for o3 and o4 models
- Added supportsReasoningEffort: true to o3, o3-high, o3-low models
- Added supportsReasoningEffort: true to o4-mini, o4-mini-high, o4-mini-low models
- Added supportsReasoningEffort: true to o3-mini, o3-mini-high, o3-mini-low models
- These models have both supportsReasoningEffort and reasoningEffort properties
* Revert "fix: restore reasoning effort support for o3 and o4 models"
This reverts commit a75a2b8a69.
* fix: restore reasoning effort support for o3 and o4 models
- Added supportsReasoningEffort: true to o3, o3-high, o3-low models
- Added supportsReasoningEffort: true to o4-mini, o4-mini-high, o4-mini-low models
- Added supportsReasoningEffort: true to o3-mini, o3-mini-high, o3-mini-low models
* fix: adjust reasoning effort support for o3/o4 models
- Keep supportsReasoningEffort only for base o3, o4-mini, and o3-mini models
- Remove supportsReasoningEffort from -high and -low variants
- Position supportsReasoningEffort right before reasoningEffort property
* fix: remove nectarine experimental model
- Removed nectarine-alpha-new-reasoning-effort-2025-07-25 from openai.ts
- Removed nectarine handling from openai-native.ts (renamed to handleGpt5Message)
- Removed associated changeset file
- Keep GPT-5 models with developer role handling
* feat: implement full GPT-5 support with verbosity and minimal reasoning
- Add all three GPT-5 models with accurate pricing (.25/0 for gpt-5, /bin/sh.25/ for mini, /bin/sh.05//bin/sh.40 for nano)
- Implement verbosity control (low/medium/high) that passes through to API
- Add minimal reasoning effort support for fastest response times
- GPT-5 models use developer role instead of system role
- Set gpt-5-2025-08-07 as default OpenAI Native model
- Add Responses API infrastructure for future migration
- Update tests to verify all GPT-5 features
- All 27 tests passing
Note: UI controls for verbosity still need to be added in a follow-up PR
* feat: add verbosity setting for GPT-5 models
- Add VerbosityLevel type definition to model types
- Add verbosity field to ProviderSettings schema
- Create Verbosity UI component for settings
- Add verbosity labels to all localization files
- Integrate verbosity handling in model parameters transformation
- Update OpenAI native handler to support verbosity for GPT-5
- Add comprehensive tests for verbosity setting
- Update existing GPT-5 tests to use verbosity from settings
* Delete .roorules
---------
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: hannesrudolph <hrudolph@gmail.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
* fix: add missing MCP error translation keys
- Added refresh_after_disable translation key
- Added refresh_after_enable translation key
- Added disconnect_servers_partial translation key
- Updated all 18 locale files with the missing keys
- Fixes the "errors.refresh_after_disable" display issue in MCP server management
* fix: remove fallback English strings from MCP error translations
As requested by @mrubens, removed the || operator and fallback English strings from:
- t("mcp:errors.disconnect_servers_partial")
- t("mcp:errors.refresh_after_disable")
- t("mcp:errors.refresh_after_enable")
The translation system will now rely solely on the localized strings without fallbacks.
* fix: translate MCP error messages to all locales
- Translated "refresh_after_disable" error message
- Translated "refresh_after_enable" error message
- Translated "disconnect_servers_partial" error message with count placeholder
- All 17 non-English locales now have proper translations instead of English text
---------
Co-authored-by: Roo Code <roomote@roocode.com>
* feat: add GLM-4.5 and OpenAI gpt-oss models to Fireworks provider
- Added GLM-4.5 (355B/32B active) and GLM-4.5-Air (106B/12B active) models from Z.ai
- Added gpt-oss-20b and gpt-oss-120b models from OpenAI
- All models configured with 128K context window
- Added comprehensive test coverage for all new models
Fixes#6753
* fix: update GLM-4.5 model IDs to use p instead of hyphen
- Changed glm-4-5 to glm-4p5
- Changed glm-4-5-air to glm-4p5-air
- Updated corresponding test cases
---------
Co-authored-by: Roo Code <roomote@roocode.com>
* feat: focus chat input when clicking plus button in extension menu
- Added focusInput action after chatButtonClicked in plusButtonClicked handler
- This ensures the text area in ChatView gets focused when users click the + button
- Improves user experience by allowing immediate typing after creating new chat
* fix: replace unreliable setTimeout with sequential message passing
- Removed setTimeout with hardcoded 100ms delay
- Now sending focusInput action immediately after chatButtonClicked
- This ensures proper sequencing without arbitrary timing delays
- More reliable approach that doesn't depend on timing assumptions
---------
Co-authored-by: Roo Code <roomote@roocode.com>
* fix: handle current directory path "." correctly in codebase_search tool
- Fix path filtering logic in QdrantVectorStore.search() to properly handle current directory representations
- When directoryPrefix is ".", "./", "", or similar, set filter to undefined to search entire workspace
- Add comprehensive tests covering various current directory path formats including cross-platform support
- Resolves issue where codebase_search with path="." returned no results
Fixes#6514
* fix: normalize directory prefix handling in Qdrant vector store
* fix: normalize paths starting with './' and fix OS-dependency issue
- Use forward slash for splitting after toPosix() conversion
- Remove leading './' from paths like './src' to normalize them to 'src'
- Update test expectations to match correct behavior
* refactor: use path.posix.normalize instead of custom toPosix method
- Replaced directoryPrefix.toPosix() with path.posix.normalize()
- Added proper handling of backslashes before normalization
- Updated test mock to include posix.normalize method
- All tests passing (381 tests in code-index service)
* refactor: address review comments - improve path normalization
- Keep check for './' after normalization as path.posix.normalize('./') returns './'
- Use actual Node.js path.posix implementation in tests instead of custom mock
- Apply path.posix.normalize to cleanedPrefix for consistency
All 381 code-index tests pass
* fix: apply path.posix.normalize when cleaning prefix to avoid redundant normalization
Addresses review comment from @mrubens to normalize the path at line 385 instead of normalizing twice
* fix: correct current directory detection logic
The issue was that the condition checked for an empty string after normalization,
but path.posix.normalize('') actually returns '.', not ''. This caused the
current directory check to fail when an empty string was passed.
Removed the redundant empty string check since normalize('') returns '.' which
is already handled by the first condition.
---------
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
Co-authored-by: hannesrudolph <hrudolph@gmail.com>
* fix: recover from error state when Qdrant becomes available
- Add recoverFromError method to CodeIndexManager to clear error state and reset internal services
- Update startIndexing handler to check for error state and recover before initialization
- Add comprehensive tests for error recovery functionality
Fixes#6660
* fix: address PR review comments for code indexing error recovery
- Add race condition protection for multiple rapid clicks on Start Indexing button
- Add error handling for setSystemState in recoverFromError method
- Enhance JSDoc documentation for recoverFromError method
- Add test cases for recoverFromError idempotency and error handling
* refactor: move error recovery logic into startIndexing method
- Moved error recovery from webviewMessageHandler into CodeIndexManager.startIndexing()
- This ensures error recovery happens whenever indexing is started, not just from UI
- Added race condition prevention flag within CodeIndexManager
- Simplified webviewMessageHandler by removing error state checking
- The startIndexing method now automatically recovers from error state before proceeding
* fix: remove await from startIndexing calls and update JSDoc
- startIndexing should never be awaited as it's a long-running background process
- Added JSDoc warning to never await this method
- Updated webviewMessageHandler to not await startIndexing calls
* fix: use platform-agnostic paths in code-index manager tests for Windows compatibility
---------
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>