Merged
Conversation
Co-authored-by: rebornix <876920+rebornix@users.noreply.github.com>
Co-authored-by: rebornix <876920+rebornix@users.noreply.github.com>
…re and type safety
…isplay-implementation
Co-authored-by: rebornix <876920+rebornix@users.noreply.github.com>
Co-authored-by: rebornix <876920+rebornix@users.noreply.github.com>
- Rename chatImageSlideshow -> imageCarousel as a generic workbench contrib - Remove editor resolver and collection store (direct EditorInput creation) - Remove F1 command (single entry point via internal command) - Fix response matching: only open collection containing clicked image - Add registerOpenEditorListeners for keyboard/accessibility parity - Localize all user-facing strings - Add chat.imageCarousel.enabled preview setting (default: false) - Rename command to workbench.action.chat.openImageInCarousel - Use h() helper for declarative DOM, getMediaMime() for MIME types - Editor not restorable (canSerialize returns false)
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a new workbench contribution that can open a modal “Image Carousel” editor to display image outputs from chat tool (MCP) results, gated behind a chat.imageCarousel.enabled preview setting and wired from the chat image attachment widget.
Changes:
- Introduces
imageCarouselworkbench contribution: editor pane + editor input + image extraction service + CSS. - Adds
chat.imageCarousel.enabledsetting and routes image-attachment clicks to a newworkbench.action.chat.openImageInCarouselcommand when enabled. - Adds a new
vscode-image-carouselURI scheme and i18n resources registration for the new contrib.
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| src/vs/workbench/workbench.common.main.ts | Loads the new imageCarousel contribution. |
| src/vs/workbench/contrib/imageCarousel/browser/media/imageCarousel.css | Styles for the carousel UI (main image, arrows, thumbnails). |
| src/vs/workbench/contrib/imageCarousel/browser/imageCarouselTypes.ts | Defines the image/collection data model used by the editor/service. |
| src/vs/workbench/contrib/imageCarousel/browser/imageCarouselService.ts | Extracts images from chat tool invocations to build collections. |
| src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditorInput.ts | Editor input + resource identity for the carousel. |
| src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.ts | Editor pane implementation (DOM, navigation, thumbnails). |
| src/vs/workbench/contrib/imageCarousel/browser/imageCarousel.contribution.ts | Registers editor pane, service, serializer, and the open-in-carousel action. |
| src/vs/workbench/contrib/imageCarousel/AGENTS.md | Documentation for the new contribution and usage patterns. |
| src/vs/workbench/contrib/chat/common/constants.ts | Adds ChatConfiguration.ImageCarouselEnabled. |
| src/vs/workbench/contrib/chat/browser/chat.contribution.ts | Registers the new preview setting. |
| src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.ts | Wires image-attachment click/keyboard activation to open carousel when enabled. |
| src/vs/base/common/network.ts | Adds Schemas.vscodeImageCarousel. |
| build/lib/i18n.resources.json | Adds i18n project mapping for the new contribution folder. |
Comments suppressed due to low confidence (2)
src/vs/workbench/contrib/imageCarousel/browser/media/imageCarousel.css:135
- This thumbnail transition should be disabled under
.monaco-workbench.monaco-reduce-motionto respect the reduced-motion accessibility setting (settransition: nonein that scope).
transition: border-color 0.15s ease, opacity 0.15s ease;
flex-shrink: 0;
src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.ts:445
registerOpenEditorListenersinvokes the callback with editor open options (e.g. openToSide), but the callback here doesn’t accept/forward those options. Consider usingaddResourceOpenHandlers(...)for the resource path and usingregisterOpenEditorListenersonly for the carousel path, or update the handler signature to forward options appropriately.
const canOpenCarousel = attachment.value instanceof Uint8Array && configurationService.getValue<boolean>(ChatConfiguration.ImageCarouselEnabled);
if (canOpenCarousel || resource) {
this.element.style.cursor = 'pointer';
this._register(registerOpenEditorListeners(this.element, async () => {
await clickHandler();
src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditorInput.ts
Outdated
Show resolved
Hide resolved
src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.ts
Show resolved
Hide resolved
src/vs/workbench/contrib/imageCarousel/browser/imageCarouselEditor.ts
Outdated
Show resolved
Hide resolved
|
Dobree je |
|
rebornix/hollow-tarantula-image |
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
DonJayamanne
approved these changes
Mar 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a modal editor pane (imageCarousel) that displays images from MCP tool results in a carousel view with navigation controls.
Screen.Recording.2026-03-11.at.6.36.38.PM.mov