Fix repository retention leaks in git and github extensions
ProgressManager subscribed to workspace.onDidChangeConfiguration and
repository.onDidChangeOperations in its constructor but discarded both
subscriptions, so the global configuration emitter pinned every Repository
ever created.
GitHubBranchProtectionProviderManager registered a branch protection provider
per opened repository into a single DisposableStore that was only disposed when
the feature was turned off. There was no onDidCloseRepository handling, and the
providers themselves were never disposed. Track them per repository root
instead and dispose on close.
Also make DisposableStore dispose anything added after it has been disposed,
so the async registration in GitHubBranchProtectionProvider's constructor
cannot outlive the provider.
Refs #327438
(Written by Copilot)
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 041724a6-5bc9-4e5f-98b2-a910995f083c
The keybinding path of git.openChange, git.openFile and git.openHEADFile
resolves the target through getSCMResource, which only considered
window.activeTextEditor. That is undefined when a notebook editor is
active, so the commands silently did nothing for notebooks while the
editor-title buttons and SCM context menu (which pass the resource) kept
working.
Resolve the notebook uri from window.activeNotebookEditor first, and fall
back to a notebook diff editor's modified resource so Open File can toggle
back from an open notebook diff, matching the text-editor behavior.
Fixes#176401
Pass the Copilot CLI session label through the Agents Window delete flow into the Git worktree removal confirmation so dirty worktree prompts show which session owns the worktree.\n\nFixes #324220\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Git - throttle initial repository.status() across repositories
Each repository.status() spawns ~10 git subprocesses. With many repos in a workspace, fan-out can saturate the extension host and trigger the IPC unresponsive watcher kill loop. Bound concurrency with a Limiter(5).
Fixes#318279Fixes#318764
* Agents - add "Sync Changes" action to the new session screen in the Files view
* Pull request feedback
---------
Co-authored-by: Dmitriy Vasyura <dmitriv@microsoft.com>
* Introduce proposed agentsWindow configuration extension point
Add a new `agentsWindow` property to the configuration contribution point
that allows extensions to declare per-setting default value overrides and
read-only behavior for the Agents window.
Shape: `agentsWindow: { default?: unknown; readOnly?: boolean }`
- Gated behind `agentsWindowConfiguration` proposed API
- SessionsDefaultConfiguration uses agentsWindow.default as the default value
- ReadOnly settings are excluded from user configuration parsing and
cannot be written via updateValue
- Settings editor shows lock indicator for readOnly settings
- `@override:agentsWindow` filter in settings search (agents window only)
- Adopted all existing hardcoded session defaults to use the new schema
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* revert
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Cleanup code related to the repository state
* Remove code specific to the Agents app
* HasGitRemote should be computed at the end of each turn to account for sessions that were started before the metadata was added
* Reapply "Git - adopt the new package to use copy-on-write for the worktree include files (#299583)" (#300448)
This reverts commit c56c7bc071.
* Attempt to fix tests
* Fix build
* build: copy node_modules into extension bundle
* Regenerate lock file
---------
Co-authored-by: deepak1556 <hop2deep@gmail.com>
* plugins: allow updating agent plugins
Add update detection and update buttons to the agent plugins view and editor.
This allows users to see when installed plugins have newer versions available
and update them directly from the UI without manually checking for updates.
- Export hasSourceChanged() from pluginMarketplaceService for reuse
- Add 'outdated' and 'liveMarketplacePlugin' fields to IInstalledPluginItem
- Fetch marketplace data in AgentPluginsListView.show() to cross-reference
installed vs live versions and mark outdated plugins
- Add UpdatePluginAction to list view with live marketplace data
- Add UpdatePluginEditorAction to plugin editor with live marketplace data
- Both update actions re-register the plugin with updated metadata after
successful update so the UI immediately reflects the new version
- Read fresh installed metadata from pluginMarketplaceService.installedPlugins
store (not stale IAgentPlugin.fromMarketplace) for accurate version checks
- Pass 'silent' option to runInstall() to show non-blocking notification
instead of dialog when silent=true
- Re-register plugins with live data after updateAllPlugins() completes
so stored sourceDescriptor reflects new version/ref/sha
(Commit message generated by Copilot)
* pr comments and cleanup
* fix test failure