Skip to content

[mirror] microsoft/vscode#309677 AI Customization UX fixes batch (#309304)#1704

Open
austindyoung wants to merge 7765 commits intomainfrom
driftfence/mirror/pr-309677/latest
Open

[mirror] microsoft/vscode#309677 AI Customization UX fixes batch (#309304)#1704
austindyoung wants to merge 7765 commits intomainfrom
driftfence/mirror/pr-309677/latest

Conversation

@austindyoung
Copy link
Copy Markdown
Owner

Automated mirror PR for DriftFence counterfactual telemetry.

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

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

yogeshwaran-c and others added 30 commits April 9, 2026 20:31
…ek-visible-document-check

fix: check message location visibility for failureInVisibleDocument peek
…arkdown-default-view-startup

fix: resolve default view for markdown files on first startup
Scope the sessions-only sash styling to round the hover indicator and orthogonal drag handles, and document the layout update in LAYOUT.md.

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

* Agents - re-create state listener when repository is closed/opened

* Add missing line
Also updated some telemetry fields so we can do correlations more easily
* Update hidden Model B agent prompt for evals

* Refine hidden Model B prompt tag structure

* updating prompt to remove codex string
* Redesign chat customizations welcome page

- Extract welcome page into dedicated AICustomizationWelcomePage class
  and aiCustomizationWelcome.css for better code organization
- Replace old banner + card grid with:
  - 'Analyze Your Project and Configure AI' input box that opens
    /agent-customization in chat with user's description
  - 2x3 category card grid (Agents, Skills, Instructions, Hooks,
    MCP Servers, Plugins) with actionable chip buttons
  - Chips prepopulate chat with specific prompts (e.g. 'Create a
    code review agent', 'Enforce coding style')
- Remove redundant 'Chat Customizations' heading (already in tab)
- Remove redundant 'browse by type' pills (cards serve same purpose)
- Improve chip contrast with visible borders and link-colored text
- Tighten card padding and description sizing for cleaner layout

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

* Polish welcome page: bigger input, separator, more copy

- Make input box taller with rounded corners and inner submit button
  styled like a chat input (pill-shaped submit that fills on hover)
- Add section divider line between input area and card grid
- Add 'Or configure individual customizations:' label above grid
- Expand description copy to mention codebase analysis
- Bump card label font-weight to 600 and restore 12px desc size
- Restore card padding to 14px for better breathing room

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

* Rework welcome page: stacked list, better input, centered divider

- Replace 2x3 card grid with full-width stacked category list
  where each row shows icon, label, description, and chip buttons
  inline on a single line
- Input box uses cornerRadius-large, proper padding matching chat
  input style, submit button inside with pill shape
- Separator now shows centered text: 'or configure individually'
  with lines extending on both sides
- Reduce max-width to 680px and remove all excess whitespace
- Remove card/grid CSS entirely

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

* Improve welcome page hierarchy and command styling

- Restore strong page intro with 'Chat Customizations' heading and
  descriptive copy from the original welcome page
- Increase overall scale: wider content, larger workflow heading,
  larger description text, and roomier input box
- Break each section into title row, description row, and command row
  instead of compressing everything into a single line
- Restyle example actions as monospace command-like entries such as
  '/create-skill ...' to better communicate they prepopulate chat
- Make category rows roomier with card-like boundaries and better
  visual hierarchy

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

* Simplify welcome page into launcher-style sections

- Replace boxed customization cards with lightweight stacked sections
  separated by subtle rules
- Keep the centered 'or configure individually' separator
- Increase overall scale for the intro, workflow heading, copy, and input
- Make command examples look like real slash commands with plain
  command-link styling instead of pill buttons
- Separate each section into title, description, and command rows for
  clearer hierarchy

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

* Revert welcome page to original design (keep file separation)

Restore the original welcome page layout from main exactly as it was:
- 'Chat Customizations' heading + subtitle
- 'Configure Your AI' getting-started banner
- Responsive card grid with Browse and Generate with AI buttons

The only structural change kept is the file separation:
welcome page logic lives in aiCustomizationWelcomePage.ts and
welcome CSS lives in media/aiCustomizationWelcome.css.

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

* Add centered 'or configure individually' divider between banner and cards

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

* Replace Configure Your AI banner with chat-style input box

Swap the old getting-started banner for a clean input box styled
like the chat input part: cornerRadius-large, input-background,
submit arrow inside. No highlight borders or extra UI chrome.

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

* Fix input box focus outlines to match chat input part

Remove the double-outline: the inner monaco-inputbox and the native
input element both had their own focus borders showing through. Force
border/outline to none on both inner elements and let only the outer
container show the single focus border. Use transparent as default
border (matching chat input) and add overflow: hidden to clip inner
outlines at the rounded corners.

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

* Fix inner input box border by passing transparent inputBoxStyles

The InputBox sets an inline style border via applyStyles() which
cannot be overridden by CSS. Pass inputBorder: transparent and
inputBackground: transparent so the inner box is invisible and
only the outer container provides the border.

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

* Refactor agent customizations welcome page

Split the Agent Customizations welcome page into classic and prompt-launcher variants, add a configuration switch for selecting the implementation, and add component fixtures for the welcome page variants.

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

* Polish customization welcome page variants

Refine the classic and prompt-launcher welcome pages so the workflow entry point is more prominent and the category actions are simpler and better aligned.

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

* Swap welcome variants and fix sessions chat prefill

Move the polished workflow-box layout into promptLaunchers (now the default) and restore classic to the origin/main baseline. Add prefillChat callback so the Generate Workflow input works in both the sessions app (via NewChatViewPane.sendQuery) and core VS Code (via workbench.action.chat.open). Enable the getting-started banner in sessions. Fix double-box input styling and card footer alignment.

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

* Fix input focus outline and polish welcome page layout

Replace InputBox widget with plain <input> element to eliminate the focus border that the global .monaco-workbench input[type=text]:focus rule was applying. Move helper text above the input, match input-row rounding to the outer card, and add strong specificity overrides for all focus states.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Set update.showReleaseNotes to false in the sessions app configuration
defaults so release notes do not auto-open after a version update.

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

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

agentHost: support askQuestions/elicitation and InProgress
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
roblourens and others added 30 commits April 13, 2026 10:31
* agentHost: Restore selected model across sessions (Written by Copilot)

* agentHost: Address model restore review feedback (Written by Copilot)
…pilot (microsoft#309113)

build(deps-dev): bump basic-ftp in /extensions/copilot

Bumps [basic-ftp](https://github.com/patrickjuchli/basic-ftp) from 5.2.1 to 5.2.2.
- [Release notes](https://github.com/patrickjuchli/basic-ftp/releases)
- [Changelog](https://github.com/patrickjuchli/basic-ftp/blob/master/CHANGELOG.md)
- [Commits](patrickjuchli/basic-ftp@v5.2.1...v5.2.2)

---
updated-dependencies:
- dependency-name: basic-ftp
  dependency-version: 5.2.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Use ${sequence} title for agent CLI shell types

* debug?

* use osc title sequence.

* add support for gemini

* cleaner

* test

* gate agent CLI title behind setting

* revert unrelated toLowerCase change in _sendProcessTitle

* Make things work again for mac os

* fix tests
…t/migrate-5043

Change OTLP endpoint from gRPC to HTTP in montoring docs
…#309416, microsoft#309439)

- Stop closing the customizations editor when submitting the input box
  or clicking 'Generate with AI' / 'Getting Started' buttons
- Add visible tooltip ('Open in Chat') to the send button
- Ignore empty submissions instead of generating a confusing prompt
- Open a new chat session instead of hijacking the active one

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

In the sessions window, avoid calling newChat before prefilling since
that command triggers the session creation flow which may prompt for a
workspace folder. Instead, use the existing chat widget or open the
sessions chat view directly.

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

The branch/workspace indicator in the sidebar footer was confusing
users were unclear about its purpose and clicking it opened an OS file
dialog unexpectedly. Remove the folder picker UI and its associated CSS.

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

- Add description tooltips to sidebar section items (Agents, Skills, etc.)
- Add hover tooltip to the home/overview button
- Add hover tooltips to back buttons (editor, MCP detail, plugin detail)

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

When searching in the customizations list, items where the search query
matches the title now rank before items where it only matches the
description, filename, or badge. This makes search results more
intuitive.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Remove orphaned 'Folder picker footer' CSS comment
- Remove stale IFileDialogService mock from fixture
- Use await instead of .then() in prefillChat and wrap in try/catch
  to prevent unhandled promise rejections

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
After submitting the input box, the input is cleared and the row
briefly transforms into a "Sent to " confirmation that fades in,chat
then restores to the input after 2 seconds.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Remove 2s auto-revert timer; 'Sent to chat' label stays until user
  clicks the input row to dismiss it
- Disable submit button (opacity) when input is empty
- Drop green vscode-testing-iconPassed  use descriptionForegroundcolor

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add expectedVisualDescriptions to all 60 fixture variants so they
participate in visual regression testing. Also fix scrolled-variant
fixtures that exceeded the 3s timeout by removing a redundant 2400ms
sleep (waitForVisibleScrollbarsToFade handles the wait itself).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The submit button click was bubbling to the inputRow click listener,
which immediately called clearSentState(). Stop propagation on the
submit button click.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Show 'Sent to ' BEFORE calling prefillChat so it renderschat
  even if prefillChat shifts focus away from the editor
- Typing in the input dismisses the sent state (no click-to-dismiss)
- Sessions window: always open new chat (workbench.action.sessions.newChat)
  without stealing focus, then sendQuery on the sessions view
- Remove leftover chatWidgetService injection (no longer used)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add reset() to IAICustomizationWelcomePageImplementation interface
- PromptLaunchersAICustomizationWelcomePage.reset() clears the sent
  label and restores the input row without animation
- AICustomizationManagementEditor.showWelcomePage() calls reset() so
  returning from any other tab always shows a fresh input

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add missing `await` on `chat.open` executeCommand so errors are
  caught by the surrounding try/catch (all 3 reviewers flagged this)
- Remove dead `closeEditor` from  no welcomeIWelcomePageCallbacks
  page implementation calls it (2 reviewers flagged)
- Remove misleading `cursor: pointer` on sent  there is no clickrow
  handler to dismiss the sent state (2 reviewers flagged)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
All prefillChat calls from the welcome page 'New...', 'Generate with AI',
and 'Configure Your AI' buttons now pass newChat:true so the sessions
window opens a fresh chat  consistent with the submit input.session

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The New, Generate with AI, and Configure Your AI buttons now close the
editor after prefilling/sending the chat query. The submit input stays
open (shows 'Sent to chat' confirmation instead).

Added closeEditor option to prefillChat callback; the management editor
closes itself after the chat command completes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The editor modal is disposed when the sessions chat command runs,
so closeEditor must happen  otherwise this.input is alreadyfirst
null by the time we try to close it.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
When closeEditor is true, openView needs to take focus (true) so
the sessions modal is dismissed. When just showing 'Sent to chat',
keep false to avoid stealing focus from the editor.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Restore callbacks.closeEditor() on IWelcomePageCallbacks and call it
directly from New/Generate/Configure buttons before prefillChat, exactly
as origin/main did. The closeEditor option on prefillChat was the wrong
 the original direct call worked because it closed the modalapproach
synchronously before any async chat commands ran.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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.