Skip to content

sessions: polish connector recommendations - #342181

Closed
Harald Kirschner (digitarald) wants to merge 5 commits into
mainfrom
digitarald/agents/connector-recommendations-polish
Closed

Harald Kirschner (digitarald) wants to merge 5 commits into
mainfrom
digitarald/agents/connector-recommendations-polish

Conversation

@digitarald

@digitarald Harald Kirschner (digitarald) commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Follow-up to #341844; relates to #341452. Companion product copy: microsoft/vscode-distro#1470.

Summary

Polish the new-session connector recommendations into a quieter, task-led discovery surface.

  • Show one randomly selected recommendation per component instance. Keep it stable while open; dismissal hides the surface for that view and returns focus to chat without showing a replacement.
  • Remove connector-name headings; use 16px product icons, muted 12px text, tighter spacing, and a native compact close action with a 24px target.
  • Read recommendation descriptions directly from product metadata for every connector, including known IDs. Task-based copy is owned by the companion microsoft/vscode-distro#1470; the renderer has no connector-specific description overrides.
  • Add standard connector-specific tooltips with keyboard dismissal, preserve accessible names and decorative-icon semantics, and update accessibility help.
  • Preserve existing experiment/capability gates and connector-detail navigation. Clicking a recommendation does not automatically connect an account or submit an agent prompt.

Screenshots

Cropped, 2x-resolution captures of the implemented component (not the HTML mockup), using fixture product metadata matching microsoft/vscode-distro#1470. The new task copy reaches the product after the distro PR merges and its merged revision is picked up through the usual distro update; until then this generic renderer displays existing product descriptions.

Dark theme

Dark theme: one compact, muted Linear task recommendation below the composer

Light theme

Light theme: the same compact recommendation with native close action

Connector tooltip

Native tooltip identifying the Linear connector and its Copilot Connectors destination

Narrow layout

Notion task text wraps in a narrow layout without overlapping the icon or close action

How to test

  1. In Component Explorer, open sessions/chat/newWidget/newChatWidget/ConnectorRecommendations and its narrow, phone, WorkIQ, fallback-icon, and dismissed variants. Fixtures use a single configured connector for deterministic screenshots; unit tests cover random selection across the catalog.
  2. Hover the recommendation to see its connector-specific tooltip; press Escape to hide the tooltip.
  3. Use Tab/Shift+Tab between the recommendation and its close action. Dismiss with Enter or Space: no replacement should appear and focus should return to the input.
  4. Check dark, light, and both high-contrast themes. Confirm the longer Notion task wraps without overlapping either icon.

Validation

Commands used the repository-required Node runtime via npm.cmd exec --yes --package=node@24.18.0 --.

  • npm.cmd exec --yes --package=node@24.18.0 -- node build\next\build-fast.ts --client-only - passed after merging current main.
  • npm.cmd exec --yes --package=node@24.18.0 -- .\scripts\test.bat --run src\vs\sessions\contrib\chat\test\browser\newChatConnectorRecommendations.test.ts --run src\vs\sessions\contrib\chat\test\browser\sessionsChatAccessibilityHelp.test.ts --reporter dot - 51 passed after merging current main.
  • npm.cmd exec --yes --package=node@24.18.0 -- npm.cmd run typecheck-client - passed after applying the one-line upstream duplicate-property fix from a32f4c9.
  • npm.cmd exec --yes --package=node@24.18.0 -- node build\eslint.ts src\vs\sessions\contrib\chat\browser\newChatConnectorRecommendations.ts src\vs\sessions\contrib\chat\test\browser\newChatConnectorRecommendations.test.ts src\vs\sessions\contrib\chat\test\browser\newChatWidget.fixture.ts - passed; the other changed TypeScript files also passed targeted lint earlier in this session.
  • npm.cmd exec --yes --package=node@24.18.0 -- node build\stylelint.ts src\vs\sessions\contrib\chat\browser\media\newChatConnectorRecommendations.css - passed.
  • Component Explorer: all 32 connector fixtures rendered without errors before the main merge.
  • Real-browser checks before the main merge: tooltip visibility/Escape dismissal, Tab/Shift+Tab navigation, visible focus, 24px close target, Space dismissal, and focus restoration passed in all four themes. Text contrast ratios: 5.18:1 dark, 11.20:1 light, 21:1 high-contrast dark, 14.55:1 high-contrast light.
  • git diff --check - passed. NVDA and live connector authentication were not exercised.

Product-copy ownership correction

Removed the renderer's ID-based description overrides. The known-connector regression test deliberately supplies different product descriptions and verifies they are rendered unchanged. Client build, 51 targeted tests, ESLint, and scoped hygiene passed after this correction.

  • npm.cmd exec --yes --package=node@24.18.0 -- node build\hygiene.ts src\vs\sessions\contrib\chat\browser\newChatConnectorRecommendations.ts src\vs\sessions\contrib\chat\test\browser\newChatConnectorRecommendations.test.ts src\vs\sessions\contrib\chat\test\browser\newChatWidget.fixture.ts - passed.

CI repairs

  • Applied the existing one-line upstream fix for the duplicate gitService property in the Git state test fixture; no runtime behavior changes.
  • Refreshed three reviewed connector screenshot pins. All 79 pinned hashes match the CI manifest (1,694 screenshots, zero render errors).
  • npm.cmd exec --yes --package=node@24.18.0 -- .\scripts\test.bat --run src\vs\platform\agentHost\test\node\agentHostGitStateService.test.ts --grep AgentHostGitStateService --reporter dot - 88 passed.
  • npm.cmd exec --yes --package=node@24.18.0 -- node build\hygiene.ts src\vs\platform\agentHost\test\node\agentHostGitStateService.test.ts - passed.
  • node build\lib\screenshotBlocksCi.ts .screenshot-review\screenshots\manifest.json .screenshot-review\blocks-ci-screenshots.lf.md https://hediet-screenshots.azurewebsites.net - passed against the downloaded CI manifest with LF-normalized baseline content.
  • Both fixes have been pushed; fresh CI results are pending.

Show one random task-led recommendation with compact, muted styling. Dismiss without replacement and add connector-specific accessible tooltips.

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

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

Screenshot Changes

Base: bb42e51d Current: f87d31ba

Changed (9)

sessions/chat/newWidget/newChatWidget/ConnectorRecommendations/Light
Before After
before after
sessions/chat/newWidget/newChatWidget/ConnectorRecommendationsNarrow/Light
Before After
before after
sessions/chat/newWidget/newChatWidget/ConnectorRecommendationsFallbackIcons/Light
Before After
before after
sessions/chat/newWidget/newChatWidget/ConnectorRecommendationsBackground/Light
Before After
before after
sessions/chat/newWidget/newChatWidget/ConnectorRecommendationsWithNotices/Light
Before After
before after
sessions/chat/newWidget/newChatWidget/ConnectorRecommendationsShortAfterLayoutToggle/Light
Before After
before after
sessions/chat/newWidget/newChatWidget/ConnectorRecommendationsFocused/Light
Before After
before after
sessions/chat/newWidget/newChatWidget/ConnectorRecommendationsPhone/Light
Before After
before after
sessions/chat/newWidget/newChatWidget/ConnectorRecommendationsPhoneWithNotices/Light
Before After
before after

Added (3)

sessions/chat/newWidget/newChatWidget/ConnectorRecommendationsDismissed/Light

current

sessions/chat/newWidget/newChatWidget/ConnectorRecommendationsNotionNarrow/Light

current

sessions/chat/newWidget/newChatWidget/ConnectorRecommendationsWorkIQ/Light

current

Removed (2)

sessions/chat/newWidget/newChatWidget/ConnectorRecommendationsOneDismissed/Light

baseline

sessions/chat/newWidget/newChatWidget/ConnectorRecommendationsTwoDismissed/Light

baseline

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The translucent hover background exposes custom wallpaper behind recommendation text, reducing readability.

1 open issue
What changed in this PR

Refines connector discovery in the Agents window into a quieter, task-focused recommendation below the new-session composer.

Changes:

  • Shows one stable random recommendation; dismissal hides it and restores input focus.
  • Adds localized task copy, compact styling, and connector-specific tooltips.
  • Updates accessibility help, unit tests, and deterministic visual fixtures.
File Description
src/​vs/​sessions/​contrib/​chat/​test/​browser/​sessionsChatAccessibilityHelp.test.ts Updates expected accessibility guidance.
src/​vs/​sessions/​contrib/​chat/​test/​browser/​newChatWidget.fixture.ts Adds deterministic single-recommendation scenarios.
src/​vs/​sessions/​contrib/​chat/​test/​browser/​newChatConnectorRecommendations.test.ts Covers selection, dismissal, copy, and tooltips.
src/​vs/​sessions/​contrib/​chat/​browser/​sessionsChatAccessibilityHelp.ts Documents single-recommendation interactions.
src/​vs/​sessions/​contrib/​chat/​browser/​newChatWidget.ts Adapts component construction.
src/​vs/​sessions/​contrib/​chat/​browser/​newChatConnectorRecommendations.ts Implements stable selection and compact actions.
src/​vs/​sessions/​contrib/​chat/​browser/​media/​newChatConnectorRecommendations.css Styles the compact recommendation surface.

Review effort: Balanced

.monaco-button.new-session-connector-recommendation-card-primary:hover {
border-color: var(--vscode-focusBorder);
background-color: color-mix(in srgb, var(--vscode-focusBorder) 8%, var(--vscode-editorWidget-background));
background-color: var(--vscode-toolbar-hoverBackground);
Remove connector-specific description overrides and cover product-owned copy in regression tests. Fixture metadata previews the companion distro update.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Apply the one-line upstream correction from a32f4c9 to unblock Compile & Hygiene without pulling unrelated main changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Accept the reviewed CI images for the approved compact single-recommendation design. All 79 pinned screenshots match the CI manifest.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Hawk Ticehurst (hawkticehurst) added a commit that referenced this pull request Oct 20, 2026
Adopt the single stable task-led recommendation, muted description-only styling, compact native close action, and connector-specific tooltip from #342181 while preserving URL overrides and separate dismissal state.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Hawk Ticehurst (hawkticehurst) added a commit that referenced this pull request Oct 20, 2026
Adopt the single stable task-led recommendation, muted description-only styling, compact native close action, and connector-specific tooltip from #342181 while preserving URL overrides and separate dismissal state.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@hawkticehurst

Copy link
Copy Markdown
Member

Closing in favor of #342129. The design changes from this PR have been adopted in the linked PR.

auto-merge was automatically disabled October 20, 2026 19:12

Pull request was closed

Hawk Ticehurst (hawkticehurst) added a commit that referenced this pull request Oct 20, 2026
Adopt the single stable task-led recommendation, muted description-only styling, compact native close action, and connector-specific tooltip from #342181 while preserving URL overrides and separate dismissal state.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Hawk Ticehurst (hawkticehurst) added a commit that referenced this pull request Oct 21, 2026
* Recommend connectors from prompt URLs

Detect known connector domains locally in the new-session composer and show only matching available recommendation cards. Preserve accessible announcements, dismissal behavior, and responsive fixture coverage.\n\nFixes #341453\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Keep static and dynamic connector dismissals separate

Preserve static recommendations until they are dismissed, temporarily prioritize URL-matched cards, and track dynamic dismissals independently per connector.

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

* Make connector URL matching linear

Consume complete URL tokens, avoid nested path false positives, and skip prompt reads while recommendations are disabled. Update the intentional primary Light fixture baseline.

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

* Wait for connector fixture recommendations

Make screenshot fixtures wait for URL-triggered cards to settle so Linux CI captures complete recommendation and notice stacks.

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

* Limit dynamic connector recommendations

Restrict URL-driven recommendations to Linear, Notion, Work IQ, Azure Data Explorer, and Sentry while retaining unsupported URLs as negative regression coverage.

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

* Configure connector recommendation behavior in product data

Let distro metadata define URL domains and whether each connector appears statically, while preserving existing entries as static by default.

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

* Defer connector fixture paints until ready

Prevent blocking screenshots from capturing intermediate prompt states before URL-driven recommendation and notice stacks settle.

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

* Match the compact connector recommendation design

Adopt the single stable task-led recommendation, muted description-only styling, compact native close action, and connector-specific tooltip from #342181 while preserving URL overrides and separate dismissal state.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Show connector recommendations only for URLs

Remove static recommendation selection and metadata so the compact recommendation surface appears only when the composer contains a configured connector URL.

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

* Rename connector URL metadata

Use the concise product field name urls and cover Slack workspace URLs in the connector recommendation regression matrix.

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

* Integrate connector recommendations with chat tips

Render URL-matched connectors through the existing tips surface, including optional product icons and navigation across multiple matches. Fix connector marketplace deep links by resolving both stable keys and display names.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix inline chat tip fixture mock

Provide the tip-change event required by ChatInputTipPresenter so unrelated inline-chat fixtures continue rendering after contextual tip support.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Update connector tip screenshot hashes

Accept the reviewed Linux component fixture baselines for connector recommendations rendered through the standard chat tips UI.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Defer multi-connector fixture paint

Keep the asynchronous multi-URL recommendation fixture transparent until its final navigable tip state is ready.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Update connector accessibility help assertion

Align the focused accessibility help test with the connector-specific wording used by the rebased implementation.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

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.

4 participants