* notifications: Harden untrusted notification text
Render core notification and progress strings literally, with explicit typed links and a narrowly scoped extension compatibility capability. Preserve existing link actions, accessibility, and extension behavior, and guard reflected text in built-in extensions with consistent fallback helpers.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* notifications: Address capability export and accessibility feedback
Follow scope-aware aliases and returned values when checking exports of the legacy notification parsing capability. Cover named functions/classes, shadowing, recursive references, and legitimate bridge use. Make notification link guidance conditional for link-free Accessible View content.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Agent Host changes for lszomoru/agents/update-active-repository-name-logic
* SCM - Fix active repository name for bare worktrees
Use the common Git directory for bare-backed worktrees and complete the active repository controller test mock.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* SCM - Wait for active repository name RPC in test
Drain the asynchronous test RPC protocol before asserting forwarded source control updates.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: fix unified workspace repository handling
Track local Git repository presence independently from GitHub metadata so repository icons work for every Git host. Reject local harnesses for virtual GitHub workspaces.
Follow-up to #335301.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: preserve repository actions for cloud drafts
Keep local repository acquisition actions visible when selecting Cloud changes the draft workspace to a virtual GitHub URI.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: refresh deferred repository state
Promote Agent Host folder drafts when Git metadata arrives and retry local repository resolution until GitHub identity is available.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: use repository root for cached clones
Return the concrete repository path when the unified workspace picker reuses a cached clone, instead of returning an enclosing workspace file.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: use folder icons for local workspaces
Present all unified-picker local workspace entries consistently as folders, including locally cloned Git repositories.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: separate local and cloud repository actions
Consolidate local repository acquisition behind the Git remote-source picker while restoring direct GitHub repository selection for Cloud sessions.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: restore direct repository clone picker
Keep GitHub repositories in the first clone picker while allowing local sessions to paste URLs for other Git remotes.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: distinguish cloud repository icons
Use repository icons for non-local GitHub workspaces, the GitHub logo for repository cloning, and folder icons for local workspaces.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Force commit messages output to UTF-8
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Capture i18n.commitEncoding before tests and restore it afterward
* Restrict UTF-8 log output to commit message display commands
* Remove the `forceUtf8LogOutputEncoding` option and change it to pass `-c` directly instead.
* Set i18n.logOutputEncoding and restore it afterward
* Cover blame2 and other internal methods in the i18n.logOutputEncoding test
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Dmitriy Vasyura <dmitriv@microsoft.com>
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