Skip to content

inlineChat: remove hover renderMode experiment and InlineChatInputWidget#312133

Merged
jrieken merged 2 commits intomainfrom
joh/inline-chat-cleanup-hover-input-widget
Apr 23, 2026
Merged

inlineChat: remove hover renderMode experiment and InlineChatInputWidget#312133
jrieken merged 2 commits intomainfrom
joh/inline-chat-cleanup-hover-input-widget

Conversation

@jrieken
Copy link
Copy Markdown
Member

@jrieken jrieken commented Apr 23, 2026

Summary

Cleans up the inline chat feature by removing the hover renderMode experiment (zone is the confirmed winner) and the InlineChatInputWidget floating popup that was only needed to support the "Ask in Chat" flow with an intermediate input step.

AskInChatAction is simplified to directly open the chat panel and attach the editor selection — similar to what QueueInChatAction did, but without the floating input widget in between.

Session Context

Key decisions from the development session:

  • Zone is the winner: The inlineChat.renderMode experiment concluded that zone is the preferred rendering mode. All hover render path code has been removed.

  • InlineChatInputWidget removed: The floating gutter-style input popup (InlineChatInputWidget) was the entry point for the affordance → ask-in-chat flow. Rather than keeping it, AskInChatAction was simplified to directly call chatWidgetService.openSession() + attachmentModel.addFile() with the current selection — no intermediate popup needed.

  • AskInChatAction kept, QueueInChatAction removed: AskInChatAction is kept but reimplemented to directly open the chat panel and attach the selection (the core intent). QueueInChatAction and SubmitInlineChatInputAction are deleted because they existed solely to submit/queue from the now-removed input widget.

  • InlineChatAffordance kept (slimmed): The sparkle glyph affordance (InlineChatAffordance + InlineChatEditorAffordance) is preserved — it still drives the selection-based sparkle and dismiss behavior. Only the showMenuAtSelection() / input widget driving logic was removed.

  • InlineChatHistoryService deleted: Only used by InlineChatInputWidget, so deleted along with it.

  • InlineChatOverlay component fixture removed: The renderInlineChatOverlay fixture in inlineChatAffordance.fixture.ts demonstrated the now-deleted widget and was removed.

Changes

  • Deleted: inlineChatOverlayWidget.ts, inlineChatOverlayWidget.css, inlineChatHistoryService.ts, inlineChatController.test.ts (hover-only tests)
  • Deleted actions: SubmitInlineChatInputAction, HideInlineChatInputAction, QueueInChatAction, UndoSessionAction2
  • Simplified: AskInChatAction — now directly opens chat panel + attaches selection
  • Removed: InlineChatConfigKeys.RenderMode, CTX_HOVER_MODE, CTX_INLINE_CHAT_INPUT_HAS_TEXT, CTX_INLINE_CHAT_INPUT_WIDGET_FOCUSED, MenuId.InlineChatInput
  • Simplified: InlineChatController — removed #renderMode, #runHover(), #resolveModelId(), #buildLocationData(), inputWidget accessor
  • Simplified: InlineChatAffordance — removed inputWidget parameter, #menuData, showMenuAtSelection()

- Delete InlineChatSessionOverlayWidget (hover mode rendering)
- Delete InlineChatInputWidget and InlineChatAffordance.showMenuAtSelection()
  The floating input popup is no longer needed; AskInChatAction now directly
  opens the chat panel and attaches the editor selection
- Delete InlineChatHistoryService (only used by InlineChatInputWidget)
- Delete SubmitInlineChatInputAction, HideInlineChatInputAction, QueueInChatAction
- Remove RenderMode config key and CTX_HOVER_MODE context key
- Remove CTX_INLINE_CHAT_INPUT_HAS_TEXT, CTX_INLINE_CHAT_INPUT_WIDGET_FOCUSED
- Remove MenuId.InlineChatInput
- Clean up inlineChatController: remove #renderMode observable, #runHover(),
  #resolveModelId(), #buildLocationData(), inputWidget accessor
- Clean up inlineChatAffordance.fixture.ts: remove InlineChatOverlay fixture
Copilot AI review requested due to automatic review settings April 23, 2026 14:04
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 23, 2026

Screenshot Changes

Base: ffb4db20 Current: 9d1558c7

Removed (2)

editor/inlineChatAffordance/InlineChatOverlay/Dark

baseline

editor/inlineChatAffordance/InlineChatOverlay/Light

baseline

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR cleans up the inline chat feature by removing the deprecated hover render-mode experiment and deleting the now-unneeded floating InlineChatInputWidget path, simplifying the “Ask in Chat” flow to directly open the chat panel and attach the current editor selection.

Changes:

  • Remove inlineChat.renderMode configuration/contexts and delete hover-mode-specific widget code, services, CSS, and tests.
  • Simplify InlineChatController and InlineChatAffordance to be zone-only and remove input-widget-driven menu logic.
  • Rework AskInChatAction to directly open the chat session UI and attach the editor selection (and remove related input-widget actions/menus).
Show a summary per file
File Description
src/vs/workbench/test/browser/componentFixtures/editor/inlineChatAffordance.fixture.ts Removes the overlay fixture tied to the deleted input widget; keeps only affordance fixture.
src/vs/workbench/contrib/inlineChat/test/browser/inlineChatZoneMenus.test.ts Updates menu expectations by removing hover-mode variants and aligning with zone-only behavior.
src/vs/workbench/contrib/inlineChat/test/browser/inlineChatController.test.ts Deletes hover-only controller parity tests.
src/vs/workbench/contrib/inlineChat/test/browser/inlineChatAffordance.test.ts Updates tests for affordance constructor signature after input widget removal.
src/vs/workbench/contrib/inlineChat/common/inlineChat.ts Removes inlineChat.renderMode setting and related context keys.
src/vs/workbench/contrib/inlineChat/browser/media/inlineChatOverlayWidget.css Deletes styling for the removed overlay/input widget UI.
src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.ts Deletes the removed InlineChatInputWidget and hover overlay widget implementation.
src/vs/workbench/contrib/inlineChat/browser/inlineChatHistoryService.ts Deletes history service that only supported the removed input widget.
src/vs/workbench/contrib/inlineChat/browser/inlineChatController.ts Removes hover-mode execution path and input widget wiring; runs zone-only.
src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.ts Removes input-widget/menu plumbing; keeps selection-based affordance + telemetry.
src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.ts Removes input-widget actions and rewrites “Ask in Chat” to open chat + attach selection.
src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.ts Stops registering removed actions/services; keeps remaining inline chat contributions.
src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.ts Removes now-dead hover-mode menu condition usage.
src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.ts Removes hover-mode gating for the inline execute cancel action.
src/vs/platform/actions/common/actions.ts Removes MenuId.InlineChatInput now that the input widget/menu is deleted.

Copilot's findings

  • Files reviewed: 15/15 changed files
  • Comments generated: 2

Comment thread src/vs/workbench/contrib/inlineChat/common/inlineChat.ts
Comment thread src/vs/workbench/contrib/inlineChat/browser/inlineChatController.ts
@jrieken jrieken merged commit d8ad65f into main Apr 23, 2026
26 checks passed
@jrieken jrieken deleted the joh/inline-chat-cleanup-hover-input-widget branch April 23, 2026 15:44
@vs-code-engineering vs-code-engineering Bot added this to the 1.118.0 milestone Apr 23, 2026
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.

3 participants