Skip to content

[mirror] microsoft/vscode#309654 More VS Code Onboarding TPI Fixes#1696

Open
austindyoung wants to merge 7790 commits intomainfrom
driftfence/mirror/pr-309654/latest
Open

[mirror] microsoft/vscode#309654 More VS Code Onboarding TPI Fixes#1696
austindyoung wants to merge 7790 commits intomainfrom
driftfence/mirror/pr-309654/latest

Conversation

@austindyoung
Copy link
Copy Markdown
Owner

Automated mirror PR for DriftFence counterfactual telemetry.

Source PR: microsoft#309654
Source URL: microsoft#309654
Mirror branch: driftfence/mirror/pr-309654/latest

This PR is maintained by automation for telemetry and review links.

mjbvz and others added 30 commits April 9, 2026 14:37
Avoid hardcoding external ingest embedding type
…#308834)

* Add performance workflow and heap-snapshot-analysis skills

Add two agent skills for memory/performance investigations:

- vscode-performance-workflow: Drives repeatable VS Code scenarios,
  captures heap snapshots, and includes bundled chat smoke runners
  (chat-memory-smoke, chat-session-switch-smoke).
- heap-snapshot-analysis: Parses V8 heap snapshots, compares before/after,
  and traces retainer paths.

Both skills include scratchpad folders (gitignored) for one-off
investigation scripts organized in dated subfolders with findings.md.

(Written by Copilot)

* Rename skill to auto-perf-optimize

(Written by Copilot)

* workspace

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

* this

* Comments

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

---------

Co-authored-by: Copilot <copilot@github.com>
…ation bug (microsoft#308876)

Rename the `inSessions` task property to `inAgents` across all source,
tests, JSON configs, and documentation.

Also fix a bug in `updateTask` where `setProperty` with a numeric
array index was inserting a duplicate entry instead of replacing the
existing one. The fix replaces the entire tasks array with the updated
entry mapped in at the correct index, consistent with how `removeTask`
already works.

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

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ft#308883)

* Fix 'Generate New Task' no-op on existing sessions

sendAndCreateChat only works for new (untitled) sessions or when
multi-chat is enabled. For existing/completed sessions it threw an
error that was silently swallowed, making the action appear to do
nothing.

Add a _generateNewTask helper that checks the session status:
- Untitled sessions: use sendAndCreateChat (existing first-chat flow)
- Existing sessions: send /generate-run-commands directly to the
  active chat widget via acceptInput

Fixes microsoft#308805

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

* Address review: use passed-in session, add sendAndCreateChat fallback

- Use session.mainChat.resource instead of re-reading activeSession
  from global state, avoiding stale-reference bugs.
- Fall back to sendAndCreateChat when no chat widget is found for
  the session, so the action is never a silent no-op.

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

* Simplify _generateNewTask: consolidate sendAndCreateChat fallback

Both the untitled and widget-not-found paths called sendAndCreateChat,
so collapse the if/else into a single widget-first-then-fallback flow.

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

---------

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

agentHost: integrate terminals with tool call
Add new chat session items on the ext host side
…odes (microsoft#308879)

* fix: cache CCA disabled results with 5-min TTL to reduce /enabled traffic

The checkCCAEnabled() method previously only cached enabled=true results
(introduced in 19541d7). For the majority of users whose repos have CCA
disabled, every provideChatSessionProviderOptions() call bypassed the cache
and hit the jobs/:owner/:repo/enabled CAPI endpoint unconditionally. With
growing adoption, this became significant upstream traffic.

Fix: cache all /enabled results. enabled=true keeps the 30-min TTL.
enabled=false/undefined uses a new 5-min TTL (CCA_DISABLED_CACHE_TTL_MS),
short enough that users who just enabled CCA won't wait long, but long enough
to dramatically reduce repeated calls.

To support the shorter TTL for disabled entries without changing the enabled
TTL, TtlCache.set() now accepts an optional per-entry ttlMs override that
takes precedence over the cache-wide TTL.

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

* fix: surface unexpected /enabled status codes (e.g. 429) in telemetry

Previously, isCCAEnabled's default case returned { enabled: undefined }
with no statusCode, swallowing 429 rate-limit and 5xx responses.

Changes:
- Widen CCAEnabledResult.statusCode from 401|403|422 to number so
  unexpected codes can be propagated
- Return statusCode: response.status in isCCAEnabled's default case
- Add sendTelemetryErrorEvent('copilot.codingAgent.CCAIsEnabledUnexpectedStatus')
  in checkCCAEnabled for any status code outside {401, 403, 422}, with
  isRateLimited flag for quick 429 filtering in dashboards

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

* refactor: hoist knownStatusCodes to constant and add GDPR annotation

- Extract CCA_KNOWN_STATUS_CODES to file-level Set to avoid re-creating
  it on every call and centralize the list of handled status codes
- Add __GDPR__ comment block for the new
  copilot.codingAgent.CCAIsEnabledUnexpectedStatus telemetry error event

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* track tools inside thinking

* Update src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.ts

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

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* polish: improve policy-blocked overlay with agents icon, button fixes, and product names

* feat: add AgentsAppEnabled enterprise policy with parent policy identity propagation

- Register chat.agentsApp.enabled configuration with policy support
- Add agents_app_enabled to IPolicyData for account-level policy
- Save parent VS Code policy identity (win32RegValueName/darwinBundleIdentifier)
  in bootstrap-meta before product.sub.json merge so the agents sub-app reads
  policies from the parent VS Code's registry/plist domain
- Use parentPolicyConfig in main.ts when creating NativePolicyService
- Improve policy-blocked overlay: agents icon, button width fix, keyboard fix,
  hardcoded 'Agents' name, Open VS Code scheme fix

* chore: regenerate policyData.jsonc with AgentsAppEnabled policy

* refactor: use existing ChatAgentMode policy instead of separate AgentsAppEnabled

Piggyback on chat.agent.enabled (ChatAgentMode) policy to show the
policy-blocked splash screen in the agents app, rather than introducing
a separate AgentsAppEnabled policy.

* polish: use sessions logo SVG, save parent urlProtocol, update overlay text

- Replace codicon with sessions logo SVG (theme-aware light/dark)
- Save parent urlProtocol in parentPolicyConfig for correct Open VS Code link
- Update overlay title to 'Agents Disabled by Policy'
- Update description to 'Your organization has disabled Agents via policy.'

* fix: update Learn more link to agents docs

* refactor: move sessions logo SVGs to shared location, update title
Restrict bare host detection to a conservative set of coding-related domain suffixes while continuing to treat explicit URLs and SSH remotes as domains.

Add regression coverage for valid and invalid bare suffixes, multi-label hosts, explicit URLs, and dotted non-domain identifiers.
…icrosoft#308889)

- Syncs agent-host-protocol to pick up the new
  `notify/sessionSummaryChanged` notification type, which lets clients
  keep cached session lists in sync without subscribing to every
  session URI individually.
- Emits the notification from AgentHostStateManager: after the session
  reducer runs, an identity check on the summary object detects
  changes, which are debounced (100ms) and flushed as partial diffs.
- Replaces the onDidAction-based subscription-peeking pattern in
  AgentHostSessionListController with the cleaner notification-based
  approach, removing the need for StateComponents/isSessionAction
  imports and the getSubscriptionUnmanaged call.
- Adds unit tests for emission, coalescing, no-op suppression, and
  cleanup on session deletion.

Adopts microsoft/agent-host-protocol#51
Fixes microsoft#305330

(Commit message generated by Copilot)
…mphibian

Override ts implicit project defaults explicitly
* Update hidden Model B agent prompt for evals

* Refine hidden Model B prompt tag structure

* updating prompt to remove codex string

* main merge

* adding task execution tag

* adding task execution tag
Mark chat codeblock and diff editor pools as simple widgets so their
text models are not synced to the extension host. This was the original
behavior before microsoft#204780 experimentally changed it.

The tool editor pool was already marked as simple.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
terminal: use display command in approval actions (microsoft#308895)

Use the display form of the command when computing terminal approval actions so wrapped unsandboxed commands do not leak into confirmation labels.

Also update the runInTerminalTool regression test to assert the display command label.
…icrosoft#308913)

* Add marketplace deeplink for Browse buttons in customizations editor

The Browse buttons on MCP Servers and Plugins welcome page cards now
open the section with the marketplace browse mode active instead of
just navigating to the installed list.

- Add public showBrowseMarketplace() to McpListWidget and PluginListWidget
- Extend selectSectionById/selectSection with showMarketplace option
- Add hidden aiCustomization.openMarketplace command for deeplink
- Add selectSectionWithMarketplace callback to welcome page interface
- Wire Browse buttons on MCP/Plugin cards to activate marketplace mode

* Use example placeholder text for workflow input

* Show New/Browse buttons in sessions, use natural language prompts

- Enable showGenerateActions in sessions welcome page
- In sessions, New button prefills chat with 'Create me a {type} that...'
  instead of calling generateCustomization via slash commands
- Main Generate Workflow entrypoint uses 'Generate agent customizations.'
  instead of /agent-customization in sessions
- Apply same changes to both prompt-launchers and classic welcome pages

* Use /init instead of /agent-customization in core welcome pages

* Remove showGenerateActions flag from IWelcomePageFeatures

Generate actions are now always shown. The conditional was replaced
with a simple promptType check.

* Fix chat prefill to use singular type names with 'custom' prefix

* Increase spacing between subtitle and Generate Workflow block

* Shorten welcome page subtitle

* Fix fixture: add missing selectSectionWithMarketplace callback
…hatModel (microsoft#308920)

* perf: Fix CKS bug and don't store full instructions contents on the ChatModel

* Add test
An Overview button with a home icon sits in the header row alongside
the harness picker. When the harness picker is visible, the button
shows only the icon; when hidden (single harness), it expands to a
full-width button with label.
* Refactor inline summarization handling in ToolCallingLoop

* Refactor conversation summarization settings and improve logging in AgentIntent

* Refactor agent intent to improve telemetry and remove obsolete test file

* Refactor inline summarization handling: remove unused properties and related tests

* Remove unused summarization instruction from AgentPromptProps interface

* Refactor AgentIntentInvocation to streamline model capabilities handling in background summarization

* Update debugName for background summarization to reflect inline context

* Update logging message in AgentIntentInvocation for clarity and remove unused test suite for inline summarization
…8928)

Remove chat code block render-drop warnings that are no longer needed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
roblourens and others added 30 commits April 13, 2026 13:07
* Fix crash from nulled _session in ChatModel.dispose()

Remove the _session = undefined line that breaks the back-reference
from requests to the ChatModel during dispose. This causes a crash
in chatListRenderer when the _onDidUpdateViewModel event fires and
accesses template.currentElement.sessionResource on a stale item
whose session has been nulled out.

The _requests array is already emptied right after, so the
back-references are broken when the requests are GC'd with the model.

Fixes microsoft#309568

(Written by Copilot)

* Keep safe GC cleanup, only remove _session null-out

Restore the _requests.length, dataSerializer, and _editingSession
cleanup — these null out fields on the ChatModel itself and are safe.
Only the (r as any)._session = undefined line needs to be removed
since it breaks getters accessed by stale event listeners.

(Written by Copilot)
…309547) (microsoft#309588)

fix microsoft#309547 - guard scopedTools derived against disposed widget

The derived observable created in getModeRequestOptions() outlives the
ChatWidget. When MCP tool changes trigger a recompute after the widget
is disposed, this.input is undefined (MutableDisposable cleared),
crashing on .currentModeObs. Add a disposal guard to return the last
snapshot instead. (Written by Copilot)

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

- Swap Skip/Continue without Signing In button styles (Skip → ghost, Continue → secondary)
- Fix focus rings on primary-colored buttons using double-ring box-shadow pattern
- Add focus-visible styling for doc links (Agents tutorial)
- Fix focus ring clipping on Agents tutorial link
- Bump theme card label font-size from 10px to 12px

Fixes microsoft#309377
Fixes microsoft#309380
Fixes microsoft#309381
Fixes microsoft#309386
* convert html server to esm

* update html language service

* update

* update

* update json

* update css

* update

* update

* update jsonc-parser
…pport

- Make theme cards individually tabbable (tabindex=0) instead of roving tabindex
- Separate focus (outline ring) from selected (border+box-shadow) for clear visual distinction
- Add high contrast overrides using contrastBorder/contrastActiveBorder
- Fix focus clipping by changing step-content overflow to visible and adding grid padding

Fixes microsoft#309517
…l-narwhal

Use core vscode*d.ts files for copilot extension
* Add Agents app banner to welcome page footer

Add a banner button in the welcome page footer that allows users to try
out the new Agents app. The banner includes:
- A button with the agent icon and 'Try out the new Agents app' label
  that executes the workbench.action.openAgentsWindow command
- A 'Learn more' link that opens code.visualstudio.com
- Telemetry logging for both actions
- CSS styling for the banner with proper theming integration

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

* Update

* update

* Feedback

---------

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

The reasoningEffort telemetry property on response.success and
response.error events was only reading from requestBody.reasoning?.effort
(Responses API / OpenAI), missing Claude models which set effort via
requestBody.output_config?.effort (Messages API). This adds a fallback
to output_config.effort so both events capture the reasoning effort
level regardless of which API path is used.

Co-authored-by: Kevin Kent <kevinkent@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ft#309638)

Cache breakpoints in the summarization prompt cause the prompt-tsx
budget trimmer to throw BudgetExceededError ('No lowest priority node
found') when all remaining children contain cache points. The trimmer
resets its eviction candidate each time it encounters a cache point,
and when every child has one, it never finds a node to evict.

These breakpoints were already stripped from the output messages by
stripCacheBreakpoints() before sending to the model, so they served
no purpose in the summarization render.

Fix: pass enableCacheBreakpoints: false when rendering
ConversationHistorySummarizationPrompt.
…rosoft#309642)

Decouple ISession.sessionType from resource URI scheme in RemoteAgentHostSessionsProvider

- Remote copilot agents now use COPILOT_CLI_SESSION_TYPE as their logical
  session type, aligning with local and cloud copilot sessions, while
  keeping the unique per-connection ID as the resource URI scheme and
  language model vendor.

- Extract model picker into remoteAgentHostModelPicker.ts and consolidate
  side-effect imports into remoteAgentHost.contribution.ts.

- Replace DEFAULT_AGENT_PROVIDER with explicit WELL_KNOWN_AGENT_SESSION_TYPES
  mapping from agent host provider names to local session types.

- Update tests and documentation.

(Written by Copilot)
The theme preview SVGs were not bundled in desktop or web builds,
causing blank theme cards for users running built products.

Fixes microsoft#309380
…icrosoft#309626)

* Propagate CAPI server experiment context through telemetry pipeline

* test
From microsoft#309331

Co-authored-by: Copilot <copilot@github.com>
* Update rate limit message

* Improve rate limit messages for better user clarity

* removing 'ed' in case not fixed on server

* nvm, it was fixed

---------

Co-authored-by: SteVen Batten <sbatten@microsoft.com>
After the user signs in through the onboarding walkthrough, trigger the
full chat setup flow in the background (sign-up, extension install,
entitlement resolution) so the 'Finish Setup' status bar indicator
is resolved by the time onboarding completes.

Uses disableChatViewReveal and DefaultSetup strategy to avoid
showing dialogs or popping the chat panel during onboarding.

Fixes microsoft#309529
The official component-detection-manifest schema uses camelCase keys.
This file used PascalCase (e.g. "Registrations", "Component"), which
caused the OSS license tool to crash silently.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Shows Cmd+Shift+X (Ctrl+Shift+X on Windows/Linux) in the extensions
step subtitle so users know how to browse the full marketplace.

Fixes microsoft#309617
Co-authored-by: Copilot <copilot@github.com>
- Add aria-label to extension install buttons with extension name (microsoft#309382)
- Make feature cards (Local, Cloud, CLI, Inline) tabbable with role/aria-label (microsoft#309525)
- Add ARIA alerts on theme, keymap, extension install, and AI preference actions (microsoft#309521)

Fixes microsoft#309382
Fixes microsoft#309521
Fixes microsoft#309525
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.