fix(RovoDev): store binary bundle in global storage instead of per-workspace - #1920
Open
NSExceptional wants to merge 1 commit into
Open
fix(RovoDev): store binary bundle in global storage instead of per-workspace#1920NSExceptional wants to merge 1 commit into
NSExceptional wants to merge 1 commit into
Conversation
NSExceptional
requested review from
Blastoplex,
amarg-at,
bwieger-atlassian-com,
cabella-dot,
ccallcottstevens,
cindy-atl,
dchiew-atl,
jwang19-atlassian,
leandrowd,
marcomura,
matt-lassian,
mattcolman,
sdzh-atlassian and
teg-atlassian
as code owners
July 30, 2026 22:17
|
Hooray! All contributors have signed the CLA. |
Contributor
|
To enable Rovo Dev code reviews, link your GitHub account to your Atlassian account. This is a one-time task that takes less than a minute. Once your account is linked, resubmit the pull request to trigger a code review. |
NSExceptional
force-pushed
the
fix/rovodev-bin-global-storage
branch
from
July 30, 2026 22:27
8ac108b to
7d2ec19
Compare
The Rovo Dev CLI bundle (Python runtime, tree-sitter language pack, ripgrep, native libs; ~400MB) is version-pinned and byte-identical across workspaces, but GetRovoDevURIs rooted it at context.storageUri, so a full copy was downloaded into every workspace's storage folder. On a machine with 34 workspaces this consumed ~14GB. Root it at context.globalStorageUri instead. The existing per-version subdirectory already provides a safe dedup/cache key, so the bundle is now downloaded once per version and shared across all workspaces. This also removes the storageUri non-null assertion, which could be undefined when no workspace is open. Additionally, remove any leftover per-workspace bundle from the old location when a workspace initializes Rovo Dev, so existing installs reclaim the duplicated storage automatically rather than requiring manual cleanup.
NSExceptional
force-pushed
the
fix/rovodev-bin-global-storage
branch
from
July 31, 2026 11:57
7d2ec19 to
d12decc
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What Is This Change?
The Rovo Dev CLI binary bundle is downloaded into per-workspace storage (
context.storageUri) instead of shared global storage. The bundle is version-pinned and byte-for-byte identical across workspaces — it contains a bundled Python 3.13 runtime, the fulltree_sitter_language_pack, ripgrep,git-ai, native crypto/grpc libraries, and theatlassian_cli_rovodevbinary (~366–435 MB per version).Because it's keyed to each workspace, every workspace you open downloads and stores its own full copy. On my machine with 34 workspaces this added up to ~14 GB of duplicated binaries:
I verified the copies are identical (same SHA-256 for
atlassian_cli_rovodevacross workspaces on the same version), so all but one copy per version is pure waste.The fix:
Root the bundle at
context.globalStorageUriinstead ofcontext.storageUriinGetRovoDevURIs. The code already nests the bundle under a per-version subdirectory (MIN_SUPPORTED_ROVODEV_VERSION), which is a safe global cache key, so the download now happens once per version and is shared across all workspaces. Nothing about the bundle is workspace-specific — the process is already launched with the workspace folder ascwd, which is unaffected. As a bonus this removes thecontext.storageUri!non-null assertion;storageUriisundefinedwhen no workspace/folder is open, whereasglobalStorageUriis always defined.Automatically reclaim existing duplication. When Rovo Dev initializes in a workspace, any leftover bundle at the old per-workspace location (
context.storageUri/atlascode-rovodev-bin) is removed. This is self-healing — each workspace cleans itself on next open — and uses only documented API, without reaching into other workspaces' storage folders (which VS Code provides no supported way to enumerate). Combined with VS Code's own garbage collection of storage for folders that no longer exist, no manual cleanup is required.Storage footprint after this change: ~435 MB (one shared copy of the current version) instead of scaling linearly with the number of workspaces.
How Has This Been Tested?
npm run lint— passes (also enforced by the pre-commit hook).npm run test:unitforsrc/rovo-dev/— passes (9/9 inrovoDevLanguageServerProvider.test.ts;GetRovoDevURIsis mocked in the suite, so behavior is unchanged).--noEmittypecheck — clean.Note: the legacy cleanup is deliberately scoped to the current workspace on activation rather than walking the entire
workspaceStoragetree, to avoid depending on undocumented on-disk layout. If maintainers would prefer a one-shot sweep of all workspaces, I'm happy to adjust.