Commit graph

4694 commits

Author SHA1 Message Date
Daniel Riccio
7b8dde81ae
feat(terminal): add execution marker for command execution tracking 2025-06-11 14:05:37 -05:00
github-actions[bot]
a5ea602339
Changeset version bump (#4559)
* changeset version bump

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-06-11 13:43:51 -04:00
Matt Rubens
f131cbfbee
v3.19.7 (#4558) 2025-06-11 13:38:58 -04:00
Chris Estreich
083ac9333a
Revert "chore(deps): update postgres docker tag to v17" (#4557) 2025-06-11 10:32:11 -07:00
Matt Rubens
e1c48f0698
Don't grab sidebar focus in the McpHub (#4548) 2025-06-11 09:33:29 -04:00
Dicha Zelianivan Arkana
bfeb12bfb4
chore: add data-testid rule (#4505) 2025-06-10 21:39:49 -04:00
Chris Estreich
c03869bf1e
Remove Storybook + unused components (#4517) 2025-06-10 14:29:39 -07:00
renovate[bot]
243a07e98c
chore(deps): update dependency knip to v5.60.2 (#4515)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-10 14:19:26 -07:00
renovate[bot]
7f36b4ab0a
chore(deps): update eslint monorepo to v9.28.0 (#4516)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-10 14:19:18 -07:00
renovate[bot]
67a1e7fdde
chore(deps): update dependency @types/node to v22.15.31 (#4514)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-10 13:59:25 -07:00
renovate[bot]
31710c2c79
chore(deps): update dependency @types/node to v18.19.111 (#4513)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-10 13:59:20 -07:00
renovate[bot]
5236d45ec8
fix(deps): update dependency drizzle-zod to ^0.8.0 (#4181)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-10 13:52:33 -07:00
renovate[bot]
639cace3f7
fix(deps): update dependency fast-xml-parser to v5 (#4358)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
Co-authored-by: cte <cestreich@gmail.com>
2025-06-10 13:51:12 -07:00
renovate[bot]
cf7c4a13a0
chore(deps): update postgres docker tag to v17 (#4350)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-10 13:50:29 -07:00
renovate[bot]
6d399d8d2e
fix(deps): update dependency drizzle-orm to ^0.44.0 (#4178)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-10 13:47:50 -07:00
renovate[bot]
12982f1bc5
fix(deps): update dependency i18next to v25 (#4359)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-10 13:47:42 -07:00
renovate[bot]
367593bf3e
chore(deps): update peter-evans/create-pull-request action to v7 (#4349)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-10 13:47:34 -07:00
renovate[bot]
385b5429a7
chore(deps): update storybook monorepo to v9 (major) (#4353)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-10 13:47:24 -07:00
renovate[bot]
cca80b23d7
fix(deps): update dependency @google/genai to v1 (#4354)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-06-10 13:47:17 -07:00
Chris Estreich
64dbcc8221
Disable checkpoint if nested git repos are detected (#4509) 2025-06-10 13:29:19 -07:00
Chris Estreich
8d5dab3518
GHA evals (#4472) 2025-06-10 11:01:54 -07:00
Chris Estreich
bb08fc80cf
Switch back to GH runners for CI (#4507) 2025-06-10 11:01:12 -07:00
blacksmith-sh[bot]
fb83f917cc
.github/workflows: Migrate workflows to Blacksmith runners (#4504)
Co-authored-by: blacksmith-sh[bot] <157653362+blacksmith-sh[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <cestreich@gmail.com>
2025-06-10 10:41:20 -07:00
Daniel Trugman
e2516ebe02
Control Gemini thinking budget via Requesty (#4486) 2025-06-09 22:32:24 -07:00
github-actions[bot]
861a866215
Changeset version bump (#4492)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Chris Estreich <cestreich@gmail.com>
2025-06-09 22:31:00 -07:00
Chris Estreich
0dede30c43
Fix changeset:version failure (#4491) 2025-06-09 22:07:34 -07:00
Chris Estreich
bec24517d9
v3.19.6 (#4490) 2025-06-09 21:59:07 -07:00
Hannes Rudolph
bf35dcd626
fix: remove explicit cache_control for Google models in OpenRouter (#4487) (#4488)
* fix: remove explicit cache_control for Google models in OpenRouter (#4487)

- Remove all Google models from OPEN_ROUTER_PROMPT_CACHING_MODELS set
- This resolves 3+ minute lag when using google/gemini-2.5-pro-preview
- OpenRouter still provides automatic implicit ephemeral caching for these models
- Updated tests to handle intentional exclusion of Google models from explicit caching

Fixes #4487

* refactor: simplify OpenRouter caching test logic

- Replace hardcoded exclusion list with simple Google model filter
- Keep original validation logic but make it more maintainable
- Still ensures all our caching models are supported by OpenRouter
- Still verifies we exclude all Google models from explicit caching

* cleanup: remove unused excludedModels variable

- Variable was defined but never used
- Keeps the test logic clean and focused

* refactor: only exclude google/gemini-2.5-pro-preview from caching

- More surgical approach - only exclude the specific problematic model
- Keep other Google models in caching (they work fine)
- Add comment explaining the exclusion with issue reference
- Update test to only exclude the specific model

This targets just the model causing 3+ minute lag while preserving
caching benefits for other Google models that work properly.
2025-06-10 00:48:40 -04:00
John Richmond
736c4b1810
Improve eval docker ports (#4489) 2025-06-09 21:41:18 -07:00
Chris Estreich
483d951723
Try to fix win32 esbuild (#4479) 2025-06-09 15:03:44 -07:00
Chris Estreich
f5c53f1ed7
Retry tasks that disconnect before completion or timeout (#4461) 2025-06-09 14:26:51 -07:00
Chris Estreich
2bf4347cc3
Document how to add evals (#4470) 2025-06-09 14:26:19 -07:00
Chris Estreich
73ed9f2b26
Docker cleanup script (#4469) 2025-06-09 14:25:13 -07:00
Chris Estreich
174da08b23
Publish CI failures to Slack (#4477) 2025-06-09 14:21:14 -07:00
Matt Rubens
1d63fb6773
Run prettier on src (#4478) 2025-06-09 17:10:33 -04:00
Chris Estreich
5bc6690244
Allow manual dispatch for publish-nightly (#4476) 2025-06-09 12:09:45 -07:00
Brendan O'Leary
bfe014fd89
Clarify that the default not the max is 15 files (#4474)
* Clarify that the default not the max is 15 files

* Update webview-ui/src/i18n/locales/en/settings.json

Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>

* Update all languages for CONCURRENT_FILE_READS setting

---------

Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-06-09 14:23:03 -04:00
Matt Rubens
8d2eeda4ad
Revert "fix: use safeWriteJson for all JSON file writes" (#4471)
Revert "fix: use safeWriteJson for all JSON file writes (#3772)"

This reverts commit 1be30fc8c2.
2025-06-09 13:53:17 -04:00
Sam Hoang Van
19108f7136
Fix Copy button logic (#4458)
* refactor: streamline text copying by removing history highlight spans

* refactor: improve regex for stripping history highlight spans to handle all content types

---------

Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-06-09 10:40:31 -04:00
Sacha Sayan
360b0e7336
UI Tweak: Fade buttons on history preview (homescreen) if no interaction in progress. (#3523)
Fade buttons on history preview unless mouseover.
2025-06-08 07:27:42 -07:00
Taylor Wilsdon
3f54efca2d
feat: Add Refresh MCP Servers capability, fix state changes in MCP server management UI view (#4267)
* docs: update contributors list [skip ci]

* add refresh all mcp button & supporting logic

* fully working, clean up debug

* begin cleanup

* console debug logging cleanup

* more logging

* Revert "Update contributors list"

* cleanup

* add missing translations

* global and project level i18n strings

* refactor: move translations

* fix: improve MCP settings buttons layout for responsive design

- Add flexWrap to button container to allow wrapping on smaller screens
- Change buttons from fixed flex:1 to flex: 1 1 auto with minWidth
- Ensures buttons maintain minimum readable width of 120px
- Prevents button text from being truncated on narrow viewports

* fix: Add missing vscode mock method and execa mock for McpHub tests

- Added createTextEditorDecorationType to vscode mock in McpHub.test.ts
- Created execa mock to handle ESM module import issues
- Fixes test failure that was exposed by PR #4267's module loading changes

* fix: watch changes on project mcp settings file

---------

Co-authored-by: taylorwilsdon <taylorwilsdon@users.noreply.github.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-06-08 07:25:29 -07:00
KJ7LNW
1be30fc8c2
fix: use safeWriteJson for all JSON file writes (#3772)
* feat: Add safeWriteJson utility for atomic file operations

Implements a robust JSON file writing utility that:
- Prevents concurrent writes to the same file using in-memory locks
- Ensures atomic operations with temporary file and backup strategies
- Handles error cases with proper rollback mechanisms
- Cleans up temporary files even when operations fail
- Provides comprehensive test coverage for success and failure scenarios

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* fix: use safeWriteJson for all JSON file writes

This change refactors all direct JSON file writes to use the safeWriteJson
utility, which implements atomic file writes to prevent data corruption
during write operations.

- Modified safeWriteJson to accept optional replacer and space arguments
- Updated tests to verify correct behavior with the new implementation

Fixes: #722
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* feat: Implement inter-process file locking for safeWriteJson

Replaces the previous in-memory lock in `safeWriteJson` with
`proper-lockfile` to provide robust, cross-process advisory file
locking. This enhances safety when multiple processes might attempt
concurrent writes to the same JSON file.

Key changes:
- Added `proper-lockfile` and `@types/proper-lockfile` dependencies.
- `safeWriteJson` now uses `proper-lockfile.lock()` with configured
  retries, staleness checks (31s), and lock update intervals (10s).
- An `onCompromised` handler is included to manage scenarios where
  the lock state is unexpectedly altered.
- Logging and comments within `safeWriteJson` have been refined for
  clarity, ensuring error logs include backtraces.
- The test suite `safeWriteJson.test.ts` has been significantly
  updated to:
    - Use real timers (`jest.useRealTimers()`).
    - Employ a more comprehensive mock for `fs/promises`.
    - Correctly manage file pre-existence for various scenarios.
    - Simulate lock contention by mocking `proper-lockfile.lock()`
      using `jest.doMock` and a dynamic require for the SUT.
    - Verify lock release by checking for the absence of the `.lock`
      file.

All tests are passing with these changes.

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* feat: implement streaming JSON write in safeWriteJson

Refactor safeWriteJson to use stream-json for memory-efficient JSON serialization:
- Replace in-memory string creation with streaming pipeline
- Add Disassembler and Stringer from stream-json library
- Extract streaming logic to a dedicated helper function
- Add proper-lockfile and stream-json dependencies

This implementation reduces memory usage when writing large JSON objects.

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* fix: improve safeWriteJson locking mechanism

- Use file path itself for locking instead of separate lock file
- Improve error handling and clarity of code
- Enhance cleanup of temporary files

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* test: fix safeWriteJson test failures

- Ensure test file exists before locking
- Add proper mocking for fs.createWriteStream
- Fix test assertions to match expected behavior
- Improve test comments to follow project guidelines

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* test: update tests to work with safeWriteJson

Updated tests to work with safeWriteJson instead of direct fs.writeFile calls:

- Updated importExport.test.ts to expect safeWriteJson calls instead of fs.writeFile
- Fixed McpHub.test.ts by properly mocking fs/promises module:
  - Moved jest.mock() to the top of the file before any imports
  - Added mock implementations for all fs functions used by safeWriteJson
  - Updated the test setup to work with the mocked fs module

All tests now pass successfully.

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* refactor: replace JSON.stringify with safeWriteJson for file operations

Replace all non-test instances of JSON.stringify used for writing to JSON files with safeWriteJson to ensure safer file operations with proper locking, error handling, and atomic writes.

- Updated src/services/mcp/McpHub.ts
- Updated src/services/code-index/cache-manager.ts
- Updated src/api/providers/fetchers/modelEndpointCache.ts
- Updated src/api/providers/fetchers/modelCache.ts
- Updated tests to match the new implementation

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

* docs: add rules for using safeWriteJson

Add concise rules for using safeWriteJson instead of JSON.stringify with file operations to ensure atomic writes and prevent data corruption.

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>

---------

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
Co-authored-by: Eric Wheeler <roo-code@z.ewheeler.org>
Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
2025-06-08 07:17:20 -07:00
Hannes Rudolph
67d238afd0
feat: add experimental flag to disable command execution in attempt_c… (#4352)
* feat: add experimental flag to disable command execution in attempt_completion tool

* fix: remove deprecation phase comments from attemptCompletionTool

* feat: add translations for disable completion command experiment

* fix: revert unintended package.json change

* Rename attempt-completion.experiment.test.ts to attempt-completion.test.ts

* fix: address PR feedback - restore autoCondenseContext in tests and remove type assertion

---------

Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
2025-06-08 07:14:57 -07:00
Matt Rubens
540d4fb94f
Add a share button when logged into cloud (#4448)
* Add a share button when logged into cloud

* Only show share button if enabled

* PR feedback
2025-06-08 07:08:41 -07:00
user202729
73e4418c12
Remove usage of npx (#4003) 2025-06-07 17:22:45 -07:00
kcwhite
12b8d59562
Bug fix for trailing slash error when using LiteLLM provider (#4275)
* Added changeset for my code changes

* Use URL constructor for joining baseUrl and path in litellm.ts

* Restoring Roo dotfiles

* Moved Roo dotfiles to root directory

* Revert this

* Add tests for litellm URL constructor fix

---------

Co-authored-by: Kevin White <kcwhite@ancestry.com>
Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-06-07 17:21:11 -07:00
Chris Estreich
52673b3721
Harden evals with retry logic + centralize logs on Docker host (#4440)
* Harden evals with retry logic + centralize logs on Docker host

* Don't delete controller container on exit

* Add randomness

* More tweaks

* More tweaks
2025-06-07 08:58:09 -07:00
Chris Estreich
6a232a99c6
Prevent hanging processes from preventing container cleanup (#4428) 2025-06-06 17:07:31 -07:00
Hannes Rudolph
b6bfeefc46
Remove mcp.json configuration and add it to .gitignore (#4422) 2025-06-06 12:33:35 -04:00
Chris Estreich
39d7f559d2
Update evals README.md (#4420)
* Update README.md

* Update README.md
2025-06-06 09:04:11 -07:00