Skip to content

[pull] main from microsoft:main#1055

Merged
pull[bot] merged 53 commits intocode:mainfrom
microsoft:main
Mar 20, 2026
Merged

[pull] main from microsoft:main#1055
pull[bot] merged 53 commits intocode:mainfrom
microsoft:main

Conversation

@pull
Copy link

@pull pull bot commented Mar 20, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

bryanchen-d and others added 30 commits March 19, 2026 13:04
…01202)

Instead of throwing 'Notebook too large to backup' when notebook outputs
exceed the backup size limit, strip outputs from the snapshot to produce
a valid (degraded) backup without outputs.

This fixes unhandled errors in both the hot-exit backup tracker and the
chat editing snapshot system, which both use SnapshotContext.Backup.
Previously, the error either propagated unhandled (chat editing) or was
silently swallowed resulting in no backup at all (hot-exit). Now callers
get a backup that preserves cell source code and metadata, just without
the large outputs.
When NotebookTextModel.createSnapshot() throws 'Notebook too large to
backup' (outputs exceed notebook.backup.sizeLimit), catch the error at
the caller side instead of letting it propagate unhandled.

- chatEditingModifiedNotebookSnapshot.createSnapshot(): Catch error and
  retry with transientOutputs: true to produce a degraded snapshot
  without outputs. Logs a warning.
- chatEditingModifiedNotebookEntry.create(): Catch error from
  createNotebookTextDocumentSnapshot with Backup context and fall back
  to Save context for the one-time original model initialization.
  Logs a warning.
…301202)

When NotebookTextModel.createSnapshot() throws 'Notebook too large to
backup' (outputs exceed notebook.backup.sizeLimit), catch the error at
the caller side and log a telemetry event instead of letting it propagate
unhandled.

- chatEditingModifiedNotebookEntry.create(): Catch error from
  createNotebookTextDocumentSnapshot with Backup context and fall back
  to Save context for the one-time original model initialization.
- chatEditingModifiedNotebookEntry.createSnapshot(): Catch errors from
  the snapshot utility and fall back to initialContent so that session
  persistence doesn't crash.
- Both paths log 'chatEditing/notebookSnapshotError' telemetry events.
…#301202)

When NotebookTextModel.createSnapshot() throws 'Notebook too large to
backup' (outputs exceed notebook.backup.sizeLimit), catch the error at
the caller side and log via loggingService instead of letting it
propagate unhandled.

- chatEditingModifiedNotebookEntry.getCurrentSnapshot(): Catch error,
  log, and fall back to initialContent.
- chatEditingModifiedNotebookEntry.createSnapshot(): Catch errors from
  the snapshot utility for both original and modified models, log, and
  fall back to initialContent so that session persistence doesn't crash.
- chatEditingModifiedNotebookEntry.create(): Let the error propagate
  to the session's existing try/catch in _createModifiedFileEntry().
- Removed ITelemetryService injection and telemetry type definitions.
When NotebookTextModel.createSnapshot() throws 'Notebook too large to
backup' (outputs exceed notebook.backup.sizeLimit), catch the error at
the caller side instead of letting it propagate unhandled.

- getCurrentSnapshot(): Catch error, log via loggingService, fall back
  to initialContent.
- createSnapshot(): Reuse getCurrentSnapshot() for the modified model
  snapshot. Catch error for the original model snapshot and fall back
  to initialContent.
- create(): Let error propagate to the session's existing try/catch.
- Revert model-level changes (NotebookTextModel still throws).
- Log only error messages, not URIs, to avoid privacy concerns.
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
Classify listener leak errors as dominated or popular
Try storing all chat session options in a map
remove changes summary display and related logic from SessionsTitleBarWidget
…ader

Sessions: Add chat session header component and styles
…303504)

* Git - update DotGit file watcher to ignore worktree index.lock files

* Apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…tors and panel toggle button (#303521)

* Enhance collapsed sidebar widget with session status indicators and panel toggle button

* Refactor sidebar toggle button and update CSS class for session status

Co-authored-by: Copilot <copilot@github.com>

---------

Co-authored-by: mrleemurray <mrleemurray@users.noreply.github.com>
Co-authored-by: Copilot <copilot@github.com>
* Sessions - refactor updating a pull request

* Apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
lszomoru and others added 23 commits March 20, 2026 12:31
…condary panel (#303586)

* Sessions - remove code that is not needed + increase width for the secondary panel

* Fix the build
#303584)

feat: group chat extension customizations under 'Built-in' in management editor

Items contributed by the default chat extension (GitHub Copilot Chat) are
now shown under a 'Built-in' group header instead of 'Extensions' in the
Chat Customizations editor. This applies to agents, skills, prompts, and
instructions — matching the existing pattern used by the MCP list widget.

The grouping is determined at the UI layer using IProductService to
identify the chat extension ID, setting groupKey on matching items.
No data model changes needed.

- Move BUILTIN_STORAGE/AICustomizationPromptsStorage to common layer
- Add BUILTIN_STORAGE to VS Code harness filter sources
- Add isChatExtensionItem() helper using productService.defaultChatAgent
- Set groupKey: BUILTIN_STORAGE for items from the chat extension
- Add tests for builtin source filtering
- Update AI_CUSTOMIZATIONS.md spec
…r/tools/runInTerminalTool.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…animations

Sessions: add panel animations
Sessions - adjust auxiliary bar margins for improved layout

Co-authored-by: mrleemurray <mrleemurray@users.noreply.github.com>
Co-authored-by: Copilot <copilot@github.com>
)

* Sessions: Replace Changes view badge with inline title count

Replace the NumberBadge on the Changes view tab with an inline title
that shows the file count directly, e.g. '7 Changes' instead of a
badge overlay.

- Export dynamic changesContainerTitle with a getter-based value
- Add refreshContainerInfo() to IViewContainerModel interface and
  ViewContainerModel implementation
- Remove IActivityService/NumberBadge dependency from ChangesViewPane

* Fix incorrect file count by using topLevelStats

The inline title count was reading from activeSessionChangesObs (raw
session changes only) instead of topLevelStats which accounts for
deduplication and version mode filtering. Move the title update into
onVisible() where topLevelStats is available, and reset the title
when the view is hidden.

* Address review feedback

- Add blank line separator after changesContainerTitle block
- Add constructor-level fallback autorun to keep title in sync when
  the view is hidden and the active session changes
- Reset title to 'Changes' on dispose to avoid stale counts

* Keep inline file count when switching tabs

Remove the updateContainerTitle(0) call from the hide handler so
the count persists when the user switches to another tab. The
fallback autorun in the constructor still handles session switches
while the view is hidden.

* Fix grammar: use singular '1 Change' instead of '1 Changes'

---------

Co-authored-by: mrleemurray <mrleemurray@users.noreply.github.com>
This is secretly like an any cast as the result isn't typed
Bumps [tar](https://github.com/alexcrichton/tar-rs) from 0.4.44 to 0.4.45.
- [Commits](alexcrichton/tar-rs@0.4.44...0.4.45)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 0.4.45
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Move find to browser feature contribution

* feedback
* Sessions - add prompt for merging changes

* Apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…r-fixups

agentHost: fixup build for server
…#303598)

* Add generic badge support to customization list items

Instructions with applyTo patterns now show context info (e.g.
'always added', 'context matching *.ts') as an inline badge next to
the item name instead of baking it into the display name string. The
badge uses the same visual style as the MCP 'Bridged' badge.

The badge field is generic on IAICustomizationListItem so other
customization types can use it in the future. Badge text is also
included in search filtering.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Show pattern directly in badge with explanatory hover tooltip

Badge now shows just the applyTo pattern (e.g. '**/*.ts') or 'always
added', instead of 'context matching ...'. Hovering the badge shows a
tooltip explaining the behavior. Added badgeTooltip field to
IAICustomizationListItem for generic reuse.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Include badge tooltip in item hover

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add blank line before badge tooltip in hover

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Address review: shared badge CSS, flex ellipsis fix, update spec

- Extract shared .inline-badge class used by both MCP bridged badge
  and item badges to avoid style drift.
- Add min-width: 0 and flex: 1 1 auto to .item-name so long names
  truncate correctly inside the flex row.
- Update AI_CUSTOMIZATIONS.md to reflect that badges show the raw
  applyTo pattern with tooltip explanation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Keep badge adjacent to name instead of right-aligned

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
#303583)

* Enhance regression handling in SessionsWelcomeContribution: delay overlay display to prevent flashing during transient state changes

* Refactor SessionsWelcomeContribution: replace regression watching with entitlement state monitoring to prevent flashing during transient state changes

* Refactor SessionsWelcomeContribution: replace regression timeout with pending overlay timer to prevent flashing during transient state changes

* Refactor SessionsWelcomeContribution: simplify entitlement state monitoring and remove overlay delay to improve responsiveness

* Refactor SessionsWelcomeContribution: change class visibility to export for better accessibility

* Add test for overlay visibility on first launch with no entitlement

* test(sessions): simplify instantiation service ownership in welcome tests

Address PR review: avoid redundant disposables.add() wrapping around
workbenchInstantiationService(), which already registers itself.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…apshot-too-large

fix: catch notebook snapshot errors in chat editing with log fallback
* agentPlugins: allow paths in github sources

Though nonstandard, Github CLI plugins have started to do this. So this supports that.

* fixup
Remove `as sinon.SinonStub` casts
@pull pull bot locked and limited conversation to collaborators Mar 20, 2026
@pull pull bot added the ⤵️ pull label Mar 20, 2026
@pull pull bot merged commit a3512f0 into code:main Mar 20, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.